summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/dvips
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-10-07 23:03:55 +0000
committerKarl Berry <karl@freefriends.org>2013-10-07 23:03:55 +0000
commit739a5dcbf79d2c9a807db6116b2819d25242e2a2 (patch)
tree55a080f68ca141bf97e57e765de0e4d3bd56a2a4 /Master/texmf-dist/dvips
parent71e1ef7201c8a380aa66cbdeb409aeeeb72ccc7e (diff)
pst-barcode (7oct13)
git-svn-id: svn://tug.org/texlive/trunk@31857 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/dvips')
-rw-r--r--Master/texmf-dist/dvips/pst-barcode/pst-barcode.pro23311
1 files changed, 6569 insertions, 16742 deletions
diff --git a/Master/texmf-dist/dvips/pst-barcode/pst-barcode.pro b/Master/texmf-dist/dvips/pst-barcode/pst-barcode.pro
index 429b300be0e..487e75a1be6 100644
--- a/Master/texmf-dist/dvips/pst-barcode/pst-barcode.pro
+++ b/Master/texmf-dist/dvips/pst-barcode/pst-barcode.pro
@@ -1,14 +1,9 @@
-%!PS-Adobe-2.0
-%%Creator: Terry Burton
-%%DocumentPaperSizes: a4
-%%EndComments
+%!PS
-% Barcode Writer in Pure PostScript - Version 2012-11-15
+% Barcode Writer in Pure PostScript - Version 2013-06-03
% http://www.terryburton.co.uk/barcodewriter/
%
-% Copyright (c) 2004-2012 Terry Burton
-%
-% $Id: barcode.ps 2399 2012-11-15 13:18:46Z terry.burton $
+% Copyright (c) 2004-2013 Terry Burton
%
% Permission is hereby granted, free of charge, to any
% person obtaining a copy of this software and associated
@@ -34,17312 +29,7144 @@
% CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
% IN THE SOFTWARE.
-% Uncomment this next line to allow these named resource
-% definitions to remain resident within a printer's
-% PostScript virtual machine so that the barcode generation
-% capability persists between jobs.
-
-% serverdict begin 0 exitserver
-
% --BEGIN TEMPLATE--
-% --BEGIN PREAMBLE--
-currentglobal
-true setglobal
-/Generic /Category findresource
-dup length 1 add dict copy
-dup /InstanceType /packedarraytype put
-/uk.co.terryburton.bwipp exch /Category defineresource pop
-setglobal
-% --END PREAMBLE--
+% --BEGIN RESOURCE preamble--
+%%BeginResource: Category uk.co.terryburton.bwipp 0.0 0 0 0
+%%BeginData: 7 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+P1OerF_-`n01TSk ATDKp 010/i AS5q% H' 6mE 30Ia,! KmJH23J
+i?3%mj@F*(i.@qA VbE +L\DA TVm"@ r# drB 9Ki QP'&
+Es@:O(aA79M!@<l s?E+O HE 04AmA @<ls ?E +OH \<K_S [F_ `U>D_ ?-CE
+cQG7F`MSBDD#CBB lJ$S4 tf9 3FC f*'E d8 d<A S,XoAT D@ 'Dfp)1 AWh
+2!hZ~>
+% Category/uk.co.terryburton.bwipp 0.0 0
+%%EndData
+%%EndResource
+% --END RESOURCE preamble--
+
+% --BEGIN RESOURCE raiseerror--
+%%BeginResource: uk.co.terryburton.bwipp raiseerror 0.0 0 0 0
+%%BeginData: 9 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3JD%E a`['A S# n&D fU1 I,\;
+":DfV")04f0EDfT Q0AoE hr P'A6` EcQ) =P !1O 1EcQ) =DI IBnP! 5%R,
+\;":DfRL@Df'?"D IeoMP 'A6 `Ec Q)=0 5b ?FA TDg0EZ fI EF_-_\ BOP
+dhCh70uEc5t@EHP u;I?G )'1 G<c W Bld isE cQ) =OuSV8 06 M%_@rE uAA
+TDg:@Wc^5Df.1:G A2#8+ Co% qBl 7L &A TMd 4Ea r[DFcn a< F(KH4@ :O(
+eDJ,-DH]iMmATVm "@r# drB 75 qB ~>
+% uk.co.terryburton.bwipp/raiseerror 0.0 0
+%%EndData
+%%EndResource
+% --END RESOURCE raiseerror--
% --BEGIN RENDERER renlinear--
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-begin
-/renlinear {
-
- 20 dict begin % Confine variables to local scope
-
- /args exch def % We are given some arguments
-
- % Default options
- /sbs [] def
- /bhs [] def
- /bbs [] def
- /txt [] def
- /barcolor (unset) def
- /includetext false def
- /textcolor (unset) def
- /textxalign (unset) def
- /textyalign (unset) def
- /textfont (Courier) def
- /textsize 10 def
- /textxoffset 0 def
- /textyoffset 0 def
- /textgaps 0 def
- /alttext () def
- /bordercolor (unset) def
- /backgroundcolor (unset) def
- /inkspread 0.15 def
- /width 0 def
- /barratio 1 def
- /spaceratio 1 def
- /showborder false def
- /borderleft 10 def
- /borderright 10 def
- /bordertop 1 def
- /borderbottom 1 def
- /borderwidth 0.5 def
- /guardwhitespace false def
- /guardleftpos 0 def
- /guardleftypos 0 def
- /guardrightpos 0 def
- /guardrightypos 0 def
- /guardwidth 6 def
- /guardheight 7 def
-
- % Apply the renderer options and the user options
- args {def} forall
- opt {def} forall
-
- /barcolor barcolor cvlit def
- /textcolor textcolor cvlit def
- /textxalign textxalign cvlit def
- /textyalign textyalign cvlit def
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textxoffset textxoffset cvr def
- /textyoffset textyoffset cvr def
- /textgaps textgaps cvr def
- /alttext alttext cvlit def
- /bordercolor bordercolor cvlit def
- /backgroundcolor backgroundcolor cvlit def
- /inkspread inkspread cvr def
- /width width cvr def
- /barratio barratio cvr def
- /spaceratio spaceratio cvr def
- /borderleft borderleft cvr def
- /borderright borderright cvr def
- /bordertop bordertop cvr def
- /borderbottom borderbottom cvr def
- /borderwidth borderwidth cvr def
- /guardleftpos guardleftpos cvr def
- /guardleftypos guardleftypos cvr def
- /guardrightpos guardrightpos cvr def
- /guardrightypos guardrightypos cvr def
- /guardwidth guardwidth cvr def
- /guardheight guardheight cvr def
-
- % Create bar elements and put them into the bars array
- /bars sbs length 1 add 2 idiv array def
- /x 0.00 def /maxh 0 def
- 0 1 sbs length 1 add 2 idiv 2 mul 2 sub {
- /i exch def
- i 2 mod 0 eq { % i is even
- /d sbs i get barratio mul barratio sub 1 add def % d=digit*r-r+1
- sbs i get 0 ne {
- /h bhs i 2 idiv get 72 mul def % Height from bhs
- /c d 2 div x add def % Centre of the bar = x + d/2
- /y bbs i 2 idiv get 72 mul def % Baseline from bbs
- /w d inkspread sub def % bar width = digit - inkspread
- bars i 2 idiv [h c y w] put % Add the bar entry
- h y add maxh gt {/maxh h y add def} if
- } {
- bars i 2 idiv -1 put % Dummy entry
- } ifelse
- } {
- /d sbs i get spaceratio mul spaceratio sub 1 add def % d=digit*r-r+1
- } ifelse
- /x x d add def % x+=d
- } for
-
- gsave
-
- currentpoint translate
-
- % Force symbol to given width
- width 0 ne {
- width 72 mul x div 1 scale
- } if
-
- % Set RGB or CMYK color depending on length of given hex string
- /setanycolor {
- /anycolor exch def
- anycolor length 6 eq {
- (< >) 8 string copy dup 1 anycolor putinterval cvx exec {255 div} forall setrgbcolor
- } if
- anycolor length 8 eq {
- (< >) 10 string copy dup 1 anycolor putinterval cvx exec {255 div} forall setcmykcolor
- } if
- } bind def
-
- % Display the border and background
- newpath
- borderleft neg borderbottom neg moveto
- x borderleft add borderright add 0 rlineto
- 0 maxh borderbottom add bordertop add rlineto
- x borderleft add borderright add neg 0 rlineto
- 0 maxh borderbottom add bordertop add neg rlineto
- closepath
- backgroundcolor (unset) ne { gsave backgroundcolor setanycolor fill grestore } if
- showborder {
- gsave
- bordercolor (unset) ne { bordercolor setanycolor } if
- borderwidth setlinewidth stroke
- grestore
- } if
-
- % Display the bars for elements in the bars array
- gsave
- 0 setlinecap
- barcolor (unset) ne { barcolor setanycolor } if
- bars {
- dup -1 ne {
- aload pop newpath setlinewidth moveto 0 exch rlineto stroke
- } {
- pop
- } ifelse
- } forall
- grestore
-
- % Display the text for elements in the text array
- textcolor (unset) ne { textcolor setanycolor } if
- includetext {
- textxalign (unset) eq textyalign (unset) eq and alttext () eq and {
- /s 0 def /fn () def
- txt {
- {} forall
- 2 copy s ne exch fn ne or {
- 2 copy /s exch def /fn exch def
- exch findfont exch scalefont setfont
- } {
- pop pop
- } ifelse
- moveto show
- } forall
- } {
- textfont findfont textsize scalefont setfont
- alttext () eq {
- /txt [ txt { 0 get {} forall } forall ] def
- /tstr txt length string def
- 0 1 txt length 1 sub { dup txt exch get tstr 3 1 roll put } for
- } {
- /tstr alttext def
- } ifelse
-
- % Find true ascent of font
- tstr length 0 eq {
- 0
- } {
- gsave
- newpath 0 0 moveto (0) false charpath pathbbox
- 4 1 roll pop pop pop
- grestore
- currentfont /PaintType known {currentfont /PaintType get 2 eq} {false} ifelse
- currentfont /StrokeWidth known and {
- currentfont /StrokeWidth get 2 div 0 exch
- currentfont /FontMatrix get dtransform
- dup mul exch dup mul add sqrt
- add
- } if
- } ifelse
- /textascent exch def
- /textwidth tstr stringwidth pop tstr length 1 sub textgaps mul add def
-
- /textxpos textxoffset x textwidth sub 2 div add def
- textxalign (left) eq { /textxpos textxoffset def } if
- textxalign (right) eq { /textxpos x textxoffset sub textwidth sub def } if
- textxalign (offleft) eq { /textxpos textwidth textxoffset add neg def } if
- textxalign (offright) eq { /textxpos x textxoffset add def } if
- textxalign (justify) eq textwidth x lt and {
- /textxpos 0 def
- /textgaps x textwidth sub tstr length 1 sub div def
- } if
- /textypos textyoffset textascent add 1 add neg def
- textyalign (above) eq { /textypos textyoffset maxh add 1 add def } if
- textyalign (center) eq { /textypos textyoffset maxh textascent sub 2 div add def } if
- textxpos textypos moveto textgaps 0 tstr ashow
- } ifelse
- } if
-
- % Display the guard elements
- guardwhitespace {
- 0.75 setlinewidth
- guardleftpos 0 ne {
- newpath
- guardleftpos neg guardwidth add guardleftypos guardwidth 2 div add moveto
- guardwidth neg guardheight -2 div rlineto
- guardwidth guardheight -2 div rlineto
- stroke
- } if
- guardrightpos 0 ne {
- newpath
- guardrightpos x add guardwidth sub guardrightypos guardheight 2 div add moveto
- guardwidth guardheight -2 div rlineto
- guardwidth neg guardheight -2 div rlineto
- stroke
- } if
- } if
-
- grestore
-
- end
-
-} bind def
-/renlinear dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp renlinear 0.0 0 0 0
+%%BeginData: 72 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D Ops 'bASu <uD Im6sH \`B!
+23JD%@<-"%P!5$b 06:TD +Bo soO u"b# BQ G;# +C1-d0 4J C3+Bos oOu
+"b5G]Y'4+C1-d04 J@1@r H1% EfL < GDK BB2 Ou" b*DI[L *A 7]joG] Y'?
+@;L!rOu"b5AU&<, Des?4 NWj QCF (K HV 1G< i]G ]\1=Ch [O "NWjQC F(K
+HV1G<i]G]\4>Ch[ O"NW jQC F( KH V1G <i] G][ P9DK
+LmD6Z7*fBk;=J1G <i]G ] \" @H =_m >Ou "b5A U&<AD
+e<U&ATW_.Ou"b5A U&<BDe <U& A TW_ .O u"b5 AU& <0@;p:D!0T ,k@;L%-AU&<
+W!0T,k@W-9tATD: !Ci=?S "a+ ^ (ATX (k04 J@" CM.[+F`(`" Des?4NWjQCF
+(KHV1G<H[CNFH8A RT,,4r KcW Ou"b 8Bk2 =!L ]ESo04J@1E aa'(DhnFW1G
+<fg@:Nkh@<?4%L] NYp06 :fFG @GK2A 7]d( Amo LsAWei&@W- 9tATDTuAorh
+9Ou"b#DfTB"EcPl ,BQT% ;Ou"b #DfTB "Ec c5=L]NYp04 Jj?A7]djDfg
+)>D284U1G<3UEb& a%GA1T0 BSo"S! !&0<0 5#E 9Eb'B-Blmp -E+*6f+D,%u
+F(LLj05#E9Eb&utAor!1F,0gZ1G<B`@<,mpAS-%0E,TfR!0T,kB6@X'A9)BsBQS33F,0gZ1G<B
+`@<,n!BkM+$H#R\CL]ESo05#E9Eb'B.A9;L@#*LbqB6@X'A8#OgB4uCC#EglOEbBH?Ou%NL8T/
+QiH]g15P"@<9@<,jrCi=>:@UX:eDes?4OtDhQ06CcMFCT6*DfQtBAU&<,Des?4OtDhQ06CcMFE
+h51BkM<+FCf]=G[YE&B5WkaOu"b5AU&<B@;KXjDBO%4G]\4>Ch[O"OtDhQ06CcMFCoH/F<G[:G
+][P9DKM$nOu"b5AU&<<BmO>5FCf]=F(or3OtVtS06CcMFEh_9AohO*+EV1>FEh_9AohO*OtVtS
+06CcMFEqe:AohO*+EV1>FEqe:AohO*OtVtS06CcMFD#$$F!,R9G][S,E-%0qOu"b"Cijc1G]Y'
+:Cijc1G]]*#Ou"b#DfTB"Eas$(DfQt0DfTB"Eas$(DfV!mOu"b#@:O(cEc6)<A7KOoDfQt0@:O
+(cEc6)<A7KOoDfV!mOu"b*DJO<4Eb/Zi+DG_/F)Z/2@:YNSOu"b8Bk2=!+EqO1FD-gjOu"b#@<
+-BsFD5Y9@UX:t@<?4%OtVtS06;)@@qB[hFD5Y9F)YPtATD4$BlB.fOu"b#DfTB"Ebo<!F<G%2E
+b&a%Ch74#OtVtS04Jj?A7]e%BkM+$+C]80A7]e%BkM+$OtVtS04Jj?A7]e'Df?h.DfTB"Ecc5=
+OtVtS04Jj?A7]djDfg)>D'3;+Eb&a%@W-@1Df(XjOu"b#DfTB"Ed)5.FD)e+DfTB"Ed)5.FD-g
+jOu"b(F^]<$Ch74#E,Te?B6@X'A8GghFDu/>OtVtS05#E9Eb&utAor<;Df[%6F^]<$Ch74#H#R
+\COtVtS05#E9Eb'3)B4uC+Df[%6F^]<$EbT0"FDu/>OtVtS05#E9Eb'3)B4uC4E,Te?B6@X'A9
+)BsBQSN=Df_'pOu"b(F^]<$GA1T0BHUr1@<,n&Bk2=!OtVtS05#E9Eb&ipBkM+$+D5h*Eb&ipB
+kM+$OtVtS04J@1F!,O5F-:!g!KmJ>!g6HE$'I(tG_uJ$!!&0<05Y-BBSZYO1Pc$e!HV^kP%'4J
+Oo^@?P#@);P&,pUP,Wd]Bp(ZC1MMXHP%odQP!+.FA0>r&F!,1[94D=MEaa'(Dj"pG@<-BsFD5Z
+VWJCS<!Ko6[@WNZ+P"UT2P&5P!BHUbtF!,1Q!g6HE98H-%Cm$S-@j#<<!g5HdOo^_%06n[L@WN
+Z+L]W`;P"UU%P&-:;06\OL+DG_/F)Z/2@:YP#Ou$QUEcW@;L]W`;>9IT%@j$%>G9C1SG\A4FOo
+]E.G\E7:HS95EG\A45+F0+NOu%NL<.0+&@<-E3BnuhR;Mb@9G^Y`TI=!VX+EM"5+DI!3F)YPtA
+TD4$BlB/NF)YPtATD4$BlB06L]NY>Ou%NL<A/S>GT^O[!Ko6eP":a2OslKqGA1T0BSZYOD0pJ@
+A9;L@8<Re6OuA*sP)FaO<%i<(FCB'4@rH1%EdKHJDL#`1Ci=?W5*@^1DL#`1Ci=?W@Yb5O4aW1
+p4<Pah+<VdjL^90?Or9EBL]Lq%H"1c/DfV"dOtr1bH\MP#Ou@`O8WoWmP#Pk-H"1c/DfV"ML^9
+/,H]AFq+<VdL+<VdL5)9Q/V32^Z3/@TDDL#`1Ci=?WH'0qG5C8+bs,o9gP"Ch#I?IQXOq*X2P&
+FfJEb&a%Ch74#P&=`IEb&a%@W-@1Df(YTP&#:b@W-9tATDTuAos1:@W-9tATDg*B4uCM!Jg`=K
+no_G@<cH.@W-9tATD6uFEDG<Oo]$1Eb&a%FDl,]!Kr.]+C]80A7]dtAS-%I!FftfA7]e%BkM+$
+Oo^_`L]ETlL]D:#G\A4/DfTB"Eais/FDl#Z!FftfA7]e'DfCj?P&?G:OqqM8@r#^tDfor.@rH1
+ %EfL<GDKBB2P&5Q/:1@XACM.[+F`(`"Des?4+EM+9@;^@#Des?4P!Y=+I?IQNBQ&*(DfTB"Ed
+NsE@W-9tATD:!Ci=?S"a+^(ATX)PHX^o6A7]dkDes?4+EM+9@;^@#Des?4I?IQ=DfTB"Ed)5.F
+D-i,P,FI;I?IQm:5An5R:9TF@rH1%EfL<GDKBB2P&5PT@<,jrCi=>:F(KH%DL#`1Ci=?BP#Pn!
+EcZSj3/ITtD0qEIP')q+P+.VML]ET%P(f'sI=%-"I?ITYP"Cg2FCf]=@rH1%EfL<GDKBB2P&5P
+fAU&<,Des?4+EM+9@;^@#Des?4I?IQDDI[L*A7]joG]\9TFCf]=G[YE&B5W_5F`)83FHSe/AU&
+<B@;KXjDN4mCDKBB2P!+s2@;L%-AU&<W!0TL."FDeCL]ESo04o*^!0T-[G]\:ZI?I0X!g4FBP&
+6@GAo<cKP&bo*!g4ESF-8_M1G<?XP!5$bP!5$rP!5%fP*LHBP')q1I?ITnCQb?=P"C(KFCf]=A
+oDR/P!a>&G]\"@H=`7uP*KHlFED)=FH-?a4aSi(G]Y'4+EVjMH\_Zb97))M8UZan?'6usFE;PE
++EVjMP%'TNOu%moL]MUBFHU*h!KsF/OuRQ.FHShN96>5sEejgR!Kr5$G^Y`GI=!VhF*)FF@;L%
+-AU&<[1OYEdFE;PEP%'4IP!+/J!.B3W:6KOO!/LW<CQ8ELAmoLsAWdXgF,0sT!Kr5$Fcpm1Fco
+I^+>6Q"Bl8#lH#R>X@!e%Z02Q(kDKJj'E+P2*L]W`&I=#R7Cia09P#[Yf02lt5DeiocBk2=!P$
+jFUH]fL);fm%uCLpR]A9;LJ98EY42M_?r5*@$A7W30d9jr-aBm>e6OuJO`P&-:FOuSV@Oo]WDE
+cdHFI?IQXP#X/WAU&<*F(8d!FHShN1G<i]G]\.DA9;K-FE;PEP,=CbFE;PEP%'4JP,WP7G][S,
+E-%1YOo^_%06CcMFEhbCF!,R9G]\1KAnH*qF<GfNFCf]=GA1T0BTf?N!g5I)!Ko6\AU&<A@;KX
+jDN4j9AS-%I4aSi(AU&<AE,Te?FCf]=G].2+F(KHV1OYEcFCf]=G[YE&B5W_5EbT0"FHSe606C
+cMFEhbCF!,]MFCf]=G].2+F(KHVWH;]rFE_G0FD-i:Ou%NL<-2\rFEh51BkM=D#B+3dCh74#P!
++.FFCf]=G]7SB+EV1>FE_G0FD)e=AU&<ADe<U&ATX(9P&?F=I?IQOAU&<A@;KXjDN5!@AnH'tB
+4uCM4aSi(AU&<AE,Te?GT_*>G]\1KAnH*qFHQZf1OYEcFCf]=G[YE&B5W_7C3=T>BkDXR4`k7[
+FE_G0FD)eAP%Kj[HS9JPG]\1LDf^^7Ou"b5AU&<0@;p91GT_*>G]\.DA9;LJWH<3'Efsmf!KsF
+F2NfkEP#O)VAU&<BE,Te?FCf]=H#I;,F(KG9FCf]=@<5piDKM$BL]NY>P&?F=FCf]=H!tN'B5W
+_5@:F.uAWf3'06CcMFEqhDF!,R9G]\4LAnH*qF<GF/G\E6@L]NY>Ou%NL<-2\rFEq;2BkM=D#%
+M4^FCfKU4aSi(AU&<BE,Te?FCf]=H#I;,F(KG9D..[&+EV1>FCB6#ASuUQWJCV=2Ne*(1OYEcF
+Cf]=G]7SB+EV1>FEqhDF-:<\AU&<0@;p:D!-E:(EfpcXP#Zpn<+g>^Eb'B-Blmp-E+*6fH\t$Q
+!!&1OB6@X'A8GghFDu/>L]ETTH]i;[F^]<$Ch74#E,Tf\DJ+*#Eb'B.A9;LJ!G?O`Eb&utAor<
+;Df[%6F^]<$GA1T0BSZ_Q2Ne*(CM.cuEb'B.A9;LJDJ+*#Eb&ipBkM+$M#NPqP(dOk@<,n&Bk2
+=!+D5h*Eb&ipBkM+$M#NPqP(f'sI?IQBF^]<$EbT0"FDu/>L]ETTH]i;[F^]<$EbT0"FDu/>+F
+'%MB6@X'A9V`uFD-i:B6@X'A9)BsBQSN=Df[%6F^]<$BOtmjBQT%3OuAI(P&"]Q@<,n&Bk2=!+
+D5h*Eb&ipBkM+$M#NPqP(dOk@<,n&Bk2=!P&=oT@<,mlASGdjFGTpZ2NicWVgX_-I?IQm9p.Mb
+Oq*X2061WACh[cu@<.MjP%64gCG'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2
+!3A5GbFDtYuCM@[!P.H"'F`V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/renlinear 0.0 0
+%%EndData
+%%EndResource
% --END RENDERER renlinear--
% --BEGIN RENDERER renmatrix--
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-begin
-/renmatrix {
-
- 20 dict begin
-
- /args exch def
-
- % Default options
- /width 1 def
- /height 1 def
- /color (unset) def
- /backgroundcolor (unset) def
-
- % Apply the renderer options and the user options
- args {def} forall
- opt {def} forall
-
- /width width cvr def
- /height height cvr def
- /color color cvlit def
- /backgroundcolor backgroundcolor cvlit def
-
- % Extend bitmap horizontally to an 8-bit boundary
- /pixx8 pixx 8 div ceiling cvi 8 mul def
- /pixs8 [ pixx8 pixy mul {0} repeat ] def
- 0 1 pixy 1 sub {
- /i exch def
- pixs8 pixx8 i mul pixs pixx i mul pixx getinterval putinterval
- } for
- /pixs pixs8 def
-
- % Convert bitmap into 8-bit sample string
- /imgstr pixs length 8 idiv string def
- 0 1 pixs length 1 sub {
- /i exch def
- imgstr i 8 idiv 2 copy get 2 7 i 8 mod sub exp cvi pixs i get mul add put
- } for
-
- % Set RGB or CMYK color depending on length of given hex string
- /setanycolor {
- /anycolor exch def
- anycolor length 6 eq {
- (< >) 8 string copy dup 1 anycolor putinterval cvx exec {255 div} forall setrgbcolor
- } if
- anycolor length 8 eq {
- (< >) 10 string copy dup 1 anycolor putinterval cvx exec {255 div} forall setcmykcolor
- } if
- } bind def
-
- % Draw the image
- gsave
- currentpoint translate
- 72 width mul 72 height mul scale
- .0001 .0001 moveto .9999 .0001 lineto .9999 .9999 lineto .0001 .9999 lineto closepath
- backgroundcolor (unset) ne { gsave backgroundcolor setanycolor fill grestore } if
- color (unset) ne { color setanycolor } if
- pixx pixy true [ pixx 0 0 pixy neg 0 pixy ] {imgstr} imagemask
- grestore
-
- end
-
-} bind def
-/renmatrix dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp renmatrix 0.0 0 0 0
+%%BeginData: 24 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D Ops 'bASu ?nF E2)?H \`B!
+23JD%@<-"%P!5$b 06_,@ FD- I2O u"b) AS Gdj FGKs\1 G< 6VCi=? S"a
++^(ATX(k04J@"CM .[+F` (`" Des ? 4NW jQC F(K HV1LY< :F *j'+I? I0?
+E--Gi1OYEX06_,@ FD)e@ Bk2 =!O tV tS 05+ p2B 4uB0BO tm jBQTCj Ou"
+b$Des?4+Cf>+DfV !mOu "b# @: O( cEc 6)< A7K OoDf
+Qt0@:O(cEc6)<A7 KOoD f V! mO u"b 1Bm =k^+ E2%>G
+_cWg2NeW7/;ORpC m$S-E+ sQ< 3 $;E JE +sQA 3$< 0SG^5HgH\_ ZMP(R&'1Pc$
+e!H;atH&)KaWI$: 4P!5$b E+s Q <3$< 0SG^ )1j Bp*:OBm=\A E+sQA+DI!TE
++sQAP"_$aI?I,SE +sQ<+E 2%> F#]= =055 99F *)FFE+sQ<P %'4QP#@I>Ou
+ %moL]MI/G]T$WL ]N[<H S9)r 5*@^9 D.dp 3EZ f(P#a/)A!g 4Fa98EY*#AJ
+u"P%p/ZAU&0W/9# <JF!, 1[99O +S!Kq \UP "76IATV?uH "1c/DfU1X@;
+^@#Des?4P!5$b@; ^@#Des? 4P%'4O P!+/P #Ws 4P+<VdL5)9 K-V32^Z3/@T
+DDL#`1Ci=?WH'0qG5C8+bs,o9gP"Ch-I?IQ<DL#`1Ci=?W@Yb;Q4aW1r4<Pah+<VdL+?kSgP,4
+<ZOuS6u@;^@#Des?4P'N3GP!=;J!<83?I?I0bPC8TnI?G)'1QkLr.$C]g89\cYFD-hRLe)2jBk
+M+$P&-;>ME'"m(Q(3"[hk3CMEcUdEf)j([hk3;MEcUdEf*)2q/VX.ME'"m(Q(G,q/VX.OqqM8@
+r#^tDfor.@rH1%EfL<GDKBB2P&5Q/:1@XACM.[+F`(`"Des?4+EM+9@;^@#Des?4P!Y=+I?IQ>
+Des?4NWjQCF(KHVD0oc2Ci=>:F(KH%DL#`1Ci=?BP#QC7G^(?MBm=nGFE2M8+Bot-Bm=lY!/LV
+oBm=odDMS:3Bm=nG?$d].D.dp3Eda*PP"h*"I?G)'1G<c[DJ`g(EbTc]30If*F_`U>D_?-CEcQ
+G7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP'(hWFDtYuCM@[!I?
+IP~>
+% uk.co.terryburton.bwipp/renmatrix 0.0 0
+%%EndData
+%%EndResource
% --END RENDERER renmatrix--
% --BEGIN RENDERER renmaximatrix--
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-begin
-/renmaximatrix {
-
- 20 dict begin
-
- /args exch def % We are given some arguments
-
- % Apply the renderer options and the user options
- args {def} forall
- opt {def} forall
-
- gsave
-
- currentpoint translate
-
- 2.4945 dup scale % from 1pt to 1.88mm
- 0.5 0.5774 translate
-
- pixs {
- dup
- /x exch 30 mod def
- /y exch 30 idiv def
- y 2 mod 0 eq {x} {x 0.5 add} ifelse
- 32 y sub 0.8661 mul
- moveto
- 0 0.5774 rmoveto
- -0.5 -0.2887 rlineto
- 0 -0.5774 rlineto
- 0.5 -0.2887 rlineto
- 0.5 0.2887 rlineto
- 0 0.5774 rlineto
- -0.5 0.2887 rlineto
- closepath fill
- } forall
-
- % Plot the locator symbol
- newpath 14 13.8576 0.5774 0 360 arc closepath
- 14 13.8576 1.3359 360 0 arcn closepath fill
- newpath 14 13.8576 2.1058 0 360 arc closepath
- 14 13.8576 2.8644 360 0 arcn closepath fill
- newpath 14 13.8576 3.6229 0 360 arc closepath
- 14 13.8576 4.3814 360 0 arcn closepath fill
-
- grestore
-
- end
-
-} bind def
-/renmaximatrix dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp renmaximatrix 0.0 0 0 0
+%%BeginData: 16 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D Ops 'bASu ?nG \M#'F E2)?
+H\`B!23JD%@<-"% P!5$b @<- "%H ]g15 P" BS2 FF00,I ?I 0b:6I# gXb
+o@cV;m^uP)G2^!! !"V58 2Cl P-& \ ;G] S4p 3%o N>5):8 CC 6CA+H' 1@I
+*g0Ea1O4cXP%odQ P!+/: I=! )]M E_ (@ !0R A2P #[;\H' 5. a5@(e2 P&-
+:sL]E;s'@;/jL5N _G!! %nj PL +` @Kn o_d ^D" tBP(
+ecX!!!"V^6?olP( ecX! ! !" V5 *O? AP( e\lM E_d$I
+?K;A^An66ME[6NI ?K;I(6 V"4 P "Cg TL ^o;. ?+@ M(582ClL]E /1BT`O^(5NH
+X6!_"4MEe-?`J+D ,L]ESB Oqs 3 IP&H -dME tOX ]8AiX`GLD2 L&ktN"d0XW%
+Z3PX\@[V`2c<V0! GI8hOp 7'b P!Y= ML^o ;.? +@M(5\Jo?L ]E/1BT`O^(5
+NHX6!_"4MEm+WDM A1*L] ESBO qs3IP "h*" I?G )'1G<c[DJ` g,Bl.:#EbTc
+]30If*F_`U>D_?- CEcQG 7F`MS BDD#C BBl J#6A7]@eDI mj"F)Q2A@qC
+gGOuY1:ATVm"@r# drB9KiQ P'(hWF DtYuC M@[ !I?IP~>
+% uk.co.terryburton.bwipp/renmaximatrix 0.0 0
+%%EndData
+%%EndResource
% --END RENDERER renmaximatrix--
% --BEGIN ENCODER ean5--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: EAN-5 (5 digit addon)
% --EXAM: 90200
% --EXOP: includetext guardwhitespace
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/ean5 {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Helvetica def
- /textsize 12 def
- /textxoffset 0 def
- /textyoffset (unset) def
- /height 0.7 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /height height cvr def
- /textxoffset textxoffset cvr def
- textyoffset (unset) eq {
- /textyoffset height 72 mul 1 add def
- } {
- /textyoffset textyoffset cvr def
- } ifelse
-
- % Create an array containing the character mappings
- /encs
- [ (3211) (2221) (2122) (1411) (1132)
- (1231) (1114) (1312) (1213) (3112)
- (112) (11)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789) def
-
- % Determine the mirror map based on mod 10 checksum
- /mirrormaps
- [ (11000) (10100) (10010) (10001) (01100)
- (00110) (00011) (01010) (01001) (00101)
- ] def
- /checksum 0 def
- 0 1 4 {
- /i exch def
- /barchar barcode i get 48 sub def
- i 2 mod 0 eq {
- /checksum barchar 3 mul checksum add def
- } {
- /checksum barchar 9 mul checksum add def
- } ifelse
- } for
- /checksum checksum 10 mod def
- /mirrormap mirrormaps checksum get def
-
- /sbs 31 string def
- /txt 5 array def
-
- 0 1 4 {
- /i exch def
-
- % Prefix with either a start character or separator character
- i 0 eq {
- sbs 0 encs 10 get putinterval
- } {
- sbs i 1 sub 6 mul 7 add encs 11 get putinterval
- } ifelse
-
- % Lookup the encoding for the barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- mirrormap i get 49 eq { % Reverse enc if 1 in this position in mirrormap
- /enclen enc length def
- /revenc enclen string def
- 0 1 enclen 1 sub {
- /j exch def
- /char enc j get def
- revenc enclen j sub 1 sub char put
- } for
- /enc revenc def
- } if
- sbs i 6 mul 3 add enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 1 sub 9 mul 13 add textxoffset add textyoffset textfont textsize] put
- } for
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [16{height}repeat]
- /bbs [16{0}repeat]
- includetext {
- /txt txt
- } if
- /opt options
- /guardrightpos 10
- /guardrightypos textyoffset 4 add
- /bordertop 10
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/ean5 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp ean5 0.0 0 0 0
+%%BeginData: 38 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04eR02 1( ,nOu8C 305
+kfOBl@m1P!5$b04 J@1@r Gmh P!5 $ b04 ]!= FC] E#G9CL +C ia0N1G <H[
+@r-9uATVL.F<G1( Cia0N 1G< i]G ][ P9 DKM #aO u"b5AU &< <BmO?H %$E
+D"FCf]=G].2+F(K HL!0 T,k FC f] =H# I;, F(K HR"a
++^(ATX(k05+p2B4 uCE5 ; P) OO u%# qFD 5Z2F -<^[F
+*)G:DJ+':E+P1qH \_]c23 JDe E -,f 4D KC/f X(G dVF(LLtH]g XBP#RT(P%'T
+NOthst4d(eHEckr V4aW>D P!5 % OP!5 $bI= %,/ FE2M8Ou%NL <IL$AOrfcH0
+5kfOBl@m1P!5$bI ?IQJE- ,f4 DKC/ f1OY EX0 6CcMFCoH/F <G[:G][P9DK
+M$nOu"b5AU&<<Bm O>5FC f]=F (or3O tVtS 05+ p2B4uB0BOt mjBQTCjOu"b
+5AU&<ADe<U&ATT& :AU&< ADe<U &ATX( gOu %2kG]\4LAn H*qFH-NIDKB
+B2P!+.FFCf]=H#I ;,F(KG9 BOtmjB QT&$P &,p TOo^_%I=!V hAU&<BDe<U&
+ATT&:AU&<BDe<U&ATX(gOu%NL<FTBW@rGmhP%'4NP&5P!@WuO*E%Y^1DDbm3A5$QPB67gI*CW7
+h/N"YZA7R91DBNe=F*&O6AKWiQA8,[jFE9)gEa`['AS#n&DfV"*I?IQ=@<,jrA7^+N3/B8OAs,
+?63Kd4%EdKHKGA2#8/nJI/2.C!)6YKnK@:OCjEfMG75u'!h+CSek/T5MLD09oA+Cf>-FCAm$+E
+).6Gp$X3B5)I/0/%?SBldisEcQ)=P!=AX<.0p$04f$2F!+\I">_ef0ocAl1,:SE">V\e16)Jl1
+bg_F">MVe16)Jl1,CYF">MVc1l_\n1GLYF">MYd1QDSo0ekGD"#2McNWLpi?'6us@UX:eBOPq&
+NX@Hp1,CaE2E*TUOu"b.Bl\64Ec#6(F!+\I"Yh_c0JJLj0eb=90TH;k0JG48NWh-k0JG5A"Y_Y
+c0JJLj0JG490TH;j0JG49NWh*k0JP8A"Y_Yb0JSRk0JG480jTqu04S[,@r$..D281T1Pc$e!Jg
+l*056S5Ou"b#@<,jk@<*K"@<,jrA7ZltP"UTbP,XU#BnuhRC5;kQ4aShlBOt[hF*2=B@UX:eBO
+Pq;"-RJ1BOt[hF*2>_!Ko6eHS8lBARfLsF_r71@<,jk@<./1P&+WAARfLsF`!9BOu%NL<IL$$0
+4S[,@r$..D'3>%ARfLsF_upAP%p.905YEDEc5u8@;m?+Bl\64Ec#6(F!+t+ARfLsF`!:7Ou"b4
+@WR>IP,4<t06DG\L]rqJOu%moL]N;7HS9)r5*@^9L]ET$HZNY;L]D"(@rmG5P"Us`I=$$EF!,1
+Q!KsF<#*NeY#Ef+!DI[aD$^+/GH$tiU@UX:eDe*E%BnueQ9O_FN@q]:kF-8_MNKSFI@P;G5A9a
+8$Ou&8DP'&EhDIXf#DI[`1Bl7I+P"UroD/"$2DfT]'E$/kX98G<c4aShnDI[KoDBNM.A!1;a1G
+<c[G%GQ$+D#G#Ch7LIV33Wj!/LYeDI[KoDMS=VWI$:5P!5$b04S[(EZeq2@j#NL99M)OAThX&@
+j#?#@r,^o+DR(=L]N[<@q]:kP'DD<82"Ol@j#f'G%GQ$Ou%NL<-)Mi+DHW9P&,pVOo]-3A!2+Z
+G]Y'B+Bost@<,jrA7ZltL]NZ4BnueQWJCkDCkrO`!H_mtFEh_9AohO*Oo]Z9G]\4LAnH*qF<G[
+:G][P9DKI"CAU&<<BmO>5?'9G\P"7\t061WA0/%?WDJX$)ARTU4F(025>9IurF*i]sP,Wkm8R3
+uYBQG;#L_+oHASGdjFFB=)>q]YrF!+\C&:935I?K4g+DG_'Cis9"FCf]=HS9JcF<G[MFFB<O05
+kfO+E)4@Bl@m105#E9Eb'3)B4uC+Df^^A05#E9Eb'3)B4uC4E,Te?FCf]=H#I;,F(KHL"Hid=@
+W-9tATDm2E/4ib4s4BSDKKE0@<[lR0/%?WDJX$)ARTVB<0B7iOq*X204eR023Kq^A1r(@/n8fP
+FCfK5H"(o:FDl%L@WuO*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(
+eDJ+B\;u~>
+% uk.co.terryburton.bwipp/ean5 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER ean5--
% --BEGIN ENCODER ean2--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: EAN-2 (2 digit addon)
% --EXAM: 05
% --EXOP: includetext guardwhitespace
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/ean2 {
-
- 20 dict begin
-
- /options exch def % We are given an options string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Helvetica def
- /textsize 12 def
- /textxoffset 0 def
- /textyoffset (unset) def
- /height 0.7 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /height height cvr def
- /textxoffset textxoffset cvr def
- textyoffset (unset) eq {
- /textyoffset height 72 mul 1 add def
- } {
- /textyoffset textyoffset cvr def
- } ifelse
-
- % Create an array containing the character mappings
- /encs
- [ (3211) (2221) (2122) (1411) (1132)
- (1231) (1114) (1312) (1213) (3112)
- (112) (11)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789) def
-
- % Determine the mirror map based on mod 4 checksum
- /mirrormap [(00) (01) (10) (11)] barcode 0 2 getinterval cvi 4 mod get def
-
- /sbs 13 string def
- /txt 2 array def
-
- 0 1 1 {
- /i exch def
-
- % Prefix with either a start character or separator character
- i 0 eq {
- sbs 0 encs 10 get putinterval
- } {
- sbs i 1 sub 6 mul 7 add encs 11 get putinterval
- } ifelse
-
- % Lookup the encoding for the barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- mirrormap i get 49 eq { % Reverse enc if 1 in this position in mirrormap
- /enclen enc length def
- /revenc enclen string def
- 0 1 enclen 1 sub {
- /j exch def
- /char enc j get def
- revenc enclen j sub 1 sub char put
- } for
- /enc revenc def
- } if
- sbs i 6 mul 3 add enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 1 sub 9 mul 13 add textxoffset add textyoffset textfont textsize] put
- } for
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [12{height}repeat]
- /bbs [12{0}repeat]
- includetext {
- /txt txt
- } if
- /opt options
- /guardrightpos 10
- /guardrightypos textyoffset 4 add
- /bordertop 10
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/ean2 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp ean2 0.0 0 0 0
+%%BeginData: 34 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04eR01 4+ fkOu8C 305
+kfOBl@m1P!5$b04 J@1@r Gmh P!5 $ b04 ]!= FC] E#G9CL +C ia0N1G <H[
+@r-9uATVL.F<G1( Cia0N 1G< i]G ][ P9 DKM #aO u"b5AU &< <BmO?H %$E
+D"FCf]=G].2+F(K HL!0 T,k FC f] =H# I;, F(K HR"a
++^(ATX(k05+p2B4 uCE5 ; P) OO u%# qFD 5Z2F -<^[F
+*)G:DJ+':E+P1qH \_]c23 JDe E -,f 4D KC/f X(G dVF(LLtH]g XBP#RT(P%'T
+NOthst4d(eHEckr V4aW>D P!5 % OP!5 $bI= %,/ FE2M8Ou%NL <IL$AOrfcH0
+5kfOBl@m1P!5$bI ?IQJE- ,f4 DKC/ f1OY EX0 6CcMFCoH/F <G[:G][P9DK
+M$nOu"b5AU&<<Bm O>5FC f]=F (or3O tVtS 05+ p2B4uB0BOt mjBQTCjOu"b
+5AU&<ADe<U&ATT& :AU&< ADe<U &ATX( gOu %2kG]\4LAn H*qFH-NIDKB
+B2P!+.FFCf]=H#I ;,F(KG9 BOtmjB QT&$P &,p TOo^_%I=!V hAU&<BDe<U&
+ATT&:AU&<BDe<U&ATX(gOu%NL<FTBW@rGmhP%'4KP&5P!@WuO*E%Y^1DDG[0A5$QPB67gI*CW7
+h/M\GWA7R91DBNe=F*&O6AKW`NA8,[jFE9)gEa`['AS#n&DfV"*I?IQ=@<,jrA7^+N3/B8OAs,
+?63Kd4%EdKHKGA2#8/nJI/11F[&6YKnK@:OCjEfMG75u'!e+CSek/T5MLD09oA+Cf>-FCAm$+E
+).6Gp$X3B5)I/0/%?SBldisEcQ)=P!=AX<.0p$04f$2F!+\I">_ef0ocAl1,:SE">V\e16)Jl1
+bg_F">MVe16)Jl1,CYF">MVc1l_\n1GLYF">MYd1QDSo0ekGD"#2McNWLpi?'6us@UX:eBOPq&
+NX@Hp1,CaE2E*TUOu"b.Bl\64Ec#6(+Bsj-0JJLg0JSRh0eeUh0elrV@UX:eDe*F8!/L]>9Tgr
+_"HmM_99M(aF(03H%?dQN1G<ipFGL!]$'I*#!/LZ3!IHJ6P!5$bBnubP4aV6ZF,0g-DI[aD$Be
+&FH$t$\@WNZ+L]N[<L^'#YL^0(DASu"!L^TA=P'MJ=<FTBW@rGmh+DHW4P"]=nEarckEc[C-P)
+YWIP%$(YDIe!T5*@^bFcpl#ASu!#ASu"!+DG_(G`k^_1MpiHEc5u8@;m?'P"UTcP!+.FASu!oA
+SrW%DI\i=Ou"b3AThX&@j#?#@r,^oP,4<tL]E53ASu!oAT!;)P,Wd]C6CcD1G<6O@<*K%DIXf(
+P"UroEb0E*DIXf#DI[KoDBN\WWJCS<WFKUMEftZqP"76;DIXf0AThX&A!/WrP#QL3F!,1Q#*Ne
+Y"-N[rDI\iTFEhmMBcpV&@UX:eDe*E%BnueQ9PK:`P,X6DP&,p`Oo]Z9G]\1KAnH*qFHQZHAU&
+<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C1.TI?I,`4>1_dDD*Y`ASu<uDIm6s06:TD+Bot0@W
+QmP0TrD`P"Aq4@VBg*>DN]7BOtmjBQSZcK3^->@WNYrL^\Wd!.C#_>p*j!@r-9uATVL.FF,Z_G
+]Y'MG]\@s<%i0/F<GL@FD5Z2F"_0K@<,n!BkM+$E,TfR$86%7@<,n!BkM+$H#R\C+EV1>FEqe:
+AohO*L]ikA04Jj?A7]e'DfCL>5!C*"Df0Z-Eaa0TE%`kbASu<uDIm6sP#RT)I?G)'1G<<JDDIA
+7P%64gCG'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM@[!P.H
+"'F`V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/ean2 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER ean2--
% --BEGIN ENCODER ean13--
-% --SUGGESTS ean5 ean2--
+% --REQUIRES preamble raiseerror renlinear ean5 ean2--
% --DESC: EAN-13
% --EXAM: 2071473968010
% --EXOP: includetext guardwhitespace
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /ean2 dup /uk.co.terryburton.bwipp findresource put
-dup /ean5 dup /uk.co.terryburton.bwipp findresource put
-begin
-/ean13 {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Helvetica def
- /textsize 12 def
- /textyoffset -4 def
- /height 1 def
- /addongap 12 def
-
- % Parse the input options, either a string or a dict
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
- /addongap addongap cvr def
-
- % Split off the addon
- barcode ( ) search {
- /barcode exch def
- pop
- /addon exch def
- } {
- pop
- /addon () def
- } ifelse
-
- % Add checksum digit
- /pad 13 string def
- /checksum 0 def
- 0 1 11 {
- /i exch def
- /barchar barcode i get 48 sub def
- i 2 mod 0 eq {
- /checksum barchar checksum add def
- } {
- /checksum barchar 3 mul checksum add def
- } ifelse
- } for
- /checksum 10 checksum 10 mod sub 10 mod def
- pad 0 barcode putinterval % Add barcode to the start of the pad
- pad 12 checksum 48 add put % Put ascii for checksum at end of pad
- /barcode pad def
-
- % Create an array containing the character mappings
- /encs
- [ (3211) (2221) (2122) (1411) (1132)
- (1231) (1114) (1312) (1213) (3112)
- (111) (11111) (111)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789) def
-
- % Digits to mirror on left side
- /mirrormaps
- [ (000000) (001011) (001101) (001110) (010011)
- (011001) (011100) (010101) (010110) (011010)
- ] def
-
- /sbs 59 string def
- /txt 13 array def
-
- % Put the start character
- sbs 0 encs 10 get putinterval
-
- % First digit - determine mirrormap by this and show before guard bars
- /mirrormap mirrormaps barcode 0 get 48 sub get def
- txt 0 [barcode 0 1 getinterval -10 textyoffset textfont textsize] put
-
- % Left side - performs mirroring
- 1 1 6 {
- % Lookup the encoding for the each barcode character
- /i exch def
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- mirrormap i 1 sub get 49 eq { % Reverse enc if 1 in this position in mirrormap
- /enclen enc length def
- /revenc enclen string def
- 0 1 enclen 1 sub {
- /j exch def
- /char enc j get def
- revenc enclen j sub 1 sub char put
- } for
- /enc revenc def
- } if
- sbs i 1 sub 4 mul 3 add enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 1 sub 7 mul 4 add textyoffset textfont textsize] put
- } for
-
- % Put the middle character
- sbs 7 1 sub 4 mul 3 add encs 11 get putinterval
-
- % Right side
- 7 1 12 {
- % Lookup the encoding for the each barcode character
- /i exch def
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- sbs i 1 sub 4 mul 8 add enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 1 sub 7 mul 8 add textyoffset textfont textsize] put
- } for
-
- % Put the end character
- sbs 56 encs 12 get putinterval
-
- /sbs [sbs {48 sub} forall] def
- includetext {
- /bhs [height height 12{height .075 sub}repeat height height 12{height .075 sub}repeat height height] def
- /bbs [0 0 12{.075}repeat 0 0 12{.075}repeat 0 0] def
- } {
- /bhs [30{height}repeat] def
- /bbs [30{0}repeat] def
- /txt [] def
- } ifelse
- /guardrightypos 0 def
-
- % Append the addon
- addon () ne {
- /addopts <<
- /dontdraw true
- /includetext true
- /height height 0.15 sub
- /textxoffset 95 addongap add
- /textsize textsize
- /textfont textfont
- >> def
- addon length 2 eq {addon addopts //ean2 exec} if
- addon length 5 eq {addon addopts //ean5 exec} if
- /addcode exch def
- /sbs [sbs aload pop addongap addcode (sbs) get aload pop] def
- /bhs [bhs aload pop addcode (bhs) get {.075 sub} forall] def
- /bbs [bbs aload pop addcode (bbs) get {.075 add} forall] def
- /txt [txt aload pop addcode (txt) get aload pop] def
- /guardrightypos height 72 mul 6 sub def
- } if
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs sbs
- /bhs bhs
- /bbs bbs
- /txt txt
- /opt options
- /guardrightpos 10
- /guardrightypos guardrightypos
- /borderbottom 5
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/ean13 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp ean13 0.0 0 0 0
+%%BeginData: 69 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04eR01 6O UMF_`U >D_
+?-CEcQG7F`MSBDD #CBBl J$S g6- ] D3% niO DDd S:06M% _@ rEuAAT Dg:
+@Wc^5Df.1:GA2#8 P1l(D Ops 'U@ ;[ eU H\` B!2 3JD%Df Bf 4Df0WZ 5*@
+]T@UX:eDe*FB5*@ ]TA8 c@- A9 )+ &+D ,%u F(L Lj05
+5<6Cis9"FCf]=+D ,%uF ( LL j0 6Cc MFC oH/F HOb01
+G<i]G]\"@H=_m@O u"b5AU &<A D e<U &A TWb% Ou" b5AU&<BDe< U&ATWb+Ou"b
+)ASGdjFGKs\1G<0 IA8c?u @;q # 2Ou" b"A7 TUr FCf]=AoDR/ NWjQCF(KHV1
+G<0IA8c@-AU&<<B mO?N"a +^( ATX( k04A C%D f0Z.G]\1KA nH*qFH-NIDK
+BB2Ou"b"A7TUrFC f]=H# I;,F (KHR" a+^( ATX (kDfBf4Df0 WZY:js=EbTE
+(FEqh:P!+/J!Ko= '%<$3 -Bl@m 1H]kF A@; L!rP!+/T5^ eepOuSV6P,4
+<rNWD;+NHB2`AWf 3'OtDh\ P')pOO u%N5O tCc rF_-^lI?IT YP%BdtOuY16
+E-,f4DKCt)Ou%NL<,Z_tBl@m1H]g15P"@<KAU&</Df0Y>FCf]=AoDR/OtDhQ06CcMFE;/BAKZ)
++G]\"@H=`6mOu"b5AU&<ADe<U&ATT&:AU&<ADe<U&ATX(gOu"b5AU&<BDe<U&ATT&:AU&<BDe<
+U&ATX(gOu"b)ASGdjF<G7.BkM+$OtVtS04AC%Df02rE$/S"A8c?u@;qA_Ou$NWA8c@-AU&</Df
+0ZW"a+^(ATX)PHS8f<A8c@-AU&</Df0Y>@:WneDKKH7FCoH/FHS5=1OYEc@:WneDKKH7FE;/BA
+W?q:DKBB2P&5P!@:WneDKKH7FE;/BAKYDlA8c@-AU&<<BmO?R09S,>P#Pk#A8c@-AU&<ADe<U&
+ATWq9F`)83FHUKf04AC%Df0Z.G]\1KAnH*qF<G"&A8c@-AU&<ADe<U&ATX(gOu%NL<+0<JDf0Z
+.G]\4LAnH*qFH-NIDKBB2P&5P!@:WneDKKH7FEqe:AohO*+CSekDf0Z.G]\4LAnH*qFHS;?1OY
+Ec@UX:eDe*F>!?dPbHS8i:Eas#uAWf6?1Qll6@:WneDN[2H1OXV5FY@06A8c@G!0T-dP#Yt"Ea
+s#uAWgMY%$GI:@<,jrA7^p5L^fMaOp$+b@WuO*E%Y^1DD<qV@:W&CDJ+')NZLVT:+\1V+Dl7BF
+<G%(+>GVoDfQsT1E^4BB5)I/0/%?SBldisEcQ)=P!=AX<+99V@rGmhH]g@E0Tp%25);4^:m,jG
+04K->E,[F@@;[eU@UWe7BOPpi@ru:&NZU\U:+\1V+Dl7BF<G(3DKK<$DBNk8Cj@.6BkM.%F"]1
+e@;0doATDg0EfrY8P#Qjm8RZ.?Df1_IL]ETT@:WneDN\Ib!g7D`"CYhODf1_IL]rrYOp$+b@Wu
+O*E%Y^1DD<qV@:VZ7A5@):ASu.&BT=H+A7R91DBNP0EZde::+\1V+Dl7BF<G%(+>P'XEZd4^A8
+,[jFE9)gEa`['AS#n&DfV"*I?IP_E+*:5%?dQN1G<6OARfLsF_up7Ou%moL]N;>HS9)r5*@]T@
+UX:eBOPp(@UX:eDe*E%Bp),F0TrDu1MMXHP%odQP!+.F@q]F`CNFW8+C\c"@q]:k+Cf(r@r$..
+D3=p_1OXU'@q]F`CNFW8+C\c"@q]:kL]`fV@q]F`CNFW8Oo^_%I?ITYP"769BOt[hF*2>U$=da
+\@r$..D28O^C6GQP$Bf.e1Lad5@rGmhP%'4VP!+/$@<,jrA7^Q*P"T:uARfLsF_upgOo^__HS8
+iPBlJ#DARTI21Lad'6YL%@CIDlLBlo@]8T&$VEcP`$F<F"<:+\1V+Cf(r@r!2tBkM.%+E2@>G%
+kJuA1oTV@;0doATDg0EfrY8P#Qjm<,c8VL]CmmEas#uAWh=X@:Y0&@q]F`CNFW8LbOtmP'AWh@
+<,jrA7Zm&@:YNW04f$2F!+\I">_ef0ocAl1,:SE">V\e16)Jl1bg_F">MVe16)Jl1,CYF">MVc
+1l_\n1GLYF">MYd1QDSo0ekGD"#2MbNWh-l0ekDC"#2Mb?'6us@UX:eBOPq&NX@Hp1,CaE2E*T
+UOu"b.Bl\64Ec#6(F!+\I"u%_b0JG2@"u%_c0JP;B"u%_c0eb>B"u%_c0ekAB"u%bc0JP;B"u%
+bd0JG5A"u%bd0eb;A"u%bc0eb>B"u%bc0ekAB"u%bd0JP7eOu"b4@WR>eP,4<t06DG\L^fLROu
+ %/gF,0g-DI[aD$Be&FGqX#KEcQ)=D..B+D/"$2DfT]'E-!.2@<,jrA7^PsP"UTbP,XU;Ou%3)
+FGKp$+C\c"@rGmhL]E53P"]t/G]\1KAnH*qF<G[:G]\4LAnH*qF<G[:G][P9DKI"CAU&<<BmO>
+5?'9Gg!Jgc4#(&";P!5$b@UX:eDe*E%BnueQ9O_FN@q]:kF-8_MNKSFI@P;G5A9a8$Ou&8DP'&
+EhDIXf#DI[`1Bl7I+P"UroD/"$2DfT]'E$/kN!KsFF98G<c4aShnDI[KoDBNM.A!1;a1G<c[G%
+GQ$+D#G#Ch7LIV33Wj!/LYeDI[KoDMS=VWI$:5P!5$b04S[(EZeq2@j#NL99M)OAThX&@j#?#@
+r,^o+DR(=L]N[<@q]:kP'DD<82"Ol@j#f'G%GQ$Ou%NL<-)Mi+DHW4P,X6?P&,pVOo]-3A!2+Z
+G]Y'B+Bost@<,jrA7ZltL]NZ4BnueQWJCeBCkrRa!H_mtFEh_9AohO*Oo]Z9G]\4LAnH*qF<G[
+:G][P9DKI"CAU&<<BmO>5?'9G\P"9Y'F,1'W!KsF<"HmSW"-N[rDI[aD$^+/GH&)]]!Jh/2056
+S5Ou$QUEas#uAKY]C!Kp,c@<,jk@<-FP5*CngFcp2eBl7I+P!5$bP')q104f$2+D#G#F!,17A9
+a81Ou%/gF!,1Q!KsF<"HmSW#a,4"DI\iTFEhmMBcpV&@UX:eDe*E%BnueQ9PK:`P,X6BP&,peO
+o]Z9G]\1KAnH*qFHQZHAU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C1.TI?I-B@WR>bASu"!
+L^]G>P'J^%@WNYr+EM"5H\aA=WI9q$?'7!XDI[L*A7]joG]\9c@VBg*>9ITjBkM+$+D>>#B4uC
+C%!uZ!BkM+$MERAqRZaXuP(RFZBkM+$+D>>#B4uCC%!uZ!BkM+$MERAqRZaXuP(RFZBkM+$+D>
+>#B4uB0?'6us@UaC$>DN98!/M&1MERAqRXL?OL]E52L^\Wf4dh_,I?K5=!/LV\Ou%N504JU9+B
+sXCHY?u)B4uC8P(R&'1G<3HF!+\C*d`\CI?K4gOu"b5G]Y'4+C1-dI?IS`B6@X'A9)BsBQSN=D
+f^^7Ou$NWA8c@G!0V2G04AC%DfBf>+?Vb>A8c@-A9)+&+EVXHAM7b8@r-9uATVL.F<G[GF_*4>
+ASGdjF<G7.BkM+$MEVoGRZaX'FCf]=G].2+F(KG9@:WneDKKH7FEh_9AohO*NWjQCF(KHVD0o]
+ %A8c@-AU&<ADe<U&ATW?ILgOS$A8c?u@;qA1I?IT=A7TUrFCf]=H#I;,F(KHR"a+^(ATX)PHS
+9JPG]\4LAnH*qF<G"&A8c@-AU&<BDe<U&ATW?`<%i?)G]\"@H=\4-A7TUrFCf]=F(or3NWjQCF
+(KHVD0o]%A8c@-AU&<<BmO?=HQ[EAG]\"@H=_Mf<A/H*G][P9DKI"0A7TUrFCf]=AoDR/NWjQC
+F(KHVD0o]%A8c@-AU&</Df0ZFHQ[EAG][P9DKL;i<B`U01LXg)Df1_IL]W`&HXUGqDf-\+A7TU
+tFE9)gARTI3P!=AX<+0<JDf1_IL]rr)HXUGqDf-\+A7TUtFE9)gARTI6P!=AX<%hZjA7KOgAWf
+6?1G<fYF!+[0F(03R!g7\7A7TUrB45a%@:WnYDe*F>"*7pmP"Ur>P'(&n1G<3NF!+[0@VBhG!g
+7\7A7T1gA7^c'@VBhG97)OZR@0M,WI9q$?'6us@UaC$>9IBaF-6TfF^\fk@rGmhNWWa"F-91CM
+ERAqRZ[]"P"ArB1G<ipF<Fd1FEhnj!g7\7A7T1gA7^c'FEhnj99K@>F^:.d05#E9Eb'3)B4uC4
+E,Te?BOtmjBQT&$P&,pYP,XU#I?IPl4>1_dDD*Y`ASu<uDIm6s06:TD+EM"504JU9+C]#*04JC
+3+C\f$06DG\+EVjM05kfO+E)4@Bl@m105#E9Eb'3)B4uC+Df^^A05#E9Eb'3)B4uC4E,Te?B6@
+X'A9)BsBQSN=Df[R@DfTB"Eais/FDl#P"[5*mA8c@-A9)+&P&N'-Eb0-)Bl7KjEfsCb3IR&#Ou
+"b&@;[eUOuSV806M%_@rEuAATDg:@Wc^5Df.1:GA2#8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@
+:O(eDJ,-DH]iMmATVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/ean13 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER ean13--
% --BEGIN ENCODER ean8--
-% --SUGGESTS ean5 ean2--
+% --REQUIRES preamble raiseerror renlinear ean5 ean2--
% --DESC: EAN-8
% --EXAM: 01335583
% --EXOP: includetext guardwhitespace height=0.5
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /ean2 dup /uk.co.terryburton.bwipp findresource put
-dup /ean5 dup /uk.co.terryburton.bwipp findresource put
-begin
-/ean8 {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Helvetica def
- /textsize 12 def
- /textyoffset -4 def
- /height 1 def
- /addongap 12 def
-
- % Parse the input options, either a string or a dict
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
- /addongap addongap cvr def
-
- % Split off the addon
- barcode ( ) search {
- /barcode exch def
- pop
- /addon exch def
- } {
- pop
- /addon () def
- } ifelse
-
- % Add checksum digit
- /pad 8 string def
- /checksum 0 def
- 0 1 6 {
- /i exch def
- /barchar barcode i get 48 sub def
- i 2 mod 0 ne {
- /checksum barchar checksum add def
- } {
- /checksum barchar 3 mul checksum add def
- } ifelse
- } for
- /checksum 10 checksum 10 mod sub 10 mod def
- pad 0 barcode putinterval % Add barcode to the start of the pad
- pad 7 checksum 48 add put % Put ascii for checksum at end of pad
- /barcode pad def
-
- % Create an array containing the character mappings
- /encs
- [ (3211) (2221) (2122) (1411) (1132)
- (1231) (1114) (1312) (1213) (3112)
- (111) (11111) (111)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789) def
-
- /sbs 43 string def
- /txt 8 array def
-
- % Put the start character
- sbs 0 encs 10 get putinterval
-
- % Left side
- 0 1 3 {
- % Lookup the encoding for the each barcode character
- /i exch def
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- sbs i 4 mul 3 add enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 7 mul 4 add textyoffset textfont textsize] put
- } for
-
- % Put the middle character
- sbs 4 4 mul 3 add encs 11 get putinterval
-
- % Right side
- 4 1 7 {
- % Lookup the encoding for the each barcode character
- /i exch def
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- sbs i 4 mul 8 add enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 7 mul 8 add textyoffset textfont textsize] put
- } for
-
- % Put the end character
- sbs 40 encs 12 get putinterval
-
- /sbs [sbs {48 sub} forall] def
- includetext {
- /bhs [height height 8{height .075 sub}repeat height height 8{height .075 sub}repeat height height] def
- /bbs [0 0 8{.075}repeat 0 0 8{.075}repeat 0 0] def
- } {
- /bhs [22{height}repeat] def
- /bbs [22{0}repeat] def
- /txt [] def
- } ifelse
- /guardrightypos 0 def
-
- % Append the addon
- addon () ne {
- /addopts <<
- /dontdraw true
- /includetext true
- /height height 0.15 sub
- /textxoffset 67 addongap add
- /textsize textsize
- /textfont textfont
- >> def
- addon length 2 eq {addon addopts //ean2 exec} if
- addon length 5 eq {addon addopts //ean5 exec} if
- /addcode exch def
- /sbs [sbs aload pop addongap addcode (sbs) get aload pop] def
- /bhs [bhs aload pop addcode (bhs) get {.075 sub} forall] def
- /bbs [bbs aload pop addcode (bbs) get {.075 add} forall] def
- /txt [txt aload pop addcode (txt) get aload pop] def
- /guardrightypos height 72 mul 6 sub def
- } if
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs sbs
- /bhs bhs
- /bbs bbs
- /txt txt
- /opt options
- /guardleftpos 10
- /guardrightpos 10
- /guardrightypos guardrightypos
- /borderbottom 5
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/ean8 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp ean8 0.0 0 0 0
+%%BeginData: 63 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04eR01 6O UMF_`U >D_
+?-CEcQG7F`MSBDD #CBBl J$S g6- ] D3% niO DDd S:06M% _@ rEuAAT Dg:
+@Wc^5Df.1:GA2#8 P1l(D Ops 'U@ ;\ &O L_Q "0O ps'_E- ,f 4DKCt) Ou"
+b#@<,jrA7^ofOu" b%Df 0Z- Ea a/ 7Am oLs AWe i&Bl
+7EsF_#'*AU&;>Am oLsA W ei &F Cf] =Ao DR/O irnD0
+6CcMFE;/BAV^bX1 G<i]G] \1K A nH* qF GL'_ 1G< i]G]\4LAnH *qFGTjX1G<E
+QBkM+$L]NYp04AC %Df02r E/4 p c1G< 0IA8 c@- AU&</Df0ZW "a+^(ATX(k0
+4AC%Df0Z.G]\"@H =`*?F` )83 FHSF 5@:W neD KKH7FEh_9A ohO*NWjQCF(
+KHV1G<0IA8c@-AU &<BDe <U&A TWq9F `)83 FHS FuE-,f4DKC uE06;5UBl7R
+*H#R>X4aVtcOu8C 3DfBf 4Df0W CP,i2 'Ci a0N4aW>WI? IQm30Ia6V33
+Qn!BlU*FE2M8P!+ /T/Wr;\ FcnqO1 OXV5/ Tc# UAWeitP#Zp nAWe*t3A5;i
+FD5Z2F-8_M1OYEcDfBf4Df0WCOu%NL8M>0sG][P9DKI"CAU&</Df0Z[/WqnCFCf]=F(or3+EV1
+>FE;/BAWe^01G<i]G]\1KAnH*qF<G[:G]\1KAnH*qFHS;?1G<i]G]\4LAnH*qF<G[:G]\4LAnH
+*qFHS;?1G<EQBkM+$+D>>#B4uCM09S+E@:WneDJ*Bs+CSekDf02rE0;l;1LXg)Df0Z.G][P9DK
+LmBF`)83FHUKf04AC%Df0Z.G][P9DKI"0A7TUrFCf]=AoDR/OtDhQI?IQ<A7TUrFCf]=F(or3N
+WjQCF(KHVD0mpEA7TUrFCf]=F(or3+CSekDf0Z.G]\"@H=`6mOu%NL<+0<JDf0Z.G]\1KAnH*q
+FH-NIDKBB2P&5P!@:WneDKKH7FEh_9AohO*+CSekDf0Z.G]\1KAnH*qFHS;?1OYEc@:WneDKKH
+7FEqe:AohO*NWjQCF(KHVD0mpEA7TUrFCf]=H#I;,F(KG9@:WneDKKH7FEqe:AohO*OtVtSI?I
+Q=@<,jrA7^c%+Hh_204J@1@rGmhP!5$bP'&EdA7TUrP!5$bI=%-"04AC%Df1R8Ou%NL<FTBW@r
+GmhP%'4PP&4Z:Eas#uAWgMY#a0%f"FDe2GA2#8/nJI/3+?<,9P&*SFD-[R76s[#3$<'\F*&O6A
+KWoSDfQs[+Co2!BlnDL061K8F(Jp'Ec5u]5CJ\o@UX:eDe*F+OuS7OP%Kk@LcLVpP&bn&@WuO*
+E%Y^1DE)*6A4($=Ea`I"ATEeP76s[#3$<'\F*&O7Df0Z*Bl5&3DJXS@A8,[jFE9)gEa`['AS#n
+&DfV"*I?IQXP"B(mA8c@K@Yb#ID.-scDf1_IL]W`VOp#3(A8c@K@Yb2ND3>$K04K->E,[F@@;\
+&6@:VZ7A5@):ASu.&BT=E*A7R91DBNP0EZde::+\FJD09oA+C\n)1*CLU+>k9PBkM.%F"]1e@;
+0doATDg0EfrY8P#O)R@:Y0"P,4<t04S[,@r$..D281T1Pc$e!Jgr,056S5Ou"b#@<,jk@<*K"@
+<,jrA7ZltP"UTbP,XU#BnuhRC5;kQD0mpGBOt[hF*2=B@UX:eBOPp(@q]F`CNFW8Oo^_%I=!VW
+BOt[hF*2=B@UX:eBOPq;"-RJ1BOt[hF*2>_!Ko6eP#Zpn82"IdARfLsF_upA@q]F`CNFW8L^K;
+[P,X6EP%p.9@UX:eDe*FB@Yb;Q4aUXHEas#uAV^SS94MXH@r$..D29m/!Kq;H04K->E,[F@@;\
+&6@:V`=ARfLDBkM.%N[.26@rHC.ARfg)76s[#3$;^EARfKuA8,[jF<GOCDg#i*ARmGIEa`['AS
+#n&DfV"*I?IQXP#QC/A;C4p@<,jrA7^pLE+*:5#@hFY@r$..D29m/!Kq[\@UX:eDe*E%E+*:?1
+G<<W@ribsNW_-n0en[k1,:U>NW_*l1,=jm0f1U>NW_'k1GXsn0etO>NW_'k0f4mn0f(O>NW_'l
+0f+gm1GLU>NWV!j0ocDl0ekC;NWV!j0jTqu04J@1@q]:kF,gS]0etOA2)[BQ3Kc0OF(03H/!?`
+l1G<ipFGL3c$'I)c@WR>*ASu"!L^K;<P'Mi`L]N;6HS9)r5*@^2@<,jrA7ZltL]NZ4@UX:eBOP
+q&P!5%gP')ps055<7G`k7R1QlmDFY@<D@j#?#@ric,DIe!T99M)P@WNZ+L]ilWL]`e@ASu"@H$
+":Q+DDs&+C\c"@rGmh+DHW4P"]SG#EinFAU&<ADe<U&ATX(9FCf]=H#I;,F(KG9FCf]=AoDR/+
+EV1>FE;/BAKY9AG^Y`GF(03H"Gd2DCkr1V!G-.YF,13e99ORV"Gd)7#CA+<P!5$b@UX:eDe*E%
+BnueQ9O_FN@q]:kF-8_MNKSFI@P;G5A9a8$Ou&8DP'&EhDIXf#DI[`1Bl7I+P"UroF(025Bnun
+TCkr@[!G-.YP'M.oF<G9?>9IB`Eas#uAKY]C!Kp,jL^0)ZFCf]=G].2+F(KHV!JglA!H_mtFEq
+e:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'DD<8986]LaZhP@rmG7P"Us`06:TD+Bot0@WQmP0T
+rD`P"ArB1ML`:Cis9"FCf]=HS8iAF!+[0BOtmjBQPA1ASGdjFGL3LBOtmjBQT+pR@0M,WI9q^B
+OtmjBQPA1ASGdjFGL3LBOtmjBQT+pR@0M,WI9q^BOtmjBQPA1ASGdjF<FkP1G<3HF!+\C!/LW2
+#^_FlR@0LlP(SPjL]E5:H\stSR@8PeK89M`!*taDI=!VVBQG;#L_b>NASGdjFFB=)?'6us@UaC
+$>DO&AL]DjdK3aWr06DG\+BosoOu%NL<A/!-@<,n!BkM+$H#R\CL]ESo@:WneDN4^[D0mpEA7T
+UtFE8Qe4>15`DKKE0@<Wi9EckqHBl7EsF_#'*AU&;>FE2M805+p2B4uB0BOtmjBQT+q)4?qVW@
+r@)G]\1KAnH*qF<G"&A8c@-AU&<ADe<U&ATWq9F`)83FHUKf@:WneDKKH7FEh_9AohO*I=$c;@
+:WneDJ*BsOo]uo<FKEKDf0Z.G]\4LAnH*qFH-NIDKBB2P&5P!FCf]=H#I;,F(KG9@:WneDKKH7
+FEqe:AohO*I?IP_FCf]=F(or3+CSekDf0Z.G]\"@H=`*?F`)83FHUKf@:WneDKKH7FE;/BAUSn
+JFCf]=F(or3I?IS`FCf]=AoDR/+CSekDf0Z.G][P9DKLmBF`)83FHUKf@:WneDKKH7FCoH/FFA
+KYFCf]=AoDR/I?ISo5*@^1A7TUrP%'4KP!+/#A7TUr+CSekDfBf>0/$mFDDIA>I?IQ<A7TUrP%
+'4NP!+/#A7TUr+CSekDfBf>0/$mFDDdSAI?IP_@:WnYDe*FB5*@]TF(025>9IurF-6TfF^\fkD
+f02rE$/S"A7KOgAW?k6@WR]*Oogeh?'6us@VBg*>9IBgF-6TfF^\fk@rGmhNWWa(F-91CMERAq
+RZaXuP"ArB1G<3HF!+[0@UaDA!g7\7A7T1gA7^c'@UaDA97)OZR@0M,!I^,&?'6usFEhmM>9J$
+4FHQ]gF^\fk@rGmhNWXBJFHT:[!g7\3Ou"b(F^]<$EbT0"FEqhDF!,.-BkM+$Le*\FL^'$AOu%
+NL<'38rEb0,A061WACh[cu@<+#B@WNZ5@WO23BQG;*BQGh9@WNZ$@WO2EG]Y'MG]YTWE-*4@E-
+,f4DK@IDF^]<$Ch74#E,TfR$86%7@<,n!BkM+$E,TfR$86%7@<,n!BkM+$H#R\C+D5h*Eb'3)B
+4uC4E,TeN@W-9tATD6uFEDG<L]ot++CoD.FC]E#GEQnu061WACh[cu@<.N1Ou[rR%[&V$ARTI9
+OuSV806M%_@rEuAATDg:@Wc^5Df.1:GA2#8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,-
+DH]iMmATVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/ean8 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER ean8--
% --BEGIN ENCODER upca--
-% --SUGGESTS ean5 ean2--
+% --REQUIRES preamble raiseerror renlinear ean5 ean2--
% --DESC: UPC-A
% --EXAM: 488581014973
% --EXOP: includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /ean2 dup /uk.co.terryburton.bwipp findresource put
-dup /ean5 dup /uk.co.terryburton.bwipp findresource put
-begin
-/upca {
-
- 20 dict begin
-
- /options exch def
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Helvetica def
- /textsize 12 def
- /textyoffset -4 def
- /height 1 def
- /addongap 12 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
- /addongap addongap cvr def
-
- % Split off the addon
- barcode ( ) search {
- /barcode exch def
- pop
- /addon exch def
- } {
- pop
- /addon () def
- } ifelse
-
- % Add checksum digit to barcode
- /pad 12 string def % Create pad one bigger than barcode
- /checksum 0 def
- 0 1 10 {
- /i exch def
- /barchar barcode i get 48 sub def
- i 2 mod 0 ne {
- /checksum checksum barchar add def
- } {
- /checksum checksum barchar 3 mul add def
- } ifelse
- } for
- /checksum 10 checksum 10 mod sub 10 mod def
- pad 0 barcode putinterval % Add barcode to the start of the pad
- pad 11 checksum 48 add put % Put ascii for checksum at end of pad
- /barcode pad def
-
- % Create an array containing the character mappings
- /encs
- [ (3211) (2221) (2122) (1411) (1132)
- (1231) (1114) (1312) (1213) (3112)
- (111) (11111) (111)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789) def
-
- /sbs 59 string def
- /txt 12 array def
-
- % Put the start character
- sbs 0 encs 10 get putinterval
-
- % Left side
- 0 1 5 {
- % Lookup the encoding for the each barcode character
- /i exch def
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- sbs i 4 mul 3 add enc putinterval % Put encoded digit into sbs
- i 0 eq { % First digit is before the guard bars
- txt 0 [barcode 0 1 getinterval -7 textyoffset textfont textsize 2 sub] put
- } {
- txt i [barcode i 1 getinterval i 7 mul 4 add textyoffset textfont textsize] put
- } ifelse
- } for
-
- % Put the middle character
- sbs 6 4 mul 3 add encs 11 get putinterval
-
- % Right side
- 6 1 11 {
- % Lookup the encoding for the each barcode character
- /i exch def
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- sbs i 4 mul 8 add enc putinterval % Put encoded digit into sbs
- i 11 eq { % Last digit is after guard bars
- txt 11 [barcode 11 1 getinterval 96 textyoffset textfont textsize 2 sub] put
- } {
- txt i [barcode i 1 getinterval i 7 mul 8 add textyoffset textfont textsize] put
- } ifelse
- } for
-
- % Put the end character
- sbs 56 encs 12 get putinterval
-
- /sbs [sbs {48 sub} forall] def
- includetext {
- /bhs [4{height}repeat 10{height .075 sub}repeat height height 10{height .075 sub}repeat 4{height}repeat] def
- /bbs [0 0 0 0 10{.075}repeat 0 0 10{.075}repeat 0 0 0 0] def
- } {
- /bhs [30{height}repeat] def
- /bbs [30{0}repeat] def
- /txt [] def
- } ifelse
- /guardrightypos 0 def
-
- % Append the addon
- addon () ne {
- /addopts <<
- /dontdraw true
- /includetext true
- /height height 0.15 sub
- /textxoffset 95 addongap add
- /textsize textsize
- /textfont textfont
- >> def
- addon length 2 eq {addon addopts //ean2 exec} if
- addon length 5 eq {addon addopts //ean5 exec} if
- /addcode exch def
- /sbs [sbs aload pop addongap addcode (sbs) get aload pop] def
- /bhs [bhs aload pop addcode (bhs) get {.075 sub} forall] def
- /bbs [bbs aload pop addcode (bbs) get {.075 add} forall] def
- /txt [txt aload pop addcode (txt) get aload pop] def
- /guardrightypos height 72 mul 6 sub def
- } if
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs sbs
- /bhs bhs
- /bbs bbs
- /txt txt
- /opt options
- /guardrightpos 10
- /guardrightypos guardrightypos
- /borderbottom 5
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/upca dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp upca 0.0 0 0 0
+%%BeginData: 65 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04eR01 6O UMF_`U >D_
+?-CEcQG7F`MSBDD #CBBl J$S g6- ] D3% niO DDd S:06M% _@ rEuAAT Dg:
+@Wc^5Df.1:GA2#8 P1l(D Ops 'eE +< =' L_Q "0O ps'_E- ,f 4DKCt) Ou"
+b#@<,jrA7^ofOu" b%Df 0Z- Ea a/ 7Am oLs AWe i&Bl
+7EsF_#'*AU&;>Am oLsA W ei &F Cf] =Ao DR/O irnD0
+6CcMFE;/BAV^bX1 G<i]G] \1K A nH* qF GTaU 1G< i]G]\4LAnH *qFGTjX1G<E
+QBkM+$L]NYp04AC %Df02r E/4 p c1G< 0IA8 c@- AU&</Df0ZW "a+^(ATX(k0
+4AC%Df0Z.G]\"@H =`*?F` )83 FHSF 5@:W neD KKH7FEh_9A ohO*NWjQCF(
+KHV1G<0IA8c@-AU &<BDe <U&A TWq9F `)83 FHS FuE-,f4DKC uE06;5UBl7R
+*H#R>X4aVtcOu8C 3DfBf 4Df0W CP,i2 'Ci a0N4aW>WI? IQm30Ia6V33
+Qn!BlU*FE2M8P!+ /T/Wr;\ FcnqO1 OXV5/ Tc# UAWeitP#Zp nAWe*t3A5;i
+FD5Z2F-8_M1OYEcDfBf4Df0WCOu%NL8M>0sG][P9DKI"CAU&</Df0Z[/WqnCFCf]=F(or3+EV1
+>FE;/BAWe^01G<i]G]\1KAnH*qF<G[:G]\1KAnH*qFHS;?1G<i]G]\4LAnH*qF<G[:G]\4LAnH
+*qFHS;?1G<EQBkM+$+D>>#B4uCM09S+E@:WneDJ*Bs+CSekDf02rE0;l;1LXg)Df0Z.G][P9DK
+LmBF`)83FHUKf04AC%Df0Z.G][P9DKI"0A7TUrFCf]=AoDR/OtDhQI?IQ<A7TUrFCf]=F(or3N
+WjQCF(KHVD0mpEA7TUrFCf]=F(or3+CSekDf0Z.G]\"@H=`6mOu%NL<+0<JDf0Z.G]\1KAnH*q
+FH-NIDKBB2P&5P!@:WneDKKH7FEh_9AohO*+CSekDf0Z.G]\1KAnH*qFHS;?1OYEc@:WneDKKH
+7FEqe:AohO*NWjQCF(KHVD0mpEA7TUrFCf]=H#I;,F(KG9@:WneDKKH7FEqe:AohO*OtVtSI?I
+Q=@<,jrA7^c%+Hh_204J@1@rGmhP!5$bP'&EdA7TUrP!5$bI=%-"04AC%Df1R8Ou%NL<FTBW@r
+GmhP%'4TP&4Z:Eas#uAWgMY%$GIj"FDe2GA2#8/p2,C6"4859P&*SFD-[T<DZ%75p1#eF*&O6A
+KW]^+E)9C0esk^BkM.%F"]1e@;0doATDg0EfrY8P#Pn!Eas#uAUBS"LbP!(P!4[^P#.<^HS8iP
+BlJ#DF`:hV@UWe7BOPpi@ru:&NZM1s6S1SHD09oA+Cf>-FCAm$+E).6Gp$X3B5)I/0/%?SBldi
+sEcQ)=P!=AX<.0p$@:WneDN\Ib!0V2-A7TUrP%'4KP&6?b@:WneDN\Ib"d3_c"FDe2GA2#8/p2
+,C6"4856"FM%DG4VZB67gI-:)0Q/T5MLAoD]4<DZ%75p1#eF*&O6AKW`NDfQsX+Co2!BlnDL06
+1K8F(Jp'Ec5u]5CJ\o05t?1L^]HCOu"b$BOt[hF*2>U!0T-o!/LZ3$@=F?P!5$b04J@1@q]:k+
+C\c"@rGmh+DI!3LbP!kOu$g.!g7;S!0V2G04S[,@r$..D'3>%ARfLsF_r71@<,jk@<.M3Ou%N5
+04S[,@r$..D'3>%ARfLsF_r71@<,jk@<./+P&-9^Ou%NL<IL$$04S[,@r$..D28O/BOt[hF*2>
+U$Bf.eWJCnEC6CA^@<,jrA7^p5L^]G0HX^E(@rGmhL^TA=@q]F`CNFW8LbOtmP&5P!@WuO*E%Z
+9P@mOR4A4($A@r"JHB5)IJ,Y;l`DfTl0@rrhn:dZg#+Cf(r@r!2tBkM.%+E2@>G%kJuA1oTV@;
+0doATDg0EfrY8P#Qjm<,c8VL]CmmEas#uAWh=X@:Y0%@q]F`CNFW8LbOtmP'AWh@<,jrA7Zm&@
+:YNW04f$2F!+\I">_ef0ocAl1,:SE">V\e16)Jl1bg_F">MVe16)Jl1,CYF">MVc1l_\n1GLYF
+">MYd1QDSo0ekGD"#2MbNWh-l0ekDC"#2Mb?'6us@UX:eBOPq&NX@Hp1,CaE2E*TUOu"b4@WR>
+eP,4<t06DG\L^]FQOu%/gF,0g-DI[aD$Be&FH&)HV!Jgo+056S5Ou$QUEas#uAKY]C!Kp,c@<,
+jk@<-FP5*CngFcp2eBl7I+P!5$bP')q104f$2+D#G#F!,17A9a81Ou%/gF!,1Q"HmSW"-N[rDI
+\iTBnubP4aV9qFGKp$+C\c"@rGmhL]E53P"]t/G]\1KAnH*qF<G[:G]\4LAnH*qF<G[:G][P9D
+KI"CAU&<<BmO?H!g9NgP'DD%FEhmMBcpV&@UX:eDe*E%BnueQ9PK:fP&,p^Oo]Z9G]\1KAnH*q
+FHQZHAU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C1.TI?ITYP"9Y'F,1$V"HmSW"-N[rDI[a
+D$^+/GH&)Z\!Jh,1056S5Ou$QUEas#uAKY]C!Kp,c@<,jk@<-FP5*CngFcp2eBl7I+P!5$bP')
+q104f$2+D#G#F!,17A9a81Ou%/gF!,1Q"HmSW#a,4"DI\iTBo!.[4aV9qFGL</+C\c"@rGmhL^
+T">P"]t/G]\1KAnH*qFGORm!H_mtFEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=_m6P,V`MG^Xp\G
+]Y'B+Bost@<,jrA7ZltL]NZ4Bo!"WCij65FEh_9AohO*Oo^@LOo]Z9G]\4LAnH*qF<G[:G][P9
+DKI"CAU&<<BmO>5?'9G\P#Zpn8986]LcAs`@rmG7P"Us`06:TD+Bot0@WQmP0TrD`P"ArB1ML`
+:Cis9"FCf]=HS8iAF!+\C"FFfnBkM+$I?K5=$@?GtBkM+$MERAqRZaXuP(RFZBkM+$+D>>#B4u
+CC$@?GtBkM+$MERAqRZaXuP(SPnHY?u)B4uC8P(R&'1G<3HF!+\C!/LW2!/LW2$@@XnR@0LlP(
+SPjL]E5<H\stSR@8PeK89M`!/LW2!*taDI=!VVBQG;#L`UnVASGdjFFB=)?'6us@UaC$>DO>IL
+]DjdK3aWr06DG\+BosoOu%NL<A/!-@<,n!BkM+$H#R\CL]ESo@:WneDN4^[D0mpEA7TUtFE8Qe
+4>15`DKKE0@<Wi9EckqHBl7EsF_#'*AU&;>FE2M805+p2B4uB0BOtmjBQT+q)4?qVW@r@)G]\1
+KAnH*qF<G"&A8c@-AU&<ADe<U&ATWq9F`)83FHUKf@:WneDKKH7FEh_9AohO*I=$cW@:WneDJ*
+BsOo]uo<FKEKDf0Z.G]\4LAnH*qFH-NIDKBB2P&5P!FCf]=H#I;,F(KG9@:WneDKKH7FEqe:Ao
+hO*I?IP_FCf]=F(or3+CSekDf0Z.G]\"@H=`*?F`)83FHUKf@:WneDKKH7FE;/BAUSnJFCf]=F
+(or3I?IS`FCf]=AoDR/+CSekDf0Z.G][P9DKLmBF`)83FHUKf@:WneDKKH7FCoH/FFAKYFCf]=
+AoDR/I?ISo5*@^1A7TUrP%'4KP!+/#A7TUr+CSekDfBf>0/$mFDDIA>I?IQ<A7TUrP%'4NP!+/
+#A7TUr+CSekDfBf>0/$mFDDdSAI?IP_@:WnYDe*FB5*@]TF(025>9IurF-6TfF^\fkDf02rE$/
+S"A7KOgAW?k6@WR]*Oogeh?'6us@VBg*>9IBgF-6TfF^\fk@rGmhNWWa(F-91CMERAqRZaXuP"
+ArB1G<3HF!+[0@UaDA!g7\7A7T1gA7^c'@UaDA97)OZR@0M,!I^,&?'6usFEhmM>9J$4FHQ]gF
+^\fk@rGmhNWXBJFHT:[!g7\3Ou"b(F^]<$EbT0"FEqhDF!,.-BkM+$Le*\FL^'$AOu%NL<'38r
+Eb0,A061WACh[cu@<+#B@WNZ5@WO23BQG;*BQGh9@WNZ$@WO2EG]Y'MG]YTWE-*4@E-,f4DK@I
+DF^]<$EbT0"FDu/>L^GeJF^]<$EbT0"FEqhDF!,+<@<,n!BkM+$H#R\C04Jj?A7]djDfg)>D28
+?Z4s4BSDKKE0@<[lR0/%?WDJX$)ARTVB<0B7iOq*X206M5D@?NU5A1r(@/n8fPFCfK5H"(o:FD
+l%L@WuO*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/upca 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER upca--
% --BEGIN ENCODER upce--
-% --SUGGESTS ean5 ean2--
+% --REQUIRES preamble raiseerror renlinear ean5 ean2--
% --DESC: UPC-E
% --EXAM: 00123457
% --EXOP: includetext height=0.4
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /ean2 dup /uk.co.terryburton.bwipp findresource put
-dup /ean5 dup /uk.co.terryburton.bwipp findresource put
-begin
-/upce {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Helvetica def
- /textsize 12 def
- /textyoffset -4 def
- /height 1 def
- /addongap 12 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
- /addongap addongap cvr def
-
- % Ensure 0 or 1 number systems
- barcode 0 get dup 48 ne exch 49 ne and {
- /barcode () def
- } if
-
- % Split off the addon
- barcode ( ) search {
- /barcode exch def
- pop
- /addon exch def
- } {
- pop
- /addon () def
- } ifelse
-
- % Create an array containing the character mappings
- /encs
- [ (3211) (2221) (2122) (1411) (1132)
- (1231) (1114) (1312) (1213) (3112)
- (111) (111111)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789) def
-
- /mirrormaps
- [ (000111) (001011) (001101) (001110) (010011)
- (011001) (011100) (010101) (010110) (011010)
- ] def
-
- % Derive the equivalent UPC-A for its checksum
- /upcacode (00000000000) 11 string copy def
- upcacode 0 barcode 0 get put
- barcode 6 get 48 sub 2 le {
- upcacode 1 barcode 1 2 getinterval putinterval
- upcacode 3 barcode 6 1 getinterval putinterval
- upcacode 8 barcode 3 3 getinterval putinterval
- } if
- barcode 6 get 48 sub 3 eq {
- upcacode 1 barcode 1 3 getinterval putinterval
- upcacode 9 barcode 4 2 getinterval putinterval
- } if
- barcode 6 get 48 sub 4 eq {
- upcacode 1 barcode 1 4 getinterval putinterval
- upcacode 10 barcode 5 1 getinterval putinterval
- } if
- barcode 6 get 48 sub 5 ge {
- upcacode 1 barcode 1 5 getinterval putinterval
- upcacode 10 barcode 6 1 getinterval putinterval
- } if
- /checksum 0 def
- 0 1 10 {
- /i exch def
- /barchar upcacode i get 48 sub def
- i 2 mod 0 ne {
- /checksum checksum barchar add def
- } {
- /checksum checksum barchar 3 mul add def
- } ifelse
- } for
- /checksum 10 checksum 10 mod sub 10 mod def
- /pad 8 string def
- pad 0 barcode putinterval % Add barcode to the start of the pad
- pad 7 checksum 48 add put % Put ascii for checksum at end of pad
- /barcode pad def
- /txt 8 array def
- txt 0 [barcode 0 1 getinterval -7 textyoffset textfont textsize 2 sub] put
-
- % Determine the mirror map based on checksum
- /mirrormap mirrormaps checksum get def
-
- % Invert the mirrormap if we are using a non-zero number system
- barcode 0 get 48 eq {
- /invt mirrormap length string def
- 0 1 mirrormap length 1 sub {
- /i exch def
- mirrormap i get 48 eq {
- invt i 49 put
- } {
- invt i 48 put
- } ifelse
- } for
- /mirrormap invt def
- } if
-
- /sbs 33 string def
-
- % Put the start character
- sbs 0 encs 10 get putinterval
-
- 1 1 6 {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- mirrormap i 1 sub get 49 eq { % Reverse enc if 1 in this position in mirrormap
- /enclen enc length def
- /revenc enclen string def
- 0 1 enclen 1 sub {
- /j exch def
- /char enc j get def
- revenc enclen j sub 1 sub char put
- } for
- /enc revenc def
- } if
- sbs i 1 sub 4 mul 3 add enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 1 sub 7 mul 4 add textyoffset textfont textsize] put
- } for
-
- txt 7 [barcode 7 1 getinterval 6 7 mul 11 add textyoffset textfont textsize 2 sub] put
-
- % Put the end character
- sbs 27 encs 11 get putinterval
-
- /sbs [sbs {48 sub} forall] def
- includetext {
- /bhs [height height 12{height .075 sub}repeat height height height] def
- /bbs [0 0 12{.075}repeat 0 0 0] def
- } {
- /bhs [17{height}repeat] def
- /bbs [17{0}repeat] def
- /txt [] def
- } ifelse
- /guardrightypos 0 def
-
- % Append the addon
- addon () ne {
- /addopts <<
- /dontdraw true
- /includetext true
- /height height 0.15 sub
- /textxoffset 51 addongap add
- /textsize textsize
- /textfont textfont
- >> def
- addon length 2 eq {addon addopts //ean2 exec} if
- addon length 5 eq {addon addopts //ean5 exec} if
- /addcode exch def
- /sbs [sbs aload pop addongap addcode (sbs) get aload pop] def
- /bhs [bhs aload pop addcode (bhs) get {.075 sub} forall] def
- /bbs [bbs aload pop addcode (bbs) get {.075 add} forall] def
- /txt [txt aload pop addcode (txt) get aload pop] def
- /guardrightypos height 72 mul 6 sub def
- } if
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs sbs
- /bhs bhs
- /bbs bbs
- /txt txt
- /opt options
- /guardrightpos 10
- /guardrightypos guardrightypos
- /borderbottom 5
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/upce dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp upce 0.0 0 0 0
+%%BeginData: 76 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04eR01 6O UMF_`U >D_
+?-CEcQG7F`MSBDD #CBBl J$S g6- ] D3% niO DDd S:06M% _@ rEuAAT Dg:
+@Wc^5Df.1:GA2#8 P1l(D Ops 'eE +< I+ L_Q "0O ps'_E- ,f 4DKCt) Ou"
+b#@<,jrA7^ofOu" b%Df 0Z- Ea a/ 7Am oLs AWe i&Bl
+7EsF_#'*AU&;>Am oLsA W ei &F Cf] =Ao DR/O irnD0
+6CcMFE;/BAV^bX1 G<i]G] \1K A nH* qF GTaU 1G< i]G]\4LAnH *qFGTjX1G<E
+QBkM+$L]NYp04AC %Df02r E/4 p c1G< 0IA8 c@- AU&</Df0ZW "a+^(ATX(k0
+4AC%Df0Z.G]\"@H =`*?F` )83 FHSF 5@:W neD KKH7FEh_9A ohO*NWjQCF(
+KHV1G<0IA8c@-AU &<BDe <U&A TWq9F `)83 FHS FuE-,f4DKC uE06;5UBl7R
+*H#R>X4aVtcOu8C 3DfBf 4Df0W CP,i2 'Ci a0N4aW>WI? IQm30Ia6V33
+Qn!BlU*FE2M8P!+ /T/Wr;\ FcnqO1 OXV5/ Tc# UAWeitP#Zp nAWe*t3A5;i
+FD5Z2F-8_M1OYEcDfBf4Df0WCOu%NL8M>0sG][P9DKI"CAU&</Df0Z[/WqnCFCf]=F(or3+EV1
+>FE;/BAWe^01G<i]G]\1KAnH*qF<G[:G]\1KAnH*qFHS;?1G<i]G]\4LAnH*qF<G[:G]\4LAnH
+*qFHS;?1G<EQBkM+$+D>>#B4uCM09S+E@:WneDJ*Bs+CSekDf02rE0;l;1LXg)Df0Z.G][P9DK
+LmBF`)83FHUKf04AC%Df0Z.G][P9DKI"0A7TUrFCf]=AoDR/OtDhQI?IQ<A7TUrFCf]=F(or3N
+WjQCF(KHVD0mpEA7TUrFCf]=F(or3+CSekDf0Z.G]\"@H=`6mOu%NL<+0<JDf0Z.G]\1KAnH*q
+FH-NIDKBB2P&5P!@:WneDKKH7FEh_9AohO*+CSekDf0Z.G]\1KAnH*qFHS;?1OYEc@:WneDKKH
+7FEqe:AohO*NWjQCF(KHVD0mpEA7TUrFCf]=H#I;,F(KG9@:WneDKKH7FEqe:AohO*OtVtSI?I
+Q=@<,jrA7^c%+Hh_204J@1@rGmhP!5$bP'&EdA7TUrP!5$bI=%-"04AC%Df1R8Ou%NL<FTBW@r
+GmhP%'4PP&4Z:Eas#uAWgMY#a0%f"FDe2GA2#8/p2,C7:K\99P&*SFD-[R<DZ%773HGiF*&O6A
+KWoSDfQs[+Co2!BlnDL061K8F(Jp'Ec5u]5CJ\o@UX:eDe*F+OuS7OP%Kk@LcLVpP&bn&@WuO*
+E%Z9P@msj8A4($=Ea`I"ATEeP<DZ%773HGiF*&O7Df0Z*Bl5&3DJXS@A8,[jFE9)gEa`['AS#n
+&DfV"*I?IQXP"B(mA8c@K@Yb#ID.-scDf1_IL]W`VOp#3(A8c@K@Yb2ND3>$K04K->E,[FPE+;
+=G@:VZ7A5@):ASu.&BT=E*A7R91DBNP0EZe@Y6S1_LD09oA+C\n)1*CLU+>k9PBkM.%F"]1e@;
+0doATDg0EfrY8P#Pn!Eas#uAV^>L99M8j0Tp:95):qVD3>$K04K->E,[FPE+;=G@:W,UD.7's;
+gEG+ASmGQ<DZ%773HGiF*&O<@<Q3)DKTf*ATAo7H#n(=D'1MTDfQsT0/%?SBldisEcQ)=P!=AX
+<%hg#@ribsNW_-n0en[k1,:U>NW_*l1,=jm0f1U>NW_'k1GXsn0etO>NW_'k0f4mn0f(O>NW_'
+l0f+gm1GLU>NWV!j0ocGm0ekC;0jTqu04J@1@q]:kF,gS]0etOA2)[BQ3Kc0OD/"$2DfT]'E-!
+.+NWq0k0JP::NWq0k0eb=:NWq0k0ek@:NWq0k0ekC:NWq0l0JG49NWq0l0eb:9NWq0l0ek@9NW
+q0l0JP79NWq0l0JP:9NWq0l0eb=9?'6usF`:i!@rGmhNXINp0JG170JG170Sg+"V32^Z1NdYH@
+:O4dAV^=q@<,jrA7^PsP"Us_@UX:eDe*F8#*MW80TrDk!g6u=F`:i!@rGmhL]LsnEas#uAV^AC
+!g66?H$+(9@:O4dAV^Ft@<,jrA7^Q$L]NZ4P'M1h@prkcA7^Q&@UX:eDe*F8",I&B9Tj[LP#Pn
+!Eas#uAV^PR98G9bWJCY>4aV<j@prkcA7^Pt@UX:eDe*F8!Jgi@9Tj[DE+<<dDe*F8$"@=`@rG
+mhL]iM8P"_$aI?IQ=@<,jrA7^Q$P"UTbP,X6?P!+/7E+<<dDe*F8!FfJX@rGmhL]N;7P"_$aF`
+:i!@rGmhL^IU"Eas#uAV^MG!Kp->H$tiT@UX:eDe*F8#*MW80TrDk"d2K)F`:i!@rGmhL]LsnE
+as#uAV^AC"d2QBH$+(9@:O4dAV^\&@<,jrA7^Q$L]NZ4P'MJ=<%h`pARfLsF_up7Ou%moL]N;=
+HS9)r5*@]T@UX:eBOPp(F`:i!@rGmh+DI!3LbP!kOu$g.!g7;S!0V2G04S[,@r$..D'3>%ARfL
+sF_r71@<,jk@<.M3Ou%N504S[,@r$..D'3>%ARfLsF_r71@<,jk@<./+P&-9^Ou%NL<IL$$04S
+[,@r$..D28O/BOt[hF*2>U$Bf.eWJCnEC6CA^@<,jrA7^p5L^9/,HX^E(@rGmhL^0)9@q]F`CN
+FW8LbOtmP&5P!@WuO*E%Z9P@msj8A4($A@r"JHB5)IJ,Y;l`DfTl0@rrhn:dZg'+Cf(r@r!2tB
+kM.%+E2@>G%kJuA1oTV@;0doATDg0EfrY8P#Qjm<%i3!A;CMSV33WR@:Y/o@UX:eDe*FBH#R2&
+L^.F'ARfLsF_upgOo^_j04J@1@rGmh+E1b"Ou"b5G]\`IOpR:-FEhn`!*^RT@<,jrA7^PsL]NZ
+4FCf]=G].2+F(KG9FCf]=H#I;,F(KG9FCf]=AoDR/+EV1>FE;/BAV^DNWEk[305YEDEc5u8@;m
+?+Bl\64Ec#6(F!+t+ARfLsF`!:7Ou$QUEas#uAV^>L98G9b4aShrDK^+ED/"$2DfT]'E0=[nV3
+3Wj!/LYmBl\64Ec#6(P%'4JP,Wd]Bp(ZC1MpiHEc5u8@;m?'P"UTbP!+/+DK^+EBo"L,G^XpQD
+K^+EBo"I+G^Y`TI?I,SD/"$2DfT]'E$/k4G'&m'I?IP_F(03H+d/[b1NR#HL]D"(@rmG5P"Us`
+L]N;4L^&2ZBp(ZC1Lad5@rGmh+DHW4P"]=nEarckEc[C-P)YWIP%$(YDIe!T5*@^bFcpl#ASu!
+#ASu"!+DG_(G`k^_1MpiHEc5u8@;m?'L]N[<P"UTcP!+.FASu!oASrW%DI\i=Ou"b3AThX&@j#
+?#@r,^oP,4<tL]E53ASu!oAT!;)P,Wd]C6CcD1G<6O@<*K%DIXf(P"UroEb0E*DIXf#DI[KoDB
+N\WWJCS<WFKUMEftZqP"76;DIXf0AThX&A!/WrP#QL3F!,1Q!KsF<"HmSW"-N[rDI\iTFEhmMB
+cpV&@UX:eDe*E%BnueQ9PK:`P,X6BP&,p^Oo]Z9G]\1KAnH*qFHQZHAU&<BDe<U&ATT&:AU&</
+Df0Y>FCf]=F(or3+C1.TI?I-CG]\`H>9IB`Eas#uAV^SI!Kp-4#)EMICkr^e!H_mtFEh_9AohO
+*Oo]Z9G]\4LAnH*qF<G[:G][P9DKI"CAU&<<BmO?H!g9NgP'D%WF,1cHDI[aD$^+/GGqX5JF!+
+[0F(03;LbP!kI?I0-Ou$fi@r-9uATVL.FF,ZMBQG;#+D>>#B4uB0BOtmjBQT%=HY?u)B4uCE4d
+h_,P,WkmK4nh1B4uB0BOtmjBQPA1ASGdjF<FkP1G<3HF!+\C!/LW2%"!jpR@0LlP(SPjL]E52?
+'7!lHS8iAF!+\C&US2&BkM+$I?K4gOu"b#@WNYrL_4ui!.C#_?'6usFEhmM>9I471OYEd05#E9
+Eb'3)B4uC4E,TfR!0T-HA7TUrNW>5ZHS8f<A8cF/F!*S-04]!=FC]E#G9D!JF_*4?DI[L*A7]j
+oG]Y'MEckqHBOtmjBQPA1ASGdjFG`7"R@9;<06CcMFEh_9AohO*+CSekDf0Z.G]\1KAnH*qFH-
+NIDKBB2P&5PSA7TUrFCf]=G].2+F(KHAH\aIdA7TUrB45bB!I^,2@:WneDKKH7FEqe:AohO*NW
+jQCF(KHVD0mpXAU&<BDe<U&ATT&'A7TUrFCf]=H#I;,F(KHAP#O)VAU&<<BmO>5@:WneDKKH7F
+E;/BAW?q:DKBB2P&5PSA7TUrFCf]=F(or3I=!)YAU&<<BmO?=P#X/WAU&</Df0Y>@:WneDKKH7
+FCoH/FH-NIDKBB2P&5PSA7TUrFCf]=AoDR/I=!)YAU&</Df0ZFP#X\0Ou$NWA8c@K@Yb)K4aUU
+JA8c?.@:WneE--.S04eR016OkMP#Pk#A8c@K@Yb2N4aUUJA8c?.@:WneE--.S04eR023L1PP#O
+)CA7T1gA7^ofOu"b4@WNYr+EM"5Oogeh@:WneDJ*Bs+CSek@rGmhNWX?3F-91Z!g7\3Ou"b#BQ
+G;#+C]#*Oogeh@:WnYDe*F>"(GqbP"U.Z4dh_,P,Wkm8R7K804JC3+Bost@WR\6P'(2DA7KOgA
+W?k%@WR]*H\stSR@99>I?I0-Ou"b5G]Y'4+EVjMOogeh@:WnYDe*F>"*Ad0P"Ur>P'(&n1G<B`
+@<,n!BkM+$H#R\C+D>>#B4uCC8<ReF#*PsK1OYEc4?P9;ASs.SEb0-)Bl7KjE\DKCF!,O5F"_!
+9F!+q*F"_!3F!+q$F"_W[F<G[MF>%QOF<GL@FD5Z2F"_0K@<,n!BkM+$E,TfR$86%7@<,n!BkM
++$H#R\C+D5h*Eb'3)B4uC4E,TeN@W-9tATD6uFEDG<L]ot++CoD.FC]E#GEQnu061WACh[cu@<
+.N1Ou[rR%[&V$F`:i%OuSV806M%_@rEuAATDg:@Wc^5Df.1:GA2#8+Co%qBl7L&ATMd4Ear[DF
+cna<F(KH4@:O(eDJ,-DH]iMmATVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/upce 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER upce--
% --BEGIN ENCODER isbn--
-% --REQUIRES ean13--
-% --SUGGESTS ean5 ean2--
+% --REQUIRES preamble raiseerror renlinear ean5 ean2 ean13--
% --DESC: ISBN
-% --EXAM: 978-1-56592-479 54495
+% --EXAM: 978-1-56592-479-6 54495
% --EXOP: includetext guardwhitespace
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /ean13 dup /uk.co.terryburton.bwipp findresource put
-begin
-/isbn {
-
- 20 dict begin
-
- /options exch def % We are given an options string
- /isbntxt exch def % We are given the isbn text with dashes
-
- /dontdraw false def
- /includetext false def % Enable/disable ISBN text
- /isbnfont /Courier def
- /isbnsize 9 def
- /isbnpos (unset) def
- /height 1 def
- /addongap 12 def
- /legacy false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /isbnfont isbnfont cvlit def
- /isbnsize isbnsize cvr def
- /height height cvr def
- /addongap addongap cvr def
- isbnpos (unset) eq {
- /isbnpos height 72 mul 3 add def
- } {
- /isbnpos isbnpos cvr def
- } ifelse
-
- % Split off the addon
- isbntxt ( ) search {
- /isbntxt exch def
- pop
- /addon exch def
- } {
- pop
- /addon () def
- } ifelse
-
- % Convert ISBN-10 to ISBN-13
- legacy not isbntxt length 13 le and {
- /pad isbntxt length 4 add string def
- pad 0 (978-) putinterval
- pad 4 isbntxt putinterval
- /isbntxt pad def
- } if
-
- % Read the digits from isbntxt and calculate checksums
- /isbn 13 string def
- /checksum10 0 def
- /checksum13 0 def
- /i 0 def /n 0 def
- { % loop
- /isbnchar isbntxt i get 48 sub def
- isbnchar -3 ne { % Ignore dashes
- isbn n isbnchar 48 add put
- n 9 lt {
- /checksum10 checksum10 10 n sub isbnchar mul add def
- } if
- n 12 lt {
- n 2 mod 0 eq {
- /checksum13 isbnchar checksum13 add def
- } {
- /checksum13 isbnchar 3 mul checksum13 add def
- } ifelse
- } if
- /n n 1 add def
- } if
- /i i 1 add def
- i isbntxt length eq {exit} if
- } loop
-
- % Add the ISBN header to the isbntxt
- n 9 eq n 10 eq or {
- /checksum 11 checksum10 11 mod sub 11 mod def
- /isbn isbn 0 9 getinterval def
- /pad 18 string def
- } {
- /checksum 10 checksum13 10 mod sub 10 mod def
- /isbn isbn 0 12 getinterval def
- /pad 22 string def
- } ifelse
- pad 0 (ISBN ) putinterval
- pad 5 isbntxt putinterval % Add isbntxt to the pad
-
- % Add checksum digit
- pad pad length 2 sub 45 put % Put a dash
- checksum 10 eq {
- pad pad length 1 sub checksum 78 add put % Check digit for 10 is X
- } {
- pad pad length 1 sub checksum 48 add put % Put check digit
- } ifelse
- /isbntxt pad def
-
- % Convert ISBN digits to EAN-13
- /barcode 12 string def
- isbn length 9 eq {
- barcode 0 (978) putinterval
- barcode 3 isbn putinterval
- } {
- barcode 0 isbn putinterval
- } ifelse
-
- % Append the addon
- addon () ne {
- 12 addon length add 1 add string
- dup 0 barcode putinterval
- dup 12 ( ) putinterval
- dup 13 addon putinterval
- /barcode exch def
- } if
-
- % Get the result of encoding with ean13
- options (dontdraw) true put
- options (addongap) addongap put
- /args barcode options //ean13 exec def
-
- % Add the ISBN text
- includetext {
- isbn length 9 eq {
- /isbnxpos -1 def
- } {
- /isbnxpos -12 def
- } ifelse
- args (txt) known {
- /txt args (txt) get def
- /newtxt txt length 1 add array def
- newtxt 0 txt putinterval
- newtxt newtxt length 1 sub [isbntxt isbnxpos isbnpos isbnfont isbnsize] put
- args (txt) newtxt put
- } {
- args (txt) [ [isbntxt isbnxpos isbnpos isbnfont isbnsize] ] put
- } ifelse
- } if
-
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/isbn dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp isbn 0.0 0 0 0
+%%BeginData: 44 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04eR00 f+ tP06M% _@r
+EuAATDg:@Wc^5Df .1:GA 2#8 P1l ( DOp s'Y F(0 $6L_Q" 0O ps'_E- ,f4
+DKCt)Ou"b*F(0$/ G]]*4 Ou" b%D f0 Z- Eaa /7A moLsAW ei &Bl7Es F_#
+'*AU&;>AmoLsAWe i&Bl da$ FC f] =Ao DR/ OiN V@05
+5K:DKKH7FE;/BAV ^YU1 G <H `@ W$: !G] \1KA nH*qF
+H-NIDKBB2Ou"b*F (0$/AU &<B D e<U &A TWq9 F`) 83FHSF5BOt mjBQT%2Ou"b
+"A7TUrB45b8%$ED "Ch76f @sK 2 /@;L !rOu %#q FD5Z2F-<^[ F*)G:DJ+':E
++P1qH\_]c23JDeE -,f4DK C/f X(Gd VF(L LtH ]gXBP#RT(P %'TNOthst4d
+(eHEckrV4aW>DP! 5%OP! 5$bI =%,/F E2M8 Ou% NL<IL$AOrf cH05kfOBl@m
+1P!5$bI?IQJE-,f 4DKC/ f1OYE X055K :DK KH7FCoH/F< G:=@W$:!G][
+P9DKM$nOu"b*F(0 $/AU&<< BmO>5B lda$F Cf] =F(or3OtVt SBlda$FCf]=
+G].2+F(KHR"a+^(ATX)PHS9)S@W$:!G]\1KAnH*qF<G:=@W$:!G]\1KAnH*qFHS;?1OYEcBlda
+$FCf]=H#I;,F(KHR"a+^(ATX)PHS9)S@W$:!G]\4LAnH*qF<G:=@W$:!G]\4LAnH*qFHS;?1OY
+Ec05+p2B4uB0BOtmjBQTCjOu"b"A7TUrB45a%@:WneDJ*BsOtVtSBlda$FEhnf!?dPbHS9)S@W
+$:4FHShN1Qll6@:WneDN[2H1OXV5FY@06A8c@G!0T-dP#Z=0B45:qP&P,V@W$:4FHU*h%?b._"
+FDe@@:UKpF(0$/G]]*XL]ikAP,4<tE+*:5!0.1B2`NCPH#R2&L]hF5@W$:4FHUo&Blda$FEhmM
+E+*:?1OYEc055K:DMSabV33Vf@q]F`CNFW80eeC`Ou"b$BOt[hF*2=S1Pc$o1G<Hu!0T,kDMS:
+U1OCchF(0#sBOPp(Blda$FEhmMBp),F0TrDu1MLo>DI[?gEes[WD0ou<@W!<++DGn+DI[?gEel
+E4!Kq\FL^B5VHS8lBARfLsF_rie+Cf(r@r$..D)!`#$>u$+Blda$@q]:kP&-9^Ou%NL<,RL#P%
+K&YL]W`SL]ET$HS8lBARfLsF_rih+DGn+DI[?gEZek*ARfLsF_rihOo^_%I=!VWBOt[hF*2=S1
+E^CQ@W#[h@<./+P&+WAARfLsF_rihOo^_%I?ITYP#O)P+Duu9Oo^_%I?IP_Bcq,G!KmJH1MItG
+F(0$/G]]*XP!+/T5^eepI?J/ZL^B5-DMSX_4d'i404S[,@r$..D28R0BOt[hF*2=S0Sg+"C6GQ
+P$^,7f1G<H`@W!<&F(0$C!/LrE9Th1bE+*:5&sB)S1OXU'@q]F`CNFW8L^IX*ARfLsF_rihL^K
+;[P,X6EP%p.9055K:DBNY7@W$u%L^]G?Ou"b1@:Y00P,4<tI?ITL@:Y/oNWi!Q6;AYdH#R2&L]
+qL6@W$:4FHUog@:UL"@:YO1L]Wa=Lb4d7@q]F`CNFW8L^K;.HZ3D(+E1b"P%'4JP,Vr)ARfLsF
+_uq0Oo^_jI=#pAA0>i"A<LDX!KsElBOt[hF*2>U0TlI"G^Y`T055K:DKL,F+E1b"Ou"b#@<,jr
+A7^Q*P,4<tBlda$P%'4RP!+/$@<,jrA7^PsNWV:#30JPr@<,jrA7^Q!Blda$P'MJ&@UX:eDe*F
+8!,6L`DN]9nP#Yq$A8c@G!0V2GL^[^&A8c@K@ZgbJ!KmJHV33fo!+KAW@rGmhP'N3ML^]:E+Hh
+#53/A#PA7TUrP'J]i@<,jrA7^ofOu%NL<,Z_tBl@m1NX006DKKE0@<Zg6F_-_\DfBf4Df0WV#[
+q7SDf02rE+*9fDf02rE0>H!@<-"%+C\c"@rGmh+E)4@Bl@m10/$mFDD<r15E[g:DI[L*A7]joG
+]\9TBlda$FCf]=G].2+F(KHR"a+^(ATX(uHS9)S@W$:!G]\1KAnH*qF<G:=@W%?<L^B5-H\h]M
+H\h<BP#[Z$I?IQDF(0$/AU&<BDe<U&ATWq9F`)83FHSe6055K:DKKH7FEqe:AohO*+D>>#B4uC
+C8<ReF"-N\J1OYEc@<-"%NWXBJFHU$Y06DG\+CT;'F,g?EG]]*AOu"b/ATr6@F<G[MFHU*h!Km
+JH$'I)^ATr6@FGKp=G]]*oDIn$6G]Y'GATr6@FHU*h!KsEd+DGn+DKL,F+DGn+DKKH7FEh_9Ao
+hO*+DGn+DKKH7FEqe:AohO*+DGn+DKKH7FCoH/F<G:=@W$:!G]\"@H=\4)P'CDUB60(8FEhnFA
+Tr6@FHUlsHXUr-F,g?EG][.4>9IX$@W$:4F<G:=@W$:!G]\1KAnH*qF<G:=@W$:!G]\4LAnH*q
+F<G:=@W$:!G][P9DKI"8F(0$/AU&<<BmO>5>p*F9G^Y`TI?IQ<EbBHR")i.#DfBf4Df0WZG[YW
+*F!,"3DKKE0@<[lR0/%?WDJX$)ARTVB<0B7iOq*X2055K:DNZuBA1r(@/n8fPFCfK5H"(o:FDl
+ %L@WuO*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/isbn 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER isbn--
% --BEGIN ENCODER ismn--
-% --REQUIRES ean13--
-% --SUGGESTS ean5 ean2--
+% --REQUIRES preamble raiseerror renlinear ean5 ean2 ean13--
% --DESC: ISMN
% --EXAM: 979-0-2600-0043
% --EXOP: includetext guardwhitespace
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /ean13 dup /uk.co.terryburton.bwipp findresource put
-begin
-/ismn {
-
- 20 dict begin
-
- /options exch def % We are given an options string
- /ismntxt exch def % We are given the ismn text with dashes
-
- /dontdraw false def
- /includetext false def % Enable/disable ISMN text
- /ismnfont /Courier def
- /ismnsize 9 def
- /ismnpos (unset) def
- /height 1 def
- /addongap 12 def
- /legacy false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /ismnfont ismnfont cvlit def
- /ismnsize ismnsize cvr def
- /height height cvr def
- /addongap addongap cvr def
- ismnpos (unset) eq {
- /ismnpos height 72 mul 3 add def
- } {
- /ismnpos ismnpos cvr def
- } ifelse
-
- % Split off the addon
- ismntxt ( ) search {
- /ismntxt exch def
- pop
- /addon exch def
- } {
- pop
- /addon () def
- } ifelse
-
- % Convert old ISMN to ISMN-13
- /legacytxt () def
- ismntxt 0 1 getinterval (M) eq ismntxt length 13 le and {
- /legacytxt ismntxt def
- /pad ismntxt length 4 add string def
- pad 0 (979-0-) putinterval
- pad 6 ismntxt 2 ismntxt length 2 sub getinterval putinterval
- /ismntxt pad def
- } if
-
- % Read the digits from ismntxt and calculate checksums
- /ismn 13 string def
- /checksum 0 def
- /i 0 def /n 0 def
- { % loop
- /ismnchar ismntxt i get 48 sub def
- ismnchar -3 ne { % Ignore dashes
- ismn n ismnchar 48 add put
- n 12 lt {
- n 2 mod 0 eq {
- /checksum ismnchar checksum add def
- } {
- /checksum ismnchar 3 mul checksum add def
- } ifelse
- } if
- /n n 1 add def
- } if
- /i i 1 add def
- i ismntxt length eq {exit} if
- } loop
- /checksum 10 checksum 10 mod sub 10 mod def
-
- % Add the ISMN header to the ismntxt
- legacy legacytxt () ne and {
- /ismntxt legacytxt def
- /pad 18 string def
- } {
- /pad 22 string def
- } ifelse
- pad 0 (ISMN ) putinterval
- pad 5 ismntxt putinterval % Add ismntxt to the pad
-
- % Add checksum digit
- pad pad length 2 sub 45 put % Put a dash
- pad pad length 1 sub checksum 48 add put % Put check digit
- /ismntxt pad def
-
- % Convert ISMN digits to EAN-13
- /barcode ismn 0 12 getinterval def
-
- % Append the addon
- addon () ne {
- 12 addon length add 1 add string
- dup 0 barcode putinterval
- dup 12 ( ) putinterval
- dup 13 addon putinterval
- /barcode exch def
- } if
-
- % Get the result of encoding with ean13
- options (dontdraw) true put
- options (addongap) addongap put
- /args barcode options //ean13 exec def
-
- % Add the ISMN text
- includetext {
- ismntxt length 18 eq {
- /ismnxpos -1 def
- } {
- /ismnxpos -12 def
- } ifelse
- args (txt) known {
- /txt args (txt) get def
- /newtxt txt length 1 add array def
- newtxt 0 txt putinterval
- newtxt newtxt length 1 sub [ismntxt ismnxpos ismnpos ismnfont ismnsize] put
- args (txt) newtxt put
- } {
- args (txt) [ [ismntxt ismnxpos ismnpos ismnfont ismnsize] ] put
- } ifelse
- } if
-
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/ismn dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp ismn 0.0 0 0 0
+%%BeginData: 42 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04eR00 f+ tP06M% _@r
+EuAATDg:@Wc^5Df .1:GA 2#8 P1l ( DOp s'Y F)> fAL_Q" 0O ps'_E- ,f4
+DKCt)Ou"b*F)>f: G]]*4 Ou" b%D f0 Z- Eaa /7A moLsAW ei &Bl7Es F_#
+'*AU&;>AmoLsAWe i&Bl e-/ FC f] =Ao DR/ OiN V@05
+5KEDKKH7FE;/BAV ^YU1 G <H `D /OH ,G] \1KA nH*qF
+H-NIDKBB2Ou"b*F )>f:AU &<B D e<U &A TWq9 F`) 83FHSF5BOt mjBQT%2Ou"b
+"A7TUrB45b8%$ED "Ch76f @sK 2 /@;L !rOu %#q FD5Z2F-<^[ F*)G:DJ+':E
++P1qH\_]c23JDeE -,f4DK C/f X(Gd VF(L LtH ]gXBP#RT(P %'TNOthst4d
+(eHEckrV4aW>DP! 5%OP! 5$bI =%,/F E2M8 Ou% NL<IL$AOrf cH05kfOBl@m
+1P!5$bI?IQJE-,f 4DKC/ f1OYE X055K EDK KH7FCoH/F< G:=D/OH,G][
+P9DKM$nOu"b*F)> f:AU&<< BmO>5B le-/F Cf] =F(or3OtVt SBle-/FCf]=
+G].2+F(KHR"a+^(ATX)PHS9)SD/OH,G]\1KAnH*qF<G:=D/OH,G]\1KAnH*qFHS;?1OYEcBle-
+/FCf]=H#I;,F(KHR"a+^(ATX)PHS9)SD/OH,G]\4LAnH*qF<G:=D/OH,G]\4LAnH*qFHS;?1OY
+Ec05+p2B4uB0BOtmjBQTCjOu"b"A7TUrB45a%@:WneDJ*BsOtVtSBle-/FEhnf!?dPbHS9)SD/
+OH?FHShN1Qll6@:WneDN[2H1OXV5FY@06A8c@G!0T-dP#X/OAS5F]H$":QNW>4uBle-/FEhn`!
+/LZ=9TB-JP!*N#D/OH?FHU*h%?b._"FDe<AS5F]H$":Q+DGn6DKL,FOu"b1@:UKpF)>f:G]]*X
+L]ikAP,4<tE+*:5!0.7D2`WHD/WtBu@:Y/uBle-/FEhn`!bl^mDKL,FP%'4KP,XU<P'J]pF)>f
+:G]Y'I@:YNWI?IP_Ble-/L^fNDOu"b$BOt[hF*2>U!0T,kBnubP1G<X%!0T-b055KEDI[?gEZf
+(;D/OH?F<G:\98G9bWKK&OF)>f)BOPq;rK;#EBle-/+Dr<9F)>f)BOPq;0TlI"G]&<GP%K&YL]
+W`SL]ET$HS8lBARfLsF_r78F)>f)BOPp(@q]F`CNFW8Oo^_%I=!VWBOt[hF*2=BBle-/@q]:kL
+]`fV@q]F`CNFW8Oo^_%I?ITYP#O)P+Duu9Oo^_%I?IP_Bcq,G!KmJH1MItGF)>f:G]]*XP!+/T
+5^eepI?J.p@q]F`CNFW8L^IX*ARfLsF_upAP%p/ZL^K;[Ou$ocB45:q+DbV%@:OS)G]\rGP&6?
+bHS9)SD/OH?F<GC2B45:qFEhnj1G<]UA;Ck]V33W_HS9>HA;D"aV33W_P#ZI0A;C5G"\DWe:*>
+^FE+*:5"_i$pDKL,FP'M"TA0>i"A<LDX!g9O=/Wt?t@:UL"@:YO1L]N[<@q]F`CNFW8LbOtmP'
+AWoF)>f:G]Y'I@:YNW04J@1@rGmh+DGn6DMS:K%$F;I1LXg)Df1R8P&5Q%$t3[WDf1_IOo^@>O
+o^`BOuS6t@UX:eDe*FBH'1.C%#t?2P'N3ML^dd'A8c@KGqWW8Eas#uAWf6?1OYEcDfBf4Df0WV
+#\7jkFC]E#GB@kJAWh:VE-,f4DKCgD@:WneDJ*Bs@:WneDJ*BsP'AWgEbBG9@UX:eDe*E%DfBf
+4Df0VL04eR00f+tWOu$fi@r-9uATVL.FF,-EF)>f:AU&<ADe<U&ATWq9F`)83FHSe6055KEDKK
+H7FEh_9AohO*+DGn6DKL,FP%'4[P!+/Js*]6MoR2m&Ou%NL<,$DjDKKH7FEqe:AohO*NWjQCF(
+KHV4aShrF)>f:AU&<BDe<U&ATT&.ASGdjFGNJNCkr1V!Ko6eP#Pk1B60(8FEhnj@!aPKG]Y':E
+bBHR"*Ad0P"Uro05b?FFEhmMFEhnj@Yb&J!KmbP1N$cJFEhn`!-EI-P'LqVGBA(O+Dtb7FEhnj
+@Yb&JWEUKZF)>f:G]Y'BF)>f:AU&<ADe<U&ATT&/F)>f:AU&<BDe<U&ATT&/F)>f:AU&</Df0Y
+>Ble-/FCf]=F(or3+C1.T@<-"%NWXBJFDbZ6FEhnjG^XpIEbBHR"*Ad0>9I,mBle-/FEhmMBle
+-/FCf]=G].2+F(KG9Ble-/FCf]=H#I;,F(KG9Ble-/FCf]=AoDR/+DGn6DKKH7FE;/BAKY8$?'
+9G\P#Zpn<+0f[F,g?@E--#;FD5Z2F-:cVEbBG9A8c@-A9)+&P&N'-Eb0-)Bl7KjEfsCb3IR&#O
+u"b*F)>fX30If*F_`U>D_?-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"
+@r#drB9KiQP'(hWFDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/ismn 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER ismn--
% --BEGIN ENCODER issn--
-% --REQUIRES ean13--
-% --SUGGESTS ean2 ean5--
+% --REQUIRES preamble raiseerror renlinear ean2 ean5 ean13--
% --DESC: ISSN
% --EXAM: 0317-8471 00 05
% --EXOP: includetext guardwhitespace
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /ean13 dup /uk.co.terryburton.bwipp findresource put
-begin
-/issn {
-
- 20 dict begin
-
- /options exch def % We are given an options string
- /issntxt exch def % We are given the issn text with dashes
-
- /dontdraw false def
- /includetext false def % Enable/disable ISSN text
- /issnfont /Courier def
- /issnsize 9 def
- /issnpos (unset) def
- /height 1 def
- /addongap 12 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /issnfont issnfont cvlit def
- /issnsize issnsize cvr def
- /height height cvr def
- /addongap addongap cvr def
- issnpos (unset) eq {
- /issnpos height 72 mul 3 add def
- } {
- /issnpos issnpos cvr def
- } ifelse
-
- % Split off the ISSN
- issntxt ( ) search {
- /issntxt exch def
- pop
- /seqvar exch def
- } if
-
- % Split off the sequence variant and 2 digit addon
- seqvar ( ) search {
- /seqvar exch def
- pop
- 2 string dup exch 0 4 -1 roll putinterval /addon exch def
- } {
- pop
- /addon () def
- } ifelse
-
- % Read the digits from issntxt and calculate checksums
- /issn 8 string def
- /checksum 0 def
- /i 0 def /n 0 def
- { % loop
- /issnchar issntxt i get 48 sub def
- issnchar -3 ne { % Ignore dashes
- issn n issnchar 48 add put
- n 7 lt {
- /checksum checksum issnchar 8 n sub mul add def
- } if
- /n n 1 add def
- } if
- /i i 1 add def
- i issntxt length eq {exit} if
- } loop
- /checksum 11 checksum 11 mod sub 11 mod def
-
- % Add the ISSN header to the issntxt
- /pad 14 string def
- pad 0 (ISSN ) putinterval
- pad 5 issntxt putinterval % Add issntxt to the pad
-
- % Add checksum digit
- pad 13 checksum 48 add dup 58 eq {pop 88} if put % Put check digit
- /issntxt pad def
-
- % Convert ISSN digits to EAN-13
- /barcode issn 0 7 getinterval def
-
- % Append the sequence variant
- /barcode 12 string def
- barcode 0 (977) putinterval
- barcode 3 issn putinterval
- barcode 10 seqvar putinterval
-
- % Append the addon
- addon () ne {
- 12 addon length add 1 add string
- dup 0 barcode putinterval
- dup 12 ( ) putinterval
- dup 13 addon putinterval
- /barcode exch def
- } if
-
- % Get the result of encoding with ean13
- options (dontdraw) true put
- options (addongap) addongap put
- /args barcode options //ean13 exec def
-
- % Add the ISSN text
- includetext {
- /issnxpos 10 def
- args (txt) known {
- /txt args (txt) get def
- /newtxt txt length 1 add array def
- newtxt 0 txt putinterval
- newtxt newtxt length 1 sub [issntxt issnxpos issnpos issnfont issnsize] put
- args (txt) newtxt put
- } {
- args (txt) [ [issntxt issnxpos issnpos issnfont issnsize] ] put
- } ifelse
- } if
-
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/issn dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp issn 0.0 0 0 0
+%%BeginData: 39 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04eR00 f+ tP06M% _@r
+EuAATDg:@Wc^5Df .1:GA 2#8 P1l ( DOp s'Y F)u 5GL_Q" 0O ps'_E- ,f4
+DKCt)Ou"b*F)u5@ G]]*4 Ou" b%D f0 Z- Eaa /7A moLsAW ei &Bl7Es F_#
+'*AU&;>AmoLsAWe i&Bl e?5 FC f] =Ao DR/ OiN V@05
+5KKDKKH7FE;/BAV ^YU1 G <H `F )H) 2G] \1KA nH*qF
+H-NIDKBB2Ou"b*F )u5@AU &<B D e<U &A TWq9 F`) 83FHSF5BOt mjBQT%2Ou"b
+"A7TUrB45b8%$ED bE-,f4 DKC u E06; 5UBl 7R* H#R>X4aVtc Ou8C3DfBf4D
+f0WCP,i2'Cia0N4 aW>WI? IQm 30Ia 6V33 Qn! BlU*FE2M8P !+/T/Wr;\Fc
+nqO1OXV5/Tc#UAW eitP# ZpnA We*t3 A5;i FD5 Z2F-8_M1OY EcDfBf4Df0W
+COu%NL8M=e!F)H) 2G][P 9DKI" 8F)u5 @AU &</Df0Z[/W qnCBle?5FCf
+]=F(or3+DGn<DKK H7FE;/B AWe^01 MLoOD KKH 7FEh_9AohO *NWjQCF(KHV
+D0mpMF)u5@AU&<ADe<U&ATT&/F)u5@AU&<ADe<U&ATX(gOu%NL<,$DpDKKH7FEqe:AohO*NWjQ
+CF(KHVD0mpMF)u5@AU&<BDe<U&ATT&/F)u5@AU&<BDe<U&ATX(gOu%NL<%horBkM+$+D>>#B4u
+CM09S+E@:WneDJ*Bs+CSekDf02rE0;l;1MLoODKL,FNWC8cNI*<mF)u5@G]]*4Ou&8D06:]EG%
+#ES5*@^MP#QL6EHYc2NWC8cNI*="AT;m%EfrVL1Qll6@:WneDN[2H1OXV5FY@06A8c@G!0T-dP
+#X/LF)u5T#a2$I1G<6OARfLsF_up7Ou"b*L]ESo05cRGOu%G<Ble?5@q]:k+DGn<DKL,F+DI!3
+LbP!kOu$fnF)GK$@<.2&P&5P[F)u4ADBNY7F)GK$@<./XOo^_jDMSO\ApZ1@BOt[hF*2=B@q]F
+`CNFW8+DGn<DI[?gEek!=P,XU\Oo^_%I?IP_DBNhQ!KmJH1OYEc052PCL]NY>Ou$epBle?5FEh
+nj@Zim$P!FGY<.0p@04S[,@r$..D28R0BOt[hF*2>U$^,7fWJCqFC6CA+E+*:5%[*ZO1N6c5L]
+EG=8Q/P_+Hh"h@:Y/tBle?5FEhnjH#R2&L^dj-ARfLsF_upgOo^_*LcU\^H]iN-=FH?3P'AWoF
+)u5@G]Y'I@:YNW04J@1@rGmh+DGn<DMS:K#EhcD1G<3GEas#uAV^bXV33WD@<,jrA7^PsNWV:#
+2j/Gq@<,jrA7^Q!Ble?5P'LMFEas#uAV^\7AT;m%Eft]VA7TUrNW>5ZH\`)=A7TUrP%'RTL]NY
+>P,4=$L]CmmEas#uAWh>%3/A!'!?dPNOuS7,@:WneDN]8u@UX:eDe*FB5*@^MP#Q@=FD5Z2F,g
+N:Df0Z-Eaa06EckrVG].PCBl@m1NX0'(A8c?u@;oXcA8c?u@;qBS04Am6F!+q#Eas#uAKYo1FD
+5Z2F"]1X@;[eUP!>*cBl7EsF_#'*AU&<D+DGn<DKKH7FEh_9AohO*NWjQCF(KHV4aShrF)u5@A
+U&<ADe<U&ATW_8Ou%NL<,$DpDKKH7FEqe:AohO*NWjQCF(KHV4aShrF)u5@AU&<BDe<U&ATT&.
+ASGdjFGNJNCkr1V!Ko6eP#Pk1B60(8FEhnj@!aPKG]Y':EbBHR"*Ad0P"Uro05b?FFEhmMFEhn
+j@Yb&J!KmbP1N$cJFEhn`!-EI-P'LqVGBA(O+Dtb7FEhnj@Yb&JWEUKZF)u5@G]Y'BF)u5@AU&
+<ADe<U&ATT&/F)u5@AU&<BDe<U&ATT&/F)u5@AU&</Df0Y>Ble?5FCf]=F(or3+C1.T@<-"%NW
+XBJFDbZ6FEhnjG^XpIEbBHR"*Ad0>9I,mBle?5FEhmMBle?5FCf]=G].2+F(KG9Ble?5FCf]=H
+#I;,F(KG9Ble?5FCf]=AoDR/+DGn<DKKH7FE;/BAKY8$?'9G\P#Zpn<+0f[F,g?@E--#;FD5Z2
+F-:cVEbBG9A8c@-A9)+&P&N'-Eb0-)Bl7KjEfsCb3IR&#Ou"b*F)u5^30If*F_`U>D_?-CEcQG
+7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP'(hWFDtYuCM@[!I?I
+P~>
+% uk.co.terryburton.bwipp/issn 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER issn--
% --BEGIN ENCODER code128--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Code 128
% --EXAM: Count01234567^FNC2!
% --EXOP: includetext parsefnc
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/code128 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Courier def
- /textsize 10 def
- /textxoffset 0 def
- /textyoffset -7 def
- /height 1 def
- /encoding (auto) def
- /raw false def
- /parse false def
- /parsefnc false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textxoffset textxoffset cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- /barlen barcode length def
-
- % Special function characters
- /sta -1 def /stb -2 def /stc -3 def
- /swa -4 def /swb -5 def /swc -6 def
- /fn1 -7 def /fn2 -8 def /fn3 -9 def
- /fn4 -10 def /sft -11 def /stp -12 def
- /lka -13 def /lkc -14 def % CC-A/B and CC-C linkage
-
- % Character maps for each state
- /charmaps [
- % A B C A B C A B C
- [ 32 32 (00) ] [ (!) (!) (01) ] [ (") (") (02) ] % 0-2
- [ (#) (#) (03) ] [ ($) ($) (04) ] [ (%) (%) (05) ] % 3-5
- [ (&) (&) (06) ] [ (') (') (07) ] [ 40 40 (08) ] % 6-8
- [ 41 41 (09) ] [ (*) (*) (10) ] [ (+) (+) (11) ] % 9-11
- [ (,) (,) (12) ] [ (-) (-) (13) ] [ (.) (.) (14) ] % 12-14
- [ (/) (/) (15) ] [ (0) (0) (16) ] [ (1) (1) (17) ] % 15-17
- [ (2) (2) (18) ] [ (3) (3) (19) ] [ (4) (4) (20) ] % 18-20
- [ (5) (5) (21) ] [ (6) (6) (22) ] [ (7) (7) (23) ] % 21-23
- [ (8) (8) (24) ] [ (9) (9) (25) ] [ (:) (:) (26) ] % 24-26
- [ (;) (;) (27) ] [ (<) (<) (28) ] [ (=) (=) (29) ] % 27-29
- [ (>) (>) (30) ] [ (?) (?) (31) ] [ (@) (@) (32) ] % 30-32
- [ (A) (A) (33) ] [ (B) (B) (34) ] [ (C) (C) (35) ] % 33-35
- [ (D) (D) (36) ] [ (E) (E) (37) ] [ (F) (F) (38) ] % 36-38
- [ (G) (G) (39) ] [ (H) (H) (40) ] [ (I) (I) (41) ] % 39-41
- [ (J) (J) (42) ] [ (K) (K) (43) ] [ (L) (L) (44) ] % 42-44
- [ (M) (M) (45) ] [ (N) (N) (46) ] [ (O) (O) (47) ] % 45-47
- [ (P) (P) (48) ] [ (Q) (Q) (49) ] [ (R) (R) (50) ] % 48-50
- [ (S) (S) (51) ] [ (T) (T) (52) ] [ (U) (U) (53) ] % 51-53
- [ (V) (V) (54) ] [ (W) (W) (55) ] [ (X) (X) (56) ] % 54-56
- [ (Y) (Y) (57) ] [ (Z) (Z) (58) ] [ ([) ([) (59) ] % 57-59
- [ 92 92 (60) ] [ (]) (]) (61) ] [ (^) (^) (62) ] % 60-62
- [ (_) (_) (63) ] [ 0 (`) (64) ] [ 1 (a) (65) ] % 63-65
- [ 2 (b) (66) ] [ 3 (c) (67) ] [ 4 (d) (68) ] % 66-68
- [ 5 (e) (69) ] [ 6 (f) (70) ] [ 7 (g) (71) ] % 69-71
- [ 8 (h) (72) ] [ 9 (i) (73) ] [ 10 (j) (74) ] % 72-74
- [ 11 (k) (75) ] [ 12 (l) (76) ] [ 13 (m) (77) ] % 75-77
- [ 14 (n) (78) ] [ 15 (o) (79) ] [ 16 (p) (80) ] % 78-80
- [ 17 (q) (81) ] [ 18 (r) (82) ] [ 19 (s) (83) ] % 81-83
- [ 20 (t) (84) ] [ 21 (u) (85) ] [ 22 (v) (86) ] % 84-86
- [ 23 (w) (87) ] [ 24 (x) (88) ] [ 25 (y) (89) ] % 87-89
- [ 26 (z) (90) ] [ 27 ({) (91) ] [ 28 (|) (92) ] % 90-92
- [ 29 (}) (93) ] [ 30 (~) (94) ] [ 31 127 (95) ] % 93-95
- [ fn3 fn3 (96) ] [ fn2 fn2 (97) ] [ sft sft (98) ] % 96-98
- [ swc swc (99) ] [ swb fn4 swb ] [ fn4 swa swa ] % 99-101
- [ fn1 fn1 fn1 ] [ sta sta sta ] [ stb stb stb ] % 102-104
- [ stc stc stc ] [ stp stp stp ] % 105-106
- ] def
-
- % Invert charmaps to give character to value maps for each state
- /charvals [ 109 dict 109 dict 109 dict ] def
- 0 1 charmaps length 1 sub {
- /i exch def
- /encs charmaps i get def
- 0 1 2 {
- /j exch def
- encs j get dup type /stringtype eq {0 get} if % convert string to ASCII if required
- charvals j get exch i put
- } for
- } for
- /seta charvals 0 get def
- /setb charvals 1 get def
- /setc charvals 2 get def
-
- % Include pseudo characters for GS1-128 Composite linkage identifiers
- seta lka seta swb get put seta lkc seta swc get put
- setb lka setb swc get put setb lkc setb swa get put
- setc lka setc swa get put setc lkc setc swb get put
-
- raw {/encoding (raw) def} if
-
- encoding (raw) eq {
- /cws barlen array def
- /i 0 def /j 0 def
- { % loop
- i barlen eq {exit} if
- /cw barcode i 1 add 3 getinterval cvi def
- cws j cw put
- /i i 4 add def
- /j j 1 add def
- } loop
- /cws cws 0 j getinterval def
- /text () def
- } if
-
- encoding (auto) eq {
-
- /fncvals <<
- (FNC1) fn1
- (FNC2) fn2
- (FNC3) fn3
- (FNC4) fn4
- (LNKA) lka
- (LNKC) lkc
- >> def
-
- % Convert input into bytes accounting for FNC and LNK characters
- /msg barlen array def
- /text barlen string def
- /i 0 def /j 0 def {
- i barlen eq {exit} if
- /char barcode i get def
- text j char put
- parsefnc char 94 eq and i barlen 4 sub lt and {
- barcode i 1 add get 94 ne {
- /char fncvals barcode i 1 add 4 getinterval get def
- text j ( ) putinterval
- /i i 4 add def
- } {
- /i i 1 add def
- } ifelse
- } if
- msg j char put
- /i i 1 add def
- /j j 1 add def
- } loop
- /msg msg 0 j getinterval def
- /msglen msg length def
- /text text 0 j getinterval def
-
- % Determine digit runlength and characters from given position
- /numsscr {
- /n 0 def /s 0 def
- /p exch def {
- p msglen ge {exit} if
- msg p get
- dup setc exch known not {pop exit} if
- fn1 eq {
- % FNC1 in odd position of run like two digits
- s 2 mod 0 eq {/s s 1 add def} {exit} ifelse
- } if
- /n n 1 add def
- /s s 1 add def
- /p p 1 add def
- } loop
- n s
- } bind def
-
- % Encoding for each alphabet
- /enca {
- seta exch get cws exch j exch put
- /j j 1 add def
- } bind def
- /encb {
- setb exch get cws exch j exch put
- /j j 1 add def
- } bind def
- /encc {
- dup type /arraytype ne {
- setc exch get
- } {
- aload pop 48 sub exch 48 sub 10 mul add
- } ifelse
- cws exch j exch put
- /j j 1 add def
- } bind def
-
- % Character exclusively in either alphabet A or B
- /anotb {dup seta exch known exch setb exch known not and} bind def
- /bnota {dup setb exch known exch seta exch known not and} bind def
-
- % Pre-compute relative position of next anotb and next bnota characters
- /nextanotb [ msg length {0} repeat 9999 ] def
- /nextbnota [ msg length {0} repeat 9999 ] def
- msg length 1 sub -1 0 {
- /i exch def
- msg i get anotb {
- nextanotb i 0 put
- } {
- nextanotb i nextanotb i 1 add get 1 add put
- } ifelse
- msg i get bnota {
- nextbnota i 0 put
- } {
- nextbnota i nextbnota i 1 add get 1 add put
- } ifelse
- } for
-
- % Does a-only come before b-only after given position and vice versa
- /abeforeb {dup nextanotb exch get exch nextbnota exch get lt} bind def
- /bbeforea {dup nextbnota exch get exch nextanotb exch get lt} bind def
-
- /cws barcode length 2 mul 3 add array def
-
- % Select start character
- /j 0 def
- msglen 0 gt {0 numsscr} {-1 -1} ifelse /nums exch def /nchars exch def
- { % common exit
- msglen 0 eq {
- stb enca
- /cset (setb) def
- exit
- } if
- msglen 2 eq nums 2 eq and {
- stc enca
- /cset (setc) def
- exit
- } if
- nums 4 ge {
- stc enca
- /cset (setc) def
- exit
- } if
- 0 abeforeb {
- sta enca
- /cset (seta) def
- exit
- } if
- stb enca
- /cset (setb) def
- exit
- } loop
-
- % Main encoding loop
- /i 0 def {
- i msglen eq {exit} if
-
- i numsscr /nums exch def /nchars exch def
-
- % Determine switches and shifts
- { % common exit
- cset (seta) eq cset (setb) eq or nums 4 ge and
- msg i get fn1 ne and {
- nums 2 mod 0 eq {
- swc cset (seta) eq {enca} {encb} ifelse
- /cset (setc) def
- exit
- } {
- msg i get cset (seta) eq {enca} {encb} ifelse
- /i i 1 add def
- swc cset (seta) eq {enca} {encb} ifelse
- /cset (setc) def
- exit
- } ifelse
- } if
- cset (setb) eq msg i get anotb and {
- i msglen 1 sub lt {
- i 1 add bbeforea {
- sft encb
- msg i get enca
- /i i 1 add def
- exit
- } if
- } if
- swa encb
- /cset (seta) def
- exit
- } if
- cset (seta) eq msg i get bnota and {
- i msglen 1 sub lt {
- i 1 add abeforeb {
- sft enca
- msg i get encb
- /i i 1 add def
- exit
- } if
- } if
- swb enca
- /cset (setb) def
- exit
- } if
- cset (setc) eq nums 2 lt and {
- i abeforeb {
- swa encc
- /cset (seta) def
- exit
- } if
- swb encc
- /cset (setb) def
- exit
- } if
-
- % No switches or latches so encode
- cset (seta) eq {
- msg i get enca
- /i i 1 add def
- exit
- } if
- cset (setb) eq {
- msg i get encb
- /i i 1 add def
- exit
- } if
- cset (setc) eq {
- msg i get fn1 eq {
- fn1 encc
- /i i 1 add def
- } {
- msg i 2 getinterval encc
- /i i 2 add def
- } ifelse
- exit
- } if
-
- exit
- } loop
-
- } loop
- /cws cws 0 j getinterval def
- } if % auto encoding
-
- % Derive checksum and place stop character
- /cws j 2 add array dup 0 cws putinterval def
- /csum cws 0 get def
- 1 1 j 1 sub {
- /i exch def
- /csum csum cws i get i mul add def
- } for
- /csum csum 103 mod def
- cws j csum put
- cws j 1 add seta stp get put
-
- % Create an array containing the character mappings
- /encs
- [ (212222) (222122) (222221) (121223) (121322) (131222) (122213)
- (122312) (132212) (221213) (221312) (231212) (112232) (122132)
- (122231) (113222) (123122) (123221) (223211) (221132) (221231)
- (213212) (223112) (312131) (311222) (321122) (321221) (312212)
- (322112) (322211) (212123) (212321) (232121) (111323) (131123)
- (131321) (112313) (132113) (132311) (211313) (231113) (231311)
- (112133) (112331) (132131) (113123) (113321) (133121) (313121)
- (211331) (231131) (213113) (213311) (213131) (311123) (311321)
- (331121) (312113) (312311) (332111) (314111) (221411) (431111)
- (111224) (111422) (121124) (121421) (141122) (141221) (112214)
- (112412) (122114) (122411) (142112) (142211) (241211) (221114)
- (413111) (241112) (134111) (111242) (121142) (121241) (114212)
- (124112) (124211) (411212) (421112) (421211) (212141) (214121)
- (412121) (111143) (111341) (131141) (114113) (114311) (411113)
- (411311) (113141) (114131) (311141) (411131) (211412) (211214)
- (211232) (2331112)
- ] def
-
- % Derive space bar succession
- /sbs cws length 6 mul 1 add string def
- 0 1 cws length 1 sub {
- /i exch def
- sbs i 6 mul encs cws i get get putinterval
- } for
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- /txt [ [text textxoffset textyoffset textfont textsize] ]
- /textxalign (center)
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/code128 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp code128 0.0 0 0 0
+%%BeginData: 113 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04Sp2A MG r"H\`B !23
+JD%DfBf4Df0WZ5* @]T@U X:e De* F B5* @]T A8c @-A9)+ &+ D,%uF( LLj
+055<6Cis9"FCf]= +D,%u F(L Lj0 6C cM FCo H/F HOV,1G <i ]G]\"@ H=_
+m>Ou"b5AU&<ADe< U&AT W_. Ou "b 5AU &<B De< U&AT
+Wb(Ou"b)ASGdjFG Ks\1 G << W@ rGm lDJ +t4@ <H[1O
+u"b3@<Wi+@;L!rO u"b1@< -F# + D,% uF (LLj 05t ??F(Js$@j# AlCia0N1N.5
+SBl@m1P-6N[FE2) 5B68E< AWf 3 'L]N YrOp u>K FD5Z2F*j(N AmoLsAWf3'P
+!FGY<0B5(@ZmRN0 oc8tP) XR( F_-_ !H]f tD5 *C&O5*@^MH ]ft&EckrV1O
+YEdI?J0)*g/N:Df Bf4Df 0WZ5 *@^MP #Q@= FD5 Z2F*j'+I?I /TFCf]=AoDR
+/+EV1>FCoH/FHS5 =1G<i ]G]\" @H=\4 @AU &<<BmO?R09 S+EFCf]=G].
+2+F(KG9FCf]=G]. 2+F(KHV 09S+EF Cf]=H #I; ,F(KG9FCf] =H#I;,F(KHV
+09S+EBOtmjBQPA1ASGdjFHS;?1N6cCF(K\OD0'>4@UX:eDe*FB@ZmRN1G<L!!0T-I@<,jrA7^+
+J!FCqKH]g@*F(^Y"C6CcDH'2WOOo^@>Oo[4NP!5$bP')pIL]E55P"_#iD0'?Q5&,lSP,XU.P'E
+-LP%'4LP,X6>P!5%&I=%,:D0'?Q5&-6EP'N4"C6ATNC6CcD1G<3GEas#uAKYi2B8?P&P"_#pP!
+FGY<IL$AI?IP_@UX:nASrW"@<,jrA7^p5Ou"b4FCC"*Ou"b4FCL(*Ou"b4FCU.*Ou"b4G@?=*O
+u"b4G@HC*Ou"b4G@QI*Ou"b'DD?tCOu"b'DDI%COu"b'DDR+COu"b'DD[1COu"b4Aork%Ou"b4
+FE!'.Ou"b-CLN%jOu"b-CL`1kOu"b$BOPpu@;p91>9I.++G_/#!\c<6+Bsj,+cZRHNWLmh>p*@
+3!@!O),)u^Y10l#,NWCAb!@*U+0JcuW>E/_0NWCDc!\cH:+Bsj,-&r!PNWLml>p*@3!@Eg--B8
+-]2I.G0NWCMf!@Nm/0K38[>DO\`.#n?_3*dY2Lae-/NWLmp>p*@3!@j*1.ZOQb0O5f*NWCYj!@
+s030elrV>E/_8NWC\k!\lH9+Bsj,/WKi`NWLpk>p*@3!A9B5/rfuf1gM5.NWCen!ABH70f<5Z>
+E/_<NWCho!\lT=+Bsj,0oc8hNWLpo>p*@3!A]Z916)Dj3*dY2NWCqr!Af`;0f`M^>E/_@NWCts
+!\uH8+Bsj,23%\pNWLsj>p*@3!B,r=2N@ho10l#,NWD)!!B6#?1,E2Y>E/_DNWD,"!\uT<+Bsj
+,3K=,#NWLsn>p*@3!BQ5A3fX7s2I.G0NWD5%!BZ;C1,iJ]>E/_HNWD8&!\u`@+Bsj,4cTP+NWL
+sr>p*@3!BuME5)o\#0O5f*NWDA)!C)SG1GN/X>E/_LNWDD*!])T;+Bsj,6&kt3NWM!m>p*@3!C
+DeI6B2+'1gM5.NWDM-!CMkK1GrG\>E/_PNWDP.!])`?+Bsj,7?.C;NWM!q>p*@3!Ci(M7ZIO+3
+*dY2NWDY1!Cr.O1HA_`>E/_TNWD\2!]2T:+Bsj,8WEgCNWM$l>p*@3!D8@Q8r`s010l#,NWDe5
+!DAFS1c&D[>E/_XNWDh6!]2`>+Bsj,9o]6KNWM$p>p*@3!D\XU:6#B42I.G0NWDq9!De^W1cJ\
+_>E/_\NWDt:!]2lB+Bsj,;2tZSNWM$t>p*@3!E+pY;N:f90O5f*NWE(=!E5![2)/AZ>E/_`NWE
++>!];`=+Bsj,<K7)[NWM'o>p*@3!EP3]<fR5=1gM5.NWE4A!EY9_2)SY^>E/_dNWE7B!];lA+B
+sj,=cNMcNWM's>p*@3!EtKa>)iYA3*dY2NWE@E!F(Qc2*"qb>DQO?>`JkD0O5f*NWEFG!F:]e2
+DJJ[>E/_jNWEIH!]Df>+Bsj,?]G.oNWM*p>p*@-!0.(fNWM*q>p*@-!KI1hNWM*r>p*@-!fd:j
+NWM*s>p*@-"-*ClNWM*t>p*@-"HELnNWM*u>p*@-"c`UpNWM+!>p*@-#*&^rNWM-n>p*@-#EAg
+tNWM-o>p*@-#`\q!NWM-p>p*@-$'#%#NWM-q>p*@-$B>.%NWM-r>p*@-$]Y7'NWM-s>p*@-%#t
+@)NWM-t>p*@-%?:I+NWM-u>p*@-%ZUR-NWM.!>p*@-%up[/NWM.">p*@-&<6d1NWM0o>p*@-&W
+Qm3NWM0p>p*@-&rm!5NWM0q>p*@-'93*7NWM0r>p*@-'TN39NWM0s>p*@-'oi<;NWM0t>p*@-(
+6/E=NWM0u>p*@-(QJN?NWM1!>p*@-(leWANWM1">p*@-)3+`CNWM1#>p*@-)NFiENWM3p>p*@-
+)iarGNWM3q>p*@-*0(&INWM3r>p*@-*KC/KNWM3s>p*@-*f^8MNWM3t>p*@-+,GE,!]`,D+Bot
+#DDNDIDDR:S3At.c>9INq1*C1H16)Dr2dIP1+EM.:+EM.:NWM4#>p*>oF*D+:F*D,S!]`8H+Bo
+t0G@D\,DDWJWG@D\#+Bot#DDWJWG@;V8G@;V"+Bot#DD<8GDD<8GDD<8>+Bot0FC?;5FC?;5FC
+?:t+Bot0FCHA6FCHA6FCH@u+Bot0FCQG7FCQG7FCQG!+Bot0FDr@DFDr@DFDr@.+C1-d04S[(E
+ctl-F!+\CD3?c4D3?c4D3?b^Ou%moL]M"!@<-3nE-%1OL]N[<HS9)r5*@]TASu"!+Cf(nEc#6(
+F!,1[99M)e!/LZ3!dcS8P!5$bASu"!+DR'4OuSW.06;5UBl7R*H#R>X4aVtbP"U4d<+BTMEctl
+-F!,4\99MJQP'DD<8:?Xl06:]H@3B&n@<-O"CibC4P"Uro06:]H@N]/o@<-O"CibC5P"Uro06:
+]H@j#8p@<-O"CibC6P"UroF(KH%+Dbh%+EM+9@3BW8@ZjBIG]RG<@3BB%@j#i(FC?;5G@Qe/P'
+D%ZFCHA/CLJ?,ATVB(F*D,W99OO@ATVB(ChmN'F(KH&+EMa8P"Us_F(KH'+Dbh%+EM+9@j#i:@
+?O9HG]RG<@j#T'@j#i(FCQG7G@H_.P'D"UGC(uSDI[TqBl7RD"*.goOu%NL<+TrWDe*R"B9!(7
+@<[ktHS8lQF!+q#Ebo<)OpR:-0564BOu"b+L]ESoHYFU3@<-0qDN[/0P!FGY<%ha*+C\c"@rGm
+h+DHW4Oo^@@P"_#iOu$TlF!,3?@s=)\052PCL]ikAOu"b++DQ]5Oo^_%I?J.p@s;u:@s<!M!,@
+ZjOu"b5AU&<W!0T-dP#Q"1@rGmlDJ+t4@<H[1P!+.FAo;+%@;L!-4?SW,7SZ<*Ao9>`"@c-R11
+kDZNW_gH6Si=l1QDT-:.$jMDD[@V9MS5HChmI>"ADQ`6YpOJ+?huP1G<TdB-:YlEbo<)OpR:-0
+6CcMF<G%$Ebo<)P,4<t0564BOu"b+L]ESoHYFU3@<-0qDN[/0P!FGY<%h`p@<*K"@<,jrA7Zlt
+P"UroFCf]=+DN$/BOPqEG]7)3F(Js$@j#8p@<.01P!+s2BcpknEbo<)L]im?P%Kj[HX^E(@rGm
+h+DHW4Oo^_=LgH6]HS8lB@<*K&DI[iuCi^_.@<,jrA7ZltL]NY>L]il7P"UroFCf]=+DQo;+Hh
+"'Bcq,G"HieK1OXU'Bcq,G!KmJH1OYEdI?IQHF(ZV1+Cf(nEftZ#Bcq,G!KmJH1G<JcC5;nR!K
+o6eP%?:`F(ZV4F(^:/C6D8R1G<TdB5D-s+Dl14P%'S106CcMF<G[:G]\`AC6D8R1G<WgD0'c.E
+dKHWL]ESo06;pLOu"b1P!5$bHZ1*EF(]<#DN[V=P!FGY<,H\h+E3K:OuRMoFCUItP$jGlH]iN7
+5^eepAo9>d4aV7+!g7;S!0TKl0687WL]NY>Ou%N5P!FGY<IL$005_nML]NY>Ou"b4+EN>>Oo^_
+ %05r%QL]NY>Ou%NLASrW3I?G)'1G<<W@ps^,F(KH%P!5%%@s<!W5&-6EP'AWp+DQ]5Oo^_%I?
+G)'1G<<W@q'd-F(KH&P!5%%@s<!W5&-6EP'AWp+DQ]5Oo^_%I?G)'1G<<W@q0kK30LHu@<-BsH
+$"=NAWgnWF(KH'P!5%%I=%+YP')R7P,XU.LbP!kL^K;]Oo]uo<F^5oP!3WD5*C.DC*78I!KmJH
+1OYDrOu"b"DJsW+H]g@0ATV@D5*B<:5'(:W@Zip<@$5Jl"FZFCOu"b#DJsW*H]g@0ATVCE5*B<
+:5'(:W@?Ng;@$5Jl"FZFCOu"b/AU&<*DJsW++Bot*F(^YFH\_ZMP(SK:%pb>S05b?GFCK-+FC?
+:r+Dl14P%&co!.C#_L*mL;Ou$rrB9H_[!KsF<s+gZ%056S5Ou$rrB-:oO94;^VFCKS>DIn'7@;
+^"*@N]B@!0VSTHZ!D>FCB'*FCHA,+Dtb8FCB'*FCHA,L]NY>P"UT3Oo^_jI?ITIF(ZV0P"T8%D
+ffE7+Dtb8FCK-+FC?;+L]ET_I=#jCG][D4DffD1Bcq;)G][D4DffD1BnueQ!Kp*3!KmJHG^Y`T
+I?I,S@:Ee[DfTDuH]g@+AU&<*DJsW+P!5%%P!3bpG][D4DffEN5*AR%ApogPOu"b#@V'.iEb/[
++OuR>jG][D4DffEN5*AR%5&OqVFCB'*FCLCsP"UsMI?G)'1G<6^F!+q#Eas#uAWgMY!g7AU"-N
+\J$'I(tC5;kQ1Mq2GCh7L?!0U0*L]D=8D0'c.Ed`:js+p]'P#X/QF_u2_5*@]TDI[?gEc[C-Ou
+ %H%F(]<#DMS:U4aV6l@N]6"@pq$#F(KHR"ES-r@ZiO15^eepD0'?+AT!;*P!*]*D0(L7P!+s2
+HZO:=+D#G#@4u,3ATWq8F(KH'Ou&7dI?IQIF_u2U"HlB(F*(n7ASu!d04T'7FH-KFATVFF1Qk"
+OP#R5;@:Ee[DfTDuHQ[BO@3B-!@pq$#F(KHR"ES-r@?NF05^eepF*(k6ASu!d04T'7FH-KFATV
+CE1Qk"OP%?:\L]ESoHYFU>F(]<#DN[/0P!FGY<,!ImF_u2@@ra5?F_u2_5*@]TDI[?gEc[C-Ou
+ %GpF(KHR"ES-r@?Nc`F(KHR"ES-r@Zim;Ec-#:F,0s^8s0<oF(ZV0P"TD)0p6C:"FG$/D0(L7
+P%odQP!+/5G@Mb*F(KHR"ES-r@?Nd#ASu!dI=!)JDI[.(P#X/FF(KHR"ES-rA!/X25^durF(ZV
+0P"T;+ATWq8F(KH%P!+/'DI[+'HQZm;@q'kL<A/&/BnueQ!Ko6[G@Mb*F(KHR"ES-r@?Nd#ASu
+!dI=!)JDI[.(P#X/FF(KHR"ES-rA!/X25^eeqI?IQ>F(KHR"ES-r@ZilkF(ZV0P"T5$DffHO"F
+Fi*D0'?+AT!;)P,XUVHYJ9:Oo]$$AS,k$ARTp.F(TM:ASu!e+Dl14+DI!3ASu!d052PCL]NY>O
+u&7dI?IQXP#QLH@3B-!@q%*$F(KHR"ES-r@?NF05^eep@rl4'NWaE7FCC=qD0'>4Bp)+uDJsW*
+Op$,G+Dl14Ch7L?!KsFFAp\6J!KmIl@V'.iEb/^,+EM.:+D#G#@3BE.B-:oO94`!N@P;F<Bnue
+Q!Ko7%5^eepI?IQNG@D\+DI[*.@rl4'NWaE7FCLChP!FGY<+Bu\FH-KFATVFF4`5CZF,0m\As*
+:DBcphnAS,k$AR^!/F*D%8ASu!f04T'7FH-KFATV@D1Qk"OP#QLH@N]6"@q.0%F(KHR"ES-r@Z
+iO15^eep@rl4'NWaE7FCC=qHYmh:+DI!3ASu!d052PCL]NY>Ou&7dI?IQ>F(KHR"ES-r@Zim$D
+0'>4Bp),#DI[-/Bcq,G!KmJH1Qk"OP#Pq4ATWq8F(KH'P!+//F(ZV0P"TD)0p4\HAo9=GASu!f
+052PCL]NY>Ou%N5D0'>4BnuhR9P&*O@kVO=BnuhR!Ko6eP#[Z1I?IQm5^ef,I?J.p@s;u:@s<!
+M!,@ZjOu%NL<%ha*F!,4R!g3SI$'I9(!+U4oP'N3H04T'GD'3>4F,0gZ99M)e!JgbkL]N[<HS9
+)r5*@]T@rld0+CfJ8D'3>4F!,1[950Q*Oo^_%I?I,S@rld0+CfJ8D2;hfC6CA_GB4mA+CfJ8D3
+B-RGB4mAL]NY>F(KH%+EMXDP"Us_04f$2F!+\I"u7ng1,:VF"u7qh0etME"u7qh1,:SE"u.kf1
+,:YG"u.kf1GU_G"u.ng1,:VF"u.kg1,1SF"u.kg1GLYF"u.nh1,1PE"u7qg1,1SF"u7qg1GLYF
+"u7th1,1PE"u.hf1,C\G"u.kg0f(SF"u.kg1,CYF"u.hg1,:VF"u.kh0etME"u.kh1,:SE"u7q
+i1,1MD"u7qg0f(SF"u7qg1,CYF"u7nh1,1PE"u7qi0ekGD"u@th0f(PE"u@tg1,:VF"uA"h0et
+ME"uA"h1,:SE"u@th1,1PE"uA"i0ekGD"uA"i1,1MD"u7ng0etPF"u7ng1GU\F"u7ti0etJD"u
+.he1GUbH"u.ng0etPF"u.ng1GU\F"u.hf1GL\G"u.nh0ekJE"u.nh1GLVE"u7nf1GL\G"u7th0
+ekJE"u7th1GLVE"u.hf0f(VG"u.hf1G^bG"u.nh0f(PE"u.hg0etPF"u.hg1GU\F"u.ni0etJD
+"u@ti0etJD"u7nf1G^bG"u7th0f(PE"u7nh0ekJE"u7nh1GLVE"u7nh0f(PE"u@tg0etPF"u@t
+g1GU\F"uA%i0etJD"u@th0ekJE"u@th1GLVE"uA%j0ekDC"u@tj0ekDC"u7qg1bg_F"uJ+j0ek
+DC"u.he1,:\H"u.he1bphH"u.kf0etSG"u.kf1bpeG"u.qh0etME"u.qh1,:SE"u.hf1,1VG"u
+.hf1bgbG"u.kg0ekMF"u.kg1bg_F"u.qi0ekGD"u.qi1,1MD"u8"i1,1MD"u7qg0ekMF"uJ%j0
+ekDC"u8"i0ekGD"u.nj0ekDC"u.he1,LbH"u.kf0f1YG"u.kf1,L_G"u.hh1,1PE"u.ki0ekGD
+"u.ki1,1MD"uJ%h1,1PE"uJ(i0ekGD"uJ(i1,1MD"u7ng0f1VF"u7ni0etJD"uJ%i0etJD"u.h
+e0f1\H"u.he1GghH"u.ng0f1VF"u.hh0ekJE"u.hh1GLVE"uJ%h0ekJE"uJ%h1GLVE"u.hg0f1
+VF"u.hh0f(PE"u@tg0f1VF"uJ%h0f(PE"u7nf1bgbG"u7nf1,1VG"u7nf1,C\G#;S(k0ekC<?'
+6usF(025@s<!W@Yb5OCkr+T!Ks:B1Pc$e!Fp=pP%'4JP,Wd]Bp(ZC1NR#H+DHW9P&+]I@ric&G
+B4m@P"Us2P'MJ=83B!fEb0,A061WACh[cu@<+#B@WNYr+EM"5H\aA=WI9q$>q]Z#F!+[0F(03R
+@Yb&J!Jgf?;L<(gBkM+$I?K4g04JC3+Bot0@WR]AL]NY>L]W`;H\_ZMP(R$nFEhmM>9I,mFCf]
+=+EV1>FEh_9AohO*+EV1>FEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)+C-XBAU&<A@;KXjDN4
+p2ASuU$E\D?MF<GL@FD5Z2F!*Y1+CoD.FC]E#GEQnu061WACh[cu@<.N1Ou[rR%[&V$@rGmh0e
+t_O30If*F_`U>D_?-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB
+9KiQP'(hWFDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/code128 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER code128--
% --BEGIN ENCODER gs1-128--
-% --REQUIRES code128--
+% --REQUIRES preamble raiseerror renlinear code128--
% --DESC: GS1-128
% --EXAM: (01)95012345678903(3103)000123
% --EXOP: includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /code128 dup /uk.co.terryburton.bwipp findresource put
-begin
-/gs1-128 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Courier def
- /textsize 10 def
- /textxoffset 0 def
- /textyoffset -7 def
- /height 0.5 def
- /linkagea false def
- /linkagec false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textxoffset textxoffset cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- /text barcode def
-
- % Expand ordinals of the form ^NNN to ASCII
- /expand {
- /in exch def
- /out in length string def
- /j 0 def
- in
- { % loop
- (^) search {
- dup out exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi out exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup out exch j exch putinterval
- length j add /j exch def
- out 0 j getinterval exit
- } ifelse
- } loop
- } bind def
-
- % Parse out AIs
- /ais [] def
- /aival 2 dict def
- barcode dup length 1 sub 1 exch getinterval
- { % loop
- dup () eq {exit} if
- (\)) search pop
- exch pop
- exch (\() search {
- exch pop exch 3 1 roll
- } {
- () 3 1 roll
- } ifelse
- [ ais aload pop counttomark 2 add index ] /ais exch def
- aival 3 1 roll expand put
- } loop
- pop
-
- % Pre-defined fixed length data field AIs
- % any AI whose prefix is not included in this table must be
- % terminated with "FNC1", even if it's fixed length
- /aifixed 23 dict def
- [
- 0 1 4 {} for
- ] {
- (00) 2 string copy dup dup 1 5 -1 roll 48 add put aifixed 3 1 roll put
- } forall
- [
- 11 1 20 {} for
- 23
- 31 1 36 {} for
- 41
- ] {
- 10 2 string cvrs dup aifixed 3 1 roll put
- } forall
-
- % Create the code128 data
- /fnc1 -1 def
- /c128 [ fnc1 ] def
- 0 1 ais length 1 sub {
- /i exch def
- /ai ais i get def
- /val aival ai get def
- c128 length ai length add val length add array
- dup 0 c128 putinterval
- dup c128 length ai [ exch {} forall ] putinterval
- dup c128 length ai length add val [ exch {} forall ] putinterval
- /c128 exch def
- i ais length 1 sub ne aifixed ai 0 2 getinterval known not and { % Append FNC1
- c128 length 1 add array
- dup 0 c128 putinterval
- dup c128 length fnc1 put
- /c128 exch def
- } if
- } for
-
- % Compose input to code128
- /barcode c128 length 1 add 5 mul string def
- /i 0 def /j 0 def {
- i c128 length eq {exit} if
- c128 i get dup fnc1 eq {
- pop barcode j (^FNC1) putinterval
- /j j 4 add def
- } {
- barcode exch j exch put
- } ifelse
- /i i 1 add def
- /j j 1 add def
- } loop
- linkagea linkagec or {
- barcode j linkagea {(^LNKA)} {(^LNKC)} ifelse putinterval
- /j j 5 add def
- } if
- /barcode barcode 0 j getinterval def
-
- % Get the result of encoding with code128
- options (height) height put
- options (dontdraw) true put
- options (parsefnc) true put
- /args barcode options //code128 exec def
-
- args (txt) [ [text textxoffset textyoffset textfont textsize] ] put
- args (textxalign) (center) put
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/gs1-128 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp gs1-128 0.0 0 0 0
+%%BeginData: 39 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04Sp2A MG r"OuP+ ;CG
+'+8/p(ZFEd;,:Ec c5;/n 0$= E,^ u oP' E-! 05# >\/MT" ?H \`B!23 JD%
+DfBf4Df0WZ5*@]T @UX:e De* FB5 *@ ]T A8c @-A 9)+&+D ,% uF(LLj 055
+<6Cis9"FCf]=+D, %uF( LLj 06 Cc MFC oH/ FHO V,1G
+<i]G]\"@H=_m>Ou "b5A U &< AD e<U &AT W_.O u"b5A
+U&<BDe<U&ATWb(O u"b)AS Gdj F G`9 _! !&0< 05P ??CLLje@3B /jCia0N1G<Q
+YDJNZnARcip@;L! rOu%#q FD5 Z 2F-< ^[F* )G: DJ+':E+P1q H\_]c23JDeE
+-,f4DKC/fX(GdVF (LLtH] gXB P#RT (P%' TNO thst4d(eHE ckrV4aW>DP!
+5%OP!5$bI=%,/FE 2M8Ou %NL< IL$AO rfcH 05k fOBl@m1P!5 $bI?IQJE-,f
+4DKC/f1OYEX06Cc MFCoH /F<G[ :G][P 9DK M$nOu"b5AU &<<BmO>5FCf
+]=F(or3OtVtS06C cMFEh_9 AohO*+ EV1>F Eh_ 9AohO*OtVt S06CcMFEqe:
+AohO*+EV1>FEqe:AohO*OtVtS05+p2B4uB0BOtmjBQTCjOu"b5AU&;>@UX:eDe*FB1G<<aE+*W
+pHS9)NP!5$b05kuT+DG_V@ZmRN1G<L!!0T-PDL7BE?BU:pOuRB&FHSh&P!5%SP%&0h!Jgc>!AA
+2N5*@^bFcn_?!/L`?9TgrFF``d1C5;nRWKKH.G`k%L@Yb,LWJCY>5*ATfH]g@,F``d1C6CcDH'
+2WOOo[4NP!5$bDfp/X!,@ZjP!FGY<IL$AI?G)'1G<0NF!+[0?'6us@;0mnCkr.U23Kb)@<,jrA
+7^o`P%'4JP,X6<P!5%&H]g@K!0TKlP!FGY</pu.P)YWIP!5%OP!4m,.$BR:P!5%OP!4[(L]NZo
+I=$tSL]`G6P)"IK<EgSSBlfF=P')p,L]W_?P#u!C@;0eG5*@^1Bm*p$L]`G6P)!UnE+*WpP'DD
+<AWh0h@;0=fG\(EA(QpY=1L#Y8L]N;7H[V&J?$hS50JJ:aP,4<ZOuSUaL]N;8M#WWnLbOtmP'C
+DLAncL$A;C>D!Kr5$G^Y`H>DNZC!JhG:I?I-W(Pj/h!Ji"JI?I-W.:%:V$A\bHV33Nq3+6N5Bm
+=3"L]`G6P)#3FI?I/TAo;*5M#WVo04Q^l3$;EJAo;*5+C1-dL]E53@;0eG@Yb&JWI$:4P!5$b0
+4AQ;@;0d*Bp),P1G<o[C`m/#G%#20@;1ltOu$T&1,tG+@;1m6Oo]`7Cm&7j!KmbP3/@QE0et_O
+H'1-s0et_O@UWsn>EV0sI?I0-P'N3M@kf_uP%%j6P%'RTG%#20>EV0sI?I0-P'J]j0et_O5*@^
+9+CSu*P%'4JP,XU]@;0=fG\(D.@;1MtL]W`5P$jGlOp$,A0et_O@Yb&J!KmbP3/@QE0et_OH'1
+-s0et_O@V0Lf0p6c7@kf_uP!5$bI?IQXP"768@<,jrA7Zln0et_O@Yb&J!JgoBCm(WX1G<Hu!0
+T,kC5;kQ1OEgY@kf_uP%'S;H]gXBP#PpG1,pCjP"UrtAo;*5P!+/TF^ed"@rGmh+DQo??:I[W0
+p6f8C*78I"HieK1OXUZ@<,jrA7^ofC6CcDG^Y`T052PCL]NY>Ou"b++DQ]5Oo^_%I?J/XBl7]p
+B4YKoCh[d&@:s.]P&bnY@<,jrA7Zlu+Dbb0CLLje@=+"<?;+*e6%+*?"^Xkt91+,j<K_V\C*78
+I"d/nL1OYEc04J@1@rGmh+C\c"@rGmhL]D1Q9Th2ME-,f4DKCgBBOtmjBQRp!BkM+$P'CnaFD5
+Z2F,gN:Df0Z-Eaa06EckrVG].PCBl@m1NX0T4EcYf(DI[d/F_-_\04Am6F!+q#Eas#uAKYo1FD
+5Z2F"]1VDe*E61,tF]Ou$NeB60(8FEhn3+Bot1AU&;>FCf]=G].2+F(KG9FCf]=H#I;,F(KG9F
+Cf]=AoDR/+EV1>FE;/BAKY8$?'9G@EbBHR$?Tj(FEh51BkM=D#%M4^FCfKUG[YW*F,g?@E--#;
+FD5Z2F-:cVEbBG9A8c@-A9)+&P&N'-Eb0-)Bl7KjEfsCb3IR&#Ou"b(F"o7$1,tFVP%64gCG'+
+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM@[!P.H"'F`V,9E+*
+6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/gs1-128 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER gs1-128--
% --BEGIN ENCODER ean14--
-% --REQUIRES code128--
+% --REQUIRES preamble raiseerror renlinear code128--
% --DESC: GS1-14
% --EXAM: (01)04601234567893
% --EXOP: includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /code128 dup /uk.co.terryburton.bwipp findresource put
-begin
-/ean14 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Courier def
- /textsize 10 def
- /textxoffset 0 def
- /textyoffset -7 def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textxoffset textxoffset cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Calculate EAN checksum and add to end of barcode
- barcode length dup 17 eq exch 18 eq or
- barcode 0 4 getinterval (\(01\)) eq and {
- /checksum 0 def
- 0 1 12 {
- /i exch def
- /checksum checksum barcode i 4 add get 48 sub i 2 mod 0 eq {3 mul} if add def
- } for
- /checksum 10 checksum 10 mod sub 10 mod def
- 18 string
- dup 0 barcode 0 17 getinterval putinterval
- dup 17 checksum 48 add put
- /barcode exch def
- /gtin barcode 4 14 getinterval def
- } if
-
- % Compose input to code128
- /text barcode def
- /barcode 21 string def
- barcode 0 (^FNC101) putinterval
- barcode 7 gtin putinterval
-
- % Get the result of encoding with code128
- options (dontdraw) true put
- options (parsefnc) true put
- /args barcode options //code128 exec def
-
- args (txt) [ [text textxoffset textyoffset textfont textsize] ] put
- args (textxalign) (center) put
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/ean14 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp ean14 0.0 0 0 0
+%%BeginData: 33 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04Sp2A MG r"OuP+ ;CG
+'+8/p(ZFEd;,:Ec c5;/n 0$= E,^ u oP' E-! 04e R00f46 5' Tt>:%5 2X=
+FD5Z2F-8_M1G<3G Eas#u AWf 6?1 G< 9W DKK E0@ <Wi+@; L! rOu"b* DI[
+L*A7]joG]Y'?@;L !rOu "b5 AU &< /Df 0ZZ a-& 53FC
+f]=F(or3L^K;$06 CcMF E h_ 9A ohO *L] ESo0 6CcMF
+Eqe:AohO*M#!2i0 5+p2B4 uCC ! Ko6 WE -,f4 DKC uE06;5UBl7 R*H#R>X4aVt
+cOu8C3DfBf4Df0W CP,i2' Cia 0 N4aW >WI? IQm 30Ia6V33Qn !BlU*FE2M8P
+!+/T/Wr;\FcnqO1 OXV5/T c#U AWei tP#Z pnA We*t3A5;iF D5Z2F-8_M1O
+YEcDfBf4Df0WCOu %NL8M >0sG ][P9D KI"C AU& </Df0Z[/Wq nCFCf]=F(or
+3+EV1>FE;/BAWe^ 01G<i ]G]\1 KAnH* qF< G[:G]\1KAn H*qFHS;?1G<
+i]G]\4LAnH*qF<G [:G]\4L AnH*qF HS;?1 G<E QBkM+$+D>> #B4uCM09S,#
+@<,jrA7^PsL]il7NW^aa0e&9&HS8iPBlJ#DARTI21h'm(5tR(l7oM,o0f1"iF`VXI@V'1dDBO.
+;FD)dF0JP"!@;p1%Bk(RnBl@l3Bk1dmFD5?$ATBFWEa`['AS#n&DfV"*I?IQ=@<,jrA7^p5L_5
+ee@UX:eDe*FB@YbY[D3>$K04K->E,[F@@;[eV@UWe@ASu.&BT=-(;_]jY1a$XXF*&O6AKW]`+E
+)9C0f1"`BkM.%F"]1e@;0doATDg0EfrY8P#Pn!Eas#uAV^Iu@<,jrA7^p5L]im?P"^4c3/B8OA
+s,?63Kd4%EdKHKGA2#8/nJI/0f3?JA4($=Ea`I"ATEeQ7oM,o0f1"iF`VXI@rH7,@;0U%Df0B:
++Co2!BlnDL061K8F(Jp'Ec5u]5CJ\oI?I/T@q]F`CNFW8L]ESoL]E53L^\V`Bp(ZC1G<6OARfL
+sF_r72BOt[hF*2=B@UX:eDe*E%BnunT!Kp*30TrDLL]W`SL]ET$H\_ceCjhIGOo^_%I?I,S@q]
+F`CNFW8L^IX*ARfLsF_upAP%p/ZL^K;[Ou$QUEas#uAWgMY&s>D)@UX:eDe*F8&X#dsBOt[hF*
+2>U0TlI"D0mpFGA2#8/nJI/0f3?JA4($A@r"JHB5)IJ,tVuaDfTl0@rrh`;_]jY1a$:AARfKuA
+8,[jF<GOCDg#i*ARmGIEa`['AS#n&DfV"*I?IQXP#R5MP,4=$L]CmmEas#uAWh>%3/A/VBOt[h
+F*2>U0TlI"GV<N7Eas#uAWf6?1G<B_Bl5&&@<,jrA7^Q"L^oSAOu"b5AU&;>@UX:eDe*FB1G<3
+GEas#uAV_(aV33WD@<,jrA7^PsNX&l[:.$`i0p6fk@<,jrA7^Q%B67j*P'LtbFD5Z2F,gN:Df0
+Z-Eaa06EckrVG].PCBl@m1NX0T4EcYf(DI[d/F_-_\04Am6F!+q#Eas#uAKYo1FD5Z2F"]1VDe
+*E61,tF]Ou$NeB60(8FEhn3+Bot1AU&;>FCf]=G].2+F(KG9FCf]=H#I;,F(KG9FCf]=AoDR/+
+EV1>FE;/BAKY8$?'9G@EbBHR$?Tj(FEh51BkM=D#%M4^FCfKUG[YW*F,g?@E--#;FD5Z2F-:cV
+EbBG9A8c@-A9)+&P&N'-Eb0-)Bl7KjEfsCb3IR&#Ou"b&@;[eVOuSV806M%_@rEuAATDg:@Wc^
+5Df.1:GA2#8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,-DH]iMmATVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/ean14 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER ean14--
% --BEGIN ENCODER sscc18--
-% --REQUIRES code128--
+% --REQUIRES preamble raiseerror renlinear code128--
% --DESC: SSCC-18
% --EXAM: (00)006141411234567890
% --EXOP: includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /code128 dup /uk.co.terryburton.bwipp findresource put
-begin
-/sscc18 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Courier def
- /textsize 10 def
- /textxoffset 0 def
- /textyoffset -7 def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textxoffset textxoffset cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Calculate EAN checksum and add to end of barcode
- barcode length dup 21 eq exch 22 eq or
- barcode 0 4 getinterval (\(00\)) eq and {
- /checksum 0 def
- 0 1 16 {
- /i exch def
- /checksum checksum barcode i 4 add get 48 sub i 2 mod 0 eq {3 mul} if add def
- } for
- /checksum 10 checksum 10 mod sub 10 mod def
- 22 string
- dup 0 barcode 0 21 getinterval putinterval
- dup 21 checksum 48 add put
- /barcode exch def
- /sscc barcode 4 18 getinterval def
- } if
-
- % Compose input to code128
- /text barcode def
- /barcode 25 string def
- barcode 0 (^FNC100) putinterval
- barcode 7 sscc putinterval
-
- % Get the result of encoding with code128
- options (dontdraw) true put
- options (parsefnc) true put
- /args barcode options //code128 exec def
-
- args (txt) [ [text textxoffset textyoffset textfont textsize] ] put
- args (textxalign) (center) put
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/sscc18 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp sscc18 0.0 0 0 0
+%%BeginData: 34 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04Sp2A MG r"OuP+ ;CG
+'+8/p(ZFEd;,:Ec c5;/n 0$= E,^ u oP' E-! 06; 2E@kfr iL _Q"0Op s'_
+E-,f4DKCt)Ou"b# @<,jr A7^ ofO u" b% Df0 Z-E aa/7Am oL sAWei& Bl7
+EsF_#'*AU&;>Amo LsAW ei& FC f] =Ao DR/ OiN V@06
+CcMFE;/BAV^\V1G <i]G ] \1 KA nH* qFG Kp[1 G<i]G
+]\4LAnH*qFGTaU1 G<EQBk M+$ L ]NY pD fBf4 Df0 WZY:js=EbT E(FEqh:P!+/
+J!Ko='%<$3-Bl@m 1H]kFA @;L ! rP!+ /T5^ eep OuSV6P,4<r NWD;+NHB2`A
+Wf3'OtDh\P')pOO u%N5Ot Ccr F_-^ lI?I TYP %BdtOuY16E -,f4DKCt)Ou
+ %NL<,Z_tBl@m1H ]g15P "@<K AU&</ Df0Y >FC f]=AoDR/Ot DhQ06CcMFE;
+/BAKZ)+G]\"@H=` 6mOu" b5AU& <ADe< U&A TT&:AU&<AD e<U&ATX(gOu
+"b5AU&<BDe<U&AT T&:AU&< BDe<U& ATX(g Ou" b)ASGdjF<G 7.BkM+$OtVt
+S@UX:eDe*F8!/Lc@9TB6(0JFr=D0mpFGA2#8/ou)D@kfrP@:VYqN\aU46UNF[3$<'\F*&O6AS5
+^p+EqOABHS]W0I\,QE,]W-@psInDf-\3A7]Y#BkD'jE\B(d@;0doATDg0EfrY8P#Pn!Eas#uAW
+gMY'p<EC@<,jrA7^p5L_c.jOp$+b@WuO*E%Z3Q@q.5Q@UWe@ASu.&BT=05;aWo(0fU:mF`VXI@
+V$Z:2^!$Z+>GhuA8,[jFE9)gEa`['AS#n&DfV"*I?IQ=@<,jrA7^Q"@UX:eDe*FB@Yb/MWKKr%
+OuS7OP%Kk@LcLVpP&bn&@WuO*E%Z3Q@q.5Q@UWe7BOPpi@ru:&NZ_8!6UNF[3$<'\F*&O7Df0Z
+*Bl5&3DJXS@A8,[jFE9)gEa`['AS#n&DfV"*I?IQXP"@<:BOt[hF*2>U!0T-o!/LZ3&:6'EP!5
+$b04S[,@r$..D'3>%ARfLsF_r71@<,jrA7ZltL]ikAP"UTbP,W/O!g7;S!0TKlL]`fVI?IQm!K
+o6eP"769BOt[hF*2>U$=da\@r$..D28O^C6GQP$Bf.e1Lad5@rGmhP%'4_P!+/$@<,jrA7^Q3P
+"T:uARfLsF_upgOo^__HS8iPBlJ#DF)ti$0fWWNA4($A@r"JHB5)IJ-:r)bDfTl0@rrhl;aWo(
+0fU:cBOt[h+Co2!BlkJ:Ec6,8A7]:)061K8F(Jp'Ec5u]5CJ\oI?IQc(6YMW3/@QD@<,jrA7^p
+LOuS74@q]F`CNFW8LbOtmP'AWh@<,jrA7^ofOu"b4F(8]&@UX:eDe*F8"Gd\R9Th1bFCf]=+C\
+c"@rGmhOu"b#@<,jrA7^Q7P,4<t@UX:eDe*F8!0.:j7SZ<*0JJZ8@UX:eDe*F8#BOrrA!2+UE-
+,f4DKCgDA8c@-A9)+&FE2M8P'CnaFD5Z2F,gNF@<-F#Ao;+#EckrVGV<KGB6,2)@<,jrA7Zm%E
+-,f4DK@Ha@rGmh0et_O5E[g2EbBHR"*Ad0>9I,mFCf]=+EV1>FEh_9AohO*+EV1>FEqe:AohO*
++EV1>FCoH/F<G[:G]\"@H=\4)+C1.T@<-"%NXBl>G]\1=Ch[O"NWs!)DKKH1P'CDUB60(8DfBf
+:E-,f4DKCtc@<-"%+CoD.FC]E#GEQnu061WACh[cu@<.N1Ou[rR%[&V$F)ti$0fY=UP%64gCG'
++8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM@[!P.H"'F`V,9E+
+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/sscc18 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER sscc18--
% --BEGIN ENCODER code39--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Code 39
% --EXAM: THIS IS CODE 39
% --EXOP: includetext includecheck includecheckintext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/code39 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includecheck false def % Enable/disable checkdigit
- /includetext false def
- /includecheckintext false def
- /hidestars false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Create an array containing the character mappings
- /encs
- [ (1113313111) (3113111131) (1133111131) (3133111111) (1113311131)
- (3113311111) (1133311111) (1113113131) (3113113111) (1133113111)
- (3111131131) (1131131131) (3131131111) (1111331131) (3111331111)
- (1131331111) (1111133131) (3111133111) (1131133111) (1111333111)
- (3111111331) (1131111331) (3131111311) (1111311331) (3111311311)
- (1131311311) (1111113331) (3111113311) (1131113311) (1111313311)
- (3311111131) (1331111131) (3331111111) (1311311131) (3311311111)
- (1331311111) (1311113131) (3311113111) (1331113111) (1313131111)
- (1313111311) (1311131311) (1113131311) (1311313111)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*) def
-
- /barlen barcode length def % Length of the code
-
- includecheck {
- /sbs barlen 10 mul 30 add string def
- /txt barlen 3 add array def
- } {
- /sbs barlen 10 mul 20 add string def
- /txt barlen 2 add array def
- } ifelse
-
- /checksum 0 def
-
- % Put the start character
- sbs 0 encs 43 get putinterval
- hidestars not {
- txt 0 [(*) 0 textyoffset textfont textsize] put
- } {
- txt 0 [() 0 textyoffset textfont textsize] put
- } ifelse
-
- 0 1 barlen 1 sub {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- sbs i 10 mul 10 add enc putinterval % Put encoded digit into sbs
- txt i 1 add [barcode i 1 getinterval i 1 add 16 mul textyoffset textfont textsize] put
- /checksum checksum indx add def
- } for
-
- % Put the checksum and end characters
- includecheck {
- /checksum checksum 43 mod def
- sbs barlen 10 mul 10 add encs checksum get putinterval
- includecheckintext {
- txt barlen 1 add [barchars checksum 1 getinterval barlen 1 add 16 mul textyoffset textfont textsize] put
- } {
- txt barlen 1 add [() barlen 1 add 16 mul textyoffset textfont textsize] put
- } ifelse
- sbs barlen 10 mul 20 add encs 43 get putinterval
- hidestars not {
- txt barlen 2 add [(*) barlen 2 add 16 mul textyoffset textfont textsize] put
- } {
- txt barlen 2 add [() barlen 2 add 16 mul textyoffset textfont textsize] put
- } ifelse
- } {
- sbs barlen 10 mul 10 add encs 43 get putinterval
- hidestars not {
- txt barlen 1 add [(*) barlen 1 add 16 mul textyoffset textfont textsize] put
- } {
- txt barlen 1 add [() barlen 1 add 16 mul textyoffset textfont textsize] put
- } ifelse
- } ifelse
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/code39 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp code39 0.0 0 0 0
+%%BeginData: 56 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04Sp2A MZ >nL_Q" 0Op
+s'_E-,f4DKCt)Ou "b#@< ,jr A7^ o fOu "b% Df0 Z-Eaa/ 7A moLsAW ei&
+Bl7EsF_#&nBOt[h +D,%u F(L Lj0 6U c? Bk1 XoA RfCb@r !3 !@;L!r Ou"
+b*DI[L*A7]joG]Y '?@; L!r Ou "b *DI [L* A7] 7aAR
+fLiDKKH7F<G1(Ci a0N1 G <E UA 7]h (@< -E3A moLsA
+Wei&FCf]=AoDR/O iNV@06 CcM F E;/ BA V^\V 1G< i]G]\4LAnH *qFGTaU1G<E
+QBkM+$L]NYpDfBf 4Df0WZ Y:j s =EbT E(FE qh: P!+/J!Ko=' %<$3-Bl@m1H
+]kFA@;L!rP!+/T5 ^eepOu SV6 P,4< rNWD ;+N HB2`AWf3'O tDh\P')pOOu
+ %N5OtCcrF_-^lI ?ITYP %Bdt OuY16 E-,f 4DK Ct)Ou%NL<, Z_tBl@m1H]g
+15P"@<KAU&</Df0 Y>FCf ]=AoD R/OtD hQ0 6CcMFE;/BA KZ)+G]\"@H=
+`6mOu"b5AU&<BDe <U&ATT& :AU&<B De<U& ATX (gOu"b)ASG djF<G7.BkM+
+$OtVtS04J@1@q]:kF,hb)0etOA2)[BQ3C,u!6q'R884cEH9MJ8X:f1+h<)lt#=BSfZ/g)Dm.j^
+?704S[(Ectl-F,2?023KbO!/LZ3.XPZ=@<-O"Cibb'OuQoZEarckEc[C-L]NZ4P!5%RI?I-W!/
+LYb@<,jrA7^p5L]N[<HX^E(@rGmhP!4[&P"]A!@<-O"Cibb'P$jGlHS8iPBlJ#D@rGmh1HAoQA
+4($=Ea`I"ATEf-6Z6LH+>Z##D09oA+Cf>-FCAm$+E).6Gp$X3B5)I//0JG2E+sE&C`mP*FED)7
+F"AGTE+*6fF!+n/A0>u-AKZ&>D.7F"F!*%e,VLYo0/%?SBldisEcQ)=P!=AX<.0p#04J@1Ch7K
+,@UX:eDe*FB@Wl0rBk1XoARfCb@r$FI!KsF1P#RT#04S[,@r$..D281T1Pc$e!FfJXCh7L?!Ks
+F/@UX:eDe*FB5)96&9OhaEEctl-F-8_M94MXH@r$..D3=oQ@q]F`CNFW8P!5$bI?I,S@q]F`CN
+FW8+Cf(r@r$..D29^*C6CAr@;KXg@<?'jBOt[hHQZd+Eas#uAKYGjEbo<)P"T7mEarckEcW@5B
+Ot[hF*2>_99O.=04K->E,[F>De*E83FZE-6YL%@CIDlLBlo@^8T&$VEcP`$F<EqhA7Zl>3?VgF
+ARfKuA8,[jF<GOCDg#i*ARmGIEa`['AS#n&DfV"*I?IP_@UX:eDe*E%@UX:eDe*F8!+KAWCh7L
+I9Th1bBl7EsF_#&nBOt[h+EVXHAWeitP#O)GDI[`1>E0%F0ekI?0f(O=0ocSs0ekI=0ekC=0oc
+Sq0f(U?0ekC=0ocSs0f(U?0ekC;0ocSq0ekI?0ekC=0ocSs0ekI?0ekC;0ocSq0f(UA0ekC;0o
+cSq0ekI=0f(O?0ocSs0ekI=0f(O=0ocSq0f(U?0f(O=0ocSs0ekC;1GLU?0ocSq0f(O=1GLU?0
+ocSs0f(O=1GLU=0ocSq0ekC=1GLU?0ocSs0ekC=1GLU=0ocSq0f(O?1GLU=0ocSq0ekC;1G^aA
+0ocSs0ekC;1G^a?0ocSq0f(O=1G^a?0ocSq0ekC=1G^a?0ocSs0ekC;0ekI?0ocSq0f(O=0ekI
+?0ocSs0f(O=0ekI=0ocSq0ekC=0ekI?0ocSs0ekC=0ekI=0ocSq0f(O?0ekI=0ocSq0ekC;0f(
+UA0ocSs0ekC;0f(U?0ocSq0f(O=0f(U?0ocSq0ekC=0f(U?0ocSs1GLU=0ekC=0ocSq1G^a?0e
+kC=0ocSs1G^a?0ekC;0ocSq1GLU?0ekC=0ocSs1GLU?0ekC;0ocSq1G^aA0ekC;0ocSq1GLU=0
+f(O?0ocSs1GLU=0f(O=0ocSq1G^a?0f(O=0ocSq1GL[?1GLU=0ocSq1GL[?0ekI=0ocSq1GLU=
+1GL[?0ocSq0ekI=1GL[?0ocSq1GLU?0f(O=0jTqu06:TD+C\c"Ch7K,Bl7EsF_#&nBOt[hH\_c
+PH\_`OP#[YGL^K;]P,4<t06DG\+C\c"Ch7K,Bl7EsF_#&nBOt[hH\_cPH\_`OP#[YGOpR:-F(0
+3H!+g%XF,2?099OR6Bk1drFCB32P&PbiG]\`A>E/_6L]DO.G]\4LAnH*qF<G[:G][P9DKI"CAU
+&<<BmO>5?'9G\HZXLSL]CY>!/LVsAU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C1.TI?ITd!
+/LYb@<-0qDMS=VWI$:4P!5$b055<7GT^L0@<-O"Ci^_.@<,jrA7ZltL]NZ4P"UroF(025Bo!+Z
+CkrF]!G-.YF!,17A9a81P'M.oF<G:R!KmIf+C\c"@rGmh+DHW4P"]SG!KmJ>&<^jOAU&<BDe<U
+&ATT&:AU&</Df0Y>FCf]=F(or3+C1.TI?I-8DI[L*A7]7aARfM&+EM"5+C\c"Ch7L?$Bf4]$Bb
+F$DI[`1@q]F`CNFW8P"Us`Bl7EsF_#&nBOt[hBl8$(G]\9TFEhmM@UX:nAT!;)Oo\c0@UX:eBO
+Pq&+Cf(r@r$..D284U9O_FNCh7L?!KmJ>&<^jOAU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+
+C1.TI=$'\F<G%$Ebo<)L]NY>>E/\m@<-0qDMS=V!Jh;MCij65FEqe:AohO*+EV1>FCoH/F<G[:
+G]\"@H=\4)P'DD<<HDVj+C\c"Ch7L?$Bf4]'TrK.DI[aD/!<PgH"^o&ATMs%Ec[C_HZXLS+C\c
+"Ch7L?!g3RgNWCV=@<-0qDMS@W!Jh;MCij65FEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'D
+D%FEhmM@UX:nAT!;*Oo\dI!+KAWCh7L?!g3S?&<^jOAU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(
+or3+C1.TI?ITYHZNY;+C\c"Ch7L?$Bf4]$BbF$DI[aD/!<PgH"^o&ATMs%Ec[C_HZXLS+C\c"C
+h7L?!KmIfNWCV=@<-0qDMS=V!Jh;MCij65FEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'DD%
+FEhmM@UX:nAT!;)Oo\dI!+KAWCh7L?!KmJ>&<^jOAU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or
+3+C1.TI?ITYP#XV,061WA0/%?WDJX$)ARTU4F(025>9IurF*i]sP,Wkm8R3uYBQG;#+EM"5P%'
+4JOo^@?P#?X?ASGdjFFB=)>q]YrF!+[0F(03R@Yb&J!Jgf?;L=3"I?K4g+DG_'Cis9"FCf]=HS
+9JcF<G[MFFB<O05kfO+E)4@Bl@m1+?ht3A8c@-A9)+&P&N'-Eb0-)Bl7KjEfsCb3IR&#Ou"b$D
+e*E83Kc@bA1r(@/n8fPFCfK5H"(o:FDl%L@WuO*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]HE+*6l
+Bl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/code39 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER code39--
% --BEGIN ENCODER code39ext--
-% --REQUIRES code39--
+% --REQUIRES preamble raiseerror renlinear code39--
% --DESC: Code 39 Extended
% --EXAM: Code39 Ext!
% --EXOP: includetext includecheck includecheckintext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /code39 dup /uk.co.terryburton.bwipp findresource put
-begin
-/code39ext {
-
- 20 dict begin
-
- /options exch def % We are given an options string
- /barcode exch def % We are given the code39extended text
-
- /dontdraw false def
- /includetext false def
- /parse false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- /barlen barcode length def
-
- % Extended alphabet to non-extended alphabet
- /extencs
- [ (%U) ($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) (%A) (%B) (%C) (%D) (%E)
- ( ) (/A) (/B) (/C) (/D) (/E) (/F) (/G) (/H) (/I) (/J) (/K) (/L) (-) (.) (/O)
- (0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (/Z) (%F) (%G) (%H) (%I) (%J)
- (%V) (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) (%K) (%L) (%M) (%N) (%O)
- (%W) (+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) (%P) (%Q) (%R) (%S) (%T)
- ] def
-
- /newcode barlen 2 mul string def
- /newtext barlen 2 mul string def
- /j 0 def
- 0 1 barlen 1 sub {
- /i exch def
- /extchar extencs barcode i get get def
- newcode j extchar putinterval
- newtext j barcode i get put
- extchar length 1 ne {newtext j 1 add ( ) putinterval} if
- /j j extchar length add def
- } for
- /newcode newcode 0 j getinterval def
- /newtext newtext 0 j getinterval def
-
- % Get the result of encoding with code39
- options (dontdraw) true put
- /args newcode options //code39 exec def
-
- % Replace chars in /txt with chars in newtext
- includetext {
- /txt args (txt) get def
- 0 1 newtext length 1 sub {
- /i exch def
- /txtentry txt i 1 add get def
- txtentry 0 newtext i 1 getinterval put
- txt i 1 add txtentry put
- } for
- args (txt) txt put
- } if
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/code39ext dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp code39ext 0.0 0 0 0
+%%BeginData: 37 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04Sp2A MZ ?03%oD i/n
+8fPFCfK5H"(o:FD l%L@W uO* E0A q <G` iLh @rG mh1HB# kF F/fXOu 8C3
+05kfOBl@m1P!5$b 04J@1 @rG mhP !5 $b 04] !=F C]E#G9 CL +Cia0N 1G<
+H[@r-9uATVL.F<G 1(Ci a0N 1G <] UEc Ye7 Amo LsAW
+eifE-,f4DKCuE06 ;5UB l 7R *H #R> X4a VtcO u8C3D
+fBf4Df0WCP,i2'C ia0N4a W>W I ?IQ m3 0Ia6 V33 Qn!BlU*FE2 M8P!+/T/Wr;
+\FcnqO1OXV5/Tc# UAWeit P#Z p nAWe *t3A 5;i FD5Z2F-8_M 1OYEcDfBf4D
+f0WCOu%NL8T8*YF (K\OD0 '>4 @UX: eDe* FB@ ZmRN1G<L!! 0T-I@<,jrA7
+^+J!FCqKH]g@*F( ^Y"C6 CcDH '2WOO o^@> Oo[ 4NP!5$bP') pIL]E55P"_#
+iD0'?Q5&,lSP,XU .P'E- LP%'4 LP,X6 >P! 5%&I=%,:D0 '?Q5&-6EP'N
+4"C6ATNC6CcD1G< 3GEas#u AKYi2B 8?P&P "_# pP!FGY<IL$ AI?IQ=@<,jr
+A7^Q"@UX:eDe*FB@Yb/MWKKr%L&cae8p`4#GA2#8/n8g1AMZ>XG]Z8\A4($=Ea`I"ATEee6Z6L
+H+>Z##7<iocDId<h+Dl7BF<G(3DKK<$DBNk8Cj@-h;aX,J+Cf(nEa`I"ATDiF061K8F(Jp'Ec5
+u]5CJ\oI?I/T@UX:nASrW"@<,jrA7^p5Ou"b&G][M7@ribsNWLM,NWLIlNWLImNWLInNWLIoNW
+LIpNWLIqNWLIrNWLIsNWLItNWLIuNWLJ!NWLJ"NWLJ#NWLJ$NWLJ%NWLJ&NWLJ'NWLJ(NWLJ)N
+WLJ*NWLJ+NWLJ,NWLJ-NWLJ.NWLJ/NWLJ0NWLLmNWLLnNWLLoNWLLpNWLLqNWC8_!\Zj"!\Zm#
+!\Zp$!\Zs%!\[!&!\[$'!\['(!\[*)!\[-*!\[0+!\[3,!\[6-!A0<4/rfud:Q>H0NWCkp!A]Z
+91QDJmNWD"t!B,r=2i[nuNWD/#!\[`;![U<r![U?s![UBt![UEu![UI!![Um-!C;_H6B2(6NWD
+P.!C`"L7ZIL>NWD\2!D/:P8r`pFNWDh6!DSRT:6#?NNWDt:!E"jX;N:cVNWE+>!EG-\<fR2^NW
+E7B!EkE`>)iY199''"9TB0#9o]9$:6#B%:Q>K&=,m>46&l!s6B2*t6]M3u7#h=!7?.F"7ZIO#7
+udX$8<*a%8WEj&8r`s'99''(9TB0)9o]9*:6#B+:Q>K,:lYT-;2t].;N:f/;iUo0</q#1<K7,2
+<fR53=,m>4=H3G5=cNP6>)iY1:lYT';2t](;N:f);iUo*<*bYC05b?F@rGmh+C\c"Ch7L?!g7A
+_V33VfDIn$6AU&;>@UX:nAT!;*P&-;XOu"b+L]ESoL]E53@UX:nAT!;)P,Wd]Bp(ZC1G<<aFCS
+umEZeq<FCf?"F!+q#Eas#uAKY]M99Mr21N$cJ@rGmh+DN$1G][G/@<.NVDIn$6AU&;>C*6toEa
+s#uAKY]M99OO2G][G/@<.N?L]NZUHZ!D=FCf]=+DQ]5Oo^RD+Hh"uP#O)L+DN$1G][G/@<.N?O
+o^_%I?I,SDIn$%De*E%DIn$%De*F8!,@ZjOu"b/ATr6-G]Y'GATr6-G]\`AC6D8R1N.5SBl@m1
+NX006DKKE0@<Zg6F_-_\04Am6F!,@3G@PQ%AKYo1FD5Z2F"]1VDe*E83KcUi1ML`:Cis9"FCf]
+=HS9JcF<G"4B60(8FEhnj99M)e!/LYnATr6-G]]*XL]N[<HS9)r5*@]TFEhn=DKKoE+EVjM+DH
+W4Oo^_=Ou%3)FCf?3Ed<H@DIn$6AU&;>BnueQ9TjXBG]Y'BL]NY>FEhn=DKKoEP'DD<87?OOF,
+g?EG]\%PFHUlsP#Pk1B60(8DfBf:E-,f4DKCtc@<-"%+CoD.FC]E#GEQnu061WACh[cu@<.N1O
+u[rR%[&V$@rGmh1HB#kFHSVHA1r(@/n8fPFCfK5H"(o:FDl%L@WuO*E$/\&Anc-oEb0<1F`Lu'
+P')pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/code39ext 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER code39ext--
% --BEGIN ENCODER code32--
-% --REQUIRES code39--
-% --DESC: Italian PharmaCode
+% --REQUIRES preamble raiseerror renlinear code39--
+% --DESC: Italian Pharmacode
% --EXAM: 01234567
% --EXOP: includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /code39 dup /uk.co.terryburton.bwipp findresource put
-begin
-/code32 {
-
- 20 dict begin
-
- /options exch def % We are given an options string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable code32 text
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /textxoffset 0 def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- /text 10 string def
- text 0 barcode 0 8 getinterval putinterval
-
- % calculate check digit
- text 8 0
- 0 1 7 {
- dup text exch get 48 sub exch 1 and 1 add mul dup 9 gt {9 sub} if add
- } for
- 10 mod 48 add put
-
- % convert number from base10 to base32
- /val text cvi 32 barcode cvrs def
- /barcode 6 string def
- 0 1 5 {barcode exch 48 put} for
- barcode 6 val length sub val putinterval
-
- % convert base32 number to specified character set
- 0 1 5 {
- dup barcode exch get
- dup (AEIO) {ge {1 add} if dup} forall pop
- barcode 3 1 roll put
- } for
-
- % format HRI
- text 1 text 0 9 getinterval putinterval
- text 0 65 put
-
- % Get the result of encoding with code39
- options (dontdraw) true put
- /args barcode options //code39 exec def
-
- args (txt) [ [text textxoffset textyoffset textfont textsize] ] put
- args (textxalign) (center) put
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/code32 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp code32 0.0 0 0 0
+%%BeginData: 33 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04Sp2A MZ ?03%oD i/n
+8fPFCfK5H"(o:FD l%L@W uO* E0A q <G` iLh @rG mh1GX< 5' Tt>:%5 2X=
+FD5Z2F-8_M1G<3G Eas#u AWf 6?1 G< 9W DKK E0@ <Wi+@; L! rOu"b* DI[
+L*A7]joG]Y'?@;L !rOu "b5 AU &< /Df 0ZZ a-& 53FC
+f]=F(or3L^K;$06 CcMF E qe :A ohO *M# !2i0 6CcMF
+Eh_9AohO*L]ESo0 5+p2B4 uCC ! Ko6 WE -,f4 DKC uE06;5UBl7 R*H#R>X4aVt
+cOu8C3DfBf4Df0W CP,i2' Cia 0 N4aW >WI? IQm 30Ia6V33Qn !BlU*FE2M8P
+!+/T/Wr;\FcnqO1 OXV5/T c#U AWei tP#Z pnA We*t3A5;iF D5Z2F-8_M1O
+YEcDfBf4Df0WCOu %NL8M >0sG ][P9D KI"C AU& </Df0Z[/Wq nCFCf]=F(or
+3+EV1>FE;/BAWe^ 01G<i ]G]\4 LAnH* qF< G[:G]\4LAn H*qFHS;?1G<
+EQBkM+$+D>>#B4u CM09S,# @<,jrA 7^p5L ^9/ \@UX:eDe*F B@Yb>RD3>$K
+04K->E,[F>De*E811F[&9P&*SFD-[_8T\BWBjkm%:hX9XD.-pmA7Zm#F`VXI@V$ZA+E)9C3?Vj
+HB5)I/0/%?SBldisEcQ)=P!=AX<+99V@rGmhH]g@E0Tp%25);4^:m,jG04K->E,[F>De*E811F
+[&6YKnK@:OCjEfMYAFCB!"@;[2aBOPpu@:O4dAKYi4F*&O7Df0Z*Bl5&3DJXS@A8,[jFE9)gEa
+`['AS#n&DfV"*I?IQXP"@<:BOt[hF*2>U!0T-o!/LZ3#CA+<P!5$b@UX:eDe*E%Bp),F0TrDLL
+]W`SL]ETTH\_`dCjhIGOuS7(P#-L]$'M99P#Pq)ARfLsF`!9B04S[,@r$..D3@)G1OYEW04S[,
+@r$..D'3>%ARfLsF_upAP%p.9@UX:eDe*FB@Yb>R4aUXHEas#uAV^VT94MXH@r$..D29m/!Kq;
+H04K->E,[F>De*E811F[&6YL%@CIDlLBlo@i8T&$VEcP`$F<F.s@;KXdDBMbh@<-3n@rGmh+Cf
+(r@r!2tBkM.%+E2@>G%kJuA1oTV@;0doATDg0EfrY8P#Qjm</:mEV33fo!+KAW@rGmhP'N3ML^
+7L(ARfLsF_upgOo^_j06CcMFHShN1G<o[C`mh2G]]*"L`g/8Eas#uAWea11G<3GEas#uAV^PRV
+33Wj!/LZ3"aa]eEas#uAWf650Tp[/P"9%jEas#uAV^P6@;M*9P,WV5Cm'("!/LZ3"acCl@UX:e
+De*FB5*AR%30",-77g:%P"L(W!KmJ3P#RT(I?I0bF^ed"@rGmhL]`G6P)#3FI?I-CAU&<Q!H_m
+tFGKpQ$'IuFH$!VBFGKpQ6'?J2E-,f4DKCgDA8c@-A9)+&FE2M8P'AWgEbBG9@UX:eDe*E%DfB
+f4Df0VL04Sp2AMZ?05E[g2EbBHR"*Ad0>9I,mFCf]=+EV1>FEh_9AohO*+EV1>FEqe:AohO*+E
+V1>FCoH/F<G[:G]\"@H=\4)+C1.T@<-"%NXBl>G]\1=Ch[O"NWs!)DKKH1P'CDUB60(8DfBf:E
+-,f4DKCtc@<-"%+CoD.FC]E#GEQnu061WACh[cu@<.N1Ou[rR%[&V$@rGmh1GY+QP%64gCG'+8
+/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM@[!P.H"'F`V,9E+*6
+lBl7R3P#M~>
+% uk.co.terryburton.bwipp/code32 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER code32--
% --BEGIN ENCODER pzn--
-% --REQUIRES code39--
+% --REQUIRES preamble raiseerror renlinear code39--
% --DESC: Pharmazentralnummer (PZN)
% --EXAM: 123456
% --EXOP: includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /code39 dup /uk.co.terryburton.bwipp findresource put
-begin
-/pzn {
-
- 20 dict begin
-
- /options exch def % We are given an options string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable code32 text
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /textxoffset 0 def
- /height 1 def
- /pzn8 false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /textxoffset textxoffset cvr def
- /height height cvr def
-
- /msg pzn8 {9} {8} ifelse string def
- /msglen msg length def
- msg 0 45 put
- msg 1 barcode 0 msglen 2 sub getinterval putinterval
-
- % calculate check digit
- 0
- 1 1 msglen 2 sub {dup msg exch get 48 sub exch pzn8 not {1 add} if mul add} for
- 11 mod 48 add
- msg exch msglen 1 sub exch put
-
- % Get the result of encoding with code39
- options (dontdraw) true put
- /args msg options //code39 exec def
-
- % format HRI
- /text msglen 5 add string def
- text 0 (PZN - ) putinterval
- text 6 msg 1 msglen 1 sub getinterval putinterval
-
- args (txt) [ [text textxoffset textyoffset textfont textsize] ] put
- args (textxalign) (center) put
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/pzn dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp pzn 0.0 0 0 0
+%%BeginData: 35 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04Sp2A MZ ?03%oD i/n
+8fPFCfK5H"(o:FD l%L@W uO* E0A q <G` iLh E-c DKL_Q" 0O ps'_E- ,f4
+DKCt)Ou"b#@<,jr A7^of Ou" b%D f0 Z- Eaa /7A moLsAW ei &Bl7Es F_#
+'*AU&;>AmoLsAWe i&FC f]= Ao DR /Oi NV@ 06C cMFE
+;/BAV^\V1G<i]G] \4LA n H* qF GTa U1G <i]G ]\1KA
+nH*qFGKp[1G<EQB kM+$L] NYp 0 5u5 T3 $;gA Cia 0N1N.5SBl@ m1P-6N[FE2)
+5B68E<AWf3'L]NY rOpu>K FD5 Z 2F*j (NAm oLs AWf3'P!FGY <0B5(@ZmRN0
+oc8tP)XR(F_-_!H ]ftD5* C&O 5*@^ MH]f t&E ckrV1OYEdI ?J0)*g/N:Df
+Bf4Df0WZ5*@^MP# Q@=FD 5Z2F *j'+I ?I/T FCf ]=AoDR/+EV 1>FCoH/FHS5
+=1G<i]G]\"@H=\4 @AU&< <BmO? R09S+ EFC f]=H#I;,F( KG9FCf]=H#I
+;,F(KHV09S+EFCf ]=G].2+ F(KG9F Cf]=G ].2 +F(KHV09S+ EBOtmjBQPA1
+ASGdjFHS;?1N7YX3-ucW@<,jrA7^p5L^0)[@UX:eDe*FB@Yb;QD3>$K04K->E,[FKH>Y]O@:W&
+CDJ+')NZ(_t:,jA5F`VXI@V$Z@+E)9C3$;aGB5)I/0/%?SBldisEcQ)=P!=AX<.0+&@<,jrA7^
+p5L^'#Z@UX:eDe*FB@Yb8PD3>$K04K->E,[FKH>YZN@:W&CDJ+')NZ(_t:,a;4F`VXI@V$Z?+E
+)9C2]uXFB5)I/0/%?SBldisEcQ)=P!=AX<.0p0@UX:eDe*F+OuS7OP%Kk@LcLVpP&bn&@WuO*E
+ %Z*UDF.cB6YKnK@:OCjEfM,9>#$2WF`VXI@rH7,@;0U%Df0B:+Co2!BlnDL061K8F(Jp'Ec5u
+]5CJ\oI?I/TD0'?+ASrW0H>Y]hL^AKVL^8El<K]-k@q]F`CNFW8L]ESoL]E53D0'?+AT!;+P,W
+d]Bp(ZC1Lad5@rGmh+DI!3LbP!kBcqA@DE*!!!I]<N!e$53Oo^_^@q]F`CNFW8Oo[4GBOt[hF*
+2>_5*@^MP"769BOt[hF*2=B@q]F`CNFW8L^TA\Ou$T]ARfLsF_upAP!+.F@WuO*E%Z*UDF.cB8
+T&KiFAlajF_,H#AWA'.DI[U*Eb/a&+Ac6:+DG_4F`\aIAT;j(DI[6#E,ol?Bk1dc0/%?SBldis
+EcQ)=P!=AX<+99V@rGmhP%&9LB5D-sL]N[<P!+/$@<,jrA7Zm#F(]<#DMS@WWKKnaBOt[hF*2>
+U0TlI"D0mpFGA2#8/oZ,S6=FClBOt[h6tp:JFH.P:DI[U*Eb/a&+Ac6:+Cf(r@r!2tBkM.%+E2
+@>G%kJuA1oTV@;0doATDg0EfrY8P#Qjm<,H\hCh7LIV33fo!/N4iG`k%B!FfJX@rGmhP'N3MD0
+'?+AT!;)P,Vr)ARfLsF_upgOo^_j05YcCP!5$bDfBf4Df0WV#\7jkFC]E#GB@kJAWh9k@<-"%+
+Dl14+E)4@Bl@m10/$gRA7[PWP!>*c06CcMF<GFAB5D-sL]rqBP,4<tFCf]=L]EG>:g-U:/Kg4%
+FCf]=L^%^;B8?S*F(]<#DMS=VWKKr<H!t`+F,g?EG][.4>9J$!G]Y'MAU&<ADe<U&ATT&:AU&<
+BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C-*qP'CDUB60(?FCf]=G[YE&B5W_6@qBP"ATErY@<-
+"%NWX3=FDl,?Bl@m1P'CDUB6,2+Df0Z-Eaa0TE%`kbASu<uDIm6sP#RT)I?G)'1G<]nDNZuBA1
+r(@/n8fPFCfK5H"(o:FDl%L@WuO*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]HE+*6lBl7RH\pKT_F
+(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/pzn 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER pzn--
% --BEGIN ENCODER code93--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Code 93
% --EXAM: THIS IS CODE 93
% --EXOP: includetext includecheck
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/code93 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includecheck false def % Enable/disable checkdigit
- /includetext false def % Enable/disable text
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 1 def
- /parsefnc false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- /encs
- [ (131112) (111213) (111312) (111411) (121113)
- (121212) (121311) (111114) (131211) (141111)
- (211113) (211212) (211311) (221112) (221211)
- (231111) (112113) (112212) (112311) (122112)
- (132111) (111123) (111222) (111321) (121122)
- (131121) (212112) (212211) (211122) (211221)
- (221121) (222111) (112122) (112221) (122121)
- (123111) (121131) (311112) (311211) (321111)
- (112131) (113121) (211131) (121221) (312111)
- (311121) (122211) (111141) (1111411)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%) def
-
- /barlen barcode length def
-
- % Special function characters
- /sft1 -1 def /sft2 -2 def /sft3 -3 def /sft4 -4 def
- /fncvals <<
- (SFT$) sft1
- (SFT%) sft2
- (SFT/) sft3
- (SFT+) sft4
- >> def
-
- % Convert input into bytes accounting for shift characters
- /msg barlen array def
- /i 0 def /j 0 def {
- i barlen eq {exit} if
- /char barcode i get def
- parsefnc char 94 eq and i barlen 4 sub lt and {
- barcode i 1 add get 94 ne {
- /char fncvals barcode i 1 add 4 getinterval get def
- /i i 4 add def
- } {
- /i i 1 add def
- } ifelse
- } if
- msg j char put
- /i i 1 add def
- /j j 1 add def
- } loop
- /msg msg 0 j getinterval def
- /msglen msg length def
-
- includecheck {
- /sbs msglen 6 mul 25 add string def
- } {
- /sbs msglen 6 mul 13 add string def
- } ifelse
- /txt msglen array def
-
- % Put the start character
- sbs 0 encs 47 get putinterval
-
- /checksum1 0 def /checksum2 0 def
- 0 1 msglen 1 sub {
- /i exch def
- % Lookup the encoding for the each barcode character
- msg i get dup 0 lt {
- 42 exch sub /indx exch def
- /char ( ) def
- } {
- 1 string dup 0 4 -1 roll put /char exch def
- barchars char search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- } ifelse
- /enc encs indx get def % Get the indxth encoding
- sbs i 6 mul 6 add enc putinterval % Put encoded digit into sbs
- txt i [char i 9 mul 9 add textyoffset textfont textsize] put
- /checksum1 checksum1 msglen i sub 1 sub 20 mod 1 add indx mul add def
- /checksum2 checksum2 msglen i sub 15 mod 1 add indx mul add def
- } for
-
- includecheck {
- % Put the first checksum character
- /checksum1 checksum1 47 mod def
- /checksum2 checksum2 checksum1 add 47 mod def
- sbs msglen 6 mul 6 add encs checksum1 get putinterval
- sbs msglen 6 mul 12 add encs checksum2 get putinterval
- % Put the end character
- sbs msglen 6 mul 18 add encs 48 get putinterval
- } {
- % Put the end character
- sbs msglen 6 mul 6 add encs 48 get putinterval
- } ifelse
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/code93 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp code93 0.0 0 0 0
+%%BeginData: 45 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04Sp2A N; PnL_Q" 0Op
+s'_E-,f4DKCt)Ou "b#@< ,jr A7^ o fOu "b% Df0 Z-Eaa/ 7A moLsAW ei&
+Bl7EsF_#&nBOt[h +D,%u F(L Lj0 55 <6 Cis 9"F Cf]=+D ,% uF(LLj 06C
+cMFCoH/FHOV,1G< i]G] \"@ H= _m >Ou "b5 AU& <BDe
+<U&ATWb(Ou"b)AS GdjF G Ks \1 G<] UEc Yf(D IXf$@
+;L!rOu%#qFD5Z2F -<^[F* )G: D J+' :E +P1q H\_ ]c23JDeE-, f4DKC/fX(Gd
+VF(LLtH]gXBP#RT (P%'TN Oth s t4d( eHEc krV 4aW>DP!5%O P!5$bI=%,/F
+E2M8Ou%NL<IL$AO rfcH05 kfO Bl@m 1P!5 $bI ?IQJE-,f4D KC/f1OYEX06
+CcMFCoH/F<G[:G] [P9DK M$nO u"b5A U&<< BmO >5FCf]=F(o r3OtVtS06Cc
+MFEqe:AohO*+EV1 >FEqe :AohO *OtVt S05 +p2B4uB0BO tmjBQTCjOu"
+b&DI[`1>E/nB1GL U=16)Pn 0ekF<1 QDYo0 ekI =16)Pn0ekL >0ocGm1,1L<
+1QDYo1,1O=16)Pn1,1R>0ocGm0ekC;1l_bp1GLX>0ocGm1bg^>0ocGn0ekC;1QDYp0ekF<16)P
+o0ekI=0ocGn1,1L<16)Po1,1O=0ocGn1GLU=0ocGm0etI<1QDYo0etL=16)Pn0etO>0ocGm1,:
+R=16)Pn1GU[>0ocGm0ekC<1QDYo0ekF=16)Pn0ekI>0ocGm1,1L=16)Pn1GLU>0ocGn0etI<16
+)Po0etL=0ocGn0ekC<16)Po0ekF=0ocGn1,1L=0ocGn1,:R=0ocGm0etI=16)Pn0etL>0ocGm1
+,:R>0ocGm1,CX>0ocGm1,1L>0ocGo0ekC;16)Pp0ekF<0ocGo1,1L<0ocGm0etI>0ocGm0f(O>
+0ocGn0ekC=0ocGm1,1O>0ocGo0etI<0ocGo0ekC<0ocGm1,:U>0ocGm0ekC>0ocJn0ekC>0els
+s1G<3GEarckEc[6k0JP==1c70M3&s8k6UX@47n?3D92&&T:Jand;cHat='/U//M8.k0.S?31G<
+3GEbo<)+C\c"@rGmhP%'S106:`I0o5jm1G<f]F>A[OOu"b4AoohbrK8riF(TMNM#<Dl04o*3G%
+#3.+?VcH"B.ch,]dR>0ocB87T:[TAooeg"B.ch06:`I1QDT:7T:mZAoojP5!G,c05YcC+C\c"C
+h7LI$'I(tBnubP1G<L!!0T-bBcpknEbo<)P!+/T5^eep04S[(EZeh"Eas#uAKY]M99M)M@<-F#
+Ao;*$@q]:kLgH6-Op#JA@UX:nAT!;,P,XUVOp$,@@<,jrA7ZltL]NY>P"UU;P&5P!@q]:k+D,M
+$G%#3.+C\c"@rGmh+DHW4Oo^@AP"_$3Ou"b*+DHW7Oo^_%I=!V]+DHW4Oo^_%I?ITYP#Q:>B-:
+q3@q]:kP'AWo+DHW4Oo^_%05;VEL]NY>Ou%NLAM7nAB-;&4B8?P&P"_#p05YcCCh7K,D0'?Q@Z
+iN]DI[L*A7]7aARfM&06:TD+Dl14Ch7L?#*NeY)3P#`V33W_HS9GLF!,=@B5D-sL^'#YL^fLJP
+,4<tI?IS`FEhmMD0'?+AT!Y;Ou%/gF,0g-DI[aD09StkGqWZ@ARfLsF_rjh!0T,k@q]F`CNFW8
+15Gpn1Pc$e!GumjCh7L?!KsF/056S5Ou$rrB-:oO99M8j!0Ur@LanQOP,U*KDIe!T5*@]T@q]:
+kNWC8c1OXV+!Ks:B3/@Qj"Gm)@LQZm8@q]:kP!5$b@UX:eBOPq&+Cf(nEfuEFFcp2eBl7I+P!5
+$bP')q1I?IS`ASu!#ASu"!+DG_(G`k^_1NR#H+DHW9P&,pYOo]-3A!2+ZG]Y'B+BosuBOPp(Bo
+!(YCkrC\!H_mtFEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'AWiBOt[hF*2=S+Cf(r@r$..D
+)!/MF(]<#DBNYVWJCS<WJD7OC5;nR!GQF^G`lm+!Ko5l@q]F`CNFW81*C(?ARfLsF_rlVD0'?+
+ASrW)P,X6JP%odROo]97A9a8ROo^_%I?I-8DI[L*A7]7aARfM&04S[,@r$..D)!/CBOt[hF*2=
+SLbFp+Ou"b$BOt[hF*2=T+Cf(r@r$..D)*5DBOt[hF*2=SOo^@lP%p.9F(025D0'?+AT!;.P&,
+pYOo]-3@ric&BOt[hF*2=SP"Us`F(025D0'?+AT!;.P&,p_Oo]-3@ric&BOt[hF*2=TP"Us`F(
+025D0'?+AT!;.P&,peOo]-3@rmG[P"Us`I=$$EF!,=@B5D-sL^'#YL^'"CASu"!LbOubP'MJ=<
+BNAsEb0,A061WACh[cu@<+#B@WNYr+EM"5H\aA=WI9q$>q]Z#F!+[0F(03R@Yb&J!Jgf?;L<(g
+BkM+$I?K4g04JC3+Bot0@WR]AL]NY>L]W`;H\_ZMP(R$_Bl7EsF_#'*AU&<D06DG\+EVjMI?IP
+_DfBe@DfBf4Df0V=5!C*"Df0Z-Eaa0TE%`kbASu<uDIm6sP#RT)I?G)'1G<6VA7[bWOuSV806M
+ %_@rEuAATDg:@Wc^5Df.1:GA2#8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,-DH]iMmA
+TVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/code93 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER code93--
% --BEGIN ENCODER code93ext--
-% --REQUIRES code93--
+% --REQUIRES preamble raiseerror renlinear code93--
% --DESC: Code 93 Extended
% --EXAM: Code93 Ext!
% --EXOP: includetext includecheck
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /code93 dup /uk.co.terryburton.bwipp findresource put
-begin
-/code93ext {
-
- 20 dict begin
-
- /options exch def % We are given an options string
- /barcode exch def % We are given the code39extended text
-
- /dontdraw false def
- /includetext false def
- /parse false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- /barlen barcode length def
-
- % Extended alphabet to non-extended alphabet
- /extencs
- [ (^SFT%U) (^SFT$A) (^SFT$B) (^SFT$C) (^SFT$D) (^SFT$E) (^SFT$F) (^SFT$G)
- (^SFT$H) (^SFT$I) (^SFT$J) (^SFT$K) (^SFT$L) (^SFT$M) (^SFT$N) (^SFT$O)
- (^SFT$P) (^SFT$Q) (^SFT$R) (^SFT$S) (^SFT$T) (^SFT$U) (^SFT$V) (^SFT$W)
- (^SFT$X) (^SFT$Y) (^SFT$Z) (^SFT%A) (^SFT%B) (^SFT%C) (^SFT%D) (^SFT%E)
- ( ) (^SFT/A) (^SFT/B) (^SFT/C) (^SFT/D) (^SFT/E) (^SFT/F) (^SFT/G)
- (^SFT/H) (^SFT/I) (^SFT/J) (^SFT/K) (^SFT/L) (-) (.) (^SFT/O)
- (0) (1) (2) (3) (4) (5) (6) (7)
- (8) (9) (^SFT/Z) (^SFT%F) (^SFT%G) (^SFT%H) (^SFT%I) (^SFT%J)
- (^SFT%V) (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) (^SFT%K) (^SFT%L) (^SFT%M) (^SFT%N) (^SFT%O)
- (^SFT%W) (^SFT+A) (^SFT+B) (^SFT+C) (^SFT+D) (^SFT+E) (^SFT+F) (^SFT+G)
- (^SFT+H) (^SFT+I) (^SFT+J) (^SFT+K) (^SFT+L) (^SFT+M) (^SFT+N) (^SFT+O)
- (^SFT+P) (^SFT+Q) (^SFT+R) (^SFT+S) (^SFT+T) (^SFT+U) (^SFT+V) (^SFT+W)
- (^SFT+X) (^SFT+Y) (^SFT+Z) (^SFT%P) (^SFT%Q) (^SFT%R) (^SFT%S) (^SFT%T)
- ] def
-
- /newcode barlen 6 mul string def
- /newtext barlen 6 mul string def
- /j 0 def /k 0 def
- 0 1 barlen 1 sub {
- /i exch def
- /extchar extencs barcode i get get def
- /extlen extchar length def
- newcode j extchar putinterval
- newtext k barcode i get put
- extlen 1 ne {newtext k 1 add ( ) putinterval} if
- /j j extlen add def
- /k k extlen 1 eq {1} {2} ifelse add def
- } for
- /newcode newcode 0 j getinterval def
- /newtext newtext 0 k getinterval def
-
- % Get the result of encoding with code93
- options (dontdraw) true put
- options (parsefnc) true put
- /args newcode options //code93 exec def
-
- % Replace chars in /txt with chars in newtext
- includetext {
- /txt args (txt) get def
- 0 1 newtext length 1 sub {
- /i exch def
- /txtentry txt i get def
- txtentry 0 newtext i 1 getinterval put
- txt i txtentry put
- } for
- args (txt) txt put
- } if
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/code93ext dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp code93ext 0.0 0 0 0
+%%BeginData: 42 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04Sp2A N; Q03%oD i/n
+8fPFCfK5H"(o:FD l%L@W uO* E0A q <G` iLh @rG mh3AY5 kF F/fXOu 8C3
+05kfOBl@m1P!5$b 04J@1 @rG mhP !5 $b 04] !=F C]E#G9 CL +Cia0N 1G<
+H[@r-9uATVL.F<G 1(Ci a0N 1G <] UEc Ye7 Amo LsAW
+eifE-,f4DKCuE06 ;5UB l 7R *H #R> X4a VtcO u8C3D
+fBf4Df0WCP,i2'C ia0N4a W>W I ?IQ m3 0Ia6 V33 Qn!BlU*FE2 M8P!+/T/Wr;
+\FcnqO1OXV5/Tc# UAWeit P#Z p nAWe *t3A 5;i FD5Z2F-8_M 1OYEcDfBf4D
+f0WCOu%NL8T8*YF (K\OD0 '>4 @UX: eDe* FB@ ZmRN1G<L!! 0T-I@<,jrA7
+^+J!FCqKH]g@*F( ^Y"C6 CcDH '2WOO o^@> Oo[ 4NP!5$bP') pIL]E55P"_#
+iD0'?Q5&,lSP,XU .P'E- LP%'4 LP,X6 >P! 5%&I=%,:D0 '?Q5&-6EP'N
+4"C6ATNC6CcD1G< 3GEas#u AKYi2B 8?P&P "_# pP!FGY<IL$ AI?IP_@UX:n
+ASrW"@<,jrA7^p5Ou"b&G][M7@ribsNWrfg7T:[6NWrfg7T:X!NWrfg7T:X"NWrfg7T:X#NWrf
+g7T:X$NWrfg7T:X%NWrfg7T:X&NWrfg7T:X'NWrfg7T:X(NWrfg7T:X)NWrfg7T:X*NWrfg7T:
+X+NWrfg7T:X,NWrfg7T:X-NWrfg7T:X.NWrfg7T:X/NWrfg7T:X0NWrfg7T:X1NWrfg7T:X2NW
+rfg7T:X3NWrfg7T:X4NWrfg7T:X5NWrfg7T:X6NWrfg7T:X7NWrfg7T:X8NWrfg7T:X9NWrfg7
+T:X:NWrfg7T:["NWrfg7T:[#NWrfg7T:[$NWrfg7T:[%NWrfg7T:[&NWC8_#$t4t<%gOt#$t4t
+<%gRu#$t4t<%gV!#$t4t<%gY"#$t4t<%g\##$t4t<%g_$#$t4t<%gb%#$t4t<%ge&#$t4t<%gh
+'#$t4t<%gk(#$t4t<%gn)#$t4t<%gq*!A0<4/rg-B;as_>:Q>H0NWCkp!A]Z91QDJmNWD"t!B,
+r=2i[nuNWD/##$t4t<%hF8#$t4t<$b"o#$t4t<$b%p#$t4t<$b(q#$t4t<$b+r#$t4t<$b.s#$
+t4t<$bS*!C;_H6B2(6NWDP.!C`"L7ZIL>NWD\2!D/:P8r`pFNWDh6!DSRT:6#?NNWDt:!E"jX;
+N:cVNWE+>!EG-\<fR2^NWE7B!EkE`>)ien;as_499'3_;as_49TB<`;as_49o]Ea;as_4:6#Nb
+;as_4:Q>Wc;as_4=,mJk;as_:6&l.U;as_:6B27V;as_:6]M@W;as_:7#hIX;as_:7?.RY;as_
+:7ZI[Z;as_:7udd[;as_:8<*m\;as_:8WF!];as_:8ra*^;as_:99'3_;as_:9TB<`;as_:9o]
+Ea;as_::6#Nb;as_::Q>Wc;as_::lY`d;as_:;2tie;as_:;N:rf;as_:;iV&g;as_:</q/h;a
+s_:<K78i;as_:<fRAj;as_:=,mJk;as_:=H3Sl;as_:=cN\m;as_:>)ien;as_4:lY`d;as_4;
+2tie;as_4;N:rf;as_4;iV&g;as_4<*bYC05b?F@rGmh+C\c"Ch7L?#*NecV33VfDIn$6AU&;>
+@UX:nAT!;.P&-;XOu"b+L]ESo05H@DOu%moL]LsnEbo<)L]N[<HS9)r5*@]TAU&<,BOPp(AU&<
+.DI[`1@UX:eDe*E%Bp),P99M(aAU&<5ASrW%G][G/@<.N?Ou$ueG@PQ%AKY_1AU&<,BOPqEH#@
+2;FCf]=+DW*/@<,jrA7ZltP"Us_AU&<5AT!;)P&5P`ATr6-G]Y'DL]NY>NWC8cH$tiT05;VE+D
+#e>Ch7LI!Ko5lCERC8AU&<5AT!;)P!+/J!I]<N!e$53Oo^_%I?I,SDIn$%De*E%DIn$%De*F8!
+,@ZjOu"b/ATr6-G]Y'GATr6-G]\`ACQ_AS1N.5SBl@m1NX006DKKE0@<Zg6F_-_\DfBf4Df0WV
+#]O3mF(Js$@rua6AWh9k@<-"%+Dtb7@rGmh+E)4@Bl@m10/$gRA7[bWP!>*cBl7EsF_#'*AU&<
+D06DG\+CT;'F,g?EG]]*AOu%moL]MC)GB@D@FHU*h!KsF/056S5Ou"b5G][M7FE2XLFEhmMBp)
+,P1N[k`ASuU1H&)H<ATr6-G]Y'BL]NZ4P'D(nF<G9?FEhn=DKKoEP'DD<87?OOF,g?EG]\%PFH
+UlsP#Pk1B60(8DfBf:E-,f4DKCtc@<-"%+CoD.FC]E#GEQnu061WACh[cu@<.N1Ou[rR%[&V$@
+rGmh3AY5kFHSVHA1r(@/n8fPFCfK5H"(o:FDl%L@WuO*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]H
+E+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/code93ext 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER code93ext--
% --BEGIN ENCODER interleaved2of5--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Interleaved 2 of 5 (ITF)
% --EXAM: 2401234567
% --EXOP: height=0.5 includecheck includetext includecheckintext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/interleaved2of5 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includecheck false def % Enable/disable checkdigit
- /includetext false def % Enable/disable text
- /includecheckintext false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- /barlen barcode length def % Length of the code
-
- % Prefix 0 to barcode if length is even and including checkdigit
- % or length is odd and not including checkdigit
- barlen 2 mod 0 eq includecheck and % even & includecheck
- barlen 2 mod 0 ne includecheck not and or { % odd & !includecheck
- /pad barlen 1 add string def % Create pad one bigger than barcode
- pad 0 48 put % Put ascii 0 at start of pad
- pad 1 barcode putinterval % Add barcode to the end of pad
- /barcode pad def % barcode=pad
- /barlen barlen 1 add def % barlen++
- } if
-
- % Add checksum to end of barcode
- includecheck {
- /checksum 0 def
- 0 1 barlen 1 sub {
- /i exch def
- i 2 mod 0 eq {
- /checksum checksum barcode i get 48 sub 3 mul add def
- } {
- /checksum checksum barcode i get 48 sub add def
- } ifelse
- } for
- /checksum 10 checksum 10 mod sub 10 mod def
- /pad barlen 1 add string def % Create pad one bigger than barcode
- pad 0 barcode putinterval % Add barcode to the start of pad
- pad barlen checksum 48 add put % Add checksum to end of pad
- /barcode pad def % barcode=pad
- /barlen barlen 1 add def % barlen++
- } if
-
- % Create an array containing the character mappings
- /encs
- [ (11221) (21112) (12112) (22111) (11212)
- (21211) (12211) (11122) (21121) (12121)
- (1111) (2111)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789) def
- /sbs barlen 5 mul 8 add string def
- /txt barlen array def
-
- % Put the start character
- sbs 0 encs 10 get putinterval
-
- 0 2 barlen 1 sub {
- /i exch def
- % Lookup the encodings for two consecutive barcode characters
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enca encs indx get def % Get the indxth encoding
-
- barcode i 1 add 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /encb encs indx get def % Get the indxth encoding
-
- % Interleave the two character encodings
- /intl enca length 2 mul string def
- 0 1 enca length 1 sub {
- /j exch def
- /achar enca j get def
- /bchar encb j get def
- intl j 2 mul achar put
- intl j 2 mul 1 add bchar put
- } for
-
- sbs i 5 mul 4 add intl putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 9 mul 4 add textyoffset textfont textsize] put
- includecheck includecheckintext not and barlen 2 sub i eq and {
- txt i 1 add [( ) i 1 add 9 mul 4 add textyoffset textfont textsize] put
- } {
- txt i 1 add [barcode i 1 add 1 getinterval i 1 add 9 mul 4 add textyoffset textfont textsize] put
- } ifelse
- } for
-
- % Put the end character
- sbs barlen 5 mul 4 add encs 11 get putinterval
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- includetext {
- /txt txt
- } if
- /barratio 2
- /spaceratio 2
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/interleaved2of5 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp interleaved2of5 0.0 0 0 0
+%%BeginData: 43 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 055<GA TD Tu@<Q3 m12
+gb^H\`B!23JD%Df Bf4Df 0WZ 5*@ ] T@U X:e De* FB5*@] TA 8c@-A9 )+&
++D,%uF(LLj055<6 Cis9" @q] F`C ER 4t Cia 0N1 G<H[@r -9 uATVL. F<G
+1(Cia0N1G<H[@r- 9uAR fCb @r #d rFC f]= +D, %uF(
+LLj06CcMFCoH/FH OV,1 G <i ]G ]\" @H= _m>O u"b5A
+U&<BDe<U&ATWb(O u"b)AS Gdj F GKs \1 N.5S Bl@ m1P-6N[FE2 )5B68E<AWf3
+'L]NYrOpu>KFD5Z 2F*j(N Amo L sAWf 3'P! FGY <0B5(@ZmRN 0oc8tP)XR(F
+_-_!H]ftD5*C&O5 *@^MH] ft& Eckr V1OY EdI ?J0)*g/N:D fBf4Df0WZ5*
+@^MP#Q@=FD5Z2F* j'+I? I/TF Cf]=A oDR/ +EV 1>FCoH/FHS 5=1G<i]G]\"
+@H=\4@AU&<<BmO? R09S+ EFCf] =H#I; ,F( KG9FCf]=H# I;,F(KHV09S
++EBOtmjBQPA1ASG djFHS;? 1Lad5@ rGmhH ]g@ E0Tp%25);4 ^:m,jG04K->
+E,[FDDKKH1Ch7$uARmQ7Ai4%+A4($=Ea`I"ATEe]8T&W]Ebo;qG%G2,1*CLI+>k9YF`VXI@rH7
+,@;0U%Df0B:+Co2!BlnDL061K8F(Jp'Ec5u]5CJ\oI?I/T@UX:nASrW"@<,jrA7^p5Ou$QUEbo
+<)L]W`SL]ET$Bl7EsF_#&nBOt[hOp#6&Ebo<)L]W`SL]ETTBl7EsF_#&nBOt[hP&QQeP&bn&E+
+*9"@UX:nAT!;)Oo^`BOu%&cA;C5A0Tp["@:Y/p@UX:eDe*FBGqWW8Eas#uAKYr#A<J`%@UX:nA
+SrW"@<-0qDMS=V!Ko6eP#Q.5@r-9uARfCb@r$EE@q]F`CNFW8L]ESoL]E53@UX:nAT!;)P,Wd]
+Bp(ZC1MMXHP%odQP!+.F@q]F`CNFW8+Cf(r@r$..D'3:rEas#uAKY]M98G9bWJCY>Cm"g^1OXU
+'@q]F`CNFW8+Cf(r@r$..D'3:rEas#uAKY]M98G9bWKI:F1OYEdI?I,S@q]F`CNFW8L^IX*ARf
+LsF_upAP%p/ZL^K;[Ou"b1@:UKi@<-0qDMS=V!Ks:B1N6c5L]CmmEas#uAWh=X@:UKi@<-0qDB
+NG&ARfLsF_upgOo^_j04J@1@rGmh+E1b"Ou"b#@<-0qDBNCsEbo<)L]NY>Ou%NL<%hg#@ribsN
+Wh-l1,:SE"Yqee0f"am0etI<16)Mn1,1L<NWh-l1,1PE"Yqef0en[l0etL=0ocDl0ekF=NWh0m
+0etJD"Yhbe1,4dl0ekC;NW_*l0elss1G<3GEarckEc[6J0JP==1c70M3'!-X06:TD+C\c"Ch7L
+?"d3\X#a,4OV33VfFEhmM@UX:nAT!Y;Ou%/gF,0g-DI[aD$Be&FH&)HV!b,SYCh7L?!KsF/056
+S5Ou$QUEas#uAKY]C!Kp,c@<,jk@<-FP5*CngFcp2eBl7I+P!5$bP')q104f$2@3B-!@ric,DI
+e!T99M)?@<,jrA7ZltL]NY>L]NZ4@UX:eBOPq&P!5%gP')ps055<7G`k7R1QlmDFY@<D@q$QlD
+I[`1Bl7I+P"Uro055<GC`m;,@ptO0L]W`UP,4<tL]E53ASu!dP%'4JP,Wd]C6CcD1G<0HBOPp(
+ASu!d+DR'4Ou"b#@q]:k+D#G#@N]EK99M)FDKK\;C5;qSCggge@<.NUBl8$/+DQ]6P&,pTOo]$
+ %BOPqEG^Y`GF(025BnuqUCkr4W!GQFnCm''cG]Y'B+Bost@<,jrA7ZltL]NZ4Bo!(YCkr4W!H
+_mtFEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'C\Y@r-9uARfCb@r!3$DI[L*A7]7aARfLiD
+KKH7FHUU+"Cbe[Ch7L?!g9NsP!+s2HZXLS+DHW4Oo\dI!?c*4!KmJ>$'K+\"Hie-AU&<BDe<U&
+ATT&:AU&</Df0Y>FCf]=F(or3+C1.TI=$'\F<G:R!KmIf+C\c"@rGmh+DHW4Oo^@>P"]SG!KmJ
+>$'K+\"Hie-AU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C1.TI?ITYP"9Y'F!+q#Ebo<)L]r
+rXL]ikAASu"!L^TA=P'K/P061WA0/%?WDJX$)ARTU4F(025>9IurF*i]sP,Wkm8R3uYBQG;#+E
+M"5P%'4JOo^@?P#?X?ASGdjFFB=)>q]YrF!+[0F(03R@Yb&J!Jgf?;L=3"I?K4g+DG_'Cis9"F
+Cf]=HS9JcF<G[MFFB<O04J@1Eaa'(DhnHJF)YPtATD4$BlAe/05kfO+E)4@Bl@m1+?ht3A8c@-
+A9)+&P&N'-Eb0-)Bl7KjEfsCb3IR&#Ou"b*DKKH1Ch7$uARmQ7Ai5`2P%64gCG'+8/p(ZFEd;,
+:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM@[!P.H"'F`V,9E+*6lBl7R3P#M
+~>
+% uk.co.terryburton.bwipp/interleaved2of5 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER interleaved2of5--
% --BEGIN ENCODER itf14--
-% --REQUIRES interleaved2of5--
+% --REQUIRES preamble raiseerror renlinear interleaved2of5--
% --DESC: ITF-14
% --EXAM: 04601234567893
% --EXOP: includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /interleaved2of5 dup /uk.co.terryburton.bwipp findresource put
-begin
-/itf14 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Courier def
- /textsize 10 def
- /textxoffset 0 def
- /textyoffset -7 def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textxoffset textxoffset cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Calculate EAN checksum and add to end of barcode
- barcode length dup 13 eq exch 14 eq or {
- /gtin barcode 0 13 getinterval def
- } if
-
- % Get the result of encoding with interleaved2of5
- options (dontdraw) true put
- options (showborder) true put
- options (borderwidth) 4 put
- options (borderleft) 15 put
- options (borderright) 15 put
- options (height) 0.5 put
- options (includecheck) true put
- options (includecheckintext) true put
- options (textyoffset) -10 put
- /args gtin options //interleaved2of5 exec def
-
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/itf14 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp itf14 0.0 0 0 0
+%%BeginData: 31 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 055<GA TD Tu@<Q3 m12
+gb^OuP+;CG'+8/p (ZFEd ;,: Ecc 5 ;/n 0$= E,^ uoP'E- !0 55N?0f 465
+'Tt>:%52X=FD5Z2 F-8_M 1G< 3GE as #u AWf 6?1 G<9WDK KE 0@<Wi+ @;L
+!rOu"b*DI[L*A7] joG] Y'? @; L! rOu "b5 AU& </Df
+0ZZa-&53FCf]=F( or3L ^ K; $0 6Cc MFE h_9A ohO*L
+]ESo06CcMFEqe:A ohO*M# !2i 0 5+p 2B 4uCC !Ko 6WE-,f4DKC uE06;5UBl7R
+*H#R>X4aVtcOu8C 3DfBf4 Df0 W CP,i 2'Ci a0N 4aW>WI?IQm 30Ia6V33Qn!
+BlU*FE2M8P!+/T/ Wr;\Fc nqO 1OXV 5/Tc #UA WeitP#ZpnA We*t3A5;iFD
+5Z2F-8_M1OYEcDf Bf4Df 0WCO u%NL8 M>0s G][ P9DKI"CAU& </Df0Z[/Wqn
+CFCf]=F(or3+EV1 >FE;/ BAWe^ 01G<i ]G] \1KAnH*qF< G[:G]\1KAnH
+*qFHS;?1G<i]G]\ 4LAnH*q F<G[:G ]\4LA nH* qFHS;?1G<E QBkM+$+D>>#
+B4uCM09S,#@<,jrA7^p5L^fMa@UX:eDe*FB@YbMWD3>$K04K->E,[FDFCm6a@UWe@ASu.&BT=-
+*<(8Go1a$XXF*&O6AKW]`+E)9C0f1"`BkM.%F"]1e@;0doATDg0EfrY8P#Pn!Eas#uAUBS"LbP
+!(P!4[^P#.<^HS8iPBlJ#DBlmrA1h'm(6YKnK@:OCjEfM55<(8Go1a$XXF*&O7Df0Z*Bl5&3DJ
+XS@A8,[jFE9)gEa`['AS#n&DfV"*I?IQXP"@<:BOt[hF*2>U!0T-o!/LZ3%!sXAP!5$b04S[,@
+r$..D'3>%ARfLsF_r71@<,jrA7ZltP"UTbP,W/O!g7;S!0TKlL]`fVI?IQm!Ko6eP"769BOt[h
+F*2>U$=da\@r$..D28O^C6GQP$Bf.e1Lad5@rGmhP%'4WP!+/$@<,jrA7^Q+P"T:uARfLsF_up
+gOo^__HS8iPBlJ#DBlmrA1h'm(6YL%@CIDlLBlo@]8T&$VEcP`$F<F.S7P->O+Cf(r@r!2tBkM
+.%+E2@>G%kJuA1oTV@;0doATDg0EfrY8P#Qjm</;$IV33fo!+KAW@rGmhP'N3ML^dj-ARfLsF_
+upgOo^_j04J@1@rGmhP!5$bDfBf4Df0WV#\7jkFC]E#GB@kJAWh:VE-,f4DKCgFF(fK9@W-9tA
+TDm5F_-_\DfBf4Df0WV$Y"$pA7]e*Bk2=!L]ilcDfBf4Df0WV$=[poA7]dtAS-%?&!D0UE-,f4
+DKCgG@W-9tATDg*B4uCC&!D0UE-,f4DKCgBBOtmjBQT+r!!!"^G].PCBl@m1NY6&D@r-9uARfC
+b@r#drFCf]=FE2M8P'CnaFD5Z2F,gWMAU&<BDe<U&ATWb%P'AWgEbBG9@UX:eDe*E%DfBf4Df0
+VL055<GATDTu@<Q3m12gb^P!>*c@<-"%NWX3=FDl,?Bl@m1P'CDUB6,2+Df0Z-Eaa0TE%`kbAS
+u<uDIm6sP#RT)I?G)'1G<HaAhc-*30If*F_`U>D_?-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F
+)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP'(hWFDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/itf14 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER itf14--
-% --BEGIN ENCODER identcode--
-% --REQUIRES interleaved2of5--
+% --BEGIN ENCODER identcode--
+% --REQUIRES preamble raiseerror renlinear interleaved2of5--
% --DESC: Deutsche Post Identcode
% --EXAM: 563102430313
% --EXOP: includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /interleaved2of5 dup /uk.co.terryburton.bwipp findresource put
-begin
-/identcode {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Courier def
- /textsize 10 def
- /textxoffset 0 def
- /textyoffset -7 def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textxoffset textxoffset cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Calculate checksum and add to end of barcode
- barcode length dup 11 eq exch 12 eq or {
- /checksum 0 def
- 0 1 10 {
- /i exch def
- /checksum checksum barcode i get 48 sub i 2 mod 0 eq {4 mul} {9 mul} ifelse add def
- } for
- /checksum 10 checksum 10 mod sub 10 mod def
- 12 string
- dup 0 barcode 0 11 getinterval putinterval
- dup 11 checksum 48 add put
- /pad exch def
- } if
- /barcode pad def
-
- % Compose the human readable text
- /text ( . . ) 16 string copy def
- text 0 barcode 0 2 getinterval putinterval
- text 3 barcode 2 3 getinterval putinterval
- text 7 barcode 5 3 getinterval putinterval
- text 11 barcode 8 3 getinterval putinterval
- text 15 barcode 11 1 getinterval putinterval
-
- % Get the result of encoding with interleaved2of5
- options (dontdraw) true put
- options (includecheck) false put
- /args barcode options //interleaved2of5 exec def
-
- args (txt) [ [text textxoffset textyoffset textfont textsize] ] put
- args (textxalign) (center) put
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/identcode dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp identcode 0.0 0 0 0
+%%BeginData: 34 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 055<GA TD Tu@<Q3 m12
+gb^OuP+;CG'+8/p (ZFEd ;,: Ecc 5 ;/n 0$= E,^ uoP'E- !0 54s.DK KB,
+A7^+D'Tt>:%52X= FD5Z2 F-8 _M1 G< 3G Eas #uA Wf6?1G <9 WDKKE0 @<W
+i+@;L!rOu"b*DI[ L*A7 ]jo G] Y' ?@; L!r Ou" b5AU
+&</Df0ZZa-&53FC f]=F ( or 3L ^K; $06 CcMF Eh_9A
+ohO*L]ESo06CcMF Eqe:Ao hO* M #!2 i0 5+p2 B4u CC!Ko6WE-, f4DKCuE06;5
+UBl7R*H#R>X4aVt cOu8C3 DfB f 4Df0 WCP, i2' Cia0N4aW>W I?IQm30Ia6V
+33Qn!BlU*FE2M8P !+/T/W r;\ Fcnq O1OX V5/ Tc#UAWeitP #ZpnAWe*t3A
+5;iFD5Z2F-8_M1O YEcDf Bf4D f0WCO u%NL 8M> 0sG][P9DKI "CAU&</Df0Z
+[/WqnCFCf]=F(or 3+EV1 >FE;/ BAWe^ 01G <i]G]\1KAn H*qF<G[:G]\
+1KAnH*qFHS;?1G< i]G]\4L AnH*qF <G[:G ]\4 LAnH*qFHS; ?1G<EQBkM+$
++D>>#B4uCM09S,#@<,jrA7^p5L^TA_@UX:eDe*FB@YbGUD3>$K04K->E,[FDA7]Y#@rGmh6=FC
+uASu.&BT=`6AT`*9@q]Er:iCDs+A$*TDKKB,A7Zm#F`VXI@V$Z:0d(CT+>GVoA8,[jFE9)gEa`
+['AS#n&DfV"*I?IQ=@<,jrA7^+N3/B8OAs,?63Kd4%EdKHKGA2#8/nnj-DKKB,A7\)9A4($=Ea
+`I"ATEeb6tLL_F(8lp+AcutF<F.cASuU"De*E%D09oA+Cf>-FCAm$+E).6Gp$X3B5)I/0/%?SB
+ldisEcQ)=P!=AX<.0p$04S[,@r$..D281T1Pc$e!Jh)0056S5Ou"b$BOt[hF*2=B@q]F`CNFW8
++C\c"@rGmh+DI!3LbP!kBnuhRC5;kQ4aVtfP&,PnL^B5\I?ITn!Ko6eP"769BOt[hF*2>U$=da
+\@r$..D28O^C6GQP$Bf.e1Lad5@rGmhP%'4UP!+/$@<,jrA7^Q)P"T:uARfLsF_upgOo^__HS8
+iPBlJ#DBk1dmFCT6"AO9g96YL%@CIDlLBlo@n8T&$VEcP`$F<Et_F`_\7BOr;_Df^"C8RuCMFC
+T6"AKYJrARfKuA8,[jF<GOCDg#i*ARmGIEa`['AS#n&DfV"*I?IQXP#R5GP,4=$L]CmmEas#uA
+Wh>%3/@rPBOt[hF*2>U0TlI"GV<N7Eas#uAWf6?1G<i]G]\rW+<W9Z+<VdL+<W9Z+<VdLL_,`G
+Or9E=FCf]=L]CmmEas#uAV^>B!g66?H$!VBFGL$.@<,jrA7^PuL]`f6P'M.\G]\`H@UX:eDe*F
+8"c*8D9Tj[CAU&<Q$Y!Ob@rGmhL^8e=P"_$aFCf]=L_!s'Eas#uAV^_M!Kp->H#IYDBl@m1NX0
+06DKKE0@<Zg6F_-_\DfBf4Df0WV$u'ThCis9"@q]F`CM%!kF(LMZ04Am6F!+q#Eas#uAKYo1FD
+5Z2F"]1\DKKH1Ch7$uARmQ7Ai5`9Ou$NeB60(8FEhn3+Bot1AU&;>FCf]=G].2+F(KG9FCf]=H
+#I;,F(KG9FCf]=AoDR/+EV1>FE;/BAKY8$?'9G@EbBHR$?Tj(FEh51BkM=D#%M4^FCfKUG[YW*
+F,g?@E--#;FD5Z2F-:cVEbBG9A8c@-A9)+&P&N'-Eb0-)Bl7KjEfsCb3IR&#Ou"b*A7]Y#@rGm
+hOuSV806M%_@rEuAATDg:@Wc^5Df.1:GA2#8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,
+-DH]iMmATVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/identcode 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER identcode--
-% --BEGIN ENCODER leitcode--
-% --REQUIRES interleaved2of5--
+% --BEGIN ENCODER leitcode--
+% --REQUIRES preamble raiseerror renlinear interleaved2of5--
% --DESC: Deutsche Post Leitcode
% --EXAM: 21348075016401
% --EXOP: includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /interleaved2of5 dup /uk.co.terryburton.bwipp findresource put
-begin
-/leitcode {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Courier def
- /textsize 10 def
- /textxoffset 0 def
- /textyoffset -7 def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textxoffset textxoffset cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Calculate checksum and add to end of barcode
- barcode length dup 13 eq exch 14 eq or {
- /checksum 0 def
- 0 1 12 {
- /i exch def
- /checksum checksum barcode i get 48 sub i 2 mod 0 eq {4 mul} {9 mul} ifelse add def
- } for
- /checksum 10 checksum 10 mod sub 10 mod def
- 14 string
- dup 0 barcode 0 13 getinterval putinterval
- dup 13 checksum 48 add put
- /pad exch def
- } if
- /barcode pad def
-
- % Compose the human readable text
- /text ( . . . ) 18 string copy def
- text 0 barcode 0 5 getinterval putinterval
- text 6 barcode 5 3 getinterval putinterval
- text 10 barcode 8 3 getinterval putinterval
- text 14 barcode 11 2 getinterval putinterval
- text 17 barcode 13 1 getinterval putinterval
-
- % Get the result of encoding with interleaved2of5
- options (dontdraw) true put
- options (includecheck) false put
- /args barcode options //interleaved2of5 exec def
-
- args (txt) [ [text textxoffset textyoffset textfont textsize] ] put
- args (textxalign) (center) put
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/leitcode dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp leitcode 0.0 0 0 0
+%%BeginData: 34 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 055<GA TD Tu@<Q3 m12
+gb^OuP+;CG'+8/p (ZFEd ;,: Ecc 5 ;/n 0$= E,^ uoP'E- !0 5P36FC T6"
+AUB4IOu8C305kfO Bl@m1 P!5 $b0 4J @1 @rG mhP !5$b04 ]! =FC]E# G9C
+L+Cia0N1G<H[@r- 9uAT VL. F< G1 (Ci a0N 1G< i]G]
+[P9DKM#]Ou"b5AU &<<B m O? H$ Bd1 uFC f]=G ].2+F
+(KHL!0T,kFCf]=H #I;,F( KHL q 3!N eB Otmj BQT %2Ou%#qFD5 Z2F-<^[F*)G
+:DJ+':E+P1qH\_] c23JDe E-, f 4DKC /fX( GdV F(LLtH]gXB P#RT(P%'TNO
+thst4d(eHEckrV4 aW>DP! 5%O P!5$ bI=% ,/F E2M8Ou%NL< IL$AOrfcH05
+kfOBl@m1P!5$bI? IQJE- ,f4D KC/f1 OYEX 06C cMFCoH/F<G [:G][P9DKM$
+nOu"b5AU&<<BmO> 5FCf] =F(or 3OtVt S06 CcMFEh_9Ao hO*+EV1>FEh
+_9AohO*OtVtS06C cMFEqe: AohO*+ EV1>F Eqe :AohO*OtVt S05+p2B4uB0
+BOtmjBQTCjOu$QUEas#uAWgMY%?bR;@<,jrA7^p5L^oSbOp$+b@WuO*E%Ys<Blmj'A7\)9A5$Q
+PB67gI/js8nFE:r*AKXffF*&NuASH6rDe*E%D09oA+C\n)0f'qjEZd(n+Co2!BlnDL061K8F(J
+p'Ec5u]5CJ\o@UX:eDe*F+OuS7OP%Kk@LcLVpP&bn&@WuO*E%Ys<Blmj'A7\)9A4($=Ea`I"AT
+Eea6tLL_F(8lp+AcutF<F7gBlmj'A7Zm#F`VXI@rH7,@;0U%Df0B:+Co2!BlnDL061K8F(Jp'E
+c5u]5CJ\oI?I/T@q]F`CNFW8L]ESoL]E53L^\V`Bp(ZC1G<6OARfLsF_r72BOt[hF*2=B@UX:e
+De*E%Bp),F0TrDLL]W`SL]ET$H\_ffCjgYd$'K+QP#[YGOu%NL82"IdARfLsF_upA@q]F`CNFW
+8L^K;[P,X6EP%p.9@UX:eDe*FB@YbMW4aUXHEas#uAV^eY94MXH@r$..D29m/!Kq;H04K->E,[
+FGASH6rDe*EG@:V`=ARfLDBkM.%N\sCG@rHC.ARfg)6tLL_F(8lp+AcutF<F7gBlmj'A7ZlnBO
+t[h+Co2!BlkJ:Ec6,8A7]:)061K8F(Jp'Ec5u]5CJ\oI?IQc%[*ZO3/@QD@<,jrA7^pLOuS7,@
+q]F`CNFW8LbOtmP'AWh@<,jrA7^ofOu"b5AU&<W&g/;>+<W9Z+<W9Z+<W9Z+<Ve_&sB)S)3Qdt
+AU&<Q!+KAW@rGmhL]E57P"_$aFCf]=L^%<sEas#uAV^MG"-Q?@H$!VBFGL95@<,jrA7^Q&L]`f
+6P'M.\G]\`O@UX:eDe*F8$]"kI9Tj[CAU&<Q&Ro0h@rGmhL^f.@P"_$aDfBf4Df0WV#\7jkFC]
+E#GB@kJAWh:VE-,f4DKCgHBl7EsF_#&nBOt[hAmoLsAWh9k@<-"%+C\c"@rGmh+E)4@Bl@m10/
+ %$WFCfK/ARTanA28(823L1e1LY<:F,g?EG][.4>9J$!G]Y'MAU&<ADe<U&ATT&:AU&<BDe<U&
+ATT&:AU&</Df0Y>FCf]=F(or3+C-*qP'CDUB60(?FCf]=G[YE&B5W_6@qBP"ATErY@<-"%NWX3
+=FDl,?Bl@m1P'CDUB6,2+Df0Z-Eaa0TE%`kbASu<uDIm6sP#RT)I?G)'1G<QUBlmj'A7^o`P%6
+4gCG'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM@[!P.H"'F`
+V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/leitcode 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER leitcode--
% --BEGIN ENCODER databaromni--
+% --REQUIRES preamble raiseerror renlinear renmatrix--
% --DESC: GS1 DataBar Omnidirectional
% --EXAM: (01)24012345678905
% --EXOP:
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/databaromni {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /height 33 72 div def
- /linkage false def
- /format (omni) def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- format (truncated) eq {/height 13 72 div def} if
- /height height cvr def
-
- % Strip the AI and optional check digit
- barcode length dup 17 eq exch 18 eq or {
- barcode 0 4 getinterval (\(01\)) eq {
- /binval [
- linkage {1} {0} ifelse
- barcode 4 13 getinterval {48 sub} forall
- ] def
- } if
- } if
-
- % Calculate EAN checksum and add to end of barcode
- /checksum 0 def
- 0 1 12 {
- /i exch def
- /checksum checksum barcode i 4 add get 48 sub i 2 mod 0 eq {3 mul} if add def
- } for
- /checksum 10 checksum 10 mod sub 10 mod def
- 18 string
- dup 0 barcode 0 17 getinterval putinterval
- dup 17 checksum 48 add put
- /barcode exch def
-
- % Create the human readable text
- /txt barcode length array def
- 0 1 barcode length 1 sub {
- /i exch def
- txt i [barcode i 1 getinterval 0 0 () 0] put
- } for
-
- /ncr { % n r
- 2 copy sub 2 copy lt {exch} if % n r maxd mind
- 1 1 5 3 roll % mind j=1 v=1 n maxd
- 1 add -1 exch { % mind j v n -1 maxd+1
- mul % mind j v*i
- 1 index 3 index le {
- 1 index idiv exch 1 add exch
- } if
- } for
- { % mind j v
- 1 index 3 index gt {exit} if
- 1 index idiv exch 1 add exch
- } loop
- exch pop exch pop
- } bind def
-
- /getRSSwidths {
- /oe exch def
- /el exch def
- /mw exch def
- /nm exch def
- /val exch def
- /out el array def
- /mask 0 def
- 0 1 el 2 sub {
- /bar exch def
- /ew 1 def
- /mask mask 1 bar bitshift or def {
- /sval nm ew sub 1 sub el bar sub 2 sub ncr def
- oe mask 0 eq and nm ew sub el 2 mul sub bar 2 mul add -2 ge and {
- /sval sval nm ew sub el sub bar add el bar sub 2 sub ncr sub def
- } if
- el bar sub 2 gt {
- /lval 0 def
- nm ew sub el sub bar add 2 add -1 mw 1 add {
- nm exch sub ew sub 1 sub el bar sub 3 sub ncr
- /lval exch lval add def
- } for
- /sval sval lval el bar sub 1 sub mul sub def
- } {
- nm ew sub mw gt {/sval sval 1 sub def} if
- } ifelse
- /val val sval sub def
- val 0 lt {exit} if
- /ew ew 1 add def
- /mask mask 1 bar bitshift not and def
- } loop
- /val val sval add def
- /nm nm ew sub def
- out bar ew put
- } for
- out el 1 sub nm put
- out
- } bind def
-
- 0 1 12 {
- /i exch def
- binval i 1 add 2 copy get binval i get 4537077 mod 10 mul add put
- binval i binval i get 4537077 idiv put
- } for
- /right binval 13 get 4537077 mod def
- binval 13 2 copy get 4537077 idiv put
-
- /left 0 def
- /i true def
- 0 1 13 {
- /j exch def
- binval j get
- dup 0 eq i and {
- pop
- } {
- /i false def
- /left left 3 -1 roll 10 13 j sub exp cvi mul add def
- } ifelse
- } for
-
- /d1 left 1597 idiv def
- /d2 left 1597 mod def
- /d3 right 1597 idiv def
- /d4 right 1597 mod def
-
- /tab164 [
- 160 0 12 4 8 1 161 1
- 960 161 10 6 6 3 80 10
- 2014 961 8 8 4 5 31 34
- 2714 2015 6 10 3 6 10 70
- 2840 2715 4 12 1 8 1 126
- ] def
-
- /tab154 [
- 335 0 5 10 2 7 4 84
- 1035 336 7 8 4 5 20 35
- 1515 1036 9 6 6 3 48 10
- 1596 1516 11 4 8 1 81 1
- ] def
-
- /i 0 def {
- d1 tab164 i get le {
- tab164 i 1 add 7 getinterval {} forall
- /d1te exch def /d1to exch def
- /d1mwe exch def /d1mwo exch def
- /d1ele exch def /d1elo exch def
- /d1gs exch def
- exit
- } if
- /i i 8 add def
- } loop
-
- /i 0 def {
- d2 tab154 i get le {
- tab154 i 1 add 7 getinterval {} forall
- /d2te exch def /d2to exch def
- /d2mwe exch def /d2mwo exch def
- /d2ele exch def /d2elo exch def
- /d2gs exch def
- exit
- } if
- /i i 8 add def
- } loop
-
- /i 0 def {
- d3 tab164 i get le {
- tab164 i 1 add 7 getinterval {} forall
- /d3te exch def /d3to exch def
- /d3mwe exch def /d3mwo exch def
- /d3ele exch def /d3elo exch def
- /d3gs exch def
- exit
- } if
- /i i 8 add def
- } loop
-
- /i 0 def {
- d4 tab154 i get le {
- tab154 i 1 add 7 getinterval {} forall
- /d4te exch def /d4to exch def
- /d4mwe exch def /d4mwo exch def
- /d4ele exch def /d4elo exch def
- /d4gs exch def
- exit
- } if
- /i i 8 add def
- } loop
-
- /d1wo d1 d1gs sub d1te idiv d1elo d1mwo 4 false getRSSwidths def
- /d1we d1 d1gs sub d1te mod d1ele d1mwe 4 true getRSSwidths def
- /d2wo d2 d2gs sub d2to mod d2elo d2mwo 4 true getRSSwidths def
- /d2we d2 d2gs sub d2to idiv d2ele d2mwe 4 false getRSSwidths def
- /d3wo d3 d3gs sub d3te idiv d3elo d3mwo 4 false getRSSwidths def
- /d3we d3 d3gs sub d3te mod d3ele d3mwe 4 true getRSSwidths def
- /d4wo d4 d4gs sub d4to mod d4elo d4mwo 4 true getRSSwidths def
- /d4we d4 d4gs sub d4to idiv d4ele d4mwe 4 false getRSSwidths def
-
- /d1w 8 array def
- 0 1 3 {
- /i exch def
- d1w i 2 mul d1wo i get put
- d1w i 2 mul 1 add d1we i get put
- } for
-
- /d2w 8 array def
- 0 1 3 {
- /i exch def
- d2w 7 i 2 mul sub d2wo i get put
- d2w 6 i 2 mul sub d2we i get put
- } for
-
- /d3w 8 array def
- 0 1 3 {
- /i exch def
- d3w 7 i 2 mul sub d3wo i get put
- d3w 6 i 2 mul sub d3we i get put
- } for
-
- /d4w 8 array def
- 0 1 3 {
- /i exch def
- d4w i 2 mul d4wo i get put
- d4w i 2 mul 1 add d4we i get put
- } for
-
- /widths [
- d1w {} forall
- d2w {} forall
- d3w {} forall
- d4w {} forall
- ] def
-
- /checkweights [
- 1 3 9 27 2 6 18 54
- 58 72 24 8 29 36 12 4
- 74 51 17 32 37 65 48 16
- 64 34 23 69 49 68 46 59
- ] def
-
- /checkwidths [
- 3 8 2 1 1 3 5 5 1 1 3 3 7 1 1
- 3 1 9 1 1 2 7 4 1 1 2 5 6 1 1
- 2 3 8 1 1 1 5 7 1 1 1 3 9 1 1
- ] def
-
- /checksum 0 def
- 0 1 31 {
- /i exch def
- /checksum checksum widths i get checkweights i get mul add def
- } for
- /checksum checksum 79 mod def
- checksum 8 ge {/checksum checksum 1 add def} if
- checksum 72 ge {/checksum checksum 1 add def} if
- /checklt checkwidths checksum 9 idiv 5 mul 5 getinterval def
- /checkrtrev checkwidths checksum 9 mod 5 mul 5 getinterval def
- /checkrt 5 array def
- 0 1 4 {
- /i exch def
- checkrt i checkrtrev 4 i sub get put
- } for
-
- % Stacked format
- format (omni) eq format (truncated) eq or { % linear
-
- /sbs [
- 1 d1w {} forall checklt {} forall d2w {} forall
- d4w {} forall checkrt {} forall d3w {} forall 1 1
- ] def
-
- <<
- /ren //renlinear
- /sbs sbs
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- /txt txt
- /textxalign (center)
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- } { % 2D - stacked or stackedomni
-
- /top [ 1 1 d1w {} forall checklt {} forall d2w {} forall 1 1 0 ] def
- /bot [ 1 1 d4w {} forall checkrt {} forall d3w {} forall 1 1 0 ] def
- 0 2 24 {
- /i exch def
- top i get {0} repeat
- top i 1 add get {1} repeat
- } for
- 50 array astore /top exch def
- 0 2 24 {
- /i exch def
- bot i get {1} repeat
- bot i 1 add get {0} repeat
- } for
- 50 array astore /bot exch def
-
- % Stacked
- format (stacked) eq {
- /sep [ 50 {0} repeat ] def
- 4 1 45 {
- /i exch def
- top i get bot i get eq {
- sep i 1 top i get sub put
- } {
- sep i 1 sep i 1 sub get sub put
- } ifelse
- } for
- /pixs [
- 5 {top aload pop} repeat
- sep aload pop
- 7 {bot aload pop} repeat
- ] def
- /pixy pixs length 50 idiv def
- } if
-
- % Stacked omnidirectional
- format (stackedomni) eq {
- /sep1 [ top {1 exch sub} forall ] def
- sep1 0 [ 0 0 0 0 ] putinterval
- sep1 46 [ 0 0 0 0 ] putinterval
- 18 1 30 {
- /i exch def
- top i get 0 eq {
- top i 1 sub get 1 eq {
- 1
- } {
- sep1 i 1 sub get 0 eq {1} {0} ifelse
- } ifelse
- } {
- 0
- } ifelse
- sep1 exch i exch put
- } for
- /sep2 [ 0 0 0 0 21 { 0 1 } repeat 0 0 0 0 ] def
- /sep3 [ bot {1 exch sub} forall ] def
- sep3 0 [ 0 0 0 0 ] putinterval
- sep3 46 [ 0 0 0 0 ] putinterval
- 19 1 31 {
- /i exch def
- bot i get 0 eq {
- bot i 1 sub get 1 eq {
- 1
- } {
- sep3 i 1 sub get 0 eq {1} {0} ifelse
- } ifelse
- } {
- 0
- } ifelse
- sep3 exch i exch put
- } for
- /f3 [1 1 1 1 1 1 1 1 1 0 1 1 1] def
- true 0 1 12 {dup bot exch 19 add get exch f3 exch get eq and} for {
- % Right shifted module for value 3 finder
- sep3 19 [ 0 0 0 0 0 0 0 0 0 0 1 0 0 ] putinterval
- } if
- /pixs [
- 33 {top aload pop} repeat
- sep1 aload pop
- sep2 aload pop
- sep3 aload pop
- 33 {bot aload pop} repeat
- ] def
- /pixy pixs length 50 idiv def
- } if
-
- % Return the arguments
- <<
- /ren //renmatrix
- /pixs pixs
- /pixx 50
- /pixy pixy
- /height pixy 72 div
- /width 50 72 div
- /opt options
- >>
-
- dontdraw not //renmatrix if
-
- } ifelse
-
- end
-
-} bind def
-/databaromni dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp databaromni 0.0 0 0 0
+%%BeginData: 103 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 061WAD .. O,Bm>e #06
+M%_@rEuAATDg:@W c^5Df .1: GA2 # 8P1 l(D Ops 'T@<>p e@ <-:'DJ =HR
+'Tt>:%52X=FD5Z2 F-8_M 1G< 3GE as #u AWf 6?1 G<9WDK KE 0@<Wi+ @;L
+!rOu"b)ASGdjFGM )r8< Plo 1G <Q YDJ NZn AKY SnCi
+a0N1G<?YEc#6,NW a9;D J >7 iD fBf 4Df 0WZY :js=E
+bTE(FEqh:P!+/J! Ko='%< $3- B l@m 1H ]kFA @;L !rP!+/T5^e epOuSV6P,4<
+rNWD;+NHB2`AWf3 'OtDh\ P') p OOu% N5Ot Ccr F_-^lI?ITY P%BdtOuY16E
+-,f4DKCt)Ou%NL< ,Z_tBl @m1 H]g1 5P"B 8(E c#6,NX9fJF `(\tFCf!G4a
+ShqASGdjFGLB^8< Plo1O YEc0 5+p2B 4uB0 BOt mjBQTCjOu$ QUEas#uAV^>
+B"HlH="=PrY.?\O p04K- >E,[F ?@<>p e@< -:'DJ;FGA3 ieI7n6K4+@K
+X[@7"CC+AZilBk1 puARfgr Df0!"+ Dl7BF <G% (B5)6+GA2/ 4+=Jou.3N&<
+E,95u@<?4%DBNY(ASuU(Anbgs0/%?SBldisEcQ)=P!=AX<+99V@rGmhP%'4ZP&4Z:Eas#uAWgM
+Y&s@*p"FDe2GA2#8/nAC4@:EYcDf'B+6=FCuASu.&BT=l=;_]C_@<>pE@<*JdD/O&uBl[cpFD5
+Z2@;I''F`VXI@V$Z:1E^UV+>G\qA8,[jFE9)gEa`['AS#n&DfV"*I?IQ=@<,jrA7^Q"@UX:eDe
+*FB@Yb/MWKKr%OuS7OP%Kk@LcLVpP&bn&@WuO*E%Y[0FCAWeEc5f4BgQ6=6YKnK@:OCjEfMtH;
+_]C_@<>pE@<*JdD/O&uBl[cpFD5Z2@;I''F`VXI@rH7,@;0U%Df0B:+Co2!BlnDL061K8F(Jp'
+Ec5u]5CJ\oI?I/T@q]F`CNFW8L]ESoL]E53L^\V`Bp(ZC1G<6OARfLsF_r72BOt[hF*2=B@UX:
+eDe*E%BnunT!Kp*30TrDLL]W`SL]ET$H\_ceCjhIGOo^_%I?I,S@q]F`CNFW8L^IX*ARfLsF_u
+pAP%p/ZL^K;[Ou$QUEas#uAWgMY&s>D)@UX:eDe*F8&X#dsBOt[hF*2>U0TlI"D0mpFGA2#8/n
+AC4@:EYcDf'B+6=FClBOt[h6tp:JFH/CRDI[U*Eb/a&+@f?b+@KX[@7"CC+AZilBk1puARfgrD
+f0!"+Cf(r@r!2tBkM.%+E2@>G%kJuA1oTV@;0doATDg0EfrY8P#Qjm</;0MV33fo!+KAW@rGmh
+P'N3ML_4-1ARfLsF_upgOo^_j04J@1@rGmhP!5$b06DG\+C\c"@rGmhP%'R\Ou%moL]LsnEas#
+uAWgMY!KsF/056S5Ou%3)F<G9?>9IB`Eas#uAKY]C!Kp-4!/LW8!/LV\P'DD<82"jjEdNTDOr9
+F^L]W_WP%K'(5(/SnL]N;4L]rS:P)"hoOo^C=P!45UCkr+T=GR'B=H[*>L]NZ@P#@H,L]NY>P!
+4;W<.0p#H\_]c=GR'B=HZL-P!FGY</:R<=HZRF5)96&!KoWpP%Be?P')pOP')29%[&V$B4Z0_;
+c@mSA9;L+HS9;KP!5$b04es_5*@]TD0M.,Ou"b/D3@)G1G<o[Cm$uF1G<ZhF<G.2OpR:-05Y-=
+CPVtR1Pc$e!G-)'!g9O004J@1P!5$b04f?`!Ko5lD..L$+DkP.CPW"#@<.MAP&c^AHS9G`@;I'
+(D'3D6P,X6<P,W#/+C\c"P,X6=P,W>/Efr4sAKYhuF)-R3P!+s2DJ^M-GESq:Ckr.UCm(c,@<.
+/*P&-9^M#NQ0Op$+bF*:u.+EM^7C`mV4+D#b[WF]n/WFB:VOo]-1+C\c"P,X6=P,W>/Eg!Db1O
+YEcAS`Ju@<.O1L]W`9HS92Y@;L`"Ou$um+D#b[WF]n/WFB:VOo^@?Oo^C=D0Ld:Oo]oID3@)GW
+F^::WJCS<WF]lg@UX;?WJCY>WGZ3d05Pf?Cm$tuG%#3M!Ko6eP"76IG%#20F*:u.+Dc40C`m;*
++C\c"P,X6<P,XU\P,XU#I=#jK+D#b[WGQjB:jXj:G%#20F*:u.L]N[<Ou%NL<.0p006Uc?+Eh1
+0+EM^7Cm(c\1Nm2CL]ETMH]gXBP#O)GG9CI@L]NY>Ou"b.@<63,D..L$L]LsnEfprrE0:?e1OY
+Et06Uc?+Eh10+EM^7Cm"g^1G<W_+Du$=ATs<:Ou%$!F<G%$EZeq;P'DD<88iWm+D#AF!KsF"D3
+B-^F``%p%[&V$@VK_'@;I&j+Dbb0CLLjeH\_]NH\_ZMP#Yt"Eas#uAV^JF%?aD3LbP!kI?I0-O
+u%moL]N;?HS9)r5*@^2Bl8*&C`mGJ!KmJ>!g4Fa94DUQG%#20Bp),B!(AsAP%od[P&-9^P'CGM
+DK]H)+DDs-Bl8*&C`mGT98!:63q\Y6P'DD<82#!tB4uB0@VK_'@;L`/P"UH.76:+)C6CA^Bl8*
+&CkrOV!g4Fa98!:63q\Y6P'AWrAS-%?!0T,kBcqM<F_-^lL]E53L^e\aC6CcD1Lb'9G%#20C6D
+5Q3/@Qt4_^&^H]iN"HS9(UAmoLsAWei&Ch74#+DbV$FGL$Ts,r.n$A].+P,W#;E0;c8Cm"g^1O
+YEdI?I,SA2,3CAS-%=#!J,IOu"b%1*CCEAorb34d'QC1G<8p+ED1/BQSt54d&^+1G<8q+ED1/B
+QSt54d'QC1G<iY@PKbt+BsR#TSNT(%#>%B#`&M9!252LL',5G!252UL^&Y>L]`H0L^JkAhM)-K
+L^8eBL]iM;L`_EsL'jB(#N(=AL^Jq?L^&YBLdm+,(krBeL]iMBL]N;;L]N<\?'6usFCAW52)HF
+[L&k)+!/Lf7$A\b>#D`M=</(M`L&k,,#D`YA"Gd5;'Smug"m^mG%#>4G#)EJ>",JXe$AJaIL'?
+q"$]"qA#`&M;;2>6YOu"b*L]ESoHXniRFCAW52DcOjP"UsHHZW\*0fCj2BnueQ!JguD9RD2N8M
+=U/FCgV!Ou"b%0m%>s5*@]TA2.qFAWf6?1G<8nD0Ko]5*@]TA2.Y3AWf6?1G<8nASc:J5*@]TA
+2._<P!5$bP!FGY<%hr.Bo!%X!Ko6eP%?:\L]ESoHXnlSFCAW52)HFiP"UsHHZW\*0f:d1BnueQ
+!JguD9RD2N8M=U0FCgV!Ou"b%13@Gt5*@]TA28"GAWf6?1G<8oD0Ko]5*@]TA27_4AWf6?1G<8
+oASc:J5*@]TA27e=P!5$bP!FGY<%hr.Bo!%X!Ko6eP%?:\L]ESoHXnoTFCAW52DcOjP"UsHHZW
+\*0fCj2BnueQ!JguD9RD2N8M=U1FCgV!Ou"b%1N[Pu5*@]TA2A(HAWf6?1G<8pD0Ko]5*@]TA2
+@e5AWf6?1G<8pASc:J5*@]TA2@k>P!5$bP!FGY<%hr.Bo!%X!Ko6eP%?:\L]ESoHXnrUFCAW52
+)HFiP"UsHHZW\*0f:d1BnueQ!JguD9RD2N8M=U2FCgV!Ou"b%1j!Z!5*@]TA2J.IAWf6?1G<8q
+D0Ko]5*@]TA2Ik6AWf6?1G<8qASc:J5*@]TA2Iq?P!5$bP!FGY<%hr.Bo!%X!Ko6eP%?:W0m@O
+YA2,3;0kYQjWFR`*AWfr%0kG0>+Cm3DGAi9?AmoLsAKYVsFAc%9GA1T0BQK=m04Ze]AKYM<+Cm
+3>F-<M50m$uiC1K&1Ch4`"0l;,GL]hg?F_)\.ATUgK;g2qdFD,`Y1G<8oGAeU71*C*_B6068A2
+87FP%nM_ASc9-A28"GDhnO<Eckq9B4Z0_;c@mSA9;L+Ou"b%13[:PA259<11tZkWFRc+Dj""/1
+1b95+Cm6EG@cR5AmoLsAKYVsFAc%9GA1T0BQK=m04Zk_D]iRH+Cm9@F-<M51N[2k;IhRpCi:G,
+1Mq>SL]h<uCia/1B4Z0_;c@mSA9;L+Ou"b%1O!CQA2>?=1M:clWFRf,AWge=1M(B6+Cm9FG@cR
+5FE2M8+D58-;H$M<Bk2=!F-8=4A2JLK+Cm;OA2Iq?P,VtKFDm=WA2Ik6D]iRID0KoS"E\[,AKY
+VsFAc%9GA1T0BQK=m04Zn`AKYM?+Cm<AF-<M51j!Z!;IhUqCh4`"1i7GJL]h<uCia/1B4Z0_;c
+@mSA9;L+Ou"b%0mAEZOpR:-L]E53L]_uWBp(ZC1Lr4a+DHW5P&+Y`GAeU<P"Us_A2/9NBnuhRC
+kr+T!G!p/AKY]M99OOJP"76:13\N[OpR:-L]E53L]_uWBp(ZC1Lr7bL^.XM!g7A_WFRc.D]ibW
+99OO113\NYBnuhRCm(c.13[:PBp),PG^Y`G04Zk_L^9.MOu%moL]N;6HS9)r5*@^41O"W[Bnuh
+RCm(c.1O!a[Bp),PG[rUSL^%RL!g7A_WFRf/AKY]M99OOJP"76:1j=`]OpR:-L]E53L]_uWBp(
+ZC1Lr=d+DHW5P&+YcGAeU<P"Us_A2JKQBnuhRCkr+T!G"$2AKY]M99OOJP"76MBk2=!F!+[0A2
+/:TI?I0413\(nP"B1?GC+b$8RsZ%H[V&K?'6us@q]F`CNj?(B4uC.+BsX&L]`G>L`;-OL^&YJL
+c1&MLe*==L^8eWLa7cbL]iN+Lbji!L`hL"Ld?hNL_,A-La%WkLdd+SLd[%OLc\n*1G<6OARfM"
+Bk2=!F!+\C",I5=!f-l5!Jgi6"c*><!Jgc4",I&8#D`D:!Jgi6!Jh&<!Jgc4!f.);"Gd)7!Jgf
+5"c*A=!Jgc4!f-r7#`&M;!Jgc4"c*D>!Jgc4!Jgi6$&AV<!F:jE04S[,@r$..D281T1Pc$e!Jh
+hE056S5Ou"b$BOt[hF*2=B@q]F`CNFW8+EqO1FD,_<Bp),!BOt[hG@bK$BQS;<Bp),PCm"g^1O
+YEW04S[,@r$..D'3>%ARfLsF_uq1P%p.9@q]F`CNFW8L^9/9HS8lBARfLsF_r72BOt[hF*2>U!
+KmJH1OYEc@q]F`CNFW8Le*\$HS8lBARfLsF_r72BOt[hF*2>U!KmJH1OYEc04S[,@r#n&+Cf(r
+@r$:&A9;L++Cf(r@r$..D28L];MYL>Ckr7X9Th1b@q]F`CN=N;ATf2+BOt[hGA1T0BQG;+BOt[
+hF*2>U$'K%Z"d3\X"d2QB1G<6OARfLrFGL*`$'I*#!/LZ3"FDe9P!5$b@q]F`CN=M>Bcpo!ARf
+LrFE1r9L]hFTWKKo;G^Y`GAoD^,@<@M4Df'B+P!*DqEc#6,NX9fJF`(\tFCf!G4d'i406:TD+B
+sX&A2/:TI?I03BOt[hCik#PP"B1>GC+b$8RsZ%H[V&K@q]F`CN=NDI?I041O"1oP"CH1L]LeE1
+H[cQEb0,A061WACh[cu@<+#B@WNZ5@WO23BQG;#+EM"5P%'4JOo^@?P#?X?ASGdjFFB=)>q]Yr
+F!+[0F(03R@Yb&J!Jgf?;L=3"I?K4g06DG\+EVjM06CcMFEh51BkM=D#%M4^FCfJGDfBe@DfBf
+4Df0V=5!C*"Df0Z-Eaa0TE%`kbASu<uDIm6sP#QjV06D,O+BsX&L]M$@GC+b$8RlFF@r#n&H[V
+&KA28@UI?I0X!Jgc4!*taD04JjA+BsX&L]M$CGC+b$8RlFF@r$+,H[V&KA2AFVI?I0X!Jgc4!*
+taDL]E54L_tIlBp(ZC1N[PS+DI!3H\_ZMP(RjpE$/kN!KmJH97)HqI?K52P":BaOpR9Z06D,OP
+!5$bL]E54L_tIlBp(ZC1Lb9E+DI!3H\_]NP(R4^F<G:R!KmJH97)HpI?K52P":BaOpR9Z04JjA
+P!5$bAoD^,@<@M7F*(i#CLq%>4aSi'AT/brLba=5!.C#_?'7"""Gd)7/UK-bP!5$bFDl+@Bp)+
+uDfd+9P"Us$HZNb;+DHW4FDl+@Bp),PWKMLSHZNb;+DHW4F(K;5BnueQWKKo;WKMLSP#Zpn82"
+prG]P!3L]r-IDfCj@P')29K6(UCOogehL^/99Dfh-DP')29K3aWr05tWMGp%'?G]T$WLbb,kOu
+ %NL<+^&hD..OH$ZgDu@r#XdDf'B+P!+.FF(K;F+Bot1DfC&Z!KoX0WI9q$?'7!bAT0A[!*b6Z
+L]E52L]C_DH#mP90o.GdL]E52L]E52?'9Jh&r6RE*d]PSP!5$bFDl+@Bp),F!0TKlFDl+@Bnue
+QWKKo1!KoTmL]MpNF(K;F+DHW4P,XU;L]ET$H\_]NH\_ZMP#Zpn<IK4M!.C#1F(K;FP!3TC5*C
+/=P"76IAT0CI>DN98!/LW2!/MA:L]E53I?K5=!/LW2!/LV\Ou"b4AT0FJ>9IBnFF/fEP!5&.I?
+I0-Ou%/jE&3:M>DN98!/LW2!*tb5F(K;HLb;nf!/LW2!/LV\P'MisL]N;RHS9)r5*@^2Dfd+9P
+"UT2P!+/$Dfd+9L]N[<P"UT3P!+/J!I]<9AT0FJBnueQWKKo1!0TKlL]MpNL]Djd<IL$1I=$bM
+I?ITOAT0Gg5&$0DP'DD<82"R2+BsX&L]N;4L]N;4L]N;4L]N;4L]E53L]N;4?'7!cEckrL!/LZ
+3%""-s@W-@O5)9l8!Kp*=5%ZU65*AR%4d#qrP"9q@AT0G]'3g7mL]E52L]E52L]E52L]E52L]E
+53L]E52?'9J]P#O)RBm=\A>DOGLFDl,]!g7\SP(RgeE&!LWP'(hWE&*RXP'(hWE&3XYP')R(HX
+^o8OogehI?K4gOu"b1Bm=nGE+sQ<P%'5&P#@H!I?IPl4>1_dDD*Y`ASu?nFE2)?05tWMF!,F9G
+]PNWBm=lY1,!T\G^1ENBm=nVBOtmjBQPA9Bm=oZ8<PkaGA1T0BS\F"8<PkaDfBe@DfBf4Df0V=
+5!C*"Df0Z-Eaa0TE%`kbASu?nFE2)?P#Qjm<K]@jOq*X204\L5@:EYcDf'B+OuSV806M%_@rEu
+AATDg:@Wc^5Df.1:GA2#8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,-DH]iMmATVm"@r#
+drB75qB~>
+% uk.co.terryburton.bwipp/databaromni 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databaromni--
% --BEGIN ENCODER databarstacked--
-% --REQUIRES databaromni--
+% --REQUIRES preamble raiseerror renlinear renmatrix databaromni--
% --DESC: GS1 DataBar Stacked
% --EXAM: (01)24012345678905
% --EXOP:
-% --RNDR: renmatrix renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-dup /databaromni dup /uk.co.terryburton.bwipp findresource put
-begin
-/databarstacked {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Get the result of encoding with databaromni with format=stacked
- options (dontdraw) true put
- options (format) (stacked) put
-
- /args barcode options //databaromni exec def
-
- args (opt) options put
- args
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/databarstacked dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+% --RNDR: renmatrix
+%%BeginResource: uk.co.terryburton.bwipp databarstacked 0.0 0 0 0
+%%BeginData: 29 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04\L5@ :E YcDf'B +Ou
+P+;CG'+8/p(ZFEd ;,:Ec c5; /n0 $ =E, ^uo P'E -!04\L 5@ :EYcF* (i#
+CLq%'L_Q"0Ops'_ E-,f4 DKC t)O u" b# @<, jrA 7^ofOu "b %Df0Z- Eaa
+/7AmoLsAWeifE-, f4DK CuE 06 ;5 UBl 7R* H#R >X4a
+VtcOu8C3DfBf4Df 0WCP , i2 'C ia0 N4a W>WI ?IQm3
+0Ia6V33Qn!BlU*F E2M8P! +/T / Wr; \F cnqO 1OX V5/Tc#UAWe itP#ZpnAWe*
+t3A5;iFD5Z2F-8_ M1OYEc DfB f 4Df0 WCOu %NL 8Rc+K@rGmh L]E56P"^l=-
+nmA)P&5P!@WuO*E %Y[0FC AWe EcZ> 2@r# Xd6 =FCj8WH#*; _]C_@<>pE@<
+*JhFCAZpARlp#F` VXI@V '1dD BO.;F D)dF 0JP "!@;p1%Bk( RnBl@l3Bk1d
+mFD5?$ATBFWEa`[ 'AS#n &DfV" *I?IQ =@< ,jrA7^p5L_ 5ee@UX:eDe*
+FB@YbY[D3>$K04K ->E,[F? @<>pe@ <-F2@ :O( aA3s^89P&* SFD-[b7oM,b
+6t(1G6=FmW;flGXCLq$!D09oA+C\n)0f'qjEZd(n+Co2!BlnDL061K8F(Jp'Ec5u]5CJ\o@UX:
+eDe*F8"Cbe[@rGmhP%'4MP,XU<H]g@E0Tp%25);4^:m,jG04K->E,[F?@<>pe@<-F2@:O(aA3s
+^86YKnK@:OCjEfM\@;_]C_@<>pE@<*JhFCAZpARlp#F`VXI@rH7,@;0U%Df0B:+Co2!BlnDL06
+1K8F(Jp'Ec5u]5CJ\oI?I/T@q]F`CNFW8L]ESoL]E53L^\V`Bp(ZC1G<6OARfLsF_r72BOt[hF
+*2=B@UX:eDe*E%BnunT!Kp*30TrDLL]W`SL]ET$H\_ceCjhIGOo^_%I?I,S@q]F`CNFW8L^IX*
+ARfLsF_upAP%p/ZL^K;[Ou$QUEas#uAWgMY&s>D)@UX:eDe*F8&X#dsBOt[hF*2>U0TlI"D0mp
+FGA2#8/nAC4@:EYcF*(i#CLq$C@:V`=ARfLDBkM.%N\X1D@rHC.ARfg)7oM,b6t(1G6=FmW;fl
+GXCLq$!@q]F`CER/%B5)H1E,ol?Bk1dc0/%?SBldisEcQ)=P!=AX<.0p/L_>lIOuS6t@UX:eDe
+*FBH'1.C&S#Kc@r$..D29m/!Kq[\@UX:eDe*FB5*@^?E-,f4DKCgDA8c@-A9)+&FE2M8P'CnaF
+D5Z2F,gH:DfT]'FH-TIFCAZpARpsK04Am6F!+q#Eas#uAKYo1FD5Z2F"]1W@<>pe@<-:'DJ>7u
+Ou$NeB60(8DfBf:E-,f4DKCtc@<-"%+CoD.FC]E#GEQnu061WAD..O,Bm>e?Ou[rR%[&V$A79R
+g@UX:uFCAZpARpr`P%64gCG'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5
+GbFDtYuCM@[!P.H"'F`V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/databarstacked 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databarstacked--
% --BEGIN ENCODER databarstackedomni--
-% --REQUIRES databaromni--
+% --REQUIRES preamble raiseerror renlinear renmatrix databaromni--
% --DESC: GS1 DataBar Stacked Omnidirectional
% --EXAM: (01)24012345678905
% --EXOP:
-% --RNDR: renmatrix renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-dup /databaromni dup /uk.co.terryburton.bwipp findresource put
-begin
-/databarstackedomni {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Get the result of encoding with databaromni with format=stackedomni
- options (dontdraw) true put
- options (format) (stackedomni) put
-
- /args barcode options //databaromni exec def
-
- args (opt) options put
- args
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/databarstackedomni dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+% --RNDR: renmatrix
+%%BeginResource: uk.co.terryburton.bwipp databarstackedomni 0.0 0 0 0
+%%BeginData: 31 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04\L5@ :E YcDf'B +Ou
+P+;CG'+8/p(ZFEd ;,:Ec c5; /n0 $ =E, ^uo P'E -!04\L 5@ :EYcF* (i#
+CLq$pD/O'7L_Q"0 Ops'_ E-, f4D KC t) Ou" b#@ <,jrA7 ^o fOu"b% Df0
+Z-Eaa/7AmoLsAWe ifE- ,f4 DK Cu E06 ;5U Bl7 R*H#
+R>X4aVtcOu8C3Df Bf4D f 0W CP ,i2 'Ci a0N4 aW>WI
+?IQm30Ia6V33Qn! BlU*FE 2M8 P !+/ T/ Wr;\ Fcn qO1OXV5/Tc #UAWeitP#Zp
+nAWe*t3A5;iFD5Z 2F-8_M 1OY E cDfB f4Df 0WC Ou%NL8Rc+K @rGmhL]E56P
+"^l=-nmA)P&5P!@ WuO*E% Y[0 FCAW eEcZ >2@ r#XdDf'B+6 =FCj8WHS:;_
+]C_@<>pE@<*JhFC AZpAR loZD /O&uB l[cp FD5 Z2@;I''F`V XI@V'1dDBO.
+;FD)dF0JP"!@;p1 %Bk(R nBl@l 3Bk1d mFD 5?$ATBFWEa `['AS#n&DfV
+"*I?IQ=@<,jrA7^ p5L_5ee @UX:eD e*FB@ YbY [D3>$K04K- >E,[F?@<>pe
+@<-F2@:O(aA8c=&BgQ6=9P&*SFD-[r7oM,b6t(1G6=FmW;flGXCLq$!:Mju`A8-'q@ruF'DII?
+(D09oA+C\n)0f'qjEZd(n+Co2!BlnDL061K8F(Jp'Ec5u]5CJ\o@UX:eDe*F8"Cbe[@rGmhP%'
+4MP,XU<H]g@E0Tp%25);4^:m,jG04K->E,[F?@<>pe@<-F2@:O(aA8c=&BgQ6=6YKnK@:OCjEf
+N7P;_]C_@<>pE@<*JhFCAZpARloZD/O&uBl[cpFD5Z2@;I''F`VXI@rH7,@;0U%Df0B:+Co2!B
+lnDL061K8F(Jp'Ec5u]5CJ\oI?I/T@q]F`CNFW8L]ESoL]E53L^\V`Bp(ZC1G<6OARfLsF_r72
+BOt[hF*2=B@UX:eDe*E%BnunT!Kp*30TrDLL]W`SL]ET$H\_ceCjhIGOo^_%I?I,S@q]F`CNFW
+8L^IX*ARfLsF_upAP%p/ZL^K;[Ou$QUEas#uAWgMY&s>D)@UX:eDe*F8&X#dsBOt[hF*2>U0Tl
+I"D0mpFGA2#8/nAC4@:EYcF*(i#CLq$pD/O&S@:V`=ARfLDBkM.%N^?<T@rHC.ARfg)7oM,b6t
+(1G6=FmW;flGXCLq$!:Mju`A8-'q@ruF'DII?(@q]F`CER/%B5)H1E,ol?Bk1dc0/%?SBldisE
+cQ)=P!=AX<.0p/L_>lIOuS6t@UX:eDe*FBH'1.C&S#Kc@r$..D29m/!Kq[\@UX:eDe*FB5*@^?
+E-,f4DKCgDA8c@-A9)+&FE2M8P'CnaFD5Z2F,gH:DfT]'FH-`MFCAZpARo^rDJ>8Y04Am6F!+q
+#Eas#uAKYo1FD5Z2F"]1W@<>pe@<-:'DJ>7uOu$NeB60(8DfBf:E-,f4DKCtc@<-"%+CoD.FC]
+E#GEQnu061WAD..O,Bm>e?Ou[rR%[&V$A79Rg@UX:uFCAZpARo^rDJ>7nP%64gCG'+8/p(ZFEd
+;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM@[!P.H"'F`V,9E+*6lBl7R3P
+#M~>
+% uk.co.terryburton.bwipp/databarstackedomni 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databarstackedomni--
% --BEGIN ENCODER databartruncated--
-% --REQUIRES databaromni--
+% --REQUIRES preamble raiseerror renlinear renmatrix databaromni--
% --DESC: GS1 DataBar Truncated
% --EXAM: (01)24012345678905
% --EXOP:
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /databaromni dup /uk.co.terryburton.bwipp findresource put
-begin
-/databartruncated {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Get the result of encoding with databaromni with format=truncated
- options (dontdraw) true put
- options (format) (truncated) put
-
- /args barcode options //databaromni exec def
-
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/databartruncated dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp databartruncated 0.0 0 0 0
+%%BeginData: 29 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04\L5@ :E YcDf'B +Ou
+P+;CG'+8/p(ZFEd ;,:Ec c5; /n0 $ =E, ^uo P'E -!04\L 5@ :EYcFE 2MA
+@psIjA:'+HOu8C3 05kfO Bl@ m1P !5 $b 04J @1@ rGmhP! 5$ b04]!= FC]
+E#G9CL+Cia0N1N. 5SBl @m1 P- 6N [FE 2)5 B68 E<AW
+f3'L]NYrOpu>KFD 5Z2F * j( NA moL sAW f3'P !FGY<
+0B5(@ZmRN0oc8tP )XR(F_ -_! H ]ft D5 *C&O 5*@ ^MH]ft&Eck rV1OYEdI?J0
+)*g/N:DfBf4Df0W Z5*@^M P#Q @ =FD5 Z2F* j'+ I?I02@<,jr A7^PsL]il7N
+W^aa0e&9&HS8iPB lJ#DA7 9Rg @UX; !Ecl 80@ <?'k6=FCj8 WH),;_]C_@<
+>pE@<*JiEcl80@< ?'k+D l7BF <G%(B 5)6+ GA2 /4+=Jou.3N &<E,95u@<?4
+ %DBNY(ASuU(Anb gs0/% ?SBld isEcQ )=P !=AX<+99V@ rGmhP%'4ZP&
+4Z:Eas#uAWgMY&s @*p"FDe 2GA2#8 /nAC4 @:E YcFE2MA@ps IjA3s^89P&*
+SFD-[d7oM,b6t(1G6=FmW<-!,!@psIjA0>`3F*&O6AKW]`+E)9C0f1"`BkM.%F"]1e@;0doATD
+g0EfrY8P#Pn!Eas#uAV^Iu@<,jrA7^p5L]im?P"^4c3/B8OAs,?63Kd4%EdKHKGA2#8/nAC4@:
+EYcFE2MA@psIjA3s^86YKnK@:OCjEfMbB;_]C_@<>pE@<*JiEcl80@<?'k+Dl7BF<G(3DKK<$D
+BNk8Cj@.6BkM.%F"]1e@;0doATDg0EfrY8P#Qjm8M=ReARfLsF_up7Ou%moL]N;?HS9)r5*@]T
+@q]F`CNFW8+Cf(r@r$..D'3:rEas#uAKY]C"HieK98G9bWG..iP%odQP!+/J"-RJKP#RSFOu%N
+L82"IdARfLsF_upA@q]F`CNFW8L^K;[P,X6EP%p.9@UX:eDe*FB@YbY[4aUXHEas#uAV^q]94M
+XH@r$..D29m/!Kq;H04K->E,[F?@<>pe@<-I1F`(\tFCeuL@:V`=ARfLDBkM.%N\j=F@rHC.AR
+fg)7oM,b6t(1G6=FmW<-!,!@psIjA0>AqARfKuA8,[jF<GOCDg#i*ARmGIEa`['AS#n&DfV"*I
+?IQXP#R5MP,4=$L]CmmEas#uAWh>%3/A/VBOt[hF*2>U0TlI"GV<N7Eas#uAWf6?1N.5SBl@m1
+NX006DKKE0@<Zg6F_-_\DfBf4Df0WV#%hdoD..OH$$:31DI[*sARpsK04Am6F!+q#Eas#uAKYo
+1FD5Z2F"]1W@<>pe@<-:'DJ>7uOu$NeB60(8DfBf:E-,f4DKCtc@<-"%+CoD.FC]E#GEQnu061
+WACh[cu@<.N1Ou[rR%[&V$A79Rg@UX;!Ecl80@<?'kOuSV806M%_@rEuAATDg:@Wc^5Df.1:GA
+2#8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,-DH]iMmATVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/databartruncated 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databartruncated--
% --BEGIN ENCODER databarlimited--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: GS1 DataBar Limited
% --EXAM: (01)15012345678907
% --EXOP:
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/databarlimited {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /height 10 72 div def
- /linkage false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /height height cvr def
-
- % Strip the AI and optional check digit
- barcode length dup 17 eq exch 18 eq or {
- barcode 0 5 getinterval dup (\(01\)0) eq exch (\(01\)1) eq or {
- /binval [
- barcode 4 13 getinterval {48 sub} forall
- ] def
- linkage {
- /linkval [ 2 0 1 5 1 3 3 5 3 1 0 9 6 ] def
- 0 1 binval length 1 sub {
- /i exch def
- binval i binval i get linkval i get add put
- } for
- } if
- } if
- } if
-
- % Calculate EAN checksum and add to end of barcode
- /checksum 0 def
- 0 1 12 {
- /i exch def
- /checksum checksum barcode i 4 add get 48 sub i 2 mod 0 eq {3 mul} if add def
- } for
- /checksum 10 checksum 10 mod sub 10 mod def
- 18 string
- dup 0 barcode 0 17 getinterval putinterval
- dup 17 checksum 48 add put
- /barcode exch def
-
- % Create the human readable text
- /txt barcode length array def
- 0 1 barcode length 1 sub {
- /i exch def
- txt i [barcode i 1 getinterval 0 0 () 0] put
- } for
-
- /ncr { % n r
- 2 copy sub 2 copy lt {exch} if % n r maxd mind
- 1 1 5 3 roll % mind j=1 v=1 n maxd
- 1 add -1 exch { % mind j v n -1 maxd+1
- mul % mind j v*i
- 1 index 3 index le {
- 1 index idiv exch 1 add exch
- } if
- } for
- { % mind j v
- 1 index 3 index gt {exit} if
- 1 index idiv exch 1 add exch
- } loop
- exch pop exch pop
- } bind def
-
- /getRSSwidths {
- /oe exch def
- /el exch def
- /mw exch def
- /nm exch def
- /val exch def
- /out el array def
- /mask 0 def
- 0 1 el 2 sub {
- /bar exch def
- /ew 1 def
- /mask mask 1 bar bitshift or def {
- /sval nm ew sub 1 sub el bar sub 2 sub ncr def
- oe mask 0 eq and nm ew sub el 2 mul sub bar 2 mul add -2 ge and {
- /sval sval nm ew sub el sub bar add el bar sub 2 sub ncr sub def
- } if
- el bar sub 2 gt {
- /lval 0 def
- nm ew sub el sub bar add 2 add -1 mw 1 add {
- nm exch sub ew sub 1 sub el bar sub 3 sub ncr
- /lval exch lval add def
- } for
- /sval sval lval el bar sub 1 sub mul sub def
- } {
- nm ew sub mw gt {/sval sval 1 sub def} if
- } ifelse
- /val val sval sub def
- val 0 lt {exit} if
- /ew ew 1 add def
- /mask mask 1 bar bitshift not and def
- } loop
- /val val sval add def
- /nm nm ew sub def
- out bar ew put
- } for
- out el 1 sub nm put
- out
- } bind def
-
- 0 1 11 {
- /i exch def
- binval i 1 add 2 copy get binval i get 2013571 mod 10 mul add put
- binval i binval i get 2013571 idiv put
- } for
- /d2 binval 12 get 2013571 mod def
- binval 12 2 copy get 2013571 idiv put
-
- /d1 0 def
- /i true def
- 0 1 12 {
- /j exch def
- binval j get
- dup 0 eq i and {
- pop
- } {
- /i false def
- /d1 d1 3 -1 roll 10 12 j sub exp cvi mul add def
- } ifelse
- } for
-
- /tab267 [
- 183063 0 17 9 6 3 6538 28
- 820063 183064 13 13 5 4 875 728
- 1000775 820064 9 17 3 6 28 6454
- 1491020 1000776 15 11 5 4 2415 203
- 1979844 1491021 11 15 4 5 203 2408
- 1996938 1979845 19 7 8 1 17094 1
- 2013570 1996939 7 19 1 8 1 16632
- ] def
-
- /i 0 def {
- d1 tab267 i get le {
- tab267 i 1 add 7 getinterval {} forall
- /d1te exch def /d1to exch def
- /d1mwe exch def /d1mwo exch def
- /d1ele exch def /d1elo exch def
- /d1gs exch def
- exit
- } if
- /i i 8 add def
- } loop
-
- /i 0 def {
- d2 tab267 i get le {
- tab267 i 1 add 7 getinterval {} forall
- /d2te exch def /d2to exch def
- /d2mwe exch def /d2mwo exch def
- /d2ele exch def /d2elo exch def
- /d2gs exch def
- exit
- } if
- /i i 8 add def
- } loop
-
- /d1wo d1 d1gs sub d1te idiv d1elo d1mwo 7 false getRSSwidths def
- /d1we d1 d1gs sub d1te mod d1ele d1mwe 7 true getRSSwidths def
- /d2wo d2 d2gs sub d2te idiv d2elo d2mwo 7 false getRSSwidths def
- /d2we d2 d2gs sub d2te mod d2ele d2mwe 7 true getRSSwidths def
-
- /d1w 14 array def
- 0 1 6 {
- /i exch def
- d1w i 2 mul d1wo i get put
- d1w i 2 mul 1 add d1we i get put
- } for
-
- /d2w 14 array def
- 0 1 6 {
- /i exch def
- d2w i 2 mul d2wo i get put
- d2w i 2 mul 1 add d2we i get put
- } for
-
- /widths [
- d1w {} forall
- d2w {} forall
- ] def
-
- /checkweights [
- 1 3 9 27 81 65 17 51 64 14 42 37 22 66
- 20 60 2 6 18 54 73 41 34 13 39 28 84 74
- ] def
-
- /checkseq [
- 0 1 43 {} for
- 45 52 57
- 63 1 66 {} for
- 73 1 79 {} for
- 82
- 126 1 130 {} for
- 132
- 141 1 146 {} for
- 210 1 217 {} for
- 220
- 316 1 320 {} for
- 322 323
- 326 337
- ] def
-
- /checksum 0 def
- 0 1 27 {
- /i exch def
- /checksum checksum widths i get checkweights i get mul add def
- } for
- /checksum checksum 89 mod def
- /seq checkseq checksum get def
- /swidths seq 21 idiv 8 3 6 false getRSSwidths def
- /bwidths seq 21 mod 8 3 6 false getRSSwidths def
-
- /checkwidths [0 0 0 0 0 0 0 0 0 0 0 0 1 1] def
- 0 1 5 {
- /i exch def
- checkwidths i 2 mul swidths i get put
- checkwidths i 2 mul 1 add bwidths i get put
- } for
-
- /sbs [
- 1 d1w {} forall checkwidths {} forall d2w {} forall 1 1
- ] def
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs sbs
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- /txt txt
- /textxalign (center)
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/databarlimited dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp databarlimited 0.0 0 0 0
+%%BeginData: 74 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04\L5@ :E YcCh[a #FC
+f!0L_Q"0Ops'_E- ,f4DK Ct) Ou" b #@< ,jr A7^ ofOu"b %D f0Z-Ea a/7
+AmoLsAWei&BOtmj BQT%; Le* [eO u" b- Bl7 ]pB 4W2t@; L! rOu%#q FD5
+Z2F-<^[F*)G:DJ+ ':E+ P1q H\ _] c23 JDe E-, f4DK
+C/fX(GdVF(LLtH] gXBP # RT (P %'T NOt hst4 d(eHE
+ckrV4aW>DP!5%OP !5$bI= %,/ F E2M 8O u%NL <IL $AOrfcH05k fOBl@m1P!5$
+bI?IQJE-,f4DKC/ f1OYEX 05+ p 2B4u B0BO tmj BQTCjOu$QU Eas#uAV^>B"
+HlH="=PrY.?\Op0 4K->E, [F? @<>p e@<- 0uD /"*'A3s^85 tR)$7oM,b6t
+(1G6=FmW9PJ?XFC eu*D0 9oA+ C\npB l5&; Bln #2-nmA)+CT 5.Ch[BfFD5Z
+2+DG@tDKKT)Bk;< <061K 8F(Jp 'Ec5u ]5C J\o@UX:eDe *FB@YbVZD.6
+po@rGmhP%'4[P&6 ?bHS8iP BlJ#DA 79Rg@ UX: nBl.R+ARn, 9A5$QPB67gI
+.n<Mm+@KX[@7"CC+A?KdBlmos+Dl7BF<G%(+>GYpDfQsT1a$=CB5)I/0/%?SBldisEcQ)=P!=A
+X<+99V@rGmhL]il6OuS7OP%Kk@LbY&hP&bn&@WuO*E%Y[0FCAWeEboH,Blmos6=FD'FCB336tp
+:JFH.h@;_]C_@<>pE@<*JaBl.R+ARlp#F`VXI@V'1dDBO.;FD)dN+E)9C0eY2#@;0doATDg0Ef
+rY8P#Pn!Eas#uAV^M!@<,jrA7^p5L]rs@P"^4c3/B8OAs,?63Kd4%EdKHKGA2#8/nAC4@:EYcC
+h[a#FCeuL@:V`=@<,ddFCfKQ/4WVn+@KX[@7"CC+A?KdBlmos+Dl7BF<G(3DKK<$DBNk8Cj@.6
+BkM.%F"]1e@;0doATDg0EfrY8P#Qjm8M=ReARfLsF_up7Ou%moL]N;?HS9)r5*@]T@q]F`CNFW
+8+Cf(r@r$..D'3:rEas#uAKY]C"HieK98G9bWG..iP%odQP!+/J"-RJKP#RSFOu%NL82"IdARf
+LsF_upA@q]F`CNFW8L^K;[P,X6EP%p.9@UX:eDe*FB@YbY[4aUXHEas#uAV^q]94MXH@r$..D2
+9m/!Kq;H04K->E,[F?@<>pe@<-:'DJ;FGA4($A@r"JHB5)IJ1.c@nDfTl0@rrh`;_]C_@<>pE@
+<*JaBl.R+ARlonBOt[h+Co2!BlkJ:Ec6,8A7]:)061K8F(Jp'Ec5u]5CJ\oI?IQc&sB)S3/@QD
+@<,jrA7^pLOuS70@q]F`CNFW8LbOtmP'AWh@<,jrA7^ofOu"b#Bl8*&C`lq)@UX:eDe*F8"GdM
+M9RDRLP,Wkm8R7K8Ch[d&@:s.u05P??CNa-&+BsX'L]E53L]rS8L]`G8L]rS:L]N;3L^AkA?'7
+""!/LYbBl8*&Cm&7`!KsF/056S5Ou$Q]DK]H)+DDs-Bl8*&C`mGT95J<[CNa-&+DI!3Oo^_jI?
+I-LP#O)VG]Y';@<,jrA7^p5OpR:-L]E53@UX:eDe*FB@Yb&JWI$:4P!5$bFEhmMBcpV&@UX:eD
+e*E%BnueQ9S`\)!0.&8!*tb4I?I,SDI[^6L]W_WP,X6=Or9EpH]gR@P#R5<L]N;8L]`fqL]NY>
+M#WW%H]i3$!KpQ@"-QcL@=*e2P$!lFP!4[&Oo^_0I?IQXP"9qU!KpQ@"-QcL:j\?jI?IQc!KpQ
+J;Na5"!KmJH5(/T*P!5%OP!5%OI?G)'1G<BPFAc%9GA1T0BQJMRDe5(qOu"b&Cm$uF1G<ThP!5
+$b05bWi5*@]TG%#3M5*@]TDfp.EASdM9Ou"b.@<64?!0T-o!/LYeCkr.UWI$:-@<.MpOu"b&GD
+H9_1G<TRF))n8@<64?!FfJXOq3^rOu%G<F*:u.+Du$=ATs<:L]N[<AS`Ju@<.O1L]Wa=DI[^M1
+N-hID..L$L]ET$Op#Z>+D#b[WF]n%!g7A_WFB:VL]W`UOo^C<P"Ll?HS9G`@;I'-G%#20DJ^M-
+GESq:Cm(c,@<.M3AS`Ju@<.O1L]Wa=DI[^MWKK&cP#Q"/+C\c"P,X6=P#-KYCj'6'L]ESoDJ^M
+-GESq:Cm(c,@<.M3L]W_?M#V=9L]NY>HZ!\`5*DmVGESq]!KsEnC`m1qEg!DX"-TX$@ra5=G%#
+3M5&>CNCm"g^1OYEW06;;FC`meB@;I'&G%#20AS`Ju@<.O1L]N[<P&-;\Ou%N5DJ^M-GESqBGE
+PdL06;;FC`meB@;L`#P,XU#I?IQXP#X/Y@;I'0@;I'-G%#3MWKK&\@;L`"P%K'(5^eep04f>MA
+Trq2Oo^_%05Y-=CERJ&F)-R4@UX;?&!Cmp"HkQhP%?:i@;I'0@;I'-G%#3M!Ko5lDJ^M6D'3D6
+P,XU#Dfp.E@UX:"ATs;^I?I->F`\a;Ckr+TWGZR9G]._HI?G)'1Pc$e!Jh,1056S5Ou$Q]DK]H
+)+DHW4Oo^@?Or9EU@VK_'@;I'#P"UH.*k?odC5<4[Cm"g^G[bB)G%#20Bcpl!DK]H)+DI!3KE*
+((K9B,qG^Y`G04Zg\@VK_'@;L`.P"UH.*k?odC6CA^Bl8*&CkrLU!g4Fa98!9d\V$&CP'AWj0o
+,gm1G<GbFE2M8Ou%moL]N;?HS9,s5*@^2Bl8*&C`mJU99M8j!0TKZOp$,pFa\TiBcq"rCia0N1
+G<8n+Cm3_",Qu?LPQ:n$u1s)AU&0W/<Xh4!Ko6eP#Zpn82#'n@PTi#+BsL!!m;C9!/M5C$&AeA
+",7\NL`D'J%"ho?!!:=\L^f.LL]rS;L')4G!n`/+%n0!A!"=KfL^AkLL]`G;L`D-e2M;&G^eBC
+]%n0$F%u:UL"c*;9$#bOubCfj:28k.J(;NY#$]#=L"Gd59!6^*'BS6@,G`%.S*]:om'8QmL#`&
+M96H4f^KE*((JqO+FG`.@_L_GRFL^8e;L-YN>Ou"b*L]ESoHXniRFCAW62E)amP"UsHHZW\*1,
+_'6BnueQ!JguD9RD2N8M=U/FCgV!Ou"b%0m%>s5*@]TA2.qFAWf6?1G<8nD0Ko]5*@]TA2.Y3A
+Wf6?1G<8nASc:J5*@]TA2._<P!5$bP!FGY<%hr.Bo!%X!Ko6eP%?:\L]ESoHXnlSFCAW62E)am
+P"UsHHZW\*1,_'6BnueQ!JguD9RD2N8M=U0FCgV!Ou"b%13@Gt5*@]TA28"GAWf6?1G<8oD0Ko
+]5*@]TA27_4AWf6?1G<8oASc:J5*@]TA27e=P!5$bP!FGY<%hr.Bo!%X!Ko6eP%?:W0m@OYA2,
+3;0kYQjWFR`*AWfr%0kG0>+Cm3DGAi9BAmoLsAKYVsFAc%9GA1T0BQK=m04Ze]AKYM<+Cm3>F-
+<M50m$uiC1K&1Ch4`"0l;,GL^/$BF_)\.ATUgK;g2qdFD,`Y1G<8oGAeU71*C*_B6068A287<P
+#>gGASc9-A28"GDhnX1@;L!r+D58-;H$M<Bk2=!F-8=4A28@?+Cm5MA27e=P,VtIFCgVMA27_4
+AKYM=D0KQI#BY!/AKYVsFAc%9GA1T0BQK=m04Ze]L^oRSOu%moL]N;9HS9)r5*@^40m=aSL]W`
+UA2/:H+DI!3P'CLlG9CUU!g7AU!KmIo0m@1OBp),PG^Y`G04Zh^L^oRSOu%moL]N;9HS9)r5*@
+^413XjTL]W`UA28@I+DI!3P'CLmG9CUU!g7AU!KmIo13[:PBp),PG^Y`G06_,@FD,_<>9IH2GC
++b$8RsT#H[V&K?'6us@q]F`CNj?(B4uC.+BsX&L]`G>L`;.ILd?h/LbjiPL^o4jLa@imLdHn3L
+cgIpL^&YJLc1&\Lae-(L^f.fL`D4MLe:s91G<6OARfLsAT8hsL]E53Lb!h#P":B\LbsoJLd-[r
+LdHH:P":C#L]N<-H[V&JLf0%XL]N51JpVp/8;7+tL&d3h!JUT;H[V&JL&fYX!JUU-H[V&JL&g"
+`!Bc/=L&jPdI?I-U!CDMA6\YV2L&k.WOu"b$BOt[hF*2>U!0T-o!/LZ3)ga5PP!5$b04S[,@r$
+..D'3>%ARfLsF_r7FBk2=!F!,1[94MXH@r$:"BkM+$F!,1[99O+S!Ko6eP"769BOt[hF*2=B@q
+]F`CNFW8LfomUOu"b4AT8i&BOt[hF(K>6@q]F`CNFW8P"Uro06;>OA9;L++EM+6L_Z(NL^8e=L
+^%I"Cia/1B4Z0_;c@mSA9;L+Ou"b#GA1T0BQG;;AT<M@P%odYL]`G;AmoLsAKYVsFAc%9GA1T0
+BQK=m04S[,@r$:&A9;L++BsX%L]E52L]E52L]E52L]E52L]E52L]E53L]LeE1Pc$e!Jgo+056S
+5Ou$T]ARfM"Bk2=!F!,1Q!g7A@GA1T0BQG;1P"Us_@q]F`CNjK'FD,_<BnuhRCkr+T!Fg7eA9;
+L++DI!3P'DD<82#$nF!+\C!G!p/H[V&K@q]F`CNjK'FD,`BI?I0413\(nP"CH1L]LeE1H[cQEb
+0,A061WACh[cu@<+#B@WNZ5@WO23BQG;#+EM"5P%'4JOo^@?P#?X?ASGdjFFB=)>q]YrF!+[0F
+(03R@Yb&J!Jgf?;L=3"I?K4g06DG\+EVjM06CcMFEh51BkM=D#%M4^FCfJGDfBe@DfBf4Df0V=
+5!C*"Df0Z-Eaa0TE%`kbASu<uDIm6sP#RT)I?G)'1G<9IFCAWeEboH,BlmosOuSV806M%_@rEu
+AATDg:@Wc^5Df.1:GA2#8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,-DH]iMmATVm"@r#
+drB75qB~>
+% uk.co.terryburton.bwipp/databarlimited 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databarlimited--
% --BEGIN ENCODER databarexpanded--
+% --REQUIRES preamble raiseerror renlinear renmatrix--
% --DESC: GS1 DataBar Expanded
% --EXAM: (01)95012345678903(3103)000123
% --EXOP:
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/databarexpanded {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /height 34 72 div def
- /format (expanded) def
- /segments -1 def
- /linkage false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /height height cvr def
- /segments segments cvi def
-
- segments -1 eq {
- /segments format (expandedstacked) eq {4} {22} ifelse def
- } if
-
- % Expand ordinals of the form ^NNN to ASCII
- /expand {
- /in exch def
- /out in length string def
- /j 0 def
- in
- { % loop
- (^) search {
- dup out exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi out exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup out exch j exch putinterval
- length j add /j exch def
- out 0 j getinterval exit
- } ifelse
- } loop
- } bind def
-
- % Parse out AIs
- /ais [] def
- /aival 2 dict def
- barcode dup length 1 sub 1 exch getinterval
- { % loop
- dup () eq {exit} if
- (\)) search pop
- exch pop
- exch (\() search {
- exch pop exch 3 1 roll
- } {
- () 3 1 roll
- } ifelse
- [ ais aload pop counttomark 2 add index ] /ais exch def
- aival 3 1 roll expand put
- } loop
- pop
-
- % Method selection
- { % common exit
-
- % (01)9...(3103)...
- ais length 2 eq {
- ais 0 get (01) eq ais 1 get (3103) eq and {
- aival (01) get 0 1 getinterval (9) eq aival (3103) get cvi 32767 le and {
- (0100) false exit
- } if
- } if
- } if
-
- % (01)9...(3202)...
- ais length 2 eq {
- ais 0 get (01) eq ais 1 get (3202) eq and {
- aival (01) get 0 1 getinterval (9) eq aival (3202) get cvi 9999 le and {
- (0101) false exit
- } if
- } if
- } if
-
- % (01)9...(3203)...
- ais length 2 eq {
- ais 0 get (01) eq ais 1 get (3203) eq and {
- aival (01) get 0 1 getinterval (9) eq aival (3203) get cvi 22767 le and {
- (0101) false exit
- } if
- } if
- } if
-
- % (01)9...(310x/320x)...[(11/13/15/17)...]
- ais length dup 2 eq exch 3 eq or {
- /ai310x false 3100 1 3109 {10 4 string cvrs ais 1 get eq or} for def
- /ai320x false 3200 1 3209 {10 4 string cvrs ais 1 get eq or} for def
- ais length 3 eq {
- /aibad true [ (11) (13) (15) (17) ] {ais 2 get ne and} forall def
- } {
- /aibad false def
- } ifelse
- ais 0 get (01) eq ai310x ai320x or and aibad not and {
- ais length 3 eq {
- aival (01) get 0 1 getinterval (9) eq
- aival ais 1 get get cvi 99999 le and
- aival ais 2 get get cvi 999999 le and {
- ai310x ais 2 get (11) eq and { (0111000) false exit } if
- ai320x ais 2 get (11) eq and { (0111001) false exit } if
- ai310x ais 2 get (13) eq and { (0111010) false exit } if
- ai320x ais 2 get (13) eq and { (0111011) false exit } if
- ai310x ais 2 get (15) eq and { (0111100) false exit } if
- ai320x ais 2 get (15) eq and { (0111101) false exit } if
- ai310x ais 2 get (17) eq and { (0111110) false exit } if
- ai320x ais 2 get (17) eq and { (0111111) false exit } if
- } if
- } {
- aival (01) get 0 1 getinterval (9) eq
- aival ais 1 get get cvi 99999 le and {
- ai310x { (0111000) false exit } if
- ai320x { (0111001) false exit } if
- } if
- } ifelse
- } if
- } if
-
- % (01)9...(392x)...
- ais length 2 ge {
- /ai392x false 3920 1 3923 {10 4 string cvrs ais 1 get eq or} for def
- ais 0 get (01) eq ai392x and {
- aival (01) get 0 1 getinterval (9) eq { (01100) true exit } if
- } if
- } if
-
- % (01)9...(393x)...
- ais length 2 ge {
- /ai393x false 3930 1 3933 {10 4 string cvrs ais 1 get eq or} for def
- ais 0 get (01) eq ai393x and {
- aival (01) get 0 1 getinterval (9) eq { (01101) true exit } if
- } if
- } if
-
- % (01)...
- ais 0 get (01) eq { (1) true exit } if
-
- % Freeform
- (00) true exit
-
- } loop
- /gpfallow exch def
- /method exch def
-
- /conv12to40 {
- (0000000000000000000000000000000000000000) 40 string copy
- 2 copy 0 10 getinterval exch 0 3 getinterval cvi 2 10 string cvrs dup length 10 exch sub exch putinterval
- 2 copy 10 10 getinterval exch 3 3 getinterval cvi 2 10 string cvrs dup length 10 exch sub exch putinterval
- 2 copy 20 10 getinterval exch 6 3 getinterval cvi 2 10 string cvrs dup length 10 exch sub exch putinterval
- 2 copy 30 10 getinterval exch 9 3 getinterval cvi 2 10 string cvrs dup length 10 exch sub exch putinterval
- exch pop
- } bind def
-
- /conv13to44 {
- (00000000000000000000000000000000000000000000) 44 string copy
- 2 copy 0 4 getinterval exch 0 1 getinterval cvi 2 4 string cvrs dup length 4 exch sub exch putinterval
- dup 3 -1 roll 1 12 getinterval conv12to40 4 exch putinterval
- } bind def
-
- /tobin {
- string dup length 1 sub 0 exch 1 exch {1 index exch 48 put} for
- dup 3 -1 roll 2 2 index length string cvrs dup length 2 index length exch sub exch putinterval
- } bind def
-
- method (00) eq {
- /cdf [] def
- /gpf [] def
- } if
-
- method (1) eq {
- /cdf aival (01) get 0 13 getinterval conv13to44 def
- /cdf [ cdf {48 sub} forall ] def
- /gpf [] def
- /ais ais 1 ais length 1 sub getinterval def
- } if
-
- method (0100) eq {
- /cdf 55 string def
- cdf 0 aival (01) get 1 12 getinterval conv12to40 putinterval
- cdf 40 aival (3103) get cvi 15 tobin putinterval
- /cdf [ cdf {48 sub} forall ] def
- /gpf [] def
- /ais [] def
- } if
-
- method (0101) eq {
- /cdf 55 string def
- cdf 0 aival (01) get 1 12 getinterval conv12to40 putinterval
- ais 1 get (3202) eq {
- aival (3202) get cvi 15 tobin
- } {
- aival (3203) get cvi 10000 add 15 tobin
- } ifelse
- cdf exch 40 exch putinterval
- /cdf [ cdf {48 sub} forall ] def
- /gpf [] def
- /ais [] def
- } if
-
- method length 7 eq {
- /cdf 76 string def
- cdf 0 aival (01) get 1 12 getinterval conv12to40 putinterval
- 6 string dup 0 ais 1 get 3 1 getinterval putinterval
- dup aival ais 1 get get 1 5 getinterval 1 exch putinterval cvi 20 tobin
- cdf exch 40 exch putinterval
- ais length 3 eq {
- aival ais 2 get get
- dup 0 2 getinterval cvi 384 mul exch
- dup 2 2 getinterval cvi 1 sub 32 mul exch
- 4 2 getinterval cvi add add
- } {
- 38400
- } ifelse
- 16 tobin cdf exch 60 exch putinterval
- /cdf [ cdf {48 sub} forall ] def
- /gpf [] def
- /ais [] def
- } if
-
- method (01100) eq {
- /cdf 42 string def
- cdf 0 aival (01) get 1 12 getinterval conv12to40 putinterval
- cdf 40 ais 1 get 3 1 getinterval cvi 2 tobin putinterval
- /cdf [ cdf {48 sub} forall ] def
- /gpf [ aival ais 1 get get {} forall ] def
- /ais ais 2 ais length 2 sub getinterval def
- } if
-
- method (01101) eq {
- /cdf 52 string def
- cdf 0 aival (01) get 1 12 getinterval conv12to40 putinterval
- cdf 40 ais 1 get 3 1 getinterval cvi 2 tobin putinterval
- cdf 42 aival ais 1 get get 0 3 getinterval cvi 10 tobin putinterval
- /cdf [ cdf {48 sub} forall ] def
- /gpf [ aival ais 1 get get dup length 3 sub 3 exch getinterval {} forall ] def
- /ais ais 2 ais length 2 sub getinterval def
- } if
-
- % Variable length symbol field
- gpfallow {
- /vlf 2 array def
- } {
- /vlf [] def
- } ifelse
-
- % Pre-defined fixed length data field AIs
- % any AI whose prefix is not included in this table must be
- % terminated with "FNC1", even if it's fixed length
- /aifixed 23 dict def
- [
- 0 1 4 {} for
- ] {
- (00) 2 string copy dup dup 1 5 -1 roll 48 add put aifixed 3 1 roll put
- } forall
- [
- 11 1 20 {} for
- 23
- 31 1 36 {} for
- 41
- ] {
- 10 2 string cvrs dup aifixed 3 1 roll put
- } forall
-
- /fnc1 -1 def /lnumeric -2 def /lalphanumeric -3 def /liso646 -4 def
-
- /numeric <<
- 0 1 119 {
- dup (00) 2 string copy dup 3 -1 roll 11 2 string cvrs
- dup length 2 exch sub exch putinterval
- dup 0 get 65 eq {dup 0 94 put} if
- dup 1 get 65 eq {dup 1 94 put} if
- exch 8 add
- (0000000) 7 string copy dup 3 -1 roll 2 7 string cvrs
- dup length 7 exch sub exch putinterval
- } for
- lalphanumeric (0000)
- >> def
-
- /alphanumeric <<
- 48 1 57 {dup 43 sub 5 tobin} for
- fnc1 (01111)
- 65 1 90 {dup 33 sub 6 tobin} for
- 42 (111010)
- 44 1 47 {dup 15 add 6 tobin} for
- lnumeric (000)
- liso646 (00100)
- >> def
-
- /iso646 <<
- 48 1 57 {dup 43 sub 5 tobin} for
- fnc1 (01111)
- 65 1 90 {dup 1 sub 7 tobin} for
- 97 1 122 {dup 7 sub 7 tobin} for
- 33 (11101000)
- 34 (11101001)
- 37 1 47 {dup 197 add 8 tobin} for
- 58 1 63 {dup 187 add 8 tobin} for
- 95 (11111011)
- 32 (11111100)
- lnumeric (000)
- lalphanumeric (00100)
- >> def
-
- % Append the remaining AI data
- 0 1 ais length 1 sub {
- /i exch def
- /ai ais i get def
- /val aival ai get def
- gpf length ai length add val length add array
- dup 0 gpf putinterval
- dup gpf length ai [ exch {} forall ] putinterval
- dup gpf length ai length add val [ exch {} forall ] putinterval
- /gpf exch def
- i ais length 1 sub ne aifixed ai 0 2 getinterval known not and { % Append FNC1
- gpf length 1 add array
- dup 0 gpf putinterval
- dup gpf length fnc1 put
- /gpf exch def
- } if
- } for
-
- % Calculate the number of bits remaining to the next valid symbol size
- /rembits {
- dup
- 12 div ceiling cvi 12 mul % Round up to multiple of 12
- 48 2 copy lt {exch} if pop % At least 4 symbols
- dup 12 idiv dup segments mod 1 eq { % At least 2 symbols on last row of stacked symbol
- 1 add 12 mul exch pop
- } {
- pop
- } ifelse
- exch sub
- } bind def
-
- /encode {
- dup /raw ne {exch get} {pop} ifelse
- [ exch {48 sub} forall ]
- dup length exch
- gpfenc exch j exch putinterval
- /j exch j add def
- } bind def
-
- % Pre-compute alphanumeric and numeric runlengths and position of next ISO646-only characters
- /numericruns [ gpf length {0} repeat 0 -1 ] def
- /alphanumericruns [ gpf length {0} repeat 0 ] def
- /nextiso646only [ gpf length {0} repeat 9999 ] def
- gpf length 1 sub -1 0 {
- /i exch def
- gpf i get
- (00) 2 string copy
- dup 0 gpf i get dup fnc1 eq {pop 94} if put
- i gpf length 1 sub lt {dup 1 gpf i 1 add get dup fnc1 eq {pop 94} if put} if
- numeric exch known {
- numericruns i numericruns i 2 add get 2 add put
- } {
- numericruns i 0 put
- } ifelse
- dup alphanumeric exch known {
- alphanumericruns i alphanumericruns i 1 add get 1 add put
- } {
- alphanumericruns i 0 put
- } ifelse
- dup iso646 exch known exch alphanumeric exch known not and {
- nextiso646only i 0 put
- } {
- nextiso646only i nextiso646only i 1 add get 1 add put
- } ifelse
- } for
-
- % Encode the general purpose field
- /gpfenc 252 array def
- /i 0 def /j 0 def /mode (numeric) def
- { % loop
- i gpf length eq {exit} if
- { % not a loop but common exit point
-
- mode (numeric) eq {
- i gpf length 2 sub le {
- 2 string
- dup 0 gpf i get dup fnc1 eq {pop 94} if put
- dup 1 gpf i 1 add get dup fnc1 eq {pop 94} if put
- dup numeric exch known {
- numeric encode
- /i i 2 add def
- exit
- } if
- pop
- lalphanumeric numeric encode
- /mode (alphanumeric) def
- exit
- } {
- gpf i get dup 48 lt exch 57 gt or {
- lalphanumeric numeric encode
- /mode (alphanumeric) def
- exit
- } if
- /rem 12 1 add method length add vlf length add cdf length add j add rembits def
- rem 4 ge rem 6 le and { % C1 + 1 into 4 to 6 bits
- (000000) 6 string copy 0 rem getinterval
- dup gpf i get 47 sub 2 4 string cvrs
- dup length 4 exch sub exch putinterval /raw encode
- /i i 1 add def
- exit
- } { % C1.FNC1
- 2 string dup 0 gpf i get put dup 1 94 put numeric encode
- /i i 1 add def
- exit
- } ifelse
- } ifelse
- } if
-
- mode (alphanumeric) eq {
- gpf i get fnc1 eq {
- fnc1 alphanumeric encode
- /i i 1 add def
- exit
- } if
- gpf i get dup iso646 exch known exch alphanumeric exch known not and {
- liso646 alphanumeric encode
- /mode (iso646) def
- exit
- } if
- numericruns i get 6 ge {
- lnumeric alphanumeric encode
- /mode (numeric) def
- exit
- } if
- numericruns i get dup 4 ge exch i add gpf length eq and {
- lnumeric alphanumeric encode
- /mode (numeric) def
- exit
- } if
- gpf i get alphanumeric encode
- /i i 1 add def
- exit
- } if
-
- mode (iso646) eq {
- gpf i get fnc1 eq {
- fnc1 iso646 encode
- /i i 1 add def
- exit
- } if
- numericruns i get 4 ge nextiso646only i get 10 ge and {
- lnumeric iso646 encode
- /mode (numeric) def
- exit
- } if
- alphanumericruns i get 5 ge nextiso646only i get 10 ge and {
- lalphanumeric iso646 encode
- /mode (alphanumeric) def
- exit
- } if
- gpf i get iso646 encode
- /i i 1 add def
- exit
- } if
-
- } loop
- } loop
- /gpf gpfenc 0 j getinterval def
-
- % Complete the variable length field and create pad
- 1 12 add method length add vlf length add cdf length add gpf length add
- dup rembits dup array /pad exch def
- vlf length 0 ne {
- add 12 idiv
- dup 2 mod vlf exch 0 exch put
- 14 le {0} {1} ifelse vlf exch 1 exch put
- } {
- pop pop
- } ifelse
- pad length 0 gt {
- 0 5 pad length 1 sub { % Fill with 00100
- /i exch def
- pad i [ 0 0 1 0 0 ] 0 pad length i sub 5 2 copy gt {exch} if pop getinterval putinterval
- } for
- mode (numeric) eq { % Prefix shift from numeric to ASCII
- /pad [ 0 0 0 0 pad aload pop ] 0 pad length getinterval def
- } if
- } if
-
- % Concatinate fields
- /binval [
- linkage {1} {0} ifelse
- method {48 sub} forall
- vlf aload pop
- cdf aload pop
- gpf aload pop
- pad aload pop
- ] def
- /datalen binval length 12 idiv def
-
- /ncr { % n r
- 2 copy sub 2 copy lt {exch} if % n r maxd mind
- 1 1 5 3 roll % mind j=1 v=1 n maxd
- 1 add -1 exch { % mind j v n -1 maxd+1
- mul % mind j v*i
- 1 index 3 index le {
- 1 index idiv exch 1 add exch
- } if
- } for
- { % mind j v
- 1 index 3 index gt {exit} if
- 1 index idiv exch 1 add exch
- } loop
- exch pop exch pop
- } bind def
-
- /getRSSwidths {
- /oe exch def
- /el exch def
- /mw exch def
- /nm exch def
- /val exch def
- /out el array def
- /mask 0 def
- 0 1 el 2 sub {
- /bar exch def
- /ew 1 def
- /mask mask 1 bar bitshift or def {
- /sval nm ew sub 1 sub el bar sub 2 sub ncr def
- oe mask 0 eq and nm ew sub el 2 mul sub bar 2 mul add -2 ge and {
- /sval sval nm ew sub el sub bar add el bar sub 2 sub ncr sub def
- } if
- el bar sub 2 gt {
- /lval 0 def
- nm ew sub el sub bar add 2 add -1 mw 1 add {
- nm exch sub ew sub 1 sub el bar sub 3 sub ncr
- /lval exch lval add def
- } for
- /sval sval lval el bar sub 1 sub mul sub def
- } {
- nm ew sub mw gt {/sval sval 1 sub def} if
- } ifelse
- /val val sval sub def
- val 0 lt {exit} if
- /ew ew 1 add def
- /mask mask 1 bar bitshift not and def
- } loop
- /val val sval add def
- /nm nm ew sub def
- out bar ew put
- } for
- out el 1 sub nm put
- out
- } bind def
-
- /tab174 [
- 347 0 12 5 7 2 87 4
- 1387 348 10 7 5 4 52 20
- 2947 1388 8 9 4 5 30 52
- 3987 2948 6 11 3 6 10 104
- 4191 3988 4 13 1 8 1 204
- ] def
-
- /dxw datalen array def
-
- 0 1 datalen 1 sub {
-
- /x exch def
-
- /d binval x 12 mul 12 getinterval def
- /d 0 0 1 11 {/j exch def 2 11 j sub exp cvi d j get mul add} for def
-
- /j 0 def {
- d tab174 j get le {
- tab174 j 1 add 7 getinterval {} forall
- /dte exch def /dto exch def
- /dmwe exch def /dmwo exch def
- /dele exch def /delo exch def
- /dgs exch def
- exit
- } if
- /j j 8 add def
- } loop
-
- /dwo d dgs sub dte idiv delo dmwo 4 true getRSSwidths def
- /dwe d dgs sub dte mod dele dmwe 4 false getRSSwidths def
-
- /dw 8 array def
- x 2 mod 0 eq {
- 0 1 3 {
- /j exch def
- dw 7 j 2 mul sub dwo j get put
- dw 6 j 2 mul sub dwe j get put
- } for
- } {
- 0 1 3 {
- /j exch def
- dw j 2 mul dwo j get put
- dw j 2 mul 1 add dwe j get put
- } for
- } ifelse
-
- dxw x dw put
-
- } for
-
- /finderwidths [
- 1 8 4 1 1 1 1 4 8 1
- 3 6 4 1 1 1 1 4 6 3
- 3 4 6 1 1 1 1 6 4 3
- 3 2 8 1 1 1 1 8 2 3
- 2 6 5 1 1 1 1 5 6 2
- 2 2 9 1 1 1 1 9 2 2
- ] def
-
- /finderseq [
- [0 1]
- [0 3 2]
- [0 5 2 7]
- [0 9 2 7 4]
- [0 9 2 7 6 11]
- [0 9 2 7 8 11 10]
- [0 1 2 3 4 5 6 7]
- [0 1 2 3 4 5 6 9 8]
- [0 1 2 3 4 5 6 9 10 11]
- [0 1 2 3 4 7 6 9 8 11 10]
- ] def
-
- /seq finderseq datalen 2 sub 2 idiv get def
- /fxw seq length array def
- 0 1 seq length 1 sub {
- /x exch def
- fxw x finderwidths seq x get 5 mul 5 getinterval put
- } for
-
- /checkweights [
- -1 -1 -1 -1 -1 -1 -1 -1 % A1L
- 77 96 32 81 27 9 3 1 % A1R
- 20 60 180 118 143 7 21 63 % A2L
- 205 209 140 117 39 13 145 189 % A2R
- 193 157 49 147 19 57 171 91 % B1L
- 132 44 85 169 197 136 186 62 % B1R
- 185 133 188 142 4 12 36 108 % B2L
- 50 87 29 80 97 173 128 113 % B2R
- 150 28 84 41 123 158 52 156 % C1L
- 166 196 206 139 187 203 138 46 % C1R
- 76 17 51 153 37 111 122 155 % C2L
- 146 119 110 107 106 176 129 43 % C2R
- 16 48 144 10 30 90 59 177 % D1L
- 164 125 112 178 200 137 116 109 % D1R
- 70 210 208 202 184 130 179 115 % D2L
- 190 204 68 93 31 151 191 134 % D2R
- 148 22 66 198 172 94 71 2 % E1L
- 40 154 192 64 162 54 18 6 % E1R
- 120 149 25 75 14 42 126 167 % E2L
- 175 199 207 69 23 78 26 79 % E2R
- 103 98 83 38 114 131 182 124 % F1L
- 159 53 88 170 127 183 61 161 % F1R
- 55 165 73 8 24 72 5 15 % F2L
- 89 100 174 58 160 194 135 45 % F2R
- ] def
-
- /checkweightseq [
- seq {16 mul checkweights exch 16 getinterval aload pop} forall
- ] dup length 8 sub 8 exch getinterval def
-
- /widths [
- dxw {{} forall} forall
- ] def
-
- /checksum 0 def
- 0 1 widths length 1 sub {
- /i exch def
- /checksum checksum widths i get checkweightseq i get mul add def
- } for
- /checksum checksum 211 mod datalen 3 sub 211 mul add def
-
- /i 0 def {
- checksum tab174 i get le {
- tab174 i 1 add 7 getinterval {} forall
- /cte exch def /cto exch def
- /cmwe exch def /cmwo exch def
- /cele exch def /celo exch def
- /cgs exch def
- exit
- } if
- /i i 8 add def
- } loop
-
- /cwo checksum cgs sub cte idiv celo cmwo 4 true getRSSwidths def
- /cwe checksum cgs sub cte mod cele cmwe 4 false getRSSwidths def
-
- /cw 8 array def
- 0 1 3 {
- /i exch def
- cw i 2 mul cwo i get put
- cw i 2 mul 1 add cwe i get put
- } for
-
- 22 array dup dup
- 0 cw put 1 dxw putinterval 0 datalen 1 add getinterval
- /dxw exch def
- /datalen dxw length def
-
- % Encode row runlengths
- /rows datalen segments div ceiling cvi array def
- /numrows rows length def
- 0 1 numrows 1 sub {
- /r exch def
- mark
- segments 4 mod 0 ne r 2 mod 1 eq and {0} if
- 1 1
- 0 1 segments 1 sub {
- /pos exch r segments mul add def
- pos datalen lt {
- dxw pos get {} forall
- pos 2 mod 0 eq {fxw pos 2 idiv get {} forall} if
- } if
- } for
- 1 1
- counttomark array astore rows exch r exch put pop
- } for
-
- format (expandedstacked) ne { % Linear
-
- % Remove leading space
- /sbs rows 0 get dup length 1 sub 1 exch getinterval def
-
- /sbs [
- 1
- 0 1 datalen 1 sub {
- /i exch def
- dxw i get {} forall
- i 2 mod 0 eq {fxw i 2 idiv get {} forall} if
- } for
- 1 1
- ] def
-
- <<
- /ren //renlinear
- /sbs sbs
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- } { % expandedstacked
-
- /seps numrows array def
- 0 1 numrows 1 sub {
-
- /r exch def
- /row rows r get def
-
- % Sample runlengths into bitmap
- mark
- 0 2 row length 1 sub {
- /i exch def
- row i get {0} repeat
- i row length 1 sub lt {row i 1 add get {1} repeat} if
- } for
- counttomark array astore /row exch def pop
-
- % Derive the separator pattern
- /sep [ row {1 exch sub} forall ] def
- sep 0 [ 0 0 0 0 ] putinterval
- sep row length 4 sub [ 0 0 0 0 ] putinterval
- /finderpos [ % Finder pattern module positions
- 19 98 row length 13 sub {} for
- 68 98 row length 13 sub {} for
- ] def
- finderpos {
- dup 14 add 1 exch {
- /i exch def
- row i get 0 eq {
- row i 1 sub get 1 eq {
- 1
- } {
- sep i 1 sub get 0 eq {1} {0} ifelse
- } ifelse
- } {
- 0
- } ifelse
- sep exch i exch put
- } for
- } forall
-
- % For even segment-pair symbols reverse alternate rows
- segments 4 mod 0 eq r 2 mod 1 eq and {
- rows r get length rows 0 get length ne % Except partial width last row
- finderpos length 2 mod 1 eq and { % with odd finders
- /row [ 0 row aload pop ] def
- /sep [ 0 sep aload pop ] def
- } {
- row length 1 sub -1 0 {row exch get} for
- row astore pop
- sep length 1 sub -1 0 {sep exch get} for
- sep astore pop
- } ifelse
- } if
-
- rows r row put
- seps r sep put
-
- } for
-
- % Extend last row and separator to fill width of symbol
- /pixx rows 0 get length def
- [ pixx {0} repeat ] dup 0 rows numrows 1 sub get putinterval
- rows exch numrows 1 sub exch put
- [ pixx {0} repeat ] dup 0 seps numrows 1 sub get putinterval
- seps exch numrows 1 sub exch put
-
- % Middle separator pattern
- /sep [ pixx 2 idiv 1 add { 0 1 } repeat ] 0 pixx getinterval def
- sep 0 [0 0 0 0] putinterval
- sep pixx 4 sub [0 0 0 0] putinterval
-
- % Compose the symbol
- /pixs [
- 0 1 numrows 1 sub {
- /r exch def
- r 0 ne {
- seps r get aload pop
- } if
- 34 {rows r get aload pop} repeat
- r numrows 1 sub ne {
- seps r get aload pop
- sep aload pop
- } if
- } for
- ] def
-
- <<
- /ren //renmatrix
- /pixs pixs
- /pixx pixx
- /pixy pixs length pixx idiv
- /height pixs length pixx idiv 72 div
- /width pixx 72 div
- /opt options
- >>
-
- dontdraw not //renmatrix if
-
- } ifelse
-
- end
-
-} bind def
-/databarexpanded dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp databarexpanded 0.0 0 0 0
+%%BeginData: 204 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 061WAD .. O,Bm>e #06
+M%_@rEuAATDg:@W c^5Df .1: GA2 # 8P1 l(D Ops 'T@<>p e@ <,q(E+ *Wp
+ARp.D'Tt>:%52X= FD5Z2 F-8 _M1 G< 3G Eas #uA Wf6?1G <9 WDKKE0 @<W
+i+@;L!rOu"b)ASG djFG M,s 8< Pl o1G <?Y Ec# 6,NX
+03@E+*WpARpr[06 :];D . RU ,F ,9j Z1G <QYD JNZnA
+KYSnCia0N1N.5SB l@m1P- 6N[ F E2) 5B 68E< AWf 3'L]NYrOpu >KFD5Z2F*j(
+NAmoLsAWf3'P!FG Y<0B5( @Zm R N0oc 8tP) XR( F_-_!H]ftD 5*C&O5*@^MH
+]ft&EckrV1OYEdI ?J0)*g /N: DfBf 4Df0 WZ5 *@^MP#Q@=F D5Z2F*j'+I?
+I/TBOtmjBQPA1AS GdjFH S;?1 G<f\B 5M3t FE8 RGAS5jkDKK r_/<Vf1AS5j
+kDKKrUs,oNl06:] ;D.RU ,F!,( 5Ec#6 ,NX o]GE+*WpAR ok(@:O(aA<K
+*&L]i-QL_bE%<K] .dP#O)G G]7)/A :#tDD N[2 H1G<ZhF<G: 8P%'TNOu"b+
+L]ESoBl89X!FCqKH]g@,F``d1C6CcDH'2WOOo^@>Oo[4NP!5$bP')pIL]E55P"_#iDfp/b5&,l
+SP,XU.P'E-LP%'4LP,X6>P!5%&I=%,:Dfp/b5&-6EP'N4"C6ATNC6CcD1N.DXL]D1Q9ThYhP#Z
+pnAUT^OOu"b"BlbD$+C1-d04AR<@;L`$Ou8CY@UX:eDe*FB30Ia,!KsF<!KoX09RDp^NW>5*H]
+gXBP#RGB.?][RFcnqOFcnqK!@X+jH]gRUFcnqE",Hu@LOFN0!/L`5!Kr4dP#Y^/@;0eG!g7\h)
+i+QY!KpPj04AR9P!5$b@;0mnCkr1L!Kr4LG]7)/A<M1cP%Bf!HXUW0P%'4KP!+/#Blf(1P"Uf:
+0JS_R@;0e=!Kp*9">_bd1Qjna"FFQkG%#3I!\c?l98ES(!Kp-:!BH<+@;0mnClSWS0ebDH99Li
+\J,b[?Op$,l">DPa0P4a0F(LM"I?IQXP#Qjm<+0K^P%'4KP!+/#Blf(1P"Uf:0JS_R@;0e=!Kp
+*9">_ee16Oe`"FFQkG%#3I!\c?l98ES(!Kp-:!BH<+@;0mnClSWS1,(JH99Li\-P)AKOp$,l">
+DPa0kOj1F(LM"I?IQXP#Qjm<+0K^P%'4KP!+/#Blf(1P"Uf:0JS_R@;0e=!Kp*9">_ee1Qjna"
+FFQkG%#3I!\c?l98ES(!Kp-:!BH<+@;0mnClSWS1,(MI99Li\=RVD]Op$,l">DPa0kOj1F(LM"
+I?IQXP#Qjm<+0K^P%'S6L]W`&P!4[(P!+tKHS8fA1GLS.+D,%uF(L(7*/FWM$mg7V$A\hJV33N
+@Blf(2P"Us$P&bu68<Pb^@;.MQ0R+^P@;L!rL(&Tg!JV#>H\`#b"HoUE0O\[:L]NZ3P!+tKI?I
+-a1LY!=P%'4LP!+.F@;01ZA0>u7F_)\"NWLpiNWLpkNWLpmNWLpo?$d]&Blf(3P"UsTOp$2r8W
+klXHS8fA@UWdiAmoLsAWeitP#Yq)F,0gZ99''-0p4\.BeqItGT^F/1GUY/P&c]g@;01ZA<Lnp"
+FFQkF-:!g"-Pfo@;0mnClSQN0p51c!/LZ=9TB-6P!*5fG%#20@;0e=!Kp*=99LiZ!!.hHP$sLV
+@;0mnC`m/#F,0m\99Mr2/;+!669gWAOp$,?BeqItGT^F/F,0m\99''.0p4\_"FH.60JP::0JG1
+m@;L!rP!FGY<+0Js1,*qq@;0e=!g63:!\lEm4d#qpNX%6m0ek@90kOj1F(LM"I?IQ<BeqItGT^
+F/F,0m\99''.1Qjna"FH.60JP::0JP7n@;L!rP!FGY<+0Js1,*qq@;0e=!g63:!\lKo4d#qpNX
+ %6m0ek@:0kOj1F(LM"I?IQ<BeqItGT^F/F,0m\99''.23L+c"FH.60JP::0eb:n@;L!rP!FGY
+<+0Js1,*qq@;0e=!g63:!\lQq4d#qpNX%6m0ekC:0kOj1F(LM"I?IQ<BeqItGT^F/F,0m\99''
+.2j-=e"FH.60JP::0ek@o@;L!rP!FGY<+0Js1,*qq@;0e=!g63:!\lWs4d#qpNX%6m0ekC;0kO
+j1F(LM"I?IQXP#QjV@;0mnClSQN0p51c!/LZ=9TB-6P!*5fG%#20@;0e=!Kp*=99LiZ!!.hHP$
+sLVHXUVE0edj!NX%6m0ek@90P4a0F(LM"I?IQ<BeqLuG^GGU0JP::0JG4n@;L!rP!FGY<.0p/I
+?ITYP#Qjm<+0K^P%'4KP"L'S@;.MX13apR@;L!rL(@+:!JV+`H\`#b"HoUE0O\[:L]NZ3P!+tK
+I?I-a1LY!=L]ET2NWLmhP!*5f1H@48Op$,?Bm*p$NWLmhP"UT2L]NZ4NWD/'4aW1m0JP:90Q_>
+XAWf<,P#Qjm<.0p/@;0eG@Yb)K8p`4"Beqb*GT^U,Cia0B%pFbiL(@R:L^Jq@P,4<q@;0e=!Kp
+*=4d'i6P":`l@;0e=!0U!8!\c?l4^i%\3AYoC"FFQkG%#3I!\c?l98ES(!Kp-:!BH<+H]A7`0e
+k@:FE2M8P!FGY<.0p/I?IQ<Blf(1P"Uf:0JS_RH]A+]FE2M8P!FGY</q#60Q_>XAWf<,P%?:ZE
++WNpCi=N\5*@]TD.Rg&De,"pOu"b$Df0_Q13@Fk0RJg.0JG170JG170JG170JG170JG170JG17
+0JG170JG170JG170JG17La\F_Or9&WOr9&UL^K;=P!4[%L]`f6Ot;CjL^K<AOt`%YP%'4SP!5&
+.P!5%SL]W_WL^JqFP"_$&L]`G8P"_#iL]WA>P,4<qOuSV6L^K;/P,XU.P'MibOr9&iL^K;=P!4
+[+L]`f6Ot;CjL^K<AOt`%YP%'4SP!5&.P!5%SL]W_WL`V?ZP"_$&L^Ak>P"_#iL]WA>P,4<qOu
+SV6L^K;/P,XU.P'N3SP')29%[&V$@rH7.0f*oi1c0Q>/2/b30JG170JG170JG170JG170JG170
+JG170JG170JG170JG170JG170Sh9CV32^P!g4FW!/Lc@9ThSq!/LZ=9Tgr_!f-uBV33Nq30Ia,
+"Hks3WKKH.H'1.C",Qu?LPPte%$F:oDf0_Q13@Fk0Sfjp5*C2>Oq*X206D,ABl89\V33g$@Yb&
+JWJCP;5)96&5'r(dP$!l2LbP!:I?I-a3/@Zms,r.n!f-o@=H[-VV33Nq30Ia,!g6ZK@Zip<WKK
+H.H$thcOu$rdFD,T'NWLmgP!+.F@q90o>9I471G<B[Aft;#?'7!lP#Q:0FD,T'NWCkt4aShlA7
+crmBm*p$NWLmhP"UT2L^fM@@rH7.0f*oi1c1@O04SO)+BosuA7g1E0TrD`P"ArB1G<B[Aft;#?
+'6us@;0d*@;0e=!F]\`P%'4JP,XU<Ou%NL<,H2gBQ%FA">DPa0TnSG04SO)Lc:KnOu$TYAr$Fq
+Bm*p$NWLmhP"UT3L^]G?@rH7.0f!ih1bb)<@q92--t-h5@;Lr,1GLR>P"UrhL_"TG@VK_CGqWZ
+<Aft;#@q91uLbP!kI?I0-Ou"b(E+U4s+C1-d04AR9+BosoOu%NL<,H2gBQ%FA">DPa0p4\H04S
+O)Lc:KnOu$TYAr$FqBm*p$NWLmhP"UT3L^]G?@rH7.0f!ih1bb)<@;0e=!Kp*9">_ee16OeI@;
+0mnClSWS1,(JH99Li^%s2`!Bl8?G+CSu-@;Lr,1GUX?P"UrhL*mOq!Jh8.DdmEuI?IT?A7gugL
+a\EMP'J]jA7crg+CeqoH\aA=WI9q$?'6usB5hH*>9I471G<0NF!+[0?'7!lP#Q:0FD,T'P%'4P
+P!+.F@q92-9Tl681Ljs-L]CjtG%#3I!\c?l98EV)%$F:oDf0_Q13@Fk0Tp^;#*PgG3/@QCBlf(
+2P"UT5L]NZ4P'N3M@;0mnC`m/#F,0j[99Mr(!JgoB9S`_45*C2S/;P!^DdmEu+CeqoP!4[MP!5
+ %S@;0eG@Yb,L4aUUOG%#20@;0e=!g63>99M8j!/L]>9Tgr]!J$>LP!5$gL]WA6P"_#iL]N[<L
+`hjsP!4[)L]W`5Ot;asOo]uXKE)"<!.C#1L_+ZH@VK^&@q9275);=a5*C1E@q90o>9IEdAp]=f
+P,Wkm8R7K805#69+BosoOu"b"BlbD$+C1-dI?IQHATVU(A<$gI0ek@9P!+.F@q92-.[$Wk1Ljs
+-L]CjtG%#3I!\c?l98EV)%$F:oDf0_Q13@Fk0Tp]kA7gWG@;0e=!Kp*3",Hu@9Tgr_!d&?iBl9
+)Z04SO)+BosuA7g1E0TrD`P"ArB1G<B[Aft;#@;0mnC`m/#F,0j[99MqpI?I0-Ou"b"BlbD*Bl
+f(3@;0eG@Yb)KWKKr<1OYEcD.Rg&De+k30JP:90p4\H04SO)Lbt9kOu$TYAr$FqBm*p$NWLmhP
+"UT3L^]G?@rH7.0f!ih1bb)<@q92--t-h2L]NZ3L]`G6P"_#iL]V[:@VK_CH"1AsLalhIG%#20
+@;0e=!Kp*=98ES("-Q?@/;OXTDdmEuP'J]jA7crg+CeqoH\aA=WI9q$?'6usB5hH*>9I?gG%#2
+0@;0e=!Kp*=99M8t@Yb,LWJCY>5*ATdI?I0-Ou"b"BlbD*Blf(3@;0eG@Yb)KWKKr<1OYEcB5h
+HkCi"$6HS9PYAr$MO$'I)mHS9PYAft;#?'7!lP#X/DBkD((ARpT5Ou8CY>DN98!Jgl*I?I-,H]
+A.]0SfdnV32^Z30H7W!Jgo8s,r.n0TlI"G[Y;uBm=3"L]`G6P)#3FI?I0+L^T">L_P2aP":BFL
+`_ERLa7=qP":BX?$hA7L]Wa9Ot`%Y@;0=fG\(EA",Hu@LQZn1P"@<=DIYDWs,o/kCi4B4ATDKp
+M#NPn05P'5E+iZtF_t]1Bk)ttOu"b-Ble2N1cC0fOu"b/F_t]1Bk&8J4GWun!JkrHOuSI'0JJ:
+aP,4<ZOuS7"M#WWnL^T"?P,4<qOuSV6L]W`'P,XU.P'N3ML]ET2Ld@1eH]g@E!/OsEG^Y`SOuS
+6uP"UTsP!+/T3/@Tk?BTP]P#RT.L^9.ENX%6l0JG170SfssV32^Z3/@Zms,r.n!f.)EV33Nq30
+Ia,#Eh96WKKH.H$tiHCgh.!BOPe$D.Ra%@u^[G0JG1E5*@]T@;Kmr@;^4)ATDKp+?VcB0Sfac3
+I?oKLb"XfL]qm=@VK_.P"92&@kiuI0JP::0o/,O!Jjp+OuS7@P,X6AFDkW&DLI[=LanDh0ekC:
+0eeD7L]N;bH]g@E&!?sL#'=cmBl8?^88N0dD.Ra%@u^XF0JI<WF)Nrn2N@qp0JP785!G,c055K
+G2Dd<74?SERL]N;lH]g@E/!?lf"a"ZlBl8?^87laL0ocDk0ekC;Ld?gtLg#.g3/@TuWJCe$Ddm
+EuI?I-W@>Fr?H@(f7L^0*BL^/$?@VK_.P":BPNX.?o0eb=90JJ;,NX.?o0eb=90JSA0L]N;bH]
+g@C!6(*%L^8*@@VK_.P":BiL]N;rH]g@C!5"BpL^8*@@VK_.P":C9NX.?o0ekC:0enJ,NX.?o0
+ekC;0JI<\F_t]1Bk*/*0JG1s@;Kmr@;^4)ATDKpNWh*j0eb:F5*@^X!/LYaBlfGHL]N[<HS9)r
+5*@]T@;-imBlbD2P"Uro06Uc?+CSu-@;I&pBp),P1M:Z=P%%j6P%'RTG%#3M@ZgbT$'I9(!,$7
+_P'N3MB5hIG@UWsn>EV0sI?I0-P'N3MB5hIG@UWu6@Zgb8@;I&jP!45@P"ArBGqWfLAs,?@1MI
+t?BlfGHL]N[<P&4WAAncL$A0>;pL]E54P"_$HP&QQeHY7;0P%'4JOo^^POuS6tB5hIGH'1."E+
+Y8BAo;*5P'AWmE+Y7sOu%NL<.0p#061W@@VKq*H]g@E%$EN3&<\T#%$GF_0Sfdn)3STYP!4;W<
+0DBe3/A!+;Na"\AS5jkDKKr_C5;nR4aVtcOo^@IP&-:FP')2"P')29<K]P/WI9p>Ou"b&DI[Tq
+AUBS"061KFP&5Q/5*AQeH]iN"P#Y_L5'r)>P,Wkm8R7K=P%'S<B5hHoDI\hnC6CcDGqWoq5&-5
+]Ou%NL%[&V$DKTf-EbT$(F`)7C>9IQtAs-VML]DjdK89M`s':dD04A[9BOPe$D.Ra%@rc^0F!+
+[0B5hIG@XEn2I?K5=!*taD05b?GFD5f72Dd=1DJXS@>9IQtAs-VML]DjdK8(`a?'7!VE+Y8BL]
+N[<M#W82HS9)r5*@^7E+U5,P"Uf:0JJ:aP,4<ZOuS6tB5hH*Bp),P3+d&<0p4\HP')ReI?IQmG
+\J:5E+Y8BL]N[<P%K'(3/@TJE+U5,L]NY>P"UrtAo;*5P!+/TFbj@PP#RThI?IQIF_t]1Bk*;i
+P$iWSF_t]1Bk)1+DK?q7+Du==ATDKpEcl8@+DHW5Oo^_=L]W_?P'DD%DKTf-EbT$(F`)7CBnub
+PG^Y`TOuQldE+iZtF_t]1Bk*;iP$iWFCiF&rDKTf-EbT$(F`)7CBcpi#E+iZtF_t]1Bk)1+DK?
+q7L]NY>P"UT3Oo^_jI=#C=E+iZtF_t]1Bk)1+DK?q7L]ET_I?ITn3,*GP2Dd=T5*B<:5%/8HBO
+Pe$D.Ra%A!0$=@$5Jl"FG#tG][Y@D`0F1Df0B:+DHW3P'DD%DIn'7Ble2N1cB8iCj@.;+Dtb8F
+D5f72Dd=1DJXS@BnueQ!Kp*3!KmJHG^Y`TI?I,SB5hHoDI\D$r/qAL1G<Hu!0T,kC5;kQ1G<T`
+A7^c+DKTf-EbT$H1OEgYB5hIG@Zim$P!FGY<-rJ#A7^c+DKTf-EbT$H4aUlcB5hIG@Yb)KWKL\
+:L]Wa9OuS6tB5hH*Bp),P3+d&<0p4\HP')ReI?IQmG`k%B!G?@`+DHW4Oo^_=OuR&k@kj-0H]i
+N-?@@u9P'E-LDKTf-EbT$H5*B<#DKTf-EbT#+ASu!rA7[E.+DHW5Oo^_%P!FGY<0DB?@;Kmr@;
+^4)ATDKp+Du==ATDKp+D#G#De*E4D/WrrNXT?4E+iZtF_t]1Bk*;^P!FGBB5hH*Bp),P3/B8OA
+s,?63Kd4%EdMV2CiF&rDKTf-EbT#+DKTf-EbT#+ASu!rA7[E2De*F>$t3skBOPe$D.Ra%A!/X2
+5^eep061W@L^](?Oo]E2FD,T'P%'RTG&1cR@Zgb%A7h!6Oo]<\!HMag@VKq*Ou%,iD28=X8oeK
+[L^'#NOp$,l"u%_b0JG2:#*PgG)2J95ASmT(OuR)nAftfN98G6aWJCV3"HoUE0TnDY@Yb/M5*D
+n.5*C1EEaa/7ASu!rA7[E.+DHW4Oo^_%P!FGBL]Wa9OuS6tB5hH*Bp),PG`k%B!Jk'FG]%Y@AT
+DKp+D#G#De*E4Bcq,G!KmJH1Qk"OP#Zpn<IL$0D/WrrNXT?4E+iZtF_t]1Bk*;hHY7;0+DI!3A
+o;*5P!+/(DIYCD@;Kmr@;^4)ATDKp+D#G#De*E4D/WrrNX'HED.Ra%A!/W$Bcq,G!KmJH1Qk"O
+P#Q(5AftfN99M8KF)Nrn2Ng7e@$3]^CiF&rDKTf-EbT$H5*B<:E0:?NCh[s/2Dd<7@;Kmr@;^4
+)ATDKp+D#G#De*E4D/WrrNWs3=D`0F1Ou&7dI?IQIF_t]1Bk)1+DK?q7P"UT8P"L(;DKTf-EbT
+#+@;Kmr@;^4)ATDKp+D#G#De*E4D/WrrNX'HED.Ra%A!/X25^eepDKTf-EbT$(F`)7CBp),P3/
+@^#8s2APOo]37As-Vd4d#qpCi4B4ATDKp+CT)*BOPe$D.Ra%@j#?#@rGmh05YW<AW@"5F_t]1B
+k*;^P!FGY<+g/^+DI!3@;Kmr@;^4)ATDKp+D#G#De*E4Bcq,G!KmJH1Qk"OP#Q::A7^c*Ble2N
+1cCL[HY7;0+DI!3Ao;*5P!+/(DIYCDBle2N1c?IfDI[TqAM7n=A7^c+DKTf-EbT$H1G<GbBnue
+Q!Ko7%5^eepDKTf-EbT$(F`)7CBp),F"HlApAU&<2F)Nrn2K*JLGp$ga98Eq<8s0=(Ci4B4ATD
+Kp+DGn82Dd<7ASu!rA7[E2De*F>#B"[$ATDKpOu&7dI?IQ<CiF&rDKTf-EbT$(F`)7CBp),F"d
+2JqAU&<2F)Nrn2K*JLGp$ga98Eq<8s0=(Cgh.!BOPe$D.Ra%@j#K,D`0F1+D#G#De*E4D/WrrN
+XT?4E+iZtF_t]1Bk*;^P!FGY<+g/^+DI!3Ble2N1c?IfDI[TqAM7a?BnueQ!Ko7%5^eepI?J/i
+P%?:ZE+U5*E+W[!@u(,"P"_#pL]N;?Oo]E2FD,T'P%'RTG&1cR@Zgb%A7h!6Oo]37As-Vd!KoE
+_ASkmjFE<U)OpNd\@:YNbOu%8tAs-VZ!0V2GOo^@IP#@H&L]W`SG&1cR5)93%5*C/H%[(7IL]D
+jML]Mpe<H`1jP!4[&P!5%RI=%-"P')29<H)AWP%'4IP#-L]!/Let@:YO1L]N[<HS9)r5*@^@@:
+UKp+BsX%L]E53L]E52?&/K"@:YO1Bp,HO"c*5C)3RgCP!4;W<0DBe9Tj[LP"9G.A7^c+DKTf-E
+bT$H4aSi$@:UKbL]E52L]E52E+*:?!g7\3L]DC&A<LDb9Th2[P#Qjm<%h]pDK]H)+Bot)Bl7]p
+B4ZFG!I]<N!.C#1D.Rg&De+3N0TrD`P"Bh5As*4YF^nroOogehB5hIG!g7\F@:YN&P'(&n1G<9
+IFCAusDBND&DK]H)P%'4UP#@H!05b9?H\_`d)3UtT!g4FaAp]\)I?IQc!Jgc4"c*8DLPPto!Jp
+c=5'rH/L]NZ@L]`fBP$r]n!KpQJ;Na5"!KmJH5(/SnI?I-JL]NZ@L]`fBP#-Lg5^eepL]NZ@P#
+@H,L]NY>P!4;WAWf6?FcnqOFa]D_Ou"b(ATUgK;g2qdFD,`B05kEb5*@]TASdMnOu"b.GEP.Q1
+G<W_P!5$b06Uc?P!5$b05kuT+D#AP$'I(tD..L$L]ESoL]E53ASd/(P,Wd]@UX;?5*@]TATrq2
+Ou"b.@<63,D..L$L]LsnEfprrEfr5*06;;FC`mV4+D#b[WJCS<WF]lg@UX;?WJCV=WGZ3dOu%#
+f+DkP.CPVtR4d#qcD'3D6P,W#/L]W`UP,Vo!Eejd[Cm"gTrfTm:"FDeCG%#20F*:u.+Du$=ATs
+<:ASdO/@UX;?!G-'i@UX;?WJCV=WGZ3dP,XU#I?IQ@C`m1qEg!DX!g6B,05Pf?Ckr(S1N%%PAT
+s<:ASdO/@UX;?!Jgf?!JpbmGDH9_!IJ^$P!5&.ATs<:L]N[<AS`Ju@<.O1L]`g>DI[]?Cj'6'P
+!3]*@;M)-Ou%NL82#%-@;I'-G%#20Cj'6'+D#@3@UX;?WJCS<WKM(\WKK&cHZ![CATs<:D0M.>
+HS9G`@;I'-G%#3C!KsFF1OYEcI?IS`G%#20G%#20F*:u.P,XU#G%#3C!0Ur@P!FGY<%hg,+D#b
+Q!KmJH1G<TRF))n8@<64?!FfJXOq3^pOp$q(I?J.pG%#20G%#20F*:u.Oo^_%05bVLDJ^M-GES
+qg1N.DX+C\c"+D#b[G^Y`GDfp.EASd/'P,W>9P'CnfFFB;^Ou"b5@:CrM1a$"W!F(?[L^](CL^
+/_;Lf]B8L';@I!F1EfL^/_>L]iMjL_PROK8'PGL^8eCL]iM;L`V@/L(BK&$\X<?L^T"@L^&YBL
+hMMS?\T)UL]iMCL]N;;L]N51b[$Af04]<O+Cno&@;KLmOpR:-L]E53A79RgCh7L?!KsF/06iXD
+Ou"b%+C]&&G%#20G_cckCkrL_9Th1bA;C5A!/LZ3$[XOAP!5$bL]WA?C6GQ-G]8fsA0>WM99O+
+S!I^,%Ou"b+L]ESoHXn7@@:CrM1a$Or99N_1FCAW52`)XlL]NY>L^0):H[V&K04]09P!5$b04]
+0CP!5$b04\pDAWf6?1G<9UGAiX.Ou"b%ASbq@5*@]TA7]RqP!5$b04\^:P!5$bP!FGY<%hu/C5
+<.Y!Ko6eP%?:WGAeU7+Co,+P,Vu6AWfr%ASc9-A8QO/L]hg?F_)\.ATUgK;g2qdFD,`Y1G<9_A
+KYM+A7otHWFU*^P%nN=Ch4`"D0KQI"D2(YF(HJ,ATUgK;g2qdFD,`Y1G<9_L^9.MOu%?=!g7;S
+!0TKlL]E53L]_uWC6CcD1Lt]c#AT%rP&-;\A9Vr7C6D5QG[u#S#&8qqP&-;\A9VT-C6D5QG^Y`
+GI=$bML]N;6HS9,s5*@^4G9CXV!g7A1GAeU=P"Us_A9T/2L]W`UL]NY>A9VT-C6D5QG^Y`GI?I
+T@G]t9T+Co\ZG^Y`G04np9A7]e*Bk2=!F!+\C!Jh#;"Gd)7!Jgc4!Jgl7#`&M;",I/;"Gd)7!J
+gc4!Jgl7#)EA;",I)9#)E;9!Jgc4!Jgr9"Gd/9",I#7#`&M;!Jgc4!Jh#;!f-r7!f.&:"c*28!
+Jgc4!Jgo8#)E>:!f-o6$&AV<!Jgc4!Jh&<!f-n`Ou"b'Bl7HmEcYf3+BosmL]E53>p*@-!/L`5
+!aQpQL]E57L]WA;>p*@-!/Lr;!f.);"C3-SL]E5;L]WA;L^&YC>p*@-!/Lr;!f.);#`&kE$=+c
+YL]E53L]WA7L]iM;L^&Y?>p*@-!/LZ3!f-r7"Gd5;#)ESA#[JQWL]E53L]WA7L]iM;L^&YAL^J
+qG>p*@-!/LZ3!f-r7"Gd;=#)ESA#`&kE$=+c[Ou"b4AT8i)Bl7HmEcYf3+Cno&@;KLmL]Wa=L]
+W`;P"Uro04oHQ+E M+6P% 'R\Ou %moL] MR .EK Xde!Ks F/06iXD
+Ou$]pG9D,QAnc-n ATE !/A9; L++EM +6 +F' &BL ]rrX
+L]rr8P'DD<82"Id ARfM" AS GdjFE 8R/M #W ;2M #W;2M #W; 2M#W; 2LeW
+\5L`hLNL`;-VL]` G6L_P Y-L &eT :G(p !X L^/ _NLd-U oc %Z5GL& d0g
+FbhE$%>FkFL&eoA !5XBi SVT "T! 0 `3P LcL 1iX ,'u7!/ -. ZLfK00 WJ1
+DlL&d$a!4mtML&e c=!/6 .-] S6E HL ]i MBL a7d mLbacf L` M:JLgc #<X
+bHh+LiJ.LQA?N:< /;uZ H\M Nl Lb shd S;% $@L &f/H
+!7$<!MhV5DL&fDO !/cR b Le NU :Lb jbc R></ FDhr^
+o!1S]CP)+=<DMW( aC5)_m L&c d \.u 4a m0ST RhL ^JqZLg#TrL &eK5!2PF!Li
+A(KZA&A#L&d'dFG Odi7YU okL & fST! 6U#r \:t !8L&eQ9F+s \/L&fGR7#5-
+)+,0c^L&euC!/?4 .P_^*2 6A> K[L& e<2? AM+ -!f/7Z!1JW B^kb71!2>9-
+L_>LJLj4XSQ&$<6 98F(6 .YrP .!2kP OYD* %tL &fPU7>Mb9: 5BgE:P`Y>@Y
+ds=-AZ\s!/$"+[Y T<c!2 #')Lf fB3We c.Z !4RbIL&dp' 2hh=/Le3C.L
+_tq=L]rSFLfoOEL &eB43ed X-L&f) F!/H@ ^?' 6us@q]F`CN j?(B4uC.AT8
+hs+EM+6H\`5rCh%-i@r$:"BkM+$F-8_C&<]_M!g7\SP"ArB30Ia,#a20C#a.B79Th1bGA1T0BQ
+G;#+Co_@H[C1(8UZan?'6us@q]F`CNFW8L]ESoL]E53GA1T0BQK>GL]N[<HS9)r5*@]T@q]F`C
+NFW8+Cf(r@r$..D'4%:A9;L++DI!3@q]F`CNj?(B4uC.AT8i,P"UsSOo^_%I?I,S@q]F`CNFW8
++Cf(r@r$..D2&&>P%nN9FCAusDMSCXWJ1E%P&-9^Ou"b*L]ESoHXg`#@r$..D'3q/@PKeu+DI!
+3P$r]Z@:CrM1a$Lg!KmJ>#Ehc-I?I/T@ru:F5*@]T@ruXP5*@]T@r6F$P!5$b04SjCDj!;I1G<
+6LCh8bnOu"b$ASc:J5*@]T@qTkG5*@^b5^eep052PCL^9.EOu%NLAM7P;D]iP'ARfLsF_r72B6
+068@ru:F;Ia9SD]iP,GAi9?FE2M8+D58-;H$M<Bk2=!F-8=4@s;K,@q]F`CNFW8+Cf&*P,Vr5A
+Wge<ASbp#@r6F$L]h<uCia/1B4Z0_;c@mSA9;L+Ou"b$GDHNf$'I*#!/LZ3"+)\8P!5$b@s9&0
+L]W`U@s;i6Bp),PG[kq?BnuhRCkr+T!Fp=b+DI!3P'DD<8;J%E$'I923/@QEGER3,!G$G!P'Mi
+`A79RgCh7L?!KmJH9J9q$GEP.Q1G<9IFCAusDBNJ7GEQEu1G<ceGB4m;@<>poASrW3AS5jkDKK
+r_2NeW7/<U=&1G<WgD/sQ=F!,LAGB8pVOu%moL]MC9D/sQ=F,0j[WI$:=P!5$bD..I#+EM+,D.
+RU,F,0s^C5;kQD/tF6P%odRP!+s2H\_ZMP#R5<L]N;3L]MR.B5M3tFE<6=P,Wd]E,Tf\5&qceA
+S5jkDKKr_Cm"g^1N78R+Cno&@;KLmP%K&OG]t9LDf_(7H[V&KE,TfR!g7;S!0TKlApAMBE,TfR
+!g6HE97))M8UZb$I?IQXP":B0L]NYXOpR9ZEc6/CP!3oL5*C/RFa]EDAoD^,@<@M?AU&0&DId<
+hF*(i#CLq%>D0mpW@WNZ4Dg-8Y!0U!<30Ia,!KsF<!KoX09Th1bF(025>DN<9!/LYd@<>poAT!
+;)P,Wd]Bp(ZC1Lt`S+DI!3H[V&KBnuhRC5;kQ4aUdcG9CUU!g6HE97))M8UZb$I?I-W!Jgb^Ou
+#3_061WA0/%?WDJX$)ARTU4F(025F(02D@VBg*>9IurF-:!g!KmJ>!g6H.BOtmjBQSZcK3^->@
+WNYr+EM"5P%'4JOo^@?P#?X_!.C#_>q^,8F<GL@FD5Z2F!*Y1+CoD.FC]E#GEQnu061WACh[cu
+@<.N1I=!VgAT2]5DKTf:Dg-8c$'I*#!/LYnF_u/;GB8Q@P,Wd]EfrVL1G<ceG9CpEGB4mIP"Ur
+oD..I#L]E54Ec6/b@Yb&JWI$:4P!5$bEc6.EBp),9L]DjdK4uHKDg.@RL]N[<P%K&]Dg*=<L]N
+Y>P"U.X!I^,`I?IQXP":`TOpR9Z061uTP!5$bP'&F!AT/br+EDCEH\_]c5*DmnP"ArB1NR,HL]
+CY8!/LW2!/LV\P'M+[E$01>GEQEk"Ho`gL]E52L]E52?'9IdAnc-nATDa.F!+\C'8U+<Dg.@RL
+^fNHH[V&JLd[&.Ec6/b@YbJVWI'&V86qB7Anc-nATDa.F*j'0L^oRKL]NZ&HS9)r5*@^BDg*=<
+P"UT2P!+/4Dg*=<L]N[<P"UT3P!+/J!I]<9AT/c+L]N[<P"UT2P!+/J!I]<N!.C#1I?ITYH\_Z
+MP#ZR7E0<D!P!5%RI?I-LP"B_+B5M3tFE<6@P%odQP!*iA!g7;S!KoU/"FG0-GB4mIP"UsIEc6
+/CL]ET2P%'SkAnc-nATDa.F-:!g!g7;S!KoU/"FDeBDg*=.L]DI6GEN#jF^:.d06:]D+BsX%F(
+K<R!g7\3Ou%N5Ec6/b@Yb&JWJLS1!./a)GEP.Q97;soEc6/b$^,XRAT3fAL]N[<M#W82HZNb;P
+!5%%I?I-BAT3e?P')29<IL$0Ec6/C+EATFDg.@hF(K<3+EATGAT3fWI?I,SE+sQA+EDCEF,0gZ
+99NbI1Ktu@Bm=lLL]DjdK3aX"L]DI6GB4mEF_u/;GB8Q@P,XU;P'M(dGB8p2DKTf:Dg-8Y!KsF
+F5*C.p+E2%>G^G5HI?K4gOuS6tF(K<3+Du==Ec6/CL]N[<P"Us`F(K<3P!3c+D/sQ=F,0j[WKK
+H.GV=,LE$/@-E+sQAL]W`;L]NY>H\_ZX!I^,`?&/K"Bm=lc9Th2QAT3G*>DN98!/LW2!*tb5F(
+K;5E+sQAL]im?>DN98!/LW2!*tb505tWMF!+\C!/LYnF_u/;GB8Q@P,Wd]EfrVL1NJ9OP&5PeA
+T2]5Efs(Y!g7\SP#R5]HZF%KF!,Ld99K@>Fa]F*EZf7BD/sQ=F,0j[WKM+FF(K<3+EEW<Oogeh
+F(K<R!g7\SP#Qjm86qB74?P9;ASs.SEb0-*@<?O(GV=#MG]P!HBm=\PE+sQA+E2%>GV=#MG^1E
+NBm=]^@W6%+G`krXBOtmjBQPA9Bm=]^@W6%+G`ks\8<PkaGA1T0BHV8.G^,$8Ou=t3E-*4@E-,
+f4DK?pa4s4BSDKKE0@<[lR0/%?WDJ`g(EbTc]<.0p0Ou[rR%[&V$A79Rg@UX:gG]7)/A7];730
+If*F_`U>D_?-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP
+'(hWFDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/databarexpanded 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databarexpanded--
% --BEGIN ENCODER databarexpandedstacked--
-% --REQUIRES databarexpanded--
+% --REQUIRES preamble raiseerror renlinear renmatrix databarexpanded--
% --DESC: GS1 DataBar Expanded Stacked
% --EXAM: (01)95012345678903(3103)000123
% --EXOP: segments=4
-% --RNDR: renmatrix renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-dup /databarexpanded dup /uk.co.terryburton.bwipp findresource put
-begin
-/databarexpandedstacked {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Get the result of encoding with databarexpanded with format=expandedstacked
- options (dontdraw) true put
- options (format) (expandedstacked) put
-
- /args barcode options //databarexpanded exec def
-
- args (opt) options put
- args
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/databarexpandedstacked dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+% --RNDR: renlinear renmatrix
+%%BeginResource: uk.co.terryburton.bwipp databarexpandedstacked 0.0 0 0 0
+%%BeginData: 18 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04\L5@ :E YcAU&0 &DI
+d<hOuP+;CG'+8/p (ZFEd ;,: Ecc 5 ;/n 0$= E,^ uoP'E- !0 4\L5@: EYc
+AU&0&DId<hF*(i# CLq%' L_Q "0O ps '_ E-, f4D KCt)Ou "b #@<,jr A7^
+ofOu"b%Df0Z-Eaa /7Am oLs AW ei fE- ,f4 DKC uE06
+;5UBl7R*H#R>X4a VtcO u 8C 3D fBf 4Df 0WCP ,i2'C
+ia0N4aW>WI?IQm3 0Ia6V3 3Qn ! BlU *F E2M8 P!+ /T/Wr;\Fcn qO1OXV5/Tc#
+UAWeitP#ZpnAWe* t3A5;i FD5 Z 2F-8 _M1O YEc DfBf4Df0WC Ou%NL8T/QiB
+l@m1NX006DKKE0@ <Zg6F_ -_\ DfBf 4Df0 WV# %hdoD..OH% qU!)@;]UeA9
+2j$@r#XdP'AWgEb BG9@U X:eD e*E%D fBf4 Df0 VL04\L5@:E YcAU&0&DId<
+hP!>*c@<-"%NWX3 =FDl, ?Bl@m 1P'CD UB6 ,2+Df0Z-Ea a0TE%`kbASu
+?nFE2)?P#RT)I?G )'1G<9I FCAWeE b0K7@ ;]U eA92j$@r#X dOuSV806M%_
+@rEuAATDg:@Wc^5Df.1:GA2#8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,-DH]iMmATVm
+"@r#drB75qB~>
+% uk.co.terryburton.bwipp/databarexpandedstacked 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databarexpandedstacked--
% --BEGIN ENCODER pharmacode--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Pharmaceutical Binary Code
% --EXAM: 117480
% --EXOP: showborder
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/pharmacode {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /height 8 2.835 mul 72 div def
- /nwidth 0.5 2.835 mul def
- /wwidth 1.5 2.835 mul def
- /swidth 1.0 2.835 mul def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /height height cvr def
- /nwidth nwidth cvr def
- /wwidth wwidth cvr def
- /swidth swidth cvr def
-
- % Create the human readable text
- /txt barcode length array def
- 0 1 barcode length 1 sub {
- /i exch def
- txt i [barcode i 1 getinterval 0 0 () 0] put
- } for
-
- % Convert the integer into the paramacode string
- /barcode barcode cvi 1 add 2 17 string cvrs def
- /barcode barcode 1 barcode length 1 sub getinterval def
-
- /barlen barcode length def % Length of the code
- /sbs barlen 2 mul array def
-
- 0 1 barlen 1 sub {
- /i exch def
- /enc barcode i 1 getinterval def
- enc (0) eq {
- sbs i 2 mul nwidth put
- } {
- sbs i 2 mul wwidth put
- } ifelse
- sbs i 2 mul 1 add swidth put
- } for
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs sbs
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- /txt txt
- /textxalign (center)
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/pharmacode dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp pharmacode 0.0 0 0 0
+%%BeginData: 30 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 05tT5E c# 5pDe*F +L_
+Q"0Ops'_E-,f4DK Ct)Ou "b# @<, j rA7 ^of Ou" b%Df0Z -E aa/7Am oLs
+AWei&BOtmjBQT%9 MEj%< Ulo PM8 <P lo 1G< WiB k2=!ME _( @!/a$! E28
+Y5Ou"b8GA1T0BSo $i!! %mA 2/ o@ SCm $S- F*D >/FD
+-OrJ,fS,5W*MVP& -:;D f Bf 4D f0W ZY: js=E bTE(F
+Eqh:P!+/J!Ko='% <$3-Bl @m1 H ]kF A@ ;L!r P!+ /T5^eepOuS V6P,4<rNWD;
++NHB2`AWf3'OtDh \P')pO Ou% N 5OtC crF_ -^l I?ITYP%Bdt OuY16E-,f4D
+KCt)Ou%NL<,Z_tB l@m1H] g15 P"@< ?ASG djF <G7.BkM+$O tVtS05buJA9
+;K-DKff*FD-gjOu "b8GA 1T0B HVMCB k2=! OtV tS06;>OA9; K-F*D>/FD-g
+jOu$QUEas#uAWgM Y!Kq& (@<,j rA7^p 5L^ '#=P&bn&@W uO*E%Z*C@<-
+3n@rGmh6=FCuASu .&BT=33 BOPpu@ :O4dA KYi 4F*&O6AKW] MFDi9[+Co2!
+BlnDL061K8F(Jp'Ec5u]5CJ\o@UX:eDe*F+OuS7OP%Kk@LcLVpP&bn&@WuO*E%Z*C@<-3n@rGm
+h6=FClBOPpi@ru:&N[%A6@<-3n@rGmh+Dl7BF<G(3DKK<$DBNk8Cj@.6BkM.%F"]1e@;0doATD
+g0EfrY8P#Qjm8Rc+K@rGmhOt;bUL]`fPP!4O!!WW.^:m,jG04K->E,[FKBOPpu@:O4dAO9g9<a
+ffeAWA?=BOPpu@:O4dAKZ/)Cis;3D09oA+C\n)@V'Y*AS#a%1E^+DA0<T_0ebO?0/%?SBldisE
+cQ)=P!=AX<%i?<F<G%$Eas#uAWgMc$'I*#!/LYb@<,jrA7^p5L]N[<HS9)r5*@^DG]Y'B+Bost
+@<,jrA7ZltL]NZ4L]E52NW=k8?'9G\P"768@<,jrA7Zlm@<,jrA7^oTL]NY>L]WAEP,4<qOu"b
+#@<,jrA7Zlm@<,jrA7^Pt@UX:eDe*FB@Yb&JWKKr<1G<3GEbo<)+C\c"@rGmhP%'S106:TD+C\
+c"Ch7L?!g7A_$'I*#!/LYb@<-0qDMS=VWI$:4P!5$b04f$2+C\c"@rGmh+DHW4P"_#pASu"<!A
+K["HZNY;+DHW5P&,#[Bk2=!P'DD%F(025BnuhRCj1);A9;LJG^Y`TF(025BnuhRCkr+T!HWI!A
+9;LJG^Y`G4?P9;ASs.SEb0-)Bl7KjE\DKCF!,O5F"_!9F!+[0F(03R@Yb&J!Jgf?;L<(gBkM+$
+I?K4g04JC3+Bot0@WR]AL]NY>L]W`;H\_ZMP(R$nFEhmMFEhm\FCf]=G[YE&B5W_6@qBP"ATBG
+BE-*4@E-,f4DK?pa4s4BSDKKE0@<[lR0/%?WDJX$)ARTVB<0B7iOq*X205tT5Ec#5pDe*FB30I
+f*F_`U>D_?-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP'
+(hWFDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/pharmacode 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER pharmacode--
% --BEGIN ENCODER pharmacode2--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Two-track Pharmacode
% --EXAM: 117480
% --EXOP: includetext showborder
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/pharmacode2 {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /height 4 def % Height of short bars in millimetres
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /height height cvr def
-
- % Create the human readable text
- /txt barcode length array def
- 0 1 barcode length 1 sub {
- /i exch def
- txt i [barcode i 1 getinterval 0 0 () 0] put
- } for
-
- /encstr 16 string def
- /bhs 16 array def
- /bbs 16 array def
- /sbs 32 array def
- /bar 1 25.4 div height mul def % bar height (mm)
- /spc 1 25.4 div 72 mul def % bar width & spacing (1mm)
-
- % Convert number into a base3 representation
- /i 15 def
- /val barcode cvi def
- { % loop
- val 0 eq {exit} if
- val 3 mod dup
- [3 1 2] exch get val exch sub 3 idiv /val exch def
- encstr i [2 0 1] 4 -1 roll get put
- /i i 1 sub def
- } loop
- /encstr encstr i 1 add 15 i sub getinterval def
-
- % Generate the bar pattern
- 0 1 encstr length 1 sub {
- /i exch def
- encstr i get dup
- bhs i bar [1 1 2] 5 -1 roll get mul put
- bbs i [0 bar 0] 4 -1 roll get put
- } for
-
- % Return the arguments
- <<
- /ren //renlinear
- /bhs bhs
- /bbs bbs
- /sbs [encstr length 2 mul {spc} repeat]
- /txt txt
- /textxalign (center)
- /textyoffset 4
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/pharmacode2 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp pharmacode2 0.0 0 0 0
+%%BeginData: 30 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 05tT5E c# 5pDe*E 7H\
+`B!23JD%DfBf4Df 0WZ5* @]T @UX : eDe *FB 5*@ ]TA8c@ -A 9)+&+D ,%u
+F(LLj055<6Cis9" FCf]= +D, %uF (L Lj 05+ p2B 4uCC"H kQ ZE-,f4 DKC
+uE06;5UBl7R*H#R >X4a Vtc Ou 8C 3Df Bf4 Df0 WCP,
+i2'Cia0N4aW>WI? IQm3 0 Ia 6V 33Q n!B lU*F E2M8P
+!+/T/Wr;\FcnqO1 OXV5/T c#U A Wei tP #Zpn AWe *t3A5;iFD5 Z2F-8_M1OYE
+cDfBf4Df0WCOu%N L8M=ag BkM + $+D> >#B4 uCM 09S,#@<,jr A7^p5L]NZN@
+UX:eDe*FB@Yb;Q: m,jG04 K-> E,[F KBOP pu@ :O4dAMQS\A 5$QPB67gI.T
+CV1/Tc#A@r!2`BO Ppu@: O4dA KYi4F *&O6 AKW ]MFDi9[+Co 2!BlnDL061K
+8F(Jp'Ec5u]5CJ\ o@UX: eDe*F +OuS7 OP% Kk@LcLVpP& bn&@WuO*E%Z
+*C@<-3n@rGmh11F [&6YKnK @:OCjE fM_NG Af' TEa`Hn+Ac` [Ec#5pDe*E%
+D09oA+Cf>-FCAm$+E).6Gp$X3B5)I/0/%?SBldisEcQ)=P!=AX<.0p$@UX:eDe*FB/<VuK"HmA
+[5(j$k6K"#'P&bn&@WuO*E%Z*C@<-3n@rGmh11F[&<affeAWAcMGAf'TEa`Hn+Ac`[Ec#5pDe*
+E%G%#30AKYi4F*&O6AKYGnFE_;-DBLbY@;]Tu2Dd9M0JGI?0/%?SBldisEcQ)=P!=AX<%i?<F<
+G%$Eas#uAWgMc$'I*#!/LYb@<,jrA7^p5L]N[<HS9)r5*@^DG]Y'B+Bost@<,jrA7ZltL]NZ4L
+]E52NW=k8?'9G\P"76;DI[a0Eek9iV33Vf@VBh=&<[?_1G<3HF,1Bj$'I(tF(03H+Hd%o1G<3G
+EejaR6-D&?Ou?ubBkM+$P&-:;06;)BL]NB!b;1r;2ManeCm$S-Bo!:_1G<o[C`m1qEas#uAWeU
+-1OF:RCkr(S4aW>WI?IQQ@;L`%P%p.>>DNB;!Jge_P!5%%G%#3M5*Dn$"-QP8G%#3M5*@^5DI[
+a0EZf'=>DN?:!/LY]L]iP6P)#2nP'AWo+DHW4P,XU#I?J.pASu"!FE/L8DI[a0EZf(P!KmJ>%r
+ %3+P"_#pL]E53ASu"!FE3ORL]N[<HS9)r5*@^5DI[a0EZf(Z99M8DBQG;1+C\c"+BsX&L]N;5
+?&/Z?s,r/#99O+SG[b-'+DDs&L]CmmEej^$L]iP6P)#2nP'DD<83B!fEb0,A061WACh[cu@<+#
+1BQG;*BQGh9@WNZ$@WO2D@WNYr+D#G#F*)Gc@Yb)KCjU5B@ssMm>q^;EF<G[MF>%`IG]\1=Ch[
+O"NWs!)DKKH106CcMFEqe:AohO*L]fALE-*4@E-,f4DK?pa4s4BSDKKE0@<[lR0/%?WDJX$)AR
+TVB<0B7iOq*X205tT5Ec#5pDe*E7OuSV806M%_@rEuAATDg:@Wc^5Df.1:GA2#8+Co%qBl7L&A
+TMd4Ear[DFcna<F(KH4@:O(eDJ,-DH]iMmATVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/pharmacode2 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER pharmacode2--
% --BEGIN ENCODER code2of5--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Code 25
% --EXAM: 01234567
% --EXOP: version=iata includetext includecheck includecheckintext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/code2of5 {
-
- 20 dict begin % Confine variable to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includecheck false def
- /includetext false def % Enable/disable text
- /includecheckintext false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 1 def
- /version (industrial) def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Create an array containing the character mappings
- <<
- /industrial
- [ (1111313111) (3111111131) (1131111131) (3131111111)
- (1111311131) (3111311111) (1131311111) (1111113131)
- (3111113111) (1131113111) (313111) (31113)
- ]
- /iata
- [ (1111313111) (3111111131) (1131111131) (3131111111)
- (1111311131) (3111311111) (1131311111) (1111113131)
- (3111113111) (1131113111) (1111) (311)
- ]
- /matrix
- [ (113311) (311131) (131131) (331111) (113131) (313111)
- (133111) (111331) (311311) (131311) (311111) (31111)
- ]
- /coop
- [ (331111) (111331) (113131) (113311) (131131) (131311)
- (133111) (311131) (311311) (313111) (3131) (133)
- ]
- /datalogic
- [ (113311) (311131) (131131) (331111) (113131) (313111)
- (133111) (111331) (311311) (131311) (1111) (311)
- ]
- >>
- version get /encs exch def
- /cs encs 0 get length def
- /cw 0 encs 0 get {48 sub add} forall def
- /ss encs dup length 2 sub get length def
- /sw 0 encs dup length 2 sub get {48 sub add} forall def
-
- % Create a string of the available characters
- /barchars (0123456789) def
-
- /barlen barcode length def % Length of the code
-
- includecheck {
- /sbs barlen 1 add cs mul ss add ss add string def
- /txt barlen 1 add array def
- } {
- /sbs barlen cs mul ss add ss add string def
- /txt barlen array def
- } ifelse
-
- % Put the start character
- sbs 0 encs 10 get putinterval
-
- /checksum 0 def
-
- 0 1 barlen 1 sub {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- sbs i cs mul ss add enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i cw mul sw add textyoffset textfont textsize] put
- barlen i sub 2 mod 0 eq {
- /checksum checksum indx add def
- } {
- /checksum checksum indx 3 mul add def
- } ifelse
- } for
-
- % Put the checksum and end characters
- includecheck {
- /checksum 10 checksum 10 mod sub 10 mod def
- sbs barlen cs mul ss add encs checksum get putinterval
- sbs barlen cs mul cs add ss add encs 11 get putinterval
- includecheckintext {
- txt barlen [barchars checksum 1 getinterval barlen cw mul sw add textyoffset textfont textsize] put
- } {
- txt barlen [( ) barlen cw mul sw add textyoffset textfont textsize] put
- } ifelse
- } {
- sbs barlen cs mul ss add encs 11 get putinterval
- } ifelse
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/code2of5 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp code2of5 0.0 0 0 0
+%%BeginData: 52 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04Sp2A MS 1921(, nOu
+8C305kfOBl@m1P! 5$b04 J@1 @rG m hP! 5$b 04] !=FC]E #G 9CL+Ci a0N
+1G<H[@r-9uARfCb @r!3! @;L !rO u" b7 @;K Xg@ <?'jBO t[ h+D,%u F(L
+Lj055<6Cis9"FCf ]=+D ,%u F( LL j05 5<6 Cis 9"@q
+]F`CM@[.AU&;>Am oLsA W ei &F Cf] =Ao DR/O iNV@0
+6CcMFE;/BAV^\V1 G<i]G] \4L A nH* qF GTaU 1G< EQBkM+$L]N Yp06UoIF(oQ
+1NXBK<A9Ds8EbSr uOu%#q FD5 Z 2F-< ^[F* )G: DJ+':E+P1q H\_]c23JDeE
+-,f4DKC/fX(GdVF (LLtH] gXB P#RT (P%' TNO thst4d(eHE ckrV4aW>DP!
+5%OP!5$bI=%,/FE 2M8Ou %NL< IL$AO rfcH 05k fOBl@m1P!5 $bI?IQJE-,f
+4DKC/f1OYEX06Cc MFCoH /F<G[ :G][P 9DK M$nOu"b5AU &<<BmO>5FCf
+]=F(or3OtVtS06C cMFEqe: AohO*+ EV1>F Eqe :AohO*OtVt S05+p2B4uB0
+BOtmjBQTCjOu$QUEas#uAUBS"LbP!(P!4[^P#.<^HS8iPBlJ#D@rGmh12gb^@UWe7BOPpi@ru:
+&NZ^]-A7Zl=2'?aYF*&O7Df0Z*Bl5&3DJXS@A8,[jFE9)gEa`['AS#n&DfV"*I?IQXP"@<9@<-
+0qDBNCsEas#uAWgMG@;KXg@<?'jBOt[hH\_]cWI9q/Ou"b$BOt[hF*2>U!0T-o!/LYb@<-0qDM
+S=VWI$:4P!5$b04S[,@r$..D'3>%ARfLsF_r71@<,jrA7ZltP"UTbP,Vo!Ebo<)+DI"<L]W`SL
+]ETTH\_ceCjhIGOo^_%I?I,S@q]F`CNFW8L^IX*ARfLsF_upAP%p/ZL^K;[Ou%8iCh[EgFCerq
+ARfM&+C\c"@rGmh+C\c"Ch7LI94MXH@r$..D29m/!Kq;H04K->E,[F>De*E7De:k9@:V`=ARfL
+DBkM.%N[@>8@rHC.ARfg)6Z6LH+>Pes@q]F`CER/%B5)H1E,ol?Bk1dc0/%?SBldisEcQ)=P!=
+AX<%h]hEas#uAKYGjEas#uAV^=q@<-0qDN[\V1G<H[@r-9uARfCb@r!3/EckrV1OYEc06UoIF(
+oQ1F!*S-055<7F`VYFBjkg#>E0%F0ekC=0f(O=0ocSs0ekC;0ekC=0ocSq0f(O=0ekC=0ocSs0
+f(O=0ekC;0ocSq0ekC=0ekC=0ocSs0ekC=0ekC;0ocSq0f(O?0ekC;0ocSq0ekC;0f(O?0ocSs
+0ekC;0f(O=0ocSq0f(O=0f(O=0ocGo0f(O=0ocDn0ekC=>q]o#FC?:rNX@Kq0ekI=1GLU=NX@Q
+s0ekC;0ekI=NX@Kq1GLU=0ekI=NX@Qs1GLU=0ekC;NX@Kq0ekI=0ekI=NX@Qs0ekI=0ekC;NX@
+Kq1GL[?0ekC;NX@Kq0ekC;1GL[?NX@Qs0ekC;1GLU=NX@Kq1GLU=1GLU=NW_'k0en[j1GLUiO_
+@sZ"u.hg1GLVE"u@tg0f(PE"u.ng0f(PE"uA%i0ekDC"u.hg0f(PE"u@ti0ekDC"u.ni0ekDC"
+u.he1G^bG"u@tg1GLVE"u.ng1GLVE"u@tg0ekDC"Z%kf0elre@rH:)+Bsj11G^a?0en[m0ekC=
+1GOmo0ekI=1GOmo0ekI?0en[m0f(O=1GOmo0f(O?0en[m0f(U?0en[m1GLU=1GOmo1GLU?0en[
+m1GL[?0en[k1GL[?NWV!l1L2YE@<>poDeEco+Bsj10ekI?0en[m1GLU=1GOmo0f(O=1GOmo1G^
+a?0en[m0ekI=1GOmo1GL[?0en[m0f(U?0en[m0ekC=1GOmo1GLU?0en[m0f(O?0en[k0ekC;NW
+V'l0jPnc5*@^FATDj+Df0V=G%G]8Bl@mP@$5JU04K->E,[F>De*E7De:k9@:WDMEcYr5DN5]:D
+K9;uDeEs%F(Jl)6Z6LH+>PesG%G]8Bl@lB061K8F(Jp'Ec5u]5CJ\o04f$2F!,X;EcYr5DK?qD
+ATDj+Df1_2Ou"b$F!,%3@rmG+P"UsIOu"b$GDH61DI[aD!0U!%LbP!kOo]uo8Wkk_F)rI8DI[a
+N30Ia,!g9OG99NbI1G<fnL]D"(@rmemP%'4KP,XU;H\aA=WKI:1P"Cfm04J@1@q]:kF,gS]0et
+OA2)[BQ3Kc0OF(025@UX:nASrW)DI[L*A7]7aARfM&L]NY>I?IQ>F-:?\F-6QFF-6QeV33VfFE
+hmM@UX:nASrW)DI[L*A7]7aARfM&L]NY>I?IQm$'I)c@WR>*ASu"!L^K;<P'Mi`L]LsnEbo<)L
+]N[<HS9)r5*@^2@<,jrA7ZltL]NZ4@UX:eBOPq&P!5%gP')ps055<7G`k7R1QlmDFY@<D@j#?#
+@ric,DIe!T99M)P@WNZ++CfJUCiaZ\!G-.YP'M.oF<G9?>9IB`Eas#uAKY]C!Kp,j+CfVYCiaf
+`!H_mtFEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'DD<882sOCis9"@q]F`CO71F@WNZ$@<-
+0qDBNG1P&,2\Oo]-3@ric&BOt[hF*2>_99ORA@WNZ$@<-0qDBNG1P&+WLOo]WFOo]-3@rmG6P"
+Us`Bl7EsF_#&nBOt[hBl8$(G]\9TFEhmM@UX:nASrVp+C\c"@q]:kF!+t+ARfLsF_up8P"]=nE
+bo<)+CfVYCiaf`!H_mtFEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'DD%FEhmM@UX:nASrVp
+NWC83@<-0qDBNG5P&,2`Oo]Z9G]\4LAnH*qF<G[:G][P9DKI"CAU&<<BmO>5?'9G\P#ZpWF(02
+5@UX:nASrW#F-:?\F-6Q8DI[aD$^+/GH$tiU4?P9;ASs.SEb0-)Bl7KjE\DKCF!+[0F(03;LbP
+!kI?I0-04JU9+Bot0@WR]AL]NY>L]W`;HY?u)B4uC8P(R$n@UaC$>9IurF-:!g!KmJ>!g6H.L]
+DjdK3]U6DI[L*A7]joG]\9cFEhmMFEhnUP#O)QE-*4@E-,f4DK?pa4s4BSDKKE0@<[lR0/%?WD
+JX$)ARTVB<0B7iOq*X204Sp2AMS1923Kq^A1r(@/n8fPFCfK5H"(o:FDl%L@WuO*E$/\&Anc-o
+Eb0<1F`Lu'P')pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/code2of5 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER code2of5--
% --BEGIN ENCODER code11--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Code 11
% --EXAM: 0123456789
% --EXOP: includetext includecheck includecheckintext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/code11 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includecheck false def
- /includetext false def
- /includecheckintext false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Create an array containing the character mappings
- /encs
- [ (111131) (311131) (131131) (331111) (113131)
- (313111) (133111) (111331) (311311) (311111)
- (113111) (113311)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789-) def
-
- /barlen barcode length def % Length of the code
-
- includecheck {
- barlen 10 ge {
- /sbs barlen 6 mul 24 add string def
- /txt barlen 2 add array def
- } {
- /sbs barlen 6 mul 18 add string def
- /txt barlen 1 add array def
- } ifelse
- } {
- /sbs barlen 6 mul 12 add string def
- /txt barlen array def
- } ifelse
-
- % Put the start character
- sbs 0 encs 11 get putinterval
-
- /checksum1 0 def /checksum2 0 def
-
- /xpos 8 def
- 0 1 barlen 1 sub {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- sbs i 6 mul 6 add enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval xpos textyoffset textfont textsize] put
- 0 1 5 { % xpos+=width of the character
- /xpos exch enc exch get 48 sub xpos add def
- } for
- /checksum1 checksum1 barlen i sub 1 sub 10 mod 1 add indx mul add def
- /checksum2 checksum2 barlen i sub 9 mod 1 add indx mul add def
- } for
-
- % Put the checksum and end characters
- includecheck {
- /checksum1 checksum1 11 mod def
- barlen 10 ge {
- /checksum2 checksum2 checksum1 add 11 mod def
- sbs barlen 6 mul 6 add encs checksum1 get putinterval
- sbs barlen 6 mul 12 add encs checksum2 get putinterval
- includecheckintext {
- txt barlen [barchars checksum1 1 getinterval xpos textyoffset textfont textsize] put
- /enc encs checksum1 get def
- 0 1 5 { % xpos+=width of the character
- /xpos exch enc exch get 48 sub xpos add def
- } for
- txt barlen 1 add [barchars checksum2 1 getinterval xpos textyoffset textfont textsize] put
- } {
- txt barlen [() xpos textyoffset textfont textsize] put
- txt barlen 1 add [() xpos textyoffset textfont textsize] put
- } ifelse
- sbs barlen 6 mul 18 add encs 11 get putinterval
- } {
- sbs barlen 6 mul 6 add encs checksum1 get putinterval
- includecheckintext {
- txt barlen [barchars checksum1 1 getinterval xpos textyoffset textfont textsize] put
- } {
- txt barlen [() xpos textyoffset textfont textsize] put
- } ifelse
- sbs barlen 6 mul 12 add encs 11 get putinterval
- } ifelse
- } {
- sbs barlen 6 mul 6 add encs 11 get putinterval
- } ifelse
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/code11 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp code11 0.0 0 0 0
+%%BeginData: 57 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04Sp2A MG odL_Q" 0Op
+s'_E-,f4DKCt)Ou "b#@< ,jr A7^ o fOu "b% Df0 Z-Eaa/ 7A moLsAW ei&
+Bl7EsF_#&nBOt[h +D,%u F(L Lj0 6U c? Bk1 XoA RfCb@r !3 !@;L!r Ou"
+b*DI[L*A7]joG]Y '?@; L!r Ou "b *DI [L* A7] 7aAR
+fLiDKKH7F<G1(Ci a0N1 G <i ]G ][P 9DK M#]O u"b5A
+U&<<BmO?H$Bd1uF Cf]=H# I;, F (KH Lq 3!Ne BOt mjBQT%2Ou% #qFD5Z2F-<^
+[F*)G:DJ+':E+P1 qH\_]c 23J D eE-, f4DK C/f X(GdVF(LLt H]gXBP#RT(P
+ %'TNOthst4d(eH EckrV4 aW> DP!5 %OP! 5$b I=%,/FE2M8 Ou%NL<IL$AO
+rfcH05kfOBl@m1P !5$bI ?IQJ E-,f4 DKC/ f1O YEX06CcMFC oH/F<G[:G][
+P9DKM$nOu"b5AU& <<BmO >5FCf ]=F(o r3O tVtS06CcMF Eqe:AohO*+E
+V1>FEqe:AohO*Ot VtS05+p 2B4uB0 BOtmj BQT CjOu"b&DI[ `1>E/nB0ekC
+=0ocGo0ekC=0ocGm1GLU?0ocGo1GLU=0ocGm0f(O?0ocGo0f(O=0ocGm1G^a?0ocGm0ekI?0oc
+Go0ekI=0ocGo0ekC;0ocGm0f(O=0ocGm0f(U?0jTqu04J@1@q]:kF,gV^0etOA2)[BQ3A$CM04
+S[(Ectl-F,13e23KbO!/LZ3$@?8r@<-O"Cibb'OuQoZEarckEc[C-L]NZ4P!5%RI?I-W!/LYb@
+<,jrA7^p5L]N[<HX^E(@rGmhP!4[&P"]A!@<-O"Cibb'P$jGlHS8iPBlJ#D@rGmh0em-GA4($=
+Ea`I"ATEe]6Z6LH+>GSnD09oA+Cf>-FCAm$+E).6Gp$X3B5)I/+CT.u+Cno%BOu6<061K8F(Jp
+'Ec5u]5CJ\oI?I,S@UX:nASrW"@<,jrA7^p5Ou%8iCh[EgFCerqARfM&+C\c"Ch7L?$^*Z"04K
+->E,[F>De*E60k+R%9P&*SFD-[i6Z6LH+>GSn@ps7mDfd+2AKW]^+Cf(nEa`I"ATDi7F`V87B-
+:\tARfKuA8,[jFE9)gEa`['AS#n&DfV"*I?IP_@UX:nASrW"@<-0qDBNCsEbo<)L^K;RH\_]NH
+\_`OP#[[EOu%NL<%i-3D.@6j@r$-.Bl7EsF_#&nBOt[h+Eh10Bk1XoARfCb@r%6JHX^E(Ch7L?
+$Be#.L]W!OL]Mpe<IK4M!.C#1Ou"b$BOt[hF*2=SL]ESo04S[,@r$..D)-nIOu%moL]LsnEbo<
+)L]N[<HS9)r5*@]TBl7I++Cf(nEctl-F!+q#Eas#uAKY]C!Kp->99M(a@q]F`CNFW80d't>ARf
+LsF_riU@UX:nASrW)P,X6<P,X6EP%odROo]97A9a8ROo^_%04S[,@r$..D)*5DBOt[hF*2=T+C
+\c"Ch7K,Bp,HO$'K%Z!KmItDIe!TCm"g^1OYEW04S[,@r$..D)!/CBOt[hF*2=SL^TA\Ou"b$B
+Ot[hF*2=T+Cf(r@r$..D)*5DBOt[hF*2=SOo^@HP%p.9G%#3$A79Rk@q]F`CO71AF_tW%ARfLs
+L]NZ%HX^E(@rGmh+C\c"Ch7LI94D=M@q]:kF!+t+ARfLsF_rjr99O.=04K->E,[F>De*E60k+R
+ %6YL%@CIDlLBlo@^8T&$VEcP`$F<EqhA7Zl<0d't>ARfKuA8,[jF<GOCDg#i*ARmGIEa`['AS
+#n&DfV"*I?IQXHX^E(@rGmh+C\c"Ch7LI94D=M@q]:kF!+t+ARfLsF_rjr99O.$@<,jrA7Zlm@
+<-0qDMS=V!Kp)b@<,jk@<-E3@q]F`CNFW816P:nD3Apd04K->E,[F>De*E60k+R%6YL%@CIDlL
+BlnEV-V82cDfTl0@rrh\De*E%0eje\BOt[h+Co2!BlnD=E,ol?Bk1dc0/%?SBldisEcQ)=P!=A
+X<.0p004J@1@rGmh+C\c"@rGmhL]CmmEbo<)P"_#p055<6Cis9"@q]F`CER_>F_-^lI?IP_F(0
+25@UX:nASrW.F_tW%ARfLsOo^@CP&,p_Oo^`BOu"b5G]Y';@<-0qDBNh>D.@6j@r$.K!KmbP1N
+R#HL]D"(@rmG6P"Us`06hGSF,1*b1Pc$e!FfJXCh7L?!KsF/056S5Ou"b*DIdu7@q]:kG%#3.+
+C\c"@rGmh+DHW4P"_$3Ou"b&DIXf#DI[`1Bl7I+P"UroF(025BnutVCkr:Y!G-.YP'M.oF<G9?
+>9IB`Eas#uAKY]C!Kp-$E,Te?FCf]=H#I;,F(KG9FCf]=AoDR/+EV1>FE;/BAKY9AG_c?U!Jgo
++06hGSF-8^uDI\hnP"UTbP,W\FDf_'BOu%NL8:?XlBl7EsF_#&nBOt[hHQZd+Ebo<)L^K;;HZN
+Y;+C\c"Ch7L?#*NeY#*K!uDI[`1@q]F`CNFW80p51mH#mG9+C\c"Ch7L?#*NeY%$CX&DI[`1@q
+]F`CNFW816P:nH"h/+Cis9"@q]F`CM@[.AU&<D+EVjM+C\c"Ch7K,>9IB`EarckEcW@5BOt[hF
+*2=SL]NZ4G]7SB+EV1>FEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'AWkDIXf#DI[`1@q]F`
+CNFW80p51m1Pc$e!Jgo+06hGSF-8^uDI\hnP"UTbP,W\FDf_'BOu%NL89B)u+C\c"Ch7L?!KmI
+f+C\c"@q]:kF!+t+ARfLsF_rmi!Kp-$E,Te?FCf]=H#I;,F(KG9FCf]=AoDR/+EV1>FE;/BAKY
+9AG^Xp\G]Y';@<-0qDBN/D!-iI$F!,R9G]\4LAnH*qF<G[:G][P9DKI"CAU&<<BmO>5?'9GSG]
+Y';@<-0qDMS=V!F(QaG]7SB+EV1>FEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'DD<<HDVj+
+C\c"Ch7L?#*NeY&s<9,DI[aD$^+/GH$t$\@WNZ$@<-0qDMSL[Ckr:Y!G-.YF!+t+ARfLsF_rjr
+99OR7DI[L*A7]7aARfLiDKKH7FF,-PG]Y';@<-0qDBN.+@UX:eBOPq&+Cf(r@r$..D)$hIP"^+
+>Df[%CAU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C1.TI=$'\F<G%$Ebo<)+Bsj+G]7SB+EV
+1>FEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'DD<<HDVj+C\c"Ch7L?#*NeY%$CX&DI[aD$^
++/GH$tiUI=$$EF!+q#Ebo<)L^'#YL^'"CASu"!L^TA=P'MJ=<BNAsEb0,A061WACh[cu@<+#B@
+WNYr+EM"5H\aA=WI9q$>q]Z#F!+[0F(03R@Yb&J!Jgf?;L<(gBkM+$I?K4g04JC3+Bot0@WR]A
+L]NY>L]W`;H\_ZMP(R$_Bl7EsF_#'*AU&<D06DG\+EVjMI?IP_DfBe@DfBf4Df0V=5!C*"Df0Z
+-Eaa0TE%`kbASu<uDIm6sP#RT)I?G)'1G<6VA7[JMOuSV806M%_@rEuAATDg:@Wc^5Df.1:GA2
+#8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,-DH]iMmATVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/code11 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER code11--
% --BEGIN ENCODER bc412--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: BC412
% --EXAM: BC412
% --EXOP: semi includetext includecheckintext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/bc412 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includecheck false def % Enable/disable checkdigit
- /includetext false def
- /includecheckintext false def
- /includestartstop false def
- /semi false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- semi {
- /includecheck true def
- /includestartstop true def
- } if
-
- % Create an array containing the character mappings
- /encs
- [ (11111115) (13111212) (11131113) (12111213) (12121311)
- (13131111) (12111312) (11131212) (11121411) (11151111)
- (15111111) (11111511) (12131211) (13121112) (13111212)
- (11111214) (12121113) (11111313) (13111113) (11121213)
- (11141112) (11121312) (11141211) (14121111) (12121212)
- (11131311) (13121211) (12111411) (14111211) (11111412)
- (12111114) (14111112) (12141111) (11121114) (12131112)
- (12) (111)
- ] def
-
- % Create a string of the available characters
- /barchars (0R9GLVHA8EZ4NTS1J2Q6C7DYKBUIX3FWP5M) def
-
- /barlen barcode length def % Length of the code
-
- /sbs barlen 1 add 8 mul 5 add string def
- includecheck {
- /txt barlen 1 add array def
- } {
- /txt barlen array def
- } ifelse
-
- % Put the start character
- includestartstop {
- sbs 0 encs 35 get putinterval
- /pos 2 def
- /txtpos 3 def
- } {
- /pos 0 def
- /txtpos 0 def
- } ifelse
-
- /checksum 0 def
- 0 1 barlen 1 sub {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- sbs pos enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 12 mul txtpos add textyoffset textfont textsize] put
- /checksum checksum indx add def
- /pos pos 8 add def
- } for
-
- % Put the checksum
- includecheck {
- /checksum checksum 35 mod def
- sbs pos encs checksum get putinterval
- includecheckintext {
- txt barlen [barchars checksum 1 getinterval barlen 12 mul txtpos add textyoffset textfont textsize] put
- } {
- txt barlen [() barlen 12 mul txtpos add textyoffset textfont textsize] put
- } ifelse
- /pos pos 8 add def
- } if
-
- % Put the stop character
- includestartstop {
- sbs pos encs 36 get putinterval
- /pos pos 2 add def
- } if
-
- % Return the arguments
- /sbs sbs 0 pos getinterval def
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/bc412 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp bc412 0.0 0 0 0
+%%BeginData: 48 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04JEJ0 f" *3'Tt> :%5
+2X=FD5Z2F-8_M1G <3GEa s#u AWf 6 ?1G <9W DKK E0@<Wi +@ ;L!rOu "b*
+DI[L*A7]7aARfKu AmoLs AWe i&G %# 3$ A79 Rk@ q]F`CE R4 tCia0N 1G<
+H[@r-9uATVL.F<G 1(Ci a0N 1G <H [@r -9u ARf Cb@r
+#drFCf]=+D,%uF( LLj0 5 5< 6C is9 "F* (i2F E;PBE
+$/b$Cia0N1G<f\D .t,)@; L!r O u"b 5A U&</ Df0 ZZa-&53FCf ]=F(or3L^K;
+$06CcMFEqe:AohO *M#!2i 05+ p 2B4u CC!K o6W E-,f4DKCuE 06;5UBl7R*H
+#R>X4aVtcOu8C3D fBf4Df 0WC P,i2 'Cia 0N4 aW>WI?IQm3 0Ia6V33Qn!B
+lU*FE2M8P!+/T/W r;\Fc nqO1 OXV5/ Tc#U AWe itP#ZpnAWe *t3A5;iFD5Z
+2F-8_M1OYEcDfBf 4Df0W COu%N L8M>0 sG] [P9DKI"CAU &</Df0Z[/Wq
+nCFCf]=F(or3+EV 1>FE;/B AWe^01 G<i]G ]\4 LAnH*qF<G[ :G]\4LAnH*q
+FHS;?1G<EQBkM+$+D>>#B4uCM09S,4ASl..055<6Cis9"@q]F`CER_>F_-^l055<6Cis9"F*(i
+2FE;PBE$07CF_-^lI?IP_@UX:eBOPq&N[$5U3CcbD83o4(=u8uR;_^m";)Ud#6s3/L<Cp:K7TW
+DD9p.:c@q]:kG%#3.La/'?Ou%moL]N;UHXg_tEctl-F-8_M3+?<:@q]:kF-8_C!Kp->5*C/=P"
+:B/L]LsnEas#uAWgMY!KsF/@UX:eDe*FB5)96&9OhaEEctl-F-8_M@$5JU04K->E,[F=@l,nq@
+UWe7BOPpi@ru:&N]TQp1bga.D09oA+Cf>-FCAm$+E).6Gp$X3B5)I/+CT.u+Cei!Blmd"+DbV2
+FCfK6+D#e-AT2`6:G4AA@;0doATDg0EfrY8P#Qjm82"F\Ebo<)+C\c"@rGmhP%&TCCh[EgFCer
+qARfM&L]N[<I?IQm1G<6OARfLsF_up7Ou%moL]LsnEbo<)L]N[<HX^E(@rGmhP!4[&P"]A!@<-
+O"Cibb'P"T:uARfLsF`!9B04S[,@r$..D3@)G1OYEW04S[,@r$..D'3>%ARfLsF_upZP%p.9G%
+#3$A79Rk@q]F`CO715@<,jrA7Zlm@<-0qDN[Y%@<,jk@<-E3@q]F`CNFW8P"UsTHS8iPBlJ#D@
+Uh5L11F[&6YL%@CIDlLBlo@\8T&$VEcP`$F<En;1bga.@q]F`CER/%B5)H1E,ol?Bk1dc0/%?S
+BldisEcQ)=P!=AX<%h]hEas#uAKYGjEas#uAV^=q@<-0qDN[\V1G<H[@r-9uARfCb@r!3/Eckr
+V1OYEc04f$2F!+\I#Ve%g0ekC;23%qs1GLU=1,1PE#Ve%g1GLU=1QD_q1,1L<1,1SF#Ve(h1,1
+R>0ocMo1GL[?0ekDC#Ve(h0ekI=16)Vp0ekI=1,1PE#Ve%g1,1U?0ocMo0ekO?0ekDC#Ve1k0e
+kC;0ocMo0ekC;2)-hG#Ve(h1GLX>0ocMo1GLX>0ekGD#Ve+i0ekF<16)Vp0ekC;1,1VG#Ve(h1
+,1L<1QD_q0ekC;1GL\G#Ve+i0ekC;1QD_q0ekF<1,1SF#Ve%g1bg^>16)Vp0ekF<1GLYF#Ve%g
+1bga?0ocMo1bga?0ekDC#Ve(h1,1O=16)Vp0ekI=1GLVE#Ve+i1,1O=0ocMo1,1L<1bg_F#Ve.
+j0ekF<0ocMo0ekC;1bgbG#Ve(h0ekC;1l_hr1bg^>0ekGD#Ve(h1bg^>0ocMo0ekF<0ekMF#Ve
+(h1GLU=16)Dj16)Gk0elss1G<fYF!+q#Ebo<)L]NY>L^9/[L]rqBP,4<tBl7EsF_#&nBOt[hHS
+9JcF<G%$Ebo<)L]NY>OpR:-I=!VhG]Y';@<-0qDNY<h1OYEdBl7EsF_#')FCB33F*)>>HQ[B=F
+,0g-DI[aD,Eb]_GqX,TF,0m\1G<ipFDu/>L]`erI=!VdDf^^7Ou"b5G][nCF,0gZ1OYEdL]E53
+@UX:nAT!;)P,Wd]Bp(ZC1G<H[A9]5,BOPq)@;L!-@UX:eDe*E%BnueQ9Ti&31NR#H+E27?+D#G
+#F!,17A9a81P'M.oF<G9?>9IB`Eas#uAKY]C!Kp,jL^]G_FEhnHDf_'BFCf]=H#I;,F(KG9FCf
+]=AoDR/+EV1>FE;/BAKY9AGV=#SF!,F?F,1*b!Ko6eP"9;)@r-9uARfCb@r$E6F(025E,Te?AS
+u"!+Cf(r@r$..D3@PTH"h/+Cis9"@q]F`CM@[.AU&<D+EVjM+C\c"Ch7K,>9IB`EarckEcW@5B
+Ot[hF*2>U!Kp,c@<-0qDMS^aCijoDE,Tf\!H_mtFEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)
+P'DD%FEhmM@UX:nASrVpNW<NsEbo<)L^]G_FEhnHDf_'BFCf]=H#I;,F(KG9FCf]=AoDR/+EV1
+>FE;/BAKY9AG^Y`T05tiN+E27?L^9.EOu%NL<,$5[Cis9"F*(i2FE;PBE-i^K@WNZ2Df[%4DI[
+aD,a(f`GqX,TF!,F?F,0m\!Ko6eP#O)U@WNZ5@WR>*E,Tf\9Th1o4>1_dDD*Y`ASu<uDIm6s06
+:TD+Bot0@WQmP0TrD`P"Aq4@VBg*>9IurF-:!g!KmJ>!g6H.BOtmjBQSZcK3^->@WNYr+EM"5P
+ %'4JOo^@?P#?X_!.C#_>p*j!@r-9uATVL.FF,Z_G]Y'MG]\@s<%i0/F<GL@FD5Z2F!*Y1+CoD
+.FC]E#GEQnu061WACh[cu@<.N1Ou[rR%[&V$@Uh5L16OV[A1r(@/n8fPFCfK5H"(o:FDl%L@Wu
+O*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/bc412 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER bc412--
% --BEGIN ENCODER rationalizedCodabar--
-% --DESC: Rationalized Codabar
+% --REQUIRES preamble raiseerror renlinear--
+% --DESC: Codabar
% --EXAM: A0123456789B
% --EXOP: includetext includecheck includecheckintext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/rationalizedCodabar {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includecheck false def % Enable/disable checkdigit
- /includetext false def % Enable/disable text
- /includecheckintext false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Create an array containing the character mappings
- /encs
- [ (11111331) (11113311) (11131131) (33111111) (11311311)
- (31111311) (13111131) (13113111) (13311111) (31131111)
- (11133111) (11331111) (31113131) (31311131) (31313111)
- (11313131) (11331311) (13131131) (11131331) (11133311)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789-$:/.+ABCD) def
-
- /barlen barcode length def % Length of the code
-
- includecheck {
- /sbs barlen 8 mul 8 add string def
- /txt barlen 1 add array def
- } {
- /sbs barlen 8 mul string def
- /txt barlen array def
- } ifelse
-
- /checksum 0 def
- /xpos 0 def
- 0 1 barlen 2 sub {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- sbs i 8 mul enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval xpos textyoffset textfont textsize] put
- 0 1 7 { % xpos+=width of the character
- /xpos exch enc exch get 48 sub xpos add def
- } for
- /checksum checksum indx add def
- } for
-
- % Find index of last character
- barcode barlen 1 sub 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
-
- includecheck {
- % Put the checksum character
- /checksum checksum indx add def
- /checksum 16 checksum 16 mod sub 16 mod def
- sbs barlen 8 mul 8 sub encs checksum get putinterval
- includecheckintext {
- txt barlen 1 sub [barchars checksum 1 getinterval xpos textyoffset textfont textsize] put
- } {
- txt barlen 1 sub [( ) xpos textyoffset textfont textsize] put
- } ifelse
- 0 1 7 { % xpos+=width of the character
- /xpos exch encs checksum get exch get 48 sub xpos add def
- } for
- % Put the end character
- /enc encs indx get def % Get the indxth encoding
- sbs barlen 8 mul enc putinterval % Put encoded digit into sbs
- txt barlen [barcode barlen 1 sub 1 getinterval xpos textyoffset textfont textsize] put
- } {
- % Put the end character
- /enc encs indx get def % Get the indxth encoding
- sbs barlen 8 mul 8 sub enc putinterval % Put encoded digit into sbs
- txt barlen 1 sub [barcode barlen 1 sub 1 getinterval xpos textyoffset textfont textsize] put
- } ifelse
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/rationalizedCodabar dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp rationalizedCodabar 0.0 0 0 0
+%%BeginData: 59 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 061KCB l@ ltCh\3 ,A4
+(9G@:EYcH\`B!23 JD%Df Bf4 Df0 W Z5* @]T @UX :eDe*F B5 *@]TA8 c@-
+A9)+&+D,%uF(LLj 04A[= F*( i2F E; PB E$/ b$C ia0N1G <H [@r-9u ARf
+Cb@r!3!@;L!rOu" b7@; KXg @< ?' jBO t[h +D, %uF(
+LLj055<6Cis9"FC f]=+ D ,% uF (LL j05 5<6C is9"@
+q]F`CM@[.AU&;>A moLsAW ei& F Cf] =A oDR/ OiN V@06CcMFE; /BAV^\V1G<i
+]G]\4LAnH*qFGTa U1G<EQ BkM + $L]N YpDf Bf4 Df0WZY:js= EbTE(FEqh:P
+!+/J!Ko='%<$3-B l@m1H] kFA @;L! rP!+ /T5 ^eepOuSV6P ,4<rNWD;+NH
+B2`AWf3'OtDh\P' )pOOu %N5O tCcrF _-^l I?I TYP%BdtOuY 16E-,f4DKCt
+)Ou%NL<,Z_tBl@m 1H]g1 5P"@< KAU&< /Df 0Y>FCf]=Ao DR/OtDhQ06C
+cMFE;/BAKZ)+G]\ "@H=`6m Ou"b5A U&<BD e<U &ATT&:AU&< BDe<U&ATX(g
+Ou"b)ASGdjF<G7.BkM+$OtVtS04f$2F!+\I#Ve%g0ekI?0ocMo0ekC=1GLVE#Ve%g1GLU?0ocM
+q1GLU=0ekDC#Ve%i0ekI=0ocMq0ekC;1GLVE#Ve+i0ekC=0ocMo1GLU?0ekDC#Ve+k0ekC;0oc
+Mq0ekI=0ekDC#Ve%g1G^a?0ocMo0f(U?0ekDC#W"1i0f(O?0ocMq0f(O=0f(PE#W"1k0f(O=0o
+cMo0f(O?0f(PE#Ve%i1GL[?0ocMo1GL[?0f(PE#Ve%g1GL[A0ocMo0ekI?1GLUiOu$N_FE;P4E
+ccAEDfC%V@UX:eBOPq&NYF0%1,CaE2E*TU/L3A1/h9mr.RfLVI=!VV@<,jk@<-FL'JM6s1GgsI
+2`NfL,W[S2.mZKh7$9?SP#X/FBOPq)@;L"@'Tt>:1Pc$e!JhD9@q]:kG%#3.P!5$g@UX:eBOPq
+&P!4[&P"_$&P'DD<82"FjA9i?,CibCDOu8CYL]E53L_"iADe+-:@;L"J5*@m7@<,jk@<-FP5)9
+6&9ThT&G^Y`G06;2X@;L"@"HkX*1PcTu!JhD9F)uM5Cibb'OuQoZEarckEc[C-L]NZ4P!5%RI?
+I-1@<,jrA7^PsL]NZ4F)uM5Cibb'P$jGl@UX:eDe*E%@UX:eDe*FB@Yb&JWJCS<9QP8u@;L"J5
+*B<:E0>6g@;L%,FCB33F*)>>HS8iPBlJ#DEaa'(Df0!"BmO?$6Z6LD@UX:D@:VZ?FAm9iEcb6%
+DfC^u6Z6LD@UX:"F*(i2F<G"0A0>r8Df?h/BOPpi@ru:&F!,=BF*&O6AKYo/AKYo'+@RDJ+B0J
+ %EZchb061K8F(Jp'Ec5u]5CIl3@WuO*E%Z0>FD5Z2@;KY(ARn/HA78qUE^F2F;flGgFAm:"E/
+m"IDe*9c@<*K3FCB33+CT.u+EMXCE$/Y(@<,ddFCfK6+Dl7BF<G%(+E)./+E(j75p/K:6Qg;f+
+@Ik9Ea`['AS#n&DfV"*I?ITYP#R5<L]LsnEas#uAWgMY!g9O0@UX:eDe*FB5)96&9O_pNH$3V4
+F-8_M@$5JU04K->E,[FM@<?4%DII?qH=^VSDe*9c@<+\CA4($=Ea`I"ATEeo6Z6LD@UX:"@W,e
+&+Dl7BF<G(3DKK<$DBNk8Cj@.6BkM.%F!+n/A0>r=D.7F"F!*%W,To,j0-Dki.k`Pr@;0doATD
+g0EfrY8P#Qjm82"F\Ebo<)+C\c"@rGmhP%&TCCh[EgFCerqARfM&L]N[<I?IQm1G<6OARfLsF_
+up7Ou%moL]LsnEbo<)L]Wa=HX^E(@rGmhP!4[&P"]A!@<-O"Cibb'P"T:uARfLsF`!9B04S[,@
+r$..D3@)G1OYEW@UX:eDe*E%@UX:eDe*FB@Yb&JWJCS<9OhaEEctl-F-8_M94MXH@r$..D3=oQ
+@q]F`CNFW8P!5$b04S[,@r$..D28a5BOt[hF*2>U&<^dkWJD+KC6CAr@;KXg@<?'jBOt[hHQZd
++Eas#uAKYGjEbo<)L]N[<P"T7mEarckEcW@5BOt[hF*2>_99O.=04K->E,[FM@<?4%DII?qH=^
+VSDe*9c@<+\CA4($A@r"JHB5)IJ-:r)bDfTl0@rrh\De*9c@<*K#BOt[h+Co2!BlkJ:Ec6,8A7
+]:)061K8F(Jp'Ec5u]5CJ\o@UX:nAT![-OuS6t@UX:eDe*F8!+KAWCh7L?!KsFF9Tj[a3+?<:C
+h7L?!KsEk@<,jrA7Zlm@<-0qDMS=V9TjZS@UX:eDe*FB5*@]TBl7EsF_#&nBOt[h+EVXHAWeit
+P#O)U@WNZ$@<-0qDBNY2@r-9uARfCb@r$FI!KmJ3P#R5CP&-;XOu"b5G]Y';@<-0qDBNY2@r-9
+uARfCb@r$FI!KmJ3P#RSNOu"b9E,TfR!0T-o!/LYb@<-0qDMS@WWI$:4P!5$b055<7GT^L0@<-
+O"Ci^_.@<,jrA7ZltL]NZ4P"Uro04f$2+D#G#F!,17A9a81Ou%/gF!,1Q#a0"8DI\iTFEhmMBc
+pV&@UX:eDe*E%BnueQ9R(MpF!,R9G]\4LAnH*qF<G[:G][P9DKI"CAU&<<BmO>5?'9Gg!/LZ3#
+CA+KE,Tf\5%SVAP!5%%LbP!kG]7SBOo^_%I?I-LP"9;)@r-9uARfCb@r$E6F(025@UX:nAT!;0
+P&,p[P,W#1@ric&BOt[hF*2>_99OR7DI[L*A7]7aARfLiDKKH7FF,-PG]Y';@<-0qDMS=VWEUK
+S@<,jk@<-E3@q]F`CNFW8L]NZ4G]7SB+EV1>FEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'D
+D%FEhmM@UX:nAT!;)P,VZG!?cW+Df[%CAU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C1.TI?
+ITd!/LZ3#CA+KE,Tf\5%SVAF!+t+ARfLsF`!:7P!5%%LbP!kG]7SBOo^_%I?I,SBl7I++Cf(nE
+ctl-F!+q#Eas#uAKYGjEbo<)L]N[<L]NZ4P"Uro04f$2+D#G#F!,17A9a81Ou%/gF!+q#Ebo<)
+L^9/[ASu"@H$":Q+C\c"Ch7K,>9IB`Eas#uAKYGjEbo<)L]N[<L]NZ4G]7SB+EV1>FEqe:AohO
+*+EV1>FCoH/F<G[:G]\"@H=\4)P'DD%055<7GT^L0@<-O"Ci^_.@<,jrA7Zlm@<-0qDMS=VWJC
+S<9Ti&31G<<W@j#?#@ric,DIe!T99M)P@WNZ$@<-0qDMSR]Ckr@[WF]sWP'M.oF<G%$Ebo<)L]
+N[<>9IB`Eas#uAKYGjEbo<)L]N[<L]NZ4G]7SB+EV1>FEqe:AohO*+EV1>FCoH/F<G[:G]\"@H
+=\4)P'DD<<BNAsEb0,A061WACh[cu@<+#B@WNYr+EM"5H\aA=WI9q$>q]Z#F!+[0F(03R@Yb&J
+!Jgf?;L<(gBkM+$I?K4g04JC3+Bot0@WR]AL]NY>L]W`;H\_ZMP(R$_Bl7EsF_#'*AU&<D06DG
+\+EVjMI?IP_DfBe@DfBf4Df0V=5!C*"Df0Z-Eaa0TE%`kbASu<uDIm6sP#RT)I?G)'1G<cWFD5
+Z2@;KY(ARn/HA78qUEfrDFA1r(@/n8fPFCfK5H"(o:FDl%L@WuO*E$/\&Anc-oEb0<1F`Lu'P'
+)pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/rationalizedCodabar 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER rationalizedCodabar--
% --BEGIN ENCODER onecode--
-% --DESC: United States Postal Service Intelligent Mail
+% --REQUIRES preamble raiseerror renlinear--
+% --DESC: USPS Intelligent Mail
% --EXAM: 0123456709498765432101234567891
% --EXOP: barcolor=FF0000
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/onecode {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /height 0.15 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /height height cvr def
-
- /barlen barcode length def
-
- % Create the human readable text
- /txtdict <<
- 2 dup
- 5 dup
- barcode 5 1 getinterval (9) eq {14} {11} ifelse dup
- 20 dup
- 25 dup
- 29 dup
- >> def
- /txt barlen 6 add array def
- /spacecnt 0 def
- 0 1 barlen 1 sub {
- /i exch def
- txtdict i known {
- txt i spacecnt add [( ) 0 0 () 0] put
- /spacecnt spacecnt 1 add def
- } if
- txt i spacecnt add [barcode i 1 getinterval 0 0 () 0] put
- } for
- /txt txt 0 barcode length spacecnt add getinterval def
-
- /normalize {
- /base exch def
- /num exch def
- num length 1 sub -1 1 {
- /i exch def
- num i 1 sub 2 copy get num i get base idiv add put
- num i num i get base mod put
- } for
- { %loop - extend input as necessary
- num 0 get base lt {exit} if
- /num [0 num {} forall] def
- num 0 num 0 get num 1 get base idiv add put
- num 1 num 1 get base mod put
- } loop
- % Trim leading zeros
- /num [/i true def num {dup 0 eq i and {pop} {/i false def} ifelse} forall] def
- num length 0 eq {/num [0] def} if
- num
- } bind def
-
- /bigadd {
- 2 copy length exch length
- 2 copy sub abs /offset exch def
- lt {exch} if
- /a exch def /b exch def
- 0 1 b length 1 sub {
- dup a exch offset add 2 copy get b 5 -1 roll get add put
- } for
- a
- } bind def
-
- % Conversion of data fields into binary data
- barlen 20 eq {[0]} if
- barlen 25 eq {[1]} if
- barlen 29 eq {[1 0 0 0 0 1]} if
- barlen 31 eq {[1 0 0 0 1 0 0 0 0 1]} if
- /binval exch [barcode 20 barlen 20 sub getinterval {48 sub} forall] bigadd def
- /binval [binval {} forall barcode 0 get 48 sub] def
- /binval [binval {5 mul} forall] [barcode 1 get 48 sub] bigadd 10 normalize def
- /binval [binval {} forall barcode 2 18 getinterval {48 sub} forall] def
-
- % Conversion of binary data into byte array
- /bytes 13 array def
- /bintmp [binval {} forall] def
- 12 -1 0 {
- /i exch def
- 0 1 bintmp length 2 sub {
- /j exch def
- bintmp j 1 add 2 copy get bintmp j get 256 mod 10 mul add put
- bintmp j bintmp j get 256 idiv put
- } for
- bytes i bintmp bintmp length 1 sub get 256 mod put
- bintmp bintmp length 1 sub 2 copy get 256 idiv put
- } for
-
- % Generation of 11-bit CRC on byte array
- /fcs 2047 def
- /dat bytes 0 get 5 bitshift def
- 6 {
- fcs dat xor 1024 and 0 ne {
- /fcs fcs 1 bitshift 3893 xor def
- } {
- /fcs fcs 1 bitshift def
- } ifelse
- /fcs fcs 2047 and def
- /dat dat 1 bitshift def
- } repeat
- 1 1 12 {
- bytes exch get 3 bitshift /dat exch def
- 8 {
- fcs dat xor 1024 and 0 ne {
- /fcs fcs 1 bitshift 3893 xor def
- } {
- /fcs fcs 1 bitshift def
- } ifelse
- /fcs fcs 2047 and def
- /dat dat 1 bitshift def
- } repeat
- } for
-
- % Conversion from binary data to codewords
- /codewords 10 array def
- 9 -1 0 {
- /i exch def
- i 9 eq {
- /b 636 def
- } {
- /b 1365 def
- } ifelse
- 0 1 binval length 2 sub {
- /j exch def
- binval j 1 add 2 copy get binval j get b mod 10 mul add put
- binval j binval j get b idiv put
- } for
- codewords i binval binval length 1 sub get b mod put
- binval binval length 1 sub 2 copy get b idiv put
- } for
-
- % Inserting additional information into codewords
- codewords 9 codewords 9 get 2 mul put
- fcs 1024 and 0 ne {
- codewords 0 codewords 0 get 659 add put
- } if
-
- % Conversion from codewords to characters
- /tab513 [
- 31 7936 47 7808 55 7552 59 7040 61 6016 62 3968 79 7744 87
- 7488 91 6976 93 5952 94 3904 103 7360 107 6848 109 5824 110 3776
- 115 6592 117 5568 118 3520 121 5056 122 3008 124 1984 143 7712 151
- 7456 155 6944 157 5920 158 3872 167 7328 171 6816 173 5792 174 3744
- 179 6560 181 5536 182 3488 185 5024 186 2976 188 1952 199 7264 203
- 6752 205 5728 206 3680 211 6496 213 5472 214 3424 217 4960 218 2912
- 220 1888 227 6368 229 5344 230 3296 233 4832 234 2784 236 1760 241
- 4576 242 2528 244 1504 248 992 271 7696 279 7440 283 6928 285 5904
- 286 3856 295 7312 299 6800 301 5776 302 3728 307 6544 309 5520 310
- 3472 313 5008 314 2960 316 1936 327 7248 331 6736 333 5712 334 3664
- 339 6480 341 5456 342 3408 345 4944 346 2896 348 1872 355 6352 357
- 5328 358 3280 361 4816 362 2768 364 1744 369 4560 370 2512 372 1488
- 376 976 391 7216 395 6704 397 5680 398 3632 403 6448 405 5424 406
- 3376 409 4912 410 2864 412 1840 419 6320 421 5296 422 3248 425 4784
- 426 2736 428 1712 433 4528 434 2480 436 1456 440 944 451 6256 453
- 5232 454 3184 457 4720 458 2672 460 1648 465 4464 466 2416 468 1392
- 472 880 481 4336 482 2288 484 1264 488 752 527 7688 535 7432 539
- 6920 541 5896 542 3848 551 7304 555 6792 557 5768 558 3720 563 6536
- 565 5512 566 3464 569 5000 570 2952 572 1928 583 7240 587 6728 589
- 5704 590 3656 595 6472 597 5448 598 3400 601 4936 602 2888 604 1864
- 611 6344 613 5320 614 3272 617 4808 618 2760 620 1736 625 4552 626
- 2504 628 1480 632 968 647 7208 651 6696 653 5672 654 3624 659 6440
- 661 5416 662 3368 665 4904 666 2856 668 1832 675 6312 677 5288 678
- 3240 681 4776 682 2728 684 1704 689 4520 690 2472 692 1448 696 936
- 707 6248 709 5224 710 3176 713 4712 714 2664 716 1640 721 4456 722
- 2408 724 1384 728 872 737 4328 738 2280 740 1256 775 7192 779 6680
- 781 5656 782 3608 787 6424 789 5400 790 3352 793 4888 794 2840 796
- 1816 803 6296 805 5272 806 3224 809 4760 810 2712 812 1688 817 4504
- 818 2456 820 1432 824 920 835 6232 837 5208 838 3160 841 4696 842
- 2648 844 1624 849 4440 850 2392 852 1368 865 4312 866 2264 868 1240
- 899 6200 901 5176 902 3128 905 4664 906 2616 908 1592 913 4408 914
- 2360 916 1336 929 4280 930 2232 932 1208 961 4216 962 2168 964 1144
- 1039 7684 1047 7428 1051 6916 1053 5892 1054 3844 1063 7300 1067 6788 1069
- 5764 1070 3716 1075 6532 1077 5508 1078 3460 1081 4996 1082 2948 1084 1924
- 1095 7236 1099 6724 1101 5700 1102 3652 1107 6468 1109 5444 1110 3396 1113
- 4932 1114 2884 1116 1860 1123 6340 1125 5316 1126 3268 1129 4804 1130 2756
- 1132 1732 1137 4548 1138 2500 1140 1476 1159 7204 1163 6692 1165 5668 1166
- 3620 1171 6436 1173 5412 1174 3364 1177 4900 1178 2852 1180 1828 1187 6308
- 1189 5284 1190 3236 1193 4772 1194 2724 1196 1700 1201 4516 1202 2468 1204
- 1444 1219 6244 1221 5220 1222 3172 1225 4708 1226 2660 1228 1636 1233 4452
- 1234 2404 1236 1380 1249 4324 1250 2276 1287 7188 1291 6676 1293 5652 1294
- 3604 1299 6420 1301 5396 1302 3348 1305 4884 1306 2836 1308 1812 1315 6292
- 1317 5268 1318 3220 1321 4756 1322 2708 1324 1684 1329 4500 1330 2452 1332
- 1428 1347 6228 1349 5204 1350 3156 1353 4692 1354 2644 1356 1620 1361 4436
- 1362 2388 1377 4308 1378 2260 1411 6196 1413 5172 1414 3124 1417 4660 1418
- 2612 1420 1588 1425 4404 1426 2356 1441 4276 1442 2228 1473 4212 1474 2164
- 1543 7180 1547 6668 1549 5644 1550 3596 1555 6412 1557 5388 1558 3340 1561
- 4876 1562 2828 1564 1804 1571 6284 1573 5260 1574 3212 1577 4748 1578 2700
- 1580 1676 1585 4492 1586 2444 1603 6220 1605 5196 1606 3148 1609 4684 1610
- 2636 1617 4428 1618 2380 1633 4300 1634 2252 1667 6188 1669 5164 1670 3116
- 1673 4652 1674 2604 1681 4396 1682 2348 1697 4268 1698 2220 1729 4204 1730
- 2156 1795 6172 1797 5148 1798 3100 1801 4636 1802 2588 1809 4380 1810 2332
- 1825 4252 1826 2204 1857 4188 1858 2140 1921 4156 1922 2108 2063 7682 2071
- 7426 2075 6914 2077 5890 2078 3842 2087 7298 2091 6786 2093 5762 2094 3714
- 2099 6530 2101 5506 2102 3458 2105 4994 2106 2946 2119 7234 2123 6722 2125
- 5698 2126 3650 2131 6466 2133 5442 2134 3394 2137 4930 2138 2882 2147 6338
- 2149 5314 2150 3266 2153 4802 2154 2754 2161 4546 2162 2498 2183 7202 2187
- 6690 2189 5666 2190 3618 2195 6434 2197 5410 2198 3362 2201 4898 2202 2850
- 2211 6306 2213 5282 2214 3234 2217 4770 2218 2722 2225 4514 2226 2466 2243
- 6242 2245 5218 2246 3170 2249 4706 2250 2658 2257 4450 2258 2402 2273 4322
- 2311 7186 2315 6674 2317 5650 2318 3602 2323 6418 2325 5394 2326 3346 2329
- 4882 2330 2834 2339 6290 2341 5266 2342 3218 2345 4754 2346 2706 2353 4498
- 2354 2450 2371 6226 2373 5202 2374 3154 2377 4690 2378 2642 2385 4434 2401
- 4306 2435 6194 2437 5170 2438 3122 2441 4658 2442 2610 2449 4402 2465 4274
- 2497 4210 2567 7178 2571 6666 2573 5642 2574 3594 2579 6410 2581 5386 2582
- 3338 2585 4874 2586 2826 2595 6282 2597 5258 2598 3210 2601 4746 2602 2698
- 2609 4490 2627 6218 2629 5194 2630 3146 2633 4682 2641 4426 2657 4298 2691
- 6186 2693 5162 2694 3114 2697 4650 2705 4394 2721 4266 2753 4202 2819 6170
- 2821 5146 2822 3098 2825 4634 2833 4378 2849 4250 2881 4186 2945 4154 3079
- 7174 3083 6662 3085 5638 3086 3590 3091 6406 3093 5382 3094 3334 3097 4870
- 3107 6278 3109 5254 3110 3206 3113 4742 3121 4486 3139 6214 3141 5190 3145
- 4678 3153 4422 3169 4294 3203 6182 3205 5158 3209 4646 3217 4390 3233 4262
- 3265 4198 3331 6166 3333 5142 3337 4630 3345 4374 3361 4246 3393 4182 3457
- 4150 3587 6158 3589 5134 3593 4622 3601 4366 3617 4238 3649 4174 3713 4142
- 3841 4126 4111 7681 4119 7425 4123 6913 4125 5889 4135 7297 4139 6785 4141
- 5761 4147 6529 4149 5505 4153 4993 4167 7233 4171 6721 4173 5697 4179 6465
- 4181 5441 4185 4929 4195 6337 4197 5313 4201 4801 4209 4545 4231 7201 4235
- 6689 4237 5665 4243 6433 4245 5409 4249 4897 4259 6305 4261 5281 4265 4769
- 4273 4513 4291 6241 4293 5217 4297 4705 4305 4449 4359 7185 4363 6673 4365
- 5649 4371 6417 4373 5393 4377 4881 4387 6289 4389 5265 4393 4753 4401 4497
- 4419 6225 4421 5201 4425 4689 4483 6193 4485 5169 4489 4657 4615 7177 4619
- 6665 4621 5641 4627 6409 4629 5385 4633 4873 4643 6281 4645 5257 4649 4745
- 4675 6217 4677 5193 4739 6185 4741 5161 4867 6169 4869 5145 5127 7173 5131
- 6661 5133 5637 5139 6405 5141 5381 5155 6277 5157 5253 5187 6213 5251 6181
- 5379 6165 5635 6157 6151 7171 6155 6659 6163 6403 6179 6275 6211 5189 4681
- 4433 4321 3142 2634 2386 2274 1612 1364 1252 856 744 496
- ] def
-
- /tab213 [
- 3 6144 5 5120 6 3072 9 4608 10 2560 12 1536 17 4352 18
- 2304 20 1280 24 768 33 4224 34 2176 36 1152 40 640 48 384
- 65 4160 66 2112 68 1088 72 576 80 320 96 192 129 4128 130
- 2080 132 1056 136 544 144 288 257 4112 258 2064 260 1040 264 528
- 513 4104 514 2056 516 1032 1025 4100 1026 2052 2049 4098 4097 2050 1028
- 520 272 160
- ] def
-
- /chars 10 array def
- 0 1 9 {
- /i exch def
- codewords i get dup 1286 le {
- tab513 exch get
- } {
- tab213 exch 1287 sub get
- } ifelse
- chars i 3 -1 roll put
- } for
-
- 9 -1 0 {
- /i exch def
- 2 i exp cvi fcs and 0 ne {
- chars i chars i get 8191 xor put
- } if
- } for
-
- % Conversion from characters to the OneCode encoding
- /barmap [
- 7 2 4 3 1 10 0 0 9 12 2 8 5 5 6 11 8 9 3 1
- 0 1 5 12 2 5 1 8 4 4 9 11 6 3 8 10 3 9 7 6
- 5 11 1 4 8 5 2 12 9 10 0 2 7 1 6 7 3 6 4 9
- 0 3 8 6 6 4 2 7 1 1 9 9 7 10 5 2 4 0 3 8
- 6 2 0 4 8 11 1 0 9 8 3 12 2 6 7 7 5 1 4 10
- 1 12 6 9 7 3 8 0 5 8 9 7 4 6 2 10 3 4 0 5
- 8 4 5 7 7 11 1 9 6 0 9 6 0 6 4 8 2 1 3 2
- 5 9 8 12 4 11 6 1 9 5 7 4 3 3 1 2 0 7 2 0
- 1 3 4 1 6 10 3 5 8 7 9 4 2 11 5 6 0 8 7 12
- 4 2 8 1 5 10 3 0 9 3 0 9 6 5 2 4 7 8 1 7
- 5 0 4 5 2 3 0 10 6 12 9 2 3 11 1 6 8 8 7 9
- 5 4 0 11 1 5 2 2 9 1 4 12 8 3 6 6 7 0 3 7
- 4 7 7 5 0 12 1 11 2 9 9 0 6 8 5 3 3 10 8 2
- ] def
-
- /bbs 65 array def
- /bhs 65 array def
- 0 1 64 {
- /i exch def
- /dec chars barmap i 4 mul get get 2 barmap i 4 mul 1 add get exp cvi and 0 ne def
- /asc chars barmap i 4 mul 2 add get get 2 barmap i 4 mul 3 add get exp cvi and 0 ne def
- dec not asc not and {
- bbs i 3 height mul 8 div put
- bhs i 2 height mul 8 div put
- } if
- dec not asc and {
- bbs i 3 height mul 8 div put
- bhs i 5 height mul 8 div put
- } if
- dec asc not and {
- bbs i 0 height mul 8 div put
- bhs i 5 height mul 8 div put
- } if
- dec asc and {
- bbs i 0 height mul 8 div put
- bhs i 8 height mul 8 div put
- } if
- } for
-
- % Return the arguments
- <<
- /ren //renlinear
- /bbs bbs
- /bhs bhs
- /sbs [bhs length 1 sub {1.44 1.872} repeat 1.44]
- /txt txt
- /textxalign (left)
- /textfont /Helvetica
- /textyoffset 1
- /textxoffset -0.3
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/onecode dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp onecode 0.0 0 0 0
+%%BeginData: 133 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 05k`>@ rG mhH\`B !23
+JD%DfBf4Df0WZ5* @]T@U X:e De* F B5* @]T A8c @-A9)+ &+ D,%uF( LLj
+05+p2B4uCE4rKcW Ou%#q FD5 Z2F -< ^[ F*) G:D J+':E+ P1 qH\_]c 23J
+DeE-,f4DKC/fX(G dVF( LLt H] gX BP# RT( P%' TNOt
+hst4d(eHEckrV4a W>DP ! 5% OP !5$ bI= %,/F E2M8O
+u%NL<IL$AOrfcH0 5kfOBl @m1 P !5$ bI ?IQJ E-, f4DKC/f1OY EX05+p2B4uB
+0BOtmjBQTCjOu"b #@<-0q DBN C sEas #uAW gMc 1G<ipFC])q F<E\.L]W`!L
+]rr$@UX:eDe*F8" c*2B9T B-6 P!+/ J%Xi \[$ [n1<OuS73O uS78OuS7<Ou
+PWhOu"b5G]Y';@< -0qDM SL[! KmbP1 G<fg @:N kYDKL[7Ou% moL]LsnEbo<
+)L]N[<HS9)r5*@^ DG][J 1@rri -P$iW YG] Y'B+EML1@q B.fFHQZ/NWC
+8Y!/LW8!/LV\P'A X$E+*6f @r?B2F )YPtA RfV "L]NY>Ou%N L<-3A,+DDs>
+E+*6f@r?CO!F$[U@<,jrA7ZltL]NZ4L]E52NW=k8?'9G\P"76JG]Y'MG]\`A@UX:eDe*FB@WQK
+s@qB.fFHQZf9Th1bDJsQ4@;KY(AU?(>@<6"C5*@]TDKTfZ5*@^>F`!:NL]N[<M#W83HS9)r5*@
+^>F_r78L]N[<L]W_WP"T\8D'3PU94D=NAWfrS!Kq\FF_r78+Du==+DI!3@UX=hP%p/)I?I-JDK
+TfP!0Tua@<6"CAp]\+I?IP_DKTe=>DN8sF_uJRP"ArB1N%>PL]D=8D281T95\lhL]NZ3@UX=hP
+#@GDP'CkeD2841F_up8P"T7mF(LMLP'DD<AM7qDD'3%9BcqM<F_-^lDKTfCOuS6tP!*NB"FH;S
+I=!V]+D,%uF(LLjI?ITYP"ArB1N%>PP%'4IP!+.FDKTe=>DN8bOu%NL<,QhqI?G)'1G<3OB45=
+]H\_`d)3SHl5*BB2!g4FaWKI67De<U&ATX)!Ou&85H]gR@P#O)CP!5$b04L).Ou%moL]LtJ@Yb
+&JWI'df@?NfmAnH*qFHQZ\!g4Fa94E\\M#WWnP"Ur=P'DD<87?q0%[&VW@<-0qDMT!i4aUCh!*
+t#9<+99VCh7L?)3R.0>DN;cI?IQ=@<-0qDMT<r4aUCh!Jg`3!/LW2!/LY]I?IQ=@<-0qDMTBt4
+aUCh!Jg`3!/LW2!Jg`3!/LW2!/LY]I?IP_@VK_'@;M)j>9IB`Eas#uAV_%0@<-0qDMT!iWKKr%
+LbP!kI?I0-+C]%t@:Wo31G<3ODK]H)+BostBl8*&CjUSn8Rc+K@rGmhL]ET2LbP!k?'6us@VK_
+'@;I&j+C]&&G%#36L]rrXI?I0-+Bost@<,jrA7^PtP"UTbP,V_0@VKI`A7UK'DJsQ4@;KY(AWe
+i&@VK_'@;I&j+C]&&G%#36I?I02@<,jrA7^PuL_>kEH\aA=WI9q$?'6us@X3',F,19g$'I(t@V
+K_%D/^V%+C]&&G%#36I?I0-Ou%n&M#W82HS9)r5*@^X!/LYbBl8$0E0=[d!g9O005?Y6Ou$Q]D
+KK`7+DQ]5Oo^@?Or9EU@VK_%D/^V4P"UN1!0V)Q$Bf4g!Kq\:Bl8$0E$/m<@VK_%D/^V4P"UN1
+!0U6CG^Y`G@X3',F!,0>@VK_%D/^V,Bl8$0E0=[d!KsFF983HIP%p/)@VK_%D/^V,Bl8$0E0=[
+d!KsF<!g4Fa983HIP#@HfI?I,SAn,n:#QKrC04\L5+C]V<ATNY-P"UT7Oq3^3L^&3<@ric'@<@
+[KL'.L>"Gd&@D0mpJ@ric)@rmG,Oq39X23Pe=1OXU'An,m)An,n<!KmtV1OYEd04n^8+D,,)L'
+RaA"HkPoA79R&A79S9!KmtV1OYF=L]N;4L^\W>H$!V=P!5%%L]`eN04\L5P!5$bL^8?>@ric'@
+<@[KL'.L>"Gd&@D0mpJ@ric)@rmG,Oq39X23Pe=1OXU'An,m)An,n<!KmtV1OYEd04n^8+D,,)
+L'RaA"HkPoA79R&A79S9!KmtV1OYF=I?I,S@rGmhGAhM4F,10d$'I*#$&JV;!.-A5P!5$bBo!(
+Y4aShkL&uac1OXU'@YP%dOu%NL<JUX2!Ffb\G%#3M@Yb)KWI$:5P!5$b@VK_'@;I'$L]NY>L]W
+_WP"T7uDK]H)+DR'4@ZkJ^$Bf4g!Kq\:Bl8*&C`mI8@VK_'@;I'$P"T8I;Nc9QP"9)$A7]t'Eb
+'56Bcpl!DK]H)+C]&&G%#3M@Yb&JWKKn`P%p/)@VK_'@;I&qBl8*&Cm&7`!KsF<!g4Fa94F&^P
+'DD<87QRKATr'5A93P5@rGmhGAhM4F,1-c98EY4Cm'$T@rmA-!0RJ@!0V2G@rGmhGAhM4F,0g+
+De*F'DfTB0L]ET2L'!R%!Kq\UP#O)V@:D)K1E]nX+,1j;LbFK(J;?.=*Irr-L)YZ!4bac'Ld$P
+(J;@!U*^GN_L)iO8>D=(^Lg>`O5_ra$%mYq`L)e!bCPEbCLi%k^^kcl_%`!mAL)Id_FbUXHLj"
+L^^kd8j'>TEML'teQI"hmAL&d9h*[$1;Q\HM'L&d]t)^'k8SV@q'L&dg"%j6T,VhQ1aL&e9/)P
+DfbXbIUaL&eB2%\SOVZ\B?jL&eW9'qg9][Y>6aL&ec=';1'[\qUTcL&el@#G?eOa+bRAL&fDO)
+IS:"c%[!AL&fMR%Ub"kdtS`JL&fbY'juareqOWAL&fn]'4?Opg4fuCL&g"`#@N8dj+\E/L&g=i
+']=]Gk(X<&L&gIm'&\KEl@oZ(L&gRp#2k49nV.Y6L&ge!$/gO<oS*P-L&h"'"5nn7%u),:L&i*
+F*>!r+)ho:CL&i<L(D)<%*ek1:L&iZV*0>mU.u"t(L&il\(6F7O/qsjtL&j)b)3BRR222j-L&j
+2e%?Q;F3JJ3/L&j>i$]p)D4GF*&L&jf!*)M@j984?]L&k#'(/T_d:506TL&k5-),Q%g<JD5bL&
+k>0%8_c[=b[SdL&kJ4$W)QY>_WJ[L&ke=(sn!<AVLoGL&kn@%+'_0Bnd8IL&l%D$IFM.Ck`/@L
+&l:K&^Z75EeXnIL&lCN"jhu)G_Q=IL&m'a*&**JMhW-(L&m9g(,1IDNeS#tL&mKm))-dGQ%g#-
+L&mTp%5<M;R>)A/L&m`t$S[;9S;%8&L&n'((pJ_qV1o\gL&n0+%'YHeWJ2%iL&n</$F#6cXG-q
+`L&nQ6&[6ujZA&[iL&nZ9"gE^^\:t*iL&o2H(iY31`J,(GL&o;K$ugq%abCFIL&oGO$?1_#b_?
+=@L&o\V&TEI*dY8'IL&oeY"`T1sfS0KIL&p7f&FbDTie@a.L&p@i"Rq-Hk_90.L&qm?*XIK%(P
+Wq9L&r<K)[M0"*JP@9L&rEN%g[mk-\`UsL&rl[)Mj+L/VY$sL&ru^%Z#i@1PQd'L&s5e'o7SG2
+MMZsL&sAi'8VAE3ee#uL&sJl#De*97tr!SL&t#&)G#Sa9njESL&t,)%S2<U;hc/\L&tA0'hF&\
+<e_&SL&tM4'1diZ>)!DUL&tV7#=sRN@tkiAL&tq@'Zc"1Aqg`8L&u(D'$,e/C5*):L&u1G#0;N
+#EJ>(HL&uCM$-7i&FG9t?L&uUS"3?2uLP?csL'!9f)CU=ANJ82sL'!Bi%Od&5PD0r'L'!Wp'e"
+e<QA,hsL'!ct'.AS:RYD1uL'!m"#:P<.UP9VaL'"3+'W?`fVM5MXL'"?/&u^NdWeLkZL'"H2#,
+m7XZ%`jhL'"Z8$)iR[["\a_L'"l>"/pqU_hK"AL'#>K'PN4&`eFn8L'#JO&nm"$b(^7:L'#SR#
+&&_md=r6HL'#eX$##%pe:n-?L'$"^")*DjiJ%p-L'$@h#j@!EjG!g$L'%[8*#OD4$\fQ:L'%m>
+()Vc.%YbH1L'&*D)&S)1'o!G?L'&3G%2ag%)28eAL'&?K$Q+U#*/4\8L'&ZT(mp$[-&*,$L'&c
+W%%)bO.>AJ&L'&o[$CHPM/;=@rL''/b&X\:T156+&L''8e"dk#H3/.O&L''et(g)Lp7>;LYL''
+o"$s85d8VRj[L'(&&$<W#b9SNaRL'(;-&Qjbi;MGK[L'(D0"^$K]@>5?GL'(n>#hXk6A;16>L'
+*'_(c[6PKn^:$L'*0b$oitDM1uX&L'*<f$93bBN.qNrL'*Qm&NGLIP(j9&L'*Zp"ZV5=TnX,gL
+'+0)#e5TkUkT#^L',8H&9rp3_M/>@L',AK"F,Y(%u),.L'/<I*<_*")ho:7L'/NO(BfHq*ek1.
+L'/lY*/'%L.u"sqL'0)_(5.DF/qsjhL'0;e)2*_I222j!L'0Dh%>9H=3JJ3#L'0Pl$\X6;4GF)
+oL'1#$*(5Ma984?QL'15*(.<l[:506HL'1G0)+92^<JD5VL'1P3%7GpR=b[SXL'1\7$Uf^P>_W
+JOL'2"@(rV.3AVLo;L'2+C%)dl'Bnd8=L'27G$H.Z%Ck`/4L'2LN&]BD,EeXn=L'2UQ"iQ,uLP
+?coL'3Eh)C1%?NJ82oL'3Nk%O?c3PD0r#L'3cr'dSM:QA,hoL'3p!'-r;8RYD1qL'4$$#:,$,U
+P9V]L'4?-'VpHdVM5MTL'4K1&u:6bWeLkVL'4T4#,HtVZ%`jdL'4f:$)E:Y["\a[L'5DK(hA@(
+`J,(;L'5MN$tP(qabCF=L'5YR$=nkob_?=4L'5nY&S-V!dY8'=L'6"\"_<>jiJ%p)L'6Lj#ip^
+D#DO34L'7s>)AIo0%>GW4L'8'A%MXX$'8@A=L'8<H'blB+(5<84L'8HL',60))MSV6L'8QO#8D
+mr,DI&"L'8lX'U4=U-ADqnL'9#\&sS+S.Y\:pL'9,_#*aiG0np:)L'9>e$'^/J1kl0uL'9r!(f
+Z4n7>;LUL':&$$rhrb8VRjWL':2($<2``9SNaNL':G/&QFJg;MGKWL';"?&CcF<@YP0<L'<3a(
+c6sNKn^9uL'<<d$oE\BM1uX"L'<Hh$8dJ@N.qNnL'<]o&N#4GP(j9"L'=9*&@@/qU4rr\L'>DJ
+&9NX1_M/><L'@m;*"7Q+$\fQ.L'A*A((>p%%YbH%L'A<G)%;6('o!G3L'AEJ%1Isq)28e5L'AQ
+N$Ohao*/4\,L'AlW(lX1R-&*+mL'AuZ%#foF.>AIoL'B,^$B0]D/;=@fL'BAe&WDGK156*oL'C
+#"(efYg7>;LML'C,%$quB[8VRjOL'C8)$;?0Y;2,ZVL'CP1#u$'X@>5?;L'D+A#gA#-K8(3oL'
+E?d'J+tCL5$*fL'EKh&hJbAMM;HhL'Ecp&M/Y@P(j8oL'F?+&?LTjU4rrTL'GJK&8[(*_M/>4L
+'Ig8(`\88"bm^2L'Ip;$lk!,$&0'4L'J'?$64d*&V^l;L'J?G#on[)+bgPuL'JoW#b6VS6&#qU
+L'L&"#[E)hJVF^uL'N<b#X!hI%u),,L'STM*<Ls$)ho:5L'SfS(BT<s*ek1,L'T/]*.inN.u"s
+oL'TAc(4q8H/qsjfL'TSi)1mSK222itL'T\l%>'<?3JJ3!L'Thp$\F*=7tr!ML'UG,)FB/a9nj
+EML'UP/%RPmU;hc/VL'Ue6'gdW\<e_&ML'Uq:'1.EZ>)!DOL'V:D(rD"5AVLo9L'VCG%)R`)Bn
+d8;L'VOK$GqN'EJ>(BL'VgS$,VE&LP?cmL'W]l)BsnANJ82mL'Wfo%O-W5PD0r!L'X'!'dAA<Q
+A,hmL'X3%'-`/:RYD1oL'XQ/(nu`jV1o\YL'XZ2%&/I^WJ2%[L'Xf6$DN7\Z%`jbL'Y)>$)3.[
+_hK";L'YbQ'Ole&`eFn2L'YnU&n6S$b(^74L'Z1]&RpJ#dY8';L'Zam&E8EN#DO32L'\6B)A7c
+2%>GW2L'\?E%MFL&'8@A;L'\TL'bZ6-(5<82L'\`P',$$+)MSV4L'])Z(m9U[-&*+sL']2]%$H
+>O.>AIuL']>a$Bg,M0np:'L']Vi$'L#L6\ZFUL'^;''N0Yl7YV=LL'^G+&lOGj8qm[NL'^_3&Q
+4>i@>5?AL'`Ke(c$gPKn^9sL'`Th$o3PDM1uWuL'``l$8R>BObOH'L'aQ.&@.#s_1iMAL'e0?*
+"%E-$\fQ,L'eBE((,d'%YbH#L'eTK)%)**'o!G1L'e]N%17gs)28e3L'eiR$OVUq,DI%mL'f5]
+'T.VP-ADqdL'fAa&rMDN.Y\:fL'fYi&W2;M6\ZFML'gA('M=)e7YV=DL'gM,&k[lc;2,ZTL'h@
+D&B]_7K8(3mL'iWh'InhEL5$*dL'icl&h8VCObOGtL'jW/&?:Hl_1iM9L'n*<(`J,:"bm^0L'n
+3?$lXj.$&0'2L'nTJ&K6B3+bgPsL'p;%&6aerJVF^sL("<A*!V-+$\fQ(L("NG(']L%%YbGtL(
+"`M)$Yg('o!G-L("iP%0hOq)28e/L(#;](l!bR-&*+gL(#D`%#0KF.>AIiL(#ek&Vc#K6\ZFIL
+($M*'Lmfc8VRjIL($q6&OqK`@>5?5L(&]h(aatGKn^9gL(&on&gi>AObOGpL('c1&>k0j_1iM5
+L(+6>(`%i8"bm^,L(+HD&f-32&V^l5L(,;\&=/%[6&#qOL(/]g&2o7Q",7X&L(4BA'Foj-$&0'
+&L(4fM&IsO*+bgPgL(6M(&5IriJVF^gL(=<>&0?Q;%u),+L(G/U*<Cm+)ho:4L(GA[(BK7%-\`
+UlL(Gki)M*VS/VY$lL(H.q)1dMR222isL(HA"'7klL7tr!LL(I"4)F9)h9njELL(I:<)*rug<J
+D5SL(ILB'1%?a@tki:L(IpN'Z#M8Bnd8:L(J?Z&]'25LP?clL(K8t)BjhHNJ82lL(KQ')'O_GQ
+ %g"sL(Kc-'-W)AUP9VZL(L29'VU6mWJ2%ZL(LVE&YXpj_hK":L(M=Y'Oc_-abCF:L(Mae&RgD
++#DO31L(OfJ)A.]9%>GW1L(P)R)%hT8'o!G8L(P;X'+os2,DI%tL(P_d'Tn+^.>AItL(Q.p&Wq
+e[6\ZFTL(Qk/'N'Ss8VRjTL(T&m(bpaWKn^9rL(T8s&i#+R#DO3)L(XlK)@;-2%>GW)L(Y/S)$
+u$1'o!G0L(YAY'+'C+,DI%lL(Yee'T%PW.>AIlL(Zk.(eKGp7>;LJL(],n(b(1PKn^9jL(aZD(
+`A&A"bm^/L(jlI*!M'2$\fQ'L(k)O('TF,'8@A.L(kAW'a9=+,DI%hL(kqg'SV8U6\ZFHL(o8p
+(aXnO",7X-L)'lG(_)3:#DO3#L):;Q)?Y^2'8@A,L);.i(k[P[6\Z:DL([(4&Q+8oiJ%b1L'gP
+-#uZK`ie@Y2L':P2"QY:>=G?n@L&pdLOu"b5@:CuH1E]nX",7WmL]rMI!/Li6$il(iL(XKB$AJ
+lfL^]"B!/M5A&HIV"L'[j9'SZbkL_tjK!/MeQ&:fQ\L'W<c,_cGPLa[uZJ;>n6!J#tlL(HV+6A
+>b2LdZt#5_qsc!^MQ<L&jPq@"nZsL&cdZ&0Q]-JqaORL&cm]"<`F!LkYsRL&d<i!?d*t!JV-sL
+&h@1#S;^k"GR$jL&hR7!YC(f!JV-kL&qF2#RH.d"GR$bL'.O3&-R^j!eps`L'Rg7&-@Rt!JUj]
+L'.X6!XOM]&;C1X?'6us@q]:kF,10d$'I*#!/LZ3$%"=>P!5$b@rGmhGAhM4F!,1[99M8h"U:,
+uHZW\*2)-nM5*AQeHZW\*1,1SJ5)'4GP,XU;I?IT?BOPq&+DHW6M#WWnP'DD<8;IS.s+gZ%056
+S5Ou%mqBcpu3E0;ba@rme9L]ETTHXg_tEcW@;+Cf(nEcW@;P"UNOs,t3]G^Y`SI?I,S@UX:o@;
+m>nL^/_;L]iM9L]N;=L]E52L^AkGL]WA<L]rS<L^&YCL^8eCL]`G6L]E53L]rSCL]WA9L]N;;L
+]iM:L^AkFL^&Y;L^8eDL]`G>L^/_?L]rSBL]N;7L^8e?L]WA@L^AkEL]E54L^/_:L^&Y?L]`G;
+L]iM?L]E55L^8e@L^&Y<L]WA;L]N;4L^AkDL^/_CL]rS9L]iM6L]`G=L^&Y:L]E56L^8eEL]N;
+3L^AkCL]`GAL]WA:L^/_@L]rS8L]iM@L]N;?L^&YAL^/_<L^8e:L]rS?L^AkBL]iM<L]WA>L]`
+G9L]E57L^8e>L]rS>L^/_DL]N;<L^&Y8L^AkAL]E58L]iM>L]WA5L]`G7L]rS@L^8eFL]iMAL^
+&Y9L^Ak@L^/_=L]`G8L]N;5L]E59L]WA4L]N;6L]iM7L^&YBL]`G:L^8eAL^Ak?L]WA?L]rS=L
+]E5:L^/_EL]iM8L^8e;L]rSAL]`G5L^Ak>L]E5;L^&Y=L]WA8L^/_AL]N;:L]rS7L]iM;L]WA7
+L]E5<L^&YDL^Ak=L]`G@L]N;9L^8eBL^/_BL]rS;L]E5=L]N;8L]WA6L^Ak<L]iMBL^8e=L^&Y
+>L^/_9L]`G<L]iM=L^/_>L]E5>L]N;>L]WA=L^Ak;L^&Y@L]rS:L]`G?L^8e<?'6us@UaD76';
+P;1G<3NF,3,F$'I*#!/LZ35^P.uP!5$b04\X(+Cf(nEcW@4@<-3nE$/kN"HmSa99Mr(!b,SYD.
+.B+BnunTCkr+T!Kp)eG]8fsOp$R@P&6@<04Ap3+Cf(nEcW@4@<-3nE$/kN"HmSW!g3SI99Mr(!
+b,SYD..B+BnunTCkr1V!Kp)eG]8fsOp$R@P&6@<A7]86E+*ftP&QQeHX^H*+DHW6BOtmjBQTDR
+L^9/%P'CGLF!,1Q!bc.ZB4uCMCkr@[2Ni<5P#Pt'A!1e>F(:@9HX^H*+DHW6BOtmjBQTDRL^9/
+ %P'CGLF!,1Q"__I]B4uCMCkr@[2Ni<5P#Pt'@j#3$A!1eo"FFTeF!,1Q!,,qXB4uCMCkr@[2N
+i;oBQG;1L]qI'BkM+$P&,p[OuAJJI?IQ?ARcikF(:@9HX^H*+DHW3BOtmjBQTDRL^9/%P'CGLF
+!,1Q#\[d`B4uCMCkr@[2Ni<5P#Qjm83B!fEb0,A061WACh[cu@<+#1@WNZ$@WO23BQG;*BQGhJ
+@WNYr+C]#*P%'4JP,Wec5IaSWMEgR#Z@.mgMEeUJls28dG]Y'MG]YT\AU&<A@;KXjDN4j9AS-$
+;FCf]=AoDR/OioD"AU&<BDe<U&ATW_/06CcMFEh_9AohO*MS>LHRP/SuF<GL@FD5Z2F!*Y1+Co
+D.FC]E#GEQnu061WACh[cu@<.N1Ou[rR%[&V$Df0,rDe*FB30If*F_`U>D_?-CEcQG7F`MSBDD
+#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP'(hWFDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/onecode 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER onecode--
% --BEGIN ENCODER postnet--
-% --DESC: United States Postal Service POSTNET
+% --REQUIRES preamble raiseerror renlinear--
+% --DESC: USPS POSTNET
% --EXAM: 01234
% --EXOP: includetext includecheckintext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/postnet {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /includecheckintext false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 0.125 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- /barlen barcode length def
-
- % Ensure 5, 9 or 11 digits
- barlen 5 lt {
- /barlen -1 def % Error
- } {
- barlen 11 ge {
- /barlen 11 def
- } if
- barlen 10 eq {
- /barlen 9 def
- } if
- barlen 8 le {
- /barlen 5 def
- } if
- } ifelse
-
- % Create an array containing the character mappings
- /encs
- [ (55222) (22255) (22525) (22552) (25225)
- (25252) (25522) (52225) (52252) (52522)
- (5) (5)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789) def
-
- /bhs barlen 5 mul 7 add array def
- /txt barlen 1 add array def
-
- % Put start character
- /enc encs 10 get def
- /heights enc length array def
- 0 1 enc length 1 sub {
- /j exch def
- heights j enc j 1 getinterval cvi height mul 5 div put
- } for
- bhs 0 heights putinterval % Put encoded digit into sbs
-
- /checksum 0 def
- 0 1 barlen 1 sub {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- /heights enc length array def
- 0 1 enc length 1 sub {
- /j exch def
- heights j enc j 1 getinterval cvi height mul 5 div put
- } for
- bhs i 5 mul 1 add heights putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 5 mul 1 add 3.312 mul textyoffset textfont textsize] put
- /checksum checksum indx add def % checksum+=indx
- } for
-
- % Put the checksum character
- /checksum 10 checksum 10 mod sub 10 mod def
- /enc encs checksum get def
- /heights enc length array def
- 0 1 enc length 1 sub {
- /j exch def
- heights j enc j 1 getinterval cvi height mul 5 div put
- } for
- bhs barlen 5 mul 1 add heights putinterval
-
- includecheckintext {
- txt barlen [barchars checksum 1 getinterval barlen 5 mul 1 add 3.312 mul textyoffset textfont textsize] put
- } {
- txt barlen [( ) barlen 5 mul 1 add 72 mul 25 div textyoffset textfont textsize] put
- } ifelse
-
- % Put end character
- /enc encs 11 get def
- /heights enc length array def
- 0 1 enc length 1 sub {
- /j exch def
- heights j enc j 1 getinterval cvi height mul 5 div put
- } for
- bhs barlen 5 mul 6 add heights putinterval
-
- % Return the arguments
- <<
- /ren //renlinear
- /bhs bhs
- /bbs [bhs length {0} repeat]
- /sbs [bhs length 1 sub {1.44 1.872} repeat 1.44]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/postnet dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp postnet 0.0 0 0 0
+%%BeginData: 45 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 05tiNF Db Z3H\`B !23
+JD%DfBf4Df0WZ5* @]T@U X:e De* F B5* @]T A8c @-A9)+ &+ D,%uF( LLj
+055<6Cis9"FCf]= +D,%u F(L Lj0 6U c? Bk1 XoA RfCb@r !3 !@;L!r Ou"
+b*DI[L*A7]7aARf LiDK KH7 F< G1 (Ci a0N 1G< i]G]
+[P9DKM#]Ou"b5AU &<<B m O? H$ Bd1 uFC f]=H #I;,F
+(KHLq3!NeBOtmjB QT+q!! !"^ 1 N.5 SB l@m1 P-6 N[FE2)5B68 E<AWf3'L]NY
+rOpu>KFD5Z2F*j( NAmoLs AWf 3 'P!F GY<0 B5( @ZmRN0oc8t P)XR(F_-_!H
+]ftD5*C&O5*@^MH ]ft&Ec krV 1OYE dI?J 0)* g/N:DfBf4D f0WZ5*@^MP#
+Q@=FD5Z2F*j'+I? I/TFC f]=A oDR/+ EV1> FCo H/FHS5=1G< i]G]\"@H=\4
+@AU&<<BmO?R09S+ EFCf] =H#I; ,F(KG 9FC f]=H#I;,F( KHV09S+EBOt
+mjBQPA1ASGdjFHS ;?1G<3G Ebo<)+ C\c"@ rGm hP%&TCCh[E gFCerqARfM&
+L]N[<I?IQm1Lad5Ch7L?"d3_3@<-0qDMSU^D3>$2@<-0qDMS[`D3>$K04K->E,[FKDf^#<ATU7
+IA5$QPB67gI4B5<V;]nn4;cHL\<$6%#F*&O6AKWi]+?:Q_EZd(k+Co2!BlnD=AU%^$F_#3(B-:
+\tARfKuA8,[jF>#:f@;0doATDg0EfrY8P#Pn!Eas#uAUBS"LbP!(P!4[^P#.<^HS8iPBlJ#DE,
+Tf>DImoV@:V`=@<,ddFCfKQ,uml?;]nn4;cHL\<$6%#F*&O7Df0Z*Bl5&3DJXS@A8,[jFE9)gE
+a`['AS#n&DfV"*I?IQXP"@<9@<,jk@<-FL$8=1i1GgsI2`Ng\1G<6OARfLsF_up7Ou%moL]Lsn
+Ebo<)L]N[<HS9)r5*@]T@q]F`CNFW8+Cf(r@r$..D'3:rEas#uAKY]M98G9bWKI:F1OYEW04S[
+,@r$..D28O/BOt[hF*2>U$Bf.eWJCnEC6CAr@;KXg@<?'jBOt[hHQZd+Eas#uAKYGjEbo<)P"T
+7mEarckEcW@5BOt[hF*2>_99O.=04K->E,[FKDf^#<ATU7IA4($A@r"JHB5)IJ.nOVgDfTl0@r
+rhn;c$C8:et"h:.8,)@q]F`CER/%B5)H1E,ol?Bk1dc0/%?SBldisEcQ)=P!=AX<%h]hEas#uA
+KYGjEas#uAV^=q@<-0qDN[\V1OYEc04f$2F!+\I"Z8.m1,=jn1,:UB23%hq1,UgENWh0n2)R.L
+"Yqqj1,Y'q1,UgE16)Mn2)R-ENWh9q1,:_I"Z8%j2):0q2)7$E16)AmNWD"COu"b#BQG;*@<-0
+qDMSIZCkr=Z!KmbP1G<ipF<G%$Ebo<)L]NY>OpR:-04f$2+D#G#F,10d99M(aBOtmjBQS;<ASu
+"@@Zh%\1Pc$e!G-.YP%'4JP,Wd]C6CcD1MC?6B4uC.+DN$1DIXf(L]NZ4Ot:9XBkM+$P&,pXOu
+AJJI?I-1BQJt0BOtmjBQS<YH&)HV!FfJXCh7L?!KsF/056S5Ou"b&DIXf#DI[`1@UX:eDe*E%B
+p),F0TrDu99M(aBOtmjBQS;<ASu"@@Zh%\1Pc$e!G-.YP%'4JP,Wd]C6CcD1MC?6B4uC.+DN$1
+DIXf(L]NZ4Ot:9XBkM+$P&,pXOuAJJI?I-1BQG;1L]rrXL]NY>BOtmjBQS<YH$":Q+DDs&+C\c
+"@rGmh+DHW4P"]SG"d3\X!KmJ@5Z@F'P&,5OG]\4LAnH*qF<G[:G][P9DKI"CAU&<<BmO>5?'9
+G\P"76;DIXf#DI[`1@q]F`CNFW8P"Uro05+p2B4uC.+D#G#P%'R\Ou%moL]M()A!1;W!KsF/05
+?Y6Ou$c_BkM+$F!,3?ASu!#C5;nR9Tgr?ASGdjFHUHr"d1d,G^Y`G@VBg*@UX:nAT!;-P&,pTO
+o]6-BkM+$F-:f_DI[L*A7]7aARfLiDKKH7FF,-PG]Y';@<-0qDBN.+@UX:eBOPq&+Cf(r@r$..
+D284U9O_FNCh7L?"d3\X!KmJ@5Z@F'P&,5OG]\4LAnH*qF<G[:G][P9DKI"CAU&<<BmO>5?'9G
+\HZXLS+C\c"Ch7K,>E/_,@UX:nAT!;-P&,pTOo^A0P&,plOu@DnG]\4LAnH*qF<G[:G][P9DKI
+"CAU&<<BmO>5?'9G\P#X/HDIXf#DI[aD$^+/G1G<EQBkM+$F!,%3A!1;a$'I*#!/LYeDI\i=L]
+N[<HS9,s5*@^8ASGdjFE8R>+D#G#+DQ]5P"_#iBOtmjBQTDRL]rr"P'DD<87H7R+C\c"Ch7L?"
+d3\X#*K"#ASGdjFE<Uj4?P9;ASs.SEb0-)Bl7KjE\Cm8F!+q*F"_!3F!+[0@VBhG@XEn2I?K4g
+06:TD+BostBQK>GL]N[<H\t%t;='0)n"$b4P(SWV\5DTu+DG_'Cis9"FCf]=HS9JcF<G[MFFB<
+O05kfO+E)4@Bl@m1+?ht3A8c@-A9)+&P&N'-Eb0-)Bl7KjEfsCb3IR&#Ou"b1Df^#<ATX(pP%6
+4gCG'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM@[!P.H"'F`
+V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/postnet 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER postnet--
% --BEGIN ENCODER planet--
-% --DESC: United States Postal Service PLANET
+% --REQUIRES preamble raiseerror renlinear--
+% --DESC: USPS PLANET
% --EXAM: 01234567890
% --EXOP: includetext includecheckintext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/planet {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /includecheckintext false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 0.125 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- /barlen barcode length def
-
- % Ensure 11 or 13 digits
- barlen 11 lt {
- /barlen -1 def % Error
- } {
- barlen 13 ge {
- /barlen 13 def
- } {
- /barlen 11 def
- } ifelse
- } ifelse
-
- % Create an array containing the character mappings
- /encs
- [ (22555) (55522) (55252) (55225) (52552)
- (52525) (52255) (25552) (25525) (25255)
- (5) (5)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789) def
-
- /bhs barlen 5 mul 7 add array def
- /txt barlen 1 add array def
-
- % Put start character
- /enc encs 10 get def
- /heights enc length array def
- 0 1 enc length 1 sub {
- /j exch def
- heights j enc j 1 getinterval cvi height mul 5 div put
- } for
- bhs 0 heights putinterval % Put encoded digit into sbs
-
- /checksum 0 def
- 0 1 barlen 1 sub {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- /heights enc length array def
- 0 1 enc length 1 sub {
- /j exch def
- heights j enc j 1 getinterval cvi height mul 5 div put
- } for
- bhs i 5 mul 1 add heights putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 5 mul 1 add 3.312 mul textyoffset textfont textsize] put
- /checksum checksum indx add def % checksum+=indx
- } for
-
- % Put the checksum character
- /checksum 10 checksum 10 mod sub 10 mod def
- /enc encs checksum get def
- /heights enc length array def
- 0 1 enc length 1 sub {
- /j exch def
- heights j enc j 1 getinterval cvi height mul 5 div put
- } for
- bhs barlen 5 mul 1 add heights putinterval
-
- includecheckintext {
- txt barlen [barchars checksum 1 getinterval barlen 5 mul 1 add 3.312 mul textyoffset textfont textsize] put
- } {
- txt barlen [( ) barlen 5 mul 1 add 72 mul 25 div textyoffset textfont textsize] put
- } ifelse
-
- % Put end character
- /enc encs 11 get def
- /heights enc length array def
- 0 1 enc length 1 sub {
- /j exch def
- heights j enc j 1 getinterval cvi height mul 5 div put
- } for
- bhs barlen 5 mul 6 add heights putinterval
-
- % Return the arguments
- <<
- /ren //renlinear
- /bhs bhs
- /bbs [bhs length {0} repeat]
- /sbs [bhs length 1 sub {1.44 1.872} repeat 1.44]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/planet dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp planet 0.0 0 0 0
+%%BeginData: 44 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 05t`9D Im p:L_Q" 0Op
+s'_E-,f4DKCt)Ou "b#@< ,jr A7^ o fOu "b% Df0 Z-Eaa/ 7A moLsAW ei&
+Bl7EsF_#'*AU&;> AmoLs AWe i&G %# 3$ A79 Rk@ q]F`CE R4 tCia0N 1G<
+H[@r-9uARfCb@r# drFC f]= +D ,% uF( LLj 06C cMFC
+oH/FHOV,1G<i]G] \"@H = _m >O u"b 5AU &<BD e<U&A
+TWb(Ou"b)ASGdjF G`6^!! &0< D fBf 4D f0WZ Y:j s=EbTE(FEq h:P!+/J!Ko=
+'%<$3-Bl@m1H]kF A@;L!r P!+ / T5^e epOu SV6 P,4<rNWD;+ NHB2`AWf3'O
+tDh\P')pOOu%N5O tCcrF_ -^l I?IT YP%B dtO uY16E-,f4D KCt)Ou%NL<,
+Z_tBl@m1H]g15P" @<KAU &</D f0Y>F Cf]= AoD R/OtDhQ06C cMFE;/BAKZ)
++G]\"@H=`6mOu"b 5AU&< BDe<U &ATT& :AU &<BDe<U&AT X(gOu"b)ASG
+djF<G7.BkM+$OtV tS04J@1 Ch7K,@ UX:eD e*F B@Wl0rBk1X oARfCb@r$FI
+!KsF1P#RT#@UX:nAT!;3P&4Z:Ebo<)L^fMaOp$+b@WuO*E%Z*G@;]Xu6=FCuASu.&BT>)Q;c$C
+8:eX/M78tCHF`VXI@V$Z:0d(CT+>GYpA8,[jFE8R9G[kQ4A8,po+Cf(r@r!2tBkM.%0/%?SBld
+isEcQ)=P!=AX<+99V@rGmhH]g@E0Tp%25);4^:m,jG04K->E,[FKCgh3mF@'DH6YKnK@:OCjEf
+MDF;c$C8:eX/M78tCHF`VXI@rH7,@;0U%Df0B:+Co2!BlnDL061K8F(Jp'Ec5u]5CJ\oI?I/T@
+UX:eBOPq&NX@Hp1,CaE2E*TUOu"b$BOt[hF*2>U!0T-o!/LYb@<-0qDMS=VWI$:4P!5$b04S[,
+@r$..D'3>%ARfLsF_r71@<,jrA7ZltP"UTbP,XTFOu%NL82"IdARfLsF_upA@q]F`CNFW8L^K;
+[P,X6EP%p.9G%#3$A79Rk@q]F`CO715@<,jrA7Zlm@<-0qDN[Y%@<,jk@<-E3@q]F`CNFW8P"U
+sTHS8iPBlJ#DE,8s#ATU7IA4($A@r"JHB5)IJ.S4MfDfTl0@rrhn;c$C8:eX/M78tC>BOt[h+C
+o2!BlkJ:Ec6,8A7]:)061K8F(Jp'Ec5u]5CJ\o04J@1@rGmh+C\c"@rGmhL]CmmEbo<)P"_#pI
+?IP_ASu"!+Bsj01,:^E23%ht2)R-ENWh9t1,UhI"Z8.m1,Y'q2)7$H16)Mq1,UgENWh9q1,UqL
+"Yqqm2):0q1,UpE23%hq2)7$HNWD"t!B"/G1G<3NF!+q#Ebo<)L]rrXL^0(DOpR:-06DG\+C\c
+"Ch7L?!KmJH$'I(tASu!#ASu"!L^K;<Ou"b)ASGdjFE8R9DI\i=OpR:-L]E53ASu"@@Yb&JWI$
+:5P!5$bBOtmjBQS;<C*7)*@j#NB!Kp->/8/U/B4uCMCkr7X2Ni<5P"9%qF,0g0ASGdjFE<UjL]
+E53@UX:nAT!;)P,Wd]Bp(ZC1G<<W@j#?#@ric%@<,jrA7ZltP"UTbP,XU;Ou"b)ASGdjFE8R9D
+I\i=OpR:-L]E53ASu"@@Yb&JWI$:5P!5$bBOtmjBQS;<C*7)*@j#NB!Kp->/8/U/B4uCMCkr7X
+2Ni<5P"9%qF!,1Q"d3\X!KmIsASGdjFE<UjFEhmMBcpV&@UX:eDe*E%BnueQ9PK:dP&,pTOo^G
+*;tnV$Cij65FEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'DD<82"Ol@j#?#@ric&BOt[hF*2
+>_99M(aBOtmjBQS;<ASu"@@Zh%\1Pc$e!G-.YP%'4JP,Wd]C6CcD1MC?6B4uC.+DN$1DIXf(L]
+NZ4Ot:9XBkM+$P&,pXOuAJJI?I-1BQG;*@<-0qDMSIZCkr+T!GH%YB4uC.P'LbZ@r-9uARfCb@
+r#drFCf]=HQ[ETF<G%$Ebo<)+Bost@<,jk@<-E3@q]F`CNFW8L]NZ4@UX:nAT!;-P&,pTOo^G*
+;tnV$Cij65FEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'DD%FEhmM@UX:nASrVpNWC83@<-0
+qDMSIZCkr+T!Jj:0Ckrsl2KWMTFEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'DD<<A.p$@j#
+?#@rmG6P"Uro05+p2B4uC.+D#G#P%'R\Ou%moL]M()A!1;W!KsF/05?Y6Ou$c_BkM+$F!,3?AS
+u!#C5;nR9Tgr?ASGdjFHUHr"d1d,G^Y`G@VBg*@UX:nAT!;-P&,pYOo]6-BkM+$F-:f24>1_dD
+D*Y`ASu<uDIm6s04JU9+C]#*04JC3+BostBQK>GH\_ZMP(R$nF(025>9IBgF-:!g!KsF/MEeUJ
+m#"$rS[*[,K8Mn';=%R2Bl7EsF_#'*AU&<D06DG\+EVjMI?IP_DfBe@DfBf4Df0V=5!C*"Df0Z
+-Eaa0TE%`kbASu<uDIm6sP#RT)I?G)'1G<]`@;]XuOuSV806M%_@rEuAATDg:@Wc^5Df.1:GA2
+#8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,-DH]iMmATVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/planet 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER planet--
% --BEGIN ENCODER royalmail--
-% --DESC: Royal Mail 4 State Customer Code (RM4SCC)
+% --REQUIRES preamble raiseerror renlinear--
+% --DESC: Royal Mail 4 State Customer Code
% --EXAM: LE28HS9Z
-% --EXOP: includetext includecheckintext barcolor=FF0000
+% --EXOP: includetext barcolor=FF0000
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/royalmail {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /includecheckintext false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 0.175 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Create an array containing the character mappings
- /encs
- [ (3300) (2211) (2301) (2310) (3201) (3210)
- (1122) (0033) (0123) (0132) (1023) (1032)
- (1302) (0213) (0303) (0312) (1203) (1212)
- (1320) (0231) (0321) (0330) (1221) (1230)
- (3102) (2013) (2103) (2112) (3003) (3012)
- (3120) (2031) (2121) (2130) (3021) (3030)
- (2) (3)
- ] def
-
- % Create a string of the available characters
- /barchars (ZUVWXY501234B6789AHCDEFGNIJKLMTOPQRS) def
-
- /barlen barcode length def
- /encstr barlen 4 mul 6 add string def
- /txt barlen 1 add array def
-
- % Put start character
- encstr 0 encs 36 get putinterval
-
- /checksumrow 0 def
- /checksumcol 0 def
- 0 1 barlen 1 sub {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- encstr i 4 mul 1 add enc putinterval
- txt i [barcode i 1 getinterval i 4 mul 1 add 3.312 mul textyoffset textfont textsize] put
- /checksumrow checksumrow indx 6 idiv add def
- /checksumcol checksumcol indx 6 mod add def
- } for
-
- % Put the checksum character
- /checksum checksumrow 6 mod 6 mul checksumcol 6 mod add def
- /enc encs checksum get def
- encstr barlen 4 mul 1 add enc putinterval
- includecheckintext {
- txt barlen [barchars checksum 1 getinterval barlen 4 mul 1 add 3.312 mul textyoffset textfont textsize] put
- } {
- txt barlen [( ) barlen 4 mul 1 add 3.312 mul textyoffset textfont textsize] put
- } ifelse
-
- % Put end character
- encstr barlen 4 mul 5 add encs 37 get putinterval
-
- /bbs encstr length array def
- /bhs encstr length array def
- 0 1 encstr length 1 sub {
- /i exch def
- /enc encstr i 1 getinterval def
- enc (0) eq {
- bbs i 3 height mul 8 div put
- bhs i 2 height mul 8 div put
- } if
- enc (1) eq {
- bbs i 0 height mul 8 div put
- bhs i 5 height mul 8 div put
- } if
- enc (2) eq {
- bbs i 3 height mul 8 div put
- bhs i 5 height mul 8 div put
- } if
- enc (3) eq {
- bbs i 0 height mul 8 div put
- bhs i 8 height mul 8 div put
- } if
- } for
-
- % Return the arguments
- <<
- /ren //renlinear
- /bbs bbs
- /bhs bhs
- /sbs [bhs length 1 sub {1.44 1.872} repeat 1.44]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/royalmail dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp royalmail 0.0 0 0 0
+%%BeginData: 48 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 061uV@ ;K dhBl&- P'T
+t>:%52X=FD5Z2F- 8_M1G <3G Eas # uAW f6? 1G< 9WDKKE 0@ <Wi+@; L!r
+Ou"b*DI[L*A7]jo G]Y'? @;L !rO u" b7 @;K Xg@ <?'jBO t[ h+D,%u F(L
+Lj055<6Cis9"@q] F`CM @[. AU &; >Am oLs AWe i&FC
+f]=AoDR/OiNV@06 CcMF E ;/ BA V^\ V1G <i]G ]\4LA
+nH*qFGTaU1G<EQB kM+$ME WgP 1 QjP 4E -,f4 DKC uE06;5UBl7 R*H#R>X4aVt
+cOu8C3DfBf4Df0W CP,i2' Cia 0 N4aW >WI? IQm 30Ia6V33Qn !BlU*FE2M8P
+!+/T/Wr;\FcnqO1 OXV5/T c#U AWei tP#Z pnA We*t3A5;iF D5Z2F-8_M1O
+YEcDfBf4Df0WCOu %NL8M >0sG ][P9D KI"C AU& </Df0Z[/Wq nCFCf]=F(or
+3+EV1>FE;/BAWe^ 01G<i ]G]\4 LAnH* qF< G[:G]\4LAn H*qFHS;?1G<
+EQBkM+$+D>>#B4u CM09S+E @UX:eB OPq&N [.e .<``C+2)$a ?1GhEV2`Nf`
+84,d67Rp3F8kViP<)6=f;H&`704S[(Ectl-F,2*)23KbO!/LZ3,C<p6@<-O"Cibb'OuQoZEarc
+kEc[C-L]NZ4P!5%RI?I-W!/LYb@<,jrA7^p5L]N[<HX^E(@rGmhP!4[&P"]A!@<-O"Cibb'P$j
+GlHS8iPBlJ#DEc653Ci*TpCdMQ@6YKnK@:OCjEfMqR9f,d96Qg5gF*&O7Df0Z*Bl5&3DJXS@@p
+s=jFCAu.Ch7^1ATDi7@;]TuA8,[jFE9)gEa`['AS#n&DfV"*I?IQXP"768@<-0qDBNCsEas#uA
+WgMG@;KXg@<?'jBOt[hH\_]cWI9q/Ou"b$BOt[hF*2>?Dg.!;Ou"b$BOt[hF*2>0Det40Ou%mo
+L]LsnEbo<)L]N[<HS9)r5*@]TBl7I++Cf(nEctl-F!+q#Eas#uAKY]C!Kp->99M(a@q]F`CNFW
+8Ec6.E@q]F`CNFW8Ec6.EBl7I+L^'#?Oo^_%04S[,@r$..D.@L#+Cf(r@r$..D.@L#+DG_(G_c
+QeC6AU\1OYEW04S[,@r$..D'3>%ARfLsF_u/;GDHHdC5<(WCh%-i@r$..D.@L#L^'#WOo^_%G%
+#3$A79Rk@q]F`CO715@<,jrA7Zlm@<-0qDN[Y%@<,jk@<-E3@q]F`CNFW8P"UsTHS8iPBlJ#DE
+c653Ci*TpCdMQ@6YL%@CIDlLBlo@]8T&$VEcP`$F<FIU1fHb/+Cf(r@r!2tBkM.%+E2@>G%kJu
+A1oTV@;0doATDg0EfrY8P#O)D@<,jrA7Zlm@<,jrA7^Ps@UX:nAT!Z)Ou%NL<%hg#@ribsNW_-
+o0JJLi1,:R=NW_*n0JSRj1,CX=NW_-n0JSRj1GU[=NW_'k1,=jm0JG:=NW_$j1,Fpn0JP@=NW_
+'j1,Fpn0ebC=NW_'m0J\Xk0JY@=NW_$l0Je^l0JbF=NW_'l0Je^l0etI=NW_'m1,+^k0JYF=NW
+_$l1,4dl0JbL=NW_'l1,4dl0etO=NW_-m0J\Xk1,(F=NW_*l0Je^l1,1L=NW_-l0Je^l1GCO=N
+W_-m1,+^k1,(L=NW_*l1,4dl1,1R=NW_-l1,4dl1GCU=NWCnq!Ae#E1G<<W@rla4+C\c"Ch7L?
+"HmSW#*K"MV33VfFEhmM@UX:nAT!;)Oo^^POu$Ze@rla4L]D"(@rmGOP"Us`L]E53@UX:nAT!;
+)P,Wd]Bp(ZC1G<H[A9]5,BOPq)@;L!-@UX:eDe*E%BnueQ9Ti&31M(H6F*)FFBnunTCkr+T!G-
+.YF!,17A9a81P'M.oF<G9?>9IB`Eas#uAKY]C!Kp,jL]ilWL]NY>MEk,7c]W*dAU&<BDe<U&AT
+T&:AU&</Df0Y>FCf]=F(or3+C1.TI?I-4DI[a0EZeh"Ebo<)L]ilWL]NY>ASu"!+Cf(r@r$..D
+3@PTH"h/+Cis9"@q]F`CM@[.AU&<D+EVjM+C\c"Ch7K,>9IB`EarckEcW@5BOt[hF*2>U!Kp,c
+@<-0qDMSFYCkr+T!K'-@pWo"=FCf]=H#I;,F(KG9FCf]=AoDR/+EV1>FE;/BAKY9AG^Xp\G]Y'
+;@<-0qDBN/D!?bi[Ebo<)L]ilWL]NY>MEk,7c]W*dAU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(o
+r3+C1.TI?ITADI[a0EZeh"Ebo<)L]ilWL]rqBASu"!LaA3WP'J]i@WNZ'DI[a0Efsmp$'I(t@V
+Bg*ASu"!FE3OROpR:-L]E53ASu"!FE3ORL]N[<HS9)r5*@]TASu!#ASu"!FE/L<L]NZ4Ou$Ze@
+u^RDP!+/$@WNZ+L]_=%BkM+$P&,p[OuAJJ@VBg*Bnuh(ASGdjFHUHr#a.*/G^Y`SASu"<!ATa#
+HX^H*+DHW3BOtmjBQTDRL^9/%P'CGLF!,1Q"__I]B4uCMCkr@[2Ni<5P#Q"1@u^RFP!+/$@WNZ
++L]_=%BkM+$P&,p[OuAJJ@VBg*Bnuq+ASGdjFHUHr#a.*/G^Y`SASu"<!Afm%HX^H*+DHW3BOt
+mjBQTDRL^9/%P'CGLF!,1Q#\[d`B4uCMCkr@[2Ni<5P#Qjm83B!fEb0,A061WACh[cu@<+#1@W
+NZ$@WO23BQG;*BQGhJ@WNYr+C]#*P%'4JP,Wec5IaSWMEgR#Z@.mgMEeUJls1`JDI[L*A7]joG
+]\9cFEhmMFEhnUP#O)QE-*4@E-,f4DK?pa4s4BSDKKE0@<[lR0/%?WDJX$)ARTVB<0B7iOq*X2
+061uV@;KdhBl&qlP%64gCG'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5G
+bFDtYuCM@[!P.H"'F`V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/royalmail 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER royalmail--
% --BEGIN ENCODER auspost--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: AusPost 4 State Customer Code
% --EXAM: 5956439111ABA 9
% --EXOP: includetext custinfoenc=character
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/auspost {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 0.175 def
- /custinfoenc (character) def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Create an array containing the character mappings
- /encs
- [ (000) (001) (002) (010) (011) (012) (020) (021)
- (022) (100) (101) (102) (110) (111) (112) (120)
- (121) (122) (200) (201) (202) (210) (211) (212)
- (220) (221) (222) (300) (301) (302) (310) (311)
- (312) (320) (321) (322) (023) (030) (031) (032)
- (033) (103) (113) (123) (130) (131) (132) (133)
- (203) (213) (223) (230) (231) (232) (233) (303)
- (313) (323) (330) (331) (332) (333) (003) (013)
- (00) (01) (02) (10) (11) (12) (20) (21) (22) (30)
- (13) (3)
- ] def
-
- % Create a string of the available characters
- /barchars (ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz #) def
-
- /barlen barcode length def
- barcode 0 2 getinterval (11) eq {37} if
- barcode 0 2 getinterval (45) eq {37} if
- barcode 0 2 getinterval (59) eq {52} if
- barcode 0 2 getinterval (62) eq {67} if
- /encstr exch string def
- /txt barlen 2 sub array def
-
- % Put start character
- encstr 0 encs 74 get putinterval
-
- % Encode the FCC
- 0 1 1 {
- /i exch def
- encs barcode i 1 getinterval cvi 64 add get
- encstr i 2 mul 2 add 3 2 roll putinterval
- } for
-
- % Encode the DPID
- 2 1 9 {
- /i exch def
- encs barcode i 1 getinterval cvi 64 add get
- encstr i 2 mul 2 add 3 2 roll putinterval
- txt i 2 sub [barcode i 1 getinterval i 2 sub 2 mul 6 add 3.312 mul textyoffset textfont textsize] put
- } for
-
- % Encode the customer information
- custinfoenc (numeric) eq {
- 0 1 barlen 11 sub {
- /i exch def
- encs barcode i 10 add 1 getinterval cvi 64 add get
- encstr i 2 mul 22 add 3 2 roll putinterval
- txt i 8 add [barcode i 10 add 1 getinterval i 2 mul 22 add 3.312 mul textyoffset textfont textsize] put
- } for
- /ciflen barlen 10 sub 2 mul def
- } {
- 0 1 barlen 11 sub {
- /i exch def
- barcode i 10 add 1 getinterval barchars exch search
- pop
- length /indx exch def
- pop pop
- /enc encs indx get def
- encstr i 3 mul 22 add enc putinterval
- txt i 8 add [barcode i 10 add 1 getinterval i 3 mul 22 add 3.312 mul textyoffset textfont textsize] put
- } for
- /ciflen barlen 10 sub 3 mul def
- } ifelse
-
- % Add any filler characters
- 22 ciflen add 1 encstr length 14 sub {
- encstr exch encs 75 get putinterval
- } for
-
- % Create the 64x64 Reed-Solomon table
- /rstable 64 64 mul array def
- rstable 0 [ 64 {0} repeat ] putinterval
- rstable 64 [ 0 1 63 {} for ] putinterval
- /prev 1 def
- 64 {
- /next prev 1 bitshift def
- next 64 and 0 ne {
- /next next 67 xor def
- } if
- 0 1 63 {
- /j exch def
- /nextcell {rstable 64 next mul j add} def
- nextcell rstable 64 prev mul j add get 1 bitshift put
- nextcell get 64 and 0 ne {
- nextcell nextcell get 67 xor put
- } if
- } for
- /prev next def
- } repeat
-
- % Calculate the Reed-Solomon codes for triples
- /rscodes encstr length 16 sub 3 idiv 4 add array def
- rscodes 0 [ 4 {0} repeat ] putinterval
- 2 3 encstr length 16 sub {
- /i exch def
- rscodes rscodes length i 2 sub 3 idiv sub 1 sub
- encstr i 1 getinterval cvi 16 mul
- encstr i 1 add 1 getinterval cvi 4 mul add
- encstr i 2 add 1 getinterval cvi add
- put
- } for
- rscodes length 5 sub -1 0 {
- /i exch def
- 0 1 4 {
- /j exch def
- rscodes i j add rscodes i j add get
- rstable 64 [48 17 29 30 1] j get mul rscodes i 4 add get add get
- xor put
- } for
- } for
- /checkcode (000000000000) 12 string copy def
- 0 1 3 {
- /i exch def
- /enc rscodes 3 i sub get 4 3 string cvrs def
- checkcode i 3 mul 3 enc length sub add enc putinterval
- } for
-
- % Put checkcode and end characters
- encstr encstr length 14 sub checkcode putinterval
- encstr encstr length 2 sub encs 74 get putinterval
-
- /bbs encstr length array def
- /bhs encstr length array def
- 0 1 encstr length 1 sub {
- /i exch def
- /enc encstr i 1 getinterval def
- enc (0) eq {
- bbs i 0 height mul 8 div put
- bhs i 8 height mul 8 div put
- } if
- enc (1) eq {
- bbs i 3 height mul 8 div put
- bhs i 5 height mul 8 div put
- } if
- enc (2) eq {
- bbs i 0 height mul 8 div put
- bhs i 5 height mul 8 div put
- } if
- enc (3) eq {
- bbs i 3 height mul 8 div put
- bhs i 2 height mul 8 div put
- } if
- } for
-
- % Return the arguments
- <<
- /ren //renlinear
- /bbs bbs
- /bhs bhs
- /sbs [bhs length 1 sub {1.44 1.872} repeat 1.44]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/auspost dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp auspost 0.0 0 0 0
+%%BeginData: 59 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04B!EE ,T f>H\`B !23
+JD%DfBf4Df0WZ5* @]T@U X:e De* F B5* @]T A8c @-A9)+ &+ D,%uF( LLj
+055<6Cis9"FCf]= +D,%u F(L Lj0 6C cM FCo H/F HOV,1G <i ]G]\"@ H=_
+m>Ou"b5AU&<BDe< U&AT Wb( Ou "b )AS Gdj FG` 7<1G
+b1M04T-GFD5W)De 3frN X 93 /@ <,d dFC fKU1 N.5SB
+l@m1P-6N[FE2)5B 68E<AW f3' L ]NY rO pu>K FD5 Z2F*j(NAmo LsAWf3'P!FG
+Y<0B5(@ZmRN0oc8 tP)XR( F_- _ !H]f tD5* C&O 5*@^MH]ft& EckrV1OYEdI
+?J0)*g/N:DfBf4D f0WZ5* @^M P#Q@ =FD5 Z2F *j'+I?I/TF Cf]=AoDR/+E
+V1>FCoH/FHS5=1G <i]G] \"@H =\4@A U&<< BmO ?R09S+EFCf ]=H#I;,F(KG
+9FCf]=H#I;,F(KH V09S+ EBOtm jBQPA 1AS GdjFHS;?1G <<W@ribsNWU
+sh0TH5h0JSRi0JG 8B"#)G` NWUsi0 oc>i0 f"a k0JY>B"#)J bNWUsj16)Gk
+0JJLh0eb>B"#2JbNWV!j0TH5i0en[j0ekGD"#2PbNWV!k0oc>j1,=jl1,(DB"#;PbNWV$j16)G
+l0eeUi1,1MD"#;SdNWV$l0TH5j1,4dk1,:VF"#DVbNWV'k0oc>l0J\Xj1GLSD"#DYdNWV'l16)
+Gm1,+^j1GU\F"#D\fNWUsj1QDPk1GFgk0JbGD"#)MdNWUsk1QDPl0Je^k0ekJE"#2PeNWV!l0T
+H5i1GOml0f(SF"#2SfNWV$j1QDPm0f+gl1,:YG"#;YdNWV$m0oc>k1GXsm1,C_H"#DVeNWV'l1
+QDPn1,Fpm1G^_F"#D_fNWV'n16)Gm1Gb$n0JG;C"#)GcNWLmgNWLmhNWLmiNWLphNWLpiNWLpj
+NWLsiNWLsjNWLskNWM!jNWLpkNWCqAOu"b#@<,jk@<-FL5X@_(6q'R884cEH9MJ8X:f1+h<)lt
+#=BSf]0etOA2)[BQ3FQB,A7]@cBPD3sCi+'.E,fo>FEMbNG^4TX,Eai9@UX:nASrW"@<,jrA7^
+p5Ou$QUEas#uAV^>B!g66;!\lEm4aVu2I?IQ=@<,jrA7^PsL]W`5NWM$pP!+/J-%1qU@UX:eDe
+*F8!/L]>9TB033KcOPLbsOC<+99V@rGmhL]E54P"^l;2DUFYH\b%;P#O)GDI[a0EfrVLV33VfF
+EhmM@UX:nAT!;*P,XTNOu$Ze@rla4L]D"(@rmGuP"Us`L]E53L]MiUBp(ZC1M(H6F!+q#Eas#u
+AKY]C!Kp->/;QQS!Kp)eDI[a0EZf(P!g7AU!g3S?",I#ALQZq2P":B1L]N;<HS9)r5*@^5DI[`
+1@UX:eDe*E%BnueQ9Tgr_5`u/294`!NF*)FFBnuhRCkr.U!Jgi6!g8>%H$":Q+DHW5P,VY.@UX
+:eDe*E%BnueQ9PK:aP,X6=P&,pYOo^G*;tnV$Cij65FEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=
+\4)P'DD<87Qd`FD5W)De3frNX'HED.Ra%A!0!%L]E53@UX:nAT!;3P,Wd]Bp(ZC1M(H6F!+q#E
+as#uAKY]C$BbFG!Kp->/;QQS!Kp)eDI[a0EZf(P!g7AU(6S]S",I#ALQZq)G]Y'BL^9.E>9IB`
+Eas#uAKY]C$BbFG!Kp,jL]W`UL_c-SMEk,7c]W*dAU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or
+3+C1.TI?I,S@qfOkASrW"@<-0qDMSX_WJCV=Cm$T&H\_ZX!FfJXCh7L?$^.K9056S5Ou$QUEas
+#uAKY]C$BbFG!Kp,c@<,jk@<-FP5*CngFcp2eBl7I+P!5$bP')q104f$2+D#G#F!,17A9a81Ou
+$Ze@rla4+DHW6P&,piOo]-3A!2+ZG]Y'BL^9.E>9IB`Eas#uAKY]C$BbFG!Kp,jL]`fVL_c-SM
+Ek,7c]W*dAU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C1.TI?I,S@qfOkASrW"@<-0qDMSX_
+WJCY>Cm$T&P#[;R@qfOkAT!Y3L]M()@rla4P%'4WP,We>DI[a0EfrUtDI[aD99Mr2H$tiH062,
+U@:F%aLd6b]P&-9fOu%-"FCAWpAV^=jLd6<C!.C#_?'9JRF*(i"Ch8Df>DN98!JiseI?I-,P'J
+^"Eb0EM!Ko6p5^P/%AU&;>E,oN5L]NYLOu$ueG]\a,Op$R@P&5P!DIn'7+Dtb8FGN;I_3-U&P#
+R5;L]N;rHS9,s5*@]TDIn'7@qBImHQ[?MFCAWpAV`ThAU&<[Chf+6I?HC(AU&<,ASc0*EcZ>2@
+VfV35]CaTG*6ZVOo^_=L]NYLP'CkUG][G,Ci#8-Ld7++L]ETTHZ!D>FCSluC`mV,G][G,Ci#8-
+LdR?AP'DD<<.0p#05trCFs([6G]]*)I?K49EcY`/A7]g)ASu"!FE3ORL_,`KL]`f<L]ikAOpR:
+-EcY`/A7]h<!*b6^H\_ZMP(R&'H&)NX"(c@[F*)Gc@YbSYWI$:4P!5$bEcY`/A7]g)EcY`/A7]
+hF@VLW"P,X6>P#@IBL]N[<ASu"!FE/L<L]NZ4Ot;D#P&+]I@rla4+DHW4Oo^@>P"_#iL]ilWOo
+]-3@rla4+DHW5Oo^@>P"_#iOo^_jI?I-AF(9-!ATO#DL]rs@M#W82HS9)r5*@^X!/LZ3"FDe:P
+!5$bEcY`/A7]g)Bcq/R!HN6kDe*F#+DDs5Oo^_=EcZ>2@VfV35[0$uL_5F`L`V?Q>p*mF99O+3
+F(9-!ATJu.L]ikAP"Ur=P"UtSP'DD<8:?Xl04S[,@r#RmA7^c00JG170JG170JG17L^]HCOr9E
+=L]E53L]_uWBp(ZC1G<<W@j#f5@rGmhF,0p4P,XU;L]iM9P,4<qOu$T]ARfLcDe*E%BnukSCkr
+1)DI\i=P,XTFASu"@H$tiHASu"!FE/L8DI[a0Efsmf%[*f$BOt[h@rGmhP'LVV@rla4+D#G#F*
+)Gc@Yb)KWF]sWF,3GO99OQR@UaC$ASu"!FE3OROpR:-04JU9+D#G#F*)Gc@Zh%\1Pc$e!G-.YF
+*)Gc@Yb&JWI$:4P!5$b04f$2+D#G#F*)FFBnueQ9Th2CDI\\-0TnSG@UaC$Bnub&ASGdjFHUHr
+#a.*/G[b?-+DHW;BOtmjBQTDRL^9/%P'DD<<+TrWNWCkt4aUXIF!,1Q"))7[B4uCMCkr@[2Ni;
+oBQG;1L]qI'BkM+$P&,p[OuAJJI?IQ@DI\\-16OeI@UaC$Bnub&ASGdjFHUHr#a.*/G[b?-+DH
+W8BOtmjBQTDRL^9/%P'DD<<+TrWNWCr!4aUXIF!,1Q"))7[B4uCMCkr@[2Ni;oBQG;1L]V7$Bk
+M+$P&,p[OuAJJI?IQXP"7\t061WA0/%?WDJX$)ARTU4@UaC$@UaC3@VBg*@VBg9F(025>9IBgF
+-:!g!KsF/MEeUJm#"$rS[*[,K8Mn';=%R2Bl7EsF_#'*AU&<D06DG\+EVjMI?IP_DfBe@DfBf4
+Df0V=5!C*"Df0Z-Eaa0TE%`kbASu<uDIm6sP#RT)I?G)'1G<0ZF)Z&=FHSVHA1r(@/n8fPFCfK
+5H"(o:FDl%L@WuO*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+
+B\;u~>
+% uk.co.terryburton.bwipp/auspost 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER auspost--
% --BEGIN ENCODER kix--
-% --DESC: Royal Dutch TPG Post KIX 4-State Barcode
+% --REQUIRES preamble raiseerror renlinear--
+% --DESC: Royal Dutch TPG Post KIX
% --EXAM: 1231FZ13XHS
-% --EXOP: includetext includecheckintext
+% --EXOP: includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/kix {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /includecheckintext false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 0.175 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Create an array containing the character mappings
- /encs
- [ (0033) (0123) (0132) (1023) (1032) (1122)
- (0213) (0303) (0312) (1203) (1212) (1302)
- (0231) (0321) (0330) (1221) (1230) (1320)
- (2013) (2103) (2112) (3003) (3012) (3102)
- (2031) (2121) (2130) (3021) (3030) (3120)
- (2211) (2301) (2310) (3201) (3210) (3300)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ) def
-
- /barlen barcode length def
- /encstr barlen 4 mul string def
- /txt barlen array def
-
- 0 1 barlen 1 sub {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- encstr i 4 mul enc putinterval
- txt i [barcode i 1 getinterval i 4 mul 3.312 mul textyoffset textfont textsize] put
- } for
-
- /bbs encstr length array def
- /bhs encstr length array def
- 0 1 encstr length 1 sub {
- /i exch def
- /enc encstr i 1 getinterval def
- enc (0) eq {
- bbs i 3 height mul 8 div put
- bhs i 2 height mul 8 div put
- } if
- enc (1) eq {
- bbs i 0 height mul 8 div put
- bhs i 5 height mul 8 div put
- } if
- enc (2) eq {
- bbs i 3 height mul 8 div put
- bhs i 5 height mul 8 div put
- } if
- enc (3) eq {
- bbs i 0 height mul 8 div put
- bhs i 8 height mul 8 div put
- } if
- } for
-
- % Return the arguments
- <<
- /ren //renlinear
- /bbs bbs
- /bhs bhs
- /sbs [bhs length 1 sub {1.44 1.872} repeat 1.44]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/kix dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp kix 0.0 0 0 0
+%%BeginData: 35 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 05G9HH \` B!23JD %Df
+Bf4Df0WZ5*@]T@U X:eDe *FB 5*@ ] TA8 c@- A9) +&+D,% uF (LLj05 5<6
+Cis9"FCf]=+D,%u F(LLj 06C cMF Co H/ FHO V,1 G<i]G] \" @H=_m> Ou"
+b5AU&<BDe<U&ATW b(Ou "b) AS Gd jFG `7< 1Gb 1MDf
+Bf4Df0WZY:js=Eb TE(F E qh :P !+/ J!K o='% <$3-B
+l@m1H]kFA@;L!rP !+/T5^ eep O uSV 6P ,4<r NWD ;+NHB2`AWf 3'OtDh\P')p
+OOu%N5OtCcrF_-^ lI?ITY P%B d tOuY 16E- ,f4 DKCt)Ou%NL <,Z_tBl@m1H
+]g15P"@<KAU&</D f0Y>FC f]= AoDR /OtD hQ0 6CcMFE;/BA KZ)+G]\"@H=
+`6mOu"b5AU&<BDe <U&AT T&:A U&<BD e<U& ATX (gOu"b)ASG djF<G7.BkM+
+$OtVtS04f$2F!+\ I">DM c1QDS l0etP F"> DPd16)Jl0J YGE">MSd16)
+Jl0etME">DSc1QD Sl1GCVF ">DVd1 6)Jl1 ,(M E">MYd16)J l1GCSE">DSe
+0ocAj1GU\F">DVf0TH8j1,:SE">MYf0TH8j1GUYE">VYc1QDSn0ebDD">V\d16)Jn0JG;C">__
+d16)Jn0ebAC">VYe0ocAl0etJD">V\f0TH8l0JYAC">__f0TH8l0etGC">V_e0ocAl1GCPD">V
+bf0TH8l1,(GC">_ef0TH8l1GCLgOu"b#@<,jk@<-FL,VUr.1GgsI2`Nf`6:4.07Rp!@8kViP:/
+=\`;H$Op<``C+>*:Zp@q]:kG%#3.La8-@Ou%moL]N;VHXg_tEctl-F-8_M3+?<:@q]:kF-8_C!
+Kp->5*C/=P":B/L]LsnEas#uAWgMY!KsF/@UX:eDe*FB5)96&9OhaEEctl-F-8_M@$5JU04K->
+E,[FFBm;sQA4($=Ea`I"ATEeb91`5.D09oA+Cf>-FCAm$+E).6Gp$U*E+sE&C`mP*FED)7F!+n
+/A0>DsB5)I/0/%?SBldisEcQ)=P!=AX<.0p#04J@1Ch7K,@UX:eDe*FB@ZiN#ASu"!FE/L5@<-
+0qDMSFYCm(WX1G<ipF<G%$Ebo<)OpR:-L]E53@UX:nAT!;)P,Wd]Bp(ZC1G<H[A9]5,BOPq)@;
+L!-@UX:eDe*E%BnueQ9Ti&31M(H6F*)FFBnunTCh7KoF!,17A9a81P'M.oF<G9?>9IB`Eas#uA
+KY]C!Kp,jL]ilWMEk,7c]W*dAU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C1.TI?I,S@UaC$
+ASu"!FE3OROpR:-04JU9+D#G#F*)Gc@Zh%\1Pc$e!G-.YF*)Gc@Yb&JWI$:4P!5$b04f$2+D#G
+#F*)FFBnueQ9Th2CDI\\-0TnSG@UaC$Bnuk)ASGdjFHUHr#a.*/G[b?-+DHW5BOtmjBQTDRL^9
+/%P'DD<<+TrWNWCkt4aUXIF!,1Q!,,qXB4uCMCkr@[2Ni;oBQG;1L]qI'BkM+$P&,p[OuAJJI?
+IQ@DI\\-16OeI@UaC$Bnuk)ASGdjFHUHr#a.*/G[b?-+DHW8BOtmjBQTDRL^9/%P'DD<<+TrWN
+WCr!4aUXIF!,1Q!,,qXB4uCMCkr@[2Ni;oBQG;1L^7[*BkM+$P&,p[OuAJJI?IQXP"7\t061WA
+0/%?WDJX$)ARTU4@UaC$@UaC3@VBg*@VBg9F(025>9IBgF-:!g!KsF/MEeUJm#"$rS[*[,K8Mn
+';=%R2Bl7EsF_#'*AU&<D06DG\+EVjMI?IP_DfBe@DfBf4Df0V=5!C*"Df0Z-Eaa0TE%`kbASu
+<uDIm6sP#RT)I?G)'1G<NXG`k%LA1r(@/n8fPFCfK5H"(o:FDl%L@WuO*E$/\&Anc-oEb0<1F`
+Lu'P')pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/kix 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER kix--
% --BEGIN ENCODER japanpost--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Japan Post 4 State Customer Code
% --EXAM: 6540123789-A-K-Z
% --EXOP: includetext includecheckintext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/japanpost {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /includecheckintext false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 0.175 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Create an array containing the character mappings
- % 0123456789- C1C2C3C4C5C6C7C8 ST EN
- /encs
- [ (300) (330) (312) (132) (321) (303) (123) (231) (213) (033) (030)
- (120) (102) (210) (012) (201) (021) (003) (333)
- (31) (13)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ) def
- /barlen barcode length def
-
- /encstr 20 1 add 3 mul 4 add string def
- /digits 20 array def
- /txt barlen 1 add array def
-
- % Put start character
- encstr 0 encs 19 get putinterval
-
- /checksum 0 def
- /j 0 def /i 0 def
- 0 1 barlen 1 sub {
- /i exch def
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard match and post
- indx 11 ge indx 37 lt and { % Insert escape
- j 18 gt {exit} if % Should fit in 20 chars
- % 11-20: C1 (11)
- % 21-30: C2 (12)
- % 31-36: C3 (13)
- /digit indx 1 sub 10 idiv 10 add def
- encstr j 3 mul 2 add encs digit get putinterval
- /checksum checksum digit add def
- digits j digit put
- /j j 1 add def
- } if
- j 19 gt {exit} if % Should fit in 20 chars
- /digit 0 def
- indx 37 eq {
- /digit 14 def % space (C14)
- } if
- indx 11 ge indx 37 lt and {
- /digit indx 1 sub 10 mod def
- } if
- indx 11 lt {
- /digit indx def
- } if
- encstr j 3 mul 2 add encs digit get putinterval % space
- /checksum checksum digit add def
- digits j digit put
- txt i [barcode i 1 getinterval j 3 mul 2 add 3.312 mul textyoffset textfont textsize] put
- /j j 1 add def
- } for
-
- % Fill spaces (c14) at right end
- j 1 20 1 sub {
- /k exch def
- encstr k 3 mul 2 add encs 14 get putinterval
- /checksum checksum 14 add def
- digits k 14 put
- } for
-
- % Put the checksum character
- /checksum checksum 19 mod 19 exch sub def
- encstr 2 20 3 mul add encs checksum get putinterval
-
- % Put end character
- encstr 2 21 3 mul add encs 20 get putinterval
- /checkdigit ( ) def
- includecheckintext {
- /checkdigit barchars checksum 1 getinterval def
- } if
- txt i 1 add [ checkdigit 20 3 mul 2 add 3.312 mul textyoffset textfont textsize] put
-
- % Put end character
- encstr 20 1 add 3 mul 2 add encs 20 get putinterval
-
- /bbs 21 3 mul 4 add array def
- /bhs bbs length array def
- 0 1 bbs length 1 sub {
- /i exch def
- /enc encstr i 1 getinterval def
- /bunit 0 def
- /hunit 0 def
- enc (0) eq {
- /bunit 3 def
- /hunit 2 def
- } if
- enc (1) eq {
- /bunit 0 def
- /hunit 5 def
- } if
- enc (2) eq {
- /bunit 3 def
- /hunit 5 def
- } if
- enc (3) eq {
- /bunit 0 def
- /hunit 8 def
- } if
- bbs i bunit height mul 8 div put
- bhs i hunit height mul 8 div put
- } for
-
- % Return the arguments
- <<
- /ren //renlinear
- /bbs bbs
- /bhs bhs
- /sbs [bhs length 1 sub {1.44 1.872} repeat 1.44]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/japanpost dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp japanpost 0.0 0 0 0
+%%BeginData: 43 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 05=p7@ ;^ %&F*)b b'T
+t>:%52X=FD5Z2F- 8_M1G <3G Eas # uAW f6? 1G< 9WDKKE 0@ <Wi+@; L!r
+Ou"b*DI[L*A7]jo G]Y'? @;L !rO u" b* DI[ L*A 7]7aAR fL iDKKH7 F<G
+1(Cia0N1G<i]G][ P9DK M#] Ou "b 5AU &<< BmO ?H$B
+d1uFCf]=H#I;,F( KHLq 3 !N eB Otm jBQ T+q1 G^hM1
+N.5SBl@m1P-6N[F E2)5B6 8E< A Wf3 'L ]NYr Opu >KFD5Z2F*j (NAmoLsAWf3
+'P!FGY<0B5(@ZmR N0oc8t P)X R (F_- _!H] ftD 5*C&O5*@^M H]ft&EckrV1
+OYEdI?J0)*g/N:D fBf4Df 0WZ 5*@^ MP#Q @=F D5Z2F*j'+I ?I/TFCf]=Ao
+DR/+EV1>FCoH/FH S5=1G <i]G ]\"@H =\4@ AU& <<BmO?R09S +EFCf]=H#I;
+,F(KG9FCf]=H#I; ,F(KH V09S+ EBOtm jBQ PA1ASGdjFH S;?1G<<W@ri
+bsNWV'k0TH5k1GF gk1GLYF "#2SeN WV'm0 oc> l0Je^k0etP F"#;YeNWV$k
+1QDPk1Gb$n0JbDC"#2PbNWV!i16)Gl0eeUi0JP>C"#;PbNWUsj0oc>i0Je^k1G^hI!])Qk!\lK
+:Ou"b#@<,jk@<-FL,qq&/1GgsI2`NfL5sdq,77Kd<8P2WL9hnJ\;,U=l<E<1'=^$tE04J@1Ch7
+K,@UX:eDe*FB@ZiN#ASu"!FE30OL]NY>L]`fVL]ikAP,4<t04\d0BlnEP'Trcc1G<ipF<G%$Eb
+o<)L]NY>OpR:-ASu"!FE30;ASu"!L_GqEP'J]jBOt[hF*2>U!0T,kC5;kQ1G<Hu!0T-o!/LYb@
+<-0qDMS=VWI$:4P!5$b@UX:eDe*E%BnueQ9O_FN@q]:kF-8_MNKSFI@P;G5A9a8$Ou&8DP'(JV
+A9`n<P"KG+A9`nVP%Kj[HYS?LP#-Lg5^eep04\d0BlkJ3DIe!J!KsF<$Be;C$BbFQ1M(H6F*)F
+FC5;tTCkr.U!G-.YF!,"-B5)IN99OQR@q]F`CNFW8+Cf(r@r$..D'3A'B5)IN!Ko6LBkM.%F!,
+3?A8,[jFHUl%C*78I!KmJH1OYEcC5<Od:j\?jI?IP_A8,[jFGKp[1ML`;G_dZ/4aShmBkM.%L^
+oS(I?IQDDIe!J$^++rDIe!J-'Dl'"FDe4BkM.%+DG_(G_cB`WJCnEC6CB$P#Q.5A9`n<P%K%oA
+8,[jF<G:8A9a7nI?IQ@DI[a0EZf+Q"-RJV!g3RqDI[`1A8,[jFHT:[GqWZ@ARfLsF_r72BOt[h
+F*2=BA8,[jFHQZf1Lt34BlnD=C*7&$B5)ING]\1P+DDs&+C\c"@rGmh+DHW4P"]VH"-RJV!g3S
+A5Z@F'P&,5OG]\4LAnH*qF<G[:G][P9DKI"CAU&<<BmO>5?'9FcC*78I!KmJH1OYEWC5;nH'Sl
+dQWI$:6P!5$bASu"!FE/L>L]`fVL]W_?ASu"!L^oS@P'J]jBOt[hF*2=B@q]F`CNFW8L^oRKOu
+$W_B5)I/+DZcCP'DD<82"IdARfLsF_r72BOt[hF*2>U'9[*d'9YPBWKK&KDI[a0EejdQ'SljSC
+m"g1DI[`1@q]F`CNFW8P"Us`ASu"!FE30=L_Y^JP&-9^ASu"!L_Q"FP'J]jBOt[hA8,[jFH-AE
+Ou$fi@r-9uARfCb@r#drFCf]=HS8lBARfLdBkM.%+C\c"@q]:kF!+t+ARfLsF_up8P"_#pI?IQ
+OG]Y'BL]NY>>9IEhARfLdBkM.%L_PXIP&,pUOo^G*;tnV$Cij65FEqe:AohO*+EV1>FCoH/F<G
+[:G]\"@H=\4)P'CPU@rla4L_PXGOo^@@P&,pUOo]-3@rmG?P"Us`04JC3L_Y^JP&,pWOo^^POu
+"b#BQG;*@WR]AOpR:-L]E53@UaDA@Yb&JWI$:4P!5$b04f$2+D#G#F*)FFBnueQ9Th1b@WcR&F
+GKp[1G<EaDJ=3K!0T-LDI\\-0TnSG04K'ABlo.5Ou"b)F`(o8L]W_qI?IQ@DI\\-0p4\H04K'A
+Blo.2Ou"b)F`(o8L]rqtI?IQ@DI\\-16OeI04K'ABlo.5Ou"b)F`(o8L]rqtI?IQ@DI\\-1Qjn
+J04K'ABlo.2Ou"b)F`(o8L^9/"I?IQ=@WNZ++C]J2BlkJ2ASGdjFHUHr#a.*/G[b?-+DDs3F`(
+o8+D>>#B4uCMCkr@[2Ni<5P"7\t061WA0/%?WDJX$)ARTU4@UaC$@UaC3@VBg*@VBg9F(025>9
+IBgF-:!g!KsF/MEeUJm#"$rS[*[,K8Mn';=%R2Bl7EsF_#'*AU&<D06DG\+EVjMI?IP_DfBe@D
+fBf4Df0V=5!C*"Df0Z-Eaa0TE%`kbASu<uDIm6sP#RT)I?G)'1G<KOE+*X'Df^#`30If*F_`U>
+D_?-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP'(hWFDtY
+uCM@[!I?IP~>
+% uk.co.terryburton.bwipp/japanpost 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER japanpost--
% --BEGIN ENCODER msi--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: MSI Modified Plessey
% --EXAM: 0123456789
% --EXOP: includetext includecheck includecheckintext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/msi {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includecheck false def % Enable/disable checkdigit
- /includetext false def % Enable/disable text
- /includecheckintext false def
- /checktype (mod10) def
- /badmod11 false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Create an array containing the character mappings
- /encs
- [ (12121212) (12121221) (12122112) (12122121) (12211212)
- (12211221) (12212112) (12212121) (21121212) (21121221)
- (21) (121)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789) def
-
- /barlen barcode length def % Length of the code
- /txtlen barlen def
-
- /mod10 {
- /code exch def
- 0 0 code {48 sub exch 10 mul add exch} forall pop 2 mul
- 0 {1 index 10 mod add exch 10 idiv dup 0 eq {pop exit} if exch} loop
- 0 0 code {48 sub add exch} forall exch pop add
- 10 mod 10 exch sub 10 mod
- code length 1 add string dup 0 code putinterval dup code length 4 -1 roll 48 add put
- } bind def
-
- /mod11 {
- /code exch def
- code length 1 sub code {48 sub exch dup 1 sub exch 6 mod 2 add exch} forall pop
- 0 code length {3 1 roll mul add} repeat
- 11 mod 11 exch sub 11 mod
- dup 10 eq badmod11 and {
- pop code length 2 add string dup 0 code putinterval dup code length (10) putinterval
- } {
- code length 1 add string dup 0 code putinterval dup code length 4 -1 roll 48 add put
- } ifelse
- } bind def
-
- /ncrmod11 {
- /code exch def
- code length 1 sub code {48 sub exch dup 1 sub exch 8 mod 2 add exch} forall pop
- 0 code length {3 1 roll mul add} repeat
- 11 mod 11 exch sub 11 mod
- dup 10 eq badmod11 and {
- pop code length 2 add string dup 0 code putinterval dup code length (10) putinterval
- } {
- code length 1 add string dup 0 code putinterval dup code length 4 -1 roll 48 add put
- } ifelse
- } bind def
-
- % Calculate checksum
- includecheck {
- checktype (mod10) eq {barcode mod10} if
- checktype (mod1010) eq {barcode mod10 mod10} if
- checktype (mod11) eq {barcode mod11} if
- checktype (ncrmod11) eq {barcode ncrmod11} if
- checktype (mod1110) eq {barcode mod11 mod10} if
- checktype (ncrmod1110) eq {barcode ncrmod11 mod10} if
- /barcode exch def
- /barlen barcode length def
- includecheckintext {/txtlen barlen def} if
- } if
-
- /sbs barlen 8 mul 5 add string def
- /txt barlen array def
-
- % Put start character
- sbs 0 encs 10 get putinterval
-
- 0 1 barlen 1 sub {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- sbs i 8 mul 2 add enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 12 mul 3 add textyoffset textfont textsize] put
- } for
-
- % Put the end character
- sbs barlen 8 mul 2 add encs 11 get putinterval
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- includetext {
- /txt txt 0 txtlen getinterval
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/msi dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp msi 0.0 0 0 0
+%%BeginData: 43 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 05YcEH \` B!23JD %Df
+Bf4Df0WZ5*@]T@U X:eDe *FB 5*@ ] TA8 c@- A9) +&+D,% uF (LLj05 5<6
+Cis9"@q]F`CER4t Cia0N 1G< H[@ r- 9u ATV L.F <G1(Ci a0 N1G<H[ @r-
+9uARfCb@r#drFCf ]=+D ,%u F( LL j04 S[, @r$ 13E+
+P%5D/Wr>0Tn4F@U WeaD e (R W+ D,% uF( LLj0 6CcMF
+CoH/FHOV,1G<i]G ]\"@H= _m> O u"b 5A U&<B De< U&ATWb(Ou" b)ASGdjFGKs
+\1N.5SBl@m1P-6N [FE2)5 B68 E <AWf 3'L] NYr Opu>KFD5Z2 F*j(NAmoLsA
+Wf3'P!FGY<0B5(@ ZmRN0o c8t P)XR (F_- _!H ]ftD5*C&O5 *@^MH]ft&Ec
+krV1OYEdI?J0)*g /N:Df Bf4D f0WZ5 *@^M P#Q @=FD5Z2F*j '+I?I/TFCf]
+=AoDR/+EV1>FCoH /FHS5 =1G<i ]G]\" @H= \4@AU&<<Bm O?R09S+EFCf
+]=H#I;,F(KG9FCf ]=H#I;, F(KHV0 9S+EB Otm jBQPA1ASGd jFHS;?1G<<W
+@ribsNX.?p0etI=0f"ap0etI=0etL=NX.?p0etL=0f"ap0etI=1,1O=NX.?p1,1L=0f"ap0etL
+=0etL=NX.?p1,1O=0f"ap0etL=1,1O=NX.Bp0etI=0f"ap1,1L=0etL=NWLsjNWV!k0jTqu04J
+@1@q]:kF,gS]0etOA2)[BQ3Kc0O@UX:nASrW"@<,jrA7^p5Ou"b5G][b5DBNCsEbo<)Ou"b.De
+(RVHS8lIA7^ofOu%moL]Cq'A7^+D0TrDu5)9Q/Cm"g^5(/ScP')Q^P&,pSH\_]c=GR<IC6AU\5
+)9Q/;Na"q!0TKlP')pQI?IQm5(/T*L]E52@rGmhH\aA=WKI:F5(/ScP!5%OOo^@GP%od[P!5&.
+L^K;[@rGmhP%'4JOo^`BOuS6t@rGmhP'N3M@rGmhP%'4MM#WWnLbOtmP'DD<%[&V$D/Wr>0mbQ
+`De*FB5*@^3De*FB@Yb&JWFKjWAUB4eP,XU.OuS6uP,XU.L^'#WL]W_?P!4;W8Wn4P!+TqXAWg
+MLL]`G6P)#3:Oo]uoK89nuC5<7\5*Dn$$^,7f3/@p)4^qi1D/Wr>0p2ZdP'(8QA7^p5L]W_?P,
+4=$L]Cq'A7^pLOuQriA7^p5NWLphP'MJ&@rGmhP%'4JOo^`BOuS6t@rGmhP'N3M@rGmhP%'4MM
+#WWnLbOtmP'DD<<IL#?Ou"b/@rcF)A2,fc04Sp2AWf6?1Lk?6AWgMY!KsElDe*F+LbP!kP!5$g
+L]N[<P!4[-P%odSOo^_0I?I0bFbg$-De*FB@XEn5L]NZoP&-9^I?K5=$^,7\$^*]:WJCqFC6CQ
+4$BdP]@:X4nA2,g%"FH;S@rGmhP%'4KOo^`BOuS6t@rGmhP'N3M@rGmhP%'FQ0eec9I=#IBA7^
+p5L]NY>P,4=$L]Cq'A7^pLOuQriA7^p5L]iP6P)"iIOo^_jI?ITYOq*X2Bl7EsF_#&nBOt[hHQ
+Zg3ARfLtH#R>T"`80g0eebRHX^E(@rGmh+Dl%-0ee$=<+BTQ@r$13E+P%7D/Wr>0JP8E4aUXHE
+as#uAKYi.A2,b\D/Wr>0R]*`@q]F`CNOi@AW?q2De(RWP!+/$@<,jrA7Zm#De(RWI?IQ>BOt[h
+FEqh:NX0N4Ec#`*0enhSHX^E(@rGmh+Dt\0D/Wr>0n#3a@q]F`CNOi@AW@"4De(RW0eebRHX^E
+(@rGmh+Dl%-0ejefDe(RVI?IQ>BOt[hFEqh:NXBZ6Ec#`*0ekC:P!+/$@<,jrA7Zm$@rcF)A2,
+e]D/Wr>0R]*`04J@1@rGmhP!5$b04J@1Ch7K,@UX:eDe*FB@ZiN]DI[L*A7]7aARfLiDKKH7FF
+,Z_G][b5DBNCsEbo<)Ou%NL<.0p/06:TD+C\c"Ch7L?#a0"["d/nLV33VfFEhmM@UX:nAT!Y;O
+u%/gF,0g-DI[aD$Be&FH&)HV!FfJXCh7L?!KsF/056S5Ou$QUEas#uAKY]C!Kp,c@<,jk@<-FP
+5*CngFcp2eBl7I+P!5$bP')q104f$2+D#G#F!,17A9a81Ou%/gF!,1Q#a0"[!g3RqDI\iTFEhm
+MBcpV&@UX:eDe*E%BnueQ9PK:kP&,pVOo]Z9G]\4LAnH*qF<G[:G][P9DKI"CAU&<<BmO>5?'9
+G\P"9Y'F!+q#Ebo<)L^9/[L]W_?ASu"!L^TA=P'K/P061WA0/%?WDJX$)ARTU4F(025>9IurF*
+i]sP,Wkm8R3uYBQG;#+EM"5P%'4JOo^@?P#?X?ASGdjFFB=)>q]YrF!+[0F(03R@Yb&J!Jgf?;
+L=3"I?K4g+DG_'Cis9"FCf]=HS9JcF<G[MFGKp=G][b5DN[\AP#O)QE-*4@E-,f4DK?pa4s4BS
+DKKE0@<[lR0/%?WDJX$)ARTVB<0B7iOq*X205YcEOuSV806M%_@rEuAATDg:@Wc^5Df.1:GA2#
+8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,-DH]iMmATVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/msi 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER msi--
% --BEGIN ENCODER plessey--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Plessey UK
% --EXAM: 01234ABCD
% --EXOP: includetext includecheckintext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/plessey {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /includecheckintext false def
- /unidirectional false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Create an array containing the character mappings
- /encs
- [ (14141414) (32141414) (14321414) (32321414)
- (14143214) (32143214) (14323214) (32323214)
- (14141432) (32141432) (14321432) (32321432)
- (14143232) (32143232) (14323232) (32323232)
- (32321432) (541412323) (323)
- ] def
-
- % Create a string of the available characters
- /barchars (0123456789ABCDEF) def
-
- /barlen barcode length def % Length of the code
- unidirectional {
- /sbs barlen 8 mul 27 add string def
- } {
- /sbs barlen 8 mul 33 add string def
- } ifelse
- /txt barlen 2 add array def
- /checkbits barlen 4 mul 8 add array def
- checkbits barlen 4 mul [ 0 0 0 0 0 0 0 0 ] putinterval
-
- % Put start character
- sbs 0 encs 16 get putinterval
-
- 0 1 barlen 1 sub {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- sbs i 8 mul 8 add enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 20 mul 20 add textyoffset textfont textsize] put
- checkbits i 4 mul [
- indx 1 and
- indx -1 bitshift 1 and
- indx -2 bitshift 1 and
- indx -3 bitshift
- ] putinterval
- } for
-
- % Checksum is last 8 bits of a CRC using a salt
- /checksalt [ 1 1 1 1 0 1 0 0 1 ] def
- 0 1 barlen 4 mul 1 sub {
- /i exch def
- checkbits i get 1 eq {
- 0 1 8 {
- /j exch def
- checkbits i j add checkbits i j add get checksalt j get xor put
- } for
- } if
- } for
-
- % Calculate the value of the checksum digits
- /checkval 0 def
- 0 1 7 {
- /i exch def
- /checkval checkval 2 i exp cvi checkbits barlen 4 mul i add get mul add def
- } for
-
- % Put the checksum characters
- /checksum1 checkval 15 and def
- /checksum2 checkval -4 bitshift def
- sbs barlen 8 mul 8 add encs checksum1 get putinterval
- sbs barlen 8 mul 16 add encs checksum2 get putinterval
- includecheckintext {
- txt barlen [barchars checksum1 1 getinterval barlen 20 mul 20 add textyoffset textfont textsize] put
- txt barlen 1 add [barchars checksum2 1 getinterval barlen 1 add 20 mul 20 add textyoffset textfont textsize] put
- } {
- txt barlen [( ) barlen 20 mul 20 add textyoffset textfont textsize] put
- txt barlen 1 add [( ) barlen 1 add 20 mul 20 add textyoffset textfont textsize] put
- } ifelse
-
- % Put end character
- unidirectional {
- sbs barlen 8 mul 24 add encs 18 get putinterval
- } {
- sbs barlen 8 mul 24 add encs 17 get putinterval
- } ifelse
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/plessey dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp plessey 0.0 0 0 0
+%%BeginData: 51 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 05t`=F )t o<H\`B !23
+JD%DfBf4Df0WZ5* @]T@U X:e De* F B5* @]T A8c @-A9)+ &+ D,%uF( LLj
+055<6Cis9"FCf]= +D,%u F(L Lj0 6U c? Bk1 XoA RfCb@r !3 !@;L!r Ou"
+b*DI[L*A7]7aARf LiDK KH7 F< G1 (Ci a0N 1G< lgBk
+1puARfgrDf0!"+D ,%uF ( LL j0 6Cc MFC oH/F HOV,1
+G<i]G]\"@H=_m>O u"b5AU &<B D e<U &A TWb( Ou" b)ASGdjFGK s\1N.5SBl@m
+1P-6N[FE2)5B68E <AWf3' L]N Y rOpu >KFD 5Z2 F*j(NAmoLs AWf3'P!FGY<
+0B5(@ZmRN0oc8tP )XR(F_ -_! H]ft D5*C &O5 *@^MH]ft&E ckrV1OYEdI?
+J0)*g/N:DfBf4Df 0WZ5* @^MP #Q@=F D5Z2 F*j '+I?I/TFCf ]=AoDR/+EV1
+>FCoH/FHS5=1G<i ]G]\" @H=\4 @AU&< <Bm O?R09S+EFC f]=H#I;,F(K
+G9FCf]=H#I;,F(K HV09S+E BOtmjB QPA1A SGd jFHS;?1G<3 GEarckEc[6P
+0JP==1c70M3&s8k6UX@4Ou"b$BOPq)@;L"@&<\o61Pc$e!Jh85@q]:kG%#3.P!5$g@UX:eBOPq
+&P!4[&P"_$&P'DD<8;I8%!FfJX@rGmhP%'4JP,We;@<,jrA7^ofL]NZ4@q]:kG%#3.P!5%:P&P
+b$@WuO*E%Z*GATMp(GsYqM6YKnK@:OCjEfN+UCh7[/AU,D8F`VXI@rH7,@;0U%Df0B:+Co2!Bl
+nD=@;]TuCh7^1ATDi75p/K:6Qec>73G&Q061K8F(Jp'Ec5u]5CJ\oI?I,S@UX:nASrW"@<,jrA
+7^p5G%#3$A79Rk@q]F`CO:j=P,Wkm<0B$j@q]F`CLV""F!+q#Ebo<)L]ilWL^9.EOpR:-@q]F`
+CLV""F!+q#Ebo<)L]ilW>DN98!/LW2!/LW2!/LW2!*tb5L]E53@UX:nAT!;)P,Wd]Bp(ZC1G<H
+[A9]5,BOPq)@;L!-@UX:eDe*E%BnueQ9Ti&31Lk*0@r#OfFE8R=L]ilW>9IWtA9`n2Op#K:A9`
+q1Oq3?LOp#K:A9`q0Oq3?LOp#K:A9`q/Oq1i]H$tiH04S[,@r$-oCige(L]N;4L]N;4L]E53L]
+E52L]LeE1Pc$e!FfJXCh7L?"HmSW!KsF/056S5Ou$T]ARfLbBlnD=Bp),F!KoTmL]E53L^8>\C
+6CcD1Lk*0@r#OfFE8R=+DR&?@q]F`CLV""F!,0>C6AU\94MXH@r$-oCige7P"UtSP'DD<8:?Y#
+I?I,S@q]F`CNa-&L]ESoL]E53L^/8[Bp(ZC1G<6OARfM!@;I&rBOt[hG%#3C!bicgG]8fs@q]F
+`CLV""F!+q#Ebo<)L]ilWBp&L[99O+S!Ko6eP"769BOt[hF*2=S+Cf(r@r$6rCkrUb"HkPo@q]
+F`CNFW81*C(?ARfM!@;LbtOq3^3G%#3$A79Rk@q]F`CO715@<,jrA7Zlm@<-0qDN[Y%@<,jk@<
+-E3@q]F`CNFW80p51mD.6po@rGmh+C\c"Ch7L?!KmJH94D=M@q]:kF!+t+ARfLsF_rms99O.TE
+dKHKGA2#8/oYW<F)to<6=FClBOt[h6tp:JFE<Hi8T&$VEcP`$F<FCrATMp(Gp$U1ARfKuA8,[j
+FE8RDEc6,8A7]:)061K8F(Jp'Ec5u]5CJ\o04J@1@rGmh+C\c"@rGmhL]CmmEbo<)P"_#pI?IP
+_ASu"!+Bsj30f1UA0f1UANX.Er0f1UA0f4mr0f1[A0f1UANX.Er1GU[A0f4mr0f1UA1GU[ANX.
+Er0f1[A0f4mr0f1[A1GU[ANX.Er1GUaA0f4mr0f1UA0f1[ANX.Er0f1UA1GXsr0f1[A0f1[ANX
+.Er1GU[A1GXsr0f1UA1GUaANX.Er0f1[A1GXsr0f1[A1GUaANX.Er1GUaA1GXsr1GUaA0f1[AN
+X7R"0f1U?1GUbH"#D\g?'6usF(025@UX:nAT!;0P&,8YBk1puARfgrDf0!"H\`VhH\`hnP#[YG
+P,4<t06DG\+C\c"Ch7L?!g3SI$'I)c@WR>*ASu"!L_,_BP'Mi`L]LsnEbo<)L]N[<HS9)r5*@]
+TBl7I++Cf(nEctl-F!+q#Eas#uAKY]C!Kp->99M)P@WNZ+L^9/[L^9.EASu"!+DG_(G`k^_H$"
+:Q+DDs&+C\c"@rGmh+DHW4P"]SG'U!9g'TrK=AU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C
+1.TI?I-B@WNZ$@<-0qDMSR]Ckr@[!G-.YF!+t+ARfLsF_rjr99ORA@WNZ$@<-0qDMSR]CkrXc!
+G-.YF!+t+ARfLsF_rms99OR7DI[L*A7]7aARfLiDKKH7FF,-PG]Y';@<-0qDBN.+@UX:eBOPq&
++Cf(r@r$..D)$hIP"]=nEbo<)L_Q"gL_Q!QFCf]=H#I;,F(KG9FCf]=AoDR/+EV1>FE;/BAKY9
+AG]\1P+C\c"Ch7L?!KmIf+C\c"@q]:kF!+t+ARfLsF_rmi!Kp,c@<-0qDMS=V!JhGQCkrdg!H_
+mtFEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'DD%FEhmM@UX:nASrVpNWC83@<-0qDMT!iCk
+rdg!H_mtFEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'D(nF<G%$Ebo<)L]NY>>E/_,@UX:nA
+T!;)Oo^@QP&,pgOo]Z9G]\4LAnH*qF<G[:G][P9DKI"CAU&<<BmO>5?'9G\P#ZR4F!+q#Ebo<)
+L^9/[L_u9UASu"!+E_R9A8-'q@ruF'DII@.L_>,_L_5&u<K^"<Gs"2BEb0,A061WACh[cu@<+#
+B@WNYr+EM"5H\aA=WI9q$>q]Z#F!+[0F(03R@Yb&J!Jgf?;L<(gBkM+$I?K4g04JC3+Bot0@WR
+]AL]NY>L]W`;H\_ZMP(R$_Bl7EsF_#'*AU&<D06DG\+EVjMI?IP_DfBe@DfBf4Df0V=5!C*"Df
+0Z-Eaa0TE%`kbASu<uDIm6sP#RT)I?G)'1G<]`ATMp(H'1.MA1r(@/n8fPFCfK5H"(o:FDl%L@
+WuO*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/plessey 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER plessey--
% --BEGIN ENCODER telepen--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Telepen
% --EXAM: 123456
% --EXOP: numeric includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/telepen {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /numeric false def
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 1 def
- /parse false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- % Create an array containing the character mappings
- /encs
- [ (31313131) (1131313111) (33313111) (1111313131)
- (3111313111) (11333131) (13133131) (111111313111)
- (31333111) (1131113131) (33113131) (1111333111)
- (3111113131) (1113133111) (1311133111) (111111113131)
- (3131113111) (11313331) (333331) (111131113111)
- (31113331) (1133113111) (1313113111) (1111113331)
- (31131331) (113111113111) (3311113111) (1111131331)
- (311111113111) (1113111331) (1311111331) (11111111113111)
- (31313311) (1131311131) (33311131) (1111313311)
- (3111311131) (11333311) (13133311) (111111311131)
- (31331131) (1131113311) (33113311) (1111331131)
- (3111113311) (1113131131) (1311131131) (111111113311)
- (3131111131) (1131131311) (33131311) (111131111131)
- (3111131311) (1133111131) (1313111131) (111111131311)
- (3113111311) (113111111131) (3311111131) (111113111311)
- (311111111131) (111311111311) (131111111311) (11111111111131)
- (3131311111) (11313133) (333133) (111131311111)
- (31113133) (1133311111) (1313311111) (1111113133)
- (313333) (113111311111) (3311311111) (11113333)
- (311111311111) (11131333) (13111333) (11111111311111)
- (31311133) (1131331111) (33331111) (1111311133)
- (3111331111) (11331133) (13131133) (111111331111)
- (3113131111) (1131111133) (33111133) (111113131111)
- (3111111133) (111311131111) (131111131111) (111111111133)
- (31311313) (113131111111) (3331111111) (1111311313)
- (311131111111) (11331313) (13131313) (11111131111111)
- (3133111111) (1131111313) (33111313) (111133111111)
- (3111111313) (111313111111) (131113111111) (111111111313)
- (313111111111) (1131131113) (33131113) (11113111111111)
- (3111131113) (113311111111) (131311111111) (111111131113)
- (3113111113) (11311111111111) (331111111111) (111113111113)
- (31111111111111) (111311111113) (131111111113) (1111111111111111)
- ] def
-
- /barlen barcode length def % Length of the code
- /sbs barlen 16 mul 48 add string def
- /txt barlen array def
-
- % Put the start character ASCII 95
- /enc encs 95 get def
- sbs 0 enc putinterval
- /l enc length def
-
- /checksum 0 def
- /i 0 def /j 0 def
- { % loop
- i barlen eq {exit} if
- numeric { % numeric mode: 00-99 & 0X-9X
- barcode i get 16 gt {
- /np barcode i 2 getinterval def
- np 1 1 getinterval (X) eq { % X in even position amongst digits
- /indx np 0 1 getinterval cvi 17 add def
- } {
- /indx np cvi 27 add def
- } ifelse
- txt j [np j 16 mul 16 add textyoffset textfont textsize] put
- /i i 2 add def
- } {
- /indx barcode i get def
- txt j [( ) j 16 mul 16 add textyoffset textfont textsize] put
- /i i 1 add def
- } ifelse
- } { % ASCII mode
- /indx barcode i get def
- indx 32 ge indx 126 le and {
- txt j [barcode i 1 getinterval j 16 mul 16 add textyoffset textfont textsize] put
- } {
- txt j [( ) j 16 mul 16 add textyoffset textfont textsize] put
- } ifelse
- /i i 1 add def
- } ifelse
- /checksum checksum indx add def
- /enc encs indx get def
- sbs l enc putinterval % Put encoded digit into sbs
- /l l enc length add def
- /j j 1 add def
- } loop
-
- % Put the checksum character
- /checksum 127 checksum 127 mod sub 127 mod def
- /enc encs checksum get def
- sbs l enc putinterval
- /l l enc length add def
-
- % Put the end character ASCII 122
- /enc encs 122 get def
- sbs l enc putinterval
- /l l enc length add def
-
- % Shrink sbs and txt to fit exactly
- /sbs sbs 0 l getinterval def
- /txt txt 0 j getinterval def
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- includetext {
- /txt txt
- } if
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/telepen dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp telepen 0.0 0 0 0
+%%BeginData: 63 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 06CcAA T2 3uH\`B !23
+JD%DfBf4Df0WZ5* @]T@U X:e De* F B5* @]T DKT f-EbT# +A moLsAW ei&
+A8c@-A9)+&+D,%u F(LLj 055 <6C is 9" FCf ]=+ D,%uF( LL j06CcM FCo
+H/FHOV,1G<i]G]\ "@H= _m> Ou "b 5AU &<B De< U&AT
+Wb(Ou"b)ASGdjFG Ks\1 G <] UE cYe 7Am oLsA WeifE
+-,f4DKCuE06;5UB l7R*H# R>X 4 aVt cO u8C3 DfB f4Df0WCP,i 2'Cia0N4aW>
+WI?IQm30Ia6V33Q n!BlU* FE2 M 8P!+ /T/W r;\ FcnqO1OXV5 /Tc#UAWeitP
+#ZpnAWe*t3A5;iF D5Z2F- 8_M 1OYE cDfB f4D f0WCOu%NL8 M>0sG][P9DK
+I"CAU&</Df0Z[/W qnCFC f]=F (or3+ EV1> FE; /BAWe^01G< i]G]\4LAnH*
+qF<G[:G]\4LAnH* qFHS; ?1G<E QBkM+ $+D >>#B4uCM09 S,1@<-F#HS9
+5WB-:YlEas#uAWg McV33Vf C5;kQ1 Lad5@ rGm hH]A,5P)Xg O3,N_LP!3WD
+5*C2S@VV&,L]NY>05?Y6Ou&8DOuS6tL]`f6Ot:HkB9GGnL]N[<P!5%ROuSV6L]`g>L]`f(P"^:
+NOuR<"B9GGnP!5%SP%&0h!AA2N5*@]T@UX:eDe*E%D0'?G!,@ZjOu&7dI?ITYP%B')<%hg#@ri
+bsNX.Eq1GL[?1GOms0ekI=1GL[?0en[o1G^gA1GLU=NX@Kq0ekI=1GL[?NX@Qs0ekI=1GLU=NX
+.?o1G^gA1GOmq0f(O?1GL[?NXRWs0ekC;1GL[?0en[o1GL[A1GLU=NX@Kq1GLU=1GL[?NX.Es0
+ekI=1GOms0ekC;1G^gA0en[q1GLU=0ekI=1GOms0ekC=0f(U?0en[q0f(O=0f(U?0en[s0ekC;
+0ekC;1GL[?NX@Qs1GLU=1GLU=NX.?o1GL[A1GOmo1G^gC1GOmu0ekC;1GLU=1GLU=NX.Eq0ekI
+?1GOms0ekI?0ekI=0en[q0f(O?0ekI=0en[q0ekC;0ekI?1GOmq1GLU?0f(U?NXRWs1GLU=0ek
+I=0en[q1G^a?0ekI=0en[q0ekC;0f(O?1GOmu1GLU=0ekC;1GLU=NX@Kq0f(O=0f(U?NX@Ks0e
+kC;0f(U?NXdcu0ekC;0ekC;1GLU=NX.Eq1GL[A0en[q0ekI=1GLU=1GOmq1G^gA0ekI=NX@Kq0
+ekI=1G^a?NX@Qs0ekI=0ekI=NX.?o1G^gC0en[o0f(O?1G^a?NXRWs0ekC;1GLU=1GOmq1GL[A
+0ekI=NX@Kq1GLU=1G^a?NX.Es0ekI?0en[q0ekC;1G^a?1GOms1GLU=0ekI?0en[q0ekC=0f(O
+=1GOms0f(O=0f(O=1GOmu0ekC;0ekC;1G^a?NX@Qs1GLU=0ekI=NX@Kq1GLU?0f(O=NX.Es0f(
+O?0en[s0ekC;1GLU=0ekI=NX@Qs0ekC=0f(O=NX@Kq1G^a?0ekI=NX@Ks0f(O=0ekI=NXRWs0e
+kC;0f(O?0en[q1GLU?0ekC=0en[s0ekI=0ekC;0ekI=NX@Qu0ekC;0ekI=NXRWs0ekC=0ekC=0
+en[s1GLU=0ekC;0ekI=NXRWs0f(O=0ekC=0en[s0f(O=0ekC;0f(O=NXdcu0ekC;0ekC;0ekI=
+NX@Qs1GL[?0ekC;NX.?o1GL[?1Gb$q1G^gA1Gb%"0ekC;1GL[?0ekC;NX.Eq0ekI=1Gb$u0ekI
+?1GLU=0en[q0f(O?1GLU=0en[q0ekC;0ekI=1Gb$q1GL[A1Gb%"0ekI=0ekI=0ekC;NX@Qu0ek
+I=0ekC;NX.?o0ekI?1Gb%"1GLU=0ekI=0ekC;NX.?o0f(O?1Gb$s0f(O=0f(UANXdcu0ekC;0e
+kI=0ekC;NX.Eq1GLU=1Gb$u0ekI=1G^a?0en[o1G^gC0ekC;NX@Kq0ekI=0ekI?NX@Qs0ekI?0
+ekC;NX.?o1G^a?1Gb$s0f(O?0ekI?NXRWs0ekC;1G^a?0en[q1GLU?0f(O=0en[q0ekI=0ekC;
+1Gb$s1G^a?0ekI?NXRWs0ekC=0f(O=0en[q1GLU=0ekC;1Gb%"0ekC=0ekC=0ekC;NXRWu0ekC
+;0f(O=0en[s0ekC;0ekC;0ekI?NX.Eq1GLU?0f+gu0ekI=1GLU=0ekC;NX@Qu1GLU=0ekC;NX@
+Kq0ekI=0f(O?NXR]u0ekI=0ekC;0en[o0ekI?0f(O?NX.?q0f(O?0f+h"0ekC;0ekI=0ekC;0e
+n[q1GL[A0ekC;0en[q0ekI=0ekC=0f+gq1G^a?0f(O?NXRWs0ekI?0ekC;0en[q1GLU=0ekC=0
+f+gu0ekC=0f(O=0ekC;NXRWu0ekC=0ekC;0en[s0ekC;0ekC;0f(O?NXR]u1GLU=0ekC;0en[q
+0ekI=0f(O=0f+gq1G^aA0ekC=NXdcu0ekI=0ekC;0ekC;NX@Qs0ekC=0ekC=NXRWs1G^a?0ekC
+;0en[s0f(O?0ekC;0ekC;NXRWs0ekC;0f(O=0f+gs1GLU?0ekC;0f+h"0ekI=0ekC;0ekC;0en
+[s1G^a?0ekC;0ekC;NXRWs0ekC=0ekC;0f+h"1GLU=0ekC;0ekC;0en[s0ekC=0ekC;0ekC=NX
+RWu0ekC;0ekC;0f+h$0ekC;0ekC;0ekC;0ekC;?'6us@UX:nASrW"@<,jrA7^p5Ou"b4@WNZ$@
+<-0qDMSjeCksd.!Ks:B1G<ipF<G%$Ebo<)OpR:-04f$2+D#G#F,41d99M)P@WR>*ASu"@GqWtV
+ASu"@@ZiN#@q]F`CNFW8L]ESo0564BOu"b+L]ESoHYFU3@<-0qDN[/0P!FGY<,QhqATDKpHQZd
++Eas#uAKY]M98F.B:jXj5E$/UuEas#uAKY]C!g66?1N%/f!Jgc>9TB-UP!+.FBl7I++Du.S!/L
+Z=9Tgr_&X!0X1OXU'Bl7I++Du.]/;P7.!Ko6eP#ZUKF<G<@>9Ig&+DQ]DP&,pcOo]Z9G]\4LAn
+H*qF<G[:G][P9DKI"CAU&<<BmO>5?'9FcBcq,G!g3SI1OXU'Bl7I++C\c"@rGmh+DI!3Ou%3)F
+<G<@>E/_,C5<FaCkrXc!H_mtFEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'AWo+DHW4Oo^_%
+I?ITYHS9)NA9]5+@<,jrA7ZltP"UroBl7I+L`hjQBl7I+LjkLqOp$,RG]Y'C+Bost@<,jrA7Zl
+tL]NZ4C5<FaCkrXc!H_mtFEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)P'DD%FEhmMC*6`@!?c
+-5&<^jc&<['9AU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C1.TI?IS`Bcq,G!KmJH1OYEd04
+S[,@r$..D'3>%ARfLsF_r78DIe!T!Ko5lASu!#ASu"!+DG_(G`k^_1NR#H+D`03DI\iT05MbI+
+D#G#P%'RTOu"b++DQ]5Oo^_%I?J.p@q]F`CNFW8LjroJARfLsF_uqaP%p/ZLjtS&Ou"b&DIXf#
+DI[`1@q]F`CNFW8P"UroF(025C`m;,A!2*jC`mO:ASu"@@ZgbT1G<<W@j#?#@rmHPP"UroF(02
+5C`m;,A!2*jC`mO:ASu"@@ZgbT1G<fYF!,O5F,0g4P"_#p06DG\+EVjML]D1Q9Th1o4>1_dDD*
+Y`ASu<uDIm6s06:TD+Bot0@WQmP0TrD`P"Aq4@VBg*>9IurF-:!g!KmJ>!g6H.BOtmjBQSZcK3
+^->@WNYr+EM"5P%'4JOo^@?P#?X_!.C#_>p*j!@r-9uATVL.FF,Z_G]Y'MG]\@s<%i0/F<GL@F
+D5Z2F!*Y1+CoD.FC]E#GEQnu061WACh[cu@<.N1Ou[rR%[&V$FCf9"E+NpM30If*F_`U>D_?-C
+EcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP'(hWFDtYuCM@[
+!I?IP~>
+% uk.co.terryburton.bwipp/telepen 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER telepen--
% --BEGIN ENCODER posicode--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: PosiCode
% --EXAM: ABC123
% --EXOP: version=b inkspread=-0.5 parsefnc includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/posicode {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Courier def
- /textsize 10 def
- /textxoffset 0 def
- /textyoffset -7 def
- /height 1 def
- /encoding (auto) def
- /version (a) def
- /checkoffset 0 def
- /raw false def
- /parse false def
- /parsefnc false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textxoffset textxoffset cvr def
- /textyoffset textyoffset cvr def
- /encoding encoding cvlit def
- /version version cvlit def
- /checkoffset checkoffset cvi def
- /height height cvr def
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- /barlen barcode length def
-
- % Special function characters
- /la0 -1 def /la1 -2 def /la2 -3 def
- /sf0 -4 def /sf1 -5 def /sf2 -6 def
- /fn1 -7 def /fn2 -8 def /fn3 -9 def /fn4 -10 def
-
- % Character maps for each state
- <<
- /normal
- [
- % 0 1 2 0 1 2 0 1 2
- [ (0) (^) (') ] [ (1) (;) 27 ] [ (2) (<) 28 ] % 0-2
- [ (3) (=) 29 ] [ (4) (>) 30 ] [ (5) (?) 31 ] % 3-5
- [ (6) (@) (!) ] [ (7) ([) (") ] [ (8) 92 (#) ] % 6-8
- [ (9) (]) (&) ] [ (A) (a) 1 ] [ (B) (b) 2 ] % 9-11
- [ (C) (c) 3 ] [ (D) (d) 4 ] [ (E) (e) 5 ] % 12-14
- [ (F) (f) 6 ] [ (G) (g) 7 ] [ (H) (h) 8 ] % 15-17
- [ (I) (i) 9 ] [ (J) (j) 10 ] [ (K) (k) 11 ] % 18-20
- [ (L) (l) 12 ] [ (M) (m) 13 ] [ (N) (n) 14 ] % 21-23
- [ (O) (o) 15 ] [ (P) (p) 16 ] [ (Q) (q) 17 ] % 24-26
- [ (R) (r) 18 ] [ (S) (s) 19 ] [ (T) (t) 20 ] % 27-29
- [ (U) (u) 21 ] [ (V) (v) 22 ] [ (W) (w) 23 ] % 30-32
- [ (X) (x) 24 ] [ (Y) (y) 25 ] [ (Z) (z) 26 ] % 33-35
- [ (-) (_) 40 ] [ (.) (`) 41 ] [ ( ) 127 0 ] % 36-38
- [ ($) ({) (*) ] [ (/) (|) (,) ] [ (+) (}) (:) ] % 39-41
- [ (%) (~) fn1 ] [ la1 la0 fn2 ] [ sf1 sf0 fn3 ] % 42-44
- [ sf2 sf2 fn4 ] % 45
- ]
- /limited
- [
- [ (0) -98 -98 ] [ (1) -98 -98 ] [ (2) -98 -98 ] % 0-2
- [ (3) -98 -98 ] [ (4) -98 -98 ] [ (5) -98 -98 ] % 3-5
- [ (6) -98 -98 ] [ (7) -98 -98 ] [ (8) -98 -98 ] % 6-8
- [ (9) -98 -98 ] [ (A) -98 -98 ] [ (B) -98 -98 ] % 9-11
- [ (C) -98 -98 ] [ (D) -98 -98 ] [ (E) -98 -98 ] % 12-14
- [ (F) -98 -98 ] [ (G) -98 -98 ] [ (H) -98 -98 ] % 15-17
- [ (I) -98 -98 ] [ (J) -98 -98 ] [ (K) -98 -98 ] % 18-20
- [ (L) -98 -98 ] [ (M) -98 -98 ] [ (N) -98 -98 ] % 21-23
- [ (O) -98 -98 ] [ (P) -98 -98 ] [ (Q) -98 -98 ] % 24-26
- [ (R) -98 -98 ] [ (S) -98 -98 ] [ (T) -98 -98 ] % 27-29
- [ (U) -98 -98 ] [ (V) -98 -98 ] [ (W) -98 -98 ] % 30-32
- [ (X) -98 -98 ] [ (Y) -98 -98 ] [ (Z) -98 -98 ] % 33-35
- [ (-) -98 -98 ] [ (.) -98 -98 ] % 36-37
- ]
- >>
- version (a) eq version (b) eq or {/normal} {/limited} ifelse get
- /charmaps exch def
-
- % Invert charmaps to give character to value maps for each state
- /charvals [
- charmaps length dict charmaps length dict charmaps length dict
- ] def
- 0 1 charmaps length 1 sub {
- /i exch def
- /encs charmaps i get def
- 0 1 2 {
- /j exch def
- encs j get dup type /stringtype eq {0 get} if % convert string to ASCII if required
- charvals j get exch i put
- } for
- } for
- /set0 charvals 0 get def
- /set1 charvals 1 get def
- /set2 charvals 2 get def
-
- raw {/encoding (raw) def} if
-
- encoding (raw) eq {
- /cws barlen array def
- /i 0 def /j 0 def
- { % loop
- i barlen eq {exit} if
- /cw barcode i 1 add 3 getinterval cvi def
- cws j cw put
- /i i 4 add def
- /j j 1 add def
- } loop
- /cws cws 0 j getinterval def
- /text () def
- } if
-
- encoding (auto) eq {
-
- /fncvals <<
- (FNC1) fn1
- (FNC2) fn2
- (FNC3) fn3
- (FNC4) fn4
- >> def
-
- % Convert input into bytes accounting for FNC characters
- /msg barlen array def
- /text barlen string def
- /i 0 def /j 0 def {
- i barlen eq {exit} if
- /char barcode i get def
- text j char put
- parsefnc char 94 eq and i barlen 4 sub lt and {
- barcode i 1 add get 94 ne {
- /char fncvals barcode i 1 add 4 getinterval get def
- text j ( ) putinterval
- /i i 4 add def
- } {
- /i i 1 add def
- } ifelse
- } if
- msg j char put
- /i i 1 add def
- /j j 1 add def
- } loop
- /msg msg 0 j getinterval def
- /msglen msg length def
- /text text 0 j getinterval def
-
- % Convert the input message to codewords
- /enc {
- exch get cws exch j exch put
- /j j 1 add def
- } bind def
-
- /cws barcode length 2 mul array def
- /i 0 def /j 0 def /cset (set0) def
- {
- i msglen eq {exit} if
-
- { % common exit
-
- % Read next two characters
- /char1 msg i get def
- /char2 i 1 add msglen lt {msg i 1 add get} {-99} ifelse def
-
- % If current mode is sufficient then directly encode
- cset load char1 known {
- char1 cset load enc
- /i i 1 add def
- exit
- } if
-
- % If char1 is in set2 then shift encode
- set2 char1 known {
- sf2 cset load enc
- char1 set2 enc
- /i i 1 add def
- exit
- } if
-
- % If char2 is also not in this set then latch else shift encode
- cset load char2 known not {
- cset (set0) eq {
- la1 cset load enc
- /cset (set1) def
- } {
- la0 cset load enc
- /cset (set0) def
- } ifelse
- exit
- } {
- cset (set0) eq {
- sf1 cset load enc
- char1 set1 enc
- } {
- sf0 cset load enc
- char1 set0 enc
- } ifelse
- /i i 1 add def
- exit
- } ifelse
-
- exit
- } loop
-
- } loop
- /cws cws 0 j getinterval def
- } if % auto encoding
-
- % Create an array containing the character mappings
- << % ";"=11, "<"=12
- /a
- [ (141112) (131212) (121312) (111412) (131113)
- (121213) (111313) (121114) (111214) (111115)
- (181111) (171211) (161311) (151411) (141511)
- (131611) (121711) (111811) (171112) (161212)
- (151312) (141412) (131512) (121612) (111712)
- (161113) (151213) (141313) (131413) (121513)
- (111613) (151114) (141214) (131314) (121414)
- (111514) (141115) (131215) (121315) (111415)
- (131116) (121216) (111316) (121117) (111217)
- (111118) (1<111112) (111111111;1)
- ]
- /b
- [ (151213) (141313) (131413) (121513) (141214)
- (131314) (121414) (131215) (121315) (121216)
- (191212) (181312) (171412) (161512) (151612)
- (141712) (131812) (121912) (181213) (171313)
- (161413) (151513) (141613) (131713) (121813)
- (171214) (161314) (151414) (141514) (131614)
- (121714) (161215) (151315) (141415) (131515)
- (121615) (151216) (141316) (131416) (121516)
- (141217) (131317) (121417) (131218) (121318)
- (121219) (1<121312) (121212121<1)
- ]
- /limiteda
- [ (111411) (111312) (111213) (111114) (121311)
- (121212) (121113) (141111) (131211) (131112)
- (171111) (161211) (151311) (141411) (131511)
- (121611) (111711) (161112) (151212) (141312)
- (131412) (121512) (111612) (151113) (141213)
- (131313) (121413) (111513) (141114) (131214)
- (121314) (111414) (131115) (121215) (111315)
- (121116) (111216) (111117) (151111) (1)
- ]
- /limitedb
- [ (121512) (121413) (121314) (121215) (131412)
- (131313) (131214) (151212) (141312) (141213)
- (181212) (171312) (161412) (151512) (141612)
- (131712) (121812) (171213) (161313) (151413)
- (141513) (131613) (121713) (161214) (151314)
- (141414) (131514) (121614) (151215) (141315)
- (131415) (121515) (141216) (131316) (121416)
- (131217) (121317) (121218) (141212) (1)
- ]
- >>
- version get /encs exch def
-
- /c2w [
- [ 495 330 210 126 70 35 15 5 ]
- [ 165 120 84 56 35 20 10 4 ]
- [ 45 36 28 21 15 10 6 3 ]
- [ 9 8 7 6 5 4 3 2 ]
- [ 1 1 1 1 1 1 1 1 ]
- ] def
- /v 0 def
- cws {
- /cw exch def
- 6 {
- cw v xor 1 and 0 ne {
- /v v 7682 xor def
- } if
- /v v -1 bitshift def
- /cw cw -1 bitshift def
- } repeat
- } forall
- /v v checkoffset add def
-
- version (limiteda) eq version (limitedb) eq or {
- /v v 1023 and def
- v 824 gt v 853 lt and {
- /v v 292 add def
- } if
- } {
- /v v 1023 and 45 add def
- } ifelse
-
- /d [ 2 2 2 2 2 2 ] def
- /r 0 def /c 0 def /w 0 def /sum 0 def
- {
- sum v eq {exit} if
- /t sum c2w r get c get add def
- t v eq {
- /w w 1 add def
- d r w 2 add put
- /sum t def
- } if
- t v gt {
- d r w 2 add put
- /r r 1 add def
- /w 0 def
- } if
- t v lt {
- /c c 1 add def
- /w w 1 add def
- /sum t def
- } if
- } loop
- 20 0 1 4 {d exch get sub} for
- d exch 5 exch put
- version (b) eq version (limitedb) eq or {
- /d [ d {1 add} forall ] def
- } if
- /cbs (111111111111) 12 string copy def
- 5 -1 0 {
- /i exch def
- cbs 5 i sub 2 mul 1 add d i get 47 add put
- } for
-
- % Concatenate the space bar successions
- /sbs cws length 6 mul 31 add string def
- encs encs length 2 sub get dup
- sbs exch 0 exch putinterval
- length /j exch def
- 0 1 cws length 1 sub {
- /i exch def
- sbs j encs cws i get get putinterval
- /j j 6 add def
- } for
- sbs j cbs putinterval
- /j j 12 add def
- encs encs length 1 sub get dup
- sbs exch j exch putinterval
- length j add /j exch def
- /sbs sbs 0 j getinterval def
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- /txt [ [text textxoffset textyoffset textfont textsize] ]
- /textxalign (center)
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/posicode dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp posicode 0.0 0 0 0
+%%BeginData: 105 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 05tiNB k) 'lAUB4 IOu
+8C305kfOBl@m1P! 5$b04 J@1 @rG m hP! 5$b 04] !=FC]E #G 9CL+Ci a0N
+1G<H[@r-9uATVL. F<G1( Cia 0N1 G< i] G][ P9D KM#]Ou "b 5AU&<< BmO
+?H$Bd1uFCf]=G]. 2+F( KHL !0 T, kFC f]= H#I ;,F(
+KHLq3!NeBOtmjBQ T%2O u "b &D I[T qBl 7RD" CZFpD
+iun0G%G]8Bl@mL! F_-I04 S[, @ r$! pA ohO* L]E So061KF+D, %uF(LLj05t?
+?F(HJ+@;L!rOu"b 1@<-F# Ao; * $Amo LsAW eif E-,f4DKCuE 06;5UBl7R*H
+#R>X4aVtcOu8C3D fBf4Df 0WC P,i2 'Cia 0N4 aW>WI?IQm3 0Ia6V33Qn!B
+lU*FE2M8P!+/T/W r;\Fc nqO1 OXV5/ Tc#U AWe itP#ZpnAWe *t3A5;iFD5Z
+2F-8_M1OYEcDfBf 4Df0W COu%N L8M>0 sG] [P9DKI"CAU &</Df0Z[/Wq
+nCFCf]=F(or3+EV 1>FE;/B AWe^01 G<i]G ]\1 KAnH*qF<G[ :G]\1KAnH*q
+FHS;?1G<i]G]\4LAnH*qF<G[:G]\4LAnH*qFHS;?1G<<W@rGmlDJ()'DI[TqBl7RH/WqnCG%G]
+8Bl@l3G%G]8Bl@mP/WqnC@q]F`CN!fsF(KG9@q]F`CN!fsF(KHV/<VeBBOtmjBQPA1ASGdjFHS
+;?1N6cCF(K\OD0'>4@UX:eDe*FB@ZmRN1G<L!!0T-I@<,jrA7^+J!FCqKH]g@*F(^Y"C6CcDH'
+2WOOo^@>Oo[4NP!5$bP')pIL]E55P"_#iD0'?Q5&,lSP,XU.P'E-LP%'4LP,X6>P!5%&I=%,:D
+0'?Q5&-6EP'N4"C6ATNC6CcD1G<3GEas#uAKYi2B8?P&P"_#pP!FGY<IL$AI?IP_@UX:nASrW"
+@<,jrA7^p5Ou"b-@5*N;Ou"b-@53T;Ou"b-@5<Z;Ou"b4Ah]&=Ou"b4Ahf,=Ou"b4Aho2=Ou"b
+'DD?tCOu"b'DDI%COu"b'DDR+COu"b'DD[1COu#3_05b]KD..6'>9I.1!AKN7?B,%6>p*@3!AT
+T84,=h]+Bsj,16)AtL`B\C>E/_?NWD;!*F0dlNWCts!Bu;\>p*@3!B#l<5DUCe+Bsj,2N@f'NW
+C;/+Bsj,2i[oCNWC>0+Bsj,3/Ch"!@(km>E/_ENWEFG!@D(p>E/_MNWERE!F6gPNWDJ,!Fgid>
+p*@3!CMkJ@u(4m+Bsj,7#h:YL]h!+>E/_QNWE^I"^N6TNWDV0!G7,l>p*@3!Cr.NB8?du+Bsj,
+8<*^aL^79/>E/_UNWEjM$!eZXNWDb4!G[Dt>p*@3!DAFRCPW@(+Bsj,9TB-iL^[Q3>E/_YNWF!
+Q%:()\NWDn8!H*]'>p*@3!De^VDhnp0+Bsj,:lYQqL_*i7>E/_]NWF-U&R?M`NWE%<!HNu/>p*
+@3!E5!ZF,1K8+Bsj,</q!$L_O,;>E/_aNWF9Y'jVqdNWE1@!Hs87>p*@3!EY9^GDI&@+Bsj,=H
+3E,L_sD?>E/_eNWFE])-n@hNWE=D!IBP?>p*@3!A0<4?\g+9+Bsj,/rfs?LacUP>E/_,Ljt3\>
+p*@3!@3[+H]A+V>p*@3!ABH6I#\4Y>p*@3!@s02I?"=h>p*@3!@<a,IV*IP+C-*o+DbI@+DbI?
++D,LH+C-*o+EM-L+EM-K+D,LI+C-*o+EM-M+EM-M+D,LJ+C-*q05P?>Blmos+BosmNWChiSqrt
+D+Bsj,0o2EWSm<ICNWCnkSqrtD+Bsj,1PhWYSm<ICNWCtmSqrtD+Bsj,22Ii[Sm<ICNWD%oSqr
+tD+Bsj,2i+&]Sm<ICNWD+qSqrtD+Bsj,3Ja8_Sm<ICNWDG%SqrtD+Bsj,6AV4hSm<ICNWDM'Sq
+rtD+Bsj,7#7FjSm<ICNWDS)SqrtD+Bsj,7YmXlSm<ICNWDY+SqrtD+Bsj,8;NjnSm<ICNWD_-S
+qrtD+Bsj,8r0'pSm<ICNWDe/SqrtD+Bsj,9Sf9rSm<ICNWDk1SqrtD+Bsj,:5GKtSm<ICNWDq3
+SqrtD+Bsj,:l(^!Sm<ICNWE"5SqrtD+Bsj,;M^p#Sm<ICNWE(7SqrtD+Bsj,</@-%Sm<ICNWE.
+9SqrtD+Bsj,<f!?'Sm<ICNWE4;SqrtD+Bsj,=GWQ)Sm<ICNWE:=SqrtD+Bsj,>)8c+Sm<ICNWC
+_fSqrtD+Bsj,/r6*TSm<IE+?ht3G%G]8Bl@mL!F_-SG%G]8Bl@mL!Fh3TP&bn&DJsQ4@;L@=05
+P?>BlmosI?ITn9.sdg@<-3nE-%1+Ou"b$BOPq)@;L!->9IEh@<-3nE-%1OOu6`_@<-3nE-%1OO
+u6`_@<-3nE-%1OOu6O.1Pc$e!FoeOEc#6(F-:!g!KsF/056S5Ou"b&DI[`1@q]:kD..C)+DI!3
+Ou%moL]N;5HS9,s5*@^5DI[`1C6D5Q30LHuF*)G:DJ+':E+P1qH\_Zb97;t&@q]:kG%#3.+DR'
+4P!3TCG^Y`GI?I,SF(KGI+Cf(nEctl-F,0gZ99M(aF(KGJ+Cf(nEctl-F,0j[99M(aF(KGK+Cf
+(nEctl-F,0m\99M)O@<[&OASu!rA8,poNWX<1GEOb1P#Q"1@rGmlDJ+t3Eaa0T4aShlGB4m9@<
+-0qDNY<h1G<Hu!0T,kC5;kQ1OEgY@UX:nAT!YoH]gXBP#O)EG9C@'Eas#uAKY]C!KmJ>"-Q?@/
+<Vf!GB4mA+CfVYGV<bRBnunT!Ko5lC*78I!KmJH1OYEt04T3I+CfV:L]D1Q9Th1bFCf]=NW>4u
+I?IQ@DI[TqBl7RD"CZFpDj!8104o*3G%#3.+?VcH"@c-R0kP;XNW_gH6S`7k16)K,:.$gLDDR:
+U7SZ<-Ao9FJ5!G,c05YcC+C\c"Ch7LI$'I(tFCf]=+C\c"Ch7LIV33VfBnubP1G<L!!0T-bBcp
+knEbo<)P!+/T5^eep04S[(EZeh"Eas#uAKY]M99M)QAU&;>C*7#"@<.NUE+*d.AS,gi+Cf(nEe
+n%b4d#q^+C\c"Ch7L?"HoaIAs*:D@UX:eDe*E%BnueQ!Kp*3?BT/P04S[(EZet3@s29sF!+q#E
+as#uAKY]C!KmJ>"HlHA99M)QAU&;>C5r<;P'J]p+DHW7Oo^_%I=!V]+DHW4Oo^_%I?ITYP#Q:>
+B-:q3@q]:kP'AWo+DHW4Oo^_%05;VEL]NY>Ou%NLAM7nAB-;&4B8?P&P"_#p05YcCCh7K,D0'?
+Q@ZiN#FCf]=+EV1>FGKp3P"_#p04f$2H]gRU94N0eP!3WD5*C.DC*78I!KmJH1OYDrOu"b$GB4
+m9@<,jrA7^p5L]W`UOpR:-0564BOu"b+L]ESo04T'7FH-KFATTVh1OEgYD0'?+AT!YoH]gXBP#
+Qc]@q]:k0d(=SB-:oO99M(a@q]:k1*C:e!KmJ#F(]<#DN\UYD0'>4BnueQ!Kp*(H\e5@P#[Z$@
+rl4'P%8'9@<+)c@!cBs@<+(F@rl4'P%8-A@kVO=BnueQ!Ko7%5^eepF(KGK+Cf(nE\W_bHZNdS
++CfJ(FHU0GDIXf!BOPp9+EM+91*C.G@kVO=BnueQ!Ko7%5^eep@rl4'P%8'9@<+,d@$5JU@rl4
+'NWaE7F>/k@HYd+F+CfJ(FHU0GDIY>0F(KHR"ES-r0p4>@HYd+E+CfJ(FHU0GDIY>0F(KHR"ES
+-r0Tn5?P#[Z1I=#IFATWq8F(KGIP!+/5AhbE<F(KHVA7]Xg+Cf(nE\S\XATTXLASu"+HQ[BA0H
+akHATX)GASu!#@q]:k0d(OKF>+hKDI\*X<A/&/BnueQ!Ko7%5^eeqP!FGYAUT_Q04T3I+CfV:L
+]D1Q9Th2[P#OP+04>u-NWq3p0ekC<NWq3o0etI=NWq3n0f(O>NWq3m0f1U?NWq3o0ekC=NWq3n
+0etI>NWq3m0f(O?NWq3n0ekC>NWq3m0etI?NWq3m0ekC?NWq3t0ekC;NWq3s0etI<NWq3r0f(O
+=NWq3q0f1U>NWq3p0f:[?NWq3o0fCa@NWq3n0fLgANWq3m0fUmBNWq3s0ekC<NWq3r0etI=NWq
+3q0f(O>NWq3p0f1U?NWq3o0f:[@NWq3n0fCaANWq3m0fLgBNWq3r0ekC=NWq3q0etI>NWq3p0f
+(O?NWq3o0f1U@NWq3n0f:[ANWq3m0fCaBNWq3q0ekC>NWq3p0etI?NWq3o0f(O@NWq3n0f1UAN
+Wq3m0f:[BNWq3p0ekC?NWq3o0etI@NWq3n0f(OANWq3m0f1UBNWq3o0ekC@NWq3n0etIANWq3m
+0f(OBNWq3n0ekCANWq3m0etIBNWq3m0ekCBNX.@%0ekC;0f"as0ekC;0ekC;0fq*q04H&.NWq3
+q0etI>NWq3p0f(O?NWq3o0f1U@NWq3n0f:[ANWq3p0etI?NWq3o0f(O@NWq3n0f1UANWq3o0et
+I@NWq3n0f(OANWq3n0etIANWq3u0etI=NWq3t0f(O>NWq3s0f1U?NWq3r0f:[@NWq3q0fCaANW
+q3p0fLgBNWq3o0fUmCNWq3n0f^sDNWq3t0etI>NWq3s0f(O?NWq3r0f1U@NWq3q0f:[ANWq3p0
+fCaBNWq3o0fLgCNWq3n0fUmDNWq3s0etI?NWq3r0f(O@NWq3q0f1UANWq3p0f:[BNWq3o0fCaC
+NWq3n0fLgDNWq3r0etI@NWq3q0f(OANWq3p0f1UBNWq3o0f:[CNWq3n0fCaDNWq3q0etIANWq3
+p0f(OBNWq3o0f1UCNWq3n0f:[DNWq3p0etIBNWq3o0f(OCNWq3n0f1UDNWq3o0etICNWq3n0f(
+ODNWq3n0etIDNX.@%0etI>0f"as0etI=0etI=0g%0r05P?>Blmos@3Ad7"u.he1bg_F"u.he1G
+LYF"u.he1,1SF"u.he0ekMF"u.kf1GLVE"u.kf1,1PE"u.kf0ekJE"u.qh0ekDC"u.ng1,1MD"
+u.ng0ekGD"u/%k0ekDC"u/"j1,1MD"u.ti1GLVE"u.qh1bg_F"u.ng2)-hG"u.kf2DHqH"u.he
+2_d%I"u/"j0ekGD"u.ti1,1PE"u.qh1GLYF"u.ng1bgbG"u.kf2)-kH"u.he2DHtI"u.ti0ekJ
+E"u.qh1,1SF"u.ng1GL\G"u.kf1bgeH"u.he2)-nI"u.qh0ekMF"u.ng1,1VG"u.kf1GL_H"u.
+he1bghI"u.ng0ekPG"u.kf1,1YH"u.he1GLbI"u.kf0ekSH"u.he1,1\I"u.he0ekVI"u.ti0e
+kDC!ARk5Ch[a#FCeul+Bsj10etI@0f"an0etI?0f+go0etI>0f4mp0etI=0f=sq0f(O@0f"an0
+f(O?0f+go0f(O>0f4mp0f:[@0f"an0f1U@0f"an0f1U?0f+go0fUmC0f"an0fLgC0f"an0fCaC
+0f"an0f:[C0f"an0f1UC0f"an0f(OC0f"an0etIC0f"an0fLgB0f+go0fCaB0f+go0f:[B0f+g
+o0f1UB0f+go0f(OB0f+go0etIB0f+go0fCaA0f4mp0f:[A0f4mp0f1UA0f4mp0f(OA0f4mp0et
+IA0f4mp0f:[@0f=sq0f1U@0f=sq0f(O@0f=sq0etI@0f=sq0f1U?0fG$r0f(O?0fG$r0etI?0f
+G$r0f(O>0fP*s0etI>0fP*s0etI=0fY0t0f1U?0f"ai0jPnc4s5#[EcYr5DN[XGASu"!P!5$b0
+4Qb]+BosmL&pat!D8(HdYN@.7Yi:F%u:Bp+BsR#V20AP</<Mi,D[%i$A\gj+BsXRLa7crL_Y^V
+L^JqBL]^p*>DNTA#`&_A#)EG="Gd/9!aQpQL]N;4L]N;4L]N;4L]N;4>p*F91G<p-!0T-JGB8*
+a@s=)"Ou%muHXh7BG*9[t!KmSA!0V2G06SI]L)pDZ_3-U&P#O)X+EiS@Oq3^304T2K@s<b/Oq3
+^3I?K52P"@<M+Eel;BOt[hDe<U&ATX(9Ou%8mEcYr5DN5!=Bl.R+ARo544a(CWF(oQ1NX0H8D/
+"*'A7C]bP&bn&Fs(s_"94MeOu%99"#uH?G(p*!P%Kj[HS9ObG(p#COo^_%I?IQXHS9ObG(p,!O
+p$RmOo^_%I?IS`A0>*4!f-o6!f-o6!f-n`Ou"b3L]ESo04Te<Ou"b8L]ESo06;8QL]ESoHZO=H
++Eio2H]gXBP#O)V+EM[B+Cd0N+EEW<A!0KJ!Ko6\+Eio2HS9RcGDH9_!Ko6L+EATKL]W_?P'AX
+$F_r7COu%NL<-07+P#-L9+EATKL]W_?P'AX#+EE8=Oo^_%06`3POu%NL<-07+P%K%o@j#9;!Km
+JH1G<qpGDH9_!Ko5lF*2=BFHSG.P#QjmAV_%V!/LZ3"FF[B5*AR%WI9q#A<K-4"d2'4G]mY=F(
+oQ1NWEUP4a(CWF(oQ1NX0H8D/"*'A7C]bP&bn&A0>)!A:'+5Oo]uo8R7K8I?IP_@q'M>$o'Ik0
+ekC;0ekC;0o-7$V32^Z1Pc3js+gZ%056S5Ou$TWF,1!6P,X6=P&,pTOo])9Bp),F09Q@!G^Y`G
+06:TD+CfV:P%'4OP&,prOo^`BOu$Ze@ric(DI[aN@Yb)KWKKo;3-/PMP!4[%P!5%SP%$(ZP!5$
+bL]E53@s<!W@Yb&JWI$:4P!5$bF(025C*7)*@ric&GB4m@P"Us2P'J]q+DQ]:Oo^_%I?I-B@WN
+Z,+Cel%P'J]q+DQ]@Oo^_%ASu"!+D#G#F-:!g!KsFF99M8U@WR\rC6CcDH'2WOOo[4NP!5$b06
+:TD+EM"5L]D1Q9Th1o4>1_dDD*Y`ASu<uDIm6s06:TD+Bot0@WQmP0TrD`P"Aq4@VBg*>9IurF
+-:!g!KmJ>!g6H.BOtmjBQSZcK3^->@WNYr+EM"5P%'4JOo^@?P#?X_!.C#_>q^;EF<Fd1>9J$!
+G]Y'MAU&<ADe<U&ATT&:AU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C-*q06CcMFEh51BkM=
+D#%M4^FCfJGDfBe@DfBf4Df0V=5!C*"Df0Z-Eaa0TE%`kbASu<uDIm6sP#RT)I?G)'1G<]cF(o
+-&A7^o`P%64gCG'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM
+@[!P.H"'F`V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/posicode 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER posicode--
% --BEGIN ENCODER codablockf--
+% --REQUIRES preamble raiseerror renmatrix--
% --DESC: Codablock F
% --EXAM: CODABLOCK F 34567890123456789010040digit
% --EXOP: columns=8
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/codablockf {
-
- 20 dict begin
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
- /rows -1 def
- /columns 8 def
- /rowheight 10 def
- /sepheight 1 def
- /encoding (auto) def
- /parse false def
- /parsefnc false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /rows rows cvi def
- /columns columns cvi def
- /rowheight rowheight cvi def
- /sepheight sepheight cvi def
-
- columns 4 ge columns 62 le and
- rows 2 ge rows 44 le and rows -1 eq or and {/c columns def} if
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- /barlen barcode length def
-
- % Convert input into bytes accounting for FNC characters
- /swa -1 def /swb -2 def /swc -3 def /sft -4 def
- /fn1 -5 def /fn2 -6 def /fn3 -7 def /fn4 -8 def
- /sta -9 def /stp -10 def
-
- % Character maps for each state
- /charmaps [
- % A B C A B C A B C
- [ 32 32 (00) ] [ (!) (!) (01) ] [ (") (") (02) ] % 0-2
- [ (#) (#) (03) ] [ ($) ($) (04) ] [ (%) (%) (05) ] % 3-5
- [ (&) (&) (06) ] [ (') (') (07) ] [ 40 40 (08) ] % 6-8
- [ 41 41 (09) ] [ (*) (*) (10) ] [ (+) (+) (11) ] % 9-11
- [ (,) (,) (12) ] [ (-) (-) (13) ] [ (.) (.) (14) ] % 12-14
- [ (/) (/) (15) ] [ (0) (0) (16) ] [ (1) (1) (17) ] % 15-17
- [ (2) (2) (18) ] [ (3) (3) (19) ] [ (4) (4) (20) ] % 18-20
- [ (5) (5) (21) ] [ (6) (6) (22) ] [ (7) (7) (23) ] % 21-23
- [ (8) (8) (24) ] [ (9) (9) (25) ] [ (:) (:) (26) ] % 24-26
- [ (;) (;) (27) ] [ (<) (<) (28) ] [ (=) (=) (29) ] % 27-29
- [ (>) (>) (30) ] [ (?) (?) (31) ] [ (@) (@) (32) ] % 30-32
- [ (A) (A) (33) ] [ (B) (B) (34) ] [ (C) (C) (35) ] % 33-35
- [ (D) (D) (36) ] [ (E) (E) (37) ] [ (F) (F) (38) ] % 36-38
- [ (G) (G) (39) ] [ (H) (H) (40) ] [ (I) (I) (41) ] % 39-41
- [ (J) (J) (42) ] [ (K) (K) (43) ] [ (L) (L) (44) ] % 42-44
- [ (M) (M) (45) ] [ (N) (N) (46) ] [ (O) (O) (47) ] % 45-47
- [ (P) (P) (48) ] [ (Q) (Q) (49) ] [ (R) (R) (50) ] % 48-50
- [ (S) (S) (51) ] [ (T) (T) (52) ] [ (U) (U) (53) ] % 51-53
- [ (V) (V) (54) ] [ (W) (W) (55) ] [ (X) (X) (56) ] % 54-56
- [ (Y) (Y) (57) ] [ (Z) (Z) (58) ] [ ([) ([) (59) ] % 57-59
- [ 92 92 (60) ] [ (]) (]) (61) ] [ (^) (^) (62) ] % 60-62
- [ (_) (_) (63) ] [ 0 (`) (64) ] [ 1 (a) (65) ] % 63-65
- [ 2 (b) (66) ] [ 3 (c) (67) ] [ 4 (d) (68) ] % 66-68
- [ 5 (e) (69) ] [ 6 (f) (70) ] [ 7 (g) (71) ] % 69-71
- [ 8 (h) (72) ] [ 9 (i) (73) ] [ 10 (j) (74) ] % 72-74
- [ 11 (k) (75) ] [ 12 (l) (76) ] [ 13 (m) (77) ] % 75-77
- [ 14 (n) (78) ] [ 15 (o) (79) ] [ 16 (p) (80) ] % 78-80
- [ 17 (q) (81) ] [ 18 (r) (82) ] [ 19 (s) (83) ] % 81-83
- [ 20 (t) (84) ] [ 21 (u) (85) ] [ 22 (v) (86) ] % 84-86
- [ 23 (w) (87) ] [ 24 (x) (88) ] [ 25 (y) (89) ] % 87-89
- [ 26 (z) (90) ] [ 27 ({) (91) ] [ 28 (|) (92) ] % 90-92
- [ 29 (}) (93) ] [ 30 (~) (94) ] [ 31 127 (95) ] % 93-95
- [ fn3 fn3 (96) ] [ fn2 fn2 (97) ] [ sft sft (98) ] % 96-98
- [ swc swc (99) ] [ swb fn4 swb ] [ fn4 swa swa ] % 99-101
- [ fn1 fn1 fn1 ] [ sta sta sta ] [ stp stp stp ] % 102-104
- ] def
-
- % Invert charmaps to give character to value maps for each state
- /charvals [ 105 dict 105 dict 105 dict ] def
- 0 1 charmaps length 1 sub {
- /i exch def
- /encs charmaps i get def
- 0 1 2 {
- /j exch def
- encs j get dup type /stringtype eq {0 get} if % convert string to ASCII if required
- charvals j get exch i put
- } for
- } for
- /seta charvals 0 get def
- /setb charvals 1 get def
- /setc charvals 2 get def
-
- /fncvals <<
- (FNC1) fn1
- (FNC2) fn2
- (FNC3) fn3
- (FNC4) fn4
- >> def
- /msg barlen array def
- /i 0 def /j 0 def {
- i barlen eq {exit} if
- /char barcode i get def
- parsefnc char 94 eq and i barlen 4 sub lt and {
- barcode i 1 add get 94 ne {
- /char fncvals barcode i 1 add 4 getinterval get def
- /i i 4 add def
- } {
- /i i 1 add def
- } ifelse
- } if
- msg j char put
- /i i 1 add def
- /j j 1 add def
- } loop
- /msg msg 0 j getinterval def
- /msglen msg length def
-
- % Determine digit runlength and characters from given position
- /numsscr {
- /n 0 def /s 0 def
- /p exch def {
- p msglen ge {exit} if
- msg p get
- dup setc exch known not {pop exit} if
- fn1 eq {
- % FNC1 in odd position of run like two digits
- s 2 mod 0 eq {/s s 1 add def} {exit} ifelse
- } if
- /n n 1 add def
- /s s 1 add def
- /p p 1 add def
- } loop
- n s
- } bind def
-
- % Encoding for each alphabet
- /enca {
- seta exch get cws exch j exch put
- /j j 1 add def
- } bind def
- /encb {
- setb exch get cws exch j exch put
- /j j 1 add def
- } bind def
- /encc {
- dup type /arraytype ne {
- setc exch get
- } {
- aload pop 48 sub exch 48 sub 10 mul add
- } ifelse
- cws exch j exch put
- /j j 1 add def
- } bind def
-
- % Character exclusively in either alphabet A or B
- /anotb {dup seta exch known exch setb exch known not and} bind def
- /bnota {dup setb exch known exch seta exch known not and} bind def
-
- % Pre-compute relative position of next anotb and next bnota characters
- /nextanotb [ msg length {0} repeat 9999 ] def
- /nextbnota [ msg length {0} repeat 9999 ] def
- msg length 1 sub -1 0 {
- /i exch def
- msg i get anotb {
- nextanotb i 0 put
- } {
- nextanotb i nextanotb i 1 add get 1 add put
- } ifelse
- msg i get bnota {
- nextbnota i 0 put
- } {
- nextbnota i nextbnota i 1 add get 1 add put
- } ifelse
- } for
-
- % Does a-only come before b-only after given position and vice versa
- /abeforeb {dup nextanotb exch get exch nextbnota exch get lt} bind def
- /bbeforea {dup nextbnota exch get exch nextanotb exch get lt} bind def
-
- % Add padding to row
- /padrow {
- {
- { % common exit
- cset (seta) eq {swc enca /cset (setc) def exit} if
- cset (setb) eq {swc encb /cset (setc) def exit} if
- cset (setc) eq {swb encc /cset (setb) def exit} if
- } loop
- } repeat
- } bind def
-
- % Convert message to codewords
- /cws c 5 add rows -1 ne {rows} {44} ifelse mul array def
-
- /i 0 def /j 0 def /r 1 def
- /lastrow false def {
-
- lastrow {exit} if
-
- % Add start character and code subset selector
- sta enca
- i msglen lt {i numsscr} {-1 -1} ifelse /nums exch def /nchars exch def
- { % common exit
- msglen 0 eq {
- swb enca
- /cset (setb) def
- exit
- } if
- nums 2 ge {
- swc enca
- /cset (setc) def
- exit
- } if
- i abeforeb {
- sft enca
- /cset (seta) def
- exit
- } if
- swb enca
- /cset (setb) def
- exit
- } loop
- /j j 1 add def % Skip row indicator position
-
- % Main encoding loop
- /endofrow false def {
- /rem c 3 add j c 5 add mod sub def % Codewords to end of row
-
- i msglen eq endofrow or {exit} if
-
- i numsscr /nums exch def /nchars exch def
-
- % Determine switches and shifts
- { % common exit
- cset (seta) eq cset (setb) eq or nums 4 ge and
- msg i get fn1 ne and {
- nums 2 mod 0 eq
- rem 3 ge and {
- swc cset (seta) eq {enca} {encb} ifelse
- /cset (setc) def
- 2 {
- msg i get fn1 eq {
- fn1 encc
- /i i 1 add def
- } {
- msg i 2 getinterval encc
- /i i 2 add def
- } ifelse
- } repeat
- exit
- } if
- nums 2 mod 0 ne
- rem 4 ge and {
- msg i get cset (seta) eq {enca} {encb} ifelse
- /i i 1 add def
- swc cset (seta) eq {enca} {encb} ifelse
- /cset (setc) def
- 2 {
- msg i get fn1 eq {
- fn1 encc
- /i i 1 add def
- } {
- msg i 2 getinterval encc
- /i i 2 add def
- } ifelse
- } repeat
- exit
- } if
- } if
- cset (setb) eq msg i get anotb and
- rem 2 ge and {
- i msglen 1 sub lt {
- i 1 add bbeforea {
- sft encb
- msg i get enca
- /i i 1 add def
- exit
- } if
- } if
- swa encb
- /cset (seta) def
- msg i get enca
- /i i 1 add def
- exit
- } if
- cset (seta) eq msg i get bnota and
- rem 2 ge and {
- i msglen 1 sub lt {
- i 1 add abeforeb {
- sft enca
- msg i get encb
- /i i 1 add def
- exit
- } if
- } if
- swb enca
- /cset (setb) def
- msg i get encb
- /i i 1 add def
- exit
- } if
- cset (setc) eq nums 2 lt and
- rem 2 ge and {
- i abeforeb {
- swa encc
- /cset (seta) def
- msg i get enca
- /i i 1 add def
- exit
- } if
- swb encc
- /cset (setb) def
- msg i get encb
- /i i 1 add def
- exit
- } if
-
- % No switches or latches so try to encode
- cset (seta) eq seta msg i get known and
- rem 1 ge and {
- msg i get enca
- /i i 1 add def
- exit
- } if
- cset (setb) eq setb msg i get known and
- rem 1 ge and {
- msg i get encb
- /i i 1 add def
- exit
- } if
- cset (setc) eq nums 2 ge and
- rem 1 ge and {
- msg i get fn1 eq {
- fn1 encc
- /i i 1 add def
- } {
- msg i 2 getinterval encc
- /i i 2 add def
- } ifelse
- exit
- } if
-
- % Encoding does not fit in the row
- /endofrow true def
- exit
-
- } loop % common exit
-
- } loop
-
- % Determine whether this is the final row
- r rows eq rows -1 eq or r 1 gt and i msglen eq and rem 2 ge and {
- rem 2 sub padrow
- /j j 3 add def % Skip symbol and row checksum character positions
- stp enca
- /lastrow true def
- } {
- rem padrow
- /j j 1 add def % Skip row checksum character positions
- stp enca
- /r r 1 add def
- } ifelse
-
- } loop
- /cws cws 0 j getinterval def
-
- % Maps for row indicators and symbol checksums
- /abmap [
- 64 1 95 {} for
- 0 1 15 {} for
- 26 1 63 {} for
- ] def
- /cmap [ 0 1 85 {} for ] def
-
- % Add symbol check characters to last row
- /chkmsg msglen array def
- /j 0 def
- 0 1 msglen 1 sub {
- /i exch def
- /char msg i get def
- char 0 ge {chkmsg j char put /j j 1 add def} if
- char fn1 eq i 0 ne and {chkmsg j 29 put /j j 1 add def} if
- } for
- /t1 0 def /t2 0 def /k1 0 def /k2 0 def
- 0 1 j 1 sub {
- /i exch def
- /t1 chkmsg i get i mul 86 mod def
- /t2 t1 chkmsg i get add 86 mod def
- /k1 k1 t2 add 86 mod def
- /k2 k2 t1 add 86 mod def
- } for
- cws cws length 4 sub cset (setc) ne {abmap} {cmap} ifelse k1 get put
- cws cws length 3 sub cset (setc) ne {abmap} {cmap} ifelse k2 get put
-
- % Populate row indicators
- cws 2 2 copy 1 sub get 99 ne {abmap} {cmap} ifelse r 2 sub get put
- 1 1 r 1 sub {
- /i exch def
- cws i c 5 add mul 2 add 2 copy 1 sub get 99 ne {abmap} {cmap} ifelse i 42 add get put
- } for
-
- % Calculate row check characters
- 0 1 r 1 sub {
- cws exch c 5 add mul c 4 add getinterval /rcws exch def
- /csum rcws 0 get def
- 1 1 rcws length 2 sub {
- /i exch def
- /csum csum rcws i get i mul add def
- } for
- rcws rcws length 1 sub csum 103 mod put
- } for
-
- % Create an array containing the character mappings
- /encs
- [ (212222) (222122) (222221) (121223) (121322) (131222) (122213)
- (122312) (132212) (221213) (221312) (231212) (112232) (122132)
- (122231) (113222) (123122) (123221) (223211) (221132) (221231)
- (213212) (223112) (312131) (311222) (321122) (321221) (312212)
- (322112) (322211) (212123) (212321) (232121) (111323) (131123)
- (131321) (112313) (132113) (132311) (211313) (231113) (231311)
- (112133) (112331) (132131) (113123) (113321) (133121) (313121)
- (211331) (231131) (213113) (213311) (213131) (311123) (311321)
- (331121) (312113) (312311) (332111) (314111) (221411) (431111)
- (111224) (111422) (121124) (121421) (141122) (141221) (112214)
- (112412) (122114) (122411) (142112) (142211) (241211) (221114)
- (413111) (241112) (134111) (111242) (121142) (121241) (114212)
- (124112) (124211) (411212) (421112) (421211) (212141) (214121)
- (412121) (111143) (111341) (131141) (114113) (114311) (411113)
- (411311) (113141) (114131) (311141) (411131) (211412) (2331112)
- ] def
-
- % Derive the bits for each row
- /rowbits r array def
- 0 1 r 1 sub {
- /i exch def
- /sbs [
- cws i c 5 add mul c 5 add getinterval {
- encs exch get {48 sub} forall
- } forall
- ] def
- mark
- 0 sbs {1 index 1 eq {{0}} {{1}} ifelse repeat} forall
- counttomark 1 sub array astore exch pop exch pop
- rowbits i 3 -1 roll put
- } for
-
- % Populate the bitmap
- /symwid c 11 mul 57 add def
- /pixs [
- symwid sepheight mul {1} repeat
- 0 1 r 2 sub {
- /i exch def
- rowheight {rowbits i get aload pop} repeat
- sepheight {
- 1 1 0 1 0 0 0 0 1 0 0
- symwid 24 sub {1} repeat
- 1 1 0 0 0 1 1 1 0 1 0 1 1
- } repeat
- } for
- rowheight {rowbits r 1 sub get aload pop} repeat
- symwid sepheight mul {1} repeat
- ] def
-
- % Return the arguments
- <<
- /ren //renmatrix
- /pixs pixs
- /pixx symwid
- /pixy pixs length symwid idiv
- /height pixs length symwid idiv 72 div
- /width symwid 72 div
- /opt options
- >>
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/codablockf dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp codablockf 0.0 0 0 0
+%%BeginData: 130 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04Sp2@ :F %k@r#\ 'L_
+Q"0Ops'_E-,f4DK Ct)Ou "b# @<, j rA7 ^of Ou" b%Df0Z -E aa/7Am oLs
+AWei&Ec6/CM#WVo 04Sp: F_u #;L ^9 /" 061 uTB OtmjBQ T% ;Ou"b4 AT2
+<oBkM+$L]NYp04f $2De *R" B9 !+ 'F` _Pb 1G< ]UEc
+Ye7AmoLsAWei&E+ *d.A S ,g i+ D,% uF( LLjD fBf4D
+f0WZY:js=EbTE(F Eqh:P! +/J ! Ko= '% <$3- Bl@ m1H]kFA@;L !rP!+/T5^ee
+pOuSV6P,4<rNWD; +NHB2` AWf 3 'OtD h\P' )pO Ou%N5OtCcr F_-^lI?ITYP
+ %BdtOuY16E-,f4 DKCt)O u%N L<,Z _tBl @m1 H]g15P"@<I Dg-7FEc6/CO
+t;bP04Sp:F_u#;+ Cf>+F _u#; Ot;bP 061u TBO tmjBQPA;Dg ,l+BkM+$Ot;
+bP06:]DBOtmjBQP A<AT2 <oBkM +$Ot; bP@ rH1+D/OEN" HlAeDesQ5DK
+CUtP$sLVEc6/CL] W`3Ec6/ CLb+]t Op#fD GB8 T?P!+tKOp$ +b@j#9"CisT
+4F-8>-P#QC/EcYf=05YcC+C\c"@rGmhP%'TNOu"b+L]ESo@UX:eDe*F+NWEILNI-gJD0'?Q5&-
+6EP'N4"C6AUR!KmI:C6CcD1QlmD3/@Qj"-Q?@/8]H@P!3W:!KsFF5*C/R30Ia,"-TX>"-Pj29R
+V8N3,N_LP!3WD5*C2S@VV&,05?Y6Ou"b#@<,jrA7Zm#F(^:/C6D8R1Qk"OP#ZpnAUT_@04J@1C
+h7K,@UX:eDe*FB@ZiN#F*D&Ks,o/kF*D)LrfT&jF*D,MrK8riF(TNMr/rihAo9>ZqiW`gAo9A[
+qN<WfAo9D\q3!NeAo9G]pl[EdF*(iHpQ@<cF*)AWp6%3b@q]:kD..C)+BosmL`hKrNWLmg>p*@
+3!?mI(+cZUX0jPo+NWC>a!@!O*0JZoV>E/_/NWCAb!\cE9+Bsj,,`VmNNWLmk>p*@3!@<a,-&r
+$\2-h>/NWCJe!@Eg.0K*2Z>E/_3NWCMf!\cQ=+BsXMLa\8b0K<>\>DO_a.?4H`3F*b3NWCVi!@
+j*20eclU>E/_7NWCYj!\lE8+Bsj,/<0`^NWLpj>p*@3!A0<4/WKle1L2,-NWCbm!A9B60f3/Y>
+E/_;NWCen!\lQ<+Bsj,0TH/fNWLpn>p*@3!ATT80oc;i2dIP1NWCnq!A]Z:0fWG]>E/_?NWCqr
+!\l]@+Bsj,1l_SnNWLsi>p*@3!B#l<23%_n0jPo+NWD%u!B,r>1,<,X>E/_CNWD)!!\uQ;+Bsj
+,30"#!NWLsm>p*@3!BH/@3K=.r2-h>/NWD2$!BQ5B1,`D\>E/_GNWD5%!\u]?+Bsj,4H9G)NWL
+sq>p*@3!BlGD4cTS!3F*b3NWD>(!BuMF1GE)W>E/_KNWDA)!])Q:+Bsj,5`Pk1NWM!l>p*@3!C
+;_H6&l"&1L2,-NWDJ,!CDeJ1GiA[>E/_ONWDM-!])]>+Bsj,7#h:9NWM!p>p*@3!C`"L7?.F*2
+dIP1NWDV0!Ci(N1H8Y_>E/_SNWDY1!])iB+Bsj,8<*^ANWM$k>p*@3!D/:P8WEj/0jPo+NWDb4
+!D8@R1br>Z>E/_WNWDe5!]2]=+Bsj,9TB-INWM$o>p*@3!DSRT9o]932-h>/NWDn8!D\XV1cAV
+^>E/_[NWDq9!]2iA+Bsj,:lYQQNWM$s>p*@3!E"jX;2t]73F*b3NWE%<!E+pZ2)&;Y>E/__NWE
+(=!];]<+Bsj,</puYNWM'n>p*@3!EG-\<K7,<1L2,-NWE1@!EP3^2)JS]>E/_cNWE4A!];i@+B
+sj,=H3DaNWM'r>p*@3!EkE`=cNP@2dIP1NWE=D!EtKb2)nka>E/_gNWE@E!];uD+BsY,Lg5rA2
+DADZ>E/_iNWEFG!]Dc=+Bsj,?B,%mNWM*o>p*@3!FLif?]G1G1L2,-L]EG9@#b:H1gM5.L]NM:
+@?(CI2-h>/L]WS;@ZCLJ2I.G0L]`Y<@u^UK2dIP1L]i_=A<$^L3*dY2L]re>AW?gM3F*b3L^&k
+?ArZpO0O5f*L^/q@B9!$P0jPo+L^9"ABT<-Q10l#,L^B(BBoW6R1L2,-L^K.CC5r?S1gM5.L^T
+4DCQ8HT2-h>/L^]:EClSQU2I.G0L^f@FD2nZV2dIP1L^oFGDN4cW3*dY2L_#LHDiOlX3F*b3L_
+,RIE/juZ0O5f*L_5XJEK1)[0jPo+L_>^KEfL2\10l#,L_GdLF,g;]1L2,-L_PjMFH-D^1gM5.L
+_YpNFcHM_2-h>/L_c!OG)cV`2I.G0L_l'PGE)_a2dIP1L_u-QG`Dhb3*dY2L`)3RH&_qc3F*b3
+L`29SHB&%e0O5f*L`;?TH]A.f0jPo+L`DEUI#\7g10l#,L`MKVI?"@h1L2,-L`VQWIZ=Ii1gM5
+.L`_G&NWM3u>p*>oAo9CIAo9Db!]`/E+Bot#DDE>HDDI4R3B(4d>9J!!F<GX:FH-D_3*dY2+EM
+a:+EMa:NWM4$>p*>oF*D(9Ao9FJF*D(9>p*>oAo9FJF*D%8F*D%8>p*>oAo9=GAo9=GAo9=G>p
+*>oF*(h5F*(h5F*(h5>p*>oF*)@DF*)@DF*)@D>p*F91G<6O@<-O"Ci^_'LhW#0LhW#0LhW#0?
+'7""!/LYcBOPpu@;p:N@Yb&JWI$:4P!5$b04f$2F!+t+@<-3nE-!.9P"UroL]E53L]VoVC6CcD
+1M(H6F!,4\99M8tY:js=EbTE(FEqh:P!+/J!0U!'P#Pq)@<-O"Ci^_6P"Us%Bp*^hP":"a82#$
+qFC?;%BOPq)@;L"@!0U!<1G<f\FCHA&BOPq)@;L"@!Kp*=1G<f\FCQG'BOPq)@;L"@!g63>1G<
+?X@s29sF!*S-NW_gH6SW1j0ocB+:.$dKDDI4T7SZ<,Ao9Db"@c-R1hLV^+?huP1G<TdB-:YlEb
+o<)OpR:-0564BOu"b+L]ESoHYFU3@<-0qDN[/0P!FGY<%h`p@<*K"@<,jrA7ZltP"UroE+*d.A
+S,gi+Cf(nEen%b4d#q^+C\c"Ch7L?"HoaIAs*:D@UX:eDe*E%BnueQ!Kp*3?BT/P04S[(EZet3
+@s29sF!+q#Eas#uAKY]C!KmJ>"HlHA99M(aBcq,G"HieK1OXU'Bcq,G!KmJH1OYEdI?IQHF(ZV
+1+Cf(nEftZ#Bcq,G!KmJH1G<JcC5;nR!Ko6eP%?:`F(ZV4F(^:/C6D8R1G<TdB5D-s+Dl14P%'
+S105boLF)ti3HS98m!0T,kF,0gZ1G<^15*@^KE$0"=B5D-sP"L(a5^eepD0'>4E0<kW3-/YQA!
+0$=@$5JUP')pQI?IQADD@;;HZOuEP%odQP!+.FF!,O[!KmJH1OXV55^eeqI?IP_DBNhQ!KmJH1
+G<elF,0j[!Ko5lE$0+U!KmJH1OYEtDBO"KOq*X204f$2@=',<ATV@D5*AQKGB8p2C6CcDGV<eS
+C5;nR!Ko6eOq*X204f$2@XB5=ATVCE5*AQKGB8p2C6CcDGV<eSC5;nR!Ko6eOq*X204f$2@sa@
+uP-6NIEcPT6FEqh:P&5PeATVFF5*AQeH]eGnFbh`7WKKH$0TrDk$Bf4g!I^,2@s<!W5&-6EP'A
+Wp+DQ]5Oo^_%I?G)'1G<0SDffH8OuRMoFCC=rP$jG:F(KH&P!5%:P&QQeI?G)'1G<3TDffE7Ou
+RMoFCLCsP$jG:F(KH%P!5%:P&QQeI?G)'1G<WWG][A3DffG2>9Id(B9H_NL]DjdK8(`a?'6usD
+In'7@W$++@3AbsD0'?Q@XEn2I?K5;-P'LG1Mq2GP%'4JP,X9;L]DcTBp(ZC1Mq2G+DI!3@;^"*
+@XB58AU&<*DJsW++DHW3P'DD%DIn'7@;^"*@N]A-DIn'7@;^"*@N]B@!KmJH98EV3!Kq\UP#Z@
+?B-:oO94DdWFCBM=DIn'7@W$++@3B9?!0VSTHZ!D>FCK-+FC?;++Dtb8FCK-+FC?;+L]NY>P"U
+T3Oo^_jI?ITYP"767@V'.iEb/^,OuR>jG][A3DffHO5*AR%5&OqVFCK-+FCC=rP"UsMI?G)'1G
+<3HAS,k$ARTqK3,W;PFCK-+FCC=rP"Us%DIn'7@;^"*@Zip<99Nn8Oq*X205t?1Ec6/KH[?lFF
+(KHR"ES-r@?Nd#F*D+:ASu!d04T'7FH-KFATVFF1Qk"OP#Pq4ATWq8F(KH&P!+/5G@Mb,DI[-/
+@rl4'NWaE7FCUIiP!FGY<+Bu\FH-KFATVFF4aV6o@N]6"@q.0%F(KHR"ES-r@ZiO15^eepI?J/
+iP(S1G%[&V$@s;u:@u(;O!HN+&F,9jZD0p;AGB81ZLb*t;<K_0]$'I(tBnubP1G<L!!0T,kEej
+aZ1G<QQF*)G@G9CL+Cia0N1OEqHF*)G@GC,K<I?IQNFC?;'DI[)tBcq86B5D-sP%K&T+Du==F)
+ti3I=$eMM#Vmd<A/64D0(k(Ou"b/@q]:kF-8_M1OEt[B5D-sL]ET$HZOC?+D#G#@4u,3ATWq8F
+(KH&Ou&7dI?IQIF_u2U!g60&F*D+:ASu!d04T'7FH-KFATVFF1Qk"OP#Q-<@:Ee[DfTDuHQ[BA
+F<G.4@pq$#F(KHR"ES-r@?NF05^eepF*D(9ASu!d04T'7FH-KFATVCE1Qk"OP%?:]+DQ]5Oo^_
+ %04f$3De=$.G9CL+Cia0N1OCcqASiQ"L]`e@C*7#B"d/nLC6GQZ1MItKF(]<#DN[.oDIdZtEc
+6/bEdNs7I?IQD+Du==F)ti305boLF-8_M1G<WUBOPq&P!5$bHXh,.FH-KFATV@D4_&PEFH-KFA
+TVCE4d'i'F_u2U"HlB?"Dr3m+DI!3Ao9>dD3>$KDKTf;L]W`SL]ET$Eb0*D"-Q9>"FG36@j#9&
+ATWq8F(KH%P!+/'DI[+'HQZm;@q'kL<A.j'ATWq8F(KH'Ou%mqHYmh:+DI!3Ao9>d4aUdY0d(%
+F@q.0++DHW4Oo^_%I=#gPB-:oE!g65gDI[00Bcq,G!g3SI1OYEdI?K5G5^eepDKTf;L]W`SL]E
+TTEb0*D"HlB?"FG!,B-:oO94N$SFH-KFATV@D4aUaX@pse4+D#G#@XXD>052PCL]NY>Ou%0'@j
+#9&ATWq8F(KH%P!+/'DI[+'HQZm;@q'kL<A.j'ATWq8F(KH'Ou%mqHYmh:+DI!3Ao9>d4aUdY0
+d(%F@q.0++DHW4Oo^_%I=#gPB-:oE!g65gDI[00Bcq,G!g3SI1OYEdI?K5G5^eepI?IQ>F(KHR
+"ES-r@ZilkF(ZV0P"T5$DffHO"EJ'jL]W`3Op$,G+Dl14Ch7L?!KsFFAp\6J!KmIm@V'.iEb/[
+++EM.:+D#G#@N]N/B-:oO94`!N@4u=;BnueQ!Ko7%5^eepI?IQNG@;V*DI[-/@rl4'NWaE7FCC
+=gD0'>4Bp),#DI[*.Bcq,G!KmJH1Qk"OP#Pq4ATWq8F(KH%P!*Z'B-:oO94DdWFCC=8Eb0*D!g
+60="FFi*D0'?+AT!;)P,XUVHYJ9:Oo]!#AS,k$AR^!/F(TM:ASu!d+Dl14+DI!3ASu!e052PCL
+]NY>Ou&7dI?IQXP#QLH@N]6"@pq$#F(KHR"ES-r@ZiNaF(ZV0P"TA(@q%**+DHW4Oo^_%P!FGY
+<+Bu\FH-KFATVFF4`5CZF,0m\As*:;ASm5)P"Ll?HYFU2@V'.iEb/^,+EMa8+D#G#@kV>5ATWq
+8F(KH%Ou$rrB-:oO94`!N@4u=;BnueQ!Ko7%5^eepF*D(9ASu!f04T'7FH-KFATVCE1Mq2G+DI
+!3ASu!e052PCL]NY>Ou&7dI?IQ>F(KHR"ES-r@?NcpATV?'D0'>4Bp),P@$1Y5ASm5(P"Ll?HY
+mh:+DI!3ASu!d052PCL]NY>Ou&7dI?IQ>F(KHR"ES-r@ZilqATVB(D0'>4Bp),P@$1Y5ASm5(P
+"Ll?HYmh:+DI!3ASu!e052PCL]NY>Ou&7dI?IQ>F(KHR"ES-rA!/umF_u2U!g60="EJ'jL]NZ2
+Op$,KF(ZV0P"TD)0p4\HAo9=GASu!f052PCL]NY>Ou%N5D0'>4BnuhR9P&*O@kVO=BnuhR!Ko6
+eP#[Z1I?IP_ASu$sAo_g6+EVXHAWej45^ef,I?J/^+EDCEF-8\,Dg-8Ys,oO.EcQs:P#.;EBcq
+86B5D-sP!+s2Eb0*D!g60="FG0#D287VWGl9VEc6.TC*78I"-N\J1NRYW+D#G#@4uG*F*)G@G9
+D!JF_-^lI=$!GD'3e+A9)U405;VEL]NY>Ou%0$E$/_0@pq$2+EE8=Oo^_%I?ITYP%?:VGB4m:G
+B8Q?C6D8R1G<0GD..B+>DPP#!Jk*0I?I-W!/LZ3%sr_f8;J1?!JiseI?I-,Ou"b$D..B+>DN98
+!Jja&I?I-,Ou"b$BPVI+B-;&4B5D-sOpR:-05?:COu%moL]M@6B5D-sL]N[<HS9)r5*@]T@q]:
+k+Dl14+DI!3Ou$T]@<./(P"L(2BPVI+B-:q3@q]:kP'AWp+DQ]5Oo^_%I?IQ>BOPp(Ao9>d4_]
+]PP&6?bHXg`)D0'>4C5<mnGV<eSC5;nR!Ko6eP#Qjm82#'>L]ESo06At*!0T,kCGCVFOu"b,15
+Gpn1Pc$e!G[DkP,Wd]Bp(ZC1G<i)+Cf)#D0'>4Bp),'P&,qTP%p.906ArlF>4nJBPVI+B-:oO9
+9K=3<g%3\1G<Mu+DW\SF>B![LfT[ROu"b,1*C?f+ET?$!Jjd>C6CB$P"9),F!+t:F-:!g"Ho`o
+F(KHR"ES-rA!1\U@:F(^E.*'U@r5XnI?ITG0p51mG[kr=+CfV:P%'4LP,Vr4ATWq8F(KH'P&5P
+S@VoOmI=!)HD..C3P#Z9QP"Us_@s<!M!f-o@)2J<VWKKo1A!1\U@:F(^E.*'U@r5XnI?ITNL]W
+a=P"Us_L]N;4EejaZWI$:4P!5$b@s;u:BcpoA"d/nLCkr.U!Jgf?)2J<VWKKo1A!1\U@:F(^E.
+*'U@r5XnI?ITELanPgP"Us_I?I-W!/LYrL]N[<HXh8@P!3B3"d/nLCh&8(Oo^_>061QHF-8_M1
+G<6ZF_r7A@s<!M!0U!<1Pc'f!HM[oF-:!g!g9O0056S5Ou"b$F*2=B@rld0+ECt9F!,1[950Q*
+Oo^_%I?I-A@s;u:Eas<7P%'4JP,Vr4F_uqIP%p/)I?I,SASu"!+Bsj11,1O>1,=jo1,:U>1,=j
+o1,:U?1,4dn0etI=1,Fpp0etI>1,=jo0f(O>1,=jo0etL>0f+go0etL?0f"an0f(R?0f"an1,:
+R>0f+go1,:R?0f"an1,CX?0f"an0ekF=1GXsp0etL=1GXsp0etL>1GOmo0ekI>1,=jo0etO>1,
+=jo0etO?1,4dn1,:X@0en[m1,:R=1GXsp1,:R>1GOmo1,1R?0f"an1,:X?0f"an1GLX>1GOmo1
+GLU>1,=jo1GU[>1,=jo1GU[?1,4dn1GLX?0f"an1GU^?0f"an1GU^@0en[m1,1O=1,Fpp1,1O?
+1,4dn1,C[?1,4dn0ekC=1,Fpp0f(O=1,Fpp0f(O?1,4dn0ekF>0f+go0f(R>0f+go0f(R@0en[
+m1,1L>0f+go1,CX>0f+go1,CX@0en[m0ekF<1Gb$q0ekF>1GOmo0f(R>1GOmo0ekI=1,Fpp0ek
+I?1,4dn0f(U?1,4dn1GL[?1,4dn1,1L>1GOmo1,CX>1GOmo1,1R>0f+go1,1R@0en[m1,1R>1G
+Omo1GLU=1,Fpp1GLU?1,4dn1G^a?1,4dn1GLX>0f+go1GLX@0en[m1G^d@0en[m1GL^@0en[m1
+,:R@0en[m1c$j@0en[m0ekC<1,P!q0ekC>1,=jo0etI<1,P!q0etI?1,4dn0f1U>1,=jo0f1U?
+1,4dn0ekF=0f4mp0ekF?0f"an0etL=0f4mp0etL@0en[m0f1X?0f"an0f1X@0en[m1,L^@0en[
+m1,:R=0f4mp1bgd@0en[m1,L^?0f"an0f(X@0en[m0ekC<1bt'q0etI<1bt'q0etI=1bk!p0ek
+L?0f"an0etR?0f"an0etR@0en[m1bg^?0f"an1bpd?0f"an1bpd@0en[m1,1O=1bk!p1,1U?1,
+4dn1bga?1,4dn0ekC;1c(-r0ekC=1bk!p0f(O=1bk!p0ekL>0f+go0ekL@0en[m1bg^>0f+go1
+bg^@0en[m0ekI=1bk!p0ekL>1GOmo1GLU=1bk!p1bg^>1GOmo1,1L?0f"ao1,C^@0ekFhOu"b3
+Dg,Z)FE8RFOpR:-L]E53EejaZWI$:4P!5$b06:TD+BosuGB4m@+Cg32Oo^_^@u(;O!Kp-'ASu"
+!P!5%%H\aA=WI9q$I?I0-Ou$r`EbgI2F(03;L]NZ@L]NZ%H[CPKI=6HhL]MpPP#[ZtI?I0b)i+
+NXWKIRN$^*]:FcnqOF`MDE@VKq*+DHW6M#WWnP'DD<82#%0D0K])+Cg38P&,q7Oo^_%05tWMF!
++[0F*VVHBk/?-AT2<oBkM+$P&,K$!I^,`L]E53Eejd[WI$:4P!5$bEc6/8ASGdjFF,-NDg,Z)F
+E8R=P"Ur>P')29K6(UCBOtmjBQSTW!Jgc4!/LZ3!/LW2!/LW2!Jg`3!-<F&GA1TD(m:kFL]Mpe
+K89Pa!Jg`3!/LW2!Jgc4!Jg`3!Jg`3!Jgc)P(S1G89/WmBOtmjBQSSDEc6/2BlnD=EejaZWKKo
+;!g7\SP(Rh$D0K])+EM+5BOtmjBQTDRH\_]NP(R&'1H[cQEb0,A061WAD..O,Bm;:MBm=\AE+s
+Q<05tWMGT_'QD0K])05tWMGp%'?G]T$WF*VVHBk3B)05+p2B4uB0E+sQ<P%&KXD0K])P#@*,Ou
+=t;Bk2=!+EMgFGA1TD8<PkaDfBe@DfBf4Df0V=5!C*"Df0Z-Eaa0TE%`kbASu?nFE2)?P#RT)I
+?G)'1G<6VA78q`De!QpOuSV806M%_@rEuAATDg:@Wc^5Df.1:GA2#8+Co%qBl7L&ATMd4Ear[D
+Fcna<F(KH4@:O(eDJ,-DH]iMmATVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/codablockf 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER codablockf--
% --BEGIN ENCODER code16k--
+% --REQUIRES preamble raiseerror renmatrix--
% --DESC: Code 16K
% --EXAM: Abcd-1234567890-wxyZ
% --EXOP:
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/code16k {
-
- 20 dict begin
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
- /mode -1 def
- /pos -1 def
- /rows 0 def
- /rowheight 8 def
- /sepheight 1 def
- /encoding (auto) def
- /raw false def
- /parse false def
- /parsefnc false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /mode mode cvi def
- /pos pos cvi def
- /rows rows cvi def
- /rowheight rowheight cvi def
- /sepheight sepheight cvi def
-
- pos -1 ne {/rows 16 def} if
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- /barlen barcode length def
-
- % Convert input into bytes accounting for FNC characters
- /swa -1 def /swb -2 def /swc -3 def
- /sa1 -4 def /sb1 -5 def /sc1 -6 def
- /sa2 -7 def /sb2 -8 def /sc2 -9 def
- /pad -10 def /sb3 -11 def /sc3 -12 def
- /fn1 -13 def /fn2 -14 def /fn3 -15 def /fn4 -16 def
-
- % Character maps for each state
- /charmaps [
- % A B C A B C A B C
- [ 32 32 (00) ] [ (!) (!) (01) ] [ (") (") (02) ] % 0-2
- [ (#) (#) (03) ] [ ($) ($) (04) ] [ (%) (%) (05) ] % 3-5
- [ (&) (&) (06) ] [ (') (') (07) ] [ 40 40 (08) ] % 6-8
- [ 41 41 (09) ] [ (*) (*) (10) ] [ (+) (+) (11) ] % 9-11
- [ (,) (,) (12) ] [ (-) (-) (13) ] [ (.) (.) (14) ] % 12-14
- [ (/) (/) (15) ] [ (0) (0) (16) ] [ (1) (1) (17) ] % 15-17
- [ (2) (2) (18) ] [ (3) (3) (19) ] [ (4) (4) (20) ] % 18-20
- [ (5) (5) (21) ] [ (6) (6) (22) ] [ (7) (7) (23) ] % 21-23
- [ (8) (8) (24) ] [ (9) (9) (25) ] [ (:) (:) (26) ] % 24-26
- [ (;) (;) (27) ] [ (<) (<) (28) ] [ (=) (=) (29) ] % 27-29
- [ (>) (>) (30) ] [ (?) (?) (31) ] [ (@) (@) (32) ] % 30-32
- [ (A) (A) (33) ] [ (B) (B) (34) ] [ (C) (C) (35) ] % 33-35
- [ (D) (D) (36) ] [ (E) (E) (37) ] [ (F) (F) (38) ] % 36-38
- [ (G) (G) (39) ] [ (H) (H) (40) ] [ (I) (I) (41) ] % 39-41
- [ (J) (J) (42) ] [ (K) (K) (43) ] [ (L) (L) (44) ] % 42-44
- [ (M) (M) (45) ] [ (N) (N) (46) ] [ (O) (O) (47) ] % 45-47
- [ (P) (P) (48) ] [ (Q) (Q) (49) ] [ (R) (R) (50) ] % 48-50
- [ (S) (S) (51) ] [ (T) (T) (52) ] [ (U) (U) (53) ] % 51-53
- [ (V) (V) (54) ] [ (W) (W) (55) ] [ (X) (X) (56) ] % 54-56
- [ (Y) (Y) (57) ] [ (Z) (Z) (58) ] [ ([) ([) (59) ] % 57-59
- [ 92 92 (60) ] [ (]) (]) (61) ] [ (^) (^) (62) ] % 60-62
- [ (_) (_) (63) ] [ 0 (`) (64) ] [ 1 (a) (65) ] % 63-65
- [ 2 (b) (66) ] [ 3 (c) (67) ] [ 4 (d) (68) ] % 66-68
- [ 5 (e) (69) ] [ 6 (f) (70) ] [ 7 (g) (71) ] % 69-71
- [ 8 (h) (72) ] [ 9 (i) (73) ] [ 10 (j) (74) ] % 72-74
- [ 11 (k) (75) ] [ 12 (l) (76) ] [ 13 (m) (77) ] % 75-77
- [ 14 (n) (78) ] [ 15 (o) (79) ] [ 16 (p) (80) ] % 78-80
- [ 17 (q) (81) ] [ 18 (r) (82) ] [ 19 (s) (83) ] % 81-83
- [ 20 (t) (84) ] [ 21 (u) (85) ] [ 22 (v) (86) ] % 84-86
- [ 23 (w) (87) ] [ 24 (x) (88) ] [ 25 (y) (89) ] % 87-89
- [ 26 (z) (90) ] [ 27 ({) (91) ] [ 28 (|) (92) ] % 90-92
- [ 29 (}) (93) ] [ 30 (~) (94) ] [ 31 127 (95) ] % 93-95
- [ fn3 fn3 (96) ] [ fn2 fn2 (97) ] [ sb1 sa1 (98) ] % 96-98
- [ swc swc (99) ] [ swb fn4 swb ] [ fn4 swa swa ] % 99-101
- [ fn1 fn1 fn1 ] [ pad pad pad ] [ sb2 sa2 sb1 ] % 102-104
- [ sc2 sc2 sb2 ] [ sc3 sc3 sb3 ] % 105-106
- ] def
-
- % Invert charmaps to give character to value maps for each state
- /charvals [ 109 dict 109 dict 109 dict ] def
- 0 1 charmaps length 1 sub {
- /i exch def
- /encs charmaps i get def
- 0 1 2 {
- /j exch def
- encs j get dup type /stringtype eq {0 get} if % convert string to ASCII if required
- charvals j get exch i put
- } for
- } for
- /seta charvals 0 get def
- /setb charvals 1 get def
- /setc charvals 2 get def
-
- raw {/encoding (raw) def} if
-
- encoding (raw) eq {
- /cws barlen array def
- /i 0 def /j 0 def
- { % loop
- i barlen eq {exit} if
- /cw barcode i 1 add 3 getinterval cvi def
- cws j cw put
- /i i 4 add def
- /j j 1 add def
- } loop
- /cws cws 0 j getinterval def
- /text () def
- } if
-
- encoding (auto) eq {
-
- /fncvals <<
- (FNC1) fn1
- (FNC2) fn2
- (FNC3) fn3
- (FNC4) fn4
- >> def
- /msg barlen array def
- /i 0 def /j 0 def {
- i barlen eq {exit} if
- /char barcode i get def
- parsefnc char 94 eq and i barlen 4 sub lt and {
- barcode i 1 add get 94 ne {
- /char fncvals barcode i 1 add 4 getinterval get def
- /i i 4 add def
- } {
- /i i 1 add def
- } ifelse
- } if
- msg j char put
- /i i 1 add def
- /j j 1 add def
- } loop
- /msg msg 0 j getinterval def
- /msglen msg length def
-
- % Determine digit runlength and characters from given position
- /numsscr {
- /n 0 def /s 0 def
- /p exch def {
- p msglen ge {exit} if
- msg p get
- dup setc exch known not {pop exit} if
- fn1 eq {
- % FNC1 in odd position of run like two digits
- s 2 mod 0 eq {/s s 1 add def} {exit} ifelse
- } if
- /n n 1 add def
- /s s 1 add def
- /p p 1 add def
- } loop
- n s
- } bind def
-
- % Encoding for each alphabet
- /enca {
- seta exch get cws exch j exch put
- /j j 1 add def
- } bind def
- /encb {
- setb exch get cws exch j exch put
- /j j 1 add def
- } bind def
- /encc {
- dup type /arraytype ne {
- setc exch get
- } {
- aload pop 48 sub exch 48 sub 10 mul add
- } ifelse
- cws exch j exch put
- /j j 1 add def
- } bind def
-
- % Character exclusively in either alphabet A or B
- /anotb {dup seta exch known exch setb exch known not and} bind def
- /bnota {dup setb exch known exch seta exch known not and} bind def
-
- % Pre-compute relative position of next anotb and next bnota characters
- /nextanotb [ msg length {0} repeat 9999 ] def
- /nextbnota [ msg length {0} repeat 9999 ] def
- msg length 1 sub -1 0 {
- /i exch def
- msg i get anotb {
- nextanotb i 0 put
- } {
- nextanotb i nextanotb i 1 add get 1 add put
- } ifelse
- msg i get bnota {
- nextbnota i 0 put
- } {
- nextbnota i nextbnota i 1 add get 1 add put
- } ifelse
- } for
-
- % Does a-only come before b-only after given position and vice versa
- /abeforeb {dup nextanotb exch get exch nextbnota exch get lt} bind def
- /bbeforea {dup nextbnota exch get exch nextanotb exch get lt} bind def
-
- /cws barcode length 2 mul 3 add array def
-
- % Select mode and encode first characters
- /i 0 def /j 0 def
- { % common exit
- % extended data length
- pos -1 ne {
- % encode one and two
- cws 0 pos 10 idiv 1 sub put
- cws 1 pos 10 mod 1 sub put
- /j 2 def
- /cset (setb) def
- /mode 7 def
- exit
- } if
- % empty => b
- msglen 0 eq {
- /cset (setb) def
- /mode 1 def
- exit
- } if
- % FNC1 . 2+ nums => c fnc1
- msglen 2 ge {
- msg 0 get fn1 eq 1 numsscr exch pop 2 ge and {
- /cset (setc) def
- /mode 4 def
- /i 1 def
- exit
- } if
- } if
- % FNC1 => b fnc1
- msg 0 get fn1 eq {
- /cset (setb) def
- /mode 3 def
- /i 1 def
- exit
- } if
- msglen 2 ge {
- % 2+ even nums => c
- 0 numsscr exch pop dup 2 ge exch 2 mod 0 eq and {
- /cset (setc) def
- /mode 2 def
- exit
- } if
- % 3+ odd nums => c sb1 encode
- 0 numsscr exch pop dup 3 ge exch 2 mod 1 eq and {
- msg 0 get encb
- /cset (setc) def
- /mode 5 def
- /i 1 def
- exit
- } if
- % b . 2+ even nums => c sb1 encode
- setb msg 0 get known
- 1 numsscr exch pop dup 2 ge exch 2 mod 0 eq and and {
- msg 0 get encb
- /cset (setc) def
- /mode 5 def
- /i 1 def
- exit
- } if
- % b . 3+ odd nums => c sb2 encode
- setb msg 0 get known
- 1 numsscr exch pop dup 3 ge exch 2 mod 1 eq and and {
- msg 0 get encb
- msg 1 get encb
- /cset (setc) def
- /mode 6 def
- /i 2 def
- exit
- } if
- % b . b . 2+ even nums => c sb2 encode
- setb msg 0 get known
- setb msg 1 get known and
- 2 numsscr exch pop dup 2 ge exch 2 mod 0 eq and and {
- msg 0 get encb
- msg 1 get encb
- /cset (setc) def
- /mode 6 def
- /i 2 def
- exit
- } if
- } if
- % anotb before bnota => a
- 0 abeforeb {
- /cset (seta) def
- /mode 0 def
- exit
- } if
- % otherwise => b
- /cset (setb) def
- /mode 1 def
- exit
- } loop
-
- { % Encode remainder
- i msglen eq {exit} if
-
- i numsscr /nums exch def /nchars exch def
-
- % Determine switches and shifts
- { % common exit
- cset (seta) eq {
- % bnota . anotb before bnota => sb1 encode
- i msglen 1 sub lt {
- msg i get bnota
- i 1 add abeforeb and {
- sb1 enca
- msg i get encb
- /i i 1 add def
- exit
- } if
- } if
- % bnota . bnota . anotb before bnota => sb2 encode
- i msglen 2 sub lt {
- msg i get bnota
- msg i 1 add get bnota and
- i 2 add abeforeb and {
- sb2 enca
- msg i get encb
- msg i 1 add get encb
- /i i 2 add def
- exit
- } if
- } if
- % bnota => swb
- msg i get bnota {
- swb enca
- /cset (setb) def
- exit
- } if
- % 4 nums . a => sc2 encode
- i msglen 4 sub lt {
- nums 4 eq
- seta msg i 4 add get known and {
- sc2 enca
- 2 {
- msg i get fn1 eq {
- fn1 encc
- /i i 1 add def
- } {
- msg i 2 getinterval encc
- /i i 2 add def
- } ifelse
- } repeat
- exit
- } if
- } if
- % 6 nums . a => sc3 encode
- i msglen 6 sub lt {
- nums 6 eq
- seta msg i 6 add get known and {
- sc3 enca
- 3 {
- msg i get fn1 eq {
- fn1 encc
- /i i 1 add def
- } {
- msg i 2 getinterval encc
- /i i 2 add def
- } ifelse
- } repeat
- exit
- } if
- } if
- % 4+ even nums => swc
- nums 4 ge nums 2 mod 0 eq and {
- swc enca
- /cset (setc) def
- exit
- } if
- % otherwise => encode
- msg i get enca
- /i i 1 add def
- exit
- } if
- cset (setb) eq {
- % anotb . bnota before anotb => sa1 encode
- i msglen 1 sub lt {
- msg i get anotb
- i 1 add bbeforea and {
- sa1 encb
- msg i get enca
- /i i 1 add def
- exit
- } if
- } if
- % anotb . anotb . bnota before anotb => sa2 encode
- i msglen 2 sub lt {
- msg i get anotb
- msg i 1 add get anotb and
- i 2 add bbeforea and {
- sa2 encb
- msg i get enca
- msg i 1 add get enca
- /i i 2 add def
- exit
- } if
- } if
- % anotb => swa
- msg i get anotb {
- swa encb
- /cset (seta) def
- exit
- } if
- % 4 nums . b => sc2 encode
- i msglen 4 sub lt {
- nums 4 eq
- setb msg i 4 add get known and {
- sc2 encb
- 2 {
- msg i get fn1 eq {
- fn1 encc
- /i i 1 add def
- } {
- msg i 2 getinterval encc
- /i i 2 add def
- } ifelse
- } repeat
- exit
- } if
- } if
- % 6 nums . b => sc3 encode
- i msglen 6 sub lt {
- nums 6 eq
- setb msg i 6 add get known and {
- sc3 encb
- 3 {
- msg i get fn1 eq {
- fn1 encc
- /i i 1 add def
- } {
- msg i 2 getinterval encc
- /i i 2 add def
- } ifelse
- } repeat
- exit
- } if
- } if
- % 4+ even nums => swc
- nums 4 ge nums 2 mod 0 eq and {
- swc encb
- /cset (setc) def
- exit
- } if
- % otherwise => encode
- msg i get encb
- /i i 1 add def
- exit
- } if
- cset (setc) eq {
- % 2+ nums => encode
- nums 2 ge {
- msg i get fn1 eq {
- fn1 encc
- /i i 1 add def
- } {
- msg i 2 getinterval encc
- /i i 2 add def
- } ifelse
- exit
- } if
- % b . 2+ even nums => sb1 encode
- i msglen 1 sub lt {
- setb msg i get known
- i 1 add numsscr exch pop dup 2 ge exch 2 mod 0 eq and and {
- sb1 encc
- msg i get encb
- /i i 1 add def
- exit
- } if
- } if
- % b . 3+ odd nums => sb2 encode
- i msglen 1 sub lt {
- setb msg i get known
- i 1 add numsscr exch pop dup 3 ge exch 2 mod 1 eq and and {
- sb2 encc
- msg i get encb
- msg i 1 add get encb
- /i i 2 add def
- exit
- } if
- } if
- % b . b . 2+ even nums => sb2 encode
- i msglen 2 sub lt {
- setb msg i get known
- setb msg i 1 add get known and
- i 2 add numsscr exch pop dup 2 ge exch 2 mod 0 eq and and {
- sb2 encc
- msg i get encb
- msg i 1 add get encb
- /i i 2 add def
- exit
- } if
- } if
- % b . b . 3+ odd nums => sb3 encode
- i msglen 3 sub lt {
- setb msg i get known
- setb msg i 1 add get known and
- i 2 add numsscr exch pop dup 3 ge exch 2 mod 1 eq and and {
- sb3 encc
- msg i get encb
- msg i 1 add get encb
- msg i 2 add get encb
- /i i 3 add def
- exit
- } if
- } if
- % b . b . b . 2+ even nums => sb3 encode
- i msglen 3 sub lt {
- setb msg i get known
- setb msg i 1 add get known and
- setb msg i 2 add get known and
- i 3 add numsscr exch pop dup 2 ge exch 2 mod 0 eq and and {
- sb3 encc
- msg i get encb
- msg i 1 add get encb
- msg i 2 add get encb
- /i i 3 add def
- exit
- } if
- } if
- % anotb before bnota => swa
- i abeforeb {
- swa encc
- /cset (seta) def
- exit
- } if
- % otherwise => swb
- swb encc
- /cset (setb) def
- exit
- } if
- exit
- } loop
-
- } loop
- /cws cws 0 j getinterval def
- } if % auto encoding
-
- % Basic metrics for the each symbol
- % r dcws
- /metrics [
- [ 2 7 ]
- [ 3 12 ]
- [ 4 17 ]
- [ 5 22 ]
- [ 6 27 ]
- [ 7 32 ]
- [ 8 37 ]
- [ 9 42 ]
- [ 10 47 ]
- [ 11 52 ]
- [ 12 57 ]
- [ 13 62 ]
- [ 14 67 ]
- [ 15 72 ]
- [ 16 77 ]
- ] def
-
- % Select metrics of an appropriate symbol
- /urows rows def
- /i 0 def
- { % loop
- /m metrics i get def
- /r m 0 get def % Columns in symbol
- /dcws m 1 get def % Data codewords in symbol
- /okay true def
- urows 0 ne urows r ne and {/okay false def} if
- cws length dcws gt {/okay false def} if
- okay {exit} if
- /i i 1 add def
- } loop
-
- % Extend cws to ncws codewords by addition of pad characters
- /cws [ cws aload pop dcws cws length sub {103} repeat ] def
-
- % Add the start character
- /cws [ r 2 sub 7 mul mode add cws aload pop ] def
-
- % Calculate the check characters
- 0 0 1 dcws {dup 2 add exch cws exch get mul add} for
- 107 mod /c1 exch def
- 0 0 1 dcws {dup 1 add exch cws exch get mul add} for
- c1 dcws 2 add mul add 107 mod /c2 exch def
- /cws [ cws aload pop c1 c2 ] def
-
- % Create an array containing the character mappings
- /encs
- [ (212222) (222122) (222221) (121223) (121322) (131222) (122213)
- (122312) (132212) (221213) (221312) (231212) (112232) (122132)
- (122231) (113222) (123122) (123221) (223211) (221132) (221231)
- (213212) (223112) (312131) (311222) (321122) (321221) (312212)
- (322112) (322211) (212123) (212321) (232121) (111323) (131123)
- (131321) (112313) (132113) (132311) (211313) (231113) (231311)
- (112133) (112331) (132131) (113123) (113321) (133121) (313121)
- (211331) (231131) (213113) (213311) (213131) (311123) (311321)
- (331121) (312113) (312311) (332111) (314111) (221411) (431111)
- (111224) (111422) (121124) (121421) (141122) (141221) (112214)
- (112412) (122114) (122411) (142112) (142211) (241211) (221114)
- (413111) (241112) (134111) (111242) (121142) (121241) (114212)
- (124112) (124211) (411212) (421112) (421211) (212141) (214121)
- (412121) (111143) (111341) (131141) (114113) (114311) (411113)
- (411311) (113141) (114131) (311141) (411131) (211412) (211214)
- (211232) (211133)
- ] def
-
- % Start/stop character encodings
- /startencs [
- (3211) (2221) (2122) (1411) (1132) (1231) (1114) (3112)
- (3211) (2221) (2122) (1411) (1132) (1231) (1114) (3112)
- ] def
- /stopencsodd [
- (3211) (2221) (2122) (1411) (1132) (1231) (1114) (3112)
- (1132) (1231) (1114) (3112) (3211) (2221) (2122) (1411)
- ] def
- /stopencseven [
- (2122) (1411) (1132) (1231) (1114) (3112) (1132) (1231)
- (1114) (3112) (3211) (2221) (2122) (1411) (3211) (2221)
- ] def
- pos -1 eq pos 10 idiv 2 mod 1 eq or {
- /stopencs stopencsodd def
- } {
- /stopencs stopencseven def
- } ifelse
-
- % Derive the bits for each row
- /rowbits r array def
- 0 1 r 1 sub {
- /i exch def
- /sbs [
- 10
- startencs i get {48 sub} forall
- 1
- cws i 5 mul 5 getinterval {
- encs exch get {48 sub} forall
- } forall
- stopencs i get {48 sub} forall
- 1
- ] def
- mark
- 1 sbs {1 index 0 eq {{1}} {{0}} ifelse repeat} forall
- counttomark 1 sub array astore exch pop exch pop
- rowbits i 3 -1 roll put
- } for
-
- % Populate the bitmap
- /pixs [
- 81 sepheight mul {1} repeat
- 0 1 r 2 sub {
- /i exch def
- rowheight {rowbits i get aload pop} repeat
- sepheight {10 {0} repeat 70 {1} repeat 0} repeat
- } for
- rowheight {rowbits r 1 sub get aload pop} repeat
- 81 sepheight mul {1} repeat
- ] def
-
- % Return the arguments
- <<
- /ren //renmatrix
- /pixs pixs
- /pixx 81
- /pixy pixs length 81 idiv
- /height pixs length 81 idiv 72 div
- /width 81 72 div
- /opt options
- >>
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/code16k dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp code16k 0.0 0 0 0
+%%BeginData: 158 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04Sp2A MH )YH\`B !23
+JD%DfBf4Df0WZ5* @]T@U X:e De* F B5* @]T A8c @-A9)+ &+ D,%uF( LLj
+05YW<AVgAL1G<]c F,9jZ 1G< ceG B8 Q? Ou" b3D g,l+Bk M+ $L^9/" 06:
+]DBOtmjBQT%2Ou" b&DI [Tq Bl 7R D"C ZFp Diu n0Ea
+a/7AmoLsAWei&E+ *d.A K YS nC ia0 N1G <]UE cYf(D
+IXf$@;L!rOu%#qF D5Z2F- <^[ F *)G :D J+': E+P 1qH\_]c23J DeE-,f4DKC/
+fX(GdVF(LLtH]gX BP#RT( P%' T NOth st4d (eH EckrV4aW>D P!5%OP!5$bI
+=%,/FE2M8Ou%NL< IL$AOr fcH 05kf OBl@ m1P !5$bI?IQJE -,f4DKC/f1O
+YEX05YW<AKYi.A7 ^oTOu "b1D f[%?D f_'m Ou" b3Dg-7FEc6 /COt;bP061u
+TBOtmjBQPA;Dg,l +BkM+ $Ot;b P06:] DBO tmjBQPA<AT 2<oBkM+$Ot;
+bPE,TfRs,q5G061 uTF,1Bj 1OYEcE +*d.A U?( IF(ZV)@<,j rA7^p5P,4<t
+05?:COu$QUEas#uAUBF<?BU:pOuR<"B9GGnP!5%SP%&0h!Jgc>!AA2N5*@^bFcn_?!/L`?9Tgr
+DF(^Y"C5;nRWKKH.G`k%L@Yb,LWJCY>5*ATfH]g@*F(^Y"C6CcDH'2WOOo[4NP!5$b04J@1@rG
+mh+Dl14L]D1Q9Th2p5^eeqI?J/iP#O)D@<-0qDBNCsEas#uAWgMc1G<fn@>OrH1G<fn@Yk#H1G
+<fn@u1)H1G<fX0o5aj1G<fY0o5^i1G<fZ0o5[h1G<fX15Pah1G<fY15P^g1G<fZ15P[f1G<]UA
+;KrB1G<fY1Pk^e1G<fZ1Pk[d1G<?X0o5Fa1G<?X15PLa1G<?X1PkRa1G<?X1l1Xa1G<6O@<-3n
+E-!.++BsXEL`h]Z0JHcT>E/_-NWC;`!\c?7+Bsj,,)u[JNWLmi>p*@3!@*U*,E;gZ1L2,-NWCD
+c!@3[,0Jm&X>E/_1NWCGd!\cK;+Bsj,-B8*RNWLmm>p*@3!@Nm.-]S6^2dIP1La\'-NWLmo>p*
+@-.>TF5!\cW?+Bsj,.ZONZNWLph>p*@3!@s02.ujZc0jPo+NWC\k!A'640f!#W>E/_9NWC_l!\
+lK:+Bsj,/rfrbNWLpl>p*@3!ABH609-)g2-h>/NWCho!AKN80fE;[>E/_=NWCkp!\lW>+Bsj,1
+6)AjNWLpp>p*@3!Af`:1QDMk3F*b3NWCts!Aof<1,)uV>E/_ANWD"t!\uK9+Bsj,2N@erNWLsk
+>p*@3!B6#>2i[qp1L2,-NWD,"!B?)@1,N8Z>E/_ENWD/#!\uW=+Bsj,3fX5%NWLso>p*@3!BZ;
+B4,s@t2dIP1NWD8&!BcAD1,rP^>E/_INWD;'!\ucA+Bsj,5)oY-NWM!j>p*@3!C)SF5E5e$0jP
+o+NWDD*!C2YH1GW5Y>E/_MNWDG+!])W<+Bsj,6B2(5NWM!n>p*@3!CMkJ6]M4(2-h>/NWDP.!C
+VqL1H&M]>E/_QNWDS/!])c@+Bsj,7ZIL=NWM!r>p*@3!Cr.N7udX,3F*b3NWD\2!D&4P1b`2X>
+E/_UNWD_3!]2W;+Bsj,8r`pENWM$m>p*@3!DAFR99''11L2,-NWDh6!DJLT1c/J\>E/_YNWDk7
+!]2c?+Bsj,:6#?MNWM$q>p*@3!De^V:Q>K52dIP1NWDt:!DndX1cSb`>E/_]NWE";!]2oC+Bsj
+,;N:cUNWM'l>p*@3!E5!Z;iUo:0jPo+NWE+>!E>'\2)8G[>E/_aNWE.?!];c>+Bsj,<fR2]NWM
+'p>p*@3!EY9^=,m>>2-h>/NWE7B!Eb?`2)\__>E/_eNWE:C!];oB+Bsj,>)iVeNWM't>p*@3!F
+(Qb>E/bB3F*b3Lg5a@NWM*m>p*@3!F:]d?&etE0jPo+NWEIH!FCcf2DSP\>E/_kNWELI!]Di?+
+BsX%NWEOJ!]Dl@+BsX&NWERK!]DoA+BsX'NWEUL!]DrB+BsX(NWEXM!]DuC+BsX)NWE[N!]E#D
++BsX*NWE^O!]E&E+BsX+NWEaP!]Mf=+BsX,NWEdQ!]Mi>+BsX-NWEgR!]Ml?+BsX.NWEjS!]Mo
+@+BsX/NWEmT!]MrA+BsX0NWEpU!]MuB+BsX1NWEsV!]N#C+BsX2NWF!W!]N&D+BsX3NWF$X!]N
+)E+BsX4NWF'Y!]N,F+BsX5NWF*Z!]Vl>+BsX6NWF-[!]Vo?+BsX7NWF0\!]Vr@+BsX8NWF3]!]
+VuA+BsX9NWF6^!]W#B+BsX:NWF9_!]W&C+BsX;NWF<`!]W)D+BsX<NWF?a!]W,E+BsX=NWFBb!
+]W/F+BsX>NWFEc!]W2G+BsX?NWFHd!]_r?+BsX@NWFKe!]_u@+BsXANWFNf!]`#A+BsXBNWFQg
+!]`&B+BsXCNWFTh!]`)C+BsXDLjtEd3Ak(b>9INq1E^:I1QDMs2I.G0+D,LH+D,LHNWM4">p*>
+oF(-jHF($e`!]`5G+Bot0G@Mb:G@QX73B:@f>9J!2@N]9#1a$j`@N\r!>9INq1a$j`@3BW8@3A
+hu>9INq0d((G0d((G0d'aE>9IlnA0>i"A0>i"A0>/#>9Iur1*CXH1*CXI0d'aE>9Ius1*CXJ1*
+CXI1*BjF>9Ius1E^aK1E^aJ1E]sG?'6us@q]:kG%#3.+BsY=Ou8&4Ou8&4Ou6O.1Pc$e!FoeOE
+c#6(F-:!g!KsF/056S5Ou"b&DI[`1@q]:kD..C)+DI!3Ou%moL]N;5HS9,s5*@^5DI[`1C6D5Q
+30LHuF*)G:DJ+':E+P1qH\_Zb97;t&@q]:kG%#3.+DR'4P!3TCG^Y`GI?I,SF(KH%+Cf(nEctl
+-F,0gZ99M(aF(KH&+Cf(nEctl-F,0j[99M(aF(KH'+Cf(nEctl-F,0m\99M)O@<[&OASu!rA8,
+poNWX<1GEOb1P#Q"1@rGmlDJ+t3Eaa0T4aShlGB4m9@<-0qDNY<h1G<Hu!0T,kC5;kQ1OEgY@U
+X:nAT!YoH]gXBP#O)EG9C@'Eas#uAKY]C!KmJ>"-Q?@/<Vf!GB4mA+CfVYGV<bRBnunT!Ko5lC
+*78I!KmJH1OYEt04T3I+CfV:L]D1Q9Th1bFCf]=NW>4uI?IQ@DI[TqBl7RD"CZFpDj!8104o*3
+G%#3.+?VcH"@c-R0kP;XNW_gH6S`7k16)K,:.$gLDDR:U7SZ<-Ao9FJ5!G,c05YcC+C\c"Ch7L
+I$'I(tBnubP1G<L!!0T-bBcpknEbo<)P!+/T5^eep04S[(EZeh"Eas#uAKY]M99M)M@<-F#Ao;
+*$@q]:kLgH6-Op#JA@UX:nAT!;,P,XUVOp$,@@<,jrA7ZltL]NY>P"UU;P&5P!@q]:k+D,M$G%
+#3.+C\c"@rGmh+DHW4Oo^@AP"_$3Ou"b*+DHW7Oo^_%I=!V]+DHW4Oo^_%I?ITYP#Q:>B-:q3@
+q]:kP'AWo+DHW4Oo^_%05;VEL]NY>Ou%NLAM7nAB-;&4B8?P&P"_#p05YcCCh7K,D0'?Q@ZiN#
+DKTf;F(96;05cRGOu"b4L]ESo06!(<Ou%H(+Dl14Ch7LI8pc^dI?IQHF(ZV7P"UrtF(KH'P!5%
+:P&Pc2Fco"<P#Q%20p4\HF,0m\C5;kQ4aSi'+EN>>Oo^_%I=%,BI?ITYP#O)P+Duu9Oo^_%068
+7WL]NY>Ou"b1+E3,;Oo^_%I?J/Z+EMso%[&V$ASu!dHQ[B@FCC=rP"T;/F-8_%P!5%R05;VEL]
+NY>Ou%NL%[&V$ASu!eHQ[B@FCLCsP"T;/F-8_%P!5%R05;VEL]NY>Ou%NL%[&V$ASu!fH]g@OY
+:j=)Eaa68H#R>XD0p>8FCUItP"U4MOogehLbP!kP!4[UP,X6EP&-9^I?IT?GB8p2C6CcDGV<eS
+C5;nR!Ko6eOq*X204Aa:FCKT[3-/YQ@?Ng;@$3]pATVCE5*B<:E0:?POq*X204Jg;FCBNZ3-/Y
+Q@Zip<@$3]pATV@D5*B<:E0:?POq*X205b?GFCB'*FCH@s+Dl14P%&co!.C#_L*mL;Ou"b/AU&
+<+DJsW*+Bot*F(^YFH\_ZMP(SK:%pb>SD0'?Q@Yb&JWJLS1!.-A5P!5$bD0'>4Bp)+tDJsW+HQ
+[3;G][A3DffG2BnubPG^XpVAU&<*DJsW++DDs9AU&<*DJsW++DHW4Oo^_=L]NY>P'DD<<Gcei+
+DI!3@W$++@=',7AU&<+DJsW*+DHW3P'DD%DIn'7@W$++@3B8,DIn'7@W$++@3B9?!KmJH98EV3
+!Kq\UP#Zpn82"C\AS,k$AR^"L3,W;PFCB'*FCLCsP"Us%DIn'7@W$++@?Ng;99Nn8Oq*X204JC
+ %AoD^$@=+.sDIn'7@W$++@?Ng;99MJVAU&<*DJsW+P!5%%P%K-*%[&V$@s;u:@UX:eDe*FB@Y
+b)KCkr1V!KmbP1G<Hu!0T,kC5;kQ1OF(ZF,9jZD0oc:F,0g8Df^^AP#@):P,XUh@s<!M!H;suL
+^K;[L]N[<P'AWpL]W_q04T'7FH-KFATVCE1G<T`A7^Q%Ou&7dI?IQHF(]<#DMS:U4aShlF(KHR
+"ES-r@ZiN#D/WrrL]NYpP!FGY<,H\hCh7L?!g60&D0'?G!0TueDD@;;L]MC9D0'c.EfrVLFbg*
+^8s0=(04T'7FH-KFATVFF1G<T`A7^Q"Ou"b*L]NYpP!FGY<.0p/D0'?G!0TueDD@;;HS8lMATW
+q8F(KH&Ou"b.De*F8"-PGnBnueQ1Qk"OP#Q:>B5D-sL]W`3H\_Z>F_u2@@rd_rP')pIL]W`3P!
+4['P%odQP!+s2HS8lMATWq8F(KH'Ou"b.De*F8!g5@&5^eepL]D=8D0'c.EfrVLFcn_?"-Q9>5
+)99'C5;nR4d#qpD0'?G!0TudDI[-/@rl4'NWaE7FCUIi05YW<AV^MQ1G<Hu!Ko7%5^eepF(KH&
++Dl14L]ET2P$j(HDKTf;F(96R5*C&O3/@X!8s2Ao!g7;S!0TL."Hin7D0'?G!0TudDI[-/@rl4
+'NWaE7FCUIi05YW<AV^MQ1G<Hu!Ko7%5^eepF(KH&+Dl14L]ET2P$j(HDKTf;F(96R5*C&O3/@
+["8s2Ao!g7;S!KoU/"Hin7D0'?G!0TudDI[,uD0'?G!Kp)eDI[-/@rl4'NWaE7FCUIi05YW<AV
+^PR1G<Hu!g5@&5^eepF(KH&+Dl14L]ET2P$i?BFCHA0F(^:0P"UsGOp$RBDKTf;F(96R5*C&O3
+/@X!8s2Ao!g7;S!0TL."Hin7D0'?G!0TudDI[,uD0'?G!Kp)eDI[-/@rl4'NWaE7FCUIi05YW<
+AV^PR1G<Hu!g5@&5^eepI?IQc!+B>JAoD^$@XBb<F(KHR"ES-r@?NE"D/WrrL]ESoP!FGY<%ha
+&ATWq8F(KH&Ou"b.De*F8!Ko7%5^ef,HYFU>F(]<#DN[/0P!FGY<,!ImF_u2@@ra5?F_u2_5*@
+]TDI[?gEc[C-Ou%GpF(KHR"ES-r@?Nd#Bcq86B5D-sL]N[<P%K&XF(ZV0P"T8%DffD1BnueQ!F
+]GKAoD^$@Zgk@F(-jHASu!d+Dl14+DI!3ASu!e052PCL]NY>Ou&7dI?IQXP#Q-<D0'?+AT!;*P
+,XUVHYmh:+DI!3@W$++@3BE.B-:oE!KmJH94DdWFCC=8BnuhR!F]GKAoD^$@Zgk@F(-mIASu!d
++Dl14+DI!3ASu!e+Dl14+DHW4Oo^_=ASu!e052PCL]W_?Ou&7dI?IQXP#Q:>B-:oO94DdWFCBM
+=F*D(9ASu!d04T'7FH-KFATVCE1Qk"OP#Q-<D0'?+AT!;,P,XUVHZ!tCF,0s^4`b1V@3BE.B-:
+oE"HieK99N\G"FG3"1*C.G@pt/pHYmh:+DI!3Ao9>d4aUdY0d(%F@q.0++DHW4Oo^_%I=#gPB-
+:oE!g65gDI[00Bcq,G!g3SI1OYEdI?K5G5^eepI?IQD+Dl14Ch7L?#*PsKAp\E<D0(L;P!*ktF
+C?;/F(ZV0L^'"CP"UsGOp$,Q@l#6=DI[+2"++m+B-:oO94i&rP!+/(DD<8FDI[00Bcq,G!KmJH
+1OXUeF(ZV0L]W`5ASu!f052PCL]W_?Ou%NL<IL$_P!FGY<.0p/DKTf;L]il5DKTf;L]W`SL]ET
+$Op$,QG@Mb,DI[*.@rl4'NWaE7FCUIiP!FGY<,H\h+DI!3ASu!d052PCL]NY>Ou&7dI?IQ>F(K
+HR"ES-r@Zim$Bcq86B5D-sL]N[<P%K&XF(ZV0P"T5$DffG2BnueQ!FfMLAoD^$@?Lb?F($dGAS
+u!e+Dl14+DI!3ASu!d052PCL]NY>Ou&7dI?IQXP#Q-<D0'?+AT!;*P,XUVHYmh:+DI!3@;^"*@
+N]N/B-:oE!KmJH94;^VFCLC9BnuhR!FfMLAoD^$@?Lb?F($gHASu!e+Dl14+DI!3ASu!d+Dl14
++DHW4Oo^_=ASu!d052PCL]W_?Ou&7dI?IQXP#Q:>B-:oO94;^VFCKS>F*D%8ASu!e04T'7FH-K
+FATV@D1Qk"OP#Q-<D0'?+AT!;,P,XUVHZ!tCF,0s^4`b1V@N]N/B-:oE"HieK99N\G"FG3"1*C
+.G@q(5qHYmh:+DI!3Ao9>d4aUdY0d(%F@q.0++DHW4Oo^_%I=#gPB-:oE!g65gDI[00Bcq,G!g
+3SI1OYEdI?K5G5^eepI?IQD+Dl14Ch7L?#*PsKAp\E<D0(L;P!*ktFCHA0F(ZV0L^'"CP"UsGO
+p$,Q@l#6=DI[.3"++m+B-:oO94i&rP!+/(DD<8FDI[00Bcq,G!KmJH1OXUeF(ZV0L]W`5ASu!f
+052PCL]W_?Ou%NL<IL$_P!FGY<.0p/DKTf;L]il5DKTf;L]W`SL]ET$Op$,QG@Mb,DI[-/@rl4
+'NWaE7FCUIiP!FGY<,H\h+DI!3ASu!e052PCL]NY>Ou&7dI?IQ>F(KHR"ES-rA!0!%DKTf;L]W
+`3HYmh:+DI!3Ao9>d4aUdY0d(%F@q.0++DHW4Oo^_%I=#gPB-:oE!g65gDI[00Bcq,G!g3SI1O
+YEdP!FGY<,!IlF(]<#DMS=VWKLk?F(KH&+Dl14+DI!3P$i![!KmJ$F_u2@@rd_rP')pIL]W`3P
+!4['P%odQP!+s2Op$,Q@PK!:DI[0!D0'>4Bp),#DI[-/Bcq,G!KmJH1Qk"OP#Qjm<,!IlF(]<#
+DMS=VWKLk?F(KH&+Dl14+DI!3P$i![!KmJ$F_u2@@rd_rP')pIL]`f4P!4['P%odRP!+s2Op$,
+Q@PT';DI[0!D0'>4Bp),#DI[,uD0'>4BnueQ!Kp)eDI[-/Bcq,G!g3SI1Qk"OP#Qjm<,!IlF(]
+<#DMS@WWKLk?F(KH&+Dl14+DI!3P$i?BFCHA0F(ZV0L]NY>P"UsGOp#KT!g3S%F_u2@@rd_rP'
+)pIL]W`3P!4['P%odQP!+s2Op$,Q@PT';DI[0!D0'>4Bp),#DI[,uD0'>4BnueQ!Kp)eDI[-/B
+cq,G!g3SI1Qk"OP#Qjm<,!IlF(]<#DMSCXWKLk?F(KH&+Dl14+DI!3P$i?BFCHA0F(ZV0L]NY>
+P"UsGOp#KT!g3S%F_u2@@rd_rP')pIL]`f4P!4['P%odRP!+s2Op$,Q@P]-<DI[0!D0'>4Bp),
+#DI[,uD0'>4BnueQ!Kp)eDI[,uD0'>4BnuhR!Kp)eDI[-/Bcq,G"-N\J1Qk"OP#Qjm<,!IlF(]
+<#DMSCXWKLk?F(KH&+Dl14+DI!3P$i?BFCHA0F(ZV0L]NY>P"UsGOp#i;FCHA0F(ZV0L]W_?P"
+UsGOp#KT"-N\&F_u2@@rd_rP')pIL]W`3P!4['P%odQP!+s2Op$,Q@P]-<DI[0!D0'>4Bp),#D
+I[,uD0'>4BnueQ!Kp)eDI[,uD0'>4BnuhR!Kp)eDI[-/Bcq,G"-N\J1Qk"OP#Qjm<,!I`@V'.i
+Eb/^,+EMa8+D#G#@kV>5ATWq8F(KH%Ou&7dI?IQNG@D\+DI[00@rl4'NWaE7FCLChP!FGY<0BL
+pP%B')AM7P;F!+t:F,0g2P"_#pI?IP_D.Rg0Bk)3,>9I.+!f.(e+BsX(L^[Q3>DNE<&R?M`L]r
+SM>p*@-#)F4(+BsX,L`ftG>DNQ@-!_WtL^Ake>p*@-$A^?@+BsX0LbrB[>DN]D3F*b3L^f/(>p
+*@-%Z!JX+BsX4Le(eo>DNiH9jJlIOu"b6Ec6/C+EDCEF-8=4BnubP1OCcl+Dk\3EbT$)+DI!3O
+u"b3+Dlo7P"Uro04\R:F!,=U!Kp*=1G<Z^@<iu;EckrV1Nd_VGB8Q?P&5>^Dg-7FEft:&"FDe?
+CLMK2AmoLsAWeitP#Pq8F-:!C@s<!W:jXj6CLMK2AmoLsAWeitP#Q@8@<m3_5^eep052PCL]NY
+>Ou%NLAM7P;F!+[0@s<!W!g7\:@s;u:@s<!W@Zm^;LhD.!K3aWr04T3I+Bot/L]Wa=L^0)ZD/W
+rrOo]':F-6TfF^:.dL]E52L]M$rGB8+o3/@X!!KoWVGB8p2P"UsSOo]uo8;M&EC+j'OP!5$bL]
+E52L]M$rGB8+o3/@Tu!KoWVGB8p2P"UsSOo]uo87O@sA7Kh)L]W_?P&-9^Lhi/g04Qc#5*@]T@
+s;u:>9IF"F-6TfF^m-K@ko04Ou"b&DI[`1>E/nC0etL>16)Po1,:R>16)Po1,:U?0ocGm1,1O>
+1QDYo1,1R?16)Pn1GLX?16)Pn1,:U>1QDYo1,:X?16)Pn1GU^?16)Po1,1O=1QDYp1,1R>16)P
+o1GLX>16)Pn0etL?16)Pn1,:R?16)Pn1,:U@0ocGm0f(R?16)Pn1,CX?16)Pn1,C[@0ocGn1,C
+[?0ocGn1,1L>16)Po1,1O?0ocGn0f(R>16)Po1,CX>16)Pp0etI>0ocGo0ekF=16)Pp1,1L=16
+)Pp1,1O>0ocGo0etL=16)Pp1,:R=16)Pp1,:U>0ocGn0etI=1QDYp0etO?0ocGn1GU[?0ocGm0
+ekI>1QDYo1GLU>1QDYo1GL[@0ocGm0etO>1QDYo1GU[>1QDYo1GUa@0ocGn0ekI=1QDYp1GLU=
+1QDYp1GL[?0ocGm0etI>1QDYo0etO@0ocGm1GU[@0ocGm0f(O>1QDYo0f(U@0ocGm1G^a@0ocG
+o0f(O>0ocGn0ekI?0ocGn1GLU?0ocGn0f(O=1QDYp0f(U?0ocGn0f(O?0ocGo0ekC<1QDYq0ek
+I>0ocGo1GLU>0ocGo0etI<1QDYq0etO>0ocGo1GU[>0ocGo0f1U>0ocGn1,1U?0ocGp1GLU=0o
+cGm0ekF=1l_bp0ekL?16)Pn1,1L=1l_bp1,1U@0ocGm1bg^?16)Pn1bga@0ocGm0etL=1l_bp0
+etR?16)Pn1,:R=1l_bp1,:[@0ocGm1bpd?16)Pn1bpg@0ocGn1bga?0ocGn1,1L<1l_bs0f(O=
+0ocGn1bg^>16)Pn1Ggg@0ocGm0ekF?16)Pn1,1L?16)Pn1,1O@0ocGm0f1X?16)Pn1,L^?16)P
+n1,La@0ocGp0ekF<16)Pq1,1L<16)Pq1,1O=0ocGn0etI?0ocGn0f1U?0ocGp0etI=0ocGm0ek
+C>1QDYo0ekI@0ocGm1GLU@0ocGm0f1U>1QDYo0f1[@0ocGp0ekC;1QDYr0ekI=0ocGm0f(O@0o
+cGm0f1U@0ocGo0ekC>0ocGp0ekC=0ocGn0ekL>16)Po0ekF<1l_bq0ekF>16)Po0ekC=1L6/"0
+6;5DEcbl1@ribsNW_-n0en[k1,:U>NW_*l1,=jm0f1U>NW_'k1GXsn0etO>NW_'k0f4mn1GLU>
+NW_-n0en[k1,:U>NW_*l1,=jm0f1U>NW_'k1GXsn0etO>NW_'k0f4mn1GLU>?'6usF*)>>ASu"
+!De*B$>E/hB1,1MD">V_f0ocAl0etME">M_f0ocAk0f(SF">MYf0ocAk0ekMF">_be16)Jl0f(
+SF">MYf0ocAk0ekMF">_be16)Jn1,1MD">V_f0ocAl0etME">M_f0jTqu06;5RE+NosF(KN+DB
+N/D">V\e16)Jl1bg_F">MVe16)Jl1,CYF">MVc1l_\p0ekGD">MVe16)Jl1,CYF">MVc1l_\p0
+ekGD">_ef0ocAl1,:SE">V\e16)Jl1bg_F">_ef0ocAl1,:RiOu%&qF,9jZ4`G=\L^K;CL]W`S
+L]NZ%P&bn&F*)>>ASu"!+EMXCE+NosF)PT"Ou%N506;5RE+NosF!,OGDfB9*@rl4)AT!YeI?IS
+`Ec6/2BlnD=Efp`l1Pc$e!HNtsP,Wd]Bp(ZC1G<fYF!+\C$?L;tEcbl1@ric,P"U.X0TrD`P"C
+H1@s;u:BnuqUCkr7X9RC>g@rmesP"U.X0TrD`P"C(b8TSulE+NosF!,1[97)IKP,Wkm8VdCQOu
+$r`EbgI3F(03;L]NZ@L]ET$H[CPLI=6HhL]DjOP#[ZtI?I0b)i+NXWKIRN$^*]:FcnqOF`MDE@
+VKq*+DHW6M#WWnP'DD<82"prG]P!3Lf&5)E+ifsB4uCMCjUs=I?K5=!/LYrL]Wa=HS9)r5*@^B
+Dg,l+BkM+$HQ[?IG@G9.F!,1[99K@>Fa]F*F(K<(ASGdjFF/fNH\_ZMP(SQ[H\_]NP(SPjI?K5
+2P"9V3GA(Q%B4uC6+EDCE@VKq*+EE8=P,XU;OogehI?K5=;0-;fBOtmjBQTDRH\_]NP(R&'1H[
+cQEb0,A061WAD.. O,Bm; :MBm= \AE+s Q< 05t WMG_f3 ME+sQB+
+E2%>F-:!g;3Fg1B Otm jBQPA 9Bm=] ^@ Ydm E;M [l,2
+D98gA9;L@;2@c+2 D8ufF <G L@FD5 Z2F! *Y 1+C oD.FC ]E# GEQnu 061W
+AD..O,Bm>e?Ou[r R%[&V $@r Gmh 0fEg 13 0If *F_`U> D_ ?-CEcQ G7F
+`MSBDD#CBBlJ#6A 7]@eD Imj "F) Q 2A@ qCg GOu Y1:ATV m" @r#drB 9Ki
+QP'(hWFDtYuCM@[ !I?IP ~>
+% uk.co.terryburton.bwipp/code16k 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER code16k--
% --BEGIN ENCODER code49--
+% --REQUIRES preamble raiseerror renmatrix--
% --DESC: Code 49
% --EXAM: MULTIPLE ROWS IN CODE 49
% --EXOP:
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/code49 {
-
- 20 dict begin
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
- /mode -1 def
- /pos -1 def
- /rows 0 def
- /rowheight 8 def
- /sepheight 1 def
- /parse false def
- /parsefnc false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /mode mode cvi def
- /pos pos cvi def
- /rows rows cvi def
- /rowheight rowheight cvi def
- /sepheight sepheight cvi def
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- /barlen barcode length def
-
- % Convert input into bytes accounting for FNC characters
- /s1 -1 def /s2 -2 def /fn1 -3 def /fn2 -4 def /fn3 -5 def /ns -6 def
- /fncvals <<
- (FNC1) fn1
- (FNC2) fn2
- (FNC3) fn3
- >> def
- /msg barlen array def
- /i 0 def /j 0 def {
- i barlen eq {exit} if
- /char barcode i get def
- parsefnc char 94 eq and i barlen 4 sub lt and {
- barcode i 1 add get 94 ne {
- /char fncvals barcode i 1 add 4 getinterval get def
- /i i 4 add def
- } {
- /i i 1 add def
- } ifelse
- } if
- msg j char put
- /i i 1 add def
- /j j 1 add def
- } loop
- /msg msg 0 j getinterval def
- /msglen msg length def
-
- % Character encodings
- /charmap [
- (0) (1) (2) (3) (4) (5) (6) (7) (8) (9)
- (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)
- (-) (.) ( ) ($) (/) (+) (%)
- s1 s2 fn1 fn2 fn3 ns
- ] def
-
- % Invert charmap to give character to value map
- /charvals 49 dict def
- 0 1 48 {
- /i exch def
- charmap i get
- dup type /stringtype eq {0 get} if % convert string to ASCII if required
- charvals exch i put
- } for
-
- % Shifted character encodings
- /combos
- [ (1 ) (1A) (1B) (1C) (1D) (1E) (1F) (1G) (1H) (1I) (1J) (1K) (1L) (1M) (1N) (1O)
- (1P) (1Q) (1R) (1S) (1T) (1U) (1V) (1W) (1X) (1Y) (1Z) (11) (12) (13) (14) (15)
- ( ) (16) (17) (18) ( $) ( %) (19) (10) (1-) (1.) (1$) ( +) (1/) ( -) ( .) ( /)
- ( 0) ( 1) ( 2) ( 3) ( 4) ( 5) ( 6) ( 7) ( 8) ( 9) (1+) (21) (22) (23) (24) (25)
- (26) ( 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) (27) (28) (29) (20) (2-)
- (2.) (2A) (2B) (2C) (2D) (2E) (2F) (2G) (2H) (2I) (2J) (2K) (2L) (2M) (2N) (2O)
- (2P) (2Q) (2R) (2S) (2T) (2U) (2V) (2W) (2X) (2Y) (2Z) (2$) (2/) (2+) (2%) (2 )
- ] def
- 0 1 127 {
- /i exch def
- combos i get dup 0 get /c1 exch def 1 get /c2 exch def
- c1 49 eq { % s1 char
- charvals i [ charvals s1 get charvals c2 get ] put
- } if
- c1 50 eq { % s2 char
- charvals i [ charvals s2 get charvals c2 get ] put
- } if
- } for
-
- /encodealpha {
- charvals exch get
- dup type /arraytype ne {1 array astore} if
- dup cws exch j exch putinterval
- length j add /j exch def
- } bind def
-
- /base48 {
- 0 exch {48 sub exch 10 mul add} forall
- [ 3 1 roll exch 1 sub {dup 48 mod exch 48 idiv} repeat ]
- [ exch dup length 1 sub -1 0 {1 index exch get exch} for pop ]
- dup cws exch j exch putinterval
- length j add /j exch def
- } bind def
-
- /encodenumeric {
- /nums exch def
- /pre nums length dup 5 mod dup 2 ne {sub} {sub 5 sub} ifelse def
- 0 5 pre 1 sub {nums exch 5 getinterval 3 exch base48} for
- /nums nums pre nums length pre sub getinterval def
- nums length
- dup 1 eq {nums i get encodealpha} if
- dup 3 eq {2 nums base48} if
- dup 4 eq {3 [49 48 nums aload pop] base48} if
- 7 eq {
- 3 [49 48 nums 0 4 getinterval aload pop] base48
- 2 nums 4 3 getinterval base48
- } if
- } bind def
-
- % Pre-compute alphanumeric and numeric runlengths
- /numericruns [ msglen {0} repeat 0 ] def
- msglen 1 sub -1 0 {
- /i exch def
- msg i get
- dup 48 ge exch 57 le and {
- numericruns i numericruns i 1 add get 1 add put
- } {
- numericruns i 0 put
- } ifelse
- } for
-
- % Autoselect mode
- mode -1 eq {
- { % common exit
- pos -1 ne {/mode 3 def exit} if
- numericruns 0 get 5 ge {/mode 2 def exit} if
- charvals msg 0 get get
- dup type /arraytype ne {pop /mode 0 def exit} if
- 0 get 43 eq {4} {5} ifelse /mode exch def
- exit
- } loop
- } if
-
- /cws msglen 2 mul 1 add array def
- /method (alpha) def /i -1 def /j -1 def
-
- % Handle start for each mode
- mode 0 eq mode 1 eq or {/method (alpha) def /i 0 def /j 0 def} if
- mode 2 eq {/method (numeric) def /i 0 def /j 0 def} if
- mode 3 eq {
- /posval [
- 12 22
- 13 23 33
- 14 24 34 44
- 15 25 35 45 55
- 16 26 36 46 56 66
- 17 27 37 47 57 67 77
- 18 28 38 48 58 68 78 88
- 19 29 39 49 59 69 79 89 99
- ] def
- cws 0 0 1 43 {dup posval exch get pos ne {pop} if} for 1 add put
- /method (alpha) def /i 0 def /j 1 def
- } if
- mode 4 eq mode 5 eq or {
- cws 0 charvals msg 0 get get 1 get put
- /method (alpha) def /i 1 def /j 1 def
- } if
-
- % Encode remainder
- {
- i msglen eq {exit} if
- { % not a loop but common exit point
- method (alpha) eq {
- numericruns i get 5 ge {
- ns encodealpha
- /method (numeric) def
- exit
- } if
- msg i get encodealpha
- /i i 1 add def
- exit
- } if
- method (numeric) eq {
- numericruns i get 5 lt {
- ns encodealpha
- /method (alpha) def
- exit
- } if
- msg i numericruns i get getinterval encodenumeric
- /i i numericruns i get add def
- exit
- } if
- } loop
- } loop
- /cws cws 0 j getinterval def
-
- % Basic metrics for the each symbol
- % r dcws
- /metrics [
- [ 2 9 ]
- [ 3 16 ]
- [ 4 23 ]
- [ 5 30 ]
- [ 6 37 ]
- [ 7 42 ]
- [ 8 49 ]
- ] def
-
- % Select metrics of an appropriate symbol
- /urows rows def
- /i 0 def
- { % loop
- /m metrics i get def
- /r m 0 get def % Columns in symbol
- /dcws m 1 get def % Data codewords in symbol
- /okay true def
- urows 0 ne urows r ne and {/okay false def} if
- cws length dcws gt {/okay false def} if
- okay {exit} if
- /i i 1 add def
- } loop
-
- % Extend cws to ncws codewords by addition of pad characters
- /cws [ cws aload pop dcws cws length sub {48} repeat ] def
-
- % Populate code character array and add row check characters
- /ccs r 8 mul array def
- /j 0 def
- 0 1 r 2 sub {
- /i exch def
- /cc cws j 7 getinterval def
- ccs i 8 mul cc putinterval
- ccs i 8 mul 7 add 0 cc {add} forall 49 mod put
- /j j 7 add def
- } for
- j dcws lt {
- ccs ccs length 8 sub cws j dcws j sub getinterval putinterval
- } if
-
- % Place row count character
- /cr7 r 2 sub 7 mul mode add def
- ccs ccs length 2 sub cr7 put
-
- % Calculate the symbol check characters
- [ 1 9 31 26 2 12 17 23 37 18 22 6 27 44 15 43 39
- 11 13 5 41 33 36 8 4 32 3 19 40 25 29 10 24 30 ]
- dup [ exch 20 exch 0 32 getinterval aload pop ] /weightx exch def
- dup [ exch 16 exch 1 32 getinterval aload pop ] /weighty exch def
- [ exch 38 exch 2 32 getinterval aload pop ] /weightz exch def
- /calccheck {
- /weights exch def
- /score 0 def
- 0 1 r 1 sub 8 mul 2 idiv 1 sub {
- /i exch def
- ccs i 2 mul get 49 mul ccs i 2 mul 1 add get add
- weights i 1 add get mul /score exch score add def
- } for
- score
- } bind def
- /lastrow ccs ccs length 8 sub 8 getinterval def
-
- % wr1 check character
- r 7 ge {
- cr7 weightz 0 get mul weightz calccheck add 2401 mod
- dup 49 idiv exch 49 mod 2 array astore
- lastrow 0 3 -1 roll putinterval
- } if
- /wr1 lastrow 0 get 49 mul lastrow 1 get add def
-
- % wr2 check character
- cr7 weighty 0 get mul weighty calccheck add
- wr1 weighty r 4 mul 3 sub get mul add
- 2401 mod dup /wr2 exch def
- dup 49 idiv exch 49 mod 2 array astore
- lastrow 2 3 -1 roll putinterval
-
- % wr3 check character
- cr7 weightx 0 get mul weightx calccheck add
- wr1 weightx r 4 mul 3 sub get mul add
- wr2 weightx r 4 mul 2 sub get mul add
- 2401 mod
- dup 49 idiv exch 49 mod 2 array astore
- lastrow 4 3 -1 roll putinterval
-
- % Place last row check character
- ccs ccs length 8 sub 7 getinterval 0 exch {add} forall 49 mod
- ccs ccs length 1 sub 3 -1 roll put
-
- /patterns [
- [ % Even parity
- (11521132) (25112131) (14212132) (25121221) (14221222) (12412132) (23321221)
- (12421222) (21521221) (15112222) (15121312) (13312222) (24221311) (13321312)
- (11512222) (22421311) (11521312) (25112311) (14212312) (23312311) (12412312)
- (21512311) (16121131) (14321131) (12521131) (15212131) (15221221) (13412131)
- (13421221) (11612131) (16112221) (16121311) (14312221) (14321311) (12512221)
- (12521311) (15212311) (13412311) (11612311) (11131135) (31131133) (51131131)
- (21122134) (41122132) (21131224) (41131222) (11113135) (31113133) (51113131)
- (11122225) (31122223) (51122221) (11131315) (31131313) (51131311) (21113224)
- (41113222) (21122314) (41122312) (11113315) (31113313) (51113311) (12131134)
- (32131132) (21231133) (41231131) (22122133) (42122131) (11222134) (22131223)
- (42131221) (11231224) (31231222) (12113134) (32113132) (12122224) (32122222)
- (12131314) (32131312) (21231313) (41231311) (22113223) (42113221) (11213224)
- (22122313) (42122311) (11222314) (31222312) (12113314) (32113312) (21213313)
- (41213311) (13131133) (33131131) (22231132) (11331133) (31331131) (23122132)
- (12222133) (23131222) (12231223) (32231221) (21331222) (13113133) (33113131)
- (13122223) (33122221) (11313133) (13131313) (33131311) (11322223) (22231312)
- (11331313) (31331311) (23113222) (12213223) (23122312) (12222313) (32222311)
- (21322312) (13113313) (33113311) (22213312) (11313313) (31313311) (14131132)
- (23231131) (12331132) (21431131) (24122131) (13222132) (24131221) (13231222)
- (11422132) (22331221) (11431222) (14113132) (14122222) (12313132) (14131312)
- (12322222) (23231311) (12331312) (21431311) (24113221) (13213222) (24122311)
- (13222312) (11413222) (22322311) (11422312) (14113312) (23213311) (12313312)
- (21413311) (15131131) (13331131) (14222131) (14231221) (12422131) (12431221)
- (15113131) (15122221) (13313131) (15131311) (13322221) (11513131) (13331311)
- (11522221) (14213221) (14222311) (12413221) (12422311) (15113311) (13313311)
- (11513311) (11141134) (31141132) (21132133) (41132131) (21141223) (41141221)
- (11123134) (31123132) (11132224) (31132222) (11141314) (31141312) (21114133)
- (41114131) (21123223) (41123221) (21132313) (41132311) (11114224) (31114222)
- (11123314) (31123312) (21114313) (41114311) (12141133) (32141131) (21241132)
- (22132132) (11232133) (22141222) (11241223) (31241221) (12123133) (32123131)
- (12132223) (32132221) (12141313) (32141311) (21241312) (22114132) (11214133)
- (22123222) (11223223) (22132312) (11232313) (31232311) (12114223) (32114221)
- (12123313) (32123311) (21223312) (22114312) (11214313) (31214311) (13141132)
- (22241131) (11341132) (23132131) (12232132) (23141221) (12241222) (21341221)
- (13123132) (13132222) (11323132) (13141312) (11332222) (22241311) (11341312)
- (23114131) (12214132) (23123221) (12223222) (23132311) (12232312) (21332311)
- (13114222) (13123312) (11314222) (22223311) (11323312) (23114311) (12214312)
- (21314311) (14141131) (12341131) (13232131) (13241221) (11432131) (14123131)
- (14132221) (12323131) (14141311) (12332221) (12341311) (13214131) (13223221)
- (11414131) (13232311) (11423221) (11432311) (14114221) (14123311) (12314221)
- (12323311) (13214311) (11414311) (11151133) (31151131) (21142132) (21151222)
- (11133133) (31133131) (11142223) (31142221) (11151313) (31151311) (21124132)
- (21133222) (21142312) (11115133) (31115131) (11124223) (31124221) (11133313)
- (31133311) (21115222) (21124312) (12151132) (21251131) (22142131) (11242132)
- (22151221) (11251222) (12133132) (12142222) (12151312) (21251311) (22124131)
- (11224132) (22133221) (11233222) (22142311) (11242312) (12115132) (12124222)
- (12133312) (21233311) (22115221) (11215222) (22124311) (11224312) (13151131)
- (12242131) (12251221) (13133131) (13142221) (11333131) (13151311) (11342221)
- (12224131) (12233221) (12242311) (13115131) (13124221) (11315131) (13133311)
- (11324221) (11333311) (12215221) (12224311) (11161132) (21152131) (21161221)
- (11143132) (11152222) (11161312) (21134131) (21143221) (21152311) (11125132)
- (11134222) (11143312) (21116131) (21125221) (21134311) (12161131) (11252131)
- (12143131) (12152221) (12161311) (11234131) (11243221) (11252311) (12125131)
- (12134221) (12143311) (11216131) (11225221) (11234311) (11111236) (31111234)
- (51111232) (21111325) (41111323) (61111321) (11111416) (31111414) (51111412)
- (31211143) (51211141) (12111235) (32111233) (52111231) (21211234) (41211232)
- (22111324) (42111322) (11211325) (31211323) (51211321) (12111415) (32111413)
- (52111411) (21211414) (41211412) (12211144) (32211142) (21311143) (41311141)
- (13111234) (33111232) (22211233) (42211231) (11311234) (31311232) (23111323)
- (43111321) (12211324) (32211322) (21311323) (41311321) (13111414) (33111412)
- (22211413) (42211411) (11311414) (31311412) (13211143) (33211141) (22311142)
- (11411143) (31411141) (14111233) (34111231) (23211232) (12311233) (32311231)
- (21411232) (24111322) (13211323) (33211321) (22311322) (11411323) (31411321)
- (14111413) (34111411) (23211412) (12311413) (32311411) (21411412) (14211142)
- (23311141) (12411142) (21511141) (15111232) (24211231) (13311232) (22411231)
- (11511232) (25111321) (14211322) (23311321) (12411322) (21511321) (15111412)
- (24211411) (13311412) (22411411) (11511412) (15211141) (13411141) (11611141)
- (16111231) (14311231) (12511231) (15211321) (13411321) (11611321) (16111411)
- (14311411) (12511411) (21121144) (41121142) (11112145) (31112143) (51112141)
- (11121235) (31121233) (51121231) (21112234) (41112232) (21121324) (41121322)
- (11112325) (31112323) (51112321) (11121415) (31121413) (51121411) (21112414)
- (41112412) (22121143) (42121141) (11221144) (31221142) (12112144) (32112142)
- (12121234) (32121232) (21221233) (41221231) (22112233) (42112231) (11212234)
- (22121323) (42121321) (11221324) (31221322) (12112324) (32112322) (12121414)
- (32121412) (21221413) (41221411) (22112413) (42112411) (11212414) (31212412)
- (23121142) (12221143) (32221141) (21321142) (13112143) (33112141) (13121233)
- (33121231) (11312143) (22221232) (11321233) (31321231) (23112232) (12212233)
- (23121322) (12221323) (32221321) (21321322) (13112323) (33112321) (13121413)
- (33121411) (11312323) (22221412) (11321413) (31321411) (23112412) (12212413)
- (32212411) (21312412) (24121141) (13221142) (22321141) (11421142) (14112142)
- (14121232) (12312142) (23221231) (12321232) (21421231) (24112231) (13212232)
- (24121321) (13221322) (11412232) (22321321) (11421322) (14112322) (14121412)
- (12312322) (23221411) (12321412) (21421411) (24112411) (13212412) (22312411)
- (11412412) (14221141) (12421141) (15112141) (15121231) (13312141) (13321231)
- (11512141) (11521231) (14212231) (14221321) (12412231) (12421321) (15112321)
- (15121411) (13312321) (13321411) (11512321) (11521411) (14212411) (12412411)
- (21131143) (41131141) (11122144) (31122142) (11131234) (31131232) (21113143)
- (41113141) (21122233) (41122231) (21131323) (41131321) (11113234) (31113232)
- (11122324) (31122322) (11131414) (31131412) (21113323) (41113321) (21122413)
- (41122411) (11113414) (31113412) (22131142) (11231143) (31231141) (12122143)
- (32122141) (12131233) (32131231) (21231232) (22113142) (11213143) (22122232)
- (11222233) (22131322) (11231323) (31231321) (12113233) (32113231) (12122323)
- (32122321) (12131413) (32131411) (21231412) (22113322) (11213323) (22122412)
- (11222413) (31222411) (12113413) (32113411) (21213412) (23131141) (12231142)
- (21331141) (13122142) (13131232) (11322142) (22231231) (11331232) (23113141)
- (12213142) (23122231) (12222232) (23131321) (12231322) (21331321) (13113232)
- (13122322) (11313232) (13131412) (11322322) (22231411) (11331412) (23113321)
- (12213322) (23122411) (12222412) (21322411) (13113412) (22213411) (11313412)
- (13231141) (11431141) (14122141) (14131231) (12322141) (12331231) (13213141)
- (13222231) (11413141) (13231321) (11422231) (11431321) (14113231) (14122321)
- (12313231) (14131411) (12322321) (12331411) (13213321) (13222411) (11413321)
- (11422411) (14113411) (12313411) (21141142) (11132143) (31132141) (11141233)
- (31141231) (21123142) (21132232) (21141322) (11114143) (31114141) (11123233)
- (31123231) (11132323) (31132321) (11141413) (31141411) (21114232) (21123322)
- (21132412) (11114323) (31114321) (11123413) (31123411) (22141141) (11241142)
- (12132142) (12141232) (21241231) (22123141) (11223142) (22132231) (11232232)
- (22141321) (11241322) (12114142) (12123232) (12132322) (12141412) (21241411)
- (22114231) (11214232) (22123321) (11223322) (22132411) (11232412) (12114322)
- (12123412) (21223411) (12241141) (13132141) (13141231) (11332141) (11341231)
- (12223141) (12232231) (12241321) (13114141) (13123231) (11314141) (13132321)
- (11323231) (13141411) (11332321) (11341411) (12214231) (12223321) (12232411)
- (13114321) (13123411) (11314321) (11323411) (21151141) (11142142) (11151232)
- (21133141) (21142231) (21151321) (11124142) (11133232) (11142322) (11151412)
- (21115141) (21124231) (21133321) (21142411) (11115232) (11124322) (11133412)
- (11251141) (12142141) (12151231) (11233141) (11242231) (11251321) (12124141)
- (12133231) (12142321) (12151411) (11215141) (11224231) (11233321) (11242411)
- (12115231) (12124321) (12133411) (11152141) (11161231) (11134141) (11143231)
- (11152321) (11161411) (11116141) (11125231) (11134321) (11143411) (21111244)
- (41111242) (11111335) (31111333) (51111331) (21111424) (41111422) (11111515)
- (31111513) (51111511) (21211153) (41211151) (22111243) (42111241) (11211244)
- (31211242) (12111334) (32111332) (21211333) (41211331) (22111423) (42111421)
- (11211424) (31211422) (12111514) (32111512) (21211513) (41211511) (22211152)
- (11311153) (31311151) (23111242) (12211243) (32211241) (21311242) (13111333)
- (33111331) (22211332) (11311333) (31311331) (23111422) (12211423) (32211421)
- (21311422) (13111513) (33111511) (22211512) (11311513) (31311511) (23211151)
- (12311152) (21411151) (24111241) (13211242) (22311241) (11411242) (14111332)
- (23211331) (12311332) (21411331) (24111421) (13211422) (22311421) (11411422)
- (14111512) (23211511) (12311512) (21411511) (13311151) (11511151) (14211241)
- (12411241) (15111331) (13311331) (11511331) (14211421) (12411421) (15111511)
- (13311511) (11511511) (31121152) (21112153) (41112151) (21121243) (41121241)
- (11112244) (31112242) (11121334) (31121332) (21112333) (41112331) (21121423)
- (41121421) (11112424) (31112422) (11121514) (31121512) (21112513) (41112511)
- (12121153) (32121151) (21221152) (22112152) (11212153) (22121242) (11221243)
- (31221241) (12112243) (32112241) (12121333) (32121331) (21221332) (22112332)
- (11212333) (22121422) (11221423) (31221421) (12112423) (32112421) (12121513)
- (32121511) (21221512) (22112512) (11212513) (31212511) (13121152) (22221151)
- (11321152) (23112151) (12212152) (23121241) (12221242) (21321241) (13112242)
- (13121332) (11312242) (22221331) (11321332) (23112331) (12212332) (23121421)
- (12221422) (21321421) (13112422) (13121512) (11312422) (22221511) (11321512)
- (23112511) (12212512) (21312511) (14121151) (12321151) (13212151) (13221241)
- (11412151) (11421241) (14112241) (14121331) (12312241) (12321331) (13212331)
- (13221421) (11412331) (11421421) (14112421) (14121511) (12312421) (12321511)
- (13212511) (11412511) (11131153) (31131151) (21122152) (21131242) (11113153)
- (31113151) (11122243) (31122241) (11131333) (31131331) (21113242) (21122332)
- (21131422) (11113333) (31113331) (11122423) (31122421) (11131513) (31131511)
- (21113422) (21122512) (12131152) (21231151) (22122151) (11222152) (22131241)
- (11231242) (12113152) (12122242) (12131332) (21231331) (22113241) (11213242)
- (22122331) (11222332) (22131421) (11231422) (12113332) (12122422) (12131512)
- (21231511) (22113421) (11213422) (22122511) (11222512) (13131151) (11331151)
- (12222151) (12231241) (13113151) (13122241) (11313151) (13131331) (11322241)
- (11331331) (12213241) (12222331) (12231421) (13113331) (13122421) (11313331)
- (13131511) (11322421) (11331511) (12213421) (12222511) (11141152) (21132151)
- (21141241) (11123152) (11132242) (11141332) (21114151) (21123241) (21132331)
- (21141421) (11114242) (11123332) (11132422) (11141512) (21114331) (21123421)
- (21132511) (12141151) (11232151) (11241241) (12123151) (12132241) (12141331)
- (11214151) (11223241) (11232331) (11241421) (12114241) (12123331) (12132421)
- (12141511) (11214331) (11223421) (11232511) (11151151) (11133151) (11142241)
- (11151331) (11115151) (11124241) (11133331) (11142421) (11151511) (11111254)
- (31111252) (21111343) (41111341) (11111434) (31111432) (21111523) (41111521)
- (11111614) (31111612) (31211161) (12111253) (32111251) (21211252) (22111342)
- (11211343) (31211341) (12111433) (32111431) (21211432) (22111522) (11211523)
- (31211521) (12111613) (32111611) (21211612) (12211162) (21311161) (13111252)
- (22211251) (11311252) (23111341) (12211342) (21311341) (13111432) (22211431)
- (11311432) (23111521) (12211522) (21311521) (13111612) (22211611) (11311612)
- (13211161) (11411161) (14111251) (12311251) (13211341) (11411341) (14111431)
- (12311431) (13211521) (11411521) (14111611) (12311611) (21121162) (11112163)
- (31112161) (11121253) (31121251) (21112252) (21121342) (11112343) (31112341)
- (11121433) (31121431) (21112432) (21121522) (11112523) (31112521) (11121613)
- (31121611) (22121161) (11221162) (12112162) (12121252) (21221251) (22112251)
- (11212252) (22121341) (11221342) (12112342) (12121432) (21221431) (22112431)
- (11212432) (22121521) (11221522) (12112522) (12121612) (21221611) (12221161)
- (13112161) (13121251) (11312161) (11321251) (32121115) (52121113) (21221116)
- (41221114) (61221112) (22112116) (42112114) (31212115) (51212113) (13121116)
- (33121114) (22221115) (42221113) (11321116) (31321114) (51321112) (23112115)
- (43112113) (12212116) (32212114) (52212112) (21312115) (41312113) (61312111)
- (14121115) (34121113) (23221114) (43221112) (12321115) (32321113) (52321111)
- (21421114) (41421112) (24112114) (13212115) (33212113) (22312114) (42312112)
- (11412115) (31412113) (51412111) (15121114) (24221113) (13321114) (33321112)
- (22421113) (42421111) (11521114) (31521112) (25112113) (14212114) (34212112)
- (23312113) (43312111) (12412114) (32412112) (21512113) (41512111) (16121113)
- (25221112) (14321113) (34321111) (23421112) (12521113) (32521111) (15212113)
- (24312112) (13412113) (33412111) (22512112) (11612113) (31612111) (31131115)
- (51131113) (21122116) (41122114) (61122112) (31113115) (51113113) (12131116)
- (32131114) (52131112) (21231115) (41231113) (61231111) (22122115) (42122113)
- (11222116) (31222114) (51222112) (12113116) (32113114) (52113112) (21213115)
- (41213113) (61213111) (13131115) (33131113) (22231114) (42231112) (11331115)
- (31331113) (51331111) (23122114) (43122112) (12222115) (32222113) (52222111)
- (21322114) (41322112) (13113115) (33113113) (22213114) (42213112) (11313115)
- (31313113) (51313111) (14131114) (34131112) (23231113) (43231111) (12331114)
- (32331112) (21431113) (41431111) (24122113) (13222114) (33222112) (22322113)
- (42322111) (11422114) (31422112) (14113114) (34113112) (23213113) (43213111)
- (12313114) (32313112) (21413113) (41413111) (15131113) (24231112) (13331113)
- (33331111) (22431112) (25122112) (14222113) (34222111) (23322112) (12422113)
- (32422111) (21522112) (15113113) (24213112) (13313113) (33313111) (22413112)
- (11513113) (31513111) (16131112) (25231111) (14331112) (23431111) (15222112)
- (24322111) (13422112) (22522111) (16113112) (25213111) (14313112) (23413111)
- (12513112) (21613111) (11141116) (31141114) (51141112) (21132115) (41132113)
- (61132111) (11123116) (31123114) (51123112) (21114115) (41114113) (61114111)
- (12141115) (32141113) (52141111) (21241114) (41241112) (22132114) (42132112)
- (11232115) (31232113) (51232111) (12123115) (32123113) (52123111) (21223114)
- (41223112) (22114114) (42114112) (11214115) (31214113) (51214111) (13141114)
- (33141112) (22241113) (42241111) (11341114) (31341112) (23132113) (43132111)
- (12232114) (32232112) (21332113) (41332111) (13123114) (33123112) (22223113)
- (42223111) (11323114) (31323112) (23114113) (43114111) (12214114) (32214112)
- (21314113) (41314111) (14141113) (34141111) (23241112) (12341113) (32341111)
- (24132112) (13232113) (33232111) (22332112) (11432113) (31432111) (14123113)
- (34123111) (23223112) (12323113) (32323111) (21423112) (24114112) (13214113)
- (33214111) (22314112) (11414113) (31414111) (15141112) (24241111) (13341112)
- (25132111) (14232112) (23332111) (12432112) (15123112) (24223111) (13323112)
- (22423111) (11523112) (25114111) (14214112) (23314111) (12414112) (21514111)
- (16141111) (14341111) (15232111) (13432111) (16123111) (14323111) (12523111)
- (15214111) (13414111) (11614111) (11151115) (31151113) (51151111) (21142114)
- (41142112) (11133115) (31133113) (51133111) (21124114) (41124112) (11115115)
- (31115113) (51115111) (12151114) (32151112) (21251113) (41251111) (22142113)
- (42142111) (11242114) (31242112) (12133114) (32133112) (21233113) (41233111)
- (22124113) (42124111) (11224114) (31224112) (12115114) (32115112) (21215113)
- (41215111) (13151113) (33151111) (22251112) (23142112) (12242113) (32242111)
- (21342112) (13133113) (33133111) (22233112) (11333113) (31333111) (23124112)
- (12224113) (32224111) (21324112) (13115113) (33115111) (22215112) (11315113)
- (31315111) (14151112) (23251111) (24142111) (13242112) (22342111) (14133112)
- (23233111) (12333112) (21433111) (24124111) (13224112) (22324111) (11424112)
- (14115112) (23215111) (12315112) (21415111) (15151111) (14242111) (15133111)
- (13333111) (14224111) (12424111) (15115111) (13315111) (11515111) (11161114)
- (31161112) (21152113) (41152111) (11143114) (31143112) (21134113) (41134111)
- (11125114) (31125112) (21116113) (41116111) (12161113) (32161111) (22152112)
- (11252113) (31252111) (12143113) (32143111) (21243112) (22134112) (11234113)
- (31234111) (12125113) (32125111) (21225112) (22116112) (11216113) (31216111)
- (13161112) (23152111) (12252112) (13143112) (22243111) (11343112) (23134111)
- (12234112) (21334111) (13125112) (22225111) (11325112) (23116111) (12216112)
- (21316111) (14161111) (13252111) (14143111) (12343111) (13234111) (11434111)
- (14125111) (12325111) (13216111) (11416111) (31111216) (51111214) (31211125)
- (51211123) (32111215) (52111213) (21211216) (41211214) (61211212) (12211126)
- (32211124) (52211122) (21311125) (41311123) (61311121) (13111216) (33111214)
- (22211215) (42211213) (11311216) (31311214) (51311212) (13211125) (33211123)
- (22311124) (42311122) (11411125) (31411123) (51411121) (14111215) (34111213)
- (23211214) (43211212) (12311215) (32311213) (52311211) (21411214) (41411212)
- (14211124) (34211122) (23311123) (43311121) (12411124) (32411122) (21511123)
- (41511121) (15111214) (24211213) (13311214) (33311212) (22411213) (42411211)
- (11511214) (31511212) (15211123) (24311122) (13411123) (33411121) (22511122)
- (11611123) (31611121) (16111213) (25211212) (14311213) (34311211) (23411212)
- (12511213) (32511211) (21611212) (21121126) (41121124) (61121122) (31112125)
- (51112123) (31121215) (51121213) (21112216) (41112214) (61112212) (22121125)
- (42121123) (11221126) (31221124) (51221122) (12112126) (32112124) (52112122)
- (12121216) (32121214) (52121212) (21221215) (41221213) (61221211) (22112215)
- (42112213) (11212216) (31212214) (51212212) (23121124) (43121122) (12221125)
- (32221123) (52221121) (21321124) (41321122) (13112125) (33112123) (13121215)
- (33121213) (11312125) (22221214) (42221212) (11321215) (31321213) (51321211)
- (23112214) (43112212) (12212215) (32212213) (52212211) (21312214) (41312212)
- (24121123) (13221124) (33221122) (22321123) (42321121) (11421124) (31421122)
- (14112124) (34112122) (14121214) (34121212) (12312124) (23221213) (43221211)
- (12321214) (32321212) (21421213) (41421211) (24112213) (13212214) (33212212)
- (22312213) (42312211) (11412214) (31412212) (25121122) (14221123) (34221121)
- (23321122) (12421123) (32421121) (21521122) (15112123) (15121213) (13312123)
- (24221212) (13321213) (33321211) (11512123) (22421212) (11521213) (31521211)
- (25112212) (14212213) (34212211) (23312212) (12412213) (32412211) (21512212)
- (15221122) (24321121) (13421122) (22521121) (16112122) (16121212) (14312122)
- (25221211) (14321212) (12512122) (23421211) (12521212) (15212212) (24312211)
- (13412212) (22512211) (11612212) (21131125) (41131123) (61131121) (11122126)
- (31122124) (51122122) (11131216) (31131214) (51131212) (21113125) (41113123)
- (61113121) (21122215) (41122213) (61122211) (11113216) (31113214) (51113212)
- (22131124) (42131122) (11231125) (31231123) (51231121) (12122125) (32122123)
- (52122121) (12131215) (32131213) (52131211) (21231214) (41231212) (22113124)
- (42113122) (11213125) (22122214) (42122212) (11222215) (31222213) (51222211)
- (12113215) (32113213) (52113211) (21213214) (41213212) (23131123) (43131121)
- (12231124) (32231122) (21331123) (41331121) (13122124) (33122122) (13131214)
- (33131212) (11322124) (22231213) (42231211) (11331214) (31331212) (23113123)
- (43113121) (12213124) (23122213) (43122211) (12222214) (32222212) (21322213)
- (41322211) (13113214) (33113212) (22213213) (42213211) (11313214) (31313212)
- (24131122) (13231123) (33231121) (22331122) (11431123) (31431121) (14122123)
- (34122121) (14131213) (34131211) (12322123) (23231212) (12331213) (32331211)
- (21431212) (24113122) (13213123) (24122212) (13222213) (33222211) (11413123)
- (22322212) (11422213) (31422211) (14113213) (34113211) (23213212) (12313213)
- (32313211) (21413212) (25131121) (14231122) (23331121) (12431122) (15122122)
- (15131212) (13322122) (24231211) (13331212) (11522122) (22431211) (25113121)
- (14213122) (25122211) (14222212) (12413122) (23322211) (12422212) (21522211)
- (15113212) (24213211) (13313212) (22413211) (11513212) (15231121) (13431121)
- (16122121) (16131211) (14322121) (14331211) (12522121) (15213121) (15222211)
- (13413121) (13422211) (11613121) (16113211) (14313211) (12513211) (21141124)
- (41141122) (11132125) (31132123) (51132121) (11141215) (31141213) (51141211)
- (21123124) (41123122) (21132214) (41132212) (11114125) (31114123) (51114121)
- (11123215) (31123213) (51123211) (21114214) (41114212) (22141123) (42141121)
- (11241124) (31241122) (12132124) (32132122) (12141214) (32141212) (21241213)
- (41241211) (22123123) (42123121) (11223124) (22132213) (42132211) (11232214)
- (31232212) (12114124) (32114122) (12123214) (32123212) (21223213) (41223211)
- (22114213) (42114211) (11214214) (31214212) (23141122) (12241123) (32241121)
- (21341122) (13132123) (33132121) (13141213) (33141211) (11332123) (22241212)
- (11341213) (31341211) (23123122) (12223123) (23132212) (12232213) (32232211)
- (21332212) (13114123) (33114121) (13123213) (33123211) (11314123) (22223212)
- (11323213) (31323211) (23114212) (12214213) (32214211) (21314212) (24141121)
- (13241122) (22341121) (14132122) (14141212) (12332122) (23241211) (12341212)
- (24123121) (13223122) (24132211) (13232212) (11423122) (22332211) (11432212)
- (14114122) (14123212) (12314122) (23223211) (12323212) (21423211) (24114211)
- (13214212) (22314211) (11414212) (14241121) (15132121) (15141211) (13332121)
- (13341211) (14223121) (14232211) (12423121) (12432211) (15114121) (15123211)
- (13314121) (13323211) (11514121) (11523211) (14214211) (12414211) (21151123)
- (41151121) (11142124) (31142122) (11151214) (31151212) (21133123) (41133121)
- (21142213) (41142211) (11124124) (31124122) (11133214) (31133212) (21115123)
- (41115121) (21124213) (41124211) (11115214) (31115212) (22151122) (11251123)
- (31251121) (12142123) (32142121) (12151213) (32151211) (21251212) (22133122)
- (11233123) (22142212) (11242213) (31242211) (12124123) (32124121) (12133213)
- (32133211) (21233212) (22115122) (11215123) (22124212) (11224213) (31224211)
- (12115213) (32115211) (21215212) (23151121) (12251122) (13142122) (13151212)
- (11342122) (22251211) (23133121) (12233122) (23142211) (12242212) (21342211)
- (13124122) (13133212) (11324122) (22233211) (11333212) (23115121) (12215122)
- (23124211) (12224212) (21324211) (13115212) (22215211) (11315212) (13251121)
- (14142121) (14151211) (12342121) (13233121) (13242211) (11433121) (14124121)
- (14133211) (12324121) (12333211) (13215121) (13224211) (11415121) (11424211)
- (14115211) (12315211) (21161122) (11152123) (31152121) (11161213) (31161211)
- (21143122) (21152212) (11134123) (31134121) (11143213) (31143211) (21125122)
- (21134212) (11116123) (31116121) (11125213) (31125211) (22161121) (12152122)
- (12161212) (22143121) (11243122) (22152211) (11252212) (12134122) (12143212)
- (21243211) (22125121) (11225122) (22134211) (11234212) (12116122) (12125212)
- (21225211) (13152121) (13161211) (12243121) (12252211) (13134121) (13143211)
- (11334121) (11343211) (12225121) (12234211) (13116121) (13125211) (11316121)
- (11325211) (21111226) (41111224) (61111222) (31111315) (51111313) (21211135)
- (41211133) (61211131) (22111225) (42111223) (11211226) (31211224) (51211222)
- (12111316) (32111314) (52111312) (21211315) (41211313) (61211311) (22211134)
- (42211132) (11311135) (31311133) (51311131) (23111224) (43111222) (12211225)
- (32211223) (52211221) (21311224) (41311222) (13111315) (33111313) (22211314)
- (42211312) (11311315) (31311313) (51311311) (23211133) (43211131) (12311134)
- (32311132) (21411133) (41411131) (24111223) (13211224) (33211222) (22311223)
- (42311221) (11411224) (31411222) (14111314) (34111312) (23211313) (43211311)
- (12311314) (32311312) (21411313) (41411311) (24211132) (13311133) (33311131)
- (22411132) (11511133) (31511131) (25111222) (14211223) (34211221) (23311222)
- (12411223) (32411221) (21511222) (15111313) (24211312) (13311313) (33311311)
- (22411312) (11511313) (31511311) (25211131) (14311132) (23411131) (12511132)
- (21611131) (15211222) (24311221) (13411222) (22511221) (11611222) (16111312)
- (25211311) (14311312) (23411311) (12511312) (21611311) (31121134) (51121132)
- (21112135) (41112133) (61112131) (21121225) (41121223) (61121221) (11112226)
- (31112224) (51112222) (11121316) (31121314) (51121312) (21112315) (41112313)
- (61112311) (12121135) (32121133) (52121131) (21221134) (41221132) (22112134)
- (42112132) (11212135) (22121224) (42121222) (11221225) (31221223) (51221221)
- (12112225) (32112223) (52112221) (12121315) (32121313) (52121311) (21221314)
- (41221312) (22112314) (42112312) (11212315) (31212313) (51212311) (13121134)
- (33121132) (22221133) (42221131) (11321134) (31321132) (23112133) (43112131)
- (12212134) (23121223) (43121221) (12221224) (32221222) (21321223) (41321221)
- (13112224) (33112222) (13121314) (33121312) (11312224) (22221313) (42221311)
- (11321314) (31321312) (23112313) (43112311) (12212314) (32212312) (21312313)
- (41312311) (14121133) (34121131) (23221132) (12321133) (32321131) (21421132)
- (24112132) (13212133) (24121222) (13221223) (33221221) (11412133) (22321222)
- (11421223) (31421221) (14112223) (34112221) (14121313) (34121311) (12312223)
- (23221312) (12321313) (32321311) (21421312) (24112312) (13212313) (33212311)
- (22312312) (11412313) (31412311) (15121132) (24221131) (13321132) (22421131)
- ] [ % Odd parity
- (22121116) (42121114) (31221115) (51221113) (32112115) (52112113) (21212116)
- (41212114) (61212112) (23121115) (43121113) (12221116) (32221114) (52221112)
- (21321115) (41321113) (61321111) (13112116) (33112114) (22212115) (42212113)
- (11312116) (31312114) (51312112) (24121114) (13221115) (33221113) (22321114)
- (42321112) (11421115) (31421113) (51421111) (14112115) (34112113) (23212114)
- (43212112) (12312115) (32312113) (52312111) (21412114) (41412112) (25121113)
- (14221114) (34221112) (23321113) (43321111) (12421114) (32421112) (21521113)
- (41521111) (15112114) (24212113) (13312114) (33312112) (22412113) (42412111)
- (11512114) (31512112) (15221113) (24321112) (13421113) (33421111) (22521112)
- (16112113) (25212112) (14312113) (34312111) (23412112) (12512113) (32512111)
- (21612112) (21131116) (41131114) (61131112) (31122115) (51122113) (21113116)
- (41113114) (61113112) (22131115) (42131113) (11231116) (31231114) (51231112)
- (12122116) (32122114) (52122112) (21222115) (41222113) (61222111) (22113115)
- (42113113) (11213116) (31213114) (51213112) (23131114) (43131112) (12231115)
- (32231113) (52231111) (21331114) (41331112) (13122115) (33122113) (22222114)
- (42222112) (11322115) (31322113) (51322111) (23113114) (43113112) (12213115)
- (32213113) (52213111) (21313114) (41313112) (24131113) (13231114) (33231112)
- (22331113) (42331111) (11431114) (31431112) (14122114) (34122112) (23222113)
- (43222111) (12322114) (32322112) (21422113) (41422111) (24113113) (13213114)
- (33213112) (22313113) (42313111) (11413114) (31413112) (25131112) (14231113)
- (34231111) (23331112) (12431113) (32431111) (15122113) (24222112) (13322113)
- (33322111) (22422112) (11522113) (31522111) (25113112) (14213113) (34213111)
- (23313112) (12413113) (32413111) (21513112) (15231112) (24331111) (13431112)
- (16122112) (25222111) (14322112) (23422111) (12522112) (15213112) (24313111)
- (13413112) (22513111) (11613112) (21141115) (41141113) (61141111) (11132116)
- (31132114) (51132112) (21123115) (41123113) (61123111) (11114116) (31114114)
- (51114112) (22141114) (42141112) (11241115) (31241113) (51241111) (12132115)
- (32132113) (52132111) (21232114) (41232112) (22123114) (42123112) (11223115)
- (31223113) (51223111) (12114115) (32114113) (52114111) (21214114) (41214112)
- (23141113) (43141111) (12241114) (32241112) (21341113) (41341111) (13132114)
- (33132112) (22232113) (42232111) (11332114) (31332112) (23123113) (43123111)
- (12223114) (32223112) (21323113) (41323111) (13114114) (33114112) (22214113)
- (42214111) (11314114) (31314112) (24141112) (13241113) (33241111) (22341112)
- (14132113) (34132111) (23232112) (12332113) (32332111) (21432112) (24123112)
- (13223113) (33223111) (22323112) (11423113) (31423111) (14114113) (34114111)
- (23214112) (12314113) (32314111) (21414112) (25141111) (14241112) (23341111)
- (15132112) (24232111) (13332112) (22432111) (25123111) (14223112) (23323111)
- (12423112) (21523111) (15114112) (24214111) (13314112) (22414111) (11514112)
- (15241111) (16132111) (14332111) (15223111) (13423111) (16114111) (14314111)
- (12514111) (21151114) (41151112) (11142115) (31142113) (51142111) (21133114)
- (41133112) (11124115) (31124113) (51124111) (21115114) (41115112) (22151113)
- (42151111) (11251114) (31251112) (12142114) (32142112) (21242113) (41242111)
- (22133113) (42133111) (11233114) (31233112) (12124114) (32124112) (21224113)
- (41224111) (22115113) (42115111) (11215114) (31215112) (23151112) (12251113)
- (32251111) (13142113) (33142111) (22242112) (11342113) (31342111) (23133112)
- (12233113) (32233111) (21333112) (13124113) (33124111) (22224112) (11324113)
- (31324111) (23115112) (12215113) (32215111) (21315112) (24151111) (13251112)
- (14142112) (23242111) (12342112) (24133111) (13233112) (22333111) (11433112)
- (14124112) (23224111) (12324112) (21424111) (24115111) (13215112) (22315111)
- (11415112) (14251111) (15142111) (13342111) (14233111) (12433111) (15124111)
- (13324111) (11524111) (14215111) (12415111) (21161113) (41161111) (11152114)
- (31152112) (21143113) (41143111) (11134114) (31134112) (21125113) (41125111)
- (11116114) (31116112) (22161112) (12152113) (32152111) (21252112) (22143112)
- (11243113) (31243111) (12134113) (32134111) (21234112) (22125112) (11225113)
- (31225111) (12116113) (32116111) (21216112) (23161111) (13152112) (22252111)
- (23143111) (12243112) (21343111) (13134112) (22234111) (11334112) (23125111)
- (12225112) (21325111) (13116112) (22216111) (11316112) (14152111) (13243111)
- (14134111) (12334111) (13225111) (11425111) (14116111) (12316111) (41111215)
- (61111213) (21211126) (41211124) (61211122) (22111216) (42111214) (31211215)
- (51211213) (22211125) (42211123) (11311126) (31311124) (51311122) (23111215)
- (43111213) (12211216) (32211214) (52211212) (21311215) (41311213) (61311211)
- (23211124) (43211122) (12311125) (32311123) (52311121) (21411124) (41411122)
- (24111214) (13211215) (33211213) (22311214) (42311212) (11411215) (31411213)
- (51411211) (24211123) (13311124) (33311122) (22411123) (42411121) (11511124)
- (31511122) (25111213) (14211214) (34211212) (23311213) (43311211) (12411214)
- (32411212) (21511213) (41511211) (25211122) (14311123) (34311121) (23411122)
- (12511123) (32511121) (21611122) (15211213) (24311212) (13411213) (33411211)
- (22511212) (11611213) (31611211) (31121125) (51121123) (21112126) (41112124)
- (61112122) (21121216) (41121214) (61121212) (31112215) (51112213) (12121126)
- (32121124) (52121122) (21221125) (41221123) (61221121) (22112125) (42112123)
- (11212126) (22121215) (42121213) (11221216) (31221214) (51221212) (12112216)
- (32112214) (52112212) (21212215) (41212213) (61212211) (13121125) (33121123)
- (22221124) (42221122) (11321125) (31321123) (51321121) (23112124) (43112122)
- (12212125) (23121214) (43121212) (12221215) (32221213) (52221211) (21321214)
- (41321212) (13112215) (33112213) (22212214) (42212212) (11312215) (31312213)
- (51312211) (14121124) (34121122) (23221123) (43221121) (12321124) (32321122)
- (21421123) (41421121) (24112123) (13212124) (24121213) (13221214) (33221212)
- (11412124) (22321213) (42321211) (11421214) (31421212) (14112214) (34112212)
- (23212213) (43212211) (12312214) (32312212) (21412213) (41412211) (15121123)
- (24221122) (13321123) (33321121) (22421122) (11521123) (31521121) (25112122)
- (14212123) (25121212) (14221213) (34221211) (12412123) (23321212) (12421213)
- (32421211) (21521212) (15112213) (24212212) (13312213) (33312211) (22412212)
- (11512213) (31512211) (16121122) (25221121) (14321122) (23421121) (12521122)
- (15212122) (15221212) (13412122) (24321211) (13421212) (11612122) (22521211)
- (16112212) (25212211) (14312212) (23412211) (12512212) (21612211) (11131126)
- (31131124) (51131122) (21122125) (41122123) (61122121) (21131215) (41131213)
- (61131211) (11113126) (31113124) (51113122) (11122216) (31122214) (51122212)
- (21113215) (41113213) (61113211) (12131125) (32131123) (52131121) (21231124)
- (41231122) (22122124) (42122122) (11222125) (22131214) (42131212) (11231215)
- (31231213) (51231211) (12113125) (32113123) (52113121) (12122215) (32122213)
- (52122211) (21222214) (41222212) (22113214) (42113212) (11213215) (31213213)
- (51213211) (13131124) (33131122) (22231123) (42231121) (11331124) (31331122)
- (23122123) (43122121) (12222124) (23131213) (43131211) (12231214) (32231212)
- (21331213) (41331211) (13113124) (33113122) (13122214) (33122212) (11313124)
- (22222213) (42222211) (11322214) (31322212) (23113213) (43113211) (12213214)
- (32213212) (21313213) (41313211) (14131123) (34131121) (23231122) (12331123)
- (32331121) (21431122) (24122122) (13222123) (24131212) (13231213) (33231211)
- (11422123) (22331212) (11431213) (31431211) (14113123) (34113121) (14122213)
- (34122211) (12313123) (23222212) (12322213) (32322211) (21422212) (24113212)
- (13213213) (33213211) (22313212) (11413213) (31413211) (15131122) (24231121)
- (13331122) (22431121) (25122121) (14222122) (25131211) (14231212) (12422122)
- (23331211) (12431212) (15113122) (15122212) (13313122) (24222211) (13322212)
- (11513122) (22422211) (11522212) (25113211) (14213212) (23313211) (12413212)
- (21513211) (16131121) (14331121) (15222121) (15231211) (13422121) (13431211)
- (16113121) (16122211) (14313121) (14322211) (12513121) (12522211) (15213211)
- (13413211) (11613211) (11141125) (31141123) (51141121) (21132124) (41132122)
- (21141214) (41141212) (11123125) (31123123) (51123121) (11132215) (31132213)
- (51132211) (21114124) (41114122) (21123214) (41123212) (11114215) (31114213)
- (51114211) (12141124) (32141122) (21241123) (41241121) (22132123) (42132121)
- (11232124) (22141213) (42141211) (11241214) (31241212) (12123124) (32123122)
- (12132214) (32132212) (21232213) (41232211) (22114123) (42114121) (11214124)
- (22123213) (42123211) (11223214) (31223212) (12114214) (32114212) (21214213)
- (41214211) (13141123) (33141121) (22241122) (11341123) (31341121) (23132122)
- (12232123) (23141212) (12241213) (32241211) (21341212) (13123123) (33123121)
- (13132213) (33132211) (11323123) (22232212) (11332213) (31332211) (23114122)
- (12214123) (23123212) (12223213) (32223211) (21323212) (13114213) (33114211)
- (22214212) (11314213) (31314211) (14141122) (23241121) (12341122) (24132121)
- (13232122) (24141211) (13241212) (11432122) (22341211) (14123122) (14132212)
- (12323122) (23232211) (12332212) (21432211) (24114121) (13214122) (24123211)
- (13223212) (11414122) (22323211) (11423212) (14114212) (23214211) (12314212)
- (21414211) (15141121) (13341121) (14232121) (14241211) (12432121) (15123121)
- (15132211) (13323121) (13332211) (11523121) (14214121) (14223211) (12414121)
- (12423211) (15114211) (13314211) (11514211) (11151124) (31151122) (21142123)
- (41142121) (21151213) (41151211) (11133124) (31133122) (11142214) (31142212)
- (21124123) (41124121) (21133213) (41133211) (11115124) (31115122) (11124214)
- (31124212) (21115213) (41115211) (12151123) (32151121) (21251122) (22142122)
- (11242123) (22151212) (11251213) (31251211) (12133123) (32133121) (12142213)
- (32142211) (21242212) (22124122) (11224123) (22133212) (11233213) (31233211)
- (12115123) (32115121) (12124213) (32124211) (21224212) (22115212) (11215213)
- (31215211) (13151122) (22251121) (23142121) (12242122) (23151211) (12251212)
- (13133122) (13142212) (11333122) (22242211) (11342212) (23124121) (12224122)
- (23133211) (12233212) (21333211) (13115122) (13124212) (11315122) (22224211)
- (11324212) (23115211) (12215212) (21315211) (14151121) (13242121) (13251211)
- (14133121) (14142211) (12333121) (12342211) (13224121) (13233211) (11424121)
- (11433211) (14115121) (14124211) (12315121) (12324211) (13215211) (11415211)
- (11161123) (31161121) (21152122) (21161212) (11143123) (31143121) (11152213)
- (31152211) (21134122) (21143212) (11125123) (31125121) (11134213) (31134211)
- (21116122) (21125212) (12161122) (22152121) (11252122) (22161211) (12143122)
- (12152212) (21252211) (22134121) (11234122) (22143211) (11243212) (12125122)
- (12134212) (21234211) (22116121) (11216122) (22125211) (11225212) (13161121)
- (12252121) (13143121) (13152211) (11343121) (12234121) (12243211) (13125121)
- (13134211) (11325121) (11334211) (12216121) (12225211) (31111225) (51111223)
- (21111316) (41111314) (61111312) (31211134) (51211132) (12111226) (32111224)
- (52111222) (21211225) (41211223) (61211221) (22111315) (42111313) (11211316)
- (31211314) (51211312) (12211135) (32211133) (52211131) (21311134) (41311132)
- (13111225) (33111223) (22211224) (42211222) (11311225) (31311223) (51311221)
- (23111314) (43111312) (12211315) (32211313) (52211311) (21311314) (41311312)
- (13211134) (33211132) (22311133) (42311131) (11411134) (31411132) (14111224)
- (34111222) (23211223) (43211221) (12311224) (32311222) (21411223) (41411221)
- (24111313) (13211314) (33211312) (22311313) (42311311) (11411314) (31411312)
- (14211133) (34211131) (23311132) (12411133) (32411131) (21511132) (15111223)
- (24211222) (13311223) (33311221) (22411222) (11511223) (31511221) (25111312)
- (14211313) (34211311) (23311312) (12411313) (32411311) (21511312) (15211132)
- (24311131) (13411132) (22511131) (11611132) (16111222) (25211221) (14311222)
- (23411221) (12511222) (21611221) (15211312) (24311311) (13411312) (22511311)
- (11611312) (21121135) (41121133) (61121131) (11112136) (31112134) (51112132)
- (11121226) (31121224) (51121222) (21112225) (41112223) (61112221) (21121315)
- (41121313) (61121311) (11112316) (31112314) (51112312) (22121134) (42121132)
- (11221135) (31221133) (51221131) (12112135) (32112133) (52112131) (12121225)
- (32121223) (52121221) (21221224) (41221222) (22112224) (42112222) (11212225)
- (22121314) (42121312) (11221315) (31221313) (51221311) (12112315) (32112313)
- (52112311) (21212314) (41212312) (23121133) (43121131) (12221134) (32221132)
- (21321133) (41321131) (13112134) (33112132) (13121224) (33121222) (11312134)
- (22221223) (42221221) (11321224) (31321222) (23112223) (43112221) (12212224)
- (23121313) (43121311) (12221314) (32221312) (21321313) (41321311) (13112314)
- (33112312) (22212313) (42212311) (11312314) (31312312) (24121132) (13221133)
- (33221131) (22321132) (11421133) (31421131) (14112133) (34112131) (14121223)
- (34121221) (12312133) (23221222) (12321223) (32321221) (21421222) (24112222)
- (13212223) (24121312) (13221313) (33221311) (11412223) (22321312) (11421313)
- (31421311) (14112313) (34112311) (23212312) (12312313) (32312311) (21412312)
- (25121131) (14221132) (23321131) (12421132) (21521131) (15112132) (15121222)
- (13312132) (24221221) (13321222) (11512132) (22421221) (11521222) (25112221)
- (14212222) (25121311) (14221312) (12412222) (23321311) (12421312) (21521311)
- (15112312) (24212311) (13312312) (22412311) (11512312) (15221131) (13421131)
- (16112131) (16121221) (14312131) (14321221) (12512131) (12521221) (15212221)
- (15221311) (13412221) (13421311) (11612221) (16112311) (14312311) (12512311)
- (21131134) (41131132) (11122135) (31122133) (51122131) (11131225) (31131223)
- (51131221) (21113134) (41113132) (21122224) (41122222) (21131314) (41131312)
- (11113225) (31113223) (51113221) (11122315) (31122313) (51122311) (21113314)
- (41113312) (22131133) (42131131) (11231134) (31231132) (12122134) (32122132)
- (12131224) (32131222) (21231223) (41231221) (22113133) (42113131) (11213134)
- (22122223) (42122221) (11222224) (22131313) (42131311) (11231314) (31231312)
- (12113224) (32113222) (12122314) (32122312) (21222313) (41222311) (22113313)
- (42113311) (11213314) (31213312) (23131132) (12231133) (32231131) (21331132)
- (13122133) (33122131) (13131223) (33131221) (11322133) (22231222) (11331223)
- (31331221) (23113132) (12213133) (23122222) (12222223) (23131312) (12231313)
- (32231311) (21331312) (13113223) (33113221) (13122313) (33122311) (11313223)
- (22222312) (11322313) (31322311) (23113312) (12213313) (32213311) (21313312)
- (24131131) (13231132) (22331131) (11431132) (14122132) (14131222) (12322132)
- (23231221) (12331222) (21431221) (24113131) (13213132) (24122221) (13222222)
- (24131311) (11413132) (13231312) (11422222) (22331311) (11431312) (14113222)
- (14122312) (12313222) (23222311) (12322312) (21422311) (24113311) (13213312)
- (22313311) (11413312) (14231131) (12431131) (15122131) (15131221) (13322131)
- (13331221) (11522131) (14213131) (14222221) (12413131) (14231311) (12422221)
- (12431311) (15113221) (15122311) (13313221) (13322311) (11513221) (11522311)
- (14213311) (12413311) (21141133) (41141131) (11132134) (31132132) (11141224)
- (31141222) (21123133) (41123131) (21132223) (41132221) (21141313) (41141311)
- (11114134) (31114132) (11123224) (31123222) (11132314) (31132312) (21114223)
- (41114221) (21123313) (41123311) (11114314) (31114312) (22141132) (11241133)
- (31241131) (12132133) (32132131) (12141223) (32141221) (21241222) (22123132)
- (11223133) (22132222) (11232223) (22141312) (11241313) (31241311) (12114133)
- (32114131) (12123223) (32123221) (12132313) (32132311) (21232312) (22114222)
- (11214223) (22123312) (11223313) (31223311) (12114313) (32114311) (21214312)
- (23141131) (12241132) (21341131) (13132132) (13141222) (11332132) (22241221)
- (11341222) (23123131) (12223132) (23132221) (12232222) (23141311) (12241312)
- (21341311) (13114132) (13123222) (11314132) (13132312) (11323222) (22232311)
- (11332312) (23114221) (12214222) (23123311) (12223312) (21323311) (13114312)
- (22214311) (11314312) (13241131) (14132131) (14141221) (12332131) (12341221)
- (13223131) (13232221) (11423131) (13241311) (11432221) (14114131) (14123221)
- (12314131) (14132311) (12323221) (12332311) (13214221) (13223311) (11414221)
- (11423311) (14114311) (12314311) (21151132) (11142133) (31142131) (11151223)
- (31151221) (21133132) (21142222) (21151312) (11124133) (31124131) (11133223)
- (31133221) (11142313) (31142311) (21115132) (21124222) (21133312) (11115223)
- (31115221) (11124313) (31124311) (22151131) (11251132) (12142132) (12151222)
- (21251221) (22133131) (11233132) (22142221) (11242222) (22151311) (11251312)
- (12124132) (12133222) (12142312) (21242311) (22115131) (11215132) (22124221)
- (11224222) (22133311) (11233312) (12115222) (12124312) (21224311) (12251131)
- (13142131) (13151221) (11342131) (12233131) (12242221) (12251311) (13124131)
- (13133221) (11324131) (13142311) (11333221) (11342311) (12215131) (12224221)
- (12233311) (13115221) (13124311) (11315221) (11324311) (21161131) (11152132)
- (11161222) (21143131) (21152221) (21161311) (11134132) (11143222) (11152312)
- (21125131) (21134221) (21143311) (11116132) (11125222) (11134312) (12152131)
- (12161221) (11243131) (11252221) (12134131) (12143221) (12152311) (11225131)
- (11234221) (11243311) (12116131) (12125221) (12134311) (21111235) (41111233)
- (61111231) (11111326) (31111324) (51111322) (21111415) (41111413) (61111411)
- (21211144) (41211142) (22111234) (42111232) (11211235) (31211233) (51211231)
- (12111325) (32111323) (52111321) (21211324) (41211322) (22111414) (42111412)
- (11211415) (31211413) (51211411) (22211143) (42211141) (11311144) (31311142)
- (23111233) (43111231) (12211234) (32211232) (21311233) (41311231) (13111324)
- (33111322) (22211323) (42211321) (11311324) (31311322) (23111413) (43111411)
- (12211414) (32211412) (21311413) (41311411) (23211142) (12311143) (32311141)
- (21411142) (24111232) (13211233) (33211231) (22311232) (11411233) (31411231)
- (14111323) (34111321) (23211322) (12311323) (32311321) (21411322) (24111412)
- (13211413) (33211411) (22311412) (11411413) (31411411) (24211141) (13311142)
- (22411141) (11511142) (25111231) (14211232) (23311231) (12411232) (21511231)
- (15111322) (24211321) (13311322) (22411321) (11511322) (25111411) (14211412)
- (23311411) (12411412) (21511411) (14311141) (12511141) (15211231) (13411231)
- (11611231) (16111321) (14311321) (12511321) (15211411) (13411411) (11611411)
- (31121143) (51121141) (21112144) (41112142) (21121234) (41121232) (11112235)
- (31112233) (51112231) (11121325) (31121323) (51121321) (21112324) (41112322)
- (21121414) (41121412) (11112415) (31112413) (51112411) (12121144) (32121142)
- (21221143) (41221141) (22112143) (42112141) (11212144) (22121233) (42121231)
- (11221234) (31221232) (12112234) (32112232) (12121324) (32121322) (21221323)
- (41221321) (22112323) (42112321) (11212324) (22121413) (42121411) (11221414)
- (31221412) (12112414) (32112412) (21212413) (41212411) (13121143) (33121141)
- (22221142) (11321143) (31321141) (23112142) (12212143) (23121232) (12221233)
- (32221231) (21321232) (13112233) (33112231) (13121323) (33121321) (11312233)
- (22221322) (11321323) (31321321) (23112322) (12212323) (23121412) (12221413)
- (32221411) (21321412) (13112413) (33112411) (22212412) (11312413) (31312411)
- (14121142) (23221141) (12321142) (21421141) (24112141) (13212142) (24121231)
- (13221232) (11412142) (22321231) (11421232) (14112232) (14121322) (12312232)
- (23221321) (12321322) (21421321) (24112321) (13212322) (24121411) (13221412)
- (11412322) (22321411) (11421412) (14112412) (23212411) (12312412) (21412411)
- (15121141) (13321141) (11521141) (14212141) (14221231) (12412141) (12421231)
- (15112231) (15121321) (13312231) (13321321) (11512231) (11521321) (14212321)
- (14221411) (12412321) (12421411) (15112411) (13312411) (11512411) (11131144)
- (31131142) (21122143) (41122141) (21131233) (41131231) (11113144) (31113142)
- (11122234) (31122232) (11131324) (31131322) (21113233) (41113231) (21122323)
- (41122321) (21131413) (41131411) (11113324) (31113322) (11122414) (31122412)
- (21113413) (41113411) (12131143) (32131141) (21231142) (22122142) (11222143)
- (22131232) (11231233) (31231231) (12113143) (32113141) (12122233) (32122231)
- (12131323) (32131321) (21231322) (22113232) (11213233) (22122322) (11222323)
- (22131412) (11231413) (31231411) (12113323) (32113321) (12122413) (32122411)
- (21222412) (22113412) (11213413) (31213411) (13131142) (22231141) (11331142)
- (23122141) (12222142) (23131231) (12231232) (21331231) (13113142) (13122232)
- (11313142) (13131322) (11322232) (22231321) (11331322) (23113231) (12213232)
- (23122321) (12222322) (23131411) (12231412) (21331411) (13113322) (13122412)
- (11313322) (22222411) (11322412) (23113411) (12213412) (21313411) (14131141)
- (12331141) (13222141) (13231231) (11422141) (11431231) (14113141) (14122231)
- (12313141) (14131321) (12322231) (12331321) (13213231) (13222321) (11413231)
- (13231411) (11422321) (11431411) (14113321) (14122411) (12313321) (12322411)
- (13213411) (11413411) (11141143) (31141141) (21132142) (21141232) (11123143)
- (31123141) (11132233) (31132231) (11141323) (31141321) (21114142) (21123232)
- (21132322) (21141412) (11114233) (31114231) (11123323) (31123321) (11132413)
- (31132411) (21114322) (21123412) (12141142) (21241141) (22132141) (11232142)
- (22141231) (11241232) (12123142) (12132232) (12141322) (21241321) (22114141)
- (11214142) (22123231) (11223232) (22132321) (11232322) (22141411) (11241412)
- (12114232) (12123322) (12132412) (21232411) (22114321) (11214322) (22123411)
- (11223412) (13141141) (11341141) (12232141) (12241231) (13123141) (13132231)
- (11323141) (13141321) (11332231) (11341321) (12214141) (12223231) (12232321)
- (12241411) (13114231) (13123321) (11314231) (13132411) (11323321) (11332411)
- (12214321) (12223411) (11151142) (21142141) (21151231) (11133142) (11142232)
- (11151322) (21124141) (21133231) (21142321) (21151411) (11115142) (11124232)
- (11133322) (11142412) (21115231) (21124321) (21133411) (12151141) (11242141)
- (11251231) (12133141) (12142231) (12151321) (11224141) (11233231) (11242321)
- (11251411) (12115141) (12124231) (12133321) (12142411) (11215231) (11224321)
- (11233411) (11161141) (11143141) (11152231) (11161321) (11125141) (11134231)
- (11143321) (11152411) (11111245) (31111243) (51111241) (21111334) (41111332)
- (11111425) (31111423) (51111421) (21111514) (41111512) (31211152) (12111244)
- (32111242) (21211243) (41211241) (22111333) (42111331) (11211334) (31211332)
- (12111424) (32111422) (21211423) (41211421) (22111513) (42111511) (11211514)
- (31211512) (12211153) (32211151) (21311152) (13111243) (33111241) (22211242)
- (11311243) (31311241) (23111332) (12211333) (32211331) (21311332) (13111423)
- (33111421) (22211422) (11311423) (31311421) (23111512) (12211513) (32211511)
- (21311512) (13211152) (22311151) (11411152) (14111242) (23211241) (12311242)
- (21411241) (24111331) (13211332) (22311331) (11411332) (14111422) (23211421)
- (12311422) (21411421) (24111511) (13211512) (22311511) (11411512) (14211151)
- (12411151) (15111241) (13311241) (11511241) (14211331) (12411331) (15111421)
- (13311421) (11511421) (14211511) (12411511) (21121153) (41121151) (11112154)
- (31112152) (11121244) (31121242) (21112243) (41112241) (21121333) (41121331)
- (11112334) (31112332) (11121424) (31121422) (21112423) (41112421) (21121513)
- (41121511) (11112514) (31112512) (22121152) (11221153) (31221151) (12112153)
- (32112151) (12121243) (32121241) (21221242) (22112242) (11212243) (22121332)
- (11221333) (31221331) (12112333) (32112331) (12121423) (32121421) (21221422)
- (22112422) (11212423) (22121512) (11221513) (31221511) (12112513) (32112511)
- (21212512) (23121151) (12221152) (21321151) (13112152) (13121242) (11312152)
- (22221241) (11321242) (23112241) (12212242) (23121331) (12221332) (21321331)
- (13112332) (13121422) (11312332) (22221421) (11321422) (23112421) (12212422)
- (23121511) (12221512) (21321511) (13112512) (22212511) (11312512) (13221151)
- (11421151) (14112151) (14121241) (12312151) (12321241) (13212241) (13221331)
- (11412241) (11421331) (14112331) (14121421) (12312331) (12321421) (13212421)
- (13221511) (11412421) (11421511) (14112511) (12312511) (21131152) (11122153)
- (31122151) (11131243) (31131241) (21113152) (21122242) (21131332) (11113243)
- (31113241) (11122333) (31122331) (11131423) (31131421) (21113332) (21122422)
- (21131512) (11113423) (31113421) (11122513) (31122511) (22131151) (11231152)
- (12122152) (12131242) (21231241) (22113151) (11213152) (22122241) (11222242)
- (22131331) (11231332) (12113242) (12122332) (12131422) (21231421) (22113331)
- (11213332) (22122421) (11222422) (22131511) (11231512) (12113422) (12122512)
- (21222511) (12231151) (13122151) (13131241) (11322151) (11331241) (12213151)
- (12222241) (12231331) (13113241) (13122331) (11313241) (13131421) (11322331)
- (11331421) (12213331) (12222421) (12231511) (13113421) (13122511) (11313421)
- (11322511) (21141151) (11132152) (11141242) (21123151) (21132241) (21141331)
- (11114152) (11123242) (11132332) (11141422) (21114241) (21123331) (21132421)
- (21141511) (11114332) (11123422) (11132512) (11241151) (12132151) (12141241)
- (11223151) (11232241) (11241331) (12114151) (12123241) (12132331) (12141421)
- (11214241) (11223331) (11232421) (11241511) (12114331) (12123421) (12132511)
- (11142151) (11151241) (11124151) (11133241) (11142331) (11151421) (11115241)
- (11124331) (11133421) (11142511) (21111253) (41111251) (11111344) (31111342)
- (21111433) (41111431) (11111524) (31111522) (21111613) (41111611) (21211162)
- (22111252) (11211253) (31211251) (12111343) (32111341) (21211342) (22111432)
- (11211433) (31211431) (12111523) (32111521) (21211522) (22111612) (11211613)
- (31211611) (22211161) (11311162) (23111251) (12211252) (21311251) (13111342)
- (22211341) (11311342) (23111431) (12211432) (21311431) (13111522) (22211521)
- (11311522) (23111611) (12211612) (21311611) (12311161) (13211251) (11411251)
- (14111341) (12311341) (13211431) (11411431) (14111521) (12311521) (13211611)
- (11411611) (31121161) (21112162) (21121252) (11112253) (31112251) (11121343)
- (31121341) (21112342) (21121432) (11112433) (31112431) (11121523) (31121521)
- (21112522) (21121612) (12121162) (21221161) (22112161) (11212162) (22121251)
- (11221252) (12112252) (12121342) (21221341) (22112341) (11212342) (22121431)
- (11221432) (12112432) (12121522) (21221521) (22112521) (11212522) (22121611)
- (11221612) (13121161) (11321161) (12212161) (12221251) (13112251) (13121341)
- (11312251) (11321341) (12212341) (12221431) (13112431) (13121521) (11312431)
- (11321521) (12212521) (12221611) (11131162) (21122161) (21131251) (11113162)
- ]
- ] def
-
- /parity [
- (1001) (0101) (1100) (0011) (1010) (0110) (1111) (0000)
- ] def
-
- % Derive the bits for each row
- /rowbits r array def
- 0 1 r 1 sub {
- /i exch def
- /p i r 1 sub ne {parity i get} {(0000)} ifelse def
- /ccrow ccs i 8 mul 8 getinterval def
- /scrow [
- 0 2 7 {ccrow exch 2 getinterval aload pop exch 49 mul add} for
- ] def
- /sbs [
- 10 1 1
- 0 1 3 {
- /j exch def
- patterns p j get 48 sub get scrow j get get {48 sub} forall
- } for
- 4 1
- ] def
- mark
- 1 sbs {1 index 0 eq {{1}} {{0}} ifelse repeat} forall
- counttomark 1 sub array astore exch pop exch pop
- rowbits i 3 -1 roll put
- } for
-
- % Populate the bitmap
- /pixs [
- 81 sepheight mul {1} repeat
- 0 1 r 2 sub {
- /i exch def
- rowheight {rowbits i get aload pop} repeat
- sepheight {10 {0} repeat 70 {1} repeat 0} repeat
- } for
- rowheight {rowbits r 1 sub get aload pop} repeat
- 81 sepheight mul {1} repeat
- ] def
-
- % Return the arguments
- <<
- /ren //renmatrix
- /pixs pixs
- /pixx 81
- /pixy pixs length 81 idiv
- /height pixs length 81 idiv 72 div
- /width 81 72 div
- /opt options
- >>
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/code49 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp code49 0.0 0 0 0
+%%BeginData: 934 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04Sp2A Mc DoL_Q" 0Op
+s'_E-,f4DKCt)Ou "b#@< ,jr A7^ o fOu "b% Df0 Z-Eaa/ 7A moLsAW ei&
+D/WrrM#WVo05tiN M#WVo 061 uTF ,0 gZ 1G< ceG A(Q%B4 uC C#a-ts F(K
+<(ASGdjFGKs\1G< ]UEc Ye7 Am oL sAW ei& E+* d.AS
+,gi+D,%uF(LLjDf Bf4D f 0W ZY :js =Eb TE(F Eqh:P
+!+/J!Ko='%<$3-B l@m1H] kFA @ ;L! rP !+/T 5^e epOuSV6P,4 <rNWD;+NHB2
+`AWf3'OtDh\P')p OOu%N5 OtC c rF_- ^lI? ITY P%BdtOuY16 E-,f4DKCt)O
+u%NL<,Z_tBl@m1H ]g15P" @<D De*E %D/W rrO t;bP05tiN+ E27?Ot;bP06
+1uTF!,LAGB8ouOu "b3Dg ,l+B kM+$+ EDCE BOt mjBQTCgOu" b4AT2<oBkM+
+$+EM+5BOtmjBQTC gOu%& cEcYf =05Yc C+C \c"@rGmhP% 'TNOu"b+L]E
+So@UX:eDe*F+NWE ILNI-gJ D0'?Q5 &-6EP 'N4 "C6AUR!KmI :C6CcD1QlmD
+3/@Qj"-Q?@/8]H@P!3W:!KsFF5*C/R30Ia,"-TX>"-Pj29RV8N3,N_LP!3WD5*C2S@VV&,05?Y
+6Ou"b#@<,jrA7Zm#F(^:/C6D8R1Qk"OP#ZpnAUT_@04J@1Ch7K,@UX:eDe*FB@ZiN#F"rLNOu"
+b415Ppm1G<?X0o5dk1G<?X15Pjk1G<?X1Pkpk1G<WeM#*8j04o*3G%#3.+?VcH"@c-R0kP;XNW
+_gH6S`7k16)K,:.$gLDDND!5*@]TD0'>4@UX:nAT!Y;Ou"b*L]ESo05?:COu%H!+C\c"Ch7LI4
+aW>WI?IP_@q]:k+C\c"@rGmh+DI!3Ou%&cEcYf(DIXf!BOPq;?BRI7"DJuf@<-0qDMSFYWKLkV
+"FFTdEas#uAKY]C!KmJH98Ho;D0mpGBOPp(Ao;+%@;L!-@UX:eDe*E%BnueQ!JglA9Ti&31G<G
+bBnunT!Ko6eHS9(UBnueQ!Ko6eP#Zpn<,H\h+DN$/BOPqEGV<bRBnueQ!Ko5lC*78I!KmJH1OY
+Et05YcC+Dl14L]D1Q9Th1bD0'?+ASrW-F(^YFOu"b$BOPpu@;m>nNWCho!ATT816)AkNWCts!B
+#l<2N@esNWD,"!BH/@6&kt4NWDM-!CVqK7?.C<NWDY1!D&4O8WEgDNWDe5!DJLS9o]6LNWDq9!
+DndW;2tZTNWE(=!E>'[<K7)\NWE4A!Eb?_=cNMdNWC_l!A9B5+H?IJNWCen!@s02-$(d`F#"kM
+DD<8GDDE>HDDNDQF!+bO1G<6O@<-O"CibCeOu8CYL]E53LbO0/Bp(ZC1Lk*,Ec#6(+DI!3OuSW
+.06;5UBl7R*H#R>X4aVtbP"U4d<+BTMEctl-F-8_$P'DD<82"IkD.7F)+Bsj-0d)JX0gUg$0g^
+m%0ggs&0gq$'0h%*(0h.0)0h76*0h@<+0hIB,0hRH-0h[N.0hdT/0hmZ00i!`10i*f20i3l30i
+<r40iF#50iO)60iX/70ia580ij;90isA:0j'G;0j0M<0j9S=0en[i0f"aj0f+gk0f4ml0f=sm+
+<Z[G0fG$n0fP*o0fY0p+=)sK+=3$L0fb6q0eeUh0eJCe0eSIf0dMb\+=iHR0e\Og+>&TT+>/ZU
++>8`V+>AfW+>JlX+>SrY+>]#Z+>f)[+>o/\+?#5]+?,;^+?5A_+?>G`0e87c1,4dj1,=jk1,Fp
+l1,P!m1,Y'n1,b-o+@2"h+@;(i+@D.j+@M4k+@V:l+@_@m+@hFn+@qLo+A%Rp+A.Xq+A7^r+A@
+ds+AIjt+ARpu+A\"!+Ae("+An.#+B"4$+B+:%+B4@&+B=F'+BFL(+BOR)+BXX*+Ba^++Bjd,1,
+k3p1,t9q1-(?r1,+^i1+eLf1+nRg1-pp%1.%!&1..''1.7-(1.@3)1.I9*1.R?+1.[E,1.dK-1
+.mQ.1/!W/1/*]01/3c11/<i21/Eo31/Nu41/X&51/a,61/j271/s8810'>9100D:109J;10BP<
+10KV=10T\>1*hk]1,"Xh1+S@d1*qq^1*Bkc1Pc$e!Jl5P056S5Ou$TdD.7F)+DI!3OuS6tP"RH
+<0p4_`1Pc'p9.sd1P!5$b@kicoP!+/%BOPq)@;L!-BcpV&@q]:kG%#3.+EK9#94MXDEctl-F!+
+sJP"T)DG^Y`S@kicpP!+/%BOPq)@;L!-BcpV&@q]:kG%#3.+EK<$94MXDEctl-F!+sJP"T)DG^
+Y`SI?I,SASu!rA7]1cE+i[,+Cf(nEctl-F-8_M99M8tY:j=)Eaa68H#R>XD0q'>OpR9ZI?IQm3
++I/RP!3WD5*C2S@VV&,05?Y6Ou%NL%[&V$@UX=h1cTi<!0TNmLbP!kP!4[/P&-9^I?I0+L]`G6
+P)#2aL]N[<H]g@E0Tp165):nU;LO^\>p*@75*@mg@Yb&JWJLS1!.0M&P$!l2P"Us%I?I-aF^:.
+i@s<!W5&-6EP'N4"C6ATNC6CcD1OYDrOu"b&DI[TqASuX-ATDKpHS98ZD0(k(Ou"b1Eb-A2F_u
+2_@Zi^,"d3V`3/@X!D0qGFI=%-VL]rs@I?ITn1Pc$e"`SKnL]N[<HZ!tCF-8_C"d2Q8"-PiW@<
+6!:3.6r\05boLF!,@CD0$h=Eb-A2F_u2_@W6@!P,XU<Ou$uuD0(kLOuS6uP!+/0F_u1BBp),#D
+I[TqARTCoBOQ=P<0B4s"-PfoL]VI:D0$h/@<6!:3.6rhOuS7#P!+/J"'^R9LbN^hD0(jAP'(%Q
+@UX=h1cToH</:dB4aVte>DP"i0Q)#MF,0gP"HlHA!g7\3+C\c#AMcB&!cE-tF,0sT"-Q>e@<6!
+:3.6rhI?G)'1G<WgD.Ra%@rc^0F!+[0D0'?+ASujN!.C#_L]C_D1Mq2GCh7L?!KsF<s+gZ%056
+S5Ou$rrB-:oO99M8j0To%k5);4^@?Lb?DKTf-EbT$(F`)7CBcq;9D.Ra%@rc^0F!,1Q!KmJH98
+EV3!Kq\UHZ!tCATDKpEcl8@+DHW3P'DD<<IL$$D/WrrM#WW$H[B^MF,9jZD0mpQDe*F8"-PI'5
+^eepDKTf-EbT$(F`)8V!0U!2"d2K)05YW<AV^DN1Qk"OP#Pq)@<-O"Ci^_9F(^:/P"Us2OuSW.
+04AmA@<ls?E+P2LH]iM)D/WrrL]ESoP!FGY</:O;98G*]4aVtfI=$bRI?IS`D/WrrP!5$bP!FG
+YAUT_@04T3I+Dl14Ch7L?!g7AU!KmJH$'I(tD.Rg&De+k3@;Kmr@?NE"Bo)eP1G<L!s,o0TDe*
+F8!0TK^De*F8!KoU/EdKHVATVU(A<$h%CiF&rOu"b*L]ESo05?:COu%NL<,HPaAV^DN4aSi!AT
+VU(A<$n4F_t]1Bk*;^0564BOu"b+L]ESoI?IQHDe*F8"-Pfo05tiNG%#20>DN]D(5NEU(Pj5j%
+YtsX,)@e+%u;*Z,D[q-2i&$$)MfYp/r2KC6AQ50)i,er08MWE6\nHm&r7N`-AX@33f$1[:5E#.
+'8RZb-\sL54,?=]:P`/0@pP6R@s<!M!/LW2!Ji7QOuRE!F*:u.P!5%%E,Tf\D0qFgI?IQXP":B
+0Oo^_j05Y9BBQ%FA"^u4dBOR&[0564BOu"b+L]NYpI?IQHDe*F8"HkobDe*F8"d2$3EdM;?F,0
+g+BOPq)@;L!-D0'?G!0U!<98EV399ONQD.Rg&De+k3@;Kmr@?NE"BnueQ1G<L!!Ko6eP#QdB+D
+l14Ch7LI4aW>WI?IQVD.Rg&De+k3@;Kmr@?Nd#DKTf-EbT$(F`)7CBp),F"d2K)DK?q3DI[TqA
+RTCoBONQ2ATVU(A<$n4F_t]1Bk*;^P!FGY<,H\h+DI!3ASu!rA7]1cE+iZ5Bcq,G!KmJH1Qk"O
+P#Q:0FD,T'NX'HED.Ra%A!0!%DKTf-EbT$(F`)7CBp),F"d3JEDK?q3DI[TqARTCoBONQ2ATVU
+(A<$h%CiF&rOu&7dI?IQHF(ZV0+Du==ATDKpEcl8@+DI!3P"]G)@rGmhDKTf-EbT#:Bcq+4DKT
+f-EbT$(F`)7CBp),P!Ko7%5^eepI?J/iP%?:VGB4m:GB8Q?C6D8R1G<TVFE2)*F!+[0>DN?:$!
+eZXL]`GE>p*@-"Gdk"+BsX*L`ThE>DNK>-!_WtL^/_c>p*@-#`(3@+C1-d06M;RGB4mIDg-8c1
+G<Hu!0T-b05VhKATVs,@ric,P"Uro06/1PL]ET2Ou"b%@s;u:D284U99M(aDeid,+EVXHAWeil
+Ec6/CL]ETTF`MDEF!,LdD3>$K05kW7Gp$^-Cia0N1OYEc@s<!W@UrtmF-9@H05kW7Gp$^-Cia0
+N1OYEcDeid,H]gXBP#O)K+DHW4Oo^_%I?J.p@s;u:>9IF"F-6TfF_#!+F!+t:F-:!qWI'FTI?K
+4gOu"b$@ric5L^9/[OpR:-05?:COu%moL]MOP!g9O0056S5Ou"b$@j#9*F!,4R#EhcD1Ljp9+D
+HW;P&+W<P'LPIF!,1Q#a0"[#Ef+D!+TMcOo]uo8Vf*aC6EfpC*78I#Ef+N1OYEWC*7%sGB8pZH
+XgQ,+Ceo&P%'4QP,Vr8F!,3?A7Kh)+DR(=P"_$aI?IP_@raLNEejd[WJCeBCi+*$AWd(W1Ljp9
++Ceo&P%'4KP,Vr32j/DiL]N;<L`_EkL]WA@L_5FZLa@iiL_bdNL`;.$L_#:lLaRudL^f.DLae-
+'La7c^L]iMVL]`GHLa\&sL`M9YL_tph?'70OP!4[9P!4[%L`hjSOogeh>q^D5BkM+$G`k7R1Qj
+_%P!4[5P!4[&L`hjSOogeh>q^D5BkM+$H'1@S1L$#+LaJ9KL]WATP"_#?P'(%`G@bK$BQSQ`5*
+@]T@ps1`@q]F`CO7^YASGdjFE<U/Ou"b4@rHC!L]ESoL]E53EejaZWJChCCkr.U;MY@:WI$:4P
+!5$b@q0R&BnuhRCm%GI0p6?_@ric,L]W`UL]NY>P"Ur=G@bK$BQS;<BnueQ!Kp*=CbKj>DfTEP
+5'(4PEb1C7Ou%NL8989ZEb0Z^%[&V$CghC,Ec6.E@q0R&@q0SC@Yb;QWJChC9Th2PL^0)8HXh(
+T+EqC2B4uC5L]ET2P&,>RBkM+$H6?^+Ch$sgARfM=!JUnhP%p.>LbY&jP!4[VP%odSOpR9ZCgh
+C,Ec6/X!/L`5s,r/#H$tiT06_Fk+DbJ-FE2;DL]ET2LbY'/CghC,Ec6/X!Kp*=!Ko6KE]5+bAS
+GdjFErZBP"UsSG@bK$BQSMB@ps1`@q]F`CQ\^BE\S\\ASGdjFEo!LL]ilWL]`g>P"UsSOo^:D@
+?PAg3%oJr16Oha1Qj_R0p5Ft5):qVC5;qS$'G[4@<6O2Dg.!=L]`J5P)#3G@raLNG@bK$BQSKT
+!0U!<Cj0H)B4uC3+Cehr@q01`@r%5.GB,D\G@bK$BQSJAEejj]Ckr1VWKKo;Cm"gCE\\b]ASGd
+jFEepKL]ilWL]Wa=P"UsSOo^:D@?PAg3/B;P;Na5"0p6:-!g3kQ$Z'6mFE2;DL]iM9M#WWnP'L
+PIF!+t&F-:!g#a20C#Ehc:!0TNmOo]uo8Vf*aC1Cap+Ceo&P%'4JP,X6>M#WWnP'AX!@<?U&Ec
+,q@>9I.1#Ve%k1,1L>16)Vq2)-g@0f(PE#Ve.k0etI>16)Vq2)-j@1,:SE#Ve.k1,1O>16)Vp1
+,L^@0f(SF#Vn1l1,1O>0ocMo1,La@1,:VF#Vn+l1,1O>0ocMo2)-g@1,:VF#Ve1k1,1R>16)Vp
+1G^a@1,:VF#Vn4l1,1R>0ocMo1G^d@1GLYF#Ve%k0etL>16)Vq1,La@1GLVE#Ve%k1,1R>16)V
+q2)-g@1GLVE#Ve.k0etO>16)Vq1G^a@1GLVE#Ve(k0etO>16)Vq0f:[@1GLVE#Ve4l1,1L>0oc
+Mo1c$mA0f(PE#Ve(l1,1L>0ocMo2)6mA0f(PE#Ve1l1,1O>0ocMo1GggA0f(PE#Ve+l1,1O>0o
+cMo0fCaA0f(PE#Ve4l0etL>0ocMo2DHsA1GLVE#Ve.l0etL>0ocMo1c$mA1GLVE#Ve(l0etL>0
+ocMo1,UgA1GLVE#Ve1l0etO>0ocMo1GggA1GLVE#Ve%l0etO>0ocMo0ekI=0f(\I#W"1i1GLU?
+1QD_u0ekI=0f(PE#Vn+h1,:R?1l_hu0ekF=0f(SF#Vn+h1GLX?1l_hu0ekI=1,:VF#Ve%g0f(O
+?23%qu0ekC=0f(VG#W4=k0f(O?0ocMo0ekF=1,:_I#W"1i1,:U?1QD_u0ekF=1,:SE#Ve%g1GL
+[?23%qu0ekI=1GL\G#W4=k1GL[?0ocMp0ekC=1,:\H#W+7j0f(R?16)Vq0ekF=1GL_H#W+7j1,
+:X?16)Vp0ekC=1GLbI#W"1i0f(U?1QD_u0ekC=1GLVE#Ve(h1GLU?1l_ht1,1R>0f(SF#Vn+i1
+GLU?1QD_t0etO>0f(PE#Vn.i1,:R?1QD_t1,1O>0f(PE#Ve%h1,:R?1l_hs1,1R>1,:YG#W+:k
+1GLX?0ocMo0etO>1,:\H#W"1j1GLX?16)Vp1,1L>0f(YH#W"4j0f(O?16)Vp1,1O>1,:\H#W"4
+j1,:U?16)Vp1,1R>1GL_H#W"4j1GL[?16)Vq0etO>1GL\G#W+7k1GL[?0ocMp1,1L>1,:YG#W+
+:k0f(R?0ocMo0etI>1,:\H#Vn.i1,:X?1QD_t1,1O>1GLVE#Ve%h1,:X?1l_ht0etL>1GLYF#V
+e(h0f(U?1l_ht1,1L>1GLYF#Vn+i0f(U?1QD_t0etI>1GLVE#Ve+i1GLU?1QD_s1GL[?0f(PE#
+Vn.j1GLU?16)Vp0f(U?0f(VG#W"1k1GLU?0ocMp1GLX?0f(SF#Ve(i1,:R?1QD_r1GL[?1,:VF
+#Ve(i1GLX?1QD_s1,:X?1,:SE#Vn+j1GLX?16)Vp1GLU?0f(VG#W"7k0f(O?0ocMo1GLX?1,:Y
+G#W"7k1,:U?0ocMo0f(O?0f(VG#Ve+i1GL[?1QD_s1GL[?1GLVE#Ve%i1,:U?1QD_r1,:X?1GL
+YF#Ve%i1GL[?1QD_s0f(U?1GLVE#Vn1j0f(R?16)Vp1,:R?1,:YG#Vn1j1,:X?16)Vp1,:U?1G
+L\G#W"4k1,:X?0ocMp0f(R?1GLYF#Ve+i0f(U?1QD_s1GLU?1GLVE#Vn.j0f(U?16)Vp0f(O?1
+GL\G#W"1k0f(U?0ocMo1bgd@0f(SF#Vn1k1GLU?0ocMo1,C^@0f(SF#Vn+k1GLU?0ocMp1bga@
+0f(PE#Ve+j1,:R?16)Vq1bgd@1,:SE#Ve+j1GLX?16)Vp0f1X@0f(SF#Vn.k1GLX?0ocMo0f1[
+@1,:VF#Ve.j0f(O?16)Vp1bga@1,:VF#Ve(j0f(O?16)Vp1bgd@1GLYF#Ve(j1,:U?16)Vq1GU
+a@1GLVE#Ve(j1GL[?16)Vq0f1[@1GLVE#Vn4k0f(R?0ocMo1GU[@1,:VF#Vn4k1,:X?0ocMo1G
+U^@1GLYF#Ve%j0f(R?16)Vq1,C[@1GLVE#Ve%j1,:X?16)Vp1bg^@1GLYF#Vn1k0f(U?0ocMo1
+,CX@1GLYF#Vn+k0f(U?0ocMo2)-mA0f(PE#Ve+k1GLU?0ocMo1bpgA0f(PE#Ve.k1GLX?0ocMo
+1,LaA0f(PE#Ve(k1GLX?0ocMo2)-gA0f(PE#Ve1k1,:U?0ocMo1G^aA0f(PE#Ve1k1GL[?0ocM
+o1G^dA1,:SE#Ve%k0f(O?0ocMo1G^gA1GLVE#Ve%k1,:U?0ocMo1bpdA1,:SE#Ve.k1,:X?0oc
+Mo1,L^A1,:SE#Ve(k1,:X?0ocMo2)-gA1GLVE#Ve+k0f(U?0ocMo0f:[A1GLVE#Ve%g1bg^@1l
+_ht0ekL>0f(SF#Vn+h1GU[@1QD_t0ekI>0f(PE#Vn+h1bga@1QD_t0ekL>1,:SE#Ve%g1,CX@1
+l_ht0ekF>0f(SF#Ve%g1GU^@1l_ht0ekI>1,:VF#Ve%g1bgd@1l_ht0ekL>1GLYF#Vn+h0f1U@
+1QD_t0ekC>0f(PE#Vn+h1,C[@1QD_t0ekF>1,:SE#Vn+h1GUa@1QD_t0ekI>1GLVE#Ve%g0f1X
+@1l_ht0ekC>1,:VF#Ve%g1,C^@1l_ht0ekF>1GLYF#Vn+h0f1[@1QD_t0ekC>1GLVE#Ve(h1bg
+^@1QD_s1,1U?0f(PE#Vn+i1bg^@16)Vq1,1R?0f(SF#Ve%h1GU[@1QD_r1,1U?1,:VF#Ve%h1b
+ga@1QD_s0etR?1,:SE#Ve(h1,CX@1QD_s1,1O?0f(PE#Ve(h1GU^@1QD_s1,1R?1,:SE#Ve(h1
+bgd@1QD_s1,1U?1GLVE#Vn+i1bgd@16)Vq1,1L?0f(SF#Ve%h0f1U@1QD_r1,1O?1,:VF#Ve%h
+1,C[@1QD_r1,1R?1GLYF#Ve%h1GUa@1QD_s0etO?1GLVE#Ve(h0f1X@1QD_s1,1L?1,:SE#Ve(
+h1,C^@1QD_s1,1O?1GLVE#Vn+i1,C^@16)Vq1,1L?1GLYF#Ve%h0f1[@1QD_s0etI?1GLVE#Ve
++i1bg^@16)Vq1,:[@0f(PE#Ve%i1bg^@16)Vq1GL[@0f(PE#Ve(i1GU[@16)Vq1GL^@1,:SE#V
+e(i1bga@16)Vq0f(X@1,:SE#Ve+i1,CX@16)Vp1GL[@1,:VF#Ve%i1,CX@16)Vp1GL^@1GLYF#
+Ve%i1GU^@16)Vq1,:[@1GLVE#Ve%i1bgd@16)Vq1GLU@0f(PE#Ve(i0f1U@16)Vq1GLX@1,:SE
+#Ve(i1,C[@16)Vq1GL[@1GLVE#Ve(i1GUa@16)Vq0f(U@1GLVE#Ve+i0f1X@16)Vp1GLX@1GLY
+F#Ve%i0f1X@16)Vq1,:U@1GLVE#Ve%i1,C^@16)Vq1GLU@1GLVE#Ve(i0f1[@16)Vq0f(O@1GL
+VE#Ve.j1bg^@0ocMo1,CaA0f(PE#Ve+j1GU[@0ocMo1GUdA1,:SE#Ve%j1GU[@0ocMo1bgaA0f
+(PE#Ve.j1GU^@0ocMo1,C[A0f(PE#Ve.j1bgd@0ocMo1,C^A1,:SE#Ve(j1bgd@0ocMo1GU[A0
+f(PE#Ve+j1,C[@0ocMo0f1UA0f(PE#Ve+j1GUa@0ocMo0f1XA1,:SE#Ve%j1GUa@0ocMo1bg^A
+1,:SE#Ve.j1,C^@0ocMo1,CXA1,:SE#Ve(j1,C^@0ocMo1GU[A1GLVE#Ve%j0f1[@0ocMo0ekO
+?0f(VG#W"1i2)-gA0ocMp0ekL?0f(SF#Vn+h2)-jA16)Vp0ekI?0f(VG#W"1i1G^aA0ocMo0ek
+L?1,:YG#W"1i1bpgA0ocMo0ekO?1GL\G#W"1i2)-mA0ocMp0ekF?0f(SF#Vn+h1G^dA16)Vq0e
+kL?1GLYF#Ve%g0f:[A1QD_s0ekC?0f(PE#Ve%g1,LaA1QD_s0ekF?1,:SE#Ve%g1G^gA1QD_s0
+ekI?1GLVE#Vn+h0f:^A16)Vq0ekF?1GLYF#Ve(h2)-gA16)Vq0etU@0f(PE#Vn.i1bpdA0ocMo
+0etR@0f(SF#Vn.i2)-jA0ocMo0etU@1,:VF#Ve(h1G^aA16)Vp1,1U@1,:VF#Ve(h2)-mA16)V
+q0etU@1GLVE#Vn.i1,L^A0ocMo0etL@0f(SF#Vn.i1G^dA0ocMo0etO@1,:VF#Vn.i1bpjA0oc
+Mo0etR@1GLYF#Ve(h0f:[A16)Vp1,1O@1,:VF#Ve(h1G^gA16)Vq0etO@1GLVE#Vn.i0f:^A0o
+cMo0etI@1,:VF#Vn.i1,LdA0ocMo0etL@1GLYF#Ve+i2)-gA0ocMo1,:[A0f(PE#Ve(i2)-jA0
+ocMo1GL[A0f(PE#Ve+i1bpgA0ocMo0f(UA0f(PE#Ve+i2)-mA0ocMo0f(XA1,:SE#Ve(i1,L^A
+0ocMo1,:XA1,:SE#Ve(i1bpjA0ocMo1GLUA0f(PE#Ve+i1,LaA0ocMo0f(OA0f(PE#Ve+i1G^g
+A0ocMo0f(RA1,:SE#Ve%i1G^gA0ocMo1,:RA1,:SE#Ve(i1,LdA0ocMo0ekR@0f(SF#Vn+h2)6
+mB0ocMp0ekR@1,:SE#Ve%g1c$jB16)Vp0ekO@1,:VF#Ve%g2DI!B16)Vq0ekI@0f(PE#Vn+h1c
+$mB0ocMp0ekO@1GLVE#Ve%g1,UdB16)Vp0ekI@1,:VF#Ve%g1c$pB16)Vq0ekC@0f(PE#Vn+h1
+,UgB0ocMp0ekI@1GLVE#Ve(h2DHpB0ocMo0etUA0f(PE#Ve(h1c$jB0ocMo1,1XA1,:SE#Ve(h
+2DI!B0ocMo0etOA0f(PE#Ve%h1c$mB0ocMo0etUA1GLVE#Ve(h1,UdB0ocMo1,1RA1,:SE#Ve(
+h1c$pB0ocMo0etIA0f(PE#Ve%h1,UgB0ocMo0etOA1GLVE#Ve%g0ekF>2NA&!0ekC;1,CbI#W4
+=k0ekF>16)Vq0ekC;1GUhJ#W+7j0ekI>1QD`!0ekC;1GU\F#Ve%g0ekL>2NA&!0ekC;1bghI#W
+4=k0ekL>16)Vr0etI<0f1\H#W4=l0ekC>0ocMo1,1L<1,CeJ#W"4j0ekF>1QD_u1,1L<1,CYF#
+Vn+i0ekF>1l_hu0etI<1,C\G#Vn.i0ekI>1l_hu1,1L<1GU_G#Ve%h0ekI>23%qu0etI<1GUbH
+#W4=l0ekI>0ocMo1,1L<1bgkJ#W"4j0ekL>1QD_u1,1L<1bg_F#Vn+i0ekL>1l_hu0etI<1bgb
+G#Ve(i0ekC>1l_h t1,:R =0f1Y G#Vn+ j0 ekC >1QD_t 0f(O=0f
+1VF#Ve+i0ekF>1l _ht 1GLU= 1,C\G #V n.j 0ek F>1Q
+D_t1,:R=1,CYF#V e%i0e kF >1l_h t0f( O= 1,C \G#Vn 1j0 ekI>1 QD_t
+1GLU=1GU\F#Ve(i 0ekI> 1l_ ht1 ,:R= 1G U_G #Vn+j0 ek I>1QD_ t0f
+(O=1GU\F#Ve+i0e kL>1l _ht 1GL U =1b gbG #Vn .j0ekL >1 QD_t1, :R=
+1bg_F#Ve%i0ekL> 1l_ht 0f( O=1 bg bG #Ve +j0 ekC>1Q D_ s1GU[> 0f1
+VF#Vn.k0ekC>16) Vp0f 1U> 0f 1\ H#W "1l 0ek C>0o
+cMo1bg^>1,C_H#W ":l0 e kF >0 ocM p1G U[>1 ,C\G#
+Ve(j0ekF>1QD_s1 ,CX>1, CYF # Vn+ k0 ekF> 16) Vq1bg^>1GU _G#Ve+j0ekI
+>1QD_s1GU[>1GU\ F#Vn.k 0ek I >16) Vp0f 1U> 1GUbH#W"1l 0ekI>0ocMo1
+bg^>1bgeH#W":l0 ekL>0o cMp 1GU[ >1bg bG# Ve(j0ekL>1 QD_s1,CX>1b
+g_F#Vn+k0ekL>16 )Vp1b pd?0 f1YG# Vn1l 0ek C>0ocMo1,L ^?0f1YG#Vn+
+l0ekC>0ocMo2)-g ?1,C\ G#Vn4 l0ekF >0o cMo1G^a?1, C\G#Vn.l0ek
+F>0ocMo0f:[?1,C \G#Vn7l 0ekI>0 ocMo1 bpd ?1GU_G#Vn1 l0ekI>0ocMo
+1,L^?1GU_G#Vn+l0ekI>0ocMo2)-g?1bgbG#Vn4l0ekL>0ocMo1G^a?1bgbG#Vn.l0ekL>0ocM
+o0f:[?1bgbG#Ve1l0ekC>0ocMo1Ggg@0f1VF#Ve%l0ekC>0ocMo2DHp@1,CYF#Ve.l0ekF>0oc
+Mo1,Ud@1,CYF#Ve1l0ekI>0ocMo1Ggg@1GU\F#Ve%l0ekI>0ocMo2DHp@1bg_F#Ve.l0ekL>0o
+cMo1,Ud@1bg_F#Vn+h1,1L?1l_hu0ekF<0f1YG#Ve%g0etI?23%qu0ekC<0f1\H#W4=k0etI?0
+ocMo0ekF<1,CeJ#W"1i1,1O?1QD_u0ekF<1,CYF#Vn+h0etL?1l_hu0ekC<1,C\G#Vn+h1,1R?
+1l_hu0ekF<1GU_G#Ve%g0etO?23%qu0ekC<1GUbH#W4=k0etO?0ocMo0ekF<1bgkJ#W"1i1,1U
+?1QD_u0ekF<1bg_F#Vn+h0etR?1l_hu0ekC<1bgbG#Vn.i1,1L?1QD_t1,1O=0f1VF#Ve%h1,1
+L?1l_ht0etL=0f1YG#Ve(h0etI?1l_ht1,1L=0f1YG#Ve(h1,1O?1l_ht1,1O=1,C\G#Vn+i1,
+1O?1QD_t0etL=1,CYF#Vn.i0etL?1QD_t1,1L=1,CYF#Ve%h0etL?1l_hs1,1O=1GUbH#W+:k1
+,1R?0ocMo0etL=1GUeI#W"1j1,1R?16)Vp1,1L=1GUeI#W"4j0etO?16)Vp1,1O=1bghI#W"4j
+1,1U?16)Vq0etL=1bgeH#W+7k1,1U?0ocMp1,1L=1bgeH#W+:k0etR?0ocMo0etI=1bghI#W"1
+j0etR?16)Vq1GLX>0f1YG#Ve(i1,1L?1QD_s1,:U>0f1VF#Vn+j1,1L?16)Vp1GLU>0f1\H#W"
+7k0etI?0ocMo1GLX>1,C_H#W"7k1,1O?0ocMo0f(O>0f1\H#Vn.j1,1O?16)Vp0f(R>1,C_H#W
+"1k1,1O?0ocMp1GLU>1,C\G#Ve(i0etL?1QD_r1GLX>1GU_G#Ve(i1,1R?1QD_s1,:U>1GU\F#
+Vn+j1,1R?16)Vp1GLU>1GUbH#W"7k0etO?0ocMo1GLX>1bgeH#W"7k1,1U?0ocMo0f(O>1GUbH
+#Vn.j1,1U?16)Vp0f(R>1bgeH#W"1k1,1U?0ocMp1GLU>1bgbG#Ve(i0etR?1QD_s1,:R>1bg_
+F#Vn+j0etR?16)Vq1bga?0f1VF#Ve+j1,1L?16)Vq1,C[?0f1VF#Ve%j1,1L?16)Vp1bg^?0f1
+YG#Ve.j1,1O?16)Vp1,CX?0f1YG#Vn1k1,1O?0ocMo1,C[?1,C\G#Vn+k1,1O?0ocMp1bg^?1,
+CYF#Ve+j0etL?16)Vq1bga?1GU\F#Ve+j1,1R?16)Vp0f1U?1,C\G#Vn.k1,1R?0ocMo0f1X?1
+GU_G#Ve.j0etO?16)Vp1bga?1bgbG#Ve(j0etO?16)Vq1GU^?1bg_F#Ve(j1,1U?16)Vq0f1X?
+1bg_F#Vn4k0etR?0ocMo1GU[?1bgbG#Vn.k0etR?0ocMo0f1U?1bgbG#Ve.k1,1L?0ocMo1,La
+@0f1VF#Ve1k0etI?0ocMo2)-j@1,CYF#Ve+k0etI?0ocMo1G^d@1,CYF#Ve%k0etI?0ocMo0f:
+^@1,CYF#Ve.k0etL?0ocMo1bpg@1GU\F#Ve(k0etL?0ocMo1,La@1GU\F#Ve1k0etO?0ocMo2)
+-j@1bg_F#Ve+k0etO?0ocMo1G^d@1bg_F#Ve%k0etO?0ocMo0f:^@1bg_F#Ve.k0etR?0ocMo1
+,L^@1bg_F#Vn+h1GLU@1QD_t0ekI=0f1VF#Ve%g1,:R@1l_ht0ekF=0f1YG#Ve%g1GLX@1l_ht
+0ekI=1,C\G#Vn+h0f(O@1QD_t0ekC=0f1VF#Vn+h1,:U@1QD_t0ekF=1,CYF#Vn+h1GL[@1QD_
+t0ekI=1GU\F#Ve%g0f(R@1l_ht0ekC=1,C\G#Ve%g1,:X@1l_ht0ekF=1GU_G#Ve%g1GL^@1l_
+ht0ekI=1bgbG#Vn+h0f(U@1QD_t0ekC=1GU\F#Vn+h1,:[@1QD_t0ekF=1bg_F#Ve%g0f(X@1l
+_ht0ekC=1bgbG#Vn.i1GLU@16)Vp0etO>0f1\H#W"1j1GLU@0ocMo1,1O>0f1\H#W"4j1,:R@0
+ocMo1,1R>1,C_H#W"4j1GLX@0ocMp0etO>1,C\G#Vn.i0f(O@16)Vp0etI>0f1\H#Vn.i1,:U@
+16)Vp0etL>1,C_H#Vn.i1GL[@16)Vp0etO>1GUbH#W"1j1GL[@0ocMo1,1L>1,C_H#W"4j0f(R
+@0ocMo1,1O>1GUbH#W"4j1,:X@0ocMo1,1R>1bgeH#W"4j1GL^@0ocMp0etO>1bgbG#Vn.i0f(
+U@16)Vp0etI>1GUbH#Vn.i1,:[@16)Vp0etL>1bgeH#W"1j1,:[@0ocMo1,1L>1bgeH#W"4j0f
+(X@0ocMp0etI>1bgbG#Vn1j1GLU@0ocMo1,:X?0f1YG#Vn+j1GLU@0ocMo1GLX?0f1YG#Ve+i1
+GLX@16)Vp0f(R?0f1YG#Vn.j1GLX@0ocMo0f(U?1,C\G#Vn1j0f(O@0ocMo1,:R?0f1YG#Vn1j
+1,:U@0ocMo1,:U?1,C\G#Vn1j1GL[@0ocMo1,:X?1GU_G#Vn+j1GL[@0ocMo1GLU?1,C\G#Ve+
+i1,:X@16)Vp0f(O?1,C\G#Ve+i1GL^@16)Vp0f(R?1GU_G#Vn.j1GL^@0ocMo0f(U?1bgbG#Vn
+1j0f(U@0ocMo1,:R?1GU_G#Vn1j1,:[@0ocMo1,:U?1bgbG#Vn+j1,:[@0ocMo1GLU?1bgbG#V
+n.j0f(X@0ocMo0f(O?1bgbG#Ve+j1GLU@0ocMo0f1[@0f1VF#Ve.j1,:R@0ocMo1bgd@1,CYF#
+Ve(j1,:R@0ocMo1,C^@1,CYF#Ve+j0f(O@0ocMo1GU^@1,CYF#Ve%j0f(O@0ocMo1GUa@1GU\F
+#Ve%j1,:U@0ocMo0f1[@1GU\F#Ve.j0f(R@0ocMo1bga@1GU\F#Ve(j0f(R@0ocMo1bgd@1bg_
+F#Ve(j1,:X@0ocMo1,C^@1bg_F#Ve+j0f(U@0ocMo1GU^@1bg_F#Ve%j0f(U@0ocMo0f1X@1bg
+_F#Ve.j0f(X@0ocMo1,CX@1bg_F#Vn+h1bg^A16)Vp0ekI>0f1\H#W"1i1GU[A0ocMo0ekL>1,
+C_H#W"1i1bgaA0ocMp0ekF>0f1YG#Vn+h1GU^A16)Vq0ekL>1GU_G#Ve%g0f1UA1QD_s0ekC>0
+f1VF#Ve%g1,C[A1QD_s0ekF>1,CYF#Ve%g1GUaA1QD_s0ekI>1GU\F#Ve%g1bggA1QD_s0ekL>
+1bg_F#Vn+h0f1XA16)Vq0ekF>1GU_G#Vn+h1GUdA16)Vp0ekC>1GUbH#W"1i0f1[A0ocMo0ekF
+>1bgeH#W"1i1,CaA0ocMp1,1U?0f1VF#Ve%h1bg^A16)Vp1,1R?0f1YG#Ve(h1bgaA16)Vq0et
+R?1,CYF#Vn.i1,CXA0ocMo0etL?0f1YG#Vn.i1GU^A0ocMo0etO?1,C\G#Vn.i1bgdA0ocMo0e
+tR?1GU_G#Ve(h0f1UA16)Vp1,1O?1,C\G#Ve(h1GUaA16)Vp1,1U?1bgbG#Vn+i1bggA0ocMp1
+,1L?1,CYF#Ve%h0f1XA16)Vq1,1O?1GU\F#Ve%h1,C^A16)Vq1,1R?1bg_F#Ve%h1GUdA16)Vp
+1,1L?1GU_G#Ve(h1,CaA16)Vq0etL?1bg_F#Ve(i1bg^A0ocMo1GL[@0f1VF#Ve+i1bgaA0ocM
+o0f(U@0f1VF#Ve%i1bgaA0ocMo1,:U@0f1VF#Ve(i1GU^A0ocMo1,:[@1GU\F#Ve+i0f1UA0oc
+Mo1GLX@1,CYF#Ve%i0f1UA0ocMo1GL[@1GU\F#Ve%i1,C[A0ocMo1GL^@1bg_F#Ve%i1GUaA0o
+cMo0f(X@1bg_F#Ve(i0f1XA0ocMo1,:U@1GU\F#Ve(i1GUdA0ocMo1GLU@1GU\F#Ve+i1,CaA0
+ocMo0f(O@1GU\F#Ve%i1,CaA0ocMp0ekO?0f1VF#Ve%g1bpdB16)Vp0ekO?1,C\G#Vn+h1G^aB
+0ocMp0ekL?1,CYF#Vn+h2)-mB0ocMo0ekF?0f1YG#Ve%g1G^dB16)Vp0ekL?1GU_G#Ve%g2)-p
+B16)Vq0ekC?0f1VF#Vn+h1,LaB0ocMp0ekI?1GU\F#Vn+h1bpmB0ocMo0ekC?1,C\G#Ve%g1,L
+dB16)Vp0ekI?1bgbG#Ve%h2)-gB0ocMo1,1U@0f1VF#Ve(h2)-jB0ocMo0etO@0f1VF#Ve%h1b
+pgB0ocMo0etU@1GU\F#Ve(h1,L^B0ocMo1,1R@1,CYF#Ve(h1bpjB0ocMo1,1X@1bg_F#Ve%h0
+f:[B0ocMo0etL@1,CYF#Ve%h1G^gB0ocMo0etR@1bg_F#Ve(h0f:^B0ocMo1,1O@1GU\F#Ve(h
+1G^jB0ocMo0ekO@0f1VF#Ve%g2DHsC0ocMo0ekI@0f1VF#Ve%g1c$mC0ocMo0ekO@1GU\F#Ve%
+g2DI$C0ocMo0ekC@0f1VF#Ve%g1,UgC0ocMo0ekI@1GU\F#Ve%g1c$sC0ocMp0ekC;1,LhJ#W+
+7j0ekF?16)Vp0ekC;1G^nK#W"1i0ekI?1QD_u0ekC;1G^bG#Vn+h0ekL?1l_hu0ekC;1bphH#V
+e%g0ekO?23%qu0ekC;2)-nI#W4=k0ekO?0ocMp0etI<0f:bI#W+7k0ekC?0ocMp1,1L<1,LeI#
+W+:k0ekF?0ocMo0etI<1,LhJ#W"1j0ekF?16)Vp1,1L<1G^kJ#W"4j0ekI?16)Vq0etI<1G^hI
+#W+7k0ekI?0ocMp1,1L<1bpkI#W+:k0ekL?0ocMo0etI<1bpnJ#W"1j0ekL?16)Vp1,1L<2)-q
+J#W"4j0ekO?16)Vq0etI<2)-nI#W+7k0ekO?0ocMp1,:R=0f:_H#Ve%i0ekC?1QD_s0f(O=0f:
+\G#Vn1j0ekF?16)Vp1,:R=1,LeI#W"4k0ekF?0ocMp0f(O=1,LbH#Ve+i0ekI?1QD_s1GLU=1G
+^bG#Vn.j0ekI?16)Vp0f(O=1G^hI#W"1k0ekI?0ocMp1GLU=1bphH#Ve(i0ekL?1QD_s1,:R=1
+bpeG#Vn+j0ekL?16)Vp1GLU=2)-nI#W"7k0ekO?0ocMp1,:R=2)-kH#Ve%i0ekO?1QD_s0f(O=
+2)-hG#Vn1k0ekC?0ocMo1,CX>0f:_H#Vn+k0ekC?0ocMp1bg^>1,L_G#Ve+j0ekF?16)Vq1,CX
+>1,L_G#Ve%j0ekF?16)Vp1bg^>1G^eH#Vn1k0ekI?0ocMo1,CX>1G^eH#Vn+k0ekI?0ocMp1bg
+^>1bpeG#Ve+j0ekL?16)Vq1,CX>1bpeG#Ve%j0ekL?16)Vp1bg^>2)-kH#Vn1k0ekO?0ocMo1,
+CX>2)-kH#Vn+k0ekO?0ocMo1G^a?0f:\G#Ve%k0ekC?0ocMo1bpd?1,L_G#Ve(k0ekF?0ocMo2
+)-g?1G^bG#Ve+k0ekI?0ocMo0f:[?1G^bG#Ve.k0ekL?0ocMo1,L^?1bpeG#Ve1k0ekO?0ocMo
+1G^a?2)-hG#Ve%k0ekO?0ocMq0ekF<0f:_H#Vn+h0etI@1QD_t0ekC<0f:\G#Vn+h1,1O@1QD_
+t0ekF<1,L_G#Ve%g0etL@1l_ht0ekC<1,LbH#Ve%g1,1R@1l_ht0ekF<1G^eH#Vn+h0etO@1QD
+_t0ekC<1G^bG#Vn+h1,1U@1QD_t0ekF<1bpeG#Ve%g0etR@1l_ht0ekC<1bphH#Ve%g1,1X@1l
+_ht0ekF<2)-kH#Vn+h0etU@1QD_t0ekC<2)-hG#Ve(h1,1L@1QD_s1,1O=0f:\G#Vn+i1,1L@1
+6)Vq1,1L=0f:_H#Ve%h0etI@1QD_r1,1O=1,LbH#Ve%h1,1O@1QD_s0etL=1,L_G#Ve(h0etL@
+1QD_s1,1L=1,L_G#Ve(h1,1R@1QD_s1,1O=1G^bG#Vn+i1,1R@16)Vq1,1L=1G^eH#Ve%h0etO
+@1QD_r1,1O=1bphH#Ve%h1,1U@1QD_s0etL=1bpeG#Ve(h0etR@1QD_s1,1L=1bpeG#Ve(h1,1
+X@1QD_s1,1O=2)-hG#Vn+i1,1X@16)Vq1,1L=2)-kH#Ve%h0etU@1QD_s0etI=2)-hG#Ve+i1,
+1L@16)Vq1,:U>0f:\G#Ve%i1,1L@16)Vq1GLU>0f:\G#Ve(i0etI@16)Vq1GLX>1,L_G#Ve(i1
+,1O@16)Vq0f(R>1,L_G#Ve+i0etL@16)Vp1GLX>1G^eH#Ve%i0etL@16)Vq1,:U>1G^bG#Ve%i
+1,1R@16)Vq1GLU>1G^bG#Ve(i0etO@16)Vq1GLX>1bpeG#Ve(i1,1U@16)Vq0f(R>1bpeG#Ve+
+i0etR@16)Vp1GLX>2)-kH#Ve%i0etR@16)Vq1,:U>2)-hG#Ve%i1,1X@16)Vq1GLU>2)-hG#Ve
+(i0etU@16)Vq0f(O>2)-hG#Ve.j1,1L@0ocMo1,C[?0f:\G#Ve+j0etI@0ocMo1GU^?1,L_G#V
+e%j0etI@0ocMo0f1X?1,L_G#Ve.j0etL@0ocMo1bga?1G^bG#Ve(j0etL@0ocMo1,C[?1G^bG#
+Ve+j0etO@0ocMo1GU^?1bpeG#Ve%j0etO@0ocMo0f1X?1bpeG#Ve.j0etR@0ocMo1bga?2)-hG
+#Ve(j0etR@0ocMo1,C[?2)-hG#Ve+j0etU@0ocMo0f1U?2)-hG#Ve%g1GLUA1QD_s0ekI=0f:\
+G#Vn+h1,:RA16)Vq0ekI=1,LbH#Ve%g0f(OA1QD_s0ekC=0f:\G#Ve%g1,:UA1QD_s0ekF=1,L
+_G#Ve%g1GL[A1QD_s0ekI=1G^bG#Vn+h0f(RA16)Vq0ekF=1G^eH#Vn+h1GL^A16)Vp0ekC=1G
+^hI#W"1i0f(UA0ocMo0ekF=1bpkI#W"1i1,:[A0ocMo0ekI=2)-nI#W"1i1GLaA0ocMp0ekC=1
+bphH#Vn+h1,:^A16)Vp1,1R>0f:_H#Vn+i1GLUA0ocMp1,1O>0f:\G#Ve%h1,:RA16)Vq1,1R>
+1,L_G#Ve%h1GLXA16)Vp1,1L>0f:_H#Ve(h1,:UA16)Vp1,1R>1G^eH#Vn+i1GL[A0ocMp1,1L
+>1,L_G#Ve%h0f(RA16)Vq1,1O>1G^bG#Ve%h1,:XA16)Vq1,1R>1bpeG#Ve%h1GL^A16)Vp1,1
+L>1G^eH#Ve(h1,:[A16)Vp1,1R>2)-kH#Vn+i1GLaA0ocMp1,1L>1bpeG#Ve%h0f(XA16)Vq1,
+1O>2)-hG#Ve%h1,:^A16)Vp1GL[?0f:\G#Ve%i1GLUA0ocMo1,:U?0f:\G#Ve(i1GLXA0ocMo1
+GLU?0f:\G#Ve+i1,:UA0ocMo0f(O?0f:\G#Ve+i1GL[A0ocMo0f(R?1,L_G#Ve%i1GL[A0ocMo
+1,:R?1,L_G#Ve(i1,:XA0ocMo1,:X?1bpeG#Ve+i0f(UA0ocMo1GLX?1bpeG#Ve%i0f(UA0ocM
+o1GL[?2)-hG#Ve%i1,:[A0ocMo0f(U?2)-hG#Ve(i0f(XA0ocMo1,:U?2)-hG#Ve%g1bg^B16)
+Vq0ekI>0f:\G#Vn+h1bgaB0ocMo0ekF>0f:_H#Ve%g1GU^B16)Vp0ekL>1G^eH#Vn+h0f1UB0o
+cMp0ekF>1,L_G#Vn+h1GUaB0ocMp0ekL>1bpeG#Ve%g0f1XB16)Vp0ekF>1G^eH#Ve%g1GUdB1
+6)Vp0ekL>2)-kH#Vn+h0f1[B0ocMp0ekF>1bpeG#Vn+h1GUgB0ocMo1,1U?0f:\G#Ve%h1GU[B
+0ocMo0etR?1,L_G#Ve(h1,CXB0ocMo1,1R?1,L_G#Ve(h1bgdB0ocMo0etI?0f:\G#Ve%h1,C[
+B0ocMo0etO?1G^bG#Ve%h1bggB0ocMo1,1L?1,L_G#Ve(h1,C^B0ocMo1,1R?1bpeG#Ve(h1bg
+jB0ocMo0etI?1G^bG#Ve%h1,CaB0ocMo0etO?2)-hG#Ve%g2)-gC0ocMo0ekI?0f:\G#Ve%g1b
+pgC0ocMo0ekO?1G^bG#Ve%g0f:[C0ocMo0ekF?1,L_G#Ve%g1G^gC0ocMo0ekL?1bpeG#Ve%g2
+)-sC0ocMo0ekC;1,UnK#W"1i0ekF@16)Vq0ekC;1GgnJ#W+7j0ekI@0ocMo0ekC;1c$tK#W"1i
+0ekL@16)Vq0ekC;2)6tJ#W+7j0ekO@0ocMo0ekC;2DI%K#W"1i0ekR@16)Vr0etI<0fCbH#Ve(
+h0ekF@1QD_s1,1L<1,UeH#Vn+i0ekF@16)Vq1,1L<1GgkI#Ve%h0ekI@1QD_s0etI<1GghH#Ve
+(h0ekL@1QD_s1,1L<1c$kH#Vn+i0ekL@16)Vq1,1L<2)6qI#Ve%h0ekO@1QD_s0etI<2)6nH#V
+e(h0ekR@1QD_s1,1L<2DHqH#Vn+i0ekR@16)Vp1,:R=0fCeI#Vn+j0ekC@0ocMo1GLU=1,UhI#
+Vn.j0ekF@0ocMo0f(O=1,UhI#Vn1j0ekI@0ocMo1,:R=1GgkI#Vn+j0ekI@0ocMo1GLU=1c$nI
+#Vn.j0ekL@0ocMo0f(O=1c$nI#Vn1j0ekO@0ocMo1,:R=2)6qI#Vn+j0ekO@0ocMo1GLU=2DHt
+I#Vn.j0ekR@0ocMo0f(O=2DHtI#Ve+j0ekC@0ocMo0f1U>0fCbH#Ve.j0ekF@0ocMo1,CX>1,U
+eH#Ve+j0ekI@0ocMo0f1U>1GghH#Ve.j0ekL@0ocMo1,CX>1c$kH#Ve+j0ekO@0ocMo0f1U>2)
+6nH#Ve.j0ekR@0ocMo1,CX>2DHqH#Vn+h1,1LA16)Vp0ekC<0fChJ#W"1i0etIA0ocMo0ekF<1
+,UkJ#W"1i1,1OA0ocMp0ekC<1,UhI#Vn+h1,1RA16)Vp0ekC<1GgnJ#W"1i0etOA0ocMo0ekF<
+1c$qJ#W"1i1,1UA0ocMp0ekC<1c$nI#Vn+h1,1XA16)Vp0ekC<2)6tJ#W"1i0etUA0ocMo0ekF
+<2DI"J#W"1i1,1[A0ocMp1,1O=0fCbH#Ve%h1,1LA16)Vp1,1L=0fCeI#Ve(h1,1OA16)Vq0et
+L=1,UeH#Vn.i0etLA0ocMo0etI=1,UhI#Vn.i1,1RA0ocMo0etL=1GgkI#Ve(h0etOA16)Vp1,
+1O=1c$nI#Vn+i1,1UA0ocMp1,1L=1c$kH#Ve%h0etRA16)Vq1,1O=2)6nH#Ve%h1,1XA16)Vp1
+,1L=2)6qI#Ve(h1,1[A16)Vq0etL=2DHqH#Ve(i1,1LA0ocMo1GLU>0fCbH#Ve+i1,1OA0ocMo
+0f(O>0fCbH#Ve%i1,1OA0ocMq1,1O=0ekPG#W4@l1,1L<1QD_r0etL=0ekSH#W+7k1,1L<1l_i
+"0etL=0ekGD#Vn.i0etI<2NA&"1,1L=0ekMF#W"1j0etI<23%r"0etI=0ekJE#Ve+i1,1L<2NA
+&!1GLX>0ekMF#Vn.j1,1L<23%r!1,:U>0ekJE#Ve%i1,1L<2NA&!0f(R>0ekMF#W4=m1,1L<16
+)Vq1GLU>0ekPG#W+=l0etI<1QD_q1,:R>0ekSH#W"4k0etI<1l_i!1,:R>0ekGD#Vn+j0etI<2
+3%r!0f(O>0ekJE#W=Cn0etI<0ocMo1bga?0ekPG#W":l1,1L<1QD_r1GU^?0ekMF#W+=m1,1L<
+16)Vp1,C[?0ekPG#W"4l1,1L<1QD_u1,C[?0ekDC#Vn+k1,1L<1l_hu0f1X?0ekGD#Vn4k0etI
+<1l_hr1GU[?0ekPG#W"7l0etI<1QD_r1,CX?0ekMF#W+:m0etI<16)Vp0f1U?0ekPG#W"1l0et
+I<1QD_u0f1U?0ekDC#Ve1k1,1L<1l_hs1bpg@0ekJE#Ve+k1,1L<1l_ht1G^d@0ekGD#Vn.l1,
+1L<1QD_t1,La@0ekDC#Ve%k1,1L<1l_ht0f:^@0ekGD#Vn7l0etI<1QD_q1bpd@0ekMF#W":m0
+etI<16)Vq1G^a@0ekJE#W+=n0etI<0ocMo1,L^@0ekMF#W"4m0etI<16)Vq0f:[@0ekJE#W+7n
+0etI<0ocMo2DHsA0ekJE#Vn7m1,1L<16)Vp1c$mA0ekJE#W":n1,1L<0ocMp1GgjA0ekGD#Ve(
+l1,1L<1QD_s1,Ug A0ekD C#Ve1 l0etI <1 QD_ r1c$jA 0ekGD#V
+e+l0etI<1QD_s1G ggA 0ekDC #Vn.m 0e tI< 16) Vp0f
+CaA0ekJE#W"1n0e tI<0o cM q0ekI =0ek PG #W4 =k1GL U=1 QD_r0 ekF=
+0ekSH#W+7j1,:R= 1l_i" 0ek F=0 ekGD #W "1i 0f(O=2 3% r"0ekC =0e
+kJE#Ve(h1GLU=2N A&!1, 1R> 0ek M F#W 4@l 1GL U=16)V q0 etO>0e kPG
+#W+7k1GLU=1QD`! 0etO> 0ek DC# Vn .i 1,: R=2 3%r!1, 1O >0ekJE #Ve
+ %h1,:R=2NA&!0e tL>0 ekM F# W4 =l1 ,:R =16 )Vp1
+,1L>0ekSH#W"4j0 f(O= 1 l_ i! 1,1 L>0 ekGD #Vn+i
+0f(O=23%r!0etI> 0ekJE# W=C m 0f( O= 0ocM o1G L[?0ekPG#W "7k1GLU=1QD
+_r1,:X?0ekMF#W+ :l1GLU =16 ) Vp0f (U?0 ekP G#W"1k1GLU =1QD_u0f(U?
+0ekDC#Vn1j1,:R= 1l_hu1 GLX ?0ek GD#V e(i 1,:R=23%qu 1,:U?0ekJE#
+W4@m1,:R=0ocMp0 f(R?0 ekMF #W+7l 1,:R =16 )Vp1GLU?0e kPG#W"7k0f(
+O=1QD_r1,:R?0ek MF#W+ :l0f( O=16) Vp0 f(O?0ekPG# W"1k0f(O=1Q
+D_u0f(O?0ekDC#V e.j1GLU =1l_ht 1bgd@ 0ek GD#Vn1k1GL U=1QD_t1GUa
+@0ekDC#Ve(j1GLU=1l_ht1,C^@0ekGD#Vn+k1GLU=1QD_t0f1[@0ekDC#Vn4k1,:R=1QD_q1GU
+^@0ekMF#W"7l1,:R=16)Vq1,C[@0ekJE#W+:m1,:R=0ocMo0f1X@0ekMF#W"1l1,:R=16)Vp1b
+g^@0ekMF#W":l0f(O=16)Vq1GU[@0ekJE#W+=m0f(O=0ocMo1,CX@0ekMF#W"4l0f(O=16)Vq0
+f1U@0ekJE#W+7m0f(O=0ocMo2)-mA0ekJE#Vn4l1GLU=16)Vp1G^gA0ekJE#W"7m1GLU=0ocMp
+1,LdA0ekGD#Vn7l1,:R=16)Vp1bpgA0ekJE#W":m1,:R=0ocMp1G^dA0ekGD#Ve(k1,:R=1QD_
+s1,LaA0ekDC#Vn+l1,:R=16)Vp2)-gA0ekJE#Vn4l0f(O=16)Vp1G^aA0ekJE#W"7m0f(O=0oc
+Mp1,L^A0ekGD#Ve%k0f(O=1QD_s0f:[A0ekDC#Ve4l1GLU=16)Vq2)6sB0ekDC#Ve.l1GLU=16
+)Vq1GgmB0ekDC#Ve1l1,:R=16)Vq1c$mB0ekDC#Ve+l1,:R=16)Vq1,UgB0ekDC#Ve4l0f(O=1
+6)Vq2)6mB0ekDC#Ve.l0f(O=16)Vq1GggB0ekDC#Ve(l0f(O=16)Vq0fCaB0ekDC#Ve%g1bg^>
+2NA&!0ekL>0ekMF#W4=k1bg^>16)Vq0ekI>0ekPG#W+7j1GU[>1QD`!0ekI>0ekDC#Ve%g1,CX
+>2NA&!0ekF>0ekMF#W4=k1,CX>16)Vq0ekC>0ekPG#W+7j0f1U>1QD`!0ekC>0ekDC#Ve(h1bg
+^>23%qu1,1U?0ekJE#W4@l1bg^>0ocMp0etR?0ekMF#W+7k1bg^>16)Vq1,1R?0ekMF#W+:k1G
+U[>16)Vp0etO?0ekPG#W"1j1GU[>1QD_u0etO?0ekDC#Ve(h1,CX>23%qu1,1O?0ekJE#W4@l1
+,CX>0ocMp0etL?0ekMF#W+7k1,CX>16)Vq1,1L?0ekMF#W+:k0f1U>16)Vp0etI?0ekPG#W"1j
+0f1U>1QD_u0etI?0ekDC#Ve+i1bg^>1l_ht1GL^@0ekGD#Vn.j1bg^>1QD_t1,:[@0ekDC#Ve%
+i1bg^>1l_ht0f(X@0ekGD#Vn1j1GU[>1QD_t1GL[@0ekDC#Ve(i1GU[>1l_ht1,:X@0ekGD#Vn
++j1GU[>1QD_t0f(U@0ekDC#Ve+i1,CX>1l_ht1GLX@0ekGD#Vn.j1,CX>1QD_t1,:U@0ekDC#V
+e%i1,CX>1l_ht0f(R@0ekGD#Vn1j0f1U>1QD_t1GLU@0ekDC#Ve(i0f1U>1l_ht1,:R@0ekGD#
+Vn+j0f1U>1QD_t0f(O@0ekDC#Ve.j1bg^>1QD_s1bggA0ekDC#Vn1k1bg^>16)Vp1,CaA0ekJE
+#W"4l1bg^>0ocMp1bgdA0ekGD#Ve+j1GU[>1QD_s1GUaA0ekDC#Vn.k1GU[>16)Vp0f1[A0ekJ
+E#W"1l1GU[>0ocMo1bgaA0ekJE#W":l1,CX>0ocMp1GU^A0ekGD#Ve(j1,CX>1QD_s1,C[A0ek
+DC#Vn+k1,CX>16)Vq1bg^A0ekGD#Ve+j0f1U>1QD_s1GU[A0ekDC#Vn.k0f1U>16)Vp0f1UA0e
+kJE#W"1l0f1U>0ocMo2)-pB0ekGD#Vn4l1bg^>0ocMo1G^jB0ekGD#Vn7l1GU[>0ocMo1bpjB0
+ekGD#Vn1l1GU[>0ocMo1,LdB0ekGD#Ve1k1,CX>16)Vq1bpgB0ekDC#Ve+k1,CX>16)Vq1,LaB
+0ekDC#Ve%k1,CX>16)Vq2)-gB0ekDC#Ve.k0f1U>16)Vq1G^aB0ekDC#Ve(k0f1U>16)Vq0f:[
+B0ekDC#Ve4l1bg^>0ocMo1c$sC0ekDC#Ve1l1GU[>0ocMo1GgmC0ekDC#Ve4l1,CX>0ocMo1c$
+mC0ekDC#Ve(l1,CX>0ocMo2)6mC0ekDC#Ve+l0f1U>0ocMo0fCaC0ekDC#Ve%g2)-g?23%qu0e
+kO?0ekJE#W4=k2)-g?0ocMp0ekL?0ekMF#W+7j1bpd?16)Vp0ekI?0ekPG#W"1i1G^a?1QD_u0
+ekI?0ekDC#Vn+h1,L^?1l_hu0ekF?0ekGD#Ve%g0f:[?23%qu0ekC?0ekJE#W4=k0f:[?0ocMo
+1,1X@0ekMF#W"4j2)-g?16)Vq0etU@0ekJE#W+7k2)-g?0ocMp1,1U@0ekJE#W+:k1bpd?0ocM
+o0etR@0ekMF#W"1j1bpd?16)Vp1,1R@0ekMF#W"4j1G^a?16)Vq0etO@0ekJE#W+7k1G^a?0oc
+Mp1,1O@0ekJE#W+:k1,L^?0ocMo0etL@0ekMF#W"1j1,L^?16)Vp1,1L@0ekMF#W"4j0f:[?16
+)Vq0etI@0ekJE#W+7k0f:[?0ocMo1GLaA0ekJE#W"7k2)-g?0ocMp1,:^A0ekGD#Vn1j1bpd?1
+6)Vp1,:[A0ekJE#W"4k1bpd?0ocMp0f(XA0ekGD#Ve+i1G^a?1QD_s1GL[A0ekDC#Vn.j1G^a?
+16)Vp0f(UA0ekJE#W"1k1G^a?0ocMp1GLXA0ekGD#Ve(i1,L^?1QD_s1,:UA0ekDC#Vn+j1,L^
+?16)Vp1GLUA0ekJE#W"7k0f:[?0ocMp1,:RA0ekGD#Ve%i0f:[?1QD_s0f(OA0ekDC#Ve.j2)-
+g?16)Vq1GUgB0ekDC#Vn4k1bpd?0ocMo1GUdB0ekGD#Vn.k1bpd?0ocMo1bgdB0ekGD#Vn1k1G
+^a?0ocMo1,C^B0ekGD#Vn+k1G^a?0ocMp1bgaB0ekDC#Ve+j1,L^?16)Vq1,C[B0ekDC#Ve%j1
+,L^?16)Vp1bg^B0ekGD#Vn1k0f:[?0ocMo1,CXB0ekGD#Vn+k0f:[?0ocMo2)-sC0ekDC#Ve.k
+1bpd?0ocMo2)-mC0ekDC#Ve+k1G^a?0ocMo1bpgC0ekDC#Ve(k1,L^?0ocMo2)-gC0ekDC#Ve+
+k0f:[?0ocMo0f:[C0ekDC#Ve%g2DHp@1l_ht0ekR@0ekGD#Vn+h2)6m@1QD_t0ekO@0ekDC#Ve
+ %g1c$j@1l_ht0ekL@0ekGD#Vn+h1Ggg@1QD_t0ekI@0ekDC#Ve%g1,Ud@1l_ht0ekF@0ekGD#
+Vn+h0fCa@1QD_t0ekC@0ekDC#Ve(h2DHp@1QD_s1,1[A0ekDC#Vn.i2)6m@16)Vp0etUA0ekJE
+#W"1j2)6m@0ocMo1,1UA0ekJE#W"4j1c$j@0ocMp0etRA0ekGD#Vn.i1Ggg@16)Vp0etOA0ekJ
+E#W"1j1Ggg@0ocMo1,1OA0ekJE#W"4j1,Ud@0ocMp0etLA0ekGD#Vn.i0fCa@16)Vp0etIA0ek
+JE#W"1j0fCa@0ocMo1GLdB0ekGD#Vn1j2)6m@0ocMo1,:^B0ekGD#Ve+i1c$j@16)Vq1,:[B0e
+kDC#Ve%i1c$j@16)Vq1GL[B0ekDC#Ve(i1Ggg@16)Vq0f(UB0ekDC#Ve+i1,Ud@16)Vq1,:UB0
+ekDC#Ve%i1,Ud@16)Vq1GLUB0ekDC#Ve(i0fCa@16)Vq0f(OB0ekDC#Ve.j2DHp@0ocMo1GUgC
+0ekDC#Ve.j1c$j@0ocMo1,CaC0ekDC#Ve+j1Ggg@0ocMo0f1[C0ekDC#Ve.j1,Ud@0ocMo1,C[
+C0ekDC#Ve+j0fCa@0ocMo0f1UC0ekDC#W"1i0ekF<2NA&#0ekC;1,1VG#W"1j0ekC<23%r"0et
+I<0etPF#W"4j0ekF<23%r"1,1L<1,1SF#Vn+i0ekF<2NA&"0etI<1,1VG#W=Cm0ekF<16)Vp1,
+:R=0etYI#W"4k0ekC<1l_i!1,:R=0etME#Vn+j0ekC<23%r!0f(O=0etPF#W=Cn0ekC<0ocMo1
+GLU=1,1\I#W"7k0ekF<1l_hs1,:R=1,1YH#W+:l0ekF<1QD_q0f(O=1,1\I#W"1k0ekF<1l_i!
+0f(O=1,1PE#Ve+j0ekC<23%qu1GU[>0etPF#Vn.k0ekC<1l_hu1,CX>0etME#Ve%j0ekC<23%q
+u0f1U>0etPF#W4=n0ekC<0ocMo1bg^>1,1YH#W":l0ekF<1QD_r1GU[>1,1VG#W+=m0ekF<16)
+Vp1,CX>1,1YH#W"4l0ekF<1QD_u1,CX>1,1MD#Vn+k0ekF<1l_hu0f1U>1,1PE#Ve.k0ekC<1l
+_ht1bpd?0etME#Vn1l0ekC<1QD_t1G^a?0etJD#Ve(k0ekC<1l_ht1,L^?0etME#Vn+l0ekC<1
+QD_t0f:[?0etJD#Ve1k0ekF<1l_hs1bpd?1,1SF#Ve+k0ekF<1l_ht1G^a?1,1PE#Vn.l0ekF<
+1QD_t1,L^?1,1MD#Ve%k0ekF<1l_ht0f:[?1,1PE#Ve1l0ekC<1QD_r1c$j@0etME#Ve+l0ekC
+<1QD_s1Ggg@0etJD#Vn.m0ekC<16)Vp0fCa@0etPF#W"1n0ekC<0ocMo2DHp@1,1SF#Vn7m0ek
+F<16)Vp1c$j@1,1SF#W":n0ekF<0ocMp1Ggg@1,1PE#Ve(l0ekF<1QD_s1,Ud@1,1MD#Vn+m0e
+kF<16)Vq0ekF<0etYI#W+7j1,1L=1l_i"0ekF<0etME#W"1i0etI=23%r"0ekC<0etPF#W"1i1
+,1O=23%r"0ekF<1,1SF#Vn+h0etL=2NA&"0ekC<1,1VG#W=Cl0etL=16)Vq1,1O=0etVH#W+:k
+1,1L=1QD_q0etL=0etYI#W"1j1,1L=1l_i!0etL=0etME#Ve(h0etI=2NA&!1,1L=0etSG#W4@
+l0etI=16)Vp1,1O=1,1\I#W"4j1,1O=1l_i!1,1O=1,1PE#Vn+i1,1O=23%r!0etL=1,1SF#W=
+Cm1,1O=0ocMp1,1L=1,1YH#W+:k0etL=1QD_q0etI=1,1\I#W"1j0etL=1l_i!0etI=1,1PE#V
+n1j1,1L=1l_hu1GLX>0etME#Ve(i1,1L=23%qu1,:U>0etPF#W4@m1,1L=0ocMp0f(R>0etSG#
+W+7l1,1L=16)Vp1GLU>0etVH#W"7k0etI=1QD_q1GLX>1,1YH#W"7k1,1O=1QD_q0f(O>0etVH
+#Vn.j1,1O=1l_hu1,:U>1,1PE#Ve%i1,1O=23%qu0f(R>1,1SF#W4=m1,1O=0ocMp1GLU>1,1V
+G#W+=l0etL=16)Vp1,:R>1,1YH#W"4k0etL=1QD_u1,:R>1,1MD#Vn+j0etL=1l_hu0f(O>1,1
+PE#Vn4k1,1L=1QD_q1GU^?0etSG#W"7l1,1L=16)Vq1,C[?0etPF#W+:m1,1L=0ocMo0f1X?0e
+tSG#W"1l1,1L=16)Vp1bg^?0etSG#W":l0etI=16)Vp1bga?1,1VG#W":l1,1O=16)Vp1,CX?0
+etSG#Vn1k1,1O=1QD_t1GU^?1,1MD#Ve(j1,1O=1l_ht1,C[?1,1PE#Vn+k1,1O=1QD_t0f1X?
+1,1MD#Vn4k0etL=1QD_q1GU[?1,1VG#W"7l0etL=16)Vq1,CX?1,1SF#W+:m0etL=0ocMo0f1U
+?1,1VG#W"1l0etL=16)Vq2)-j@0etME#Ve.k1,1L=1QD_s1bpg@0etJD#Vn1l1,1L=16)Vp1,L
+a@0etPF#W"4m1,1L=0ocMp0f:^@0etME#Ve1k0etI=1QD_q2)-j@1,1SF#Ve+k0etI=1QD_r1b
+pg@1,1PE#Ve+k1,1O=1QD_s1G^d@1,1MD#Ve%k0etI=1QD_r1,La@1,1PE#Ve%k1,1O=1QD_s0
+f:^@1,1MD#Vn7l0etL=16)Vp1bpd@1,1SF#W":m0etL=0ocMp1G^a@1,1PE#Ve(k0etL=1QD_s
+1,L^@1,1MD#Vn+l0etL=16)Vp2)6pA0etME#Vn4m1,1L=0ocMo1GgjA0etME#Vn.m1,1L=0ocM
+o2DHpA0etME#Ve4l1,1O=16)Vp1c$jA0etME#Vn7m1,1O=0ocMo1c$mA1,1PE#Ve(l0etI=16)
+Vq1GgjA1,1MD#Ve(l1,1O=16)Vp2)6mA1,1PE#Vn4m0etL=0ocMo1GggA1,1PE#Vn.m0etL=0o
+cMo0fCaA1,1PE#Vn+h1GLU>23%r!0ekI=0etPF#W=Cl1GLU>0ocMo0ekF=0etYI#W"1i1,:R>1
+l_i!0ekF=0etME#Ve%g1GLX>2NA&!0ekI=1,1VG#W4=k1GLX>16)Vq0ekC=0etVH#W+7j0f(O>
+1QD`!0ekC=0etJD#Vn+h1,:U>23%r!0ekF=1,1SF#W=Cl1,:U>0ocMo0ekC=1,1\I#W"1i0f(R
+>1l_i!0ekC=1,1PE#Vn.i1GLU>1l_hu1,1R>0etME#Ve%h1GLU>23%qu0etO>0etPF#W4=l1GL
+U>0ocMo1,1O>0etVH#W"4j1,:R>1QD_u1,1O>0etJD#Ve(h1GLX>23%qu1,1R>1,1SF#W4@l1G
+LX>0ocMp0etO>1,1VG#W+7k1GLX>16)Vq1,1L>0etSG#W+:k0f(O>16)Vp0etI>0etVH#Vn.i1
+,:U>1l_hu1,1O>1,1PE#Ve%h1,:U>23%qu0etL>1,1SF#W4=l1,:U>0ocMo1,1L>1,1YH#W"4j
+0f(R>1QD_u1,1L>1,1MD#Vn+i0f(R>1l_hu0etI>1,1PE#Vn1j1GLU>1QD_t1GL[?0etJD#Ve(
+i1GLU>1l_ht1,:X?0etME#Vn+j1GLU>1QD_t0f(U?0etJD#Ve+i1,:R>1l_ht1GLX?0etME#Ve
++i1GLX>1l_ht1GL[?1,1PE#Ve%i1,:R>1l_hs1,:X?1,1SF#W+:l1GLX>0ocMo0f(U?1,1VG#W
+"1k1GLX>16)Vq1GLU?0etPF#W+=l0f(O>0ocMo1,:R?0etSG#Vn1j1,:U>1QD_t1GLX?1,1MD#
+Ve(i1,:U>1l_ht1,:U?1,1PE#Vn+j1,:U>1QD_t0f(R?1,1MD#Ve+i0f(R>1l_ht1GLU?1,1PE
+#Vn.j0f(R>1QD_t1,:R?1,1MD#Ve%i0f(R>1l_ht0f(O?1,1PE#Vn4k1GLU>16)Vp1GUa@0etP
+F#W"7l1GLU>0ocMp1,C^@0etME#Ve%j1GLU>1QD_s0f1[@0etJD#Ve.j1,:R>1QD_s1bga@0et
+JD#Ve.j1GLX>1QD_s1bgd@1,1MD#Ve(j1,:R>1QD_r1GUa@1,1PE#Ve(j1GLX>1QD_s1,C^@1,
+1MD#Vn+k1GLX>16)Vq1bg^@0etME#Ve+j0f(O>1QD_r1bga@1,1PE#Ve+j1,:U>1QD_s1GU^@1
+,1MD#Ve%j0f(O>1QD_r1,C[@1,1PE#Ve%j1,:U>1QD_s0f1X@1,1MD#Ve.j0f(R>1QD_s1bg^@
+1,1MD#Vn1k0f(R>16)Vp1,CX@1,1SF#W"4l0f(R>0ocMp0f1U@1,1PE#Vn7l1GLU>0ocMo1bpj
+A0etME#Vn1l1GLU>0ocMo1,LdA0etME#Ve1k1,:R>16)Vp2)-mA1,1PE#Ve+k1,:R>16)Vq1bp
+jA1,1MD#Ve+k1GLX>16)Vp0f:^A0etME#Vn.l1GLX>0ocMp2)-gA0etJD#Ve.k0f(O>16)Vq2)
+-jA1,1MD#Ve.k1,:U>16)Vp1,L^A0etME#Vn1l1,:U>0ocMo1,LaA1,1PE#Vn+l1,:U>0ocMo2
+)-gA1,1PE#Vn4l0f(R>0ocMo1G^aA1,1PE#Vn.l0f(R>0ocMo0f:[A1,1PE#Ve1l1GLU>0ocMo
+1GgmB0etJD#Ve4l1,:R>0ocMo2DI!B1,1MD#Ve.l1,:R>0ocMo1c$pB1,1MD#Ve(l1,:R>0ocM
+o2)6mB0etJD#Ve1l1,:U>0ocMo1GggB0etJD#Ve+l1,:U>0ocMo0fCaB0etJD#Ve4l0f(R>0oc
+Mo1c$jB1,1MD#Ve(l0f(R>0ocMp0ekL>0etSG#W+7j1bg^?16)Vp0ekI>0etVH#W"1i1GU[?1Q
+D_u0ekI>0etJD#Ve%g1bga?23%qu0ekL>1,1SF#W4=k1bga?0ocMp0ekF>0etSG#W+7j1,CX?1
+6)Vq0ekI>1,1VG#W+7j1GU^?16)Vp0ekC>0etVH#W"1i0f1U?1QD_u0ekC>0etJD#Ve%g1,C[?
+23%qu0ekF>1,1SF#W4=k1,C[?0ocMp0ekC>1,1VG#W+7j0f1X?16)Vq1,1U?0etPF#W+:k1bg^
+?0ocMo0etR?0etSG#W"1j1bg^?16)Vp1,1R?0etSG#W"4j1GU[?16)Vp1,1U?1,1VG#W"4j1bg
+a?16)Vq0etR?1,1SF#W+7k1bga?0ocMp1,1O?0etPF#W+:k1,CX?0ocMo0etL?0etSG#Vn.i1G
+U^?1QD_t1,1R?1,1MD#Ve%h1GU^?1l_ht0etO?1,1PE#Ve(h0f1U?1l_ht1,1L?0etME#Ve(h1
+,C[?1l_ht1,1O?1,1PE#Vn+i1,C[?1QD_t0etL?1,1MD#Vn.i0f1X?1QD_t1,1L?1,1MD#Ve%h
+0f1X?1l_ht0etI?1,1PE#Vn1j1bg^?16)Vp1,:[@0etPF#W"4k1bg^?0ocMp0f(X@0etME#Ve+
+i1GU[?1QD_s1GL[@0etJD#Ve+i1bga?1QD_s1GL^@1,1MD#Ve%i1GU[?1QD_r1,:[@1,1PE#Ve
+ %i1bga?1QD_s0f(X@1,1MD#Vn1j1,CX?16)Vp1,:U@0etPF#Vn1j1GU^?16)Vp1,:X@1,1SF#
+W"4k1GU^?0ocMp0f(U@1,1PE#Ve+i0f1U?1QD_s1GLU@0etJD#Ve+i1,C[?1QD_s1GLX@1,1MD
+#Ve%i0f1U?1QD_r1,:U@1,1PE#Ve%i1,C[?1QD_s0f(R@1,1MD#Vn1j0f1X?16)Vp1,:R@1,1S
+F#W"4k0f1X?0ocMp0f(O@1,1PE#Vn4k1bg^?0ocMo1GUdA0etME#Vn.k1bg^?0ocMo1bgdA0et
+ME#Ve.j1bga?16)Vp1,C^A0etME#Vn1k1bga?0ocMo1,CaA1,1PE#Vn4k1,CX?0ocMo1GU^A0e
+tME#Vn4k1GU^?0ocMo1GUaA1,1PE#Ve%j1,CX?16)Vq1,C^A1,1MD#Ve%j1GU^?16)Vp1bg^A0
+etME#Ve.j1,C[?16)Vp1,CXA0etME#Vn1k1,C[?0ocMo1,C[A1,1PE#Vn+k1,C[?0ocMp1bg^A
+1,1MD#Ve+j0f1X?16)Vq1,CXA1,1MD#Ve%j0f1X?16)Vp1bpmB0etJD#Ve1k1GU[?0ocMo2)-p
+B1,1MD#Ve+k1GU[?0ocMo1G^jB1,1MD#Ve.k1,CX?0ocMo1bpjB1,1MD#Ve(k1,CX?0ocMo1,L
+dB1,1MD#Ve1k0f1U?0ocMo2)-jB1,1MD#Ve+k0f1U?0ocMo1G^dB1,1MD#Ve%k0f1U?0ocMo0f
+:^B1,1MD#Ve.k0f1X?0ocMo1,L^B1,1MD#Vn+h2)-g@1QD_t0ekO?0etJD#Ve%g1bpd@1l_ht0
+ekL?0etME#Ve%g2)-j@1l_ht0ekO?1,1PE#Vn+h1G^a@1QD_t0ekI?0etJD#Vn+h1bpg@1QD_t
+0ekL?1,1MD#Ve%g1,L^@1l_ht0ekF?0etME#Ve%g1G^d@1l_ht0ekI?1,1PE#Vn+h0f:[@1QD_
+t0ekC?0etJD#Vn+h1,La@1QD_t0ekF?1,1MD#Ve%g0f:^@1l_ht0ekC?1,1PE#Vn.i2)-g@16)
+Vp0etU@0etPF#W"1j2)-g@0ocMo1,1U@0etPF#W"4j1bpd@0ocMo1,1X@1,1SF#W"4j2)-j@0o
+cMp0etU@1,1PE#Vn.i1G^a@16)Vp0etO@0etPF#Vn.i1bpg@16)Vp0etR@1,1SF#W"1j1bpg@0
+ocMo1,1O@0etPF#W"4j1,L^@0ocMo1,1R@1,1SF#W"4j1G^d@0ocMp0etO@1,1PE#Vn.i0f:[@
+16)Vp0etI@0etPF#Vn.i1,La@16)Vp0etL@1,1SF#W"1j1,La@0ocMo1,1L@1,1SF#W"4j0f:^
+@0ocMp0etI@1,1PE#Vn1j2)-g@0ocMo1,:^A0etME#Ve+i1bpd@16)Vp1GLaA1,1PE#Ve%i1bp
+d@16)Vq1,:^A1,1MD#Vn1j1G^a@0ocMo1,:XA0etME#Vn1j1bpg@0ocMo1,:[A1,1PE#Vn+j1b
+pg@0ocMo1GLXA0etME#Ve+i1G^d@16)Vp0f(RA0etME#Vn.j1G^d@0ocMo0f(UA1,1PE#Vn1j0
+f:[@0ocMo1,:RA0 etME# Vn1j1 ,La@0 oc Mo1 ,:UA1, 1PE#Vn+
+j1,La@0ocMo1GLU A1, 1PE#V n.j0f :^ @0o cMo 0f(O
+A1,1PE#Ve+j2)-g @0ocM o1 bggB0 etJD #V e.j 2)-j@ 0oc Mo1,C aB0e
+tJD#Ve+j1G^a@0o cMo1G UdB 1,1 MD#V e% j1G ^a@0oc Mo 1bgaB0 etJ
+D#Ve.j1G^d@0ocM o1,C[ B0e tJD # Ve( j1G ^d@ 0ocMo1 GU [B0etJ D#V
+e+j1,La@0ocMo0f 1UB0e tJD #Ve %j 1, La@ 0oc Mo1bg^ B1 ,1MD#V e(j
+0f:^@0ocMp0ekR@ 0etM E#V e% g2 )6m A1Q D_s 0ekO
+@0etJD#Ve%g2DHs A1QD _ s0 ek R@1 ,1M D#Vn +h1c$
+jA16)Vq0ekO@1,1 PE#Ve% g1G g gA1 QD _s0e kI@ 0etJD#Ve%g 1c$mA1QD_s0
+ekL@1,1MD#Vn+h1 ,UdA16 )Vq 0 ekI@ 1,1P E#V e%g0fCaA1Q D_s0ekC@0et
+JD#Ve%g1,UgA1QD _s0ekF @1, 1MD# Vn.i 2DH pA0ocMo1,1 XA0etME#Ve(
+h2DHsA16)Vq1,1U A0etJ D#Ve %h1c$ jA16 )Vq 1,1XA1,1MD #Ve%h2)6pA1
+6)Vp1,1RA0etME# Ve(h1 c$mA1 6)Vq0 etR A1,1MD#Vn. i1,UdA0ocMo
+0etLA0etME#Vn.i 1GgjA0o cMo0et OA1,1 PE# Ve(h0fCaA1 6)Vp1,1OA1,
+1PE#Vn+i1,UgA0ocMo1GLaB0etJD#Ve+i2DHsA0ocMo1,:[B0etJD#Ve(i2)6pA0ocMo1GL[B0
+etJD#Ve+i1c$mA0ocMo0f(UB0etJD#Ve%i1c$mA0ocMo1,:UB0etJD#Ve(i1GgjA0ocMo1GLUB
+0etJD#Ve+i1,UgA0ocMo0f(OB0etJD#Ve%i1,UgA0ocMp0ekC;1,:bJ#W+7j0ekF=1l_i"0ekC
+;1,:VF#W"1i0ekI=23%r"0ekC;1GL\G#Vn+i0ekC=23%r!0etI<0f(VG#W=Cm0ekC=0ocMp1,1
+L<1,:_I#W+:k0ekF=1QD_q0etI<1,:bJ#W"1j0ekF=1l_i!0etI<1,:VF#Ve(h0ekI=2NA&!1,
+1L<1GL_H#W4@l0ekI=16)Vq0etI<1GLbI#W+7k0ekI=1QD`!0etI<1GLVE#Vn.j0ekC=1l_hu1
+,:R=0f(SF#Ve%i0ekC=23%qu0f(O=0f(VG#W4=m0ekC=0ocMp1GLU=1,:\H#W+=l0ekF=16)Vp
+1,:R=1,:_I#W"4k0ekF=1QD_u1,:R=1,:SE#Vn+j0ekF=1l_hu0f(O=1,:VF#Ve+i0ekI=23%q
+u1GLU=1GL\G#Vn.j0ekI=1l_hu1,:R=1GLYF#Ve%i0ekI=23%qu0f(O=1GL\G#W4=m0ekI=0oc
+Mp1GU[>0f(VG#W+=m0ekC=0ocMo1,CX>0f(YH#W"4l0ekC=16)Vq0f1U>0f(VG#W+7m0ekC=0o
+cMp1bg^>1,:YG#Ve+j0ekF=1l_ht1GU[>1,:VF#Vn.k0ekF=1QD_t1,CX>1,:SE#Ve%j0ekF=1
+l_ht0f1U>1,:VF#Ve.j0ekI=1l_ht1bg^>1GLYF#Vn1k0ekI=1QD_t1GU[>1GLVE#Ve(j0ekI=
+1l_ht1,CX>1GLYF#Vn+k0ekI=1QD_t0f1U>1GLVE#Vn4l0ekC=16)Vp1G^a?0f(VG#W"7m0ekC
+=0ocMp1,L^?0f(SF#Ve%k0ekC=1QD_s0f:[?0f(PE#Vn7l0ekF=16)Vp1bpd?1,:YG#W":m0ek
+F=0ocMp1G^a?1,:VF#Ve(k0ekF=1QD_s1,L^?1,:SE#Vn+l0ekF=16)Vp2)-g?1GL\G#Vn4l0e
+kI=16)Vp1G^a?1GL\G#W"7m0ekI=0ocMp1,L^?1GLYF#Ve%k0ekI=1QD_s0f:[?1GLVE#Vn7m0
+ekC=0ocMo1c$j@0f(SF#Vn1m0ekC=0ocMo1,Ud@0f(SF#Vn+m0ekC=0ocMo2)6m@1,:VF#Vn4m
+0ekF=0ocMo1Ggg@1,:VF#Vn.m0ekF=0ocMo0fCa@1,:VF#Ve4l0ekI=16)Vq2)6m@1GLVE#Ve.
+l0ekI=16)Vq1Ggg@1GLVE#Ve(l0ekI=16)Vq0fCa@1GLVE#W"1i1,1L>1l_i!0ekF<0f(SF#Vn
++h0etI>23%r!0ekC<0f(VG#W=Cl0etI>0ocMp0ekF<1,:_I#W+7j1,1O>1QD`!0ekF<1,:SE#V
+e%g0etL>2NA&!0ekC<1,:\H#W4=k0etL>16)Vp0ekF<1GLeJ#W"1i1,1R>1l_i!0ekF<1GLYF#
+Vn+h0etO>23%r!0ekC<1GL\G#W=Cl0etO>0ocMo1,1O=0f(\I#W"4j1,1L>1QD_u1,1O=0f(PE
+#Vn+i1,1L>1l_hu0etL=0f(SF#Vn.i0etI>1l_hu1,1L=0f(SF#Ve%h0etI>23%qt1,1O=1,:\
+H#W+:k1,1O>16)Vp0etL=1,:_I#W"1j1,1O>1QD_u0etL=1,:SE#Ve(h0etL>23%qu1,1L=1,:
+YG#W4@l0etL>0ocMo1,1O=1GLbI#W"4j1,1R>1QD_u1,1O=1GLVE#Vn+i1,1R>1l_hu0etL=1G
+LYF#Vn.i0etO>1l_hu1,1L=1GLYF#Ve%h0etO>23%qu0etI=1GL\G#W4=l0etO>0ocMo1GLX>0
+f(YH#W"7k1,1L>16)Vq1,:U>0f(VG#W+:l1,1L>0ocMo0f(R>0f(YH#W"1k1,1L>16)Vq1GLU>
+0f(VG#W+=l0etI>0ocMo1,:R>0f(YH#Vn1j1,1O>1QD_t1GLX>1,:SE#Ve(i1,1O>1l_ht1,:U
+>1,:VF#Vn+j1,1O>1QD_t0f(R>1,:SE#Ve+i0etL>1l_ht1GLU>1,:VF#Ve+i1,1R>1l_ht1GL
+X>1GLYF#Ve%i0etL>1l_hs1,:U>1GL\G#W+:l1,1R>0ocMo0f(R>1GL_H#W"1k1,1R>16)Vq1G
+LU>1GL\G#W+=l0etO>0ocMo1,:R>1GL_H#W"4k0etO>16)Vq0f(O>1GL\G#W+7l0etO>0ocMo1
+bga?0f(VG#W":l1,1L>0ocMp1GU^?0f(SF#Ve(j1,1L>1QD_s1,C[?0f(PE#Vn+k1,1L>16)Vq
+1bg^?0f(SF#Ve+j0etI>1QD_r1bga?1,:VF#Ve+j1,1O>1QD_s1GU^?1,:SE#Ve%j0etI>1QD_
+r1,C[?1,:VF#Ve%j1,1O>1QD_s0f1X?1,:SE#Ve.j0etL>1QD_s1bg^?1,:SE#Ve.j1,1R>1QD
+_s1bga?1GLVE#Ve(j0etL>1QD_r1GU^?1GLYF#Ve(j1,1R>1QD_s1,C[?1GLVE#Vn+k1,1R>16
+)Vq1bg^?1GLYF#Ve+j0etO>1QD_s1GU[?1GLVE#Vn.k0etO>16)Vp0f1U?1GL\G#W"1l0etO>0
+ocMo2)-j@0f(SF#Vn4l1,1L>0ocMo1G^d@0f(SF#Vn.l1,1L>0jPo+NX.Bq0etI<0fG$t1bpd@
+0ekC>NX.Eq1,:R=0f=ss2)-jA0ekC=NX.Er0ekF<0f=ss2)6m@1,1L>NX.Bp1,1O=0fG$t1bga
+?1,1L?NX.Nt1,1O=0f"ap1,CX?0ekC?NX.Ht0etI<0f+gq0etL>0ekC@NX.Er1,:R=0f4mr2)6
+pB0ekC<NX.Bp1GU[>0f=ss1bgdA0ekC=NX.Nt1GU[>0en[o0f(O=1,1LANX.Es0ekF<0f4mr1,
+:U>1,1L@NX.Hs1,1O=0f+gq0ekI=1,1LANX.Eq1GLX>0f4mr2)-mA1,1L=NX.Bs0etI<0f4mr0
+f(R?0ekC?NX.Es1,:R=0f+gq1,:X@0ekC>NX.Hs1GU[>0f"ap0ekL?0ekC?NX.Eq1bpd?0f+gq
+2)-pC0ekC;NX.?r0ekF<0f=ss1Ggg@1,1L>NX.Br1,1O=0f4mr1c$mA1,1L=NX.?p1GLX>0f=s
+s1GUa@1,1L>NX.Kt1GLX>0en[o1,1U?1,1L?NX.Hr1bga?0f"ap1,UdA0ekC=NX.?r1,:R=0f4
+mr1GgjB0ekC<NX.Br1GU[>0f+gq1c$pC0ekC;NX.?p1bpd?0f4mr1GUdB0ekC<NX.Bp2)6m@0f
++gq1bgjC0ekC;NX.?s0ekF<0f4mr1,La@1,1L>NX.?q1GLX>0f4mr1G^gA1,1L=NX.Bq1bga?0
+f+gq1bpmB1,1L<NX.?o2)-j@0f4mr1GLaA1,1L=NX.?s1,:R=0f+gq1,LdB0ekC<NX.?q1bpd?
+0f+gq1G^jC0ekC;NX.Bq2)6m@0f"ap0fCa@1,1L>NX.Bt1,1O=0f"ap0f1[@1,1L>NX.Et1GLX
+>0en[o1,CaA1,1L=NX.?p2)-j@0f+gq1GUgB1,1L<NX.Bp2DHsA0f"ap1,1L>0ekC@NX.Hr0f(
+O=0f4mr2DHpB0ekC<NX.Eq0etL=0f=ss2)-g@1,1L>NX.Bp0ekI=0fG$t1bg^>1GLU@NX.Nt0e
+kI=0f"ap1,:R?0ekC?NX.Hs0f(O=0f+gq0ekF>0ekC@NX.Eq1,CX>0f4mr2)-jB0ekC<NX.?p0
+etL=0fG$t1GU[?1,1L?NX.Kt0etL=0f"ap1,1O>1,1L@NX.Hr1,:U>0f+gq2DHsB1,1L<NX.Bq
+0ekI=0f=ss1bpd?1GLU?NX.?o1,1R>0fG$t1GLX>1GLU@NX.Ks1,1R>0f"ap1,CX@0ekC>NX.H
+t0f(O=0f"ap0etL?0ekC?NX.Er1,CX>0f+gq2)6pC0ekC;NX.Bp1G^a?0f4mr1bgdB0ekC<NX.
+?q0etL=0f=ss1G^a@1,1L>NX.Bq1,:U>0f4mr1bpgA1,1L=NX.?o1GU^?0f=ss1GL[@1,1L>NX
+.Ks1GU^?0en[o1,CX>1GLU@NX.Ht0ekI=0f"ap0etL=1GLUANX.Er1,1R>0f+gq2)6pA1GLU=N
+X.Bp1GL[?0f4mr1bgd@1GLU>NX.Bs0f(O=0f+gq0f(R@0ekC>NX.Es1,CX>0f"ap1,:XA0ekC=
+NX.Hs1G^a?0en[o0ekL@0ekC>NX.Eq1c$j@0f"ap0f1U?1,1L?NX.Et0etL=0f"ap1,C[@1,1L
+>NX.Ht1,:U>0en[o0etO?1,1L?NX.Er1GU^?0f"ap1,1U@1,1L>NX.Hr1bpg@0en[o1,L^?1GL
+U?NX.?q1,1R>0f4mr1G^d@1GLU>NX.Bq1GL[?0f+gq1bpjA1GLU=NX.?o1bgd@0f4mr1GL^@1G
+LU>NX.Bt0f(O=0f"ap0f1XA0ekC=NX.Et1,CX>0en[o1,C^B0ekC<NX.?p1c$j@0f+gq1GUdC0
+ekC;NX.?s0etL=0f+gq1,LaA1,1L=NX.?q1GU^?0f+gq1G^gB1,1L<NX.Bq1bpg@0f"ap0ekO@
+1,1L>NX.Eq2)6pA0en[o1,Ud@1GLU>NX.?r1,1R>0f+gq1GgjA1GLU=NX.Br1GL[?0f"ap0etR
+?1GLU?NX.Er1bgd@0en[o1,1X@1GLU>NX.?s1,CX>0f"ap1,LdC0ekC;NX.?q1c$j@0f"ap0fC
+aA1,1L=NX.Bt1,:U>0en[o0f1[A1,1L=NX.Br1bpg@0en[o0etUA1,1L=NX.?s1,1R>0f"ap1,
+LdA1GLU=NX.?q1bgd@0f"ap1,:^A1GLU=NX.?o2DI!B0f"ap1,1L?0ekC?NX.Hr0f1U>0f+gq2
+DHpC0ekC;NX.?o0f(R>0fG$t1GLU?1,1L?NX.Ks0f(R>0f"ap1,1L=1GLUANX.Hr0etO>0f+gq
+2DHpA1GLU=NX.?o0ekL>0fG$t1GLU=1bg^ANX.Ks0ekL>0f"ap1,:R@0ekC>NX.Hs0f1U>0f"a
+p0ekF?0ekC?NX.Eq1,L^?0f+gq2)-jC0ekC;NX.?p0f(R>0f=ss1GU[@1,1L>NX.Kt0f(R>0en
+[o1,1O?1,1L?NX.Hr1,C[?0f"ap1,:R>1GLU@NX.Hs0etO>0f"ap0ekF=1GLUANX.Eq1,:X?0f
++gq2)-jA1GLU=NX.?p0ekL>0f=ss1GU[>1bg^@NX.Kt0ekL>0en[o1,1O=1bg^ANX.Hr1,1U?0
+f"ap1,CXA0ekC=NX.Ht0f1U>0en[o0etL@0ekC>NX.Er1,L^?0f"ap1,1RA0ekC=NX.Hr1Ggg@
+0en[o0f(O?1,1L?NX.Es0f(R>0f"ap1,:U@1,1L>NX.Hs1,C[?0en[o0ekI?1,1L?NX.Eq1G^d
+@0f"ap1,CX?1GLU?NX.Ht0etO>0en[o0etL>1GLU@NX.Er1,:X?0f"ap1,1R?1GLU?NX.Hr1GU
+a@0en[o0f(O=1bg^ANX.Es0ekL>0f"ap1,:U>1bg^@NX.Hs1,1U?0en[o0ekI=1bg^ANX.Eq1G
+L^@0f"ap1,L^B0ekC<NX.?q1,L^?0f+gq1G^dC0ekC;NX.Bq1Ggg@0f"ap0f1U@1,1L>NX.Et0
+f(R>0en[o1,C[A1,1L=NX.?p1G^d@0f+gq1GUaB1,1L<NX.Bp1c$mA0f"ap1,L^@1GLU>NX.?q
+1,:X?0f+gq1G^dA1GLU=NX.Bq1GUa@0f"ap0ekL?1GLU?NX.Eq1bpjA0en[o0f1U>1bg^@NX.E
+t0ekL>0en[o1,C[?1bg^?NX.?p1GL^@0f+gq1GUa@1bg^>NX.Bp1bggA0f"ap1,UdC0ekC;NX.
+?r1,L^?0f"ap1,C^C0ekC;NX.?s0f(R>0f"ap1,LaB1,1L<NX.?q1G^d@0f"ap1,:[B1,1L<NX
+.Bt0etO>0en[o0f1X@1GLU>NX.Br1GUa@0en[o0etR@1GLU>NX.Bp2)6sB0en[o0f:[?1bg^?N
+X.Bs1,1U?0en[o0f(U?1bg^?NX.Bq1bggA0en[o0ekO?1bg^?NX.?s1,L^?0en[o0fCaB1,1L<
+NX.?r1G^d@0en[o0f:^A1GLU=NX.?q1bpjA0en[o0fCa@1bg^>NX.?r1GL^@0en[o0etU@1bg^
+>NX.Bp0f:[?0f4mr1bg^B0ekC<NX.?o0f1X?0f=ss1GLU@1,1L>NX.Ks0f1X?0en[o1,1L>1GL
+U@NX.Hr0f(U?0f"ap0ekC<1bg^BNX.Eq0etR?0f+gq2)-g@1bg^>NX.Bp0ekO?0f4mr1bg^>2)
+-g@NX.Bq0f:[?0f+gq1bpdC0ekC;NX.?o1,Ud@0f4mr1GLXB0ekC<NX.?p0f1X?0f4mr1GU[A1
+,1L=NX.Bp1,La@0f+gq1bgaB1,1L<NX.Bq0f(U?0f+gq1bpdA1GLU=NX.?o1,C^@0f4mr1GLX@
+1GLU>NX.?p0etR?0f4mr1GU[?1bg^?NX.Bp1,:[@0f+gq1bga@1bg^>NX.Bq0ekO?0f+gq1bpd
+?2)-g?NX.?o1,1X@0f4mr1GLX>2)-g@NX.Br0f:[?0f"ap0etLA0ekC=NX.Er1,Ud@0en[o0f(
+O@1,1L>NX.Es0f1X?0en[o1,:UA1,1L=NX.?o1GgjA0f+gq1GL[B1,1L<NX.Br0f(U?0f"ap0e
+tL?1GLU?NX.Er1,C^@0en[o1,1R@1GLU>NX.?q0etR?0f+gq1G^a@1bg^>NX.Bq1,:[@0f"ap0
+ekI>1bg^@NX.Eq1GUdA0en[o1,CX>2)-g@NX.?p1,1X@0f+gq1GU^?2)-g?NX.Bp1GLaA0f"ap
+1,L^C0ekC;NX.?q1,Ud@0f"ap0f1UA1,1L=NX.Br1,La@0en[o0etOA1,1L=NX.Bs0f(U?0en[
+o0f(R@1GLU>NX.Bq1G^gA0en[o0ekL@1GLU>NX.?r0etR?0f"ap1,C[@1bg^>NX.?p1GUdA0f"
+ap1,1U@1bg^>NX.Bs0ekO?0en[o0f(R>2)-g@NX.Bq1GLaA0en[o0ekL>2)-g@NX.?r1,Ud@0e
+n[o0f:[B1,1L<NX.?q1GgjA0en[o0f1XA1GLU=NX.?p1c$pB0en[o0f:[@1bg^>NX.?q1GUdA0
+en[o0ekO@1bg^>NX.?r1,1X@0en[o0etR?2)-g?NX.Bp0fCa@0f+gq1bg^C0ekC;NX.?o0f:^@
+0f4mr1GLUA1,1L=NX.Bp0f1[@0f+gq1bg^A1GLU=NX.?o0f(X@0f4mr1GLU?1bg^?NX.Bp0etU
+@0f+gq1bg^?2)-g?NX.?o0ekR@0f4mr1GLU=2DHpANX.Bq0fCa@0f"ap0etI@1,1L>NX.Er0f:
+^@0en[o1,1OA1,1L=NX.Bq0f1[@0f"ap0ekF?1GLU?NX.Eq1,LdA0en[o0etI>1bg^@NX.Er0f
+(X@0en[o1,1O?1bg^?NX.Bq0etU@0f"ap0ekF=2)-gANX.Eq1,:^A0en[o0etI<2DHpBNX.Er0
+ekR@0en[o1,1O=2DHpANX.Br0fCa@0en[o0f(OA1,1L=NX.Bq1,UgA0en[o1,CXA1GLU=NX.?p
+1,LdA0f"ap1,1RA1GLU=NX.?q0f(X@0f"ap1,:U@1bg^>NX.?o1G^jB0f"ap1,CX?2)-g?NX.?
+p1,:^A0f"ap1,1R?2)-g?NX.?q0ekR@0f"ap1,:U>2DHp@NX.?o1GLdB0f"ap0f1UB1,1L<NX.
+?q1,LdA0en[o0f1U@1bg^>NX.?p1G^jB0en[o0f(R?2)-g?NX.?o1bppC0en[o0f1U>2DHp@NX
+.?p1GLdB0en[o1bg^>0etI@NX.Nt0ekC<0f+gq1,1O=0ekFANX.Hr1,1L<1,P!s2DHsA0ekF=N
+X.Bq0ekC<0fG$t1bpd?0etI?NX.Eq1,1L=0f=ss2)-j@0etI>NX.Bq1,1L<1,Y't1bpg@0ekF>
+NX.?o1GLU=1,b-u1GL[?0ekF?NX.Ks1GLU=1,=jq1,CX>0etI@NX.Ht0ekC<0f+gq0etL=0etI
+ANX.Er1,1L=0f4mr2)6pA0etI=NX.Bp1GLU>0f=ss1bgd@0etI>NX.Nt1GLU>0en[o1,C[?0ek
+F?NX.Ht1,1L<1,=jq0etO>0ekF@NX.Er1GLU=1,Fpr2)6sB0ekF<NX.Bp1bg^>1,P!s1bggA0e
+kF=NX.Bs0ekC<0f4mr0f(R>0etI@NX.Es1,1L=0f+gq1,:X?0etI?NX.Hs1GLU>0f"ap0ekL>0
+etI@NX.Eq1bg^?0f+gq2)-pB0etI<NX.Bs1,1L<1,Fpr0f(U?0ekF?NX.Es1GLU=1,=jq1,:[@
+0ekF>NX.Hs1bg^>1,4dp0ekO?0ekF?NX.Eq2)-g?1,=jq1,Ud@0etI>NX.?r1,1L=0f4mr1Ggj
+A0etI=NX.Br1GLU>0f+gq1c$pB0etI<NX.?p1bg^?0f4mr1GUdA0etI=NX.Bp2)-g@0f+gq1bg
+jB0etI<NX.Bt1,1L<1,=jq0f1[@0ekF>NX.Et1GLU=1,4dp1,CaA0ekF=NX.?p2)-g?1,Fpr1G
+UgB0ekF<NX.Bp2DHp@1,=jq0f:^@0etI>NX.Bs1GLU>0f"ap0f(X@0etI>NX.Es1bg^?0en[o1
+,:^A0etI=NX.?o2DHpA0f+gq1GLdB0etI<NX.Eq0etI<1,Y't2)-g@0ekF>NX.Bp0ekF<1,b-u
+1bg^>1,1O@NX.Nt0ekF<1,=jq1,1L=0etIANX.Hr0etI=0f4mr2DHpA0etI=NX.Eq0ekF=0f=s
+s2)-g?1,:R?NX.?p0etI<1,b-u1GU[?0ekF?NX.Kt0etI<1,=jq1,1O>0ekF@NX.Hr1,:R=1,F
+pr2DHsB0ekF<NX.Bq0ekF<1,Y't1bpd?1,1O?NX.?o1,1O=1,b-u1,:R>0etI@NX.Hs0etI=0f
++gq0ekF=0etIANX.Eq1,:R>0f4mr2)-jA0etI=NX.?p0ekF=0fG$t1GU[>1,:R@NX.Kt0ekF=0
+f"ap1,1O=1,:RANX.Hr1,1O>0f+gq2DHsA1,:R=NX.?q0etI<1,Y't1G^a@0ekF>NX.Bq1,:R=
+1,P!s1bpgA0ekF=NX.?o1GU[>1,Y't1GL[@0ekF>NX.Ks1GU[>1,4dp1,CX>1,1O@NX.Ht0ekF
+<1,=jq0etL=1,1OANX.Br0etI=0f4mr1c$jA0etI=NX.?p1,:R>0f=ss1GU^@0etI>NX.Kt1,:
+R>0en[o1,1R?0etI?NX.Hr1GU[?0f"ap0f(O=1,:RANX.Es0ekF=0f+gq1,:U>1,:R@NX.Hs1,
+1O>0f"ap0ekI=1,:RANX.Eq1GLX?0f+gq2)-mA1,:R=NX.?r0etI<1,P!s1GggA0ekF=NX.Br1
+,:R=1,Fpr1c$mB0ekF<NX.?p1GU[>1,P!s1GUaA0ekF=NX.Bp1bpd?1,Fpr1bggB0ekF<NX.Bs
+0ekF<1,Fpr0f(R>1,1O@NX.Bs0etI=0f+gq0f(R?0etI?NX.Es1,:R>0f"ap0ekL>1,1O@NX.B
+q1GU[?0f+gq1bpjB0etI<NX.?o1bpd@0f4mr1GL^A0etI=NX.?r0ekF=0f4mr1Ggg@1,:R>NX.
+Br1,1O>0f+gq1c$mA1,:R=NX.?p1GLX?0f4mr1GUa@1,:R>NX.Bp1bga@0f+gq1bggA1,:R=NX
+.?s0etI<1,Fpr1,LaA0ekF=NX.?q1GU[>1,Fpr1G^gB0ekF<NX.Bq1bpd?1,=jq0ekO@0ekF>N
+X.Eq2)6m@1,4dp1,Ud@1,1O>NX.?r1,1O=1,Fpr1,UdA0etI=NX.?r1,:R>0f+gq1GgjB0etI<
+NX.?p1bga?1,Fpr1,C^A0etI=NX.?p1bpd@0f+gq1GUdB0etI<NX.Bp2)6mA0f"ap0f:[?1,:R
+?NX.Bs1,1O>0f"ap0f(U?1,:R?NX.Es1GLX?0en[o1,:[@1,:R>NX.?o2)-jA0f+gq1GLaA1,:
+R=NX.?t0etI<1,=jq1,UgB0ekF<NX.?r1GU[>1,=jq1,CaB0ekF<NX.?p2)6m@1,=jq0f:^@1,
+1O>NX.?s1,:R>0f"ap0f(X@1,1O>NX.Bs1GU[?0en[o0f(XA0etI=NX.?o2DHsA1,=jq1,:^B0
+etI<NX.?t0ekF=0 f"ap1 ,UgA1 ,:R=N X. ?r1 GLX?0f "ap1,Ca
+A1,:R=NX.?p2)-j A0f "ap1, 1[A1, :R =NX .?o 0f(O
+=1,b-u1GLU?0ekF ?NX.K s0 f(O=1 ,=jq 1, 1L= 1,1OA NX. Hr0et L=1,
+Fpr2DHpA1,1O=NX .Bp0f (O> 0f= ss1b g^ @0e tI>NX. Nt 0f(O>0 en[
+o0ekC;1GLXCNX.E q0ekI =1, P!s 2 )-g ?1G LX? NX.?o0 et L>0fG$ t1G
+LU>1,:R@NX.Ks0e tL>0f "ap 1,1 L< 1G U[B NX. Hr0ekI >0 f+gq2D Hp@
+1GU[>NX.?p0f(O= 1,Y' t1G U[ @0 ekF >NX .Kt 0f(O
+=1,4dp1,1O?0ekF ?NX. H r1 ,C X>1 ,=j q1,: R>1,1
+O@NX.Hs0etL=1,= jq0ekF =1, 1 OAN X. Bq0f (O> 0f4mr1bpdA 0etI=NX.?o1
+,CX?0f=ss1GLX@0 etI>NX .Ks 1 ,CX? 0en[ o0e tI<1GLXBNX .Er0ekI=1,F
+pr2)6m@1GLX>NX. ?p0etL >0f =ss1 GU[? 1,: R?NX.Kt0et L>0en[o1,1O
+>1,:R@NX.Hr1,:U ?0f"a p1,: R=1GU [ANX .Hs 0ekI>0f"ap 0ekF<1GU[BN
+X.Eq1,1R?0f+gq2 )-j@1 GU[>N X.?q0 f(O =1,P!s1G^a A0ekF=NX.Bq
+1,CX>1,Fpr1bpgB 0ekF<NX .?o1G^ a?1,P !s1 GL[A0ekF=N X.Br0etL=1,
+Fpr1c$jA1,1O=NX.?p1,:U>1,P!s1,CX@0etI>NX.Ht0f(O>0en[o0etL?0etI?NX.Er1,CX?0
+f"ap1,1R@0etI>NX.Hr1G^a@0en[o0f(O=1GLXANX.Es0ekI=1,=jq0f(O>1,:R@NX.Es0etL>
+0f"ap0ekI=1GLXANX.Bq1,:U?0f+gq1bpgA1,:R=NX.?o1GU^@0f4mr1GL[@1,:R>NX.Br0ekI
+>0f+gq1c$j@1GU[>NX.?p1,1R?0f4mr1GU^?1GU[?NX.Bp1GL[@0f+gq1bgd@1GU[>NX.?r0f(
+O=1,Fpr1GggB0ekF<NX.Br1,CX>1,=jq0etO@0ekF>NX.Er1G^a?1,4dp1,1UA0ekF=NX.Bs0e
+tL=1,=jq0f(R?1,1O?NX.Bs0f(O>0f"ap0f(R@0etI>NX.Es1,CX?0en[o0ekL?1,1O?NX.Bq1
+G^a@0f"ap0ekL@0etI>NX.Eq1c$jA0en[o0f1U>1GLX@NX.Et0ekI=1,4dp0f1U?1,:R?NX.Et
+0etL>0en[o0etO>1GLX@NX.Br1,:U?0f"ap0etO?1,:R?NX.Er1GU^@0en[o1,1U@1,:R>NX.B
+s0ekI>0f"ap0f(R>1GU[@NX.Es1,1R?0en[o1,:X?1GU[?NX.?o1bgdA0f+gq1GL^@1GU[>NX.
+?s0f(O=1,=jq1,LaB0ekF<NX.?q1G^a?1,=jq1,:[B0ekF<NX.Bt0etL=1,4dp0f1X@1,1O>NX
+.Bt0f(O>0en[o0f1XA0etI=NX.?p1bpg@1,=jq1,C^B0etI<NX.?p1c$jA0f"ap0f:[?1GLX?N
+X.?s0etL>0f"ap0f(U?1GLX?NX.Bs1,:U?0en[o0f(U@1,:R>NX.?o2)-mA1,=jq1,:[A1,:R=
+NX.?o2)6pB0f"ap1,Ud@1GU[>NX.?r1,1R?0f"ap1,C^@1GU[>NX.?p1bgdA0f"ap1,1X@1GU[
+>NX.?t0f(O=1,4dp0f1[B0ekF<NX.?s1,:U>1,4dp0f:^B0etI<NX.?q1bpg@1,4dp0f(XB0et
+I<NX.?t0ekI=1,4dp0fCaA1,:R=NX.?r1GL[?1,4dp0f1[A1,:R=NX.?p2)-mA1,4dp0etUA1,
+:R=NX.?s1,1R?0en[o0f(X@1GU[>NX.?o2DI!C0en[o0ekC>0ekF@NX.Eq0f1U>1,Fpr2)-gB0
+ekF<NX.Bp0f(R>1,P!s1bg^@1,1O>NX.Bp0f1U?0f4mr1bg^A0etI=NX.?o0etO>1,Y't1GLU>
+1GLX@NX.Ks0etO>1,4dp0ekC=1,:RANX.Eq0f(R?0f+gq2)-gA1,:R=NX.Bp0ekL>1,P!s1bg^
+>1bga@NX.Bp0etO?0f4mr1bg^?1GU[?NX.?o0ekL?0f=ss1GLU=1bpdANX.Ks0ekL?0en[o0et
+I?0ekF?NX.Er0f1U>1,=jq1,1O@0ekF>NX.Hr1,L^?1,4dp1,:R?1,1O?NX.Hs0f(R>1,4dp0e
+kF>1,1O@NX.Bq0f1U?0f+gq1bpdB0etI<NX.?o1,L^@0f4mr1GLXA0etI=NX.?p0etO>1,P!s1
+GU[?1GLX?NX.?p0f(R?0f4mr1GU[@1,:R>NX.Bp1,C[@0f+gq1bgaA1,:R=NX.Bq0ekL>1,Fpr
+1bpd?1bga?NX.?o1,1U?1,P!s1,:R>1GU[@NX.Hs0etO?0en[o0ekF=1GU[ANX.Eq1,:X@0f"a
+p0etI<1bpdBNX.Er0ekL?0f"ap1,1O=1bpdANX.Hr1,1U@0en[o0f(O@0ekF>NX.Es0f1U>1,4
+dp1,:UA0ekF=NX.?o1Ggg@1,Fpr1GL[B0ekF<NX.Br0f(R>1,=jq0etL?1,1O?NX.Br0f1U?0f
+"ap0etL@0etI>NX.Er1,L^@0en[o1,1RA0etI=NX.?q0etO>1,Fpr1G^a@1GLX>NX.?q0f(R?0
+f+gq1G^aA1,:R=NX.?o1GUa@1,Fpr1,:U@1,:R>NX.?o1G^dA0f+gq1GL[A1,:R=NX.Br0ekL>
+1,=jq0etL=1bgaANX.Br0etO?0f"ap0etL>1GU[@NX.Er1,:X@0en[o1,1R?1GU[?NX.?q0ekL
+?0f+gq1G^a?1bpd?NX.Bq1,1U@0f"ap0ekI=1bpdANX.Eq1GL^A0en[o0f1UA0ekF=NX.Br1,L
+^?1,4dp0etOA0ekF=NX.Bs0f(R>1,4dp0f(R@1,1O>NX.Bs0f1U?0en[o0f(RA0etI=NX.?o1c
+$mA1,=jq1,:XB0etI<NX.?r0etO>1,=jq0f1U@1,:R>NX.?p1GUa@1,=jq1,C[A1,:R=NX.?p1
+G^dA0f"ap1,1UA1,:R=NX.Bs0ekL>1,4dp0f(R>1bga@NX.Bs0etO?0en[o0f(R?1GU[?NX.?o
+1bggA1,=jq1,:X@1GU[>NX.?o1bpjB0f"ap0f1U>1bpd@NX.Br1,1U@0en[o0etO>1bpd@NX.B
+p1bggB0en[o0f:[B0ekF<NX.?q1Ggg@1,4dp0f1XA1,1O=NX.?r1,L^@0en[o0etRA1,1O=NX.
+?s0etO>1,4dp0f:[A1,:R=NX.?q1GUa@1,4dp0f(UA1,:R=NX.?o2)6sB1,4dp0f1X?1bga?NX
+.?r1,:X@0en[o0etR?1bga?NX.?p1bpjB0en[o0f:[?1bpd?NX.?q1GL^A0en[o0ekO?1bpd?N
+X.?o0f:[?1,P!s1GLUA0ekF=NX.Bp0f1X?1,Fpr1bg^A1,1O=NX.Bp0f:[@0f+gq1bg^B0etI<
+NX.?o0f(U?1,P!s1GLU?1GLX?NX.?o0f1X@0f4mr1GLU@1,:R>NX.Bp0etR?1,Fpr1bg^?1bga
+?NX.Bp0f(U@0f+gq1bg^@1GU[>NX.?o0ekO?1,P!s1GLU=2)-jANX.?o0etR@0f4mr1GLU>1bp
+d@NX.Bp0ekO@0f+gq1bg^>2)6m@NX.?p0f:[?1,Fpr1GU[B0ekF<NX.Bp1,Ud@1,=jq1,:R@1,
+1O>NX.?o1,La@1,Fpr1,:RA0etI=NX.?o1,UdA0f+gq1GLXB0etI<NX.?p0f(U?1,Fpr1GU[@1
+GLX>NX.?p0f1X@0f+gq1GU[A1,:R=NX.Bp1,LaA0f"ap1,:R>1bga@NX.?o1,:[@1,Fpr1,:R?
+1GU[?NX.?o1,C^A0f+gq1GLX@1GU[>NX.?p0ekO?1,Fpr1GU[>2)-j@NX.?p0etR@0f+gq1GU[
+?1bpd?NX.Bp1,:[A0f"ap1,:R=2)6mANX.?o1,1XA0f+gq1GLX>2)6m@NX.?q0f:[?1,=jq1,:
+UB0ekF<NX.Br0f1X?1,4dp0etL@1,1O>NX.Br0f:[@0en[o0etLA0etI=NX.?q0f(U?1,=jq0f
+(O@1,:R>NX.?o1G^gA1,=jq1,:UA1,:R=NX.?o1GgjB0f"ap1,CX?1bga?NX.?p1,:[@1,=jq1
+,CX@1GU[>NX.?p1,C^A0f"ap1,1R@1GU[>NX.?q0ekO?1,=jq0f(O>1bpd@NX.?o1GLaA1,=jq
+1,:U?1bpd?NX.?o1GUdB0f"ap1,CX>2)6m@NX.?p1,1XA0f"ap1,1R>2)6m@NX.?r0f:[?1,4d
+p0f(RA1,1O=NX.?q1,UdA0en[o0f1U@1GLX>NX.?r0f1X@0en[o0etO@1GLX>NX.?p1GgjB0en
+[o0f(R?1bga?NX.?q1,C^A0en[o0ekL?1bga?NX.?o1c$pC0en[o0f1U>2)-j@NX.?r0etR@0e
+n[o0etO>2)-j@NX.?p1GUdB0en[o0f(R>2)6m@NX.?o1bgjC0en[o0ekC@0ekF>NX.Eq0fCa@1
+,4dp1,1L@1,1O>NX.Bp0fCaA0f"ap0ekC>1GLX@NX.Eq0f1[@1,4dp0ekC?1,:R?NX.Eq0f:^A
+0en[o1,1L>1bga@NX.Bp0f1[A0f"ap0ekC<2)-jBNX.Eq0etU@1,4dp0ekC=1bpdANX.Eq0f(X
+A0en[o1,1L<2DHsBNX.Bp0etUA0f"ap0etIA0ekF=NX.Bq0f:^@1,4dp0ekF@1,1O>NX.Bq0fC
+aA0en[o0etI?1GLX?NX.?p0f:^A0f"ap1,1OA1,:R=NX.Bq0f(X@1,4dp0ekF>1bga@NX.Bq0f
+1[A0en[o0ekF?1GU[?NX.?p0etU@1,=jq0etI>1bpd@NX.Bp1,CaB0en[o1,:R=2DHsANX.?o1
+,1[A1,=jq1,:R>2)6m@NX.?o1,:^B0f"ap0f(OB0ekF<NX.?p1,UgA1,4dp0f(O@1GLX>NX.?q
+0f:^A0en[o0ekI@1GLX>NX.?p1,CaA1,4dp0etL@1GU[>NX.?q0etU@1,4dp0f(O?1bpd?NX.?
+o1GUgB1,4dp0ekI?1bpd?NX.?p1,1[A1,4dp0etL>2)6m@NX.Eq0ekC<1,Y't2)-g?0etL?NX.
+Bp0ekC=0fG$t1bg^>0f(O@NX.Nt0ekC=0f"ap1GLX>0ekI@NX.Ks1,1L<1GXsr0etI<0etLBNX
+.Er0ekC<1,P!s2)6m@0etL>NX.Bp1,1L=1,Y't1bga?0etL?NX.Nt1,1L=1,4dp1,:R=0f(OAN
+X.Hs0ekC=0f+gq0ekF<0f(OBNX.Eq1,1L>0f4mr2)-j@0f(O>NX.?p1,1L<1Gt0u1GU^?0ekI?
+NX.Kt1,1L<1GOmq1,1R>0ekI@NX.Hr1GLU=1GXsr0f(O=0etLANX.Es0ekC<1,Fpr1,:U>0etL
+@NX.Hs1,1L=1,=jq0ekI=0etLANX.Eq1GLU>1,Fpr2)-mA0etL=NX.Br0ekC=0f4mr1c$j@0f(
+O>NX.?p1,1L>0f=ss1GU^?0f(O?NX.Kt1,1L>0en[o1,1R>0f(O@NX.Hr1GLU?0f"ap0f(R>0e
+kI@NX.Es1,1L<1GXsr1,:X?0ekI?NX.Hs1GLU=1GOmq0ekL>0ekI@NX.Eq1bg^>1GXsr0f1U>0
+etL@NX.Et0ekC<1,=jq1,C[?0etL?NX.Ht1,1L=1,4dp0etO>0etL@NX.Er1GLU>1,=jq1,1U?
+0etL?NX.Hr1bg^?1,4dp1,L^?0f(O?NX.?q1,1L>0f4mr1G^d@0f(O>NX.Bq1GLU?0f+gq1bpj
+A0f(O=NX.?o1bg^@0f4mr1GL^@0f(O>NX.?r1,1L<1Gb$s1GgjA0ekI=NX.Br1GLU=1GXsr0et
+R?0ekI?NX.Er1bg^>1GOmq1,1X@0ekI>NX.?s0ekC<1,Fpr1,La@0etL>NX.?q1GLU>1,Fpr1G
+^gA0etL=NX.Bq1bg^?1,=jq0ekO?0etL?NX.Eq2)-g@1,4dp1,Ud@0f(O>NX.?r1,1L>0f+gq1
+GgjA0f(O=NX.Br1GLU?0f"ap0etR?0f(O?NX.Er1bg^@0en[o1,1X@0f(O>NX.?s1,1L<1GXsr
+1,LdA0ekI=NX.?q1bg^>1GXsr1,:^A0ekI=NX.?o2DHp@1GXsr0fCa@0etL>NX.Bt1,1L=1,4d
+p0f1[@0etL>NX.Br1bg^?1,4dp0etU@0etL>NX.Bp2DHpA1,4dp0f:^@0f(O>NX.Bs1GLU?0en
+[o0f(X@0f(O>NX.Bq2)-gA0en[o0ekR@0f(O>NX.Bp0etI<1Gt0u1bg^?0ekI?NX.Nt0etI<1G
+Omq0ekC;1,1RCNX.Eq0ekF<1Gk*t2)-g?1,1R?NX.?o0etI=1,b-u1GLU>0etL@NX.Ks0etI=1
+,=jq1,1L<1,:UBNX.Hr0ekF=1,Fpr2DHp@1,:U>NX.Bp0etI>0f=ss1bg^?0f(O?NX.Nt0etI>
+0en[o0ekC;1,CXCNX.Eq0ekF>0f4mr2)-g?1,CX?NX.Bq0etI<1Gk*t1bpd@0ekI>NX.?o1,:R
+=1Gt0u1GLX?0ekI?NX.Ks1,:R=1GOmq0etI<1,1RBNX.Er0ekF<1Gb$s2)6m@1,1R>NX.?p0et
+I=1,Y't1GU[?0etL?NX.Kt0etI=1,4dp1,1O>0etL@NX.Hr1,:R>1,=jq1,:R=1,:UANX.Hs0e
+kF=1,=jq0ekF<1,:UBNX.Bq0etI>0f4mr1bpd@0f(O>NX.?o1,:R?0f=ss1GLX?0f(O?NX.Ks1
+,:R?0en[o0etI<1,CXBNX.Er0ekF>0f+gq2)6m@1,CX>NX.Bp1,1O?0f4mr1bga?1,CX?NX.Br
+0etI<1Gb$s1c$jA0ekI=NX.?p1,:R=1Gk*t1GU^@0ekI>NX.Bp1GU[>1Gb$s1bgdA0ekI=NX.?
+q0ekF<1Gk*t1G^a?1,1R?NX.?q0etI=1,P!s1G^a@0etL>NX.?o1GLX>1Gk*t1,:U?0etL?NX.
+Hs1,:R>1,4dp0ekI>0etL@NX.Eq1GU[?1,=jq1,CX>1,:U@NX.Ht0ekF=1,4dp0etL=1,:UANX
+.Br0etI>0f+gq1c$jA0f(O=NX.?p1,:R?0f4mr1GU^@0f(O>NX.Bp1GU[@0f+gq1bgdA0f(O=N
+X.?q0ekF>0f4mr1G^a?1,CX?NX.Bq1,1O?0f+gq1bpg@1,CX>NX.?o1GLX@0f4mr1GL[?1,CX?
+NX.Bs0etI<1GXsr0f(R?0ekI?NX.Es1,:R=1GOmq1,:X@0ekI>NX.?o1bpd?1Gb$s1GL^A0ekI
+=NX.?r0ekF<1Gb$s1Ggg@1,1R>NX.?r0etI=1,Fpr1GggA0etL=NX.?p1GLX>1Gb$s1,C[@0et
+L>NX.?p1GU[?1,Fpr1GUaA0etL=NX.Bp1bpd@1,=jq1,L^?1,:U?NX.?q1,1O>1,Fpr1,L^@0f
+(O>NX.?q1,:R?0f+gq1G^dA0f(O=NX.?o1bga@1,Fpr1,:X@0f(O>NX.?o1bpdA0f+gq1GL^A0
+f(O=NX.?r0ekF>0f+gq1Ggg@1,CX>NX.Br1,1O?0f"ap0etO>1,CX@NX.Er1GLX@0en[o1,1U?
+1,CX?NX.Bt0etI<1GOmq0f1X@0ekI>NX.Br1GU[>1GOmq0etR@0ekI>NX.Bp2)6m@1GOmq0f:[
+?1,1R?NX.?s0etI=1,=jq0f(U?1,1R?NX.Bs1,:R>1,4dp0f(U@0etL>NX.?o2)-j@1GXsr1,:
+[A0etL=NX.?o2)6mA1,=jq1,Ud@1,:U>NX.?r1,1O>1,=jq1,UdA0f(O=NX.?r1,:R?0f"ap0e
+tR?1,:U?NX.Br1GU[@0en[o0etR@0f(O>NX.Bp2)6mB0en[o0f:[?1,CX?NX.Bs1,1O?0en[o0
+f(U?1,CX?NX.Bq1bgaA0en[o0ekO?1,CX?NX.?s1,:R=1GOmq0f(XA0ekI=NX.?t0ekF<1GOmq
+0fCaA0etL=NX.?r1GLX>1GOmq0f1[A0etL=NX.?p2)-j@1GOmq0etUA0etL=NX.?s1,1O>1,4d
+p0f:^A0f(O=NX.?q1bga@1,4dp0f(XA0f(O=NX.?o2DHsB1,4dp0fCa@1,CX>NX.?r1GLX@0en
+[o0etU@1,CX>NX.Bp0f(O=1Gk*t1bg^@0ekI>NX.?o0etL=1Gt0u1GLU>1,1R@NX.Ks0etL=1G
+Omq0ekC=0etLANX.Eq0f(O>1,Fpr2)-gA0etL=NX.Bp0ekI=1Gk*t1bg^>1GL[@NX.Bp0etL>1
+,P!s1bg^?1,:U?NX.Bp0f(O?0f4mr1bg^@0f(O>NX.?o0ekI>1,Y't1GLU=1GU^ANX.Ks0ekI>
+1,4dp0ekC<1,CXBNX.Eq0etL?0f+gq2)-g@1,CX>NX.Bp0ekI?0f4mr1bg^>1G^a@NX.Bq0f(O
+=1Gb$s1bpdA0ekI=NX.?o1,CX>1Gk*t1GLX@0ekI>NX.?p0etL=1Gk*t1GU[?1,1R?NX.?p0f(
+O>1,P!s1GU[@0etL>NX.Bp1,CX?1,Fpr1bgaA0etL=NX.Bq0ekI=1Gb$s1bpd?1GL[?NX.?o1,
+1R>1Gk*t1,:R>1,:U@NX.Hs0etL>1,4dp0ekF=1,:UANX.Bq0f(O?0f+gq1bpdA0f(O=NX.?o1
+,CX@0f4mr1GLX@0f(O>NX.?p0ekI>1,P!s1GU[>1GU^@NX.?p0etL?0f4mr1GU[?1,CX?NX.Bp
+1,:U@0f+gq1bga@1,CX>NX.Bq0ekI?0f+gq1bpd?1G^a?NX.?o1,1R@0f4mr1GLX>1G^a@NX.B
+r0f(O=1GXsr0etL?0ekI?NX.Er1,CX>1GOmq1,1R@0ekI>NX.?q0etL=1Gb$s1G^a@1,1R>NX.
+?q0f(O>1,Fpr1G^aA0etL=NX.?o1GU^?1Gb$s1,:U@0etL>NX.?o1G^a@1,Fpr1GL[A0etL=NX
+.Br0ekI=1GXsr0etL=1GL[ANX.Br0etL>1,=jq0etL>1,:U@NX.Br0f(O?0f"ap0etL?0f(O?N
+X.Er1,CX@0en[o1,1R@0f(O>NX.?q0ekI>1,Fpr1G^a?1GU^?NX.?q0etL?0f+gq1G^a@1,CX>
+NX.?o1GL[@1,Fpr1,:U?1,CX?NX.?o1GU^A0f+gq1GL[@1,CX>NX.Br0ekI?0f"ap0etL=1G^a
+ANX.Er1,1R@0en[o1,1R>1G^a@NX.Bs0f(O=1GOmq0f(R@0ekI>NX.Bq1G^a?1GOmq0ekL@0ek
+I>NX.?r0etL=1GXsr0f1U@0etL>NX.?p1GU^?1GXsr1,C[A0etL=NX.?p1G^a@1,=jq1,1UA0e
+tL=NX.Bs0ekI=1GOmq0f(R>1GL[@NX.Bs0etL>1,4dp0f(R?1,:U?NX.Bs0f(O?0en[o0ekL>1
+GL[@NX.?q1,CX@0f"ap0ekL?1,:U?NX.Bq1G^aA0en[o0ekL@0f(O>NX.?r0ekI>1,=jq0f1U?
+1,CX?NX.?p1GL[@1,=jq1,C[@1,CX>NX.?p1GU^A0f"ap1,1U@1,CX>NX.Bs0ekI?0en[o0f(R
+>1G^a@NX.Bq1GL[A0en[o0ekL>1G^a@NX.?r1,CX>1GOmq0etRA0ekI=NX.?s0etL=1GOmq0f:
+[A0etL=NX.?q1GU^?1GOmq0f(UA0etL=NX.?o2)6pA1GOmq0f1X?1GL[?NX.?r1,:U?1,4dp0e
+tR?1GL[?NX.?r1,CX@0en[o0etR@1,:U>NX.?p1c$jB0en[o0f:[?1GU^?NX.?s0etL?0en[o0
+f(U?1GU^?NX.?q1GU^A0en[o0ekO?1GU^?NX.?o2)6pC0en[o0f1X?1G^a?NX.?p1bgdB0en[o
+1,1L?0ekI?NX.Hr0f1U>1GOmq0ekC=1,1RANX.Eq0f(R>1GXsr0ekC>0etL@NX.Eq0f1U?1,=j
+q1,1L=1GL[ANX.Hr0etO>1GOmq1,1L>1,:U@NX.Hr0f(R?1,4dp1,1L?0f(O?NX.Hr0f1U@0en
+[o0ekC;1bgdCNX.Eq0ekL>1GXsr0ekC<1GU^BNX.Eq0etO?1,=jq0ekC=1,CXANX.Eq0f(R@0f
+"ap1,1L<1bpgBNX.Hr0ekL?1,4dp1,1L=1G^aANX.Hr0etO@0en[o0ekC;1c$jCNX.Eq0ekL@0
+f"ap1,:R@0ekI>NX.?o1,L^?1Gb$s1GLXA0ekI=NX.?p0f(R>1Gb$s1GU[@1,1R>NX.?p0f1U?
+1,Fpr1GU[A0etL=NX.Bp1,L^@1,=jq1,:R>1GL[@NX.?o1,:X?1Gb$s1,:R?1,:U?NX.?o1,C[
+@1,Fpr1,:R@0f(O>NX.?o1,L^A0f+gq1GLXA0f(O=NX.?p0ekL>1Gb$s1GU[>1bgd@NX.?p0et
+O?1,Fpr1GU[?1GU^?NX.?p0f(R@0f+gq1GU[@1,CX>NX.Bp1,C[A0f"ap1,:R=1bpgANX.?o1,
+1U@1,Fpr1,:R>1G^a@NX.?o1,:XA0f+gq1GLX?1G^a?NX.?p0ekL@0f+gq1GU[>1c$j@NX.Bp1
+,1UA0f"ap1,CXA0ekI=NX.?p1,L^?1GXsr1,1RA0ekI=NX.?q0f(R>1GXsr0f(O@0etL>NX.?o
+1G^d@1GXsr1,:UA0etL=NX.?o1GggA1,=jq1,CX?1GL[?NX.?p1,:X?1GXsr1,CX@1,:U>NX.?
+p1,C[@1,=jq1,CXA0f(O=NX.?p1,L^A0f"ap1,1RA0f(O=NX.?q0ekL>1GXsr0f(O>1GU^@NX.
+?o1GL^@1GXsr0f(O?1,CX?NX.?o1GUaA1,=jq1,:U@1,CX>NX.?o1G^dB0f"ap1,CX>1bpg@NX
+.?p1,1U@1,=jq1,CX?1G^a?NX.?p1,:XA0f"ap1,1R?1G^a?NX.?q0ekL@0f"ap1,:U>1c$j@N
+X.?o1GL^B0f"ap0 f(RA0 ekI=N X.?r0 f( R>1 GOmq0f 1UA0etL
+=NX.?p1G^d@1GOm q0e tOA0e tL=NX .? q1, :X? 1GOm
+q0f(R@1,:U>NX.? o1bpj A1 GOmq0 f(RA 0f (O= NX.?o 1c$ mB1,4 dp0f
+1U>1bgd@NX.?r0e tO?1, 4dp 0et O>1b gd @NX .?r0f( R@ 0en[o0 etO
+?1GU^?NX.?p1G^d B0en[ o0f (R> 1 bpg @NX .?q 1,:XA0 en [o0ekL >1b
+pg@NX.?o1bpjC0e n[o0f 1U> 1c$ j@ NX .?p 1GL ^B0en[ o1 ,1L@0e kI>
+NX.?o0f1X?1Gb$s 1GLU @1, 1R >N X.? o0f :[@ 1,Fp
+r1GLUA0etL=NX.B p0f( U ?1 GX sr1 ,1L ?1,: U?NX.
+Bp0f:[A0f"ap0ek C<1bgd BNX . Eq0 et R?1G Omq 0ekC=1GU^A NX.Eq0f(U@1
+,4dp0ekC>1,CX@N X.Eq0f 1XA 0 en[o 1,1L <2) -mBNX.Bp0e tR@1,=jq1,1
+L>1G^a@NX.?o0ek O@1,Fp r1G LU=2 )6pA NX. ?o0etRA0f+ gq1GLU>1c$j
+@NX.Bq0f:[?1GOm q0ekF @0ek I>NX. ?p0f 1X? 1GXsr0etI@ 0etL>NX.Bp1
+,UdA1,4dp1,:R?1 GL[?N X.?o1 ,C^@1 GXs r1,:R@1,:U >NX.?o1,LaA
+1,=jq1,:RA0f(O= NX.?o1, UdB0f" ap0et I=1 bgdANX.?p0 f(U@1,=jq0e
+tI?1,CX?NX.Bp1,LaB0en[o1,:R=2)-mANX.?o1,1X@1GXsr1,:R>1bpg@NX.?o1,:[A1,=jq1
+,:R?1G^a?NX.?o1,C^B0f"ap0etI<2)6pBNX.?p0etRA0f"ap1,1O>1c$j@NX.?p1,Ud@1GOmq
+0f(O@1,1R>NX.?q0f:[@1,4dp0ekI@1,1R>NX.?p1,C^@1GOmq0etL@1,:U>NX.?p1,UdB0en[
+o0f(O>1bgd@NX.?q0f(U@1,4dp0ekI>1bgd@NX.?q0f1XA0en[o0ekI?1GU^?NX.?o1GgjC0en
+[o0etL=2)-mANX.?p1,:[A1,4dp0etL?1G^a?NX.?q0ekO@1,4dp0f(O>1c$j@NX.?o1GLaB1,
+4dp0ekI>1c$j@NX.Bp0fCa@1GOmq0ekC?1,1R?NX.?o0fCaA1,=jq1,1L?1GL[?NX.Bp0f:^A1
+,4dp1,1LA0f(O=NX.?o0f(X@1GXsr0ekC>1GU^@NX.?o0f:^B0f"ap1,1L=2)-mANX.Bp0f(XA
+1,4dp1,1L?1G^a?NX.?o0ekR@1GXsr0ekC<2)6pBNX.?o0f(XB0f"ap0etI@1,1R>NX.?p0fCa
+A1,4dp0ekF?1GL[?NX.?o1,UgB1,4dp0etI>1bgd@NX.?p0f1[A1,4dp0etI@1,CX>NX.?o1,:
+^A1GOmq0ekF>1bpg@NX.?o1,LdC0en[o0etI<2DI!BNX.?p0etUA1,4dp0etI>1c$j@NX.Bp0e
+kC<1Gt0u1bg^>0etO@NX.Nt0ekC<1GOmq0ekC;0f(RCNX.Eq0ekC=1,P!s2)-g?0f(R?NX.Bp0
+ekC>0f=ss1bg^>0f1U@NX.Nt0ekC>0en[o1,1O=0ekLANX.Hr1,1L<1bt's1,:R=0etOANX.Hs
+0ekC<1GXsr0ekF<0etOBNX.Eq1,1L=1Gb$s2)-j@0etO>NX.?p0ekC=1,Y't1GU[>0f(R@NX.K
+t0ekC=1,4dp1,1O=0f(RANX.Hr1,1L>1,=jq1,:R=0f1UANX.Hs0ekC>0f"ap0ekF<0f1UBNX.
+Eq1,1L?0f+gq2)-j@0f1U>NX.Bq1,1L<1c(-t1bpg@0ekL>NX.?o1GLU=1c13u1GL[?0ekL?NX
+.Br0ekC<1Gb$s1c$j@0etO>NX.?p1,1L=1Gk*t1GU^?0etO?NX.Bp1GLU>1Gb$s1bgd@0etO>N
+X.?q0ekC=1,P!s1G^a?0f(R?NX.Bq1,1L>1,Fpr1bpg@0f(R>NX.?o1GLU?1,P!s1GL[?0f(R?
+NX.Br0ekC>0f+gq1c$j@0f1U>NX.?p1,1L?0f4mr1GU^?0f1U?NX.Bp1GLU@0f+gq1bgd@0f1U
+>NX.Br1,1L<1bt's0etO>0ekL@NX.Er1GLU=1bk!r1,1U?0ekL?NX.Bs0ekC<1GXsr0f(R>0et
+O@NX.Es1,1L=1GOmq1,:X?0etO?NX.?o1bg^?1Gb$s1GL^@0etO>NX.?r0ekC=1,Fpr1Ggg@0f
+(R>NX.Br1,1L>1,=jq0etO>0f(R@NX.Er1GLU?1,4dp1,1U?0f(R?NX.Bs0ekC>0f"ap0f(R>0
+f1U@NX.Es1,1L?0en[o1,:X?0f1U?NX.?o1bg^A0f+gq1GL^@0f1U>NX.Bs1,1L<1bk!r0f(U?
+0ekL?NX.Bq1bg^>1bk!r0ekO?0ekL?NX.Bt0ekC<1GOmq0f1X?0etO?NX.Br1GLU>1GOmq0etR
+?0etO?NX.Bp2)-g@1GOmq0f:[?0f(R?NX.Bs1,1L>1,4dp0f(U?0f(R?NX.Bq1bg^@1,4dp0ek
+O?0f(R?NX.Bt0ekC>0en[o0f1X?0f1U?NX.Br1GLU@0en[o0etR?0f1U?NX.Bp2)-gB0en[o0f
+1[@0ekL>NX.?p2)-g?1bk!r0f:^@0etO>NX.?q1bg^?1GOmq0ekR@0etO>NX.?t0ekC=1,4dp0
+f1[@0f(R>NX.?p2)-gA1,4dp0f:^@0f1U>NX.?q1bg^A0en[o0ekR@0f1U>NX.Eq0etI<1c(-t
+2)-g@0ekL>NX.Bp0ekF<1c13u1bg^>1,1U@NX.Bp0etI=1Gk*t1bg^?0etO?NX.?o0ekF=1Gt0
+u1GLU=1,:XANX.Ks0ekF=1GOmq0ekC<0f(RBNX.Eq0etI>1,Fpr2)-g@0f(R>NX.Bp0ekF>1,P
+!s1bg^>1,C[@NX.Bp0etI?0f4mr1bg^?0f1U?NX.?o0ekF?0f=ss1GLU=1,L^ANX.Ks0ekF?0e
+n[o0etI=0ekLANX.Er0etI<1bt's1,1O>0ekL@NX.Hr1,:R=1bk!r1,:R=1,1UANX.Hs0ekF<1
+bk!r0ekF<1,1UBNX.Bq0etI=1Gb$s1bpd@0etO>NX.?o1,:R>1Gk*t1GLX?0etO?NX.?p0ekF=
+1Gk*t1GU[>1,:X@NX.?p0etI>1,P!s1GU[?0f(R?NX.Bp1,:R?1,Fpr1bga@0f(R>NX.Bq0ekF
+>1,Fpr1bpd?1,C[?NX.?o1,1O?1,P!s1,:R>0f1U@NX.Hs0etI?0en[o0ekF=0f1UANX.Eq1,:
+R@0f"ap0etI<1,L^BNX.Er0ekF?0f"ap1,1O=1,L^ANX.Hr1,1O@0en[o0f(O>0ekL@NX.Es0e
+tI<1bk!r1,:U?0ekL?NX.?o1GU[>1c(-t1GL[@0ekL>NX.Br0ekF<1bt's0etL=1,1UANX.Br0
+etI=1GXsr0etL>0etO@NX.Er1,:R>1GOmq1,1R?0etO?NX.?q0ekF=1Gb$s1G^a?1,:X?NX.?q
+0etI>1,Fpr1G^a@0f(R>NX.?o1GLX?1Gb$s1,:U?0f(R?NX.?o1GU[@1,Fpr1GL[@0f(R>NX.B
+r0ekF>1,=jq0etL=1,C[ANX.Br0etI?0f"ap0etL>0f1U@NX.Er1,:R@0en[o1,1R?0f1U?NX.
+?q0ekF?0f+gq1G^a?1,L^?NX.Bq1,1O@0f"ap0ekI=1,L^ANX.Eq1GLXA0en[o0f1U?0ekL?NX
+.Br1,:R=1bk!r0etO?0ekL?NX.Bp1bpd?1bk!r1,L^?1,1U?NX.?q1,1O=1bt's1,L^@0etO>N
+X.?q1,:R>1GXsr0ekL>1,1U@NX.Bq1GU[?1GOmq0ekL?0etO?NX.?r0ekF=1GXsr0f1U?0f(R?
+NX.?p1GLX?1GXsr1,C[@0f(R>NX.?p1GU[@1,=jq1,1U@0f(R>NX.Bs0ekF>1,4dp0f(R>1,C[
+@NX.Bs0etI?0en[o0f(R?0f1U?NX.?o1bgaA1,=jq1,:X@0f1U>NX.?o1bpdB0f"ap0f1U>1,L
+^@NX.Br1,1O@0en[o0etO>1,L^@NX.Bp1bgaB0en[o0f:[@0ekL>NX.?q1GU[>1bk!r0ekO@0e
+kL>NX.?r1,1O=1bk!r0f1X@0etO>NX.?p1bga?1bk!r0etR@0etO>NX.?s0ekF=1GOmq0f:[@0
+f(R>NX.?q1GLX?1GOmq0f(U@0f(R>NX.?o2)-jA1GOmq0ekO@0f(R>NX.?r1,1O?1,4dp0f1X@
+0f1U>NX.?p1bgaA1,4dp0etR@0f1U>NX.?s0ekF?0en[o0f(U?1,L^?NX.?o2)-jC0en[o0ekC
+=0ekLANX.Eq0f(O=1bt's1,1L=1,1UANX.Hr0etL=1bk!r1,1L>0etO@NX.Hr0f(O>1GOmq0ek
+C;1GL^CNX.Eq0ekI=1bt's0ekC<1,:XBNX.Eq0etL>1GXsr0ekC=0f(RANX.Eq0f(O?1,=jq1,
+1L<1GUaBNX.Hr0ekI>1GOmq1,1L=1,C[ANX.Hr0etL?1,4dp1,1L>0f1U@NX.Hr0f(O@0en[o0
+ekC;1G^dCNX.Eq0ekI?1,=jq0ekC<1,L^BNX.Eq0etL@0f"ap1,1L<1GggBNX.Hr0ekI@0en[o
+0etI>0ekL@NX.Er0f(O=1bk!r1,1O?0ekL?NX.Bq0etL=1bt's0ekF=1,1UANX.Bq0f(O>1GXs
+r0ekF>0etO@NX.Eq1,CX?1GOmq0etI<1GL^BNX.Er0ekI=1bk!r0etI=1,:XANX.Er0etL>1GO
+mq0etI>0f(R@NX.Er0f(O?1,4dp1,1O?0f(R?NX.Bq0ekI>1GXsr0ekF<1GUaBNX.Bq0etL?1,
+=jq0ekF=1,C[ANX.Bq0f(O@0f"ap0ekF>0f1U@NX.Eq1,CXA0en[o0etI<1G^dBNX.Er0ekI?1
+,4dp0etI=1,L^ANX.Er0etL@0en[o1,1O>1,L^@NX.Bq0ekI@0f"ap0ekF<1GggBNX.Eq1,1RA
+0en[o0f(O?0ekL?NX.Bq1,CX>1bk!r0ekI?0ekL?NX.Br0etL=1bk!r0etL>1,1U@NX.Br0f(O
+>1GOmq0etL?0etO?NX.Bp1G^a@1GOmq0f(O=1GL^ANX.?q0etL>1GXsr0ekI=1GL^ANX.?q0f(
+O?1,=jq0ekI>1,:X@NX.Bq1,CX@1,4dp0ekI?0f(R?NX.Br0ekI>1GOmq0etL=1GUaANX.Br0e
+tL?1,4dp0etL>1,C[@NX.Br0f(O@0en[o0etL?0f1U?NX.Bp1G^aB0en[o0f(O=1G^dANX.?q0
+etL@0f"ap0ekI=1G^dANX.Bq1,:UA0en[o0ekI>1,L^@NX.Br0ekI@0en[o0etL=1GggANX.Bp
+1GL[B0en[o0f1U@0ekL>NX.?p1G^a?1bk!r0f(R?1,1U?NX.?q1,CX?1GOmq0ekL?1,1U?NX.?
+o1c$jA1GOmq0f1U>1GL^@NX.?r0etL>1GOmq0etO>1GL^@NX.?r0f(O?1,4dp0etO?1,:X?NX.
+?p1G^aA1,4dp0f(R>1GUa@NX.?q1,:U@1,4dp0ekL>1GUa@NX.?q1,CXA0en[o0ekL?1,C[?NX
+.?o1c$jC0en[o0f1U>1G^d@NX.?r0etL@0en[o0etO>1G^d@NX.?p1GU^B0en[o0f(R>1Ggg@N
+X.?o1bgdC0en[o0ekC>0ekL@NX.Eq0f1U>1bk!r1,1L>1,1U@NX.Bp0f1U?1GXsr0ekC<1GL^B
+NX.Eq0etO>1bk!r0ekC=1,:XANX.Eq0f(R?1GOmq0ekC>0f(R@NX.Eq0f1U@1,4dp1,1L<1bgg
+BNX.Bp0etO?1GXsr1,1L>1,C[@NX.Bp0f1UA0f"ap0ekC;1bpjCNX.Eq0ekL?1GOmq0ekC<1G^
+dBNX.Eq0etO@1,4dp0ekC=1,L^ANX.Eq0f(RA0en[o1,1L<1c$mBNX.Bp0etOA0f"ap0etI?0e
+kL?NX.Bp1,L^?1bk!r1,:R?1,1U?NX.?o1,C[?1bt's1,:R@0etO>NX.?o1,L^@1GXsr0etI=1
+GL^ANX.?p0f(R?1GXsr0etI?0f(R?NX.Bp1,L^A1,4dp1,:R=1bggANX.?o1,1U?1bt's1,:R>
+1GUa@NX.?o1,:X@1GXsr1,:R?1,C[?NX.?o1,C[A1,=jq1,:R@0f1U>NX.?o1,L^B0f"ap0etI
+<1bpjBNX.?p0etO@1,=jq0etI>1,L^@NX.Bp1,C[B0en[o1,:R=1c$mANX.?o1,1UA1,=jq1,:
+R>1Ggg@NX.?o1,:XB0f"ap0f(O@0ekL>NX.?o1Ggg@1bk!r0etL?1,1U?NX.?p1,L^@1GOmq0f
+(O>1GL^@NX.?q0f(R?1GOmq0ekI>1GL^@NX.?q0f1U@1,4dp0ekI?1,:X?NX.?o1GggB1,4dp0
+etL=1bggANX.?p1,:X@1GOmq0etL?1,C[?NX.?p1,L^B0en[o0f(O=1bpjANX.?q0etO@1,4dp
+0ekI=1bpjANX.?q0f(RA0en[o0ekI>1G^d@NX.?o1G^dC0en[o0etL=1c$mANX.?p1,:XB0en[
+o0ekC?0ekL?NX.Bp0f1X?1bk!r1,1L@0etO>NX.?o0f(U?1bt's0ekC>1,:X@NX.?o0f:[A1,=
+jq1,1L=1bggANX.Bp0f(U@1GOmq1,1L?1,C[?NX.Bp0f:[B0en[o0ekC;2)-pCNX.?o0etR@1G
+Xsr0ekC=1G^dANX.?o0f1XB0f"ap1,1L<2)6sBNX.Bp0etRA1,4dp1,1L>1Ggg@NX.?p0f:[?1
+bk!r0ekF?1,1U?NX.?o1,UdA1GOmq0etI>1GL^@NX.?p0f1X@1GOmq0etI@0f(R>NX.?o1,:[@
+1bk!r0ekF>1GUa@NX.?o1,LaB1,4dp0ekF@0f1U>NX.?p0ekO?1bk!r0etI=1bpjANX.?p0f(U
+A1,4dp0etI?1,L^?NX.?o1,1XA1GOmq0ekF=1c$mANX.?o1,C^C0en[o0ekC@0ekL>NX.?o0f1
+[@1bk!r0ekC?1,:X?NX.?o0fCaB1,4dp0ekC<2)-pBNX.?o0f(XA1GOmq0ekC>1G^d@NX.?o0f
+:^C0en[o0ekC;0etRCNX.Eq0ekC<1c(-t2)-g?0etR?NX.Bp0ekC=1Gk*t1bg^>0f(U@NX.?o0
+ekC>1,Y't1GLU=0f1XANX.Ks0ekC>1,4dp1,1L<0f:[BNX.Hr0ekC?0f"ap1GLX>0ekO@NX.?p
+0ekC<1c13u1GU[>0etR@NX.Bp1,1L=1c(-t1bga?0etR?NX.Bq0ekC=1Gb$s1bpd?0f(U?NX.?
+o1,1L>1Gk*t1GLX>0f(U@NX.?p0ekC>1,P!s1GU[>0f1X@NX.Bp1,1L?1,Fpr1bga?0f1X?NX.
+Bq0ekC?0f+gq1bpd?0f:[?NX.?o1,1L@0f4mr1GLX>0f:[@NX.?p1,1L<2)C6u1GU^?0ekO?NX
+.Bp1GLU=2):0t0f(O=0etRANX.Es0ekC<1bk!r1,:U>0etR@NX.?o1GLU>1c(-t1GL[?0etR?N
+X.Br0ekC=1GXsr0etL=0f(UANX.Er1,1L>1GOmq1,1R>0f(U@NX.?q0ekC>1,Fpr1G^a?0f1X?
+NX.Bq1,1L?1,=jq0ekI=0f1XANX.Eq1GLU@1,4dp1,CX>0f:[@NX.?p1,1L@0f+gq1GU^?0f:[
+?NX.Bp1GLUA0f"ap0f(R>0ekO@NX.Bq1GLU=2)1*s0ekL>0ekO@NX.?r0ekC<1bt's1,C[?0et
+R?NX.?p1GLU>1bt's1,1U?0etR?NX.Bs0ekC=1GOmq0f(R>0f(U@NX.Bq1GLU?1GOmq0ekL>0f
+(U@NX.?r0ekC>1,=jq1,C[?0f1X?NX.?p1GLU@1,=jq1,1U?0f1X?NX.Bs0ekC?0en[o0f(R>0
+f:[@NX.Bq1GLUA0en[o0ekL>0f:[@NX.?r1,1L<2)1*s0etR?0ekO?NX.?s0ekC<1bk!r0f(U?
+0etR?NX.?o2)-g@1bk!r0f1X?0f(U?NX.?p1bg^@1GOmq0f:[?0f1X?NX.?q1GLU@1,4dp0ekO
+?0f1X?NX.?r1,1L@0en[o0etR?0f:[?NX.Bp0etI<2)C6u1bg^?0ekO?NX.?o0ekF<2)L=!1GL
+U=1,1XANX.?o0etI=1c13u1GLU>0etR@NX.Bp0ekF=1c(-t1bg^>1,:[@NX.Bp0etI>1Gb$s1b
+g^?0f(U?NX.?o0ekF>1Gk*t1GLU=1,C^ANX.?o0etI?1,P!s1GLU>0f1X@NX.Bp0ekF?1,Fpr1
+bg^>1,La@NX.Bp0etI@0f+gq1bg^?0f:[?NX.?o0ekF@0f4mr1GLU=1,UdANX.Bq0etI<2):0t
+0ekF=0ekOANX.Eq1,:R=2)1*s0etI<1,1XBNX.Er0ekF<2)1*s0etI=0etRANX.Er0etI=1bk!
+r1,1O>0etR@NX.Bq0ekF=1bt's0ekF<1,:[BNX.Bq0etI>1GXsr0ekF=0f(UANX.Eq1,:R?1GO
+mq0etI<1,C^BNX.Er0ekF>1GOmq0etI=0f1XANX.Er0etI?1,4dp1,1O>0f1X@NX.Bq0ekF?1,
+=jq0ekF<1,LaBNX.Bq0etI@0f"ap0ekF=0f:[ANX.Eq1,:RA0en[o0etI<1,UdBNX.Er0ekF@0
+en[o1,1O=1,UdANX.Br0etI<2)1*s0etL>0ekO@NX.Bp1GU[>2)1*s0f(O=1,1XANX.?q0etI=
+1bt's0ekI=1,1XANX.Bq1,:R>1bk!r0ekI>0etR@NX.Br0ekF=1bk!r0etL=1,:[ANX.Br0etI
+>1GOmq0etL>0f(U@NX.Bp1GU[@1GOmq0f(O=1,C^ANX.?q0etI?1,=jq0ekI=1,C^ANX.Bq1,:
+R@1,4dp0ekI>0f1X@NX.Br0ekF?1,4dp0etL=1,LaANX.Br0etI@0en[o0etL>0f:[@NX.Bp1G
+U[B0en[o0f(O=1,UdANX.Bq1,1OA0en[o0ekI=1,UdANX.?q1,:R=2)1*s0ekL?0ekO?NX.?r0
+ekF<2)1*s0f1U?0etR?NX.?p1GLX>2)1*s0etO?0etR?NX.?q1,1O>1bk!r0f(R?0f(U?NX.?o
+1bga@1bk!r0ekL?0f(U?NX.?r0ekF>1GOmq0f1U?0f1X?NX.?p1GLX@1GOmq0etO?0f1X?NX.?
+q1,1O@1,4dp0f(R?0f:[?NX.?o1bgaB1,4dp0ekL?0f:[?NX.?r0ekF@0en[o0etO>1,Ud@NX.
+Bp0f(O=2):0t0ekC<1,1XBNX.Eq0etL=2)1*s0ekC=0etRANX.Eq0f(O>1bk!r1,1L<1GLaBNX
+.Bp0etL>1bt's1,1L>0f(U@NX.?o0ekI>1c(-t1GLU=1GUdANX.?o0etL?1Gb$s1GLU>1,C^@N
+X.?o0f(O@1,Fpr1GLU?0f1X?NX.Bp0ekI?1GXsr1,1L=1,LaANX.Bp0f(OA0f"ap0ekC;1GgjC
+NX.Eq0ekI@1,4dp0ekC<1,UdBNX.Eq0etLA0en[o1,:R?0ekO?NX.?o1,CX>2):0t0etI=1,1X
+ANX.?p0f(O>1bt's1,1O?0etR?NX.Bq0ekI=2)1*s0ekF<1GLaBNX.Bq0etL>1bk!r0ekF=1,:
+[ANX.Bq0f(O?1GOmq0ekF>0f(U@NX.?p0ekI>1bt's0etI=1,C^ANX.?p0f(O@1,=jq1,1O?0f
+1X?NX.Bq0ekI?1GOmq0ekF<1G^gBNX.Bq0etL@1,4dp0ekF=1,LaANX.Bq0f(OA0en[o0ekF>0
+f:[@NX.?p0ekI@1,=jq0etI=1,UdANX.Bp1,:UB0en[o0etL?0ekO?NX.?q0etL=2)1*s0f(O?
+0etR?NX.?o1GU^?2)1*s0ekI?0etR?NX.?p1,1R>2)1*s0etL>1,:[@NX.?p1,CX@1GOmq0f(O
+=1GUdANX.?q0etL?1GOmq0ekI=1GUdANX.?q0f(O@1,4dp0ekI>1,C^@NX.?o1G^aB1,4dp0et
+L=1G^gANX.?p1,:UA1,4dp0etL?0f:[?NX.?q0ekI@1,4dp0f(O>1,Ud@NX.?o1GL[B1,4dp0e
+kI>1,Ud@NX.Bp0f1U>2)1*s0ekC=1,1XANX.?o0f1U?1bt's1,1L=1GLaANX.Bp0f(R?1bk!r1
+,1L?0f(U?NX.?o0ekL>2):0t0ekC<1GUdBNX.?o0f(R@1GXsr0ekC>0f1X@NX.Bp0ekL?1bk!r
+1,1L=1G^gANX.Bp0f(RA1,4dp1,1L?0f:[?NX.?o0ekL@1GXsr0ekC<1GgjBNX.?o0f(RB0f"a
+p0ekF?0ekO?NX.?p0f(R>2)1*s0etI?0etR?NX.?o1,:X?2)1*s0ekF>1,:[@NX.?o1,L^A1GO
+mq0etI<1bgjBNX.?p0etO?1bk!r0etI>1,C^@NX.?p0f1UA1,4dp0ekF<1bpmBNX.?o1,:XA1G
+Omq0ekF>1,La@NX.?o1,L^C0en[o0etI<1c$pBNX.?p0etOA1,4dp0etI>1,Ud@NX.?o0f1X?2
+)1*s0ekC?0etR?NX.?o0etR?2)1*s0ekC=1GUdANX.?o0f1XA1GOmq0ekC?0f1X?NX.?o0ekO@
+1bk!r0ekC<1c$pBNX.?o0f(UB1,4dp0ekC>1,Ud@NX.Bp0ekC<2)C6u1bg^>0etU@NX.?o0ekC
+=1c13u1GLU=0f(XANX.Bp0ekC>1Gb$s1bg^>0f1[@NX.?o0ekC?1,P!s1GLU=0f:^ANX.Bp0ek
+C@0f+gq1bg^>0fCa@NX.Bp1,1L<2DU9u1,:R=0etUANX.?o1,1L=2)C6u1GLX>0etU@NX.?p0e
+kC=1c(-t1GU[>0f(X@NX.Bp1,1L>1bt's1,:R=0f1[ANX.?o1,1L?1Gb$s1GLX>0f1[@NX.?p0
+ekC?1,Fpr1GU[>0 f:^@N X.Bp1 ,1L@1 ,= jq1 ,:R=0f CaANX.?
+o1,1LA0f+gq1GLX >0f Ca@NX .Bq1, 1L <2D L3t 0ekI
+=0ekRANX.Br0ekC <2)1* s0 etL=0 etUA NX .Bp 1GLU> 2)1 *s0f( O=0f
+(XANX.Bq1,1L>1b k!r0e kI= 0f( XANX .B r0e kC>1GO mq 0etL=0 f1[
+ANX.Bp1GLU@1GOm q0f(O =0f :^A N X.B q1, 1L@ 1,4dp0 ek I=0f:^ ANX
+.Br0ekC@0en[o0e tL=0f CaA NX. Bp 1G LUB 0en [o0etO >0 ekR@NX .?q
+1,1L=2)1*s0ekL> 0etU @NX .? r0 ekC =1b k!r 0etO
+>0f(X@NX.?q1,1L ?1GO m q0 ek L>0 f1[ @NX. ?r0ek
+C?1,4dp0etO>0f: ^@NX.? q1, 1 LA0 en [o0e kL> 0fCa@NX.Eq 0etI<2DL3t1
+,1L<1,1[BNX.Bp0 etI=2) :0t 0 ekC; 1,:^ CNX .Eq0ekF=2) 1*s0ekC<0f(
+XBNX.Eq0etI>1bk !r1,1L <1, CaBN X.Bp 0et I?1GXsr0ek C;1,LdCNX.E
+q0ekF?1GOmq0ekC <0f:^ BNX. Eq0et I@1, 4dp 1,1L<1,UgB NX.Bp0etIA0
+f"ap0etI=0ekRAN X.Bp1 ,:R=2 DL3t1 ,:R =1,1[ANX.? o1,1O=2DU9u
+1,:R>0etU@NX.?o 1,:R>2) :0t0et I<1,: ^BN X.?p0etI>1 bt's1,1O>0f
+(X@NX.Bq0ekF>1bk!r0ekF<1,CaBNX.Bq0etI?1GOmq0ekF=0f1[ANX.?p0ekF?1GXsr0etI=0
+f:^ANX.Bp1,:RA1,4dp1,:R=1,UgANX.?o1,1OA1,=jq1,:R>0fCa@NX.?o1,:RB0f"ap0f(O>
+0ekR@NX.?o1GU[>2DL3t0etL=1,1[ANX.?p1,:R>2)1*s0f(O=1,:^ANX.?q0etI>1bk!r0ekI
+=1,:^ANX.?o1GU[@1bk!r0etL=1,CaANX.?p1,:R@1GOmq0f(O=1,LdANX.?q0etI@1,4dp0ek
+I=1,LdANX.?o1GU[B1,4dp0etL=1,UgANX.?p1,:RB0en[o0ekC=0ekRANX.Bp0etL=2DL3t1,
+1L>0etU@NX.?o0ekI=2DSP\?'6usE+*d$FEo!5NW_'j0JSRj0JP79NW_'k0JJLi0JG49NW_'j0
+eeUj0JP:9NW_'k0en[k0JG17?'6usEc6/2BlnD=Efp`l1Pc$e!HNtsP,Wd]Bp(ZC1G<\iBcqGP
+!KsFFD0p51EbTW@+DI!3I=$tW0JG17I?ITn1G<6JEc6.E@q0R&Bo!%XCkr@[9Th1bF(96/G9C+
+G!/L]4#CBrjEc6/b5)99'9TfI?FcnqE0p6@9!I^,%?'6usF(025>DNWB!Jgc4!/LZ3"+)\9P!5
+$bE+*j1ATD[0+E/H<P"UTbP,XU;F(96/G9CX`99MqpLbP!kI?I0MP":B3L]LeE1MpQ@CPW"4@W
+QmP!KpQ@!0TKlH\_]NI=$<s!.B9Y<K_u_P"CfUL]N[<OpR9ZP!5%OP!5%OEc6/2BlnD=BnukIs
+,r/#G^Y`G05tWMF!+\C;0-;fBOtmjBQTDRH\_]NP(SPjL]MOP!g9O0056S5Ou%,sGA(Q%B4uC6
++EDCE@VKq*+DI!3OogehI?K5(AT2<oBkM+$H\`#UL]DjdK8<!DL]MpeK89MUP(S1G89/WmBOtm
+jBQSSDEc6/2BlnD=EejaZWKKo;!g7\SP(SQfF(K<(ASGdjFHUHeL]MpeK3aWr4?P9;ASs.SEb0
+-*@<?O(GV=#MG]P!HBm=\PE+sQALf#gEBm=nGE+sQ<P%'5EP#<rHASGdjF<GO:G]T$WLf'=5Le
+*[e06_,@FD-J-Le*[e05kfO+E)4@Bl@m1+?ht3A8c@-A9)+&P&N'-Eb0-*@<?O(G`l$h3IR&#O
+u"b$De*E93Kc@bA1r(@/n8fPFCfK5H"(o:FDl%L@WuO*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]H
+E+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/code49 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER code49--
% --BEGIN ENCODER channelcode--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Channel Code
% --EXAM: 3493
% --EXOP: height=0.5 includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/channelcode {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /shortfinder false def
- /includetext false def
- /includecheck false def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /height height cvr def
-
- /barlen barcode length def
-
- barlen 2 ge barlen 7 le and {
- /channels barlen 1 add def
- } if
-
- % Determine finder
- shortfinder {
- /finder [ 1 1 1 1 1 ] def
- } {
- /finder [ 1 1 1 1 1 1 1 1 1 ] def
- } ifelse
-
- /nextb {
- dup
- dup s exch get exch
- dup b exch 1 sub get exch
- dup s exch 1 sub get exch
- b exch 2 sub get exch
- add add add 4 gt {1} {2} ifelse
- 1 index chan 2 add lt {
- dup 1 4 index {
- b 3 index 2 index put
- 3 index exch sub 1 add 4 index 3 index 1 add nexts
- } for
- } {
- dup 3 index le {
- b 2 index 4 index put
- value target eq {
- /out [
- 3 1 10 {dup s exch get exch b exch get} for
- ] 0 chan 2 mul getinterval def
- } if
- /value value 1 add def
- } if
- } ifelse
- pop pop pop pop
- } bind def
-
- /nexts {
- dup chan 2 add lt {1} {1 index} ifelse 1 3 index {
- s 2 index 2 index put
- 2 index exch sub 1 add 3 index 2 index nextb
- } for
- pop pop pop
- } bind def
-
- /encode {
- /chan exch def
- /target exch def
- /value 0 def
- /out -1 def
- /b [ 1 1 1 0 0 0 0 0 0 0 0 ] def
- /s [ 0 1 1 0 0 0 0 0 0 0 0 ] def
- chan dup 3 nexts
- out
- } bind def
-
- % Encode the main data
- /data barcode cvi channels encode def
-
- % Determine check data
- /check [] def
- includecheck {
- /mod23 [
- [] [] []
- [ 13 12 4 9 3 1 ]
- [ 13 2 12 3 18 16 4 1 ]
- [ 11 16 17 8 20 4 10 2 5 1 ]
- [ 1 4 16 18 3 12 2 8 9 13 6 1 ]
- [ 20 16 22 13 15 12 5 4 8 9 21 3 7 1 ]
- [ 2 6 18 8 1 3 9 4 12 13 16 2 6 18 8 1 ]
- ] channels get def
- 0
- 0 1 data length 1 sub {
- dup data exch get 1 sub exch mod23 exch get mul add
- } for
- 23 mod 3 encode /check exch def
- } if
-
- % Construct the symbol
- /sbs [
- finder aload pop
- data aload pop
- check aload pop
- ] def
-
- % Create the human readable text
- /txt barlen array def
- 0 1 barlen 1 sub {
- /i exch def
- txt i [barcode i 1 getinterval 0 0 () 0] put
- } for
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs sbs
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- /txt txt
- /textxalign (center)
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/channelcode dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp channelcode 0.0 0 0 0
+%%BeginData: 41 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04S[(D Jj $%@rGm hH\
+`B!23JD%DfBf4Df 0WZ5* @]T @UX : eDe *FB 5*@ ]TA8c@ -A 9)+&+D ,%u
+F(LLj06:fFEcbo- DId=! +D, %uF (L Lj 055 <6C is9"FC f] =+D,%u F(L
+Lj055<6Cis9"@q] F`CE R4t Ci a0 N1G <EQ BkM +$L]
+NYpDfBf4Df0WZY: js=E b TE (F Eqh :P! +/J! Ko='%
+<$3-Bl@m1H]kFA@ ;L!rP! +/T 5 ^ee pO uSV6 P,4 <rNWD;+NHB 2`AWf3'OtDh
+\P')pOOu%N5OtCc rF_-^l I?I T YP%B dtOu Y16 E-,f4DKCt) Ou%NL<,Z_tB
+l@m1H]g15P"@<?A SGdjF< G7. BkM+ $OtV tS@ UX:eDe*FB@ Yb)KAn#1h@r
+GmhP%'4PP#.<^HS 8iPBl J#D@ q]:gD ImWo De* EG@:W&CDJ+ ')NZpi(@;]s
+oC`l)`A7Zm#F`VX I@V$Z ;+EVN E2]uX FB5 )I/0/%?SBl disEcQ)=P!=
+AX<+99V@rGmhH]g @E0Tp%2 5);4^: m,jG0 4K- >E,[F>BOPd rASbjpA7\)9
+A4($=Ea`I"ATEeW6YKnGDImW,6Z6LH+Dl7BF<G(3DKK<$DBNk8Cj@.6BkM.%F"]1e@;0doATDg
+0EfrY8P#Qjm8Rc+K@rGmhOt9gn)MS8<L(0u4!!')KKE);%Y_3""-&u7R@UX:eDe*FB@Yb)KWKK
+o;:jXj)GA2#8/n8R'DJj$%@rGmh<,Z\ABkNGg<+ohc6YKnGDImW,6Z6LH+Eh10F_)\0F!,RCD]
+iM'B-:f)EZfI;AKYl5D.7's+E(j7@q]:gDImX*0/%?SBldisEcQ)=P!=AX<%i-#G][DAOuSUaF
+-8_M99MK%3+A%7L]N[<P"Us%OuRNG5)96&WKKo;5%9[=L]Wa=P"Us%Oo^^HOo^@AP#-L]!I]<N
+!e$53L]NZ@@q]:gL]W_?P%K'(3/@Tk"Hll6@Yb,L=GR$A=H[ob"-QcL5*Dn$!KmJ>"HllC"-Qc
+B!KmJ$AU&<<I?I-LH]g@E"-QcL@=)I>!g6ZA"HllMG]mM3F_)\;@<-!lFHSe605kuT+BsX(L]N
+;=H]g@0P!5%%P!3?<5*AQeP"8l7!+T\NDMS@WCm%JT1OYEc06Uc?F_)\=@;L'tL]NY>Ou%NL<.
+0p0P')q1P')q1I?G)'1G<WWG]\"ROuQrb@;^l&Oo^_XH\_]NH\_]c=FH?4L]N;6P$!'PL]W`AL
+]W`AP'DcaP$!l2P,X6<Oo^@@P$!MAP#uU5G][DCP":aYP')q1I?G)'1G<<W@rGmhHS8lB@;_5l
+Ou"b5@<-!lFHShN1G<o[Cis<F!0T,kDfp/Xs,o/k@N\m2!Jgc4!Jg`3!/LW2!/LW2!/LW2!*ta
+D0687?L]E53L]N;3L]E52L]E52L]E52L]C_D1Lk*,DNZu8")_[pFE8RCF``%p%[&V$@UX:nASr
+W"@<,jrA7^p5Ou"b'Bl7HmEZfF:DfTr3Bl7HmEdJp5L]N;4L]N;4L]Le0HQZOK!Jgc4!Jgc4!J
+gc4!Jgc4!F:,:<K]-kA79Rg+C\c"@rGmhOt:'NEbo<)L]NY>ASu!rA7^o[04S[,@r!2k+C1-dB
+l7EsF_#&nBOt[hHS95SA25q`>9I,m>p*>o>p*@-%>YFK"GdA?",Ht`+BsX2L]WA@L]`GGL_,@F
+L]Ld(>DNZC&;UpS#`'1N"GdD@!f.#9!F6gPL]N;7L_,@TL]`GAL]WA<L^AkHL^&Y9>p*@-'Sm<
+V(5NEU%u:XM"c*;;#`&eC'o2sJ#D`Cd+BsX'L^&YJL^8e;L]`G>L]iMBL^f.OL]WA:L_>LLL]L
+d(>p*TbEbo<)P"UroL]E52L]M$pFCC>AL]N[<H]g@!@<>q@5*AQp!KsFF5&G4K1,G(WP"UsSOo
+]uo8;J(FC5;t'DI[TqAM7P,ARfM=5*@^MP#O)U@WNYr+D,>*A7]eE!g7\:@<>q@!g7\9BOt[hO
+ogeh?'6usFEhmM@UX:nAT!Y;Ou%moL]LsnEbo<)L]N[<HS9)r5*@^DG]Y'B+Bost@<,jrA7Zlt
+L]NZ4L]E52NW=k8?'9G\P"7\t061WA0/%?WDJX$)ARTU4F(025F(02D@VBg*>9IurF-:!g!KmJ
+>!g6H.BOtmjBQSZcK3^->@WNYr+EM"5P%'4JOo^@?P#?X_!.C#_>q^;EF<G[MF>%`IG]\1=Ch[
+O"NWs!)DKKH105kfO+E)4@Bl@m1+?ht3A8c@-A9)+&P&N'-Eb0-)Bl7KjEfsCb3IR&#Ou"b$BO
+PdrASbjpA7^o`P%64gCG'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbF
+DtYuCM@[!P.H"'F`V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/channelcode 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER channelcode--
% --BEGIN ENCODER flattermarken--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Flattermarken
-% --EXAM: 12345
-% --EXOP: inkspread=-0.25
+% --EXAM: 11099
+% --EXOP: inkspread=-0.25 showborder borderleft=0 borderright=0
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/flattermarken {
-
- 20 dict begin % Confine variable to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /includetext false def % Enable/disable text
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /height 0.3 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /height height cvr def
-
- % Create an array containing the character mappings
- /encs
- [ (0018) (0117) (0216) (0315) (0414) (0513) (0612) (0711) (0810)
- (0900)
- ] def
-
- % Create a string of the available characters
- /barchars (1234567890) def
-
- /barlen barcode length def % Length of the code
-
- /sbs barlen 4 mul string def
- /txt barlen array def
-
- 0 1 barlen 1 sub {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /enc encs indx get def % Get the indxth encoding
- sbs i 4 mul enc putinterval % Put encoded digit into sbs
- txt i [barcode i 1 getinterval i 9 mul textyoffset textfont textsize] put
- } for
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- /txt txt
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/flattermarken dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp flattermarken 0.0 0 0 0
+%%BeginData: 28 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04o$/F ED )7D..I #AS
+ujN'Tt>:%52X=FD 5Z2F- 8_M 1G< 3 GEa s#u AWf 6?1G<9 WD KKE0@< Wi+
+@;L!rOu"b*DI[L* A7]jo G]Y '?@ ;L !r Ou" b5A U&</Df 0Z Za-&53 FCf
+]=F(or3L^K;$06C cMFE qe: Ao hO *M# !2i 05+ p2B4
+uCE5+.h-Ou$QUEa s#uA U BS "L bP! (P! 4[^P #.<^H
+S8iPBlJ#DAo(mtF CfK0@< --p D F.c B6 YKnK @:O CjEfMJ9Cgh F-ATDWrEbf6
+(+Dl7BF<G(3DKK< $DBNk8 Cj@ . 6BkM .%F" ]1e @;0doATDg0 EfrY8P#Qjm8
+T/QiBl@m1P-6N[F E2)5B6 8E< AWf3 'L]N YrO pu>KFD5Z2F *j(NAmoLsAW
+f3'P!FGY<0B5(@Z mRN0o c8tP )XR(F _-_! H]f tD5*C&O5*@ ^MH]ft&Eckr
+V1OYEdI?J0)*g/N :DfBf 4Df0W Z5*@^ MP# Q@=FD5Z2F* j'+I?I/TFCf
+]=AoDR/+EV1>FCo H/FHS5= 1G<i]G ]\"@H =\4 @AU&<<BmO? R09S+EFCf]=
+H#I;,F(KG9FCf]=H#I;,F(KHV09S+EBOtmjBQPA1ASGdjFHS;?1Lad5@rGmhH]g@E0Tp%25);4
+^:m,jG04K->E,[FACghF-ATDWrEbf6(6=FClBOPpi@ru:&N[@53@<?U&Ec#6*CLqB+D09oA+Cf
+>-FCAm$+E).6Gp$X3B5)I/0/%?SBldisEcQ)=P!=AX<.0p$04f$2F!+\I">DMa30"+q0ekVI">
+DSc2N@no1GLbI">DYe1l_\m2)-nI">D_g16)Jk2_d%I">Dei0TH8i3A<-mOu"b#@<,jk@<-FL$
+8F:l1c70M3&r[U1G<3GEbo<)+C\c"@rGmhP%'S106:TD+C\c"Ch7L?"HmSaV33VfFEhmM@UX:n
+AT!Y;Ou%moL]LsnEbo<)L]N[<HS9)r5*@^2@<,jrA7ZltL]NZ4@UX:eBOPq&P!5%gP')ps055<
+7G`k7R1QlmDFY@<D@j#?#@ric,DIe!T99M)P@WNZ+L]ilWASu"@H$":Q+DDs&+C\c"@rGmh+DH
+W4P"]SG$'K+HAU&<BDe<U&ATT&:AU&</Df0Y>FCf]=F(or3+C1.TI?I,`4>1_dDD*Y`ASu<uDI
+m6s06:TD+Bot0@WQmP0TrD`P"Aq4@VBg*>9IurF-:!g!KmJ>!g6H.BOtmjBQSZcK3^->@WNYr+
+EM"5P%'4JOo^@?P#?X_!.C#_>q^;EF<G[MF>%QOF<GL@FD5Z2F!*Y1+CoD.FC]E#GEQnu061WA
+Ch[cu@<.N1Ou[rR%[&V$Ao(mtFCfK0@<--pDNZuBA1r(@/n8fPFCfK5H"(o:FDl%L@WuO*E$/\
+&Anc-oEb0<1F`Lu'P')pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/flattermarken 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER flattermarken--
% --BEGIN ENCODER raw--
-% --DESC: Raw bar space succession for custom symbologies
+% --REQUIRES preamble raiseerror renlinear--
+% --DESC: Custom 1D symbology
% --EXAM: 331132131313411122131311333213114131131221323
% --EXOP: height=0.5
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/raw {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /sbs exch def % We are given a barcode string
-
- /dontdraw false def
- /height 1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /height height cvr def
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs [sbs {48 sub} forall]
- /bhs [sbs length 1 add 2 idiv {height} repeat]
- /bbs [sbs length 1 add 2 idiv {0} repeat]
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/raw dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp raw 0.0 0 0 0
+%%BeginData: 18 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 061KFH \` B!23JD %Df
+Bf4Df0WZ5*@]T@U X:eDe *FB 5*@ ] TA8 c@- A9) +&+D,% uF (LLj05 +p2
+B4uCC!Ko6WE-,f4 DKCuE 06; 5UB l7 R* H#R >X4 aVtcOu 8C 3DfBf4 Df0
+WCP,i2'Cia0N4aW >WI? IQm 30 Ia 6V3 3Qn !Bl U*FE
+2M8P!+/T/Wr;\Fc nqO1 O XV 5/ Tc# UAW eitP #ZpnA
+We*t3A5;iFD5Z2F -8_M1O YEc D fBf 4D f0WC Ou% NL8M=agBkM +$+D>>#B4uC
+M09S,#@<,jrA7^+ N3/B;P As, ? 63Kd 4%Ed KHK GA2#8/okBE 6=FClBOPpi@
+ru:&N[%G1G9CaFF *&O7Df 0Z* Bl5& 3DJX S@A 8,[jFE8QZ+ EVNE3A3%+@;
+0doATDg0EfrY8P# Qjm8N ]*gE b0,A0 61WA Ch[ cu@<+#B@WN Yr+C\c"@rGm
+hH\aA=WI9q$>q]Z #F!+[ 0@UX: eDe*F B@Y b&J!Jgf?;L <(gBkM+$I?K
+4g04JC3+Bost@<, jrA7^p5 L]NY>L ]W`;H \_Z MP(R$nDfBe @DfBf4Df0V=
+5!C*"Df0Z-Eaa0TE%`kbASu<uDIm6sP#RT)I?G)'1G<cWGEOqKA1r(@/n8fPFCfK5H"(o:FDl%
+L@WuO*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/raw 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER raw--
% --BEGIN ENCODER daft--
-% --DESC: Raw DAFT succession for custom 4 state symbologies
+% --REQUIRES preamble raiseerror renlinear--
+% --DESC: Custom 4 state symbology
% --EXAM: FATDAFTDAD
% --EXOP:
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/daft {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /height 0.175 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /height height cvr def
-
- /barlen barcode length def
-
- /bbs barlen array def
- /bhs barlen array def
- 0 1 barlen 1 sub {
- /i exch def
- /enc barcode i 1 getinterval def
- enc (D) eq {
- bbs i 0 height mul 8 div put
- bhs i 5 height mul 8 div put
- } if
- enc (A) eq {
- bbs i 3 height mul 8 div put
- bhs i 5 height mul 8 div put
- } if
- enc (F) eq {
- bbs i 0 height mul 8 div put
- bhs i 8 height mul 8 div put
- } if
- enc (T) eq {
- bbs i 3 height mul 8 div put
- bhs i 2 height mul 8 div put
- } if
- } for
-
- % Return the arguments
- <<
- /ren //renlinear
- /bbs bbs
- /bhs bhs
- /sbs [bhs length 1 sub {1.44 1.872} repeat 1.44]
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/daft dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp daft 0.0 0 0 0
+%%BeginData: 24 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04\L'F F/ fXOu8C 305
+kfOBl@m1P!5$b04 J@1@r Gmh P!5 $ b04 ]!= FC] E#G9CL +C ia0N1G <EQ
+BkM+$MEWgP1QjP4 E-,f4 DKC uE0 6; 5U Bl7 R*H #R>X4a Vt cOu8C3 DfB
+f4Df0WCP,i2'Cia 0N4a W>W I? IQ m30 Ia6 V33 Qn!B
+lU*FE2M8P!+/T/W r;\F c nq O1 OXV 5/T c#UA WeitP
+#ZpnAWe*t3A5;iF D5Z2F- 8_M 1 OYE cD fBf4 Df0 WCOu%NL8M= agBkM+$+D>>
+#B4uCM09S,#@<,j rA7^+N 3/B t cD3@ )G3/ Bk` D3@)G3/C%e D3@)=<0D*]"
+HinN"FDe2GA2#8/ nAC&F@ 'DH 6YKn K@:O CjE fMe@5t4frD 09oA+Cf>-FC
+Am$+E).6Gp$U1@< ,ddFC fK6+ @Ib'5 qF-J +CT .u+B1!IEa` ['AS#n&DfV"
+*I?IQXP"@<9@<-0 qDBNC sEas# uAWgM c1G <3HF!+q#Eb o<)OpR:-04J
+U9+C\c"Ch7LI$'I *#!/LYb @<-0qD MS=VW I$: 4P!5$b04f$ 2+C\c"@rGmh
++DHW4P"_#pASu"<!CW)6HX^H*+DHW3BOtmjBQTDRL^9/%P'CGLF!,1Q"__I]B4uCMCkr@[2Ni<
+5P#Q"1@u^RUP!+/$@WNZ+L]_=%BkM+$P&,p[OuAJJ@VBg*Bnuq+ASGdjFHUHr#a.*/G^Y`SASu
+"<!Ci58HX^H*+DHW3BOtmjBQTDRL^9/%P'CGLF!,1Q#\[d`B4uCMCkr@[2Ni<5P#Q"1@u^RhP!
++/$@WNZ+L]_=%BkM+$P&,p[OuAJJ@VBg*Bnuh(ASGdjFHUHr#a.*/G^Y`SI?I,`4>1_dDD*Y`A
+Su<uDIm6s04JC3+C\f$04JU9+C]#*06:TD+BostBQK>GL]N[<H\t%t;='0)n"$b4P(SWV\5DTu
+05kfO+E)4@Bl@m1+?ht3A8c@-A9)+&P&N'-Eb0-)Bl7KjEfsCb3IR&#Ou"b%@:jVE30If*F_`U
+>D_?-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP'(hWFDt
+YuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/daft 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER daft--
% --BEGIN ENCODER symbol--
+% --REQUIRES preamble raiseerror renlinear--
% --DESC: Miscellaneous symbols
% --EXAM: fima
% --EXOP: backgroundcolor=DD000011
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-begin
-/symbol {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- barcode (fima) eq {
- /sbs [2.25 2.25 2.25 11.25 2.25 11.25 2.25 2.25 2.25] def
- /bhs [.625 .625 .625 .625 .625] def
- /bbs [0 0 0 0 0] def
- } if
-
- barcode (fimb) eq {
- /sbs [2.25 6.75 2.25 2.25 2.25 6.25 2.25 2.25 2.25 6.75 2.25] def
- /bhs [.625 .625 .625 .625 .625 .625] def
- /bbs [0 0 0 0 0 0] def
- } if
-
- barcode (fimc) eq {
- /sbs [2.25 2.25 2.25 6.75 2.25 6.75 2.25 6.75 2.25 2.25 2.25] def
- /bhs [.625 .625 .625 .625 .625 .625] def
- /bbs [0 0 0 0 0 0] def
- } if
-
- barcode (fimd) eq {
- /sbs [2.25 2.25 2.25 2.25 2.25 6.75 2.25 6.75 2.25 2.25 2.25 2.25 2.25] def
- /bhs [.625 .625 .625 .625 .625 .625 .625] def
- /bbs [0 0 0 0 0 0 0] def
- } if
-
- % Return the arguments
- <<
- /ren //renlinear
- /sbs sbs
- /bhs bhs
- /bbs bbs
- /opt options
- >>
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/symbol dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp symbol 0.0 0 0 0
+%%BeginData: 26 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 06;DU@ W- (0L_Q" 0Op
+s'_E-,f4DKCt)Ou "b#@< ,jr A7^ o fOu "b% Df0 Z-Eaa/ 7A moLsAW eif
+E-,f4DKCuE06;5U Bl7R* H#R >X4 aV tc Ou8 C3D fBf4Df 0W CP,i2' Cia
+0N4aW>WI?IQm30I a6V3 3Qn !B lU *FE 2M8 P!+ /T/W
+r;\FcnqO1OXV5/T c#UA W ei tP #Zp nAW e*t3 A5;iF
+D5Z2F-8_M1OYEcD fBf4Df 0WC O u%N L8 M>.1 D.7 F"F!*S-04n p8@='YK@WNY
+rMEh^Q!/a#Q!!%m A&-)]f 5r8 Q AMEh ^Q!/ a'! !!%mA&-)]f 5S*nqMEh^Q!
+*taD04JU9+Bs^f+ 92D!59 Kq+ ME`3 `!/` u`! !%m@+92CIO u"b#@WNYrL]
+E52L]E52L]C_D1O YDr04 np8@ XBbL@ WNYr MEh ^Q!/a%o!!% mA&-)]f5S*n
+qMEh^Q!/a%_!!%m A&-)] f5S*n qMEh^ Q!/ a%o!!%mA&- )]9Ou"b#BQG
+;#ME`3`!/`u`!!% m@+92D! 59Kq+M E`3`! /`u `!!$;f1G<3 HF!+\C!/LW2
+!/LW2!/LV\Ou%NL%PMF.D.@oGF(025>DbZW!!%mA&-)]f5S*nqMEoeo!/a#Q!!%mAfDko/5S*n
+qMEoeo!/a#Q!!%mA&-)]f5S*nq?'6us@VBg*>DbWf!!%m@+92D!59Kq+ME`3`!/`u`!!%m@+92
+CIOu"b#@WNYrL]E52L]E52L]E52?'7!lOq'-WBl.C-06:TD+Bs^g&-)]f5S*nqMEh^Q!/a#Q!!
+ %mA&-)]f5hH&:MEh^Q!/a%o!!%mA&-)]f5S*nqMEh^Q!/a#Q!!%mA&-)]9Ou"b#BQG;#ME`3`
+!/`u`!!%m@+92D!59Kq+ME`3`!/`u`!!%m@+92CIOu"b#@WNYrL]E52L]E52L]E52L]C_D1OYD
+r5!G,cF*VV3DesJ;@UX:eDe*FB@$5JU04K->E,[FNH#7#/CfP@gDJs`:;gE4hDetFR<GlSiDg-
+(AF*VV3DepP6@;TQuE,ol?Bk1dc0/%?SBldisEcQ)=P!=AX<-*>%@W-((+C\c"@rGmhP"Us&4?
+P9;ASs.SEb0-)Bl7KjE\DKCF!,O5F"_!9F!+q*F"_!3F!+q$F"_HNF<GL@FD5Z2F!*Y1+CoD.F
+C]E#GEQnu061WACh[cu@<.N1Ou[rR%[&V$F*VV3DetRrP%64gCG'+8/p(ZFEd;,:Ecc5;/n0$=
+E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM@[!P.H"'F`V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/symbol 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER symbol--
% --BEGIN ENCODER pdf417--
+% --REQUIRES preamble raiseerror renmatrix--
% --DESC: PDF417
% --EXAM: This is PDF417
% --EXOP:
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/pdf417 {
-
- 20 dict begin
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
- /compact false def
- /eclevel -1 def
- /columns 0 def
- /rows 0 def
- /rowmult 3 def
- /ccc false def
- /raw false def
- /parse false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /eclevel eclevel cvi def
- /columns columns cvi def
- /rows rows cvi def
- /rowmult rowmult cvr def
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- % Convert input into array of codewords
- raw {
- /datcws barcode length array def
- /i 0 def /j 0 def
- { % loop
- i barcode length eq {exit} if
- /cw barcode i 1 add 3 getinterval cvi def
- datcws j cw put
- /i i 4 add def
- /j j 1 add def
- } loop
- /datcws datcws 0 j getinterval def
- } { % Simple autoencoder from input to codewords using byte mode
- /barlen barcode length def
- barlen 6 mod 0 eq {
- /datcws barlen 6 idiv 5 mul 1 add array def
- datcws 0 924 put
- } {
- /datcws barlen 6 idiv 5 mul barlen 6 mod add 1 add array def
- datcws 0 901 put
- } ifelse
-
- % Rebase groups of 6 bytes splitting into 3 byte chunks
- 0 1 barlen 6 idiv 1 sub {
- /i exch def
- /msbs [ barcode i 6 mul 3 getinterval {} forall ] def
- /mscs [
- msbs aload pop exch 256 mul add exch 65536 mul add
- 3 {dup 900 mod exch 900 idiv} repeat
- ] def
- /lsbs [barcode i 6 mul 3 add 3 getinterval {} forall] def
- /lscs [
- lsbs aload pop exch 256 mul add exch 65536 mul add
- 3 {dup 900 mod exch 900 idiv} repeat
- ] def
- /cws 5 array def
- lscs 0 get mscs 0 get 316 mul add
- cws 4 2 index 900 mod put
- 900 idiv lscs 1 get add mscs 0 get 641 mul add mscs 1 get 316 mul add
- cws 3 2 index 900 mod put
- 900 idiv lscs 2 get add mscs 0 get 20 mul add mscs 1 get 641 mul add mscs 2 get 316 mul add
- cws 2 2 index 900 mod put
- 900 idiv lscs 3 get add mscs 1 get 20 mul add mscs 2 get 641 mul add
- cws 1 2 index 900 mod put
- 900 idiv mscs 2 get 20 mul add
- cws 0 3 -1 roll 900 mod put
- datcws i 5 mul 1 add cws putinterval
- } for
-
- % Add the remaining bytes to the end of the codewords
- /rem barlen 6 mod def
- rem 0 ne {
- datcws datcws length rem sub
- [ barcode barlen rem sub rem getinterval {} forall ]
- putinterval
- } if
-
- ccc {/datcws [920 datcws aload pop] def} if
-
- } ifelse
-
- % Determine the error correction level if unspecified
- /m datcws length def
- eclevel -1 eq {
- m 40 le {/eclevel 2 def} if
- m 41 ge m 160 le and {/eclevel 3 def} if
- m 161 ge m 320 le and {/eclevel 4 def} if
- m 321 ge {/eclevel 5 def} if
- } if
-
- % Reduce the error level so that it does not cause an excessive number of codewords
- /maxeclevel 928 1 sub m sub ln 2 ln div cvi 1 sub def
- eclevel maxeclevel gt {/eclevel maxeclevel def} if
- /k 2 eclevel 1 add exp cvi def
-
- % To determine size of matrix, number of columns if given by user...
- columns 0 eq {/columns m k add 3 div sqrt round cvi def} if
- columns 1 ge columns 30 le and {/c columns def} if
-
- % ... and rows is greater of those required and that given by user within limits
- /r m k add 1 add columns div ceiling cvi def % Required
- r rows lt rows 90 le and {/r rows def} if
- r 3 lt {/r 3 def} if
-
- % Opportunistically raise the error level if a better fit to the matrix is possible
- /maxeclevel c r mul 1 sub m sub ln 2 ln div cvi 1 sub 8 2 copy gt {exch} if pop def
- maxeclevel eclevel gt {
- /eclevel maxeclevel def
- /k 2 eclevel 1 add exp cvi def
- } if
-
- % Create codewords array with one extra working space element and add padding
- /n c r mul k sub def
- /cws c r mul 1 add array def
- cws 0 n put
- cws 1 datcws putinterval
- cws m 1 add [ n m sub 1 sub {900} repeat ] putinterval
- cws n [ k {0} repeat 0 ] putinterval
-
- % Calculate the log and anti-log tables
- /rsalog [ 1 928 {dup 3 mul 929 mod} repeat ] def
- /rslog 929 array def
- 1 1 928 {dup rsalog exch get exch rslog 3 1 roll put} for
-
- % Function to calculate the product in the field
- /rsprod {
- 2 copy 0 ne exch 0 ne and {
- rslog exch get exch rslog exch get add 928 mod rsalog exch get
- } {
- pop pop 0
- } ifelse
- } bind def
-
- % Generate the coefficients
- /coeffs [ 1 k {0} repeat ] def
- 1 1 k {
- /i exch def
- coeffs i coeffs i 1 sub get put
- i 1 sub -1 1 {
- /j exch def
- coeffs j coeffs j 1 sub get coeffs j get rsalog i get rsprod add 929 mod put
- } for
- coeffs 0 coeffs 0 get rsalog i get rsprod put
- } for
- /coeffs coeffs 0 coeffs length 1 sub getinterval def
- coeffs length 1 sub -2 0 {coeffs exch 2 copy get 929 exch sub put} for
-
- % Derive the error codewords
- 0 1 n 1 sub {
- /t exch cws exch get cws n get add 929 mod def
- 0 1 k 1 sub {
- /j exch def
- cws n j add cws n j add 1 add get 929 t coeffs k j sub 1 sub get mul 929 mod sub add 929 mod put
- } for
- } for
- n 1 n k add { dup cws exch 929 cws 5 -1 roll get sub 929 mod put } for
-
- % Trim the working space from the end of the codewords
- /cws cws 0 cws length 1 sub getinterval def
-
- % Base 10 encoding of the bar space successions for the codewords in each cluster
- /clusters [
- [
- 120256 125680 128380 120032 125560 128318 108736 119920 108640 86080 108592 86048
- 110016 120560 125820 109792 120440 125758 88256 109680 88160 89536 110320 120700
- 89312 110200 120638 89200 110140 89840 110460 89720 110398 89980 128506 119520
- 125304 128190 107712 119408 125244 107616 119352 84032 107568 119324 84000 107544
- 83984 108256 119672 125374 85184 108144 119612 85088 108088 119582 85040 108060
- 85728 108408 119742 85616 108348 85560 108318 85880 108478 85820 85790 107200
- 119152 125116 107104 119096 125086 83008 107056 119068 82976 107032 82960 82952
- 83648 107376 119228 83552 107320 119198 83504 107292 83480 83468 83824 107452
- 83768 107422 83740 83900 106848 118968 125022 82496 106800 118940 82464 106776
- 118926 82448 106764 82440 106758 82784 106936 119006 82736 106908 82712 106894
- 82700 82694 106974 82830 82240 106672 118876 82208 106648 118862 82192 106636
- 82184 106630 82180 82352 82328 82316 82080 118830 106572 106566 82050 117472
- 124280 127678 103616 117360 124220 103520 117304 124190 75840 103472 75808 104160
- 117624 124350 76992 104048 117564 76896 103992 76848 76824 77536 104312 117694
- 77424 104252 77368 77340 77688 104382 77628 77758 121536 126320 128700 121440
- 126264 128670 111680 121392 126236 111648 121368 126222 111632 121356 103104 117104
- 124092 112320 103008 117048 124062 112224 121656 126366 93248 74784 102936 117006
- 93216 112152 93200 75456 103280 117180 93888 75360 103224 117150 93792 112440
- 121758 93744 75288 93720 75632 103356 94064 75576 103326 94008 112542 93980
- 75708 94140 75678 94110 121184 126136 128606 111168 121136 126108 111136 121112
- 126094 111120 121100 111112 111108 102752 116920 123998 111456 102704 116892 91712
- 74272 121244 116878 91680 74256 102668 91664 111372 102662 74244 74592 102840
- 116958 92000 74544 102812 91952 111516 102798 91928 74508 74502 74680 102878
- 92088 74652 92060 74638 92046 92126 110912 121008 126044 110880 120984 126030
- 110864 120972 110856 120966 110852 110850 74048 102576 116828 90944 74016 102552
- 116814 90912 111000 121038 90896 73992 102534 90888 110982 90884 74160 102620
- 91056 74136 102606 91032 111054 91020 74118 91014 91100 91086 110752 120920
- 125998 110736 120908 110728 120902 110724 110722 73888 102488 116782 90528 73872
- 102476 90512 110796 102470 90504 73860 90500 73858 73944 90584 90572 90566
- 120876 120870 110658 102444 73800 90312 90308 90306 101056 116080 123580 100960
- 116024 70720 100912 115996 70688 100888 70672 70664 71360 101232 116156 71264
- 101176 116126 71216 101148 71192 71180 71536 101308 71480 101278 71452 71612
- 71582 118112 124600 127838 105024 118064 124572 104992 118040 124558 104976 118028
- 104968 118022 100704 115896 123486 105312 100656 115868 79424 70176 118172 115854
- 79392 105240 100620 79376 70152 79368 70496 100792 115934 79712 70448 118238
- 79664 105372 100750 79640 70412 79628 70584 100830 79800 70556 79772 70542
- 70622 79838 122176 126640 128860 122144 126616 128846 122128 126604 122120 126598
- 122116 104768 117936 124508 113472 104736 126684 124494 113440 122264 126670 113424
- 104712 117894 113416 122246 104706 69952 100528 115804 78656 69920 100504 115790
- 96064 78624 104856 117966 96032 113560 122318 100486 96016 78600 104838 96008
- 69890 70064 100572 78768 70040 100558 96176 78744 104910 96152 113614 70022
- 78726 70108 78812 70094 96220 78798 122016 126552 128814 122000 126540 121992
- 126534 121988 121986 104608 117848 124462 113056 104592 126574 113040 122060 117830
- 113032 104580 113028 104578 113026 69792 100440 115758 78240 69776 100428 95136
- 78224 104652 100422 95120 113100 69764 95112 78212 69762 78210 69848 100462
- 78296 69836 95192 78284 69830 95180 78278 69870 95214 121936 126508 121928
- 126502 121924 121922 104528 117804 112848 104520 117798 112840 121958 112836 104514
- 112834 69712 100396 78032 69704 100390 94672 78024 104550 94664 112870 69698
- 94660 78018 94658 78060 94700 94694 126486 121890 117782 104484 104482 69672
- 77928 94440 69666 77922 99680 68160 99632 68128 99608 115342 68112 99596
- 68104 99590 68448 99768 115422 68400 99740 68376 99726 68364 68358 68536
- 99806 68508 68494 68574 101696 116400 123740 101664 116376 101648 116364 101640
- 116358 101636 67904 99504 115292 72512 67872 116444 115278 72480 101784 116430
- 72464 67848 99462 72456 101766 67842 68016 99548 72624 67992 99534 72600
- 101838 72588 67974 68060 72668 68046 72654 118432 124760 127918 118416 124748
- 118408 124742 118404 118402 101536 116312 105888 101520 116300 105872 118476 116294
- 105864 101508 105860 101506 105858 67744 99416 72096 67728 116334 80800 72080
- 101580 99398 80784 105932 67716 80776 72068 67714 72066 67800 99438 72152
- 67788 80856 72140 67782 80844 72134 67822 72174 80878 126800 128940 126792
- 128934 126788 126786 118352 124716 122576 126828 124710 122568 126822 122564 118338
- 122562 101456 116268 105680 101448 116262 114128 105672 118374 114120 122598 101442
- 114116 105666 114114 67664 99372 71888 67656 99366 80336 71880 101478 97232
- 80328 105702 67650 97224 114150 71874 97220 67692 71916 67686 80364 71910
- 97260 80358 97254 126760 128918 126756 126754 118312 124694 122472 126774 122468
- 118306 122466 101416 116246 105576 101412 113896 105572 101410 113892 105570 113890
- 67624 99350 71784 101430 80104 71780 67618 96744 80100 71778 96740 80098
- 96738 71798 96758 126738 122420 122418 105524 113780 113778 71732 79988 96500
- 96498 66880 66848 98968 66832 66824 66820 66992 66968 66956 66950 67036
- 67022 100000 99984 115532 99976 115526 99972 99970 66720 98904 69024 100056
- 98892 69008 100044 69000 100038 68996 66690 68994 66776 98926 69080 100078
- 69068 66758 69062 66798 69102 116560 116552 116548 116546 99920 102096 116588
- 115494 102088 116582 102084 99906 102082 66640 68816 66632 98854 73168 68808
- 66628 73160 68804 66626 73156 68802 66668 68844 66662 73196 68838 73190
- 124840 124836 124834 116520 118632 124854 118628 116514 118626 99880 115478 101992
- 116534 106216 101988 99874 106212 101986 106210 66600 98838 68712 99894 72936
- 68708 66594 81384 72932 68706 81380 72930 66614 68726 72950 81398 128980
- 128978 124820 126900 124818 126898 116500 118580 116498 122740 118578 122738 99860
- 101940 99858 106100 101938 114420
- ] [
- 128352 129720 125504 128304 129692 125472 128280 129678 125456 128268 125448 128262
- 125444 125792 128440 129758 120384 125744 128412 120352 125720 128398 120336 125708
- 120328 125702 120324 120672 125880 128478 110144 120624 125852 110112 120600 125838
- 110096 120588 110088 120582 110084 110432 120760 125918 89664 110384 120732 89632
- 110360 120718 89616 110348 89608 110342 89952 110520 120798 89904 110492 89880
- 110478 89868 90040 110558 90012 89998 125248 128176 129628 125216 128152 129614
- 125200 128140 125192 128134 125188 125186 119616 125360 128220 119584 125336 128206
- 119568 125324 119560 125318 119556 119554 108352 119728 125404 108320 119704 125390
- 108304 119692 108296 119686 108292 108290 85824 108464 119772 85792 108440 119758
- 85776 108428 85768 108422 85764 85936 108508 85912 108494 85900 85894 85980
- 85966 125088 128088 129582 125072 128076 125064 128070 125060 125058 119200 125144
- 128110 119184 125132 119176 125126 119172 119170 107424 119256 125166 107408 119244
- 107400 119238 107396 107394 83872 107480 119278 83856 107468 83848 107462 83844
- 83842 83928 107502 83916 83910 83950 125008 128044 125000 128038 124996 124994
- 118992 125036 118984 125030 118980 118978 106960 119020 106952 119014 106948 106946
- 82896 106988 82888 106982 82884 82882 82924 82918 124968 128022 124964 124962
- 118888 124982 118884 118882 106728 118902 106724 106722 82408 106742 82404 82402
- 124948 124946 118836 118834 106612 106610 124224 127664 129372 124192 127640 129358
- 124176 127628 124168 127622 124164 124162 117568 124336 127708 117536 124312 127694
- 117520 124300 117512 124294 117508 117506 104256 117680 124380 104224 117656 124366
- 104208 117644 104200 117638 104196 104194 77632 104368 117724 77600 104344 117710
- 77584 104332 77576 104326 77572 77744 104412 77720 104398 77708 77702 77788
- 77774 128672 129880 93168 128656 129868 92664 128648 129862 92412 128644 128642
- 124064 127576 129326 126368 124048 129902 126352 128716 127558 126344 124036 126340
- 124034 126338 117152 124120 127598 121760 117136 124108 121744 126412 124102 121736
- 117124 121732 117122 121730 103328 117208 124142 112544 103312 117196 112528 121804
- 117190 112520 103300 112516 103298 112514 75680 103384 117230 94112 75664 103372
- 94096 112588 103366 94088 75652 94084 75650 75736 103406 94168 75724 94156
- 75718 94150 75758 128592 129836 91640 128584 129830 91388 128580 91262 128578
- 123984 127532 126160 123976 127526 126152 128614 126148 123970 126146 116944 124012
- 121296 116936 124006 121288 126182 121284 116930 121282 102864 116972 111568 102856
- 116966 111560 121318 111556 102850 111554 74704 102892 92112 74696 102886 92104
- 111590 92100 74690 92098 74732 92140 74726 92134 128552 129814 90876 128548
- 90750 128546 123944 127510 126056 128566 126052 123938 126050 116840 123958 121064
- 116836 121060 116834 121058 102632 116854 111080 121078 111076 102626 111074 74216
- 102646 91112 74212 91108 74210 91106 74230 91126 128532 90494 128530 123924
- 126004 123922 126002 116788 120948 116786 120946 102516 110836 102514 110834 73972
- 90612 73970 90610 128522 123914 125978 116762 120890 102458 110714 123552 127320
- 129198 123536 127308 123528 127302 123524 123522 116128 123608 127342 116112 123596
- 116104 123590 116100 116098 101280 116184 123630 101264 116172 101256 116166 101252
- 101250 71584 101336 116206 71568 101324 71560 101318 71556 71554 71640 101358
- 71628 71622 71662 127824 129452 79352 127816 129446 79100 127812 78974 127810
- 123472 127276 124624 123464 127270 124616 127846 124612 123458 124610 115920 123500
- 118224 115912 123494 118216 124646 118212 115906 118210 100816 115948 105424 100808
- 115942 105416 118246 105412 100802 105410 70608 100844 79824 70600 100838 79816
- 105446 79812 70594 79810 70636 79852 70630 79846 129960 95728 113404 129956
- 95480 113278 129954 95356 95294 127784 129430 78588 128872 129974 95996 78462
- 128868 127778 95870 128866 123432 127254 124520 123428 126696 128886 123426 126692
- 124514 126690 115816 123446 117992 115812 122344 117988 115810 122340 117986 122338
- 100584 115830 104936 100580 113640 104932 100578 113636 104930 113634 70120 100598
- 78824 70116 96232 78820 70114 96228 78818 96226 70134 78838 129940 94968
- 113022 129938 94844 94782 127764 78206 128820 127762 95102 128818 123412 124468
- 123410 126580 124466 126578 115764 117876 115762 122100 117874 122098 100468 104692
- 100466 113140 104690 113138 69876 78324 69874 95220 78322 95218 129930 94588
- 94526 127754 128794 123402 124442 126522 115738 117818 121978 100410 104570 112890
- 69754 78074 94714 94398 123216 127148 123208 127142 123204 123202 115408 123244
- 115400 123238 115396 115394 99792 115436 99784 115430 99780 99778 68560 99820
- 68552 99814 68548 68546 68588 68582 127400 129238 72444 127396 72318 127394
- 123176 127126 123752 123172 123748 123170 123746 115304 123190 116456 115300 116452
- 115298 116450 99560 115318 101864 99556 101860 99554 101858 68072 99574 72680
- 68068 72676 68066 72674 68086 72694 129492 80632 105854 129490 80508 80446
- 127380 72062 127924 127378 80766 127922 123156 123700 123154 124788 123698 124786
- 115252 116340 115250 118516 116338 118514 99444 101620 99442 105972 101618 105970
- 67828 72180 67826 80884 72178 80882 97008 114044 96888 113982 96828 96798
- 129482 80252 130010 97148 80190 97086 127370 127898 128954 123146 123674 124730
- 126842 115226 116282 118394 122618 99386 101498 105722 114170 67706 71930 80378
- 96632 113854 96572 96542 80062 96702 96444 96414 96350 123048 123044 123042
- 115048 123062 115044 115042 99048 115062 99044 99042 67048 99062 67044 67042
- 67062 127188 68990 127186 123028 123316 123026 123314 114996 115572 114994 115570
- 98932 100084 98930 100082 66804 69108 66802 69106 129258 73084 73022 127178
- 127450 123018 123290 123834 114970 115514 116602 98874 99962 102138 66682 68858
- 73210 81272 106174 81212 81182 72894 81342 97648 114364 97592 114334 97564
- 97550 81084 97724 81054 97694 97464 114270 97436 97422 80990 97502 97372
- 97358 97326 114868 114866 98676 98674 66292 66290 123098 114842 115130 98618
- 99194 66170 67322 69310 73404 73374 81592 106334 81564 81550 73310 81630
- 97968 114524 97944 114510 97932 97926 81500 98012 81486 97998 97880 114478
- 97868 97862 81454 97902 97836 97830 69470 73564 73550 81752 106414 81740
- 81734 73518 81774 81708 81702
- ] [
- 109536 120312 86976 109040 120060 86496 108792 119934 86256 108668 86136 129744
- 89056 110072 129736 88560 109820 129732 88312 109694 129730 88188 128464 129772
- 89592 128456 129766 89340 128452 89214 128450 125904 128492 125896 128486 125892
- 125890 120784 125932 120776 125926 120772 120770 110544 120812 110536 120806 110532
- 84928 108016 119548 84448 107768 119422 84208 107644 84088 107582 84028 129640
- 85488 108284 129636 85240 108158 129634 85116 85054 128232 129654 85756 128228
- 85630 128226 125416 128246 125412 125410 119784 125430 119780 119778 108520 119798
- 108516 108514 83424 107256 119166 83184 107132 83064 107070 83004 82974 129588
- 83704 107390 129586 83580 83518 128116 83838 128114 125172 125170 119284 119282
- 107508 107506 82672 106876 82552 106814 82492 82462 129562 82812 82750 128058
- 125050 119034 82296 106686 82236 82206 82366 82108 82078 76736 103920 117500
- 76256 103672 117374 76016 103548 75896 103486 75836 129384 77296 104188 129380
- 77048 104062 129378 76924 76862 127720 129398 77564 127716 77438 127714 124392
- 127734 124388 124386 117736 124406 117732 117730 104424 117750 104420 104418 112096
- 121592 126334 92608 111856 121468 92384 111736 121406 92272 111676 92216 111646
- 92188 75232 103160 117118 93664 74992 103036 93424 112252 102974 93304 74812
- 93244 74782 93214 129332 75512 103294 129908 129330 93944 75388 129906 93820
- 75326 93758 127604 75646 128756 127602 94078 128754 124148 126452 124146 126450
- 117236 121844 117234 121842 103412 103410 91584 111344 121212 91360 111224 121150
- 91248 111164 91192 111134 91164 91150 74480 102780 91888 74360 102718 91768
- 111422 91708 74270 91678 129306 74620 129850 92028 74558 91966 127546 128634
- 124026 126202 116986 121338 102906 90848 110968 121022 90736 110908 90680 110878
- 90652 90638 74104 102590 91000 74044 90940 74014 90910 74174 91070 90480
- 110780 90424 110750 90396 90382 73916 90556 73886 90526 90296 110686 90268
- 90254 73822 90334 90204 90190 71136 101112 116094 70896 100988 70776 100926
- 70716 70686 129204 71416 101246 129202 71292 71230 127348 71550 127346 123636
- 123634 116212 116210 101364 101362 79296 105200 118140 79072 105080 118078 78960
- 105020 78904 104990 78876 78862 70384 100732 79600 70264 100670 79480 105278
- 79420 70174 79390 129178 70524 129466 79740 70462 79678 127290 127866 123514
- 124666 115962 118266 100858 113376 122232 126654 95424 113264 122172 95328 113208
- 122142 95280 113180 95256 113166 95244 78560 104824 117950 95968 78448 104764
- 95856 113468 104734 95800 78364 95772 78350 95758 70008 100542 78712 69948
- 96120 78652 69918 96060 78622 96030 70078 78782 96190 94912 113008 122044
- 94816 112952 122014 94768 112924 94744 112910 94732 94726 78192 104636 95088
- 78136 104606 95032 113054 95004 78094 94990 69820 78268 69790 95164 78238
- 95134 94560 112824 121950 94512 112796 94488 112782 94476 94470 78008 104542
- 94648 77980 94620 77966 94606 69726 78046 94686 94384 112732 94360 112718
- 94348 94342 77916 94428 77902 94414 94296 112686 94284 94278 77870 94318
- 94252 94246 68336 99708 68216 99646 68156 68126 68476 68414 127162 123258
- 115450 99834 72416 101752 116414 72304 101692 72248 101662 72220 72206 67960
- 99518 72568 67900 72508 67870 72478 68030 72638 80576 105840 118460 80480
- 105784 118430 80432 105756 80408 105742 80396 80390 72048 101564 80752 71992
- 101534 80696 71964 80668 71950 80654 67772 72124 67742 80828 72094 80798
- 114016 122552 126814 96832 113968 122524 96800 113944 122510 96784 113932 96776
- 113926 96772 80224 105656 118366 97120 80176 105628 97072 114076 105614 97048
- 80140 97036 80134 97030 71864 101470 80312 71836 97208 80284 71822 97180
- 80270 97166 67678 71902 80350 97246 96576 113840 122460 96544 113816 122446
- 96528 113804 96520 113798 96516 96514 80048 105564 96688 80024 105550 96664
- 113870 96652 80006 96646 71772 80092 71758 96732 80078 96718 96416 113752
- 122414 96400 113740 96392 113734 96388 96386 79960 105518 96472 79948 96460
- 79942 96454 71726 79982 96494 96336 113708 96328 113702 96324 96322 79916
- 96364 79910 96358 96296 113686 96292 96290 79894 96310 66936 99006 66876
- 66846 67006 68976 100028 68920 99998 68892 68878 66748 69052 66718 69022
- 73056 102072 116574 73008 102044 72984 102030 72972 72966 68792 99934 73144
- 68764 73116 68750 73102 66654 68830 73182 81216 106160 118620 81184 106136
- 118606 81168 106124 81160 106118 81156 81154 72880 101980 81328 72856 101966
- 81304 106190 81292 72838 81286 68700 72924 68686 81372 72910 81358 114336
- 122712 126894 114320 122700 114312 122694 114308 114306 81056 106072 118574 97696
- 81040 106060 97680 114380 106054 97672 81028 97668 81026 97666 72792 101934
- 81112 72780 97752 81100 72774 97740 81094 97734 68654 72814 81134 97774
- 114256 122668 114248 122662 114244 114242 80976 106028 97488 80968 106022 97480
- 114278 97476 80962 97474 72748 81004 72742 97516 80998 97510 114216 122646
- 114212 114210 80936 106006 97384 80932 97380 80930 97378 72726 80950 97398
- 114196 114194 80916 97332 80914 97330 66236 66206 67256 99166 67228 67214
- 66142 67294 69296 100188 69272 100174 69260 69254 67164 69340 67150 69326
- 73376 102232 116654 73360 102220 73352 102214 73348 73346 69208 100142 73432
- 102254 73420 69190 73414 67118 69230 73454 106320 118700 106312 118694 106308
- 106306 73296 102188 81616 106348 102182 81608 73284 81604 73282 81602 69164
- 73324 69158 81644 73318 81638 122792 126934 122788 122786 106280 118678 114536
- 106276 114532 106274 114530 73256 102166 81512 73252 98024 81508 73250 98020
- 81506 98018 69142 73270 81526 98038 122772 122770 106260 114484 106258 114482
- 73236 81460 73234 97908 81458 97906 122762 106250 114458 73226 81434 97850
- 66396 66382 67416 99246 67404 67398 66350 67438 69456 100268 69448 100262
- 69444 69442 67372 69484 67366 69478 102312 116694 102308 102306 69416 100246
- 73576 102326 73572 69410 73570 67350 69430 73590 118740 118738 102292 106420
- 102290 106418 69396 73524 69394 81780 73522 81778 118730 102282 106394 69386
- 73498 81722 66476 66470 67496 99286 67492 67490 66454 67510 100308 100306
- 67476 69556 67474 69554 116714
- ]
- ] def
-
- % Return the 17 bits for a codeword in a given cluster
- /cwtobits {
- clusters exch get exch get /v exch def
- [ 17 {0} repeat v 2 17 string cvrs {48 sub} forall ]
- dup length 17 sub 17 getinterval
- } bind def
-
- % Populate bitmap for the image
- compact {
- /rwid 17 c mul 17 add 17 add 1 add def
- } {
- /rwid 17 c mul 17 add 17 add 17 add 18 add def
- } ifelse
- /pixs rwid r mul array def
-
- 0 1 r 1 sub {
- /i exch def
-
- i 3 mod 0 eq {
- /lcw i 3 idiv 30 mul r 1 sub 3 idiv add def
- /rcw i 3 idiv 30 mul c add 1 sub def
- } if
- i 3 mod 1 eq {
- /lcw i 3 idiv 30 mul eclevel 3 mul add r 1 sub 3 mod add def
- /rcw i 3 idiv 30 mul r 1 sub 3 idiv add def
- } if
- i 3 mod 2 eq {
- /lcw i 3 idiv 30 mul c add 1 sub def
- /rcw i 3 idiv 30 mul eclevel 3 mul add r 1 sub 3 mod add def
- } if
-
- pixs rwid i mul [
- 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 0 0
- lcw i 3 mod cwtobits {} forall
- cws c i mul c getinterval { i 3 mod cwtobits {} forall } forall
- compact {
- 1
- } {
- rcw i 3 mod cwtobits {} forall
- 1 1 1 1 1 1 1 0 1 0 0 0 1 0 1 0 0 1
- } ifelse
- ] putinterval
-
- } for
-
- % Return the arguments
- <<
- /ren //renmatrix
- /pixs pixs
- /pixx rwid
- /pixy r
- /height r 72 div rowmult mul
- /width rwid 72 div
- /opt options
- >>
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/pdf417 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp pdf417 0.0 0 0 0
+%%BeginData: 310 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 05tH61 bg q9L_Q" 0Op
+s'_E-,f4DKCt)Ou "b#@< ,jr A7^ o fOu "b% Df0 Z-Eaa/ 7A moLsAW ei&
+@rH4'@:OC%AmoLs AWei& ARf OfG %G KG s,o /k@ rH1+D/ OE N!0T,k Ec6
+/CL]ESo061uTD09 Z:L] `er 04 SL %+D ,%u F(L Lj06
+1KF+D,%uF(LLj05 t??F ( HJ +@ ;L! rOu %#qF D5Z2F
+-<^[F*)G:DJ+':E +P1qH\ _]c 2 3JD eE -,f4 DKC /fX(GdVF(L LtH]gXBP#RT
+(P%'TNOthst4d(e HEckrV 4aW > DP!5 %OP! 5$b I=%,/FE2M8 Ou%NL<IL$AO
+rfcH05kfOBl@m1P !5$bI? IQJ E-,f 4DKC /f1 OYEX04eX0A ThX$+D#&!AT
+hX$Ot;bP04Sp:F_ u#;+C f>+F _u#;O t;bP 061 uTF!,LAGB8 ouOu"b3Dg-&
+@Cige?Dg-&@Cikg nOu%& cEcYf =05Yc C+C \c"@rGmhP% 'TNOu"b+L]E
+So@UX:eDe*F+NWE ILNI-gJ D0'?Q5 &-6EP 'N4 "C6AUR!KmI :C6CcD1QlmD
+3/@Qj"-Q?@/8]H@P!3W:!KsFF5*C/R30Ia,"-TX>"-Pj29RV8N3,N_LP!3WD5*C2S@VV&,05?Y
+6Ou"b#@<,jrA7Zm#F(^:/C6D8R1Qk"OP#ZpnAUT_@Eaa0=04\L5@s;u:@UX:eDe*FB@Zh%\1G<
+Hu!0T,kC5;kQ1OEgY@UX:eDe*FB@Zim$P!FGY<%ha*+C\c"@rGmh+DHW4Oo^@@P"_#iOu$WWFC
+TN9+DN$/GER2(Bcq,G"HieK1G<JcC5;nR!Ko6eP%?:W@<?"'F!,"%FCTN9L]D1Q9Th2[HS8i:E
+bo<)+C\c"@rGmhP%'S1@UX:nAT!;.P%odQP!+.FA79RiGB4m9@<-0qDMSL[;MYL>Ckr+T!KmbP
+1Lsp9@s<!M!/:TGP'DD%04\L5@s;u:@UX:nAT!;.P#@)>P&+T9Ebo<)L^'#WOo^@>Oo^^POu$W
+WFCTN9L]E/3Kp$\/P#[;<L]LsnEbo<)L^'#?L]N[<HS9)r5*@]TD0'0-+Bost@<,jrA7ZltL^'
+#YL]`f6H[V&K?'6usD0'3.+Bot*F(03R!g7\h5)'(<P&-9^P!4O!!<<+_Cm"gT"+-1jL'**lC6
+Cc8",)h8I?K4gOu"b-F(025>9IB`Eas#uAKY]C#*NeY"-N\@"-Q?)I?I0-Ou"b-F(986>9Ia'@
+WR\6P')pOL&h:;Cm"g^5(in:!!&0uOo^@@H]g@C",)hPP!4U&KT]5]P(R&'1G<6^F,1!_$'I)\
+F(99I!0TulF(99I!0U!0!BcN]Oo]':F,0sT!g6Z?",)hPP'D]`KT]5LF(99I!Kp*=!GumfF,0g
+Z983M!P&-9^D0'3.L]NZ3L&jE"Cm"g/GB8QBL]W`AL'**lC6Egr",)h8Cia*-L]W`4Oo]E@@rm
+G+P"UTFP&-9^D0'3.L]NZ3L&uphCm"g9F(99I!g632!BcN]Oo]':F,0mR!g6Z?",)hPP'D]`KT
+]5LF(99I"-Q<?!GumfF,0j[98F:FCm"g9F(99I!g632!eHMNOo]':F,0jQ!g6Z?",)hPP'D]`K
+T]5MF(99I!g634'U!9q!Fp=pL]E55M#WWnL'**lC6EgP@<?"'F!,1Q"d3\X!KmInGB8pmI?I,S
+Eb0)1@UX:nAT!;.P%p.9Eb0*D!0V2GA79RiGB4m;@<?"'F-:!QASmU0>9IB`Eas#uAKYGjEbo<
+)+ED%1P,WJ5D3@S>I?I0-P'MJ=<+BEJHS8o<FCTN9+BsR&Qt0WI@s<!W!g7\3Ou%NL<.0p005V
+hB@<?"'F-:!q1M('4AThX$M#WW$HYnQeP$r\jARfOfG%GKG!g5?fP#Q:S.?[;?L&dm0@?Lb?04
+eX0AThX$L]`erI?IQHL&dp18o9:`5a#Q="FDe5@r,_"ASd/*Ou%NL<,I?j6'=ie04eX0AThX$L
+]rqtI?IQXP#O)O@<c?nCh7d$Ck`%bL]N[<D3Cl7DMS@1DNZo@/;O=iWKK&K@r,_"AS`K+@<c?n
+Ch7d$Cm%VA04eX0AThX$+DkP3ARfOfG%GKQ1OYEc05H@FARfOfG%GKG!KmIpG]8fsOu$TdCisT
+4F,0gZ4aShlDesQ5DK?q;+D[,@L]`euF)c5BP)5>QOu%NL<+Bi_F_u#;L]NZ2@rH1+D/OEN*g0
+rp"FDe3+Cf>+F_u#;Ou%NL<%i87D'3VW!Jgc>!Fp%aF_u#;OuAI7Ot;bPEZfC@GB8pZEc6/CLg
+#sMOp$+bEZfC@GB8p'I?IQML]`fPHS9Dq"-PHgP#O)O@<c?nCh7d$C`m41Eft6p!KsF!P,W88L
+]VC1OuAISL]N[<L^8e<Or9EZH]gR@P#RTeOu$r`G\(B$AThX$+D#&!AThX$P#-KYARfOfG%GJ4
+D..[#@r,_"ASdMc05H@FARfOfG%GKG!KmIpG]8fsOu%NL<%i,3@j#fTCho35Ou"b$GB4m:+EEW
+]L]NY>OpR:-@s<!M!,dsE@s<!M!G#V\@s<!WH"2&>+Dlo8Oo\c0DBNeZWJCS<WI'@%KRK#9?'9
+JCGB4mE+Bot(H\_ZMP(SPj?'9IdEcYZ*DeC1sL]N54TR2h]L]`fVL'+-4C427t?'6usEcZ&8B8
+-M^OpR:-L]N;4L'+)qOuRK'@;KjpP!5%%P!3o-Ci<sB",Hu@LQZn1P"76HF)Z/<A:'+6Or9&UP
+&6@GL]ETTOp$,PF)5c-P!5%%P!3o-Ci<sL5*AR%!JU]LP%o#Y@;KjpP!5%%I=%-"P')Q\I?ITY
+Oq*X204Sp3AnH*,>DN;qH\_ZMP(R&'1Pc'f!Gd$8Bp(ZC1Lk?7AnH*,Bcpo(AS,Oq+DHW4P,XU
+;P'C\s!KsF<s+g]&05?Y6Ou$TdAS,Oq+DN$/De3NmF!,4R!KsFF94MmOAnH*,C6D51F(&m'B-:
+oO96,)mEc5KO!JU]MP%p/)I?I-2De3NmF,0g+De3NmF,0gZ96,)^Ci<r/Bp),0F)Z/<A<M1cP"
+769De3NmF!+t2AS,OqL]Cq'AS,OqP%'4JP,XU<Ou$TdAS,OqP%'4JP,X9:L]Dd3De3NmF-8_C!
+g4Fa983PBP!5&.P'DD<8;I8%!H*\oP,Wd]FHSgtGB8p2P"T;/F!,@`99K=1"/1lmOu%moL]M:I
+!KsF/05?Y6Ou$TlF!,?CC6AU-GB4mE+DR&?L]NY>P"UN3Tl_DeDe3NmF!,6@C6GQP!KsFF99O+
+G"/1lmP,XTFL'+-4C6EgiP":"a88a4aDBN_X!IKth@s<!W5)'05@s<!M"c32ALQY;nWJ1MKP%p
+/)I?I,S@s;u:@s<!M!+U4oP%'4JP,XU<Ou"b$Cisf@ATDi7>9I.'!!1WcKE)&<n:UcBomDDm!S
+$%\!!2A0KE)&G5(in:W5+&d!Ru(A!!0$+KE)$L5_K+<W%`l)!Djnl!!04;KE)&(n:UcBl[4?c!
+Nb44!!1YqKE)&=5(in:=MTRi!N^6n!!-20KE)$Y^k;[gY4.)E!S;^P!!-?_KE)%UG_?%tf04if
+!F0Ss!!05bKE)$Zn:UcBYC)!'!FC#(!!08eKE)$[I"VJ#p%j=A!RfnZ!!2>/KE)&F^4ZIeUqhW
+`!Rbq?!!2=HKE)%K@"\L\dPum[!D#J/!!/lLKE)&$*/":m80EQc!MgQc!!,V%KE)%Mi.M(2ds-
+NG!U7=O!!,d/KE)%ME.e2ldl`9`!DHmS!!/rVKE)&%*eXLo9JD,"!N$ii!!,jQKE)%NG_?%te%
+UJ8!D[Te!!/u[KE)$J3.q84V]LKk!Ddrn!!0"3KE)$K4G3\8:EG/h!M[A_!!1JdKE)&:]S$7cU
+0rWS!RWl[!!2;TKE)$@5_K+<U+h6#!RVm?!!,J1KE)%I(k_ki6kG"O!CR3H!!,R)KE)%JE.e2l
+dCb,4!CgIM!!/iSKE)&#SqI(E7PKJq!M^Wf!!,P+KE)$B%"nT]7rX+]!Md;\!!,SLKE)%JSqI(
+E7i[0^!CseU!!/d$KE)&"\:ah_k[&oB!CB&)!!/cIKE)&"S:gkC66Lp]!ML?`!!1H,KE)$>&;1
+#aTaZSS!C@'F!!/btKE)$?@"\L\Tt#aU!RT\V!!,G@KE)%HS:gkC6PtIV!MPO,!!,FqKE)$?#(
+usWU#(G&!CMm#!!,ANKE)%GY_2uWcs25(!C7i]!!/a[KE)&":4rTJ5nJ\L!MGC)!!,@kKE)%GL
+4fO-5m2i@!C<rC!!,BQKE)$=N._035bNc1!RNHP!!/`dKE)%G7YCaB5_=Xh!Qs>R!!22+KE)&D
+^4ZIePe_qP!QoA7!!21DKE)%;@"\L\auG%S!TbAU!!+K5KE)%;0SBE,-m40C!LDYs!!18fKE)&
+7^4ZIe/AQo=!L@\X!!18*KE)$(@"\L\Q8jNt!A#pX!!+VfKE)$*i.M(2Q["/`!R&31!!+]kKE)
+ %>4G3\8/i\La!A5@F!!+`tKE)%>^4ZIe00Fmf!AD0?!!1fhKE)&?E.e2lp:Q%Y!SUq7!!2IHK
+E)&HSqI(EZp99E!ST5\!!2I,KE)%[+G9^qg),JC!UUAM!!0G<KE)&,%"nT]P/)_N!Qf;6!!2/n
+KE)%]^k;[gP$iqC!Qd<S!!2/PKE)%]@"\L\gGjid!UZJ3!!-n$KE)#u+G9^qOr/iP!Qbh)!!-m
+YKE)%](k_kiC_27"!@GU8!!/:&KE)%p]S$7cDSUo*!@D3-!!/9CKE)%pSqI(EDIA+t!Ok%A!!1
+iGKE)$j0SBE,-5_C9!H&a-!!+HdKE)%:]S$7cDfC@0!@Kj[!!/:TKE)$k3.q84\"86Q!H/s2!!
++I[KE)$k]S$7c-_>tk!H4Q_!!1b\KE)&>\:ah_p0NCP!O=tD!!1b,KE)&>S:gkCZ64f#!SJ<C!
+!2GHKE)%Y&;1#afaNN6!O;ua!!0A.KE)%8@"\L\aLHm'!T[R?!!0E6KE)%80SBE,aIIn`!G4TM
+!!+8dKE)&+S:gkCaGtoR!G3I-!!+8TKE)%8%"nT]Ae9Uq!OE2f!!/2dKE)#s"G?aU,@H0)!Kjm
+F!!10tKE)$c@"\L\,;=cN!Kin*!!-^dKE)%ZS:gkCOcG(p!G<7&!!+;QKE)#t#(usW,IiC,!Kl
+5l!!-`BKE)#tS:gkCB:OVT!@*VX!!-_mKE)$chLkk0Ys<sB!SFW0!!2FkKE)%X+G9^qfU.<l!U
+NR7!!0>9KE)&*N._03Ym?!_!SE-[!!0>-KE)%X!e^OS+[C\\!KaO=!!1/GKE)$_5_K+<+WuF<!
+K`\%!!1/9KE)$_+G9^qZ'^1E!SG\N!!-R@KE)#r#_W0YOG8Dg!FlCg!!0?ZKE)$_"G?aU+g?V"
+!Kc)i!!-T6KE)#rR"PG?ONrLZ!FqLM!!0@MKE)$_N._03+bkXM!Fpk;!!-TbKE)$_c@c/uYb6X
+L!SCM-!!2F=KE)%WOG!T7fM$qu!O.B5!!1_AKE)%WKS0=+Y_%N.!?e%g!!/0`KE)%o/qa3*@A&
+8R!?dJW!!/0TKE)$]OG!T7Yfqb#!K]d(!!-MaKE)#qKS0=+@>':6!?cuI!!+4pKE)$]fRs5*@E
+aB)!Fa!$!!1_'KE)&*-A2@"YX4!C!K\jc!!+35KE)$\aFjNo@)R]u!FWct!!.tmKE)%lE.e2li
+k0pE!K(9<!!1%uKE)#e5_K+<MD0\`!Q?%3!!*cVKE)%1(k_ki'G,ot!>Gfm!!*kNKE)%2E.e2l
+`Opj(!>]'r!!/!;KE)%lSqI(E(,1CA!K.qN!!*iPKE)#g%"nT](N>$-!K4UD!!*lqKE)%2SqI(
+E(EA).!>iD%!!*n-KE)%t@"\L\k.$'E!V9WN!!/NRKE)%t0SBE,k+%))!Lb-a!!1=]KE)&8Ne@
+B5RLk,P!R2%+!!/MoKE)%t#(usWM-tu:!Q;L$!!2(cKE)%B@"\L\M(jS_!Q:L]!!+uCKE)#c+G
+9^qc('Fe!Q:"O!!+u#KE)%B(k_kiM%#%;!B(LB!!*]<KE)$2#_W0Y'4?In!K"=>!!1$pKE)$3@
+"\L\'/5(>!R9JS!!,#4KE)%BS:gkCM2m5h!B1jK!!*`AKE)$3%"nT]'=`\q!K#Zd!!,$gKE)#d
+S:gkC2k5O$!>CKH!!*biKE)$3hLkk0h*?Vn!Ud1F!!2h!KE)&/+G9^qm[/Y-!V]?B!!1meKE)&
+@N._03h$AZ6!Ub\q!!1mYKE)%@5_K+<bcla#!TmX?!!0\sKE)%@+G9^qmbEHq!Tm.1!!0\SKE)
+&/R"PG?m`pIc!P8nr!!/JnKE)%sL4fO-]*O&i!SrK`!!/JhKE)#b5_K+<Lp2O4!Q85r!!+l@KE
+)#b+G9^qLmWhq!Q7`d!!.:/KE)$/+G9^qR@&X-!R/iB!!.9dKE)%bR"PG?h9LZR!JlJ`!!.9TK
+E)$/#_W0YR>-@p!I"g&!!*Z5KE)#bY_2uWLtmX`!Ags5!!*\!KE)%/c@c/uGHc`#!Ag*r!!/M5
+KE)$sR"PG?]?Z'0!>1'>!!+m1KE)#bgk5Y.1YdW`!>3V1!!.<!KE)$/c@c/ugn9<#!Ua'C!!2g
+HKE)&.OG!T7mS&96!SiKa!!2LWKE)&.KS0=+gk(1Z!LTO5!!1;GKE)&8/qa3*\Y+TU!LSt%!!2
+M*KE)%`OG!T7grtEO!R+#d!!0WdKE)%?KS0=+\V,V9!LSIl!!0W^KE)#aTS*:GLff<1!Q6UD!!
++gIKE)#aOG!T7LeNI%!HXoe!!+g9KE)%?b_,rsLdm$t!HX?U!!0XSKE)#aKS0=+F,5JL!AT7\!
+!*X_KE)$-JqO+)&D2X9!JkWH!!+h,KE)#ab_,rsF4c-G!AVfO!!*YNKE)$ob_,rs0uekH!>+[P
+!!.0/KE)&.:kSfLmOX"k!Sg5!!!2L7KE)&.7"bO@gd6Yo!LQ]:!!1:pKE)%_d"DB"Qq2l1!R)m
+D!!0UNKE)&.AqU-b\AX%#!LQ3,!!0UHKE)#a:kSfLLb+2Z!AMlR!!*X%KE)%/-A2@"ER9@=!AM
+TJ!!/I!KE)$maFjNo\E8GE!>%SN!!.)XKE)$,_LqmiEPdA/!ANkn!!.*+KE)$mk(E^8mM:HU!S
+elP!!1:ZKE)%?,_Q-uQm.1`!>$Z4!!+ceKE)$lk_&p:&0cc-!AIu9!!.d]KE)#[5_K+<KeS/[!
+=Bs&!!.cjKE)%iNe@B5$4qjj!JLr8!!*E4KE)%,#(usW$XeVf!JS%:!!0snKE)#\0SBE,Kq*er
+!=K`t!!.e6KE)#\%"nT]$O27a!=QDj!!.f1KE)#\S:gkC$]]l?!=Rb;!!/'EKE)%mY_2uWj'76
+;!KA4T!!1*,KE)%4&;1#a`f,QN!K@A<!!1)oKE)%4"G?aU#sa.D!JI\1!!0rAKE)#l5_K+<#p=
+m$!QNoJ!!0r3KE)#l+G9^qNL5A!!QNE<!!+#MKE)#Z#_W0YKSG-[!?2;t!!/(6KE)#Z!e^OS$*
+]'_!JK6]!!+%CKE)#ZR"PG?K[,5N!?7DZ!!/))KE)#lN._03$&4*5!=@P7!!+%oKE)#Zc@c/u)
+pX*:!R@?k!!27bKE)&EY(QcUcB*\Z!U!.0!!1B$KE)&97YCaBc@giN!R?:M!!/%OKE)%m=G-YT
+SY1W9!K<+n!!1)5KE)%DOG!T7cHLqA!QIT^!!/XHKE)%3KS0=+SV2Xr!K;V`!!/XBKE)#YTS*:
+GKNNm-!?%P`!!*@eKE)%mDM.uj4.q6,!?$uP!!/&&KE)%+7YCaB4-5*q!M.Gf!!*@YKE)$7LkG
+a/)2*YC!=4:1!!*shKE)#YfRs5*KPlGC!?'OC!!*ALKE)$7fRs5*)9da6!=6\u!!,1*KE)#j`e
+4<m#k!?G!?(<Y!!,1LKE)&A:kSfLpT0#J!UiR4!!2hkKE)&A7"bO@mm;[-!R=Mp!!276KE)&0d
+"DB"mqdXW!Tte_!!1rtKE)&AAqU-bhSb'I!R=#b!!1rnKE)%3:kSfL`[lcC!M%Mi!!/$LKE)%m
+-A2@"^!ME4!M%5a!!1AWKE)%daFjNohWBIk!K9?u!!0dOKE)%C_Lqmi]u#F&!=2MT!!.a(KE)#
+id"DB"#Y9UK!JDeQ!!,+,KE)#iaFjNoN+R_C!IN1H!!,+$KE)%Ck(E^8#XX1E!IMn@!!0dqKE)
+#i_LqmiHc1R;!=3Lp!!*r'KE)#YAqU-b3UDD!!>ssP!!.H5KE)$5k(E^8Hfft]!UhFi!!2h[KE
+)&A,_Q-umimDb!R<*H!!26uKE)&0BS6?dml#h!!T%@?!!1@hKE)&0@Y=^^N$s>Z!QGn.!!/U'K
+E)%3,_Q-u]]b"K!M!\R!!/$&KE)%cjFdL6S77-O!PIEF!!*?RKE)%+(5)Yg(heR&!K8pi!!,(C
+KE)#iA:sp`#U4p%!I<m^!!,(?KE)#i@Y=^^H/sVY!BB(l!!.B)KE)#iG(]hrH1lmk!UgYS!!1q
+5KE)&015#W.S2>m!!PEN-!!0`QKE)#i1kYi03-9fR!I46i!!.?8KE)#V5_K+<"X&Hu!J6\l!!*
+67KE)#V#_W0Y"U'JY!<o]\!!*7jKE)#VN._03"bq[1!<q83!!*8KKE)%-TS*:GL6.&g!Q.Ta!!
+.h1KE)%j7YCaBL4k3[!JZ2Z!!*4qKE)%)=G-YT%A8@S!J]6[!!.[FKE)#^OG!T7L<P;N!=aj<!
+!.hoKE)#^KS0=+"G2:,!=aX6!!*5TKE)%)DM.uj%G6=6!J^#q!!*PQKE)#U`e4<m%E=&$!<hhD
+!!*PsKE)%n:kSfLa%1j`!QRT]!!1,,KE)%-:kSfLNmNFZ!QT#0!!0taKE)%5aFjNoa(Bu)!KP*
+O!!.g@KE)%5_Lqmi"AjaO!=[>.!!*3nKE)%)-A2@"*RKH>!=[&&!!*3jKE)#naFjNo%)df!!<b
+`B!!++YKE)#]_Lqmi"Di_k!=\=J!!*47KE)#nm">?>%-E3C!?L<U!!28]KE)&9UkA^KkG!V0!Q
+QUA!!1DZKE)&9[Y+V]cX_\/!QQC;!!1DTKE)%-."hR$_\Rn*!KLiH!!1+uKE)%Ek_&p:Nb!eC!
+JVeO!!/\PKE)%5@Y=^^T&PD'!<ag(!!.ZeKE)#]BS6?dL,O\b!?C<V!!*L=KE)#U,(ops4m7P!
+!?C0R!!*L;KE)$9jFdL6*9)VO!<b<6!!*LOKE)#mp4NDH4naO/!Vb)s!!2iBKE)&9P_9#;n$I`
+J!U#W!!!2PoKE)%n'SHGecSU:T!QPh+!!1u!KE)&!15#W.hf=AM!JV;A!!/*:KE)%-&qg5cSof
+Vc!KJpg!!0h+>p*@)!!2b#KE)&L\:ah_l9L"&!VJ."!!2qdKE)&<+G9^qob`>^!W%h0!!2?rKE
+)&G%"nT]l3N%C!VHYM!!2?fKE)&=@"\L\osfYT!W(Z+!!1Y9KE)&=0SBE,opg[8!S/BH!!2C&K
+E)&GNe@B5ee!K7!UC/I!!1XVKE)&=#(usWec^X+!S:_4!!2DqKE)&GhLkk0Y!@X?!S9#Y!!2DU
+KE)%U+G9^qf,0/@!UGc!!!056KE)&)%"nT]XpB[\!S7O/!!05*KE)%V@"\L\f=6J6!UJTq!!-C
+kKE)%V0SBE,f:7Ko!F?n%!!08?KE)&)Ne@B5?4_bi!Nuob!!-C3KE)%V#(usW?XSNe!O'"d!!1
+^.KE)$[0SBE,YFL7G!FH[s!!09`KE)$[%"nT]?atah!O(@5!!-GsKE)$[Ne@B5ks0n%!VEUL!!
+2q$KE)&;+G9^qoU(:3!W#QE!!2<qKE)&FN._03km2qB!VD,"!!2<eKE)&;!e^OSdm/Qd!U6hA!
+!2`IKE)&%+G9^ql'R,(!VFZj!!1O[KE)&;N._03dg1U,!U5>l!!1OOKE)&%!e^OSVa,n8!Rn9+
+!!2?>KE)%N+G9^qe!Pdg!U7m_!!/u/KE)&%N._03V[.qU!RldV!!/u#KE)%N!e^OS:I'R5!N3/
+T!!1R(KE)$K+G9^qVjN,;!Ro>I!!,k,KE)%NN._03:C)UR!N1[*!!,juKE)$KY_2uWVqcq*!Df
+)9!!0"CKE)$KN._03:PON&!DhL(!!,m@KE)&:TS*:GoN6bH!W"F%!!2;FKE)&F9S<BHk_Oll!V
+Aj7!!2;:KE)&:JqO+)d@c-m!U/0h!!2_0KE)&#OG!T7kfe\[!RZ^V!!2<'KE)&#KS0=+d=R#O!
+Mc<@!!1L"KE)&:mXtQ@UQC-/!R],E!!/jNKE)&#`e4<mUP+:#!Mb7"!!,T_KE)%JfRs5*dI)Yf
+!Cr6)!!/k=KE)$CLkGa/UW.re!Cqfr!!,TAKE)$CfRs5*U[Ed8!Ct@e!!,U0KE)$CmXtQ@kYQp
+4!V@pr!!2:SKE)&F-A2@"kX:((!U)k'!!1HnKE)&:CkMchd)^k?!U+-K!!1HbKE)&"_LqmiU!S
+Gm!RU1d!!/e7KE)&"k(E^8Tu;Ta!MRA`!!,I6KE)%Hm">?>6cao\!MSY/!!,I*KE)$?_Lqmi6g
+TI+!CQ"&!!2:3KE)&F(5)YgkTkf]!U(_\!!1G[KE)&:2M;&2ct%e0!RP;/!!/bVKE)&"G(]hrT
+]Cb+!MJG*!!,CLKE)%Gp4NDH60*\!!C>^u!!29tKE)&:&qg5ccnpCU!RNTT!!/a7KE)%GEeFDn
+jZnJ!!V3IJ!!2n#KE)&7+G9^qnsG(1!VoKD!!20mKE)&DN._03jTpM>!V1tu!!20aKE)&7!e^O
+Sb<U^\!TgP=!!2ZGKE)%r+G9^qjd:]$!V4Nh!!17SKE)&7N._03b6Wb$!Tf&h!!17GKE)%r!e^
+OSQU$3(!R%^#!!2 3:KE) %>+G9 ^qbF! q_ !Th U[!!/D tKE)%rN
+._03QO&6E!R$4N! !/D hKE)% >!e^O S0 0k0 j!L L$D!
+!19uKE)$++G9^qQ ^EF+! R& cA!!+ _aKE )% >N. _030* m42 !LJOo !!+_
+UKE)$+Y_2uWQe[5 o!ABg n!! /G3 KE)$ +N ._0 308>,[ !A E5]!!+ auK
+E)&HTS*:GqcJLO! Gh1X! !2e TKE ) &M9 S<B HC& !>]!VV >& !!2sdK E)$
+dr.G%Np4S)!!VV+ u!!2/ RKE )&D =G -Y Tq( @=# !UZP5! !2 /BKE)& MDM
+.ujm>uu$!VX`j!! 2X[K E)& ?L kG a/j Fi0 d!U YPn!
+!2/4KE)&?JqO+)a e4:e ! T_ md !!2 Y.K E)&- TS*:G
+acM/U!T_IX!!1i9 KE)&?b _,r s jMl iQ !S`E `!! 12pKE)&-KS 0=+ab#0G!S`
+3Z!!/:VKE)%pfRs 5*jR.[ $!O n _T!! /:FK E)% pb_,rs[uc7 C!SbhO!!13]
+KE)%^LkGa/PD"Sh !Om`8! !/: 8KE) %^Jq O+) -_Q+m!L)/h !!140KE)$kT
+S*:G-]iu]!L(`\! !.#"K E)%^ b_,rs PK&7 U!H 3dI!!+I#KE )$kKS0=+-\@
+!O!@QNQ!!/;OKE) $kfRs 5*-d7 5D!H6 28! !+IeKE)$k` e4<m-glWf!V
+T?C!!2sJKE)$apk /VJp.0i :!W+3s !!-X. KE) &H7"bO@A:B 13!VSj5!!2.
+WKE)&D/;+!(m*LCc!TZe)!!2X;KE)&>aFjNop1AsX!URaX!!2.IKE)&>_LqmiaO#S?!T\'M!!1
+d"KE)%oaFjNojCX&F!SPPI!!2HKKE)&+`.S*kaMNT1!SP>C!!/5/KE)%om">?>Zd=@*!KkHV!!
+11'KE)%ZaFjNog#dqf!OK^t!!/5!KE)%Z_Lqmi,LD)D!Kl`%!!-`ZKE)#taFjNoOlh;s!GBK,!
+!0FgKE)$c`.S*k,Jo*6!GB9&!!+>2KE)$cm">?>,NaXZ!GCPJ!!2dAKE)&M(5)Yg@f1lZ!VRdl
+!!-PXKE)&H,(opsj=#Z]!V."Z!!2G"KE)&H2M;&2lstbL!TYGX!!2FqKE)%oBS6?dj>MYk!SHU
+h!!1/OKE)&*jFdL6aC9f&!SHCb!!/2FKE)%oG(]hrZ06i@!SI+!!!0@cKE)%7ie.:4Z/UE:!?p
+Z[!!/2TKE)$_k_&p:+ln:V!Ft2D!!+8&KE)$_ie.:4+ngQh!FthV!!2d-KE)$]IY7\%p(E#Y!T
+XrJ!!2FCKE)&6&qg5clnX4o!Q[*N!!1_oKE)%o15#W.fQ)WF!K_DV!!0=rKE)%7EeFDnYk!GI!
+?h#f!!-O#KE)#qnq6uD@If'O!VQkR!!2-fKE)&>)MA(ka;T^3!SBGd!!/0BKE)%WH@u8!ih1r)
+!V'9F!!2ktKE)&4OG!T7nP"T9!TJog!!2UZKE)&4KS0=+idug`!QC^b!!2*3KE)&CDM.uj`K5`
+Q!TM=V!!1&pKE)&4`e4<m`IrmE!QBYD!!/"NKE)%lfRs5*ipMI"!K3%m!!1'_KE)%2LkGa/`Q!
+Q2!K2Va!!/"0KE)#hTS*:GMqE[_!QFJ[!!*mtKE)%2b_,rs(Pm_E!K4sN!!*mhKE)#hJqO+)(Y
+FB@!K6B!!!*n[KE)#h`e4<m([cqV!V9-@!!2nsKE)$1pk/VJo14N7!VrUG!!+qSKE)&E7"bO@1
+k()X!V8X2!!2(UKE)&C/;+!(k0Sb]!THY'!!2U:KE)&8aFjNoo4EXU!Tq=R!!2(GKE)&8_Lqmi
+`6a/;!TIpK!!1?kKE)%kaFjNoib!iD!R8]=!!26EKE)%t`.S*k`570-!R8K7!!.r'KE)%km">?
+>S'Zfg!K"mN!!1%#KE)%BaFjNoc/sZZ!Lq#\!!.qnKE)%B_Lqmi'@;C4!K$/r!!,%*KE)#daFj
+NoM<9Hk!B8)Q!!/SOKE)$3`.S*k'>fD&!B7lK!!*c"KE)$3m">?>'BXrJ!B9.o!!2tqKE)$qn:
+UcB])73]!W/[G!!.3:KE)%aIY7\%qkA`D!H`^B!!.1*KE)&E."hR$q3H[6!AaS+!!2h-KE)&M[
+Y+V]G5R!n!A]+W!!2h)KE)&E,(opsG(,)E!V^&V!!2(-KE)&C(5)Ygk%KDJ!TGAX!!2NOKE)&I
+G(]hriZa$U!Uf$%!!24kKE)&@ie.:4`+Xf(!TH"j!!1=-KE)%kA:sp`h<9Ll!R0VX!!1#IKE)&
+/jFdL6bi49U!Suag!!.o>KE)%kG(]hrRHT;(!Jofi!!0^qKE)%@jFdL6LuO'f!P@EG!!/MIKE)
+ %bie.:4&a4lJ!JpH&!!+n>KE)#bjFdL6GNa\[!Aiei!!*\kKE)$sjFdL61ZF&f!I*OV!!*]*K
+E)$/p4NDHqila6!HRsg!!0WZKE)&MP(Wf9EdWN?!HLAW!!2[*KE)$-IY7\%pG@O'!V6qW!!..i
+KE)&I15#W.iY7%G!Tl4l!!2'lKE)&@FG'Vpjt_Si!Uau]!!1"pKE)%sFG'Vp`%luG!Sm=#!!1;
+aKE)&.nq6uDLie:M!LWM4!!.mrKE)%`oRm2FR.>n1!P.cS!!*Z'KE)$-oRm2F&FtJS!H[md!!+
+hFKE)$onq6uDqhg%,!HEL?!!.('KE)&E$A8B[pDS\b!TFH>!!24#KE)&@3eRJ6`#=:/!R*TX!!
+1l$KE)%/3eRJ6R!ODc!P%uZ!!*XWKE)$,qLehLEVb=g!H>c+!!2%TKE)&BXFpQSiCJV%!Uut>!
+!2%HKE)&36A,=>_U*r9!T@jJ!!0sXKE)&3AqU-b_Sh*-!Q)^,!!.f#KE)%im">?>KueoI!Q*uP
+!!.elKE)%,_Lqmi$daP,!JTln!!*JKKE)%,k(E^8$cI\u!=Qbt!!*JoKE)#\k(E^8nYh*@!Vk6
+!!!+#9KE)&CUkA^K)Ld>>!V)n;!!2%,KE)&BQ@o5=j(O)G!T>;W!!2+jKE)&3,(opsj'mZA!Q&
+N'!!2%:KE)%mk_&p:_IS<"!QO2R!!0rGKE)%mie.:4K]n'h!Q'#5!!/)CKE)%+jFdL6NT>`m!J
+KHc!!/)=KE)#Zk_&p:K_C'!!?:6U!!*DeKE)#ljFdL6$0$U<!?:$O!!*E"KE)#lp4NDHq:(&t!
+BU"/!!/X>KE)&KdY%T$3dcS\!BNDt!!2VSKE)#jIY7\%o<a/N!V)>+!!,01KE)&EZ@i2Yi=pqF
+!TQ"i!!2$kKE)&9FG'Vpj"c8f!U"KV!!0qnKE)%mFG'Vp_D6cE!RC=j!!1)[KE)%unq6uDKQMk
+I!K?Z(!!.anKE)%DoRm2FN:MW%!M/e7!!*AtKE)#joRm2F#kEWK!B]q,!!*u.KE)$7nq6uDHLQ
+Rf!PNl6!!.CjKE)%d5(in:H9?i\!I>f?!!2o<KE)$5I"VJ#qq?]'!IK3I!!,)DKE)%"5(in:nV
+Vu"!V;b5!!2i*KE)&3$A8B[iu3RN!TuLs!!2P7KE)%i)MA(k`]AbQ!R?"E!!1sQKE)%+3eRJ6N
+-^-W!M'">!!0e0KE)#YH@u8!)#Amc!BL"0!!.@iKE)%c^4ZIeGs$`[!I5`>!!,'nKE)$u^4ZIe
+GeA\0!I12h!!.=NKE)&2W.Y-Oi1u#+!T9]*!!0oLKE)&2[Y+V]_.83!!Pr5u!!.]8KE)%hG(]h
+rK&hRb!J9<a!!*8eKE)%)p4NDH"lt=:!<qJ9!!*8sKE)&Be:[f&%=Ws1!V"Nj!!2#BKE)&3["J
+D[i0&`n!TC>;!!0nmKE)%jFG'Vp_(pZD!Q/r2!!.[nKE)%-oRm2FJoZME!J^/u!!*5pKE)#^oR
+m2F"S.3G!=eUQ!!2l[KE)#nI"VJ#*Bo,V!V"6b!!2WDKE)&2MM(s1iL5E"!TUbE!!0nSKE)%j3
+eRJ6a*NC=!J3@c!!.h#KE)%5qLehL"F>_$!=\gX!!+,:KE)$9G_?%tT"]jX!BiPu!!,5(KE)#m
+^4ZIe4hcRL!I\p?!!0gHKE)%$3.q84^7KuX!IYr@!!.KXKE)$8]S$7cICt45!Bcs,!!.M>KE)%
+#\:ah_^0ZHm!IUDj!!.J-KE)$8?A&:ZI,9MV!IS.*!!.IBKE)%#/qa3*^pJap!Pl!o!!.XmKE)
+ %(EeFDn!q_-G!<VhF!!2$3KE)%gRY1YA_7G:"!J*:b!!.^uKE)#SH@u8!#5WuQ!=lhs!!+.RK
+E)#oSqI(E5.H7G!M<\O!!,9RKE)$:Ne@B5*aXL"!C#@n!!.PQKE)%f>_E(XI[Gcg!P_B_!!.P-
+KE)%%L4fO-5$Wa@!IigW!!,8YKE)%%c@c/uITV7'!P^7?!!.OBKE)%%7YCaB4t_Kg!Iep>!!.O
+"KE)%%-A2@"%pjnh!?YR"!!+0:KE)$;=G-YTT<<hI!C'82!!,;RKE)#p/qa3*5Al,S!C&,g!!,
+;2>p*@)!!0.YKE)&'pk/VJ;o"%d!NGRA!!1UIKE)$Mi.M(2W;)#G!RuRO!!,pcKE)%OI"VJ#:j
+@Wn!W(/r!!-<^KE)%Tpk/VJqT+<i!EnoF!!02!KE)&L`.S*k=SROL!N^a'!!2r5KE)$TI"VJ#p
+!A?l!W)/9!!-C#KE)&GaFjNoqW<G2!F5PU!!2c2KE)$XIY7\%otl@^!UJ*c!!2cZKE)&=aFjNo
+p#^o-!UI[W!!2E&KE)&)d"DB"lg09)!S>DG!!2EJKE)&)`.S*kf><1@!O'k'!!1^<KE)%VaFjN
+ofB._d!O'Fp!!,a.KE)%Ln:UcBdenau!D24&!!/njKE)&$IY7\%8FV94!Mk*r!!,W8KE)%K5(i
+n:83DP*!W$J_!!,g`KE)%Mr.G%NqIG6Z!DN9A!!/sGKE)&L@Y=^^9RMKn!DG\1!!2`UKE)&LG(
+]hr:AfbF!VGH+!!,iDKE)&Fie.:4l0*d#!VH)=!!2?FKE)&;ie.:4e*)Gb!U9<2!!1R0KE)&%i
+e.:4Vs&d6!Rpaq!!0"YKE)%Nie.:47Grh!!M]@B!!1JrKE)$@n:UcBU3qUo!CV0c!!/fXKE)$@
+4G3\86lq!]!W"X+!!,RaKE)%JIY7\%qD*^(!ChHi!!,PQKE)&FFG'Vp7t-*k!VCDc!!2<UKE)&
+:nq6uDdI`(l!R^Ik!!/keKE)%Jnq6uD6L]X.!MOmo!!,E2KE)%H5(in:69Ko$!C@i\!!2p7KE)
+$?I"VJ#6U$/'!VAF+!!2;0KE)&"qLehL6$S%_!MI/[!!,AJKE)$=*eXLo6,&!P!C4;N!!,?VKE
+)$'^k;[gQ10G,!Qt=n!!+P,KE)%;pk/VJb'o!D!@[Gj!!/=3KE)$$G_?%tPWja#!@U'`!!2n/K
+E)$)n:UcBQMcC9!Vp8Z!!+YGKE)%=IY7\%q-o!W!A&VO!!+W7KE)&Dk_&p:q0%Dk!A=;'!!2ZO
+KE)$*IY7\%o&><&!TiNu!!2ZaKE)&7jFdL6jl1pn!R'\[!!23TKE)%rjFdL6bMn0T!LN#'!!1:
+:KE)%>jFdL6Qf<Yu!O^j=!!1gKKE)&?IY7\%Bu#B%!OV?L!!1f$KE)$di.M(2[!76(!ST_j!!-
+bPKE)%[4G3\8BK1YF!ONo$!!-aQKE)$!i.M(2P5'\1!QfeD!!-rpKE)#un:UcBP'ho_!Gq7Y!!
+0NUKE)%95(in:Cj:U5!@0d\!!-muKE)#u*eXLoC`\60!VnR*!!+GAKE)%:IY7\%qfIJk!VnL(!
+!.!4KE)$"I"VJ#qf7>i!H*:<!!+E1KE)$j5(in:noTNb!@N>L!!2fcKE)&DEeFDnDgm?>!VZ);
+!!20QKE)&?oRm2FjRRs(!U]H2!!146KE)&-oRm2Famt)b!Sd0u!!/;UKE)%:nq6uDA\`s!!OD3
+J!!1c#KE)$`i.M(2Z?V$&!SKYi!!-VLKE)%Y4G3\8A2o5B!O<c"!!-UMKE)$`%YOf_,4L6c!Kh
+b_!!-^$KE)#sG_?%tOZnEu!G6S0!!0DiKE)$b4G3\8+s)C;!G3C+!!2m6KE)#tI"VJ#q`9B1!G
+?e5!!+<.KE)$c5(in:niDF(!VUhm!!2/,KE)&>qLehLaSLPi!SR=&!!/5YKE)$^i.M(2Z$:p%!
+SG,>!!-PJKE)%X4G3\8@Q9#@!O3]!!!-OKKE)$^%YOf_+aAY?!Kb$K!!-SSKE)#r4G3\8@m#DE
+!?iM;!!-RNKE)#r^4ZIeA%mTr!F]r#!!0=:KE)$]3.q84Yb$LJ!FZt$!!-L<KE)#q]S$7c@D%6
+n!?dte!!-N"KE)$\\:ah_Y[2t_!FVFN!!-JfKE)#q?A&:Z@,?P:!FT/c!!-J&KE)#fi.M(2MYM
+i)!QBM@!!*f'KE)%1I"VJ#'R592!K''o!!*crKE)#e*eXLopp>\S!>bH`!!/",KE)&JZ@i2Y(4
+:c8!>[kP!!2V3KE)#hIY7\%nT'9_!TNa)!!2*MKE)%loRm2F`U\Z^!K6T'!!/#KKE)$1^k;[gR
+dbt1!R6"F!!+q7KE)%AG_?%tbs$d\!AnbK!!/NNKE)$03.q84RN@+^!AkdL!!+ndKE)#cn:UcB
+M0ssV!B0G#!!*^WKE)%05(in:2L'lT!Ll9+!!+u?KE)#c*eXLo2BIMO!Vi+:!!*a\KE)&K\qC%
+a2gg8Y!>@YM!!,#BKE)&C3eRJ6o6Q&i!TJEY!!26YKE)%kqLehLc2*(n!K$Z+!!0[hKE)&/G_?
+ %tm_4>S!Hc,1!!0ZMKE)&/4G3\8FC9b%!P17D!!1msKE)$p0SBE,\f?A'!H]03!!0Y@KE)$p%
+"nT]1>mfc!L\1c!!1<XKE)$ri.M(212qmH!LZ''!!.7^KE)%b4G3\8R3%"]!HpGU!!+hpKE)$r
+*/":m1(Js;!Hns+!!*[VKE)%/^4ZIe1O+QQ!>.GI!!.:gKE)$/4G3\8&KZT*!I$YZ!!+ksKE)$
+s*eXLo&\`nu!AhHC!!.;XKE)$n^k;[g\T!3%!Sk>@!!.+JKE)%`3.q84gn'0!!HKlI!!0VMKE)
+$n(k_ki\IO8m!HJU%!!.*EKE)$-E.e2lR(S(P!HW45!!+f6KE)%?SqI(EF#\gQ!P+eT!!.-\KE
+)$-%YOf_Et3j'!>)ns!!+geKE)#aSqI(EF1d/+!AU1!!!./4KE)$m@"\L\\@@1l!Sh"7!!.'nK
+E)%_S:gkCE>X?/!P"/C!!.'JKE)$m#(usW0Xuc9!LR2H!!.)LKE)$,S:gkCEL_[^!AKOe!!.)"
+KE)#a?A&:Z0]%H_!HHtL!!.&CKE)%_>_E(XE0u:Y!OtmX!!.%tKE)$lL4fO-0O082!H?hI!!+c
+KKE)$lc@c/uE*.bn!Osb8!!.%4KE)$l7YCaB0J8"Y!H;q0!!.$iKE)$l-A2@"$Li]K!JPoS!!*
+FOKE)%,5(in:$9WtA!=Bm$!!*ITKE)#\5(in:n@F8Q!TA?X!!0t5KE)%,qLehL)W68K!KD>W!!
+1*RKE)#kE.e2lNBDjo!?*qN!!/'#KE)#k*/":m)@hE#!=="(!!.beKE)#lG_?%t#s<k@!?4.S!
+!*BIKE)#l*eXLo$,2&m!?8b+!!,-rKE)%DE.e2lcFef1!BOVA!!/WMKE)%uSqI(E3\Z3e!M(3`
+!!,+tKE)%D%YOf_3XgZA!BLF<!!*sVKE)%3]S$7c4)fiQ!?!kM!!/%MKE)$73.q84)'";0!BV9
+S!!*rIKE)$7%YOf_#eYfj!?&P'!!*@sKE)$7]S$7c)4lK]!BZm+!!0c@KE)&0\:ah_mp:YI!I@
+"a!!0beKE)&0S:gkCH6@k@!PK>'!!1r:KE)%!&;1#a]aTPo!I>$)!!0b;KE)%!"G?aU3FIL?!M
+$ZQ!!1AOKE)%"@"\L\3A?*d!M#[5!!.F#KE)%dS:gkCS;r7&!IGZ:!!,(gKE)%"%"nT]3<k-:!
+IG$(!!*qHKE)%3?A&:Z3Oj_B!>q>[!!.GVKE)$5S:gkC(lj7L!IL>i!!,*?KE)%"Ne@B5#[W/a
+!>s[H!!,+:KE)%"hLkk0GsI#_!PGXi!!1q]KE)$u+G9^q]U4?P!T$S)!!.?VKE)%cN._03GmK'
+'!PF/?!!.?JKE)$u!e^OS33\&9!M!DJ!!.ALKE)$4R"PG?S5+_;!I:&c!!0aXKE)$uN._033/3
+(d!I9EQ!!*pAKE)$4gk5Y.(f#_a!I<IR!!,()KE)$uc@c/uGbB]i!PDNf!!1q/KE)$tOG!T7]M
+*tY!I0ER!!0`%KE)$tKS0=+G_1SK!B=27!!/TBKE)$tfRs5*3)"u*!I2hA!!,&KKE)$t`e4<m(
+bUIA!B=tM!!.?4KE)$t:kSfL]I\^9!I..g!!0_ZKE)$t7"bO@GX@&`!B;W`!!.=\KE)$4-A2@"
+G\2U/!I-#G!!0_JKE)$t,_Q-uGTqe@!B:jJ!!.=&KE)#VG_?%tK"cm<!<kT=!!*6EKE)#V^4ZI
+e%<-t#!J\7?!!*NgKE)%-SqI(E%31$$!=]Nl!!*58KE)#^]S$7c"J18H!=bWR!!+*JKE)%5\:a
+h_a'OE!!?EkI!!/+MKE)#n(k_kiNfJbm!?DT%!!+)EKE)#]\:ah_L0fN5!?J\'!!*LuKE)#nS:
+gkC%$#u@!?I2R!!*4/KE)#]hLkk0*SuGL!Bi]$!!/[qKE)&!>_E(X4WoCX!M5[3!!1D@KE)$9&
+;1#aSrA=&!Bg^A!!/[GKE)$9"G?aU4T^9:!?A=s!!/*bKE)$9Y_2uW*12BZ!KKp.!!,6MKE)%E
+c@c/u4cG$o!??iI!!,6;KE)#]>_E(X*8H2I!=V_V!!,7<KE)#mc@c/u4jJ]\!PY4[!!1tZKE)&
+AY(QcU^6"!J!T-S(!!0fiKE)&17YCaB^4_.>!PX/=!!,3TKE)%E=G-YTcRskN!I^Vo!!,3DKE)
+ %E9S<BHI?9*^!PZd2!!/Z\KE)%$LkGa/4G8@f!I]WS!!,36KE)%$JqO+)**@jo!KJdc!!,47K
+E)#m9S<BHIFs2Q!BeSZ!!+'/KE)%$b_,rs4N<$S!I_t@!!*K\KE)#mDM.uj4RRk&!IaBh!!0f1
+KE)&1/;+!(^.<nW!T,5W!!0f%KE)%e6A,=>4A^\2!M1iq!!.JoKE)$88;$sDSgK*j!IVtA!!0f
+GKE)%#`.S*k4@4]$!IVb;!!+&jKE)$8CkMch*%$==!IX6e!!,2oKE)%#k(E^8^*nX7!T+ZG!!0
+eZKE)%e,(ops4=Gj_!M1'[!!.I\KE)$8,_Q-uHt7m1!B_QZ!!.IVKE)#m(5)Yg4>qim!IT'D!!
+0eJKE)%e&qg5c4;<GK!IQ_W!!,1pKE)%#15#W.!ka0d!<SjG!!*;6KE)%*?A&:Z#+U>H!="R;!
+!*.-KE)#WhLkk0%^:Td!Jap5!!*RsKE)%.:4rTJ%ZH&@!=jj;!!*:/KE)#_gk5Y.##9gO!=mD.
+!!+.6KE)%6=G-YTa0('q!?R>U!!/-SKE)#oLkGa/O%+d&!?QoI!!+-mKE)#_=G-YTLG"5[!?Tm
+H!!/-uKE)#ob_,rs%Ru*O!?T76!!*9VKE)#_DM.uj*q"[]!M<2A!!1EIKE)%F8;$sDc_c?q!M;
+c5!!/]YKE)#o:kSfLO">qa!C"k`!!/^.KE)%6-A2@"50/BW!?OX^!!,:%KE)#o6A,=>5/MsQ!=
+gZ6!!+-WKE)#_-A2@"54!q&!?Pj+!!,:GKE)&1W.Y-On(*-l!T0]+!!1uOKE)%F."hR$c^'4a!
+P`<$!!/];KE)%fA:sp`T-Apg!P`)s!!+,hKE)%6(5)Yg5%oTL!?NM>!!.Q4KE)$:A:sp`*[67;
+!Ij*_!!,8mKE)%%ie.:4%Mj]t!?O.P!!,9,KE)%%p4NDHhirco!T0&n!!/]+KE)%f1kYi0T+Ze
+W!P^CC!!+,TKE)$:1kYi0*YO,+!If-D!!,8=KE)%%EeFDnhhm'e!M9^P!!0hQKE)#o$A8B[4rT
+(S!Id(_!!*1,KE)#T:4rTJ#?ZWZ!J@P.!!*<uKE)#X7YCaB""o6,!=*Lq!!*U,KE)%.XFpQS%n
+M?R!JdP*!!*TuKE)#`6A,=>#:tN.!=s""!!*<OKE)#`AqU-bO/R^3!QWcE!!/.VKE)%6U4`LI%
+k*)2!Jcto!!+0TKE)%6[Y+V]+(U$)!=pB-!!+0NKE)#X(5)Yg%lT(@!?ZK<!!1EqKE)&!dY%T$
+O-G:t!M?`P!!/.DKE)%FZ@i2Y%hsZs!?X.O!!*TCKE)$;FG'Vp+#8KL!C(UX!!1EgKE)%6MM(s
+1T:1E5!=oNj!!+/[KE)$;3eRJ6"0@.U!<]3P!!*>'KE)%*eq=#(#Gd"Q!=,?P!!*1fKE)#X[Y+
+V]LX^tW!Jf*V!!*=hKE)#`["JD[#Ej`?!=uJh!!1.*>p*F91G<6^FDkW&FE;dO@r-:/FCfK6P!
+5%%P!5%%06WLBOu$<u&UT<6I?K5+L]WAEP,4<qH\aA=WI9q$?'711@YbVZWJD.L9RW'6Ou$TdD
+/`onFF,Z]GA1TD&S$u?L_5dNL_5dNL]NY>Ou%N50628NA;Ch-P&,pdOo^@NOo^@NOo^@OOo^_%
+I?IS`E+sQ<+ED[?A0>oUCm#*f1Pc$e!HNtsP,Wd]Bp(ZC1MMXIP%odQP!+.FCh%Z3BnukS;MZB
+WCiY=4P,X6>P#@GDOu"b3@s9&0L]`f<L`V^qA!-kK!KsFF1OYEcBnukSC5;nR4aShu@s9&0L]`
+f<L`V^qARfOfG%GKG"-RJ`!HNtsP,X6>P%p-\Ou"b3@s9&0L]`f<L`V^qEejaZWJCY>;N_'D1O
+YEcBnukSC5;qS4aShu@s9&0L]`f<L`V^qA!-kK!KsFF1G<cYG9CUU"-QQ<*g1>N@r,_"ASd/)P
+&-9^EejaZWJCY>C6AU\1OYEcE+sQ<+ED[?A0>TLCg2\rL]N;4L]N;4L]N;4L]N;3L]N;3L]N;3
+L]N;3L]E52Ch%Z3BnukSC1DI0DdmF&F*i=u8Rlsc+CcO.P&+Wk9RCK0"-RD/GB@b4BlnECI?I0
+MP"B/%D/`onFF/f EI=$! EG9CU U"-RD /G B@b 4BlnEC I?I0X!J
+gc4!Jgc4!Jgc4!J g`3 !Jg`3 !/LW2 !J g`3 !Jg `3!/
+LZ(P#YeNH$tiH4? P9;AS s. SEb0- *@<? O( GV= #MG]P !HB m=\PE +sQA
++ED[?A1qn9G^1EP 05+p2 B4u B0E em8L 2K E_[ D09Z:P &) dqBk2= !+E
+D[?A;Ed>2D8ufF< GL@FD 5Z2 F!* Y 1+C oD. FC] E#GEQn u0 61WAD. .O,
+Bm>e?Ou[rR%[&V$ E+EQ; 0fP 7TP %6 4g CG' +8/ p(ZFEd ;, :Ecc5; /n0
+$=E,Zq1AS,XoATD @'Df p)1 AW h2 !3A 5Gb FDt YuCM
+@[!P.H"'F`V,9E+ *6lB l 7R 3P #M~>
+% uk.co.terryburton.bwipp/pdf417 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER pdf417--
% --BEGIN ENCODER micropdf417--
+% --REQUIRES preamble raiseerror renmatrix--
% --DESC: MicroPDF417
% --EXAM: MicroPDF417
% --EXOP:
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/micropdf417 {
-
- 20 dict begin
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
- /columns 0 def
- /rows 0 def
- /rowmult 2 def
- /cca false def
- /ccb false def
- /raw false def
- /parse false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /columns columns cvi def
- /rows rows cvi def
- /rowmult rowmult cvr def
-
- cca {/raw true def} if
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- % Convert input into array of codewords
- raw {
- /datcws barcode length array def
- /i 0 def /j 0 def
- { % loop
- i barcode length eq {exit} if
- /cw barcode i 1 add 3 getinterval cvi def
- datcws j cw put
- /i i 4 add def
- /j j 1 add def
- } loop
- /datcws datcws 0 j getinterval def
- } { % Simple autoencoder from input to codewords using byte mode
- /barlen barcode length def
- barlen 6 mod 0 eq {
- /datcws barlen 6 idiv 5 mul 1 add array def
- datcws 0 924 put
- } {
- /datcws barlen 6 idiv 5 mul barlen 6 mod add 1 add array def
- datcws 0 901 put
- } ifelse
-
- % Rebase groups of 6 bytes splitting into 3 byte chunks
- 0 1 barlen 6 idiv 1 sub {
- /i exch def
- /msbs [ barcode i 6 mul 3 getinterval {} forall ] def
- /mscs [
- msbs aload pop exch 256 mul add exch 65536 mul add
- 3 {dup 900 mod exch 900 idiv} repeat
- ] def
- /lsbs [barcode i 6 mul 3 add 3 getinterval {} forall] def
- /lscs [
- lsbs aload pop exch 256 mul add exch 65536 mul add
- 3 {dup 900 mod exch 900 idiv} repeat
- ] def
- /cws 5 array def
- lscs 0 get mscs 0 get 316 mul add
- cws 4 2 index 900 mod put
- 900 idiv lscs 1 get add mscs 0 get 641 mul add mscs 1 get 316 mul add
- cws 3 2 index 900 mod put
- 900 idiv lscs 2 get add mscs 0 get 20 mul add mscs 1 get 641 mul add mscs 2 get 316 mul add
- cws 2 2 index 900 mod put
- 900 idiv lscs 3 get add mscs 1 get 20 mul add mscs 2 get 641 mul add
- cws 1 2 index 900 mod put
- 900 idiv mscs 2 get 20 mul add
- cws 0 3 -1 roll 900 mod put
- datcws i 5 mul 1 add cws putinterval
- } for
-
- % Add the remaining bytes to the end of the codewords
- /rem barlen 6 mod def
- rem 0 ne {
- datcws datcws length rem sub
- [ barcode barlen rem sub rem getinterval {} forall ]
- putinterval
- } if
-
- ccb {/datcws [920 datcws aload pop] def} if
-
- } ifelse
-
- % Basic metrics for the each symbol
- % c r ecw rl rc rr
- /metrics [
- [ 1 11 7 1 0 9 ]
- [ 1 14 7 8 0 8 ]
- [ 1 17 7 36 0 36 ]
- [ 1 20 8 19 0 19 ]
- [ 1 24 8 9 0 17 ]
- [ 1 28 8 25 0 33 ]
- [ 2 8 8 1 0 1 ]
- [ 2 11 9 1 0 9 ]
- [ 2 14 9 8 0 8 ]
- [ 2 17 10 36 0 36 ]
- [ 2 20 11 19 0 19 ]
- [ 2 23 13 9 0 17 ]
- [ 2 26 15 27 0 35 ]
- [ 3 6 12 1 1 1 ]
- [ 3 8 14 7 7 7 ]
- [ 3 10 16 15 15 15 ]
- [ 3 12 18 25 25 25 ]
- [ 3 15 21 37 37 37 ]
- [ 3 20 26 1 17 33 ]
- [ 3 26 32 1 9 17 ]
- [ 3 32 38 21 29 37 ]
- [ 3 38 44 15 31 47 ]
- [ 3 44 50 1 25 49 ]
- [ 4 4 8 47 19 43 ]
- [ 4 6 12 1 1 1 ]
- [ 4 8 14 7 7 7 ]
- [ 4 10 16 15 15 15 ]
- [ 4 12 18 25 25 25 ]
- [ 4 15 21 37 37 37 ]
- [ 4 20 26 1 17 33 ]
- [ 4 26 32 1 9 17 ]
- [ 4 32 38 21 29 37 ]
- [ 4 38 44 15 31 47 ]
- [ 4 44 50 1 25 49 ]
- ] def
-
- % Basic metrics for the each symbol
- % c r ecw rl rc rr
- /ccametrics [
- [ 2 5 4 39 0 19 ]
- [ 2 6 4 1 0 33 ]
- [ 2 7 5 32 0 12 ]
- [ 2 8 5 8 0 40 ]
- [ 2 9 6 14 0 46 ]
- [ 2 10 6 43 0 23 ]
- [ 2 12 7 20 0 52 ]
- [ 3 4 4 11 43 23 ]
- [ 3 5 5 1 33 13 ]
- [ 3 6 6 5 37 17 ]
- [ 3 7 7 15 47 27 ]
- [ 3 8 7 21 1 33 ]
- [ 4 3 4 40 20 52 ]
- [ 4 4 5 43 23 3 ]
- [ 4 5 6 46 26 6 ]
- [ 4 6 7 34 14 46 ]
- [ 4 7 8 29 9 41 ]
- ] def
- cca {/metrics ccametrics def} if
-
- % Select metrics of an appropriate symbol
- /urows rows def
- /ucols columns def
- /i 0 def
- { % loop
- /m metrics i get def
- /c m 0 get def % Columns in symbol
- /r m 1 get def % Rows in symbol
- /k m 2 get def % Error correction codewords
- /rapl m 3 get def % Left row address pattern
- /rapc m 4 get def % Centre row address pattern
- /rapr m 5 get def % Right row address pattern
- /ncws r c mul k sub def % Data codewords
- /okay true def
- datcws length ncws gt {/okay false def} if
- urows 0 ne urows r ne and {/okay false def} if
- ucols 0 ne ucols c ne and {/okay false def} if
- okay {exit} if
- /i i 1 add def
- } loop
- /m datcws length def
-
- % Create codewords array with one extra working space element and add padding
- /n c r mul k sub def
- /cws c r mul 1 add array def
- cws 0 datcws putinterval
- cws m [ n m sub {900} repeat ] putinterval
- cws n [ k {0} repeat 0 ] putinterval
-
- % Calculate the log and anti-log tables
- /rsalog [ 1 928 {dup 3 mul 929 mod} repeat ] def
- /rslog 929 array def
- 1 1 928 {dup rsalog exch get exch rslog 3 1 roll put} for
-
- % Function to calculate the product in the field
- /rsprod {
- 2 copy 0 ne exch 0 ne and {
- rslog exch get exch rslog exch get add 928 mod rsalog exch get
- } {
- pop pop 0
- } ifelse
- } bind def
-
- % Generate the coefficients
- /coeffs [ 1 k {0} repeat ] def
- 1 1 k {
- /i exch def
- coeffs i coeffs i 1 sub get put
- i 1 sub -1 1 {
- /j exch def
- coeffs j coeffs j 1 sub get coeffs j get rsalog i get rsprod add 929 mod put
- } for
- coeffs 0 coeffs 0 get rsalog i get rsprod put
- } for
- /coeffs coeffs 0 coeffs length 1 sub getinterval def
- coeffs length 1 sub -2 0 {coeffs exch 2 copy get 929 exch sub put} for
-
- % Derive the error codewords
- 0 1 n 1 sub {
- /t exch cws exch get cws n get add 929 mod def
- 0 1 k 1 sub {
- /j exch def
- cws n j add cws n j add 1 add get 929 t coeffs k j sub 1 sub get mul 929 mod sub add 929 mod put
- } for
- } for
- n 1 n k add { dup cws exch 929 cws 5 -1 roll get sub 929 mod put } for
-
- % Trim the working space from the end of the codewords
- /cws cws 0 cws length 1 sub getinterval def
-
- % Base 10 encoding of the bar space successions for the codewords in each cluster
- /clusters [
- [
- 120256 125680 128380 120032 125560 128318 108736 119920 108640 86080 108592 86048
- 110016 120560 125820 109792 120440 125758 88256 109680 88160 89536 110320 120700
- 89312 110200 120638 89200 110140 89840 110460 89720 110398 89980 128506 119520
- 125304 128190 107712 119408 125244 107616 119352 84032 107568 119324 84000 107544
- 83984 108256 119672 125374 85184 108144 119612 85088 108088 119582 85040 108060
- 85728 108408 119742 85616 108348 85560 108318 85880 108478 85820 85790 107200
- 119152 125116 107104 119096 125086 83008 107056 119068 82976 107032 82960 82952
- 83648 107376 119228 83552 107320 119198 83504 107292 83480 83468 83824 107452
- 83768 107422 83740 83900 106848 118968 125022 82496 106800 118940 82464 106776
- 118926 82448 106764 82440 106758 82784 106936 119006 82736 106908 82712 106894
- 82700 82694 106974 82830 82240 106672 118876 82208 106648 118862 82192 106636
- 82184 106630 82180 82352 82328 82316 82080 118830 106572 106566 82050 117472
- 124280 127678 103616 117360 124220 103520 117304 124190 75840 103472 75808 104160
- 117624 124350 76992 104048 117564 76896 103992 76848 76824 77536 104312 117694
- 77424 104252 77368 77340 77688 104382 77628 77758 121536 126320 128700 121440
- 126264 128670 111680 121392 126236 111648 121368 126222 111632 121356 103104 117104
- 124092 112320 103008 117048 124062 112224 121656 126366 93248 74784 102936 117006
- 93216 112152 93200 75456 103280 117180 93888 75360 103224 117150 93792 112440
- 121758 93744 75288 93720 75632 103356 94064 75576 103326 94008 112542 93980
- 75708 94140 75678 94110 121184 126136 128606 111168 121136 126108 111136 121112
- 126094 111120 121100 111112 111108 102752 116920 123998 111456 102704 116892 91712
- 74272 121244 116878 91680 74256 102668 91664 111372 102662 74244 74592 102840
- 116958 92000 74544 102812 91952 111516 102798 91928 74508 74502 74680 102878
- 92088 74652 92060 74638 92046 92126 110912 121008 126044 110880 120984 126030
- 110864 120972 110856 120966 110852 110850 74048 102576 116828 90944 74016 102552
- 116814 90912 111000 121038 90896 73992 102534 90888 110982 90884 74160 102620
- 91056 74136 102606 91032 111054 91020 74118 91014 91100 91086 110752 120920
- 125998 110736 120908 110728 120902 110724 110722 73888 102488 116782 90528 73872
- 102476 90512 110796 102470 90504 73860 90500 73858 73944 90584 90572 90566
- 120876 120870 110658 102444 73800 90312 90308 90306 101056 116080 123580 100960
- 116024 70720 100912 115996 70688 100888 70672 70664 71360 101232 116156 71264
- 101176 116126 71216 101148 71192 71180 71536 101308 71480 101278 71452 71612
- 71582 118112 124600 127838 105024 118064 124572 104992 118040 124558 104976 118028
- 104968 118022 100704 115896 123486 105312 100656 115868 79424 70176 118172 115854
- 79392 105240 100620 79376 70152 79368 70496 100792 115934 79712 70448 118238
- 79664 105372 100750 79640 70412 79628 70584 100830 79800 70556 79772 70542
- 70622 79838 122176 126640 128860 122144 126616 128846 122128 126604 122120 126598
- 122116 104768 117936 124508 113472 104736 126684 124494 113440 122264 126670 113424
- 104712 117894 113416 122246 104706 69952 100528 115804 78656 69920 100504 115790
- 96064 78624 104856 117966 96032 113560 122318 100486 96016 78600 104838 96008
- 69890 70064 100572 78768 70040 100558 96176 78744 104910 96152 113614 70022
- 78726 70108 78812 70094 96220 78798 122016 126552 128814 122000 126540 121992
- 126534 121988 121986 104608 117848 124462 113056 104592 126574 113040 122060 117830
- 113032 104580 113028 104578 113026 69792 100440 115758 78240 69776 100428 95136
- 78224 104652 100422 95120 113100 69764 95112 78212 69762 78210 69848 100462
- 78296 69836 95192 78284 69830 95180 78278 69870 95214 121936 126508 121928
- 126502 121924 121922 104528 117804 112848 104520 117798 112840 121958 112836 104514
- 112834 69712 100396 78032 69704 100390 94672 78024 104550 94664 112870 69698
- 94660 78018 94658 78060 94700 94694 126486 121890 117782 104484 104482 69672
- 77928 94440 69666 77922 99680 68160 99632 68128 99608 115342 68112 99596
- 68104 99590 68448 99768 115422 68400 99740 68376 99726 68364 68358 68536
- 99806 68508 68494 68574 101696 116400 123740 101664 116376 101648 116364 101640
- 116358 101636 67904 99504 115292 72512 67872 116444 115278 72480 101784 116430
- 72464 67848 99462 72456 101766 67842 68016 99548 72624 67992 99534 72600
- 101838 72588 67974 68060 72668 68046 72654 118432 124760 127918 118416 124748
- 118408 124742 118404 118402 101536 116312 105888 101520 116300 105872 118476 116294
- 105864 101508 105860 101506 105858 67744 99416 72096 67728 116334 80800 72080
- 101580 99398 80784 105932 67716 80776 72068 67714 72066 67800 99438 72152
- 67788 80856 72140 67782 80844 72134 67822 72174 80878 126800 128940 126792
- 128934 126788 126786 118352 124716 122576 126828 124710 122568 126822 122564 118338
- 122562 101456 116268 105680 101448 116262 114128 105672 118374 114120 122598 101442
- 114116 105666 114114 67664 99372 71888 67656 99366 80336 71880 101478 97232
- 80328 105702 67650 97224 114150 71874 97220 67692 71916 67686 80364 71910
- 97260 80358 97254 126760 128918 126756 126754 118312 124694 122472 126774 122468
- 118306 122466 101416 116246 105576 101412 113896 105572 101410 113892 105570 113890
- 67624 99350 71784 101430 80104 71780 67618 96744 80100 71778 96740 80098
- 96738 71798 96758 126738 122420 122418 105524 113780 113778 71732 79988 96500
- 96498 66880 66848 98968 66832 66824 66820 66992 66968 66956 66950 67036
- 67022 100000 99984 115532 99976 115526 99972 99970 66720 98904 69024 100056
- 98892 69008 100044 69000 100038 68996 66690 68994 66776 98926 69080 100078
- 69068 66758 69062 66798 69102 116560 116552 116548 116546 99920 102096 116588
- 115494 102088 116582 102084 99906 102082 66640 68816 66632 98854 73168 68808
- 66628 73160 68804 66626 73156 68802 66668 68844 66662 73196 68838 73190
- 124840 124836 124834 116520 118632 124854 118628 116514 118626 99880 115478 101992
- 116534 106216 101988 99874 106212 101986 106210 66600 98838 68712 99894 72936
- 68708 66594 81384 72932 68706 81380 72930 66614 68726 72950 81398 128980
- 128978 124820 126900 124818 126898 116500 118580 116498 122740 118578 122738 99860
- 101940 99858 106100 101938 114420
- ] [
- 128352 129720 125504 128304 129692 125472 128280 129678 125456 128268 125448 128262
- 125444 125792 128440 129758 120384 125744 128412 120352 125720 128398 120336 125708
- 120328 125702 120324 120672 125880 128478 110144 120624 125852 110112 120600 125838
- 110096 120588 110088 120582 110084 110432 120760 125918 89664 110384 120732 89632
- 110360 120718 89616 110348 89608 110342 89952 110520 120798 89904 110492 89880
- 110478 89868 90040 110558 90012 89998 125248 128176 129628 125216 128152 129614
- 125200 128140 125192 128134 125188 125186 119616 125360 128220 119584 125336 128206
- 119568 125324 119560 125318 119556 119554 108352 119728 125404 108320 119704 125390
- 108304 119692 108296 119686 108292 108290 85824 108464 119772 85792 108440 119758
- 85776 108428 85768 108422 85764 85936 108508 85912 108494 85900 85894 85980
- 85966 125088 128088 129582 125072 128076 125064 128070 125060 125058 119200 125144
- 128110 119184 125132 119176 125126 119172 119170 107424 119256 125166 107408 119244
- 107400 119238 107396 107394 83872 107480 119278 83856 107468 83848 107462 83844
- 83842 83928 107502 83916 83910 83950 125008 128044 125000 128038 124996 124994
- 118992 125036 118984 125030 118980 118978 106960 119020 106952 119014 106948 106946
- 82896 106988 82888 106982 82884 82882 82924 82918 124968 128022 124964 124962
- 118888 124982 118884 118882 106728 118902 106724 106722 82408 106742 82404 82402
- 124948 124946 118836 118834 106612 106610 124224 127664 129372 124192 127640 129358
- 124176 127628 124168 127622 124164 124162 117568 124336 127708 117536 124312 127694
- 117520 124300 117512 124294 117508 117506 104256 117680 124380 104224 117656 124366
- 104208 117644 104200 117638 104196 104194 77632 104368 117724 77600 104344 117710
- 77584 104332 77576 104326 77572 77744 104412 77720 104398 77708 77702 77788
- 77774 128672 129880 93168 128656 129868 92664 128648 129862 92412 128644 128642
- 124064 127576 129326 126368 124048 129902 126352 128716 127558 126344 124036 126340
- 124034 126338 117152 124120 127598 121760 117136 124108 121744 126412 124102 121736
- 117124 121732 117122 121730 103328 117208 124142 112544 103312 117196 112528 121804
- 117190 112520 103300 112516 103298 112514 75680 103384 117230 94112 75664 103372
- 94096 112588 103366 94088 75652 94084 75650 75736 103406 94168 75724 94156
- 75718 94150 75758 128592 129836 91640 128584 129830 91388 128580 91262 128578
- 123984 127532 126160 123976 127526 126152 128614 126148 123970 126146 116944 124012
- 121296 116936 124006 121288 126182 121284 116930 121282 102864 116972 111568 102856
- 116966 111560 121318 111556 102850 111554 74704 102892 92112 74696 102886 92104
- 111590 92100 74690 92098 74732 92140 74726 92134 128552 129814 90876 128548
- 90750 128546 123944 127510 126056 128566 126052 123938 126050 116840 123958 121064
- 116836 121060 116834 121058 102632 116854 111080 121078 111076 102626 111074 74216
- 102646 91112 74212 91108 74210 91106 74230 91126 128532 90494 128530 123924
- 126004 123922 126002 116788 120948 116786 120946 102516 110836 102514 110834 73972
- 90612 73970 90610 128522 123914 125978 116762 120890 102458 110714 123552 127320
- 129198 123536 127308 123528 127302 123524 123522 116128 123608 127342 116112 123596
- 116104 123590 116100 116098 101280 116184 123630 101264 116172 101256 116166 101252
- 101250 71584 101336 116206 71568 101324 71560 101318 71556 71554 71640 101358
- 71628 71622 71662 127824 129452 79352 127816 129446 79100 127812 78974 127810
- 123472 127276 124624 123464 127270 124616 127846 124612 123458 124610 115920 123500
- 118224 115912 123494 118216 124646 118212 115906 118210 100816 115948 105424 100808
- 115942 105416 118246 105412 100802 105410 70608 100844 79824 70600 100838 79816
- 105446 79812 70594 79810 70636 79852 70630 79846 129960 95728 113404 129956
- 95480 113278 129954 95356 95294 127784 129430 78588 128872 129974 95996 78462
- 128868 127778 95870 128866 123432 127254 124520 123428 126696 128886 123426 126692
- 124514 126690 115816 123446 117992 115812 122344 117988 115810 122340 117986 122338
- 100584 115830 104936 100580 113640 104932 100578 113636 104930 113634 70120 100598
- 78824 70116 96232 78820 70114 96228 78818 96226 70134 78838 129940 94968
- 113022 129938 94844 94782 127764 78206 128820 127762 95102 128818 123412 124468
- 123410 126580 124466 126578 115764 117876 115762 122100 117874 122098 100468 104692
- 100466 113140 104690 113138 69876 78324 69874 95220 78322 95218 129930 94588
- 94526 127754 128794 123402 124442 126522 115738 117818 121978 100410 104570 112890
- 69754 78074 94714 94398 123216 127148 123208 127142 123204 123202 115408 123244
- 115400 123238 115396 115394 99792 115436 99784 115430 99780 99778 68560 99820
- 68552 99814 68548 68546 68588 68582 127400 129238 72444 127396 72318 127394
- 123176 127126 123752 123172 123748 123170 123746 115304 123190 116456 115300 116452
- 115298 116450 99560 115318 101864 99556 101860 99554 101858 68072 99574 72680
- 68068 72676 68066 72674 68086 72694 129492 80632 105854 129490 80508 80446
- 127380 72062 127924 127378 80766 127922 123156 123700 123154 124788 123698 124786
- 115252 116340 115250 118516 116338 118514 99444 101620 99442 105972 101618 105970
- 67828 72180 67826 80884 72178 80882 97008 114044 96888 113982 96828 96798
- 129482 80252 130010 97148 80190 97086 127370 127898 128954 123146 123674 124730
- 126842 115226 116282 118394 122618 99386 101498 105722 114170 67706 71930 80378
- 96632 113854 96572 96542 80062 96702 96444 96414 96350 123048 123044 123042
- 115048 123062 115044 115042 99048 115062 99044 99042 67048 99062 67044 67042
- 67062 127188 68990 127186 123028 123316 123026 123314 114996 115572 114994 115570
- 98932 100084 98930 100082 66804 69108 66802 69106 129258 73084 73022 127178
- 127450 123018 123290 123834 114970 115514 116602 98874 99962 102138 66682 68858
- 73210 81272 106174 81212 81182 72894 81342 97648 114364 97592 114334 97564
- 97550 81084 97724 81054 97694 97464 114270 97436 97422 80990 97502 97372
- 97358 97326 114868 114866 98676 98674 66292 66290 123098 114842 115130 98618
- 99194 66170 67322 69310 73404 73374 81592 106334 81564 81550 73310 81630
- 97968 114524 97944 114510 97932 97926 81500 98012 81486 97998 97880 114478
- 97868 97862 81454 97902 97836 97830 69470 73564 73550 81752 106414 81740
- 81734 73518 81774 81708 81702
- ] [
- 109536 120312 86976 109040 120060 86496 108792 119934 86256 108668 86136 129744
- 89056 110072 129736 88560 109820 129732 88312 109694 129730 88188 128464 129772
- 89592 128456 129766 89340 128452 89214 128450 125904 128492 125896 128486 125892
- 125890 120784 125932 120776 125926 120772 120770 110544 120812 110536 120806 110532
- 84928 108016 119548 84448 107768 119422 84208 107644 84088 107582 84028 129640
- 85488 108284 129636 85240 108158 129634 85116 85054 128232 129654 85756 128228
- 85630 128226 125416 128246 125412 125410 119784 125430 119780 119778 108520 119798
- 108516 108514 83424 107256 119166 83184 107132 83064 107070 83004 82974 129588
- 83704 107390 129586 83580 83518 128116 83838 128114 125172 125170 119284 119282
- 107508 107506 82672 106876 82552 106814 82492 82462 129562 82812 82750 128058
- 125050 119034 82296 106686 82236 82206 82366 82108 82078 76736 103920 117500
- 76256 103672 117374 76016 103548 75896 103486 75836 129384 77296 104188 129380
- 77048 104062 129378 76924 76862 127720 129398 77564 127716 77438 127714 124392
- 127734 124388 124386 117736 124406 117732 117730 104424 117750 104420 104418 112096
- 121592 126334 92608 111856 121468 92384 111736 121406 92272 111676 92216 111646
- 92188 75232 103160 117118 93664 74992 103036 93424 112252 102974 93304 74812
- 93244 74782 93214 129332 75512 103294 129908 129330 93944 75388 129906 93820
- 75326 93758 127604 75646 128756 127602 94078 128754 124148 126452 124146 126450
- 117236 121844 117234 121842 103412 103410 91584 111344 121212 91360 111224 121150
- 91248 111164 91192 111134 91164 91150 74480 102780 91888 74360 102718 91768
- 111422 91708 74270 91678 129306 74620 129850 92028 74558 91966 127546 128634
- 124026 126202 116986 121338 102906 90848 110968 121022 90736 110908 90680 110878
- 90652 90638 74104 102590 91000 74044 90940 74014 90910 74174 91070 90480
- 110780 90424 110750 90396 90382 73916 90556 73886 90526 90296 110686 90268
- 90254 73822 90334 90204 90190 71136 101112 116094 70896 100988 70776 100926
- 70716 70686 129204 71416 101246 129202 71292 71230 127348 71550 127346 123636
- 123634 116212 116210 101364 101362 79296 105200 118140 79072 105080 118078 78960
- 105020 78904 104990 78876 78862 70384 100732 79600 70264 100670 79480 105278
- 79420 70174 79390 129178 70524 129466 79740 70462 79678 127290 127866 123514
- 124666 115962 118266 100858 113376 122232 126654 95424 113264 122172 95328 113208
- 122142 95280 113180 95256 113166 95244 78560 104824 117950 95968 78448 104764
- 95856 113468 104734 95800 78364 95772 78350 95758 70008 100542 78712 69948
- 96120 78652 69918 96060 78622 96030 70078 78782 96190 94912 113008 122044
- 94816 112952 122014 94768 112924 94744 112910 94732 94726 78192 104636 95088
- 78136 104606 95032 113054 95004 78094 94990 69820 78268 69790 95164 78238
- 95134 94560 112824 121950 94512 112796 94488 112782 94476 94470 78008 104542
- 94648 77980 94620 77966 94606 69726 78046 94686 94384 112732 94360 112718
- 94348 94342 77916 94428 77902 94414 94296 112686 94284 94278 77870 94318
- 94252 94246 68336 99708 68216 99646 68156 68126 68476 68414 127162 123258
- 115450 99834 72416 101752 116414 72304 101692 72248 101662 72220 72206 67960
- 99518 72568 67900 72508 67870 72478 68030 72638 80576 105840 118460 80480
- 105784 118430 80432 105756 80408 105742 80396 80390 72048 101564 80752 71992
- 101534 80696 71964 80668 71950 80654 67772 72124 67742 80828 72094 80798
- 114016 122552 126814 96832 113968 122524 96800 113944 122510 96784 113932 96776
- 113926 96772 80224 105656 118366 97120 80176 105628 97072 114076 105614 97048
- 80140 97036 80134 97030 71864 101470 80312 71836 97208 80284 71822 97180
- 80270 97166 67678 71902 80350 97246 96576 113840 122460 96544 113816 122446
- 96528 113804 96520 113798 96516 96514 80048 105564 96688 80024 105550 96664
- 113870 96652 80006 96646 71772 80092 71758 96732 80078 96718 96416 113752
- 122414 96400 113740 96392 113734 96388 96386 79960 105518 96472 79948 96460
- 79942 96454 71726 79982 96494 96336 113708 96328 113702 96324 96322 79916
- 96364 79910 96358 96296 113686 96292 96290 79894 96310 66936 99006 66876
- 66846 67006 68976 100028 68920 99998 68892 68878 66748 69052 66718 69022
- 73056 102072 116574 73008 102044 72984 102030 72972 72966 68792 99934 73144
- 68764 73116 68750 73102 66654 68830 73182 81216 106160 118620 81184 106136
- 118606 81168 106124 81160 106118 81156 81154 72880 101980 81328 72856 101966
- 81304 106190 81292 72838 81286 68700 72924 68686 81372 72910 81358 114336
- 122712 126894 114320 122700 114312 122694 114308 114306 81056 106072 118574 97696
- 81040 106060 97680 114380 106054 97672 81028 97668 81026 97666 72792 101934
- 81112 72780 97752 81100 72774 97740 81094 97734 68654 72814 81134 97774
- 114256 122668 114248 122662 114244 114242 80976 106028 97488 80968 106022 97480
- 114278 97476 80962 97474 72748 81004 72742 97516 80998 97510 114216 122646
- 114212 114210 80936 106006 97384 80932 97380 80930 97378 72726 80950 97398
- 114196 114194 80916 97332 80914 97330 66236 66206 67256 99166 67228 67214
- 66142 67294 69296 100188 69272 100174 69260 69254 67164 69340 67150 69326
- 73376 102232 116654 73360 102220 73352 102214 73348 73346 69208 100142 73432
- 102254 73420 69190 73414 67118 69230 73454 106320 118700 106312 118694 106308
- 106306 73296 102188 81616 106348 102182 81608 73284 81604 73282 81602 69164
- 73324 69158 81644 73318 81638 122792 126934 122788 122786 106280 118678 114536
- 106276 114532 106274 114530 73256 102166 81512 73252 98024 81508 73250 98020
- 81506 98018 69142 73270 81526 98038 122772 122770 106260 114484 106258 114482
- 73236 81460 73234 97908 81458 97906 122762 106250 114458 73226 81434 97850
- 66396 66382 67416 99246 67404 67398 66350 67438 69456 100268 69448 100262
- 69444 69442 67372 69484 67366 69478 102312 116694 102308 102306 69416 100246
- 73576 102326 73572 69410 73570 67350 69430 73590 118740 118738 102292 106420
- 102290 106418 69396 73524 69394 81780 73522 81778 118730 102282 106394 69386
- 73498 81722 66476 66470 67496 99286 67492 67490 66454 67510 100308 100306
- 67476 69556 67474 69554 116714
- ]
- ] def
-
- % Row address patterns
- /raps [
- [ % Left and right
- 802 930 946 818 882 890 826 954 922 986 970 906 778
- 794 786 914 978 982 980 916 948 932 934 942 940 936
- 808 812 814 806 822 950 918 790 788 820 884 868 870
- 878 876 872 840 856 860 862 846 844 836 838 834 866
- ] [ % Centre
- 718 590 622 558 550 566 534 530 538 570 562 546 610
- 626 634 762 754 758 630 628 612 614 582 578 706 738
- 742 740 748 620 556 552 616 744 712 716 708 710 646
- 654 652 668 664 696 688 656 720 592 600 604 732 734
- ]
- ] def
-
- % Return the 17 bits for a codeword in a given cluster
- /cwtobits {
- clusters exch get exch get /v exch def
- [ 17 {0} repeat v 2 17 string cvrs {48 sub} forall ]
- dup length 17 sub 17 getinterval
- } bind def
-
- % Return the 10 bits for a row address pattern
- /raptobits {
- raps exch get exch get /v exch def
- [ 10 {0} repeat v 2 10 string cvrs {48 sub} forall ]
- dup length 10 sub 10 getinterval
- } bind def
-
- % Populate bitmap for the image
- /rwid [38 55 82 99] c 1 sub get def
- c 3 eq cca and {/rwid 72 def} if
- /pixs rwid r mul array def
-
- 0 1 r 1 sub {
- /i exch def
- /clst i rapl add 1 sub 3 mod def
- pixs rwid i mul [
- c 1 eq {
- i rapl add 1 sub 52 mod 0 raptobits aload pop
- cws i get clst cwtobits aload pop
- i rapr add 1 sub 52 mod 0 raptobits aload pop
- } if
- c 2 eq {
- i rapl add 1 sub 52 mod 0 raptobits aload pop
- cws i 2 mul get clst cwtobits aload pop
- cws i 2 mul 1 add get clst cwtobits aload pop
- i rapr add 1 sub 52 mod 0 raptobits aload pop
- } if
- c 3 eq {
- cca not {
- i rapl add 1 sub 52 mod 0 raptobits aload pop
- } if
- cws i 3 mul get clst cwtobits aload pop
- i rapc add 1 sub 52 mod 1 raptobits aload pop
- cws i 3 mul 1 add get clst cwtobits aload pop
- cws i 3 mul 2 add get clst cwtobits aload pop
- i rapr add 1 sub 52 mod 0 raptobits aload pop
- } if
- c 4 eq {
- i rapl add 1 sub 52 mod 0 raptobits aload pop
- cws i 4 mul get clst cwtobits aload pop
- cws i 4 mul 1 add get clst cwtobits aload pop
- i rapc add 1 sub 52 mod 1 raptobits aload pop
- cws i 4 mul 2 add get clst cwtobits aload pop
- cws i 4 mul 3 add get clst cwtobits aload pop
- i rapr add 1 sub 52 mod 0 raptobits aload pop
- } if
- 1
- ] putinterval
- } for
-
- % Return the arguments
- <<
- /ren //renmatrix
- /pixs pixs
- /pixx rwid
- /pixy r
- /height r 72 div rowmult mul
- /width rwid 72 div
- /opt options
- >>
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/micropdf417 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp micropdf417 0.0 0 0 0
+%%BeginData: 333 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 05YE5E c5 o-Ai)5 $H\
+`B!23JD%DfBf4Df 0WZ5* @]T @UX : eDe *FB 5*@ ]TA8c@ -A 9)+&+D ,%u
+F(LLj04Sp:F_u#; L]ESo 061 uTF ,0 gZ 1G< ceG AVJ=FG L! ]1G<6J @3B
+/jCia0N1G<6J@N] 8kCi a0N 1G <c WG9 CL+ Cia 0N1G
+<]UEcYe7AmoLsAW eifE - ,f 4D KCu E06 ;5UB l7R*H
+#R>X4aVtcOu8C3D fBf4Df 0WC P ,i2 'C ia0N 4aW >WI?IQm30I a6V33Qn!BlU
+*FE2M8P!+/T/Wr; \FcnqO 1OX V 5/Tc #UAW eit P#ZpnAWe*t 3A5;iFD5Z2F
+-8_M1OYEcDfBf4D f0WCOu %NL 8M=R lCis T4F !+t2CisT4F -8);1G<ceGB
+4mIDg-8c/<VeBEc 6/=F_ l.BE c6/=F _l/_ 09S ,$@ps^;Eaa /7FE2M8Ou%N
+L<,c8dF(K\OD0'> 4@UX: eDe*F B@ZmR N1G <L!!0T-I@< ,jrA7^+J!FC
+qKH]g@*F(^Y"C6C cDH'2WO Oo^@>O o[4NP !5$ bP')pIL]E5 5P"_#iD0'?Q
+5&,lSP,XU.P'E-LP%'4LP,X6>P!5%&I=%,:D0'?Q5&-6EP'N4"C6ATNC6CcD1G<3GEas#uAKYi
+2B8?P&P"_#pP!FGY<IL$AI?IQM@<[&OA79RiGB4m9@<,jrA7^p5OpR:-0564BOu"b+L]ESoHYF
+U3@<,jrA7^p5P!+/T5^eep04T2K@UX:eDe*E%BnueQ!Jgi@9Tgri1Lsp9@s;u:C*7#1P'AWo+D
+HW7Oo^_%05;VEL]NY>Ou%NLAM7S&FCTN9+Cno&@s<!M!,@ZjOu%N504J@1Ch7K,@UX:eDe*FB@
+ZiNV@<-0qDMSL[C5;kQ4aShm@<?"'F!+q#Ebo<)L^'#?L]rrXL]NY>OpR:-A79RiGB8Q?L'*s/
+G^XolA79RiGB4m9@<-0qDMSL[;MYL>CgpgnCh7L?#*N_a!Jgc>!KmbP1Lsp9@s<!M!/:T0P'DD
+<<JUX2!FfJXCh7L?#*Ml?!KsF/056S5Ou"b.F(025>9IB`Eas#uAKY]C#*NeY"-Q?)I?I0-Ou"
+b.F(986>9Id(@WR\6P')pOL&h:;Cm"g^5(in:!!&0uOo^@@H]g@C",)hPP!4U&KT]5]P(R&'1G
+<Qc@WNYr+C\c"@rGmh+DHW9P&,pVOo^@@P"^4NP"ArB1G<Qc@ribs+Dc+.F-6TfFcnqC!<A:!O
+o^_0KE)#Q!0V/]!Jgi)OuS0uKT^)55)'/mP#?^kK3aWr04T3IL]rqJOu$oq@rmG+P"TY5@rmG+
+P"UN14HaND!Fp=pL]iM8P$!G@KT^)5G_Q<RP#?+;@rmG,P"Ur=D0'3.L]ET2L&uphCm"g9F(99
+I!Kp*1!BcN]Oo]':F,0pS!g6Z?",)hPP'D]`KT]5LF(99I!g63>!GumfF,0gZ98F:FCm"g9F(9
+9I!Kp*1!eHMNOo]E@@rmG-P"UN14HaND!Fp=pL]WA6P$!G@KT^)5G_Q<RP#?+;@rmG.P"Ur=D0
+'3.L]NZ3L_Q"gOo]E@@rmG-P"UN2JWai4!Fp=pL]N;5P$!G@KT^)5G_Q<RP#?.<@rmG-P"UTFP
+&-9^@s<!M!/L`5s,r.l",)hPP'CMGFCTN9+DHW8P&,pTOo]':F-:fsP"76HASiQ!@<-0qDMSL[
+C6CAnASm5'P&5PV@<?"'F!,"%FCTN9P%&HCD3Cl&+C\c"@rGmh+C\c"Ch7K,Eb0*NWH)QeP"^4
+NP"ArBH$tiT@q/tp04\L5@s;u:>D<6IA79RiGB8oKP'(&n1OYEcI?IS`D.Rg0Bk)3,>9I.+!Jh
+,>#D`D:!/Lqe+BsX&L^o4GL^8e:L^79/>DN<9&Vp[J,_uGV,[DNsL]N;GL^8eML]E5E>p*@-!J
+hSK#`&eC!/M4m+BsX&L`D3VL`)!KL`p%H>DN?:#`&bB!Jg`3!F6gPL]WA?L^Ak<L]E5;>p*@-!
+f.>B$&AkC!/Lnd+BsX'L_5FMLa7cVLa67K>DN?:'Sm-Q'8QXE'3u_bL]WAKL^f.HL]E5C>p*@-
+!f.bN%u;0\!/Mk*+BsX(L^&YDL]N;4L]Ld(>DNB;#`&tH#D`V@#@/HVL]`G?L_,@QL_#:P>p*@
+-",IAA&r7E])2K/9+BsX(L_#:VLa@j'La?=L>DNB;'SmZ`!Jh>D+^H3pL]`GOL`hKSL^AkL>p*
+@-",J(U-AWCm*Jc"I+BsX(LaIp/L_#:`LbE$V>DNB;/;Q';!JhVL0jPo+L]iM:L^8eiL_GRp>p
+*@-"Gd8<%#=q?!Jgb^+BsX)L^8eHL^/_@L^.3.>DNE<$A]7L%u:aP%p^;^L]iMBL_>L]L`)!d>
+p*@-"GdSE'o4/l-&<jQ+BsX)L_PX`L]N;DL`p%H>DNE<)MfMl!Jh&<&R?M`L]iMVLaIomL`M9t
+>p*@-"GeC\/;Ogm+,DRU+BsX)Lb+?;L]N;LLbW0X?'6us@q/qaATVs,@ribs+BsX'L]rS;LaRu
+YL_F&:>DN?:#)ED<!Jg`3+^H3pL]WA;L]rSWL]E5>>p*@-!f.,<"c*G?!/N%/+BsX'L^AkAL^o
+4@Lb;sU>DN?:$A\nB.u41](L8.fL]WA@L^/_ML]E5f>p*@-",I)9"GdGA.u5!I+BsX(L]rS<L]
+N;TL^dW4>DNB;#)EJ>"c+I\&R?M`L]`G<L^/_HLbFQ'>p*@-",I5=#Da+N!Jhn)+BsX)L]`G9L
+a\&nLbrB[>DNE<"Gd5;.u5!t"'m$RL]iM;L^&YfL`2'R>p*@-"Gd8<#DaR[%Yu`C+BsX)L^/_A
+L`M9XLacUP?'7!R@ps^;D.Rg0Bk)3,@q/qaATVs,@rmehI?IP_F`MDEF!,LAGB8p'06LcCCi^_
+/DesQ5DKCss0564BOu%G<D'3\,FE2)*F!,1[99M(a@j#WE!0U!<1G<bkD284U99M(aCERJM!g6
+3>1G<cWE,6Y6L]`f5Ou"b3@;o^!D28=X99M(aEa`p-+Dlo<P"Uro05b9DF!,KGA!1YDP,XU#05
+kW7Gp%3LF_-^lA79RiGB8pVDI[m3P#-KYDeid,+D,%uF(LLjI?IQPEc6/CL]ETTF`MDEF!,LdD
+3>$K05kW7Gp$^-Cia0N1OYEcF^o?+F,0gZD09?,Ci^_/P&6?bHS9;Q@<iu-@;L!rOu%NL<,ZP\
+H$b]>I?IP_Bcq,G!KmJH1OYEt05VhB@<?"'F-:!q1G<Vg@j#fTCho35Ou"b$GB4m:+EEW]L]NY
+>OpR:-@s<!M!+]M[@s<!WH"2&>+Di6*+Dr<=P,We_",))cK3aXc@s;u:DBN.+CO:j;I?K5=!*t
+b5062,BCi<r/>DN<7"/("(3/@["Ck`%cP%oE.K3aWr062,MDeFe,Too_F1Pc'f!JU]LH]g@/F(
+&m'B9GHA99MJZF)5c-L]`G6P)#3FI?I,SEcZ2?De+3N!g4FW!0V2^5)93%D3>$KEcZ&8B9GHA9
+9MJZF)5c-P!5%%Oo^:>TTX&1F(&m'B9GHA97;/MFcpm'!.C#1I?G)'1G<6VAS,Oq+BsX&CO:j;
+I?K4gOu%mpL]M:<056S5Ou$TdAS,Oq+DDs.De3NmF!,1Q!KsFF99OO6L]N[<M#W83HS9,s5*@^
+3De3NmF!,3?@rGpjAof)0L]N[<P"T;'AS,Oq+DR'4EcYZ*DeC2,P"Th:E,ol-Oo^:>Tos/RG^Y
+`G@rGpjAoib.@rGpjAoib.P"Th:@;Kjp+DI!3EcZ2?De,#UI?I,S@rGpjAof))De3NmF,0g+De
+3NmF-:!g!KsFF9Th2ADe3NmF-:!g!KsF<reLQ$@rGpjAoj,!L]W_WP"UN3ToqU&WKMLSP":B/L
+]MCL!KsF/06E@@@s<!W5*AQKGB4mEP"Ur=L'+-4C6CB/!/LYkL]N[<HS9,s5*@^3GB4mE+DR&?
+@s;u:DBN\W!Jgc>!Kp*1"/0fZ@rGpjAof)1+DR(=L]N[<P"UsSL'+-4C6GQZ!JU]MP%p/)I?I-
+LP"9JH!H'#qOo]om3+I/RP!4U&Tjr:fL]rV7P)#2nP,X0<Tos/RG^Y`G04T3I+CfV:L]Cq/F-:
+!g!KsFF9Th1b@r-:/FCfK6+BosmKE)&'^k;[glL9H,!VLhn!!1U-KE)&<G_?%tofe$/!N<ee!!
+1SgKE)%O@"\L\:dB[6!N7]*!!,n=KE)%T^k;[gf'n=m!UG,d!!01ZKE)&(G_?%tlTTt%!Ed-j!
+!00?KE)$T@"\L\?,2*n!NtpF!!1]!KE)$Xi.M(2Y'>U"!S9Mg!!->DKE)%U4G3\8?LWUJ!O$m(
+!!-DNKE)%V5(in:?[RM,!VQ;B!!1O+KE)&;G_?%toY,tY!MmMa!!1MeKE)&;4G3\8UgSiU!R`r
+\!!,VUKE)%K0SBE,dN!o?!D">d!!/l4KE)$D&;1#aVVm+-!Rl:H!!2>uKE)$H^k;[gVJq1g!Rj
+/a!!,c$KE)%M3.q84diO/B!DG2#!!/r:KE)$Ji.M(2Vg*jp!Rnc9!!,i6KE)%N4G3\8:,mn,!N
+-ul!!,l?KE)%N^4ZIe:HX:1!Dabi!!/h0KE)&#E.e2lke)QK!MWtT!!1J,KE)&:SqI(E6pQD*!
+MV9$!!1IeKE)$@+G9^qU)8O`!CRKP!!,InKE)$B^k;[gUMtkd!R\Q5!!,PsKE)%J3.q84d@Q!k
+!Cebr!!/i7KE)$B(k_ki7LXqM!Cq*^!!/k-KE)$C3.q84URm,=!Cn,_!!,U&KE)%H@"\L\d("`
+/!U*jC!!,DOKE)%H0SBE,d%#ah!C@o^!!/c1KE)&"Ne@B564eeM!MKpT!!,ClKE)%H#(usW6XY
+QI!MR#V!!1I'KE)$?0SBE,Tq$c9!CI]W!!/dRKE)$?%"nT]6O&2D!MSA'!!,HIKE)$=5_K+<TW
+j(L!RP))!!,A.KE)%GR"PG?cq]5o!C79M!!/aOKE)$=#_W0YTSA+"!C6jA!!,BiKE)$=R"PG?6
+&^Hs!C3<2!!1G!KE)%G9S<BHTLOS7!C26i!!17#KE)&7G_?%to"KbW!L1BQ!!15]KE)&74G3\8
+P[K.E!QmBT!!21&KE)$$5_K+<PV@aj!@T(D!!/DDKE)%rG_?%tjh?BJ!A)$>!!/C)KE)%r4G3\
+8/7=,2!L>]u!!+W)KE)$((k_ki0&VB_!LJ%a!!19WKE)$*E.e2lQTTp$!A6?b!!+\lKE)$+G_?
+ %tQbJ+Q!A?Qg!!+aeKE)&,^k;[gm;R^Y!VX0Z!!1e]KE)&?3.q84p7?p;!OP+F!!1e-KE)&?*
+/":mZlk#%!SSBD!!2HsKE)%[&;1#ag'iW7!Kt6O!!12\KE)&6]S$7c[_ROr!KpiD!!12$KE)&6
+SqI(E[U=ag!S]Se!!2JYKE)$h5_K+<,Tqa?!Kn:Q!!11OKE)$h+G9^q[MXYt!Gi=#!!+F^KE)%
+:E.e2lah39,!H,]+!!+ESKE)%:3.q84ae".c!H):u!!0PgKE)&-SqI(EDD6_D!@AY:!!-sSKE)
+$#E.e2lPIuPK!H2q1!!+H,KE)%:SqI(ED`ECM!OnYR!!.!XKE)$#]S$7cDnL`'!@OIl!!.#0KE
+)&+@"\L\m'q]K!VTiQ!!0AjKE)&+0SBE,m$r_/!O<i$!!1aiKE)&>Ne@B5Z4MZh!SIm7!!0A2K
+E)%Y"G?aUO^NhB!Q_d(!!2.eKE)%Z@"\L\OYDFg!Q^da!!-[sKE)#s+G9^qfpm]q!Q^:S!!-[S
+KE)#s&;1#aOUQmC!G2mr!!0D7KE)%8#(usW+p<Q!!@)!*!!/4lKE)%ohLkk0B4-Am!@':O!!/4
+PKE)$c0SBE,Z^c[K!KiCq!!-^LKE)#t%"nT],6if$!@,+-!!/5=KE)$c\:ah_,FjDe!G@pU!!+
+=)KE)$cNe@B5BAS:A!O4nC!!1`VKE)&>>_E(XYon]"!SEcm!!2F]KE)%X&;1#afSkI`!O2o`!!
+1`,KE)%X"G?aUYl]RY!?j^]!!/1cKE)%o>_E(X@mG\I!?iS=!!/1KKE)%o:4rTJ@j$F)!O8#F!
+!1`tKE)$_&;1#a+UE`$!K`%h!!-R8KE)%XL4fO-@g%Gb!?n\#!!/2:KE)$_Y_2uW+ddo_!KbT[
+!!-SsKE)%Xc@c/u@uQ'@!?m2N!!-SaKE)$_gk5Y.A'T`-!O/5M!!1_SKE)&>/qa3*Y`OM<!SC)
+!!!0<[KE)&*7YCaBY_7Z0!O.0/!!+48KE)%7=G-YTa=`,G!F_XS!!+4(KE)%79S<BH@??-B!O0
+e$!!/0NKE)$]LkGa/+G>CJ!F^Y7!!+3oKE)#qfRs5*@G$55!Fa3*!!-NJKE)&*/;+!(fHu7O!O
++nD!!/04KE)#q8;$sD@*"!$!FWj!!!-KEKE)%1^k;[g`GgJ1!TLbF!!.sbKE)%l3.q84'L7<O!
+K&Ra!!1%YKE)#e+G9^qMAV!H!>H)u!!*c>KE)#g^k;[gMf==L!QD^)!!*jCKE)%23.q84`L___
+!>[AB!!.utKE)#g(k_ki((>ir!>f^.!!/"jKE)#h3.q84Mk5S%!>c`/!!*nKKE)#hSqI(Ec!Z2
+)!TpnF!!2[tKE)%A5_K+<bqOeN!Too*!!/N2KE)%t(k_kik)P)p!LaRQ!!1=QKE)%A#_W0Ybm&
+h$!Jt3;!!1$JKE)&4?A&:ZRp^mL!JrL`!!1$.KE)$25_K+<&g2i-!R7-f!!1#uKE)$2+G9^qRi
+$eY!Jq5<!!+thKE)#c#_W0Y2@+s9!>Ajo!!.qdKE)%khLkk02dh:=!>@/?!!1@$KE)$30SBE,S
+",-3!Juhi!!,"qKE)#d%"nT]2[k?>!>Dtr!!.r5KE)$3\:ah_':a^U!B6O%!!*anKE)#dhLkk0
+2r92f!Sp"o!!2MlKE)&I>_E(Xh&q@N!Uc>.!!2ghKE)&/&;1#amYlf!!Sn$7!!2MBKE)&/"G?a
+UR6ZE*!R.d$!!24eKE)%b5_K+<R37._!Ue`r!!24WKE)%b+G9^qh3`iq!Ue6d!!0\CKE)%@#_W
+0Yb_CcN!P8Vj!!1o1KE)%@!e^OS&O;!L!Jmt5!!1#CKE)$/5_K+<&Kl`,!Jm+r!!1#5KE)$s5_
+K+<1E_>N!L]=.!!1<hKE)$s+G9^q]9n6O!Su%S!!.n1KE)$s&;1#a1C/X6!L\[q!!.9LKE)#b!
+e^OS&[6og!JoNa!!+m[KE)#bR"PG?LsCYR!I(c$!!+mCKE)%@c@c/uGF4$`!P?X1!!*[dKE)$/
+L4fO-&_r$>!AiMa!!*\WKE)$sgk5Y.1X:XR!Sj?$!!2LiKE)&I/qa3*glR0h!U`X7!!1l2KE)&
+@7YCaBgk:=\!Si9[!!/I[KE)%s=G-YTjt;;e!P+kV!!/IKKE)&@DM.uj\WDIE!SknP!!1;5KE)
+ %`LkGa/R"U+m!P*l:!!/I=KE)%`JqO+)&>4[V!Jjj2!!1"jKE)$-TS*:G&<MPF!JjF&!!./6K
+E)$-OG!T7R*:3`!Jj3u!!./&KE)%`b_,rs&;5]:!HX'M!!+g-KE)#aJqO+)0nP&Y!>*n:!!.mn
+KE)$-fRs5*&Boe-!HZnH!!+guKE)#a`e4<mF3K:;!AVTI!!*Z!KE)$omXtQ@ge`Y(!U_Ll!!1k
+GKE)&@-A2@"gdHeq!Sg"p!!/H`KE)%s/;+!(\Bom/!LQE2!!1:jKE)%_aFjNogh)3>!P$($!!/
+HRKE)%__Lqmi&5\#[!Ji:[!!+e#KE)#a8;$sDLaIcT!HHJ>!!+dpKE)%?AqU-bEQEe5!P%9F!!
+*WtKE)$m`.S*k0Z&JC!HGu0!!+e?KE)$mm">?>ETVoS!U^_V!!1k!KE)%s(5)YgQm@=b!LP'a!
+!*WZKE)$,BS6?dE9MrT!>$H.!!+c_KE)%,@"\L\$:'7E!JN4\!!*ELKE)%,(k_ki_N'9L!=BBk
+!!.c^KE)#[#_W0YKa*21!=N:g!!.e`KE)%ihLkk0$S[56!JR%s!!*HEKE)%,Ne@B5$Oh[g!=K*
+b!!*J;KE)%,hLkk0$_2kM!=Op@!!*JaKE)%45_K+<`it*r!TRF<!!/'%KE)%mR"PG?N=^aC!QL
+(O!!/&bKE)%mL4fO-N<Fn7!=;#E!!.bWKE)%i>_E(X)aK&V!=9m%!!1*pKE)%i:4rTJ)^'e6!K
+EJ"!!1*bKE)#l&;1#a#mc1a!JH2\!!+#EKE)%4L4fO-#m,b[!=>u`!!.c.KE)#lY_2uW$(-AG!
+JJaO!!+%+KE)%4c@c/u)iTFM!==L6!!*D]KE)#lgk5Y.$-n2(!?9=;!!1B<KE)&9=G-YTo<*`H
+!R?d[!!27VKE)%uLkGa/k=1+)!R?@O!!1AsKE)%3TS*:G``Rlo!M,m:!!/%?KE)%m9S<BHSWJL
+)!RAoB!!1)/KE)%DLkGa/N.cia!M+ms!!/%1KE)%DJqO+)#bZhN!JFR.!!*t1KE)#YOG!T7`bp
+G0!BZs-!!*t!KE)%3b_,rsKLUUp!BZBr!!/Y7KE)#YKS0=+4,AOi!?$QD!!*@WKE)#jJqO+)#h
+Xe1!JG?D!!*tiKE)#Yb_,rs44o2d!?'+7!!*AFKE)$7b_,rs)9.=0!=8+H!!*u*KE)$7mXtQ@m
+neZ;!V`[K!!2OZKE)&IVM"pMmmMg/!Ui@.!!1AAKE)&9/;+!(hU$oU!UjiX!!270KE)&0aFjNo
+mq.4Q!T(bJ!!1A3KE)&0_LqmiN)50-!QH[D!!/V:KE)%38;$sD`[6?=!PQj5!!/V2KE)%uAqU-
+b]uYj,!T)sl!!/$FKE)%d`.S*kSAKpZ!PQ@'!!*@%KE)%+/;+!((smp9!=25L!!.a"KE)$5d"D
+B"(s%@1!K:WD!!.GnKE)$5aFjNoSE>J)!=2#F!!.GfKE)%dk(E^8(rCq+!IMb<!!*@AKE)#im"
+>?>#\J_i!BKM"!!*r!KE)%"m">?>3Tbtp!INs^!!2O:KE)&IQ@o5=mj*Pd!Uh4c!!1@nKE)&9(
+5)YghIqQB!Uhq"!!1qeKE)%u,(opshI;-<!K8F[!!1(TKE)%CBS6?dN$O&V!PIWL!!/U#KE)%3
+,(ops]]=_G!M!VP!!0alKE)#Y."hR$KGK4@!>oL'!!/$:KE)$4k_&p:(hA:"!=0m&!!.B/KE)$
+4jFdL6(h/-u!I<aZ!!,(=KE)$uie.:4(j:Q4!I=Bl!!2O$KE)&01kYi0hD0`a!Lu!"!!0`SKE)
+ %cEeFDn(c6mG!B>1S!!.?:KE)$tnq6uD"[I_@!<jU!!!.\=KE)#V&;1#a"UKb]!<iUZ!!*8-K
+E)#VR"PG?"cS*7!<n42!!*8YKE)#Vc@c/uL7j2"!JZ\h!!0u2KE)%-LkGa/_a]:Z!JZ8\!!.h+
+KE)#UTS*:GJlm[+!=b]T!!.i,KE)%)9S<BH%?Q5C!J\gO!!*ObKE)%-`e4<m%>9B7!<e"-!!*O
+\KE)#UfRs5*Jo65A!=d\7!!.iBKE)#^b_,rs"NH)p!=d&%!!*5jKE)#^mXtQ@a&%Eh!QR`a!!1
+,.KE)%n6A,=>L/<O'!KPN[!!1,VKE)%j-A2@"NlZkR!QSf*!!/+uKE)%-6A,=>Nl$GL!<c5P!!
+*MTKE)#U8;$sDJgQ-N!?KO?!!*MLKE)#U7"bO@*QWm6!=Zo"!!*3hKE)#n`.S*k%)RYt!<d4l!
+!*MpKE)#UAqU-b*UJFZ!=\+D!!+,&KE)&9W.Y-OkG3b2!U$21!!1+gKE)&!BS6?dkI-$D!RG;0
+!!1+aKE)&!@Y=^^L+%]T!Q,\+!!/*nKE)%n2M;&2T'1h-!KL]D!!.fuKE)%EjFdL6NadYA!M8;
+(!!*3NKE)%)(5)Yg$tt:o!JWLc!!+)'KE)#]A:sp`"<rL!!BoY"!!+)#KE)#]@Y=^^4lh7r!?C
+*P!!*3\KE)#]G(]hr*;5$c!Bp.0!!2iDKE)&IdY%T$kELW"!UmCK!!28GKE)&AZ@i2Y`tX1,!R
+ETU!!1+QKE)&1FG'VpcSC.R!T.pN!!.fgKE)%51kYi0L(].>!M4Cd!!/*8KE)%eoN`SDKE)&G@
+"\L\qRD1Y!U;q'!!2aHKE)&LS:gkCl6(`[!VI:_!!2qVKE)&<&;1#aoaHKR!U9rD!!2`sKE)&<
+"G?aUlX5AG!VNsU!!2rQKE)&(5_K+<lS*tl!VMt9!!1XnKE)&=(k_kioo=\*!S.g8!!2BoKE)&
+(#_W0YlNW"B!S.C,!!1\ZKE)&=\:ah_p"k?%!Nn\@!!1\*KE)&=S:gkCXrrAt!S80A!!2DGKE)
+ %U&;1#af*m<4!Nl]]!!1[UKE)%U"G?aUY@*"`!S=i7!!2EBKE)$Z5_K+<Y:tV0!S<ip!!-CKK
+E)%V(k_kif8bLa!F?=j!!083KE)$Z#_W0YY6KX[!FK5f!!0:5KE)&)hLkk0?SI-5!O&#H!!-FD
+KE)%VNe@B5?OVSf!FN?i!!0:[KE)$[S:gkC?]Kd>!U2k&!!2_rKE)&L>_E(XkobWZ!VDb4!!2p
+kKE)&;&;1#aoSeG'!U0lC!!2_HKE)&;"G?aUklQM<!Rj;e!!2>gKE)&Fgk5Y.dia;D!U5u)!!2
+`;KE)&%&;1#al&:8q!Rh=-!!2>=KE)&%"G?aUdfP1&!N/29!!1QQKE)&;gk5Y.V]^Wm!RmEh!!
+2?0KE)%N&;1#adu8q[!N-3V!!1Q'KE)%N"G?aUVZMMO!Dbt6!!0"%KE)&%gk5Y.:EY;j!N2<<!
+!1QoKE)$K&;1#aVi69/!D`uS!!0!PKE)$K"G?aU:U#KP!N4_+!!,l_KE)%Nc@c/u:Q0r,!DeH'
+!!,mNKE)$Kc@c/u kb*S/ !VBKI !!2pK KE )&: OG!T7o Lso<!U,
+>m!!2^]KE)&:KS0 =+k ^nHf! R[Qn! !2 <9K E)& FDM.
+ujd?'"]!U.a\!!1 K'KE) &: `e4<m d=d/ Q! RZL P!!/j fKE )&#fR s5*k
+jF*(!Mba0!!1KkK E)%JL kGa /dD gh>! Mb =$! !/jHKE )$ CTS*:G UY(
+5"!R^=g!!,TOKE) %Jb_, rs7 u2f u !Md Yf! !,T CKE)$C Jq O+)8(` Ip!
+Mf(9!!,U6KE)$C` e4<m8 +)$ 1!U *@ 5! !2^ CKE )&:8;$ sD oHo4k! U)q
+)!!2:MKE)&"d"DB "k\P nP! RS o@ !!2 :qK E)& "`.S
+*kd)(G9!MRkn!!1 I5KE ) %H aF jNo d,o u]!M RGb!!
+/e1KE)$?d"DB"U$ RF4!CO q]! ! /eU KE )$?` .S* k6c+KV!CQ4 ,!!,ILKE)&:
+."hR$oG3)[!U(e^ !!2:-K E)& " BS6? dkVe (o! RPA1!!1GUK E)%Gk_&p:cu
+t'B!MJM,!!/bPKE )$=k_& p:T _=$= !C>e "!! ,CFKE)&:'S HGekRrOK!RN
+ZV!!1G%KE)%GFG' VpTQ5 \c!T cS"!! 2YpK E)& K>_E(XjWK3 V!V2V2!!2mj
+KE)&7&;1#anr/5% !TaT? !!2YF KE)&7 "G? aUjT:)8!R! `]!!22cKE)&
+Dgk5Y.b92H<!Tf] %!!2Z9K E)%r&; 1#ajc "im !Qtb%!!229 KE)%r"G?aUb
+6!=s!LH')!!19IKE)&7gk5Y.QQUq]!R$j`!!23,KE)%>&;1#abD_)S!LF(F!!18tKE)%>"G?aU
+QNDg?!A?]k!!/FjKE)%rgk5Y.0-GoJ!LK1,!!19gKE)$+&;1#aQ]-Rt!A=_3!!/F@KE)$+"G?a
+U0<g*0!LMSp!!+a?KE)%>c@c/u08tPa!AB1\!!+b.KE)$+c@c/up7R'=!W,uP!!-m)KE)&HOG!
+T7qb2YC!GV=^!!2eLKE)&M7YCaBB`*M`!VV2"!!2eFKE)&6TS*:GnlUPF!Vn@$!!2J[KE)&6OG
+!T7qeh&e!UYu%!!2f;KE)&D7YCaBm>-Dq!T\oe!!2J?KE)&6JqO+)m=Kuk!Qh!f!!205KE)&DD
+M.ujgRs3"!QgFV!!20)KE)&-OG!T7mEC4`!T_7R!!1i1KE)%pKS0=+gOt4[!QfqH!!1i+KE)%:
+TS*:Gak27H!T`[%!!0R%KE)%:OG!T7aioD<!On/D!!1iuKE)%p`e4<m[to\;!L&1i!!0Q^KE)%
+:JqO+)[t985!@OOn!!/;9KE)%pmXtQ@DkMa`!@Nt^!!/;-KE)$kOG!T7\'0L*!L(NV!!."oKE)
+$#KS0=+DhNcD!@NJP!!+J"KE)%:mXtQ@DqK^C!@Q*E!!.#^KE)$#`e4<mDoRG1!@R;g!!2diKE
+)&M/;+!(Ab^oY!VT';!!2sDKE)$`r.G%Np-aQ6!G$Y4!!2d[KE)&6:kSfLngoFo!US0d!!2.OK
+E)&D-A2@"m)Xh[!VU,Y!!2H)KE)&66A,=>m)"DU!Q`W@!!2.sKE)&+d"DB"aN0#7!T[jG!!1co
+KE)&>k(E^8fu/OD!Q`-2!!1ciKE)%8d"DB"aR"Q[!OL.+!!/5'KE)%ok(E^8ZcIe"!SQUg!!0F
+EKE)%8_LqmiZbh@q!@,sE!!/5KKE)$cd"DB",KPN<!KlMt!!-`RKE)%Zk(E^8B>fH'!@,I7!!-
+`LKE)#tm">?>BC(9O!@-`[!!-`pKE)&H."hR$q\Fhb!Fkt[!!2d=KE)$^IY7\%p*,.i!TYY^!!
+2X+KE)&>BS6?dp,7R(!UO?M!!2.)KE)&>@Y=^^aCp5,!TZ.l!!1a9KE)%oA:sp`f]7\c!Q\`'!
+!1a3KE)%7k_&p:aEE4:!O:jA!!1aGKE)%XjFdL6OQ(on!O:X;!!+8,KE)%7p4NDHA*ARG!?pNW
+!!-TjKE)#rie.:4A)`.A!?q/i!!-U'KE)&H'SHGe@=Ek0!VR.Z!!2-pKE)&>1kYi0j:[+G!UMR
+p!!1.tKE)&*FG'Vpa>/DK!SDFG!!/1'KE)%WoRm2FOE-!S!O2-J!!+57KE)$]oRm2F+S(0c!Fb
+PP!!2d#KE)&6$A8B[ll(NW!QZ14!!1_5KE)%73eRJ6Y^1s&!TKc*!!2UlKE)&JY(QcUifJfn!V
+&j:!!2)8KE)&C7YCaBie2sb!TJ]a!!1'3KE)&4fRs5*nSX![!QC.R!!2*'KE)%lLkGa/il6WO!
+QB_F!!1&jKE)%2TS*:G`RohD!TNO#!!/">KE)%lb_,rsMhm#d!QE'3!!/"2KE)%2JqO+)(SHE]
+!K5T`!!1(,KE)#hOG!T7Mp-hS!>gQF!!/"tKE)#hKS0=+(P7;?!>jCA!!/#GKE)#hb_,rs(WM+
+.!>k0W!!2[fKE)&KXFpQS2>Dh)!V8j8!!2nmKE)$0r.G%No0e63!Ao7Y!!2[XKE)&4:kSfLnLT
+=n!Tqa^!!2(MKE)&C-A2@"k/`2U!V9oV!!26#KE)&46A,=>k/)cO!Q<?<!!2(qKE)%td"DB"`5
+mT3!TI^E!!1?cKE)&8k(E^8c,>88!Q;j.!!1?]KE)%0d"DB"`9`-W!LqGh!!.qtKE)%kk(E^8S
+&g6_!R9b[!!/S-KE)%0_LqmiS&0gY!>Eh5!!.rCKE)$3d"DB"'?Gh,!K#rl!!,%"KE)%Bk(E^8
+2oL@L!>E>'!!,$qKE)#dm">?>2sc1t!>FUK!!,%@KE)&MW.Y-OFmt%a!P82^!!2tmKE)$ppk/V
+J\pf;4!W/UE!!.1hKE)$p5(in:o-f7l!Vr%7!!+kQKE)&IBS6?dqmM.X!I"Bo!!+j(KE)&IA:s
+p`o-/hf!HrpF!!2h'KE)&4."hR$nJ6cX!Tn'K!!2()KE)&@k_&p:pND2i!TG;V!!2NKKE)&8@Y
+=^^mc&m"!Q8Z)!!2(;KE)%sk_&p:`+4N$!Susm!!1=)KE)%k@Y=^^h;j4h!R0PV!!1p8KE)%/k
+_&p:`--e6!L`/)!!.o:KE)%bk_&p:RH0#$!Jo`g!!0^mKE)%@ie.:4]AeJD!>4OK!!.oLKE)$/
+k_&p:&`eTF!I*a\!!+n:KE)#bie.:4GN=DW!Ai_g!!.<'KE)#bp4NDH1\QJ%!W/+7!!.-8KE)%
+`IY7\%qiZU4!HNR@!!.+(KE)&E'SHGe0n+cU!V\F(!!2[(KE)$oIY7\%pG.C%!TFfH!!24=KE)
+&4&qg5cmW=*^!Tl.j!!2M.KE)%k1kYi0b]JL<!Q6aH!!1mIKE)%sEeFDnh"$*u!JkiN!!/JZKE
+)%/EeFDn\b(OT!LWG2!!0Y$KE)#aoRm2F1%^,!!>+gT!!.05KE)$-nq6uDF7Ota!W.b-!!.(eK
+E)$m5(in:o*U-N!V[Lc!!2'dKE)&8)MA(kmQ-"$!Q5n0!!1;)KE)&.H@u8!LcU1h!LS1d!!0V+
+KE)#aH@u8!0`$G&!HIsh!!.&QKE)&3:kSfLn>q9C!T?S&!!2SdKE)&37"bO@iBi1t!Q*3:!!2%
+pKE)%iaFjNoiF[`C!Q)d.!!0sRKE)%,d"DB"_X)pU!JSUJ!!0t!KE)%,`.S*kKu/KC!=R8-!!.
+f?KE)#\aFjNoL$"$g!=Qi!!!*JEKE)#\m">?>$g**B!V*+A!!2lGKE)#kr.G%NnYCg<!?-E?!!
+2VaKE)&3."hR$n<S_-!TRjH!!2%(KE)&5A:sp`i?EpT!TRXB!!0rMKE)&32M;&2`or'U!Q&B#!
+!1+#KE)%i@Y=^^`o;XO!JKZi!!0r[KE)%4k_&p:K]Idd!KH/n!!.c4KE)%4ie.:4$0[$B!JL0"
+!!+&&KE)#ZjFdL6)ruYP!=@b=!!+%uKE)#Zp4NDH)tnpb!Vt5u!!,.UKE)%DIY7\%q9jor!BPU
+]!!,,EKE)&CP_9#;)1I5=!V<[O!!2VQKE)$7IY7\%o<O#L!T=`G!!2+:KE)&3&qg5ckB)@W!TP
+qg!!28'KE)%i1kYi0`cQk6!Q$UF!!1C;KE)%mEeFDncLQVg!JGQJ!!/&NKE)%+EeFDnSb.R8!K
+?T&!!/Y]KE)#YoRm2F)>&R^!=87L!!,1RKE)#jnq6uD47\%)!IF6g!!0c\KE)%!G_?%t]fq)L!
+I?k]!!.BeKE)&Kb(K`q3IHJ[!W1T(!!.FoKE)$55(in:HTm)_!V)&#!!2\[KE)&I\qC%ai<k5<
+!TP)O!!27DKE)&AH@u8!_A\(-!QI0R!!1AkKE)&0qLehLKK=bd!K;>X!!/VdKE)%dqLehL#^V.
+(!>tZd!!,+VKE)$uG_?%t]Y9%!!I6e\!!.?dKE)$4^4ZIeH+nq3!I281!!.>9KE)$t?A&:Zi2D
+;/!T9c,!!2#PKE)%hBS6?di3n:=!Pr<"!!0oFKE)%)k_&p:_01J3!J9Bc!!.]2KE)#Vk_&p:K(
+ait!<qP;!!*8_KE)#Vp4NDHnC3*k!=aL2!!2T;KE)&2P_9#;iO"7<!T9,o!!2&aKE)%h1kYi0_
+fUP3!PpOE!!0uXKE)%)FG'VpL@g-!!J5?F!!.iFKE)#UoRm2F%J5;R!<htH!!*Q"KE)&Jl@]-<
+*INM?!?F@W!!2T3KE)&Cg4TG,i/30f!TBK#!!2,kKE)%h)MA(k_`EGN!QTM>!!.[4KE)%-H@u8
+!Nr"D/!<d_%!!*N)KE)#nqLehL4a;V[!M7#Y!!,5FKE)$9*eXLo*57(+!Bn/M!!.LeKE)%e]S$
+7cI5ll[!PY.Y!!.KfKE)%$%YOf_4M6=I!I_V6!!,3RKE)%$SqI(EI(4h0!PVln!!.J;KE)%#Ne
+@B54C3[@!IWaW!!.IPKE)%#:4rTJHnL'P!Pl'q!!0m@KE)%(FG'VpJT?DD!<VnH!!*/lKE)&2g
+4TG,^m]oV!Pu@#!!.X3KE)%*H@u8!!d]M"!=&CR!!*SDKE)#o]S$7c*hJ#b!C"#H!!/]uKE)$:
+S:gkC5)t9r!?PR#!!,:?KE)%%Y_2uW^KcEl!IgDh!!0i0KE)%%N._03IYNLU!BsbA!!.Q(KE)$
+::4rTJIa3TH!Ie.(!!0heKE)%%9S<BHIR\tj!Br,h!!.OdKE)%%/;+!(IO9^J!=rLi!!+0HKE)
+#p:4rTJ5?NR=!M?NJ!!,;XKE)$;7YCaB+"i3H!C(IT!!,;8KE)$;-=%`uKE)%Ri.M(2ebFdt!E
+6de!!0(gKE)&&r.G%N;;d*-!N>dH!!1SuKE)$Ln:UcBW-j6u!Dn#o!!2rCKE)$Wi.M(2Xn[PL!
+W'lj!!-6lKE)%Sr.G%NqS\$e!Ef,M!!00MKE)&L_Lqmi=F>c%!VOfm!!2r_KE)$Ypk/VJouMdd
+!W(r3!!-@&KE)&G`.S*k>^h>+!VO<_!!2E4KE)&Gm">?>lc=_Z!VPT.!!2E(KE)&=_Lqmif?f0
+N!UK**!!1]mKE)&=k(E^8f>N=B!S>2A!!0:MKE)&)m">?>YK2@s!S?Ie!!0:AKE)$G^k;[gV=9
+-<!Rgn!!!,[LKE)%Kpk/VJdXHiL!D)^5!!/mCKE)$DG_?%tUcsG3!D#>+!!2q0KE)$In:UcBVY
+l)I!W$>[!!,dgKE)%MIY7\%qI5*X!DIlo!!,bWKE)&Fk_&p:qK@Ml!D`QG!!2`QKE)$JIY7\%o
+\tN(!U8g$!!2`cKE)&;jFdL6l/I?r!Rp7c!!2?XKE)&%jFdL6e)H#\!N5.7!!1RBKE)%NjFdL6
+VrE@0!Cbq"!!/hhKE)&#IY7\%7.>j0!MXsp!!,K4KE)%I5(in:6p-,&!CRu^!!2pQKE)$Bpk/V
+JUOIjr!W"R)!!,Q:KE)$B5(in:oQ5`d!CqTl!!2_4KE)&:oRm2FkjjB,!R^Om!!1L<KE)%JoRm
+2FU[j'<!CH:/!!/d@KE)$>G_?%tTg",0!CAo%!!,D-KE)&L)MA(k6[XOe!CK&(!!2^QKE)&:H@
+u8!d/&Cq!C:s`!!/b,KE)$=4G3\85ot[Z!C=GQ!!,?tKE)$<SqI(E/&6f<!L</-!!17?KE)$%i
+.M(2Pk]n3!QokE!!+M;KE)%;I"VJ#.!UCF!L,d$!!+K1KE)&KBS6?d/b"Dn!LEY:!!2n+KE)$(
+pk/VJQ@=Je!Vp2X!!+WuKE)$(5(in:o&t`,!Vpnl!!+_MKE)&DjFdL6/q/HR!V56'!!23FKE)&
+Dp4NDHjlD'p!Ti<o!!1:,KE)&7p4NDHbN+<V!R'JU!!/GMKE)%rp4NDHQfNf"!LMf!!!0LcKE)
+&,pk/VJm=']g!GT?&!!0IrKE)&,I"VJ#B]+OD!OR*)!!1e;KE)$dE.e2lZoj!A!GFHG!!0GJKE
+)$d*/":m-/aFV!L!52!!12jKE)$ii.M(2,k-He!Kqh`!!-p*KE)%]I"VJ#P!4O!!Gm"6!!+?-K
+E)$h4G3\8,T_U=!Gig1!!2mPKE)$"pk/VJPCA/b!W-tl!!2mNKE)$jpk/VJ-@CIH!W-nj!!-tb
+KE)$"5(in:DE`^R!V1>c!!+HrKE)&HoRm2FnoBB`!H3F?!!2faKE)&6oRm2FmIZ&3!T`g)!!2K
+XKE)%poRm2Fg[p.!!Qjnc!!1jFKE)%:oRm2FPOaA,!G0'"!!0CpKE)&+I"VJ#ADi+@!O?s'!!1
+b:KE)$`E.e2lZ93d?!G"0C!!0AHKE)$`*/":mA.F7m!@%#d!!/40KE)$bn:UcB,'\b@!KfR!!!
+-\VKE)%Z5(in:Ait_H!?rS<!!-[QKE)&K)MA(k,CG.E!W+p2!!-_[KE)#t5(in:B0LtK!V/:)!
+!2e>KE)&6H@u8!m.uA8!Qb+j!!1dLKE)%8qLehL@c2n>!O6m&!!1`dKE)$^E.e2lYrm[>!Fe$A
+!!0>GKE)$^*/":m@Le%k!?l]@!!/1qKE)$_G_?%t+ZtDX!Fn6F!!+5aKE)$_*eXLo+hiU0!Fri
+s!!-MIKE)%W]S$7c@5ro?!O//K!!-LJKE)$]%YOf_+M<@-!F`Wo!!+46KE)$]SqI(E@(:ji!O,
+m`!!-JtKE)$\Ne@B5+C9^$!FXc;!!-J4KE)$\:4rTJ(#X`F!K-Z*!!1&fKE)#en:UcBML:'W!>
+Kd3!!.s@KE)#e4G3\8'HVo-!Vj$T!!*l1KE)%2IY7\%pp,PQ!>^'9!!*j!KE)&CFG'Vp(Oh#;!
+V(2`!!2*OKE)&4nq6uD`Unf`!QFV_!!/#MKE)%2nq6uD28FkF!LiM2!!1>lKE)$0i.M(2RWsJc
+!R3f]!!+oqKE)%A4G3\81cU-g!Lb'_!!+nrKE)$0%YOf_'(CPS!Ju2W!!,"IKE)#cG_?%tM*?R
+m!B,1U!!/QQKE)$24G3\8&fu]+!B)!P!!2k`KE)#dI"VJ#q7;4Z!B5CZ!!*`sKE)$35(in:nN)
+='!V:Vj!!2)*KE)&8qLehL`;5,e!R:Io!!.rQKE)%ai.M(2h0=SQ!Ud[T!!.2WKE)%aE.e2lh)
+p>j!H__&!!0YjKE)&/*eXLoF>/@J!P08(!!.0YKE)%a%YOf_F:<g&!A`Sd!!/L4KE)%s^4ZIeG
+2S#R!A\VI!!/KMKE)$rE.e2l]0(`H!LY!^!!.7&KE)$.*/":mFrZ/8!AY.<!!.6QKE)#bG_?%t
+Lq\NB!AetR!!*ZoKE)$sG_?%t1H^<j!>-B+!!.:+KE)$/*eXLoG92D;!>3&!!!+miKE)$s^4ZI
+eEkm>.!P*0&!!1lfKE)$n@"\L\\N#6B!Sj9"!!.*oKE)%`*/":mEYsH0!P&\n!!.*KKE)$n#(u
+sW0lVdG!LUNQ!!..[KE)$-3.q84R%As2!HU5R!!0X%KE)$o*/":m0b/j:!HSa(!!*YDKE)$-]S
+$7c&>"OT!HYo,!!+gGKE)$oSqI(EEF=G"!P#Xm!!1k]KE)$m0SBE,\=A3P!HAs0!!0TiKE)$m%
+"nT]E<_'r!AM$:!!/HnKE)$m\:ah_0V!dr!HFW_!!+d6KE)$mNe@B5&71"i!ANA`!!.)rKE)$l
+Y_2uW\6O[e!H=EZ!!0T)KE)$lN._03E/'#G!AIc3!!.&oKE)$,:4rTJE6a+:!H;.o!!0S^KE)$
+l9S<BHE(5K\!AH-Z!!.%VKE)$l/;+!(E$g5<!=J=L!!.e$KE)#[G_?%tKg(.i!=CrB!!*EJKE)
+#\I"VJ#$U04D!V![R!!2&)KE)%iqLehLL&-H&!?0mL!!/((KE)%m^4ZIe)K:?0!KB3p!!*utKE
+)%4*eXLo)B=D1!?)H$!!*CNKE)%+^4ZIe)gI#9!=:lA!!+$$KE)#Z*eXLo)]jY4!=?Jn!!+%QK
+E)$6^k;[gST'5^!RA?2!!,,gKE)%D3.q84cCT[h!BMof!!/W1KE)$6(k_kiSIU;Q!BLXB!!,+b
+KE)#jE.e2lN4afD!BY7R!!*rsKE)%3SqI(E4#hln!>ul1!!,/$KE)#j%YOf_3t?oD!=6>k!!*t
+MKE)#YSqI(E41p4H!?%J^!!,0QKE)%d@"\L\hRJ4=!Uj?J!!.C2KE)%d0SBE,hOK6!!I>lA!!0
+bMKE)&0Ne@B5H4Y`0!PJnp!!.BOKE)%d#(usWH3Am$!BFP@!!/V"KE)%u?A&:ZHXML,!BDie!!
+/U[KE)%"0SBE,]ps`U!M#1'!!.E`KE)$5%"nT]HOPQ-!BC@;!!.ENKE)#i\:ah_N*_/;!BIZC!
+!*q,KE)%"\:ah_3Lka&!>piM!!.G:KE)$5Ne@B5H]EaZ!=3"b!!*qnKE)$5hLkk0HesDU!I6q`
+!!0a:KE)&0>_E(XGp%b?!PFeQ!!1qOKE)$u&;1#a]SqLD!I4s(!!0`eKE)$u"G?aUGliX!!B@<
+:!!/TpKE)$uY_2uW31,@!!Luo<!!.A4KE)%cc@c/uH&RCV!B>ge!!.A"KE)#i>_E(X38B/e!>n
+Rb!!.B#KE)$4c@c/uH-V'C!I18j!!0`7KE)&0/qa3*G`[RY!PD*Z!!.>#KE)%c7YCaBG_C_M!I
+03L!!,&]KE)%C/qa3*Gh@ZL!B<c+!!.>gKE)$47YCaBGfGC:!>mGB!!,&sKE)$tmXtQ@GYj%n!
+PBt:!!.=8KE)%c-A2@"GXR2b!I-qa!!,&1KE)$tCkMch3$s:Y!I/40!!.<mKE)%c(5)YgGU.qB
+!I,fA!!,%pKE)$t2M;&2"aG\#!J8%=!!*6cKE)#V*eXLo"hoWi!=a"$!!.heKE)#^3.q84L7X%
+u!=^$%!!*N=KE)#U]S$7c%D7>o!<f!I!!*P#KE)#n@"\L\Njs`B!QSN"!!+)oKE)%5S:gkC*>j
+G0!KN1n!!+)KKE)#n#(usW%(Lrj!JXp6!!++MKE)#]S:gkC*Lqc_!=Y!A!!++#KE)#U?A&:Z%,
+QX;!?L$M!!,5JKE)%EY_2uWcWl,'!BhQY!!/[YKE)&!:4rTJ4V38H!M57'!!,4gKE)%EL4fO-4
+TpE<!BgL;!!+(DKE)%5>_E(X4g9S>!?@J[!!/*TKE)$9R"PG?T$Duh!BlBp!!+'oKE)$9L4fO-
+$s\Gc!?BmJ!!*L'KE)$9gk5Y.*6s3;!Bn_]!!0g,KE)&1=G-YTn#h<D!PXYK!!1tNKE)%eLkGa
+/haW8!!PX5?!!0fcKE)$8TS*:GSlgXG!REBO!!.M@KE)$8OG!T7SkOe;!I^&_!!0gXKE)%E7YC
+aBI>EOV!Bc$g!!.M$KE)$8JqO+)I=d+P!?>3p!!/*4KE)$8fRs5**))"c!I`UR!!,4+KE)#m7Y
+CaBIE[?E!BeAT!!.MfKE)#]/qa3**,^E0!Bfe'!!.N9KE)%e:kSfLh^jE\!PV*X!!1t(KE)%e7
+"bO@^-[JQ!Ba23!!/ZBKE)%#d"DB"4@k,*!M1Wk!!.JgKE)%eAqU-bI)L[<!B`]%!!.JaKE)#m
+/;+!(4D]ZN!?<G>!!.K6KE)$8AqU-bI--(^!PTt8!!1smKE)%e,_Q-u^*841!B_c`!!/Z,KE)%
+#BS6?d4=#R[!ISF2!!,2+KE)%#@Y=^^*#=2-!B`8n!!.IjKE)%e'SHGe^(Q)!!B_'L!!.I(KE)
+$8&qg5cHnp?T!<Toe!!*.mKE)#W\:ah_K3j32!=#'I!!*:aKE)#S?A&:Z#2Y"5!=l>e!!.j[KE
+)#_R"PG?LJEL&!=k'A!!*RaKE)#W>_E(X%bu^;!<u;P!!*STKE)#oTS*:GO'%&8!QV?r!!+.&K
+E)%69S<BH*f,IL!KT^'!!+-oKE)#oJqO+)%TnAa!J`:\!!+.nKE)%6DM.uj*mB9;!=hSP!!+.\
+KE)#W/qa3*%W6q"!?UZ^!!/]gKE)&!XFpQST1FV8!RIWr!!/][KE)%F6A,=>*`.Li!KSdb!!,:
+1KE)%FCkMchO!]M[!C"SX!!+-/KE)$:`.S*k*^YM[!C"AR!!*Q\KE)#oCkMch%OQi/!C#k'!!+
+-QKE)$:k(E^8hl)2.!UnTm!!1uQKE)&1U4`LIT.#?m!RI'b!!0iJKE)%F,_Q-u^LVut!M:Qh!!
+0iDKE)#o."hR$Nu!BK!Bt1M!!+,dKE)%%k_&p:5%K<H!?NG<!!.Q0KE)$:@Y=^^Ic?"\!=flu!
+!+-!KE)$:G(]hrIeJEp!T0,p!!1u?KE)%F'SHGe^GLTD!M:!X!!0hiKE)#o'SHGe4u@om!?Ml,
+!!.OjKE)$:15#W.IWC)A!T/cf!!/]!KE)%f)MA(k*X[Q#!BqET!!.O0KE)#T>_E(X"&=LL!=)_
+[!!._TKE)#X9S<BH#=a@H!<Xs-!!*=BKE)#`:kSfLLTH./!=q_S!!.kPKE)#`7"bO@%mkpL!=(
+0/!!*UHKE)#X-A2@"%q^Ip!KX14!!1-kKE)%6UkA^KO.q:-!=pT3!!.k@KE)#pBS6?dO1']A!?
+Yj*!!*TSKE)#p@Y=^^#8Vsm!=q)A!!+0bKE)&!e:[f&cdIIH!KWIu!!/_!KE)%6P(Wf9T<a+M!
+=olt!!+/uKE)#`&qg5c5BMPY!?X(M!!,<)KE)&!b(K`qO,ASj!M>g6!!*T;KE)#p)MA(k5<=Gt
+!<]EV!!*2!KE)#X W.Y-O K@Y\U !=,ER !! *>! KE)#TQ @o5=#I]
+9c!Jf0X!!.l'KE) #XP _9#;& %$ui! =+ d@! !*V 9KE)
+ %nl<PN<Ou"b3@; p91>9 I. )"!WI %U4r cU L'' 2c"*0 +uH A2M_L ',#A
+".FrHg4f^PL'*<f !t'bb )MS >,L '*Tn "4 Do+ eqO:VL '* Zp"13d bUk
+SuKL'+T5"0@4ZW. kC&L' &u] ""o < 1-A DU\ L'+ l="."Z D( 5;o*L' '8e
+"*B8"A;11uL')=J ")N\o BSH U[L '( P4 "'g Q_? A8PWL' (, ("%7kG 7YV
+"3L'(mj+BsR%c@u BqL& u7I !\ T3 /-A DR[ L&r -F!Y
+U4h)MS;SL&s,b![ <@#@ Y Or )L &u[ U!r @WQn qI5>L
+&uOQ!d'.uA;1.tL &si!!^ _VC _ M/- OL '$Ll !p# (;m"PRXL&r o\![rd)BSHT
+PL'#GN!mHB#`.e? 5L'!*a !fi ! :N.q D(L' !`s !k<sdY_E4@ L'#_V!`4UQ=
+G?l^L'$.b!o@3*? '6us@s <$5 @VKq *HQZ g7F `VY9Ec[C-P "Us%P"RHOP!
+5$b>DNl<L]DjdK6 E%PL_ 5fHO t_6=0 TrD` P"A rB30Ia,&X' ,L&X#h9Oq*X
+2061K?FDkW&FE;d OEa`p .P!5% %P!5% %06 WLBOu$<u$@ @R/I?K5+L]W
+A>P,4<qH\aA=WI9 q$?'711 @YbASW JCnE9 RW' 6Ou"b3GA1S 1>DOV^2i(@f
+@pL3eL]N[<P"Uro@u(5M4_%u1Op$+bEd)5.Le*[bI?IP_E+sQ<+ED[?A0>oUCm#*f1Pc$e!HNt
+sP,Wd]Bp(ZC1G<6SF*&O=+ECn0Cm"gT!KsF<"-RD^1N7&QF!,LIBk/?#P&+>F@u(/K4aUlcEa`
+p'Oo^@>P,X6oP%odQEa`p/DdmF&F-6TfF^oW:+DI!3@r-4.+CfV;DdmF&F-6TfF_Mt=@;p7M!J
+gc>WJEBoC5;k1@;p=,@VKq*OogehI?IQ>L]W`&HYFUC@;p%G!Jgc>WJEBoC5;k1@;p=,@VKq*O
+ogeh@s;u:BnuhRCm%G$Cia\@@s<$5@VKq*Oogeh@s;u:BnuhRCkr+T!Kp)cCia\@@s<$5@VKq*
+OogehBcqG)E,q*BL]N[<Lbt90L]DI(E--#-BlnEZ!g7\SP#PqI"-Pfo@q/r1E-l:AEa`p'Oo^@
+>P,X6oP%odQEa`p/DdmF&F-6TfFa]EP@s;u:BnukSCm%G$Cia\@@s<$5@VKq*OogehBcqG)E+>
+ %3L]N[<Lbt90L]MO)E--#-BlnEZ!g7\9GB4m@L]`fVL]NY>P"T;$F*&O7GB@b4BlnEZ!g7\9G
+B4m@L]`fVL]W_?P"T;$F*&O7GB@b4BlnEZ!g7\?+ECn0EfpHZ!KsF<1m2U0!-2LeFDkW&FE<TH
+P')29<+C^eP!+/++ECn0Cm"gT!KsF<1m2U0!-2LeFDkW&FE<THP'(8YF!,1Q"HmSa94MdZF<G(
+;FDkW&FE<THP'(8YF!,1Q"HmSW!KmJH94MdZF<G(;FDkW&FE<THP'(I]Ea`osOo^@>P,X6oP%o
+dREa`p/DdmF&F-6TfF^oW:+DHW7P&,pUOo^_=@r-4.+CfV;DdmF&F-6TfF^oW:+DHW7P&,pVOo
+^_=@r-4.+CfV;DdmF&F-6TfF_Mt=@;p7M!Jgc>WJEBoC5;k1@;p=,@VKq*OogehI?IQc!F:k6I
+?I,`4>1_dDD*Y`ASu?nFE2)?05tWMF!,F9G]PNWBm=kFEd)5.05tWMGp%,\BOtmjBQPA;Le*[e
+Ec6/=F_l/_CbL!HA9;K-Ed)5.Le*[e05kfO+E)4@Bl@m1+?ht3A8c@-A9)+&P&N'-Eb0-*@<?O
+(G`l$h3IR&#Ou"b.Bk)1%E+EQ;0fP7TP%64gCG'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD
+@'Dfp)1AWh2!3A5GbFDtYuCM@[!P.H"'F`V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/micropdf417 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER micropdf417--
% --BEGIN ENCODER datamatrix--
+% --REQUIRES preamble raiseerror renmatrix--
% --DESC: Data Matrix
% --EXAM: This is Data Matrix!
% --EXOP: rows=32 columns=32
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/datamatrix {
-
- 20 dict begin
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
- /columns 0 def
- /rows 0 def
- /encoding (ascii) def
- /raw false def
- /parse false def
- /parsefnc false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /columns columns cvi def
- /rows rows cvi def
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- /barlen barcode length def
-
- raw {/encoding (raw) def} if
-
- encoding (raw) eq {
- /cws barlen array def
- /i 0 def /j 0 def
- { % loop
- i barlen eq {exit} if
- /cw barcode i 1 add 3 getinterval cvi def
- cws j cw put
- /i i 4 add def
- /j j 1 add def
- } loop
- /cws cws 0 j getinterval def
- } if
-
- % Special function characters
- /fn1 -1 def
-
- encoding (ascii) eq {
- /fncvals <<
- (FNC1) fn1
- >> def
- /msg barlen array def
- /i 0 def /j 0 def {
- i barlen eq {exit} if
- /char barcode i get def
- parsefnc char 94 eq and i barlen 4 sub lt and {
- barcode i 1 add get 94 ne {
- /char fncvals barcode i 1 add 4 getinterval get def
- /i i 4 add def
- } {
- /i i 1 add def
- } ifelse
- } if
- msg j char put
- /i i 1 add def
- /j j 1 add def
- } loop
- /msg msg 0 j getinterval def
- /msglen msg length def
-
- /cws msglen 2 mul array def
- /i 0 def /j 0 def
- { % loop
- i msglen eq {exit} if
- /char msg i get def
- char fn1 eq { % FNC1
- cws j 232 put
- /i i 1 add def
- /j j 1 add def
- } { char 48 ge char 57 le and i msglen 1 sub lt and {
- msg i 1 add get dup 48 ge exch 57 le and { % Digit pair
- cws j msg i get 48 sub 10 mul msg i 1 add get 48 sub add 130 add put
- /i i 2 add def
- /j j 1 add def
- } { % Singular digit
- cws j char 1 add put
- /i i 1 add def
- /j j 1 add def
- } ifelse
- } { char 127 le { % ASCII
- cws j char 1 add put
- /i i 1 add def
- /j j 1 add def
- } { % Extended ASCII
- cws j 235 put
- cws j 1 add char 127 sub put
- /i i 1 add def
- /j j 2 add def
- } ifelse } ifelse } ifelse
- } loop
- /cws cws 0 j getinterval def
- } if
-
- % Basic metrics for the each symbol
- % rows cols regh regv rscw rsbl
- /metrics [
- % Standard square symbols
- [ 10 10 1 1 5 1 ]
- [ 12 12 1 1 7 1 ]
- [ 14 14 1 1 10 1 ]
- [ 16 16 1 1 12 1 ]
- [ 18 18 1 1 14 1 ]
- [ 20 20 1 1 18 1 ]
- [ 22 22 1 1 20 1 ]
- [ 24 24 1 1 24 1 ]
- [ 26 26 1 1 28 1 ]
- [ 32 32 2 2 36 1 ]
- [ 36 36 2 2 42 1 ]
- [ 40 40 2 2 48 1 ]
- [ 44 44 2 2 56 1 ]
- [ 48 48 2 2 68 1 ]
- [ 52 52 2 2 84 2 ]
- [ 64 64 4 4 112 2 ]
- [ 72 72 4 4 144 4 ]
- [ 80 80 4 4 192 4 ]
- [ 88 88 4 4 224 4 ]
- [ 96 96 4 4 272 4 ]
- [ 104 104 4 4 336 6 ]
- [ 120 120 6 6 408 6 ]
- [ 132 132 6 6 496 8 ]
- [ 144 144 6 6 620 10 ]
- % Optional rectangular symbols
- [ 8 18 1 1 7 1 ]
- [ 8 32 1 2 11 1 ]
- [ 12 26 1 1 14 1 ]
- [ 12 36 1 2 18 1 ]
- [ 16 36 1 2 24 1 ]
- [ 16 48 1 2 28 1 ]
- ] def
-
- % Select metrics of an appropriate symbol
- /urows rows def
- /ucols columns def
- /i 0 def
- { % loop
- /m metrics i get def
- /rows m 0 get def % Rows in symbol
- /cols m 1 get def % Columns in symbol
- /regh m 2 get def % Horizontal regions
- /regv m 3 get def % Vertical regions
- /rscw m 4 get def % Error correction codewords
- /rsbl m 5 get def % Error correction blocks
- /mrows rows 2 regh mul sub def % Rows in the mapping matrix
- /mcols cols 2 regv mul sub def % Columns in the mapping matrix
- /rrows mrows regh idiv def % Rows per region
- /rcols mcols regv idiv def % Columns per region
- /ncws mrows mcols mul 8 idiv rscw sub def % Data codewords
- /okay true def
- cws length ncws gt {/okay false def} if
- urows 0 ne urows rows ne and {/okay false def} if
- ucols 0 ne ucols cols ne and {/okay false def} if
- okay {exit} if
- /i i 1 add def
- } loop
-
- % Extend cws to ncws codewords by addition of pseudo-randomised pad characters
- cws length ncws lt {
- /datlen cws length def
- /cws [ cws {} forall ncws datlen sub {129} repeat ] def
- datlen 1 add 1 ncws 1 sub {
- /i exch def
- i 1 add 149 mul 253 mod 1 add 129 add
- dup 254 gt {254 sub} if
- cws exch i exch put
- } for
- } if
-
- % De-interleave the codewords into blocks
- /cwbs rsbl array def % Array of data codeword blocks
- /ecbs rsbl array def % Array of error correction blocks
- 0 1 rsbl 1 sub {
- /i exch def
- cws length 1558 ne {
- /cwbsize cws length rsbl idiv def
- } {
- i 7 le {/cwbsize 156 def} {/cwbsize 155 def} ifelse
- } ifelse
- /cwb cwbsize array def
- 0 1 cwbsize 1 sub {
- /j exch def
- cwb j cws j rsbl mul i add get put
- } for
- cwbs i cwb put
- ecbs i [ rscw rsbl idiv {0} repeat ] put
- } for
-
- % Calculate the log and anti-log tables
- /rsalog [ 1 255 { dup 2 mul dup 256 ge {301 xor} if } repeat ] def
- /rslog 256 array def
- 1 1 255 {dup rsalog exch get exch rslog 3 1 roll put} for
-
- % Function to calculate the product in the field
- /rsprod {
- 2 copy 0 ne exch 0 ne and {
- rslog exch get exch rslog exch get add 255 mod rsalog exch get
- } {
- pop pop 0
- } ifelse
- } bind def
-
- % Generate the coefficients
- /coeffs [ 1 rscw rsbl idiv {0} repeat ] def
- 1 1 rscw rsbl idiv {
- /i exch def
- coeffs i coeffs i 1 sub get put
- i 1 sub -1 1 {
- /j exch def
- coeffs j coeffs j 1 sub get coeffs j get rsalog i get rsprod xor put
- } for
- coeffs 0 coeffs 0 get rsalog i get rsprod put
- } for
- /coeffs coeffs 0 coeffs length 1 sub getinterval def
-
- % Calculate the error correction codewords for each block
- 0 1 cwbs length 1 sub {
- /i exch def
- /cwb cwbs i get def
- /ecb ecbs i get def
- 0 1 cwb length 1 sub {
- /t exch cwb exch get ecb 0 get xor def
- ecb length 1 sub -1 0 {
- /j exch def
- /p ecb length j sub 1 sub def
- ecb p t coeffs j get rsprod put
- j 0 gt { ecb p ecb p 1 add get ecb p get xor put } if
- } for
- } for
- } for
-
- % Strange fixup for 144x144 symbols
- ncws 1558 eq {
- /ecbs [ ecbs 8 2 getinterval {} forall ecbs 0 8 getinterval {} forall ] def
- } if
-
- % Extend codewords with the interleaved error correction codes
- /cws [ cws {} forall rscw {0} repeat ] def
- 0 1 rscw 1 sub {
- /i exch def
- cws ncws i add ecbs i rsbl mod get i rsbl idiv get put
- } for
-
- % Place the codewords into the matrix
- /module {
- % cw row col shape
- 4 -1 roll
- (00000000) 8 string copy dup 3 -1 roll 2 8 string cvrs
- dup length 8 exch sub exch putinterval
- 7 -1 0 {1 index exch get 48 sub exch} for pop
- 11 -3 roll
- % 1 2 4 8 16 32 64 128 row col shape
- { % Place each bit of the codeword in the shape, MSB first
- exec
- 1 index 0 lt {
- exch mrows add exch
- 4 mrows 4 add 8 mod sub add
- } if
- dup 0 lt {
- mcols add exch
- 4 mcols 4 add 8 mod sub add exch
- } if
- exch mcols mul add
- mmat exch 5 -1 roll put
- } forall
- } bind def
-
- % Placement patterns
- /dmn [
- { 2 copy 2 sub exch 2 sub exch } bind { 2 copy 1 sub exch 2 sub exch } bind
- { 2 copy 2 sub exch 1 sub exch } bind { 2 copy 1 sub exch 1 sub exch } bind
- { 2 copy exch 1 sub exch } bind { 2 copy 2 sub } bind
- { 2 copy 1 sub } bind { 2 copy } bind
- ] def
-
- /dmc1 [
- { mrows 1 sub 0 } bind { mrows 1 sub 1 } bind
- { mrows 1 sub 2 } bind { 0 mcols 2 sub } bind
- { 0 mcols 1 sub } bind { 1 mcols 1 sub } bind
- { 2 mcols 1 sub } bind { 3 mcols 1 sub } bind
- ] def
-
- /dmc2 [
- { mrows 3 sub 0 } bind { mrows 2 sub 0 } bind
- { mrows 1 sub 0 } bind { 0 mcols 4 sub } bind
- { 0 mcols 3 sub } bind { 0 mcols 2 sub } bind
- { 0 mcols 1 sub } bind { 1 mcols 1 sub } bind
- ] def
-
- /dmc3 [
- { mrows 3 sub 0 } bind { mrows 2 sub 0 } bind
- { mrows 1 sub 0 } bind { 0 mcols 2 sub } bind
- { 0 mcols 1 sub } bind { 1 mcols 1 sub } bind
- { 2 mcols 1 sub } bind { 3 mcols 1 sub } bind
- ] def
-
- /dmc4 [
- { mrows 1 sub 0 } bind { mrows 1 sub mcols 1 sub } bind
- { 0 mcols 3 sub } bind { 0 mcols 2 sub } bind
- { 0 mcols 1 sub } bind { 1 mcols 3 sub } bind
- { 1 mcols 2 sub } bind { 1 mcols 1 sub } bind
- ] def
-
- /mmat [ mrows mcols mul {-1} repeat ] def
- cws length 1 sub -1 0 {cws exch get} for % Reverse cws onto stack
- 4 0 % Starting row and column
- { % loop
- 2 copy 0 eq exch mrows eq and {
- dmc1 module
- } if
- 2 copy 0 eq exch mrows 2 sub eq and mcols 4 mod 0 ne and {
- dmc2 module
- } if
- 2 copy 0 eq exch mrows 2 sub eq and mcols 8 mod 4 eq and {
- dmc3 module
- } if
- 2 copy 2 eq exch mrows 4 add eq and mcols 8 mod 0 eq and {
- dmc4 module
- } if
-
- { % loop for sweeping upwards
- 2 copy 0 ge exch mrows lt and {
- 2 copy exch mcols mul add mmat exch get -1 eq {
- dmn module
- } if
- } if
- 2 add exch 2 sub exch
- 2 copy mcols lt exch 0 ge and not {exit} if
- } loop
- 3 add exch 1 add exch
-
- { % loop for sweeping downwards
- 2 copy mcols lt exch 0 ge and {
- 2 copy exch mcols mul add mmat exch get -1 eq {
- dmn module
- } if
- } if
- 2 sub exch 2 add exch
- 2 copy 0 ge exch mrows lt and not {exit} if
- } loop
- 1 add exch 3 add exch
-
- 2 copy mcols lt exch mrows lt or not {pop pop exit} if
-
- } loop
-
- % Set checker pattern if required
- mmat mrows mcols mul 1 sub get -1 eq {
- mmat mrows mcols 1 sub mul 2 sub [1 0] putinterval
- mmat mrows mcols mul 2 sub [0 1] putinterval
- } if
-
- % Place the modules onto a pixel map between alignment patterns
- /pixs rows cols mul array def
- /cwpos 0 def
- 0 1 rows 1 sub {
- /i exch def
- i rrows 2 add mod 0 eq { pixs i cols mul [ cols 2 idiv {1 0} repeat ] putinterval } if
- i rrows 2 add mod rrows 1 add eq { pixs i cols mul [ cols {1} repeat ] putinterval } if
- i rrows 2 add mod 0 ne i rrows 2 add mod rrows 1 add ne and {
- 0 1 cols 1 sub {
- /j exch def
- j rcols 2 add mod 0 eq { pixs i cols mul j add 1 put } if
- j rcols 2 add mod rcols 1 add eq { pixs i cols mul j add i 2 mod put } if
- j rcols 2 add mod 0 ne j rcols 2 add mod rcols 1 add ne and {
- pixs i cols mul j add mmat cwpos get put
- /cwpos cwpos 1 add def
- } if
- } for
- } if
- } for
-
- % Return the arguments
- <<
- /ren //renmatrix
- /pixs pixs
- /pixx cols
- /pixy rows
- /height rows 2 mul 72 div
- /width cols 2 mul 72 div
- /opt options
- >>
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/datamatrix dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp datamatrix 0.0 0 0 0
+%%BeginData: 102 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04\L5@ ;T FpEbTc FL_
+Q"0Ops'_E-,f4DK Ct)Ou "b# @<, j rA7 ^of Ou" b%Df0Z -E aa/7Am oLs
+AWei&@rH1+D/OEN !0T,k Ec6 /CL ]E So 04f $2D e*R"B9 !. (F(8ou Ou"
+b3@<Wi+@;L!rOu" b1@< -F# +D ,% uF( LLj 05t ??F(
+Js$@j#AlCia0N1N .5SB l @m 1P -6N [FE 2)5B 68E<A
+Wf3'L]NYrOpu>KF D5Z2F* j(N A moL sA Wf3' P!F GY<0B5(@Zm RN0oc8tP)XR
+(F_-_!H]ftD5*C& O5*@^M H]f t &Eck rV1O YEd I?J0)*g/N: DfBf4Df0WZ5
+*@^MP#Q@=FD5Z2F *j'+I? I/T @rH1 +D/O D;@ rH1+D/OEX/ <VeBEc6/C+E
+DCEF-8);1N6cCF( K\OD0 '>4@ UX:eD e*FB @Zm RN1G<L!!0T -I@<,jrA7^+
+J!FCqKH]g@*F(^Y "C6Cc DH'2W OOo^@ >Oo [4NP!5$bP' )pIL]E55P"_
+#iD0'?Q5&,lSP,X U.P'E-L P%'4LP ,X6>P !5% &I=%,:D0'? Q5&-6EP'N4"
+C6ATNC6CcD1G<3GEas#uAKYi2B8?P&P"_#pP!FGY<IL$AI?IP_@UX:nASrW"@<,jrA7^p5Ou%,
+eGC(uSDI[TqBl7RD"*.goOu%NL<+TrWDe*R"B9!(7@<[ktHS8lQF!+q#Ebo<)OpR:-0564BOu"
+b+L]ESoHYFU3@<-0qDN[/0P!FGY<%ha*+C\c"@rGmh+DHW4Oo^@@P"_#iOu$TlF!,3?@s=)\05
+2PCL]ikAOu"b++DQ]5Oo^_%I?J.p@s;u:@s<!M!,@ZjOu%NL<%hj$0o5jm1M(H6De*R"B9!.(F
+(8ouP!+.FAo;+%@;L!-4?SW,7SZ<*Ao9=G5!G,c05YcC+C\c"Ch7LI$'I(tBnubP1G<L!!0T-b
+BcpknEbo<)P!+/T5^eep04S[(EZeh"Eas#uAKY]M99M)M@<-F#Ao;*$@q]:kLgH6-Op#JA@UX:
+nAT!;,P,XUVOp$,@@<,jrA7ZltL]NY>P"UU;P&5P!@q]:k+D,M$G%#3.+C\c"@rGmh+DHW4Oo^
+@AP"_$3Ou"b*+DHW7Oo^_%I=!V]+DHW4Oo^_%I?ITYP#Q:>B-:q3@q]:kP'AWo+DHW4Oo^_%05
+;VEL]NY>Ou%NLAM7nAB-;&4B8?P&P"_#p05YcCCh7K,D0'?Q@ZiN#@s;u:D0'?+AT!;*P&-9fO
+u"b*L]ESo05?:COu%H!+Dl14Ch7LI4aW>WI?IP_@q]:k+Dl14+DI!3Ou$T]@<*K&DD@;;HXh8@
++DQW2k`U0DBcq,G!KmJH1G<JcC5;nR!Ko6eHXg_tEelE48n2OCEel`=@?Lb-+Dl14Ch7L?!KsF
+FAs*:DD0'>4BnueQ!Kp*=3/B8O8s2Ao3Kdg6"FFX&F!,3?D0'>4Bp),F0TrDk$Bf4BF(ZV0L]N
+Y>P"UTbP,XTFL&cgg!Kq[\Bcq,G!g3SI1G<JcC5;nR!Ko6eHXh8@+DN$/BOPq;!KmJHGV<bRBn
+ueQ!Ko5lC*78I!KmJH1OYEdI=#I;@<.0RP$r]IGB4mA+Cf(nEejaZ!Kq[\Bcq,G!KmJH1G<JcC
+5;nR!Ko6eHXh8@+DQW2l]QL&GB4mAL]NY>@q]:kLjtSeP'AWo+DHW4Oo^_%05;VEL]W_?Ou%NL
+<IL$1I?ITYP%?:VGB4m:GB8Q?C6D8R1OYEc05Y9BEbT$)+BosmL^JqFL]N;4L]rS8>p*@-%#>=
+J!Jgc4#D`Cd+BsX3L^o4AL]N;=L]Ld(>DNiH&;U@C!Jh/?!F6gPL_>LVL]N;4L^o4A>p*@-'Sm
+HZ!Jgc4&r6Qo+BsX;L_bdIL]N;GL]Ld(>DO,P(l/3K!JhSK!F6gPL`2'fL]N;4L`D3O>p*@-+G
+_.r!f-o6,_uJ,+BsXILa7cXL]WA^L]Ld(>DO\`.#7q\!f/Od!F6gPLb+?5L]WA6LcC1k>p*@-0
+ShE=!f-o67#1kL+BsXYLbsnhL]WB3L]Uj)>DPP#5_oQ!"Gh#Q!aQpQLe*=mL]iM:L&d<k"C3-S
+Lern(L]iM:L&f#F"C3-SLffI8L]iM:L&g.f"C3-SLgZ$HL]iM:L&hjA"C3-SLhMTXL]iM:L&k,
+,#$i?ULj4`#L^&Y>L&mZt#$i?UL&cm]!/-.4L^&S7n;%?U+BsR#OG3asL^&Y>L&u1I$=+cYL^8
+eLL]N;4L^/_:>p*@-#`'UZ!Jgf5$]"gh+BsX1L`2'ML]N;AL]Ld(>DN]D,_uJW!f.JF!F6gPL_
+,@fL]N;5L_tpK>p*@-&;W#r!Jgf5*/FW$+C1-d06M;RGB4mIDg-8c1G<l\DesJ;@rH1+D/OEX1
+G<Hu!0T-b05VhKATVs,@ric,P"Uro061uTF!,=U!0U!<1G<6VCi^_9L]NZ3Ou"b3AS5[!D287V
+99M(aEb/m,+Dlo:P"Uro062,DG9CaY"HlE@1G<ci@Vd0(L]rr7Ou"b.Ec6/C+EDCEF,0m<AS5\
+>Cm(c\1G<TTDesJ;@rH1)L]VU.B6KGSP,XU#062)OGB4mDEc6/C+ED%+BTc8V1G<cYDesJ;D.@
+L#F!,L7B6KG9Ou"b/@s;u:D/sQ=F!,=0DesKXCkr@[;K?hgGESqg1G<Z^@<iu;EckrV1LkWMP%
+&<=GB8pDHS9;Q@<iu-@;L!rOu%NL<-<5"GB8Q?P&5>^Dg-7FEc6/CP&6?bHS9;Q@<iu-@;L!rO
+u%NL<-;\hCibC4P&5>ODesJ;@rH1)P&6?bHS9;Q@<iu-@;L!rOu%NL<,ZP\H$b]>I?IP_Bcq,G
+!KmJH1OYEt@s<!W@W#\"F-:-^04\L5Ch7K,@s<!W@ZiN#@s;u:>9IF"F*i=u8T&$^F!,"%FDPN
++P,We_!.fQ]K3aWrA79RrAT!;)Oo^@>DI[m3L]N[<HS9)r5*@^9L]NY>L&dL%Ck_rgP%odROo^
+:;JW^%s3/.G4P#-L[!</.\I?IQ>GB8p2Bp(ZCG^Y`GI?IP_@s;C'+EDO4Cm#*f1G<<L@WNZ4F(
+/sK$'I*#!/LYrF(/sA!KsF/056S5Ou$TlF-:!e"r<A=HS8lQ@WQ70AKYK,F-:!QF(/sK;N`haH
+YJ9@P$r\j@s;C'BmO?F!1]3.I=!VWG@GW-H=_g2S!#RUP#Zpn<A.j+@N]0)@WQ70AWd@_1Pc$e
+!Fp=_F(or3L]N[<HS9,s5*@^3G@D\0+CfV:+DN$>F(/sKCh]%5P"Us_I?I-2G@GV9Bcpo0@Zkt
+I@q'L%BcpV&EcY`7+EDO4Cm%\CL]DjdK3aXbI?I,SEcYZ*DeC1sL]N51s*KngL]W`UOuS0s!0T
+s$L&ilh_0qJGI?K4gOu"b3F)5c-L&h:;$'I*#!Jgc2!<7D/3-'(KCi<sL5*AR%5&t^\DeFk.L]
+NZoP'DD<82#")E,ol-H\_`d)2J9UD3@)=!0V2^"FG01Ci<sL5*AR%5&t^\DeG4sP"Ur=L&h7:C
+3"B(Ci<sL5*AQeH]iN7Fbg$GP#Zpn%[&V$@rGpjAof)!L]MO;@s9&9F(/sK;L=3"I?K4gOu%mp
+L]MO;@s9&9F(/sK;L:'2P!5$b@rGpjAof)/+Cf>$AnH*,BnueQWKKo;G\Ms7P,X9;L]MiUC6Cc
+D1Lk?7AnH*,C*7#)AS,Oq+DQ]5P,XU;@rGpjAof)0P"Th:@;Kjp+DI!3EcZ2?De,$IP'DD<87Q
+RLAnH+?!+TqYAnH+?!0TuqF(&m'B-:oO96,)mEc5KOG^Y`G04Sp3AnH*,@rGpjAoib.@rGpjAo
+j,EL]N[<P"_#pL]E53@s;C'P%'4JP,Wd]Bp(ZC1G<6^@N]0)@WNZ+P"Uro04eX&+D#%lF!,1[9
+9M)e!/LYcG@H_EL]N[<HS9K(5%AeGP!5%%ARf2*!0U!<_3-Tc@q(U1L]N[<M#W82HS9,s5*@]T
+E$/_%@Zk28P,X6<P,XU#ARf0lE$06F@rGpjAof)0P"Th:E,ol-P'C_t!0U0*ARf0lE$/_%@N]W
+G!KmJH94_UB+E3K:P/3<+I?IQXP":"a8:?XlDI[m3L'AEV4aShn@q'L%>9IKe@WR>2L]W`5H[V
+&KARf1jL]E5:P"^4NP"ArB1OYEc04T3I+BosuGB8+ZP"B\8@s<9U!.C#_?'7""!/LYrF(9EM!K
+sF/056S5Ou$TlF!,@1GB4m@Oo]-(@WNZ++EDO4Cm&Or95,MhF(/sK;Na\9G^Y`G05YW<F_kW9L
+]iP6P)#&'0JG170JG17L^90?Or9EBL]`J5P)"hpL^90?Ot`%YP%'4QP!5&.P!5%SL^/b9L]DdX
+!KpQJ5*AQp0TrDu5(/SbP')QgM#EKlH]gUL!KpQ@!0Ur@P!3`'Dg-8c!KoX&"Dr0tGB8QCOo^@
+EP%p/ZOo]uo<0B4s!0Ur@D.@L#F-6Qe5)9>Y@rH1)L]ikAL^9/YP,XTFP!4;W<0BF^@rH1)P&-
+9^D/E^'P!4[*M#WWnP'DD<8UZa3Ou"b%D/LJ#H\_`d)2J?WWKKH$!g9OG5(/S(H\_`d)2J<VWK
+KH$!g9OG5(/S(H\_`d)2J?WWKKH$!KsFF5(/S(H\_`d)2J<VWKKH$!KsFF5(/S(H\_`d)3R1>!
+KsFF5(/S(H\_`d)2J?WWI9p>H\_`d)2J<VWI9p>H\_`d)1@YX?'6usA8Pg2+Bs18D/sQ=F,0j[
+WJCP&Oq)hUEc6/CL]N[<L]Mpe%XW&5Dg-8Y!KsF<!e$4AH\_Z=@rH1)L]Wa=I?G(eL]D:%DesK
+N!KsF1Oq)hp!Gu=bCibC5P,Wkm%XX!5D.@L#F,0j[WI9p>H\_c@@rH1)L]N[<I?G(GOu"b%D.>
+=D>C.K0Ec6/CL]`g>L]Djd%XW&5Dg-8Y!g9O=!.C"?HYmeAGB8Q@P,X6;I?G(eL]D:%DesKN"H
+oa4Oq)hp!,Z4aCibC7P,Wkm%XX!3D.@L#F,0m\WI9p>H\_Z=@rH1)L]N[<I?G(eL]M@&DesKN!
+KsF1Oq(c\1G<9U@l#63HQ[0GDg-8Y"-TX>!.C"?HYmeAGB8QAP,X6;I?G(eD/sQ=F,0j[WJCP&
+Oq)hp!,Z4aCibC6P,Wkm%XX!3D.@L#F,0j[WI9p>H\_]>@rH1)L]N[<I?G(eL]VF'DesKN!KsF
+1Oq)hp")VOdCibC5P,Wkm%UG5R04\p01a$"L+Dl.;GB8Q@P,X6;I?G(eD/sQ=F,0j[WGQ-`Cib
+C5P,Wkm%XX!3D.@L#F,0p]WI9p>H\_Z=@rH1)L]Wa=I?G(eL]D:%DesKN!KsF1Oq)hp!Gu=bCi
+bC7P,Wkm%XX!4D.@L#F,0m\WI9p>H\_]>@rH1)L]N[<I?G(GOu"b.D..N/>9Id'Dg-7FD.@L#F
+-:?dM#VmdK3aWr@s<!W@Yb&JWJLS1!./4"F-8_M97;soL]iM6H\_`d)2J9U4d&!GEc6/CP!+s2
+HXpu'0d(=OA9D^"I?IQc!g4FW!0TL.5&G=YGB8QAP,XU-Op#W3DesKN"HmMU!0V2^"FFZr@ko0
+DDe+!,AUT_@L]W_WL]ET$P!3`'Dg-8Y!g9OG4d#qb@rH1)L^9/YL]il(Op$,BD.>@ED/Ws-Ch8
+$X</:U=)2J?W4d&!GEc6/CL]ikAP!+s2D.@L#F,1*bC5;kQ4d#qpA8Pg5+Dl%-F_kW;P#Qda!g
+4FW!0Ts;5&G=YGB8pZOp$,f!g4Fa5&FeJCibbUOo]E:@<@YrP"UW2P!+/&D/LJ5De+!,AUT_@I
+?IQc!g3SI5)99'WKKH$!g4F<@rH1)P%Kk@L]ET1Op$qeH]gXBP#QjmAV^GO!KoX&!KmJH5'r(e
+Or8+HDesKXAs,?6!0Ts;"FGq+Or9EHD.@L#F-:@&!Gu[^FHShN98NV24aU^VDBNe7A9D^"I?IQ
+XP#R5=P,XU.L]W_?P!4['Or9&UP"Lm$D/sQ=F-:-u"Hm_NP!FGY<.0p@L]NY>P!4[(Oo^_0L]W
+_WD.@L#F-:-u5&G=YGB8pZP&c_)H]iN7Fco"<P#QjmASl9mF<GF@Dg-7FD.@L#F-:?q!KsFF98
+NV24aV$_@<<W/Ec6/C+DkV,CibC5P,XU\L]Wa=>DN<9!*tb5D/E^'+Dl.;GB4mD@rH1)P&,pUP
+,VZA!/LY]P'MJ=<%i3)G]P!JDg-7F@rH1)P&-9fOu"b$GAqJAL]ESoL]E53Ec6/CL]N[<HS9)r
+5*@^9+EDL@GB8QAOo^_\L]ET$HZ3\DF!,0>@rH1)P&+>F@rH1)L]W`;H\_]Y!.C#_?'9J]P#Q-
+<EcQ)BF,0m\!Kq2<Ec6/CL]NY>P!+/2Bm=\ABcpo(CibbU>9IEoCiarZ!I^,`?'9J]P#Q-<EcQ
+)BF,0m\!Kq2R!0V25+EDL@GB8QAOo^_\EcQ)BF,0j[!Kq;_"FGq)L]M"(CibC5P,Wd]C6CcD1M
+S%Q@rH1)L]W_?P%odQP!+/2Bm=\ABcpo(CibbUC6AUR!Kq\UP#Q0=Eas$(F,0m\!Kq2<@rH1)L
+]NY>P!+/2Bm=\ABcpo(CibbUC6AU3L]W`SP'DD<<,*Or@rH1)L]W_?P%odQP&4qVEas$(F,0m\
+!Kq2<@rH1)L]NY>P&6?bHZ3\DF!,0>@rH1)P&+lr!Gu[^F<G(;E,Tf\99ONQ@s;m1F!+t:E,Tf
+R!KmJH1OYEcI?I-LP#Qjm83B!fEb0,A061WAD..O,Bm;:MBm=\AE+sQ<05tWMGT^L7Ci_7KBm=
+nGEc6/C05+p2B4uB0Ec6/CL]W`ULe*[e06_,@FD)e,DesKN!g7AU8<PkaDfBe@DfBf4Df0V=5!
+C*"Df0Z-Eaa0TE%`kbASu?nFE2)?P#RT)I?G)'1G<9IFCB#pFE2)?OuSV806M%_@rEuAATDg:@
+Wc^5Df.1:GA2#8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,-DH]iMmATVm"@r#drB75qB
+~>
+% uk.co.terryburton.bwipp/datamatrix 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER datamatrix--
% --BEGIN ENCODER qrcode--
+% --REQUIRES preamble raiseerror renmatrix--
% --DESC: QR Code
% --EXAM: http://www.terryburton.co.uk/barcodewriter/
% --EXOP: eclevel=M
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/qrcode {
-
- 20 dict begin
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
- /format (full) def % full or micro
- /version (unset) def
- /eclevel (unset) def % L, M, Q or H
- /encoding (unset) def
- /raw false def
- /parse false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- /barlen barcode length def
-
- % Default error correction level
- eclevel (unset) eq {/eclevel format (full) eq {(M)} {(L)} ifelse def} if
-
- % Convert from input into message bitstream
- raw {/encoding (raw) def} if
- encoding (raw) eq {
- /msgbits barcode def
- } {
-
- % Symbol capacities
- /fullcaps <<
- /numeric <<
- /L [ 41 77 127 187 255 322 370 461 552 652 % 1-L - 10-L
- 772 883 1022 1101 1250 1408 1548 1725 1903 2061 % 11-L - 20-L
- 2232 2409 2620 2812 3057 3283 3517 3669 3909 4158 % 21-L - 30-L
- 4417 4686 4965 5253 5529 5836 6153 6479 6743 7089 ] % 31-L - 40-L
- /M [ 34 63 101 149 202 255 293 365 432 513 % 1-M - 10-M
- 604 691 796 871 991 1082 1212 1346 1500 1600 % 11-M - 20-M
- 1708 1872 2059 2188 2395 2544 2701 2857 3035 3289 % 21-M - 30-M
- 3486 3693 3909 4134 4343 4588 4775 5039 5313 5596 ] % 31-M - 40-M
- /Q [ 27 48 77 111 144 178 207 259 312 364 % 1-Q - 10-Q
- 427 489 580 621 703 775 876 948 1063 1159 % 11-Q - 20-Q
- 1224 1358 1468 1588 1718 1804 1933 2085 2181 2358 % 21-Q - 30-Q
- 2473 2670 2805 2949 3081 3244 3417 3599 3791 3993 ] % 31-Q - 40-Q
- /H [ 17 34 58 82 106 139 154 202 235 288 % 1-H - 10-H
- 331 374 427 468 530 602 674 746 813 919 % 11-H - 20-H
- 969 1056 1108 1228 1286 1425 1501 1581 1677 1782 % 21-H - 30-H
- 1897 2022 2157 2301 2361 2524 2625 2735 2927 3057 ] % 31-H - 40-H
- >>
- /alphanumeric <<
- /L [ 25 47 77 114 154 195 224 279 335 395 % 1-L - 10-L
- 468 535 619 667 758 854 938 1046 1153 1249 % 11-L - 20-L
- 1352 1460 1588 1704 1853 1990 2132 2223 2369 2520 % 21-L - 30-L
- 2677 2840 3009 3183 3351 3537 3729 3927 4087 4296 ] % 31-L - 40-L
- /M [ 20 38 61 90 122 154 178 221 262 311 % 1-M - 10-M
- 366 419 483 528 600 656 734 816 909 970 % 11-M - 20-M
- 1035 1134 1248 1326 1451 1542 1637 1732 1839 1994 % 21-M - 30-M
- 2113 2238 2369 2506 2632 2780 2894 3054 3220 3391 ] % 31-M - 40-M
- /Q [ 16 29 47 67 87 108 125 157 189 221 % 1-Q - 10-Q
- 259 296 352 376 426 470 531 574 644 702 % 11-Q - 20-Q
- 742 823 890 963 1041 1094 1172 1263 1322 1429 % 21-Q - 30-Q
- 1499 1618 1700 1787 1867 1966 2071 2181 2298 2420 ] % 31-Q - 40-Q
- /H [ 10 20 35 50 64 84 93 122 143 174 % 1-H - 10-H
- 200 227 259 283 321 365 408 452 493 557 % 11-H - 20-H
- 587 640 672 744 779 864 910 958 1016 1080 % 21-H - 30-H
- 1150 1226 1307 1394 1431 1530 1591 1658 1774 1852 ] % 31-H - 40-H
- >>
- /byte <<
- /L [ 17 32 53 78 106 134 154 192 230 271 % 1-L - 10-L
- 321 367 425 458 520 586 644 718 792 858 % 11-L - 20-L
- 929 1003 1091 1171 1273 1367 1465 1528 1628 1732 % 21-L - 30-L
- 1840 1952 2068 2188 2303 2431 2563 2699 2809 2953 ] % 31-L - 40-L
- /M [ 14 26 42 62 84 106 122 152 180 213 % 1-M - 10-M
- 251 287 331 362 412 450 504 560 624 666 % 11-M - 20-M
- 711 779 857 911 997 1059 1125 1190 1264 1370 % 21-M - 30-M
- 1452 1538 1628 1722 1809 1911 1989 2099 2213 2331 ] % 31-M - 40-M
- /Q [ 11 20 32 46 60 74 86 108 130 151 % 1-Q - 10-Q
- 177 203 241 258 292 322 364 394 442 482 % 11-Q - 20-Q
- 509 565 611 661 715 751 805 868 908 982 % 21-Q - 30-Q
- 1030 1112 1168 1228 1283 1351 1423 1499 1579 1663 ] % 31-Q - 40-Q
- /H [ 7 14 24 34 44 58 64 84 98 119 % 1-H - 10-H
- 137 155 177 194 220 250 280 310 338 382 % 11-H - 20-H
- 403 439 461 511 535 593 625 658 698 742 % 21-H - 30-H
- 790 842 898 958 983 1051 1093 1139 1219 1273 ] % 31-H - 40-H
- >>
- /kanji <<
- /L [ 10 20 32 48 65 82 95 118 141 167 % 1-L - 10-L
- 198 226 262 282 320 361 397 442 488 528 % 11-L - 20-L
- 572 618 672 721 784 842 902 940 1002 1066 % 21-L - 30-L
- 1132 1201 1273 1347 1417 1496 1577 1661 1729 1817 ] % 31-L - 40-L
- /M [ 8 16 26 38 52 65 75 93 111 131 % 1-M - 10-M
- 155 177 204 223 254 277 310 345 384 410 % 11-M - 20-M
- 438 480 528 561 614 652 692 732 778 843 % 21-M - 30-M
- 894 947 1002 1060 1113 1176 1224 1292 1362 1435 ] % 31-M - 40-M
- /Q [ 7 12 20 28 37 45 53 66 80 93 % 1-Q - 10-Q
- 109 125 149 159 180 198 224 243 272 297 % 11-Q - 20-Q
- 314 348 376 407 440 462 496 534 559 604 % 21-Q - 30-Q
- 634 684 719 756 790 832 876 923 972 1024 ] % 31-Q - 40-Q
- /H [ 4 8 15 21 27 36 39 52 60 74 % 1-H - 10-H
- 85 96 109 120 136 154 173 191 208 235 % 11-H - 20-H
- 248 270 284 315 330 365 385 405 430 457 % 21-H - 30-H
- 486 518 553 590 605 647 673 701 750 784 ] % 31-H - 40-H
- >>
- >> def
-
- % M1 M2 M3 M4 M1 M2 M3 M4 M1 M2 M3 M4 M1 M2 M3 M4
- /microcaps <<
- /numeric <<
- /L [ 5 10 23 35 ] /M [ -1 8 18 30 ] /Q [ -1 -1 -1 21 ] /H [ -1 -1 -1 -1 ]
- >>
- /alphanumeric <<
- /L [ -1 6 14 21 ] /M [ -1 5 11 18 ] /Q [ -1 -1 -1 13 ] /H [ -1 -1 -1 -1 ]
- >>
- /byte <<
- /L [ -1 -1 9 15 ] /M [ -1 -1 7 13 ] /Q [ -1 -1 -1 9 ] /H [ -1 -1 -1 -1 ]
- >>
- /kanji <<
- /L [ -1 -1 6 9 ] /M [ -1 -1 4 8 ] /Q [ -1 -1 -1 5 ] /H [ -1 -1 -1 -1 ]
- >>
- >> def
-
- /encvals <<
- /numeric 0
- /alphanumeric 1
- /byte 2
- /kanji 3
- >> def
-
- /encs <<
- /numeric /encnumeric
- /alphanumeric /encalphanumeric
- /byte /encbyte
- /kanji /enckanji
- >> def
-
- % N A B K
- /mids [ (0001) (0010) (0100) (1000) ] def
- /mids <<
- /M1 [ () -1 -1 -1 ]
- /M2 [ (0) (1) -1 -1 ]
- /M3 [ (00) (01) (10) (11) ]
- /M4 [ (000) (001) (010) (011) ]
- 1 1 40 {2 string 10 exch cvrs mids} for
- >> def
-
- % N A B K
- /cc1to9 [ 10 9 8 8 ] def
- /cc10to26 [ 12 11 16 10 ] def
- /cc27to40 [ 14 13 16 12 ] def
- /cclens <<
- /M1 [ 3 -1 -1 -1 ]
- /M2 [ 4 3 -1 -1 ]
- /M3 [ 5 4 4 3 ]
- /M4 [ 6 5 5 4 ]
- 1 1 9 { 2 string 10 exch cvrs cc1to9 } for
- 10 1 26 { 2 string 10 exch cvrs cc10to26 } for
- 27 1 40 { 2 string 10 exch cvrs cc27to40 } for
- >> def
-
- % Alphanumeric character to value map
- /charmap (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:) def
- /charvals 44 dict def
- 0 1 44 {dup charmap exch get exch charvals 3 1 roll put} for
-
- /encnumeric {
- /in exch def
- /out in length 10 mul 3 idiv 1 add string def
- /i 0 def /j 0 def {
- i in length eq {exit} if
- i in length 2 sub lt {
- (0000000000) 10 string copy
- dup in i 3 getinterval cvi
- 2 10 string cvrs dup length 10 exch sub exch putinterval
- /i i 3 add def
- } {
- i in length 2 sub eq { % Two final digits
- (0000000) 7 string copy
- dup in i 2 getinterval cvi
- 2 7 string cvrs dup length 7 exch sub exch putinterval
- /i i 2 add def
- } { % One final digit
- (0000) 4 string copy
- dup in i 1 getinterval cvi
- 2 4 string cvrs dup length 4 exch sub exch putinterval
- /i i 1 add def
- } ifelse
- } ifelse
- dup out exch j exch putinterval
- length j add /j exch def
- } loop
- out 0 j getinterval
- } bind def
-
- /encalphanumeric {
- /in exch def
- /out in length 11 mul 2 idiv 1 add string def
- /i 0 def /j 0 def {
- i in length eq {exit} if
- i in length 1 sub lt {
- (00000000000) 11 string copy
- dup charvals in i get get 45 mul charvals in i 1 add get get add
- 2 11 string cvrs dup length 11 exch sub exch putinterval
- /i i 2 add def
- } {
- (000000) 6 string copy
- dup charvals in i get get
- 2 6 string cvrs dup length 6 exch sub exch putinterval
- /i i 1 add def
- } ifelse
- dup out exch j exch putinterval
- length j add /j exch def
- } loop
- out 0 j getinterval
- } bind def
-
- /encbyte {
- /in exch def
- /out in length 8 mul string def
- 0 1 in length 1 sub {
- /i exch def
- (00000000) 8 string copy
- dup in i get cvi
- 2 8 string cvrs dup length 8 exch sub exch putinterval
- out i 8 mul 3 -1 roll putinterval
- } for
- out
- } bind def
-
- /enckanji {
- /in exch def
- /out in length 2 idiv 13 mul string def
- /i 0 def /j 0 def {
- i in length eq {exit} if
- in i get 256 mul in i 1 add get add
- dup 16#E040 lt {16#8140} {16#C140} ifelse sub
- dup -8 bitshift 16#C0 mul exch 16#00FF and add
- (0000000000000) 13 string copy
- dup 3 -1 roll 2 13 string cvrs dup length 13 exch sub exch putinterval
- dup out exch j exch putinterval
- length j add /j exch def
- /i i 2 add def
- } loop
- out
- } bind def
-
- % Determine a compact encoding for the data
- encoding (unset) eq {
- /numericokay true def
- /alphanumericokay true def
- /kanjiokay true def
- /byteokay true def
- barlen 2 mod 0 ne {/kanjiokay false def} if
- 0 1 barlen 1 sub {
- /i exch def
- /barchar barcode i get def
- barchar 48 lt barchar 57 gt or {/numericokay false def} if
- charvals barchar known not {/alphanumericokay false def} if
- i 2 mod 0 eq {
- barchar 16#81 lt barchar 16#9F gt or
- barchar 16#E0 lt barchar 16#EB gt or and {
- /kanjiokay false def
- } if
- } if
- } for
- byteokay {/encoding (byte) def} if
- kanjiokay {/encoding (kanji) def} if
- alphanumericokay {/encoding (alphanumeric) def} if
- numericokay {/encoding (numeric) def} if
- } if
-
- % Determine smallest symbol version to hold given amount of data
- /numchars barlen encoding (kanji) eq {2 idiv} if def
- version (unset) eq {
- /caps format (full) eq {fullcaps} {microcaps} ifelse encoding get eclevel get def
- /i 1 def {
- numchars caps i 1 sub get le {exit} if
- /i i 1 add def
- } loop
- /version i 10 2 string cvrs def
- format (micro) eq {
- /version (M ) 2 string copy dup version 1 exch putinterval def
- } if
- } if
-
- % Opportunistically raise the error correction level for a fit to the same symbol
- /caps format (full) eq {fullcaps} {microcaps} ifelse encoding get def
- /verval format (full) eq {version cvi 1 sub} {version 1 get 49 sub} ifelse def
- eclevel (L) eq {numchars caps /M get verval get le {/eclevel (M) def} if} if
- eclevel (M) eq {numchars caps /Q get verval get le {/eclevel (Q) def} if} if
- eclevel (Q) eq {numchars caps /H get verval get le {/eclevel (H) def} if} if
-
- % Set the control character data for the version
- /mid mids version get encvals encoding get get def
- /cclen cclens version get encvals encoding get get def
-
- % Create the bitstream as mode_id character_count encoded_data
- /enc barcode encs encoding get load exec def
- (0000000000000000) 0 cclen getinterval cclen string copy
- dup barlen encoding (kanji) eq {2 idiv} if cvi
- 2 cclen string cvrs dup length cclen exch sub exch putinterval
- /cc exch def
- /msgbits mid length cclen add enc length add string def
- msgbits 0 mid putinterval
- msgbits mid length cc putinterval
- msgbits mid length cclen add enc putinterval
-
- } ifelse
-
- % Lookup the most appropriate symbol specification
- /metrics [
- % format vers size align modules error codewords error correction blocks
- % L M Q H L1 L2 M1 M2 Q1 Q2 H1 H2
- [ (micro) (M1) 11 98 99 36 [ 2 99 99 99 ] [ 1 0 -1 -1 -1 -1 -1 -1 ] ]
- [ (micro) (M2) 13 98 99 80 [ 5 6 99 99 ] [ 1 0 1 0 -1 -1 -1 -1 ] ]
- [ (micro) (M3) 15 98 99 132 [ 6 8 99 99 ] [ 1 0 1 0 -1 -1 -1 -1 ] ]
- [ (micro) (M4) 17 98 99 192 [ 8 10 14 99 ] [ 1 0 1 0 1 0 -1 -1 ] ]
- [ (full) (1) 21 98 99 208 [ 7 10 13 17 ] [ 1 0 1 0 1 0 1 0 ] ]
- [ (full) (2) 25 18 99 359 [ 10 16 22 28 ] [ 1 0 1 0 1 0 1 0 ] ]
- [ (full) (3) 29 22 99 567 [ 15 26 36 44 ] [ 1 0 1 0 2 0 2 0 ] ]
- [ (full) (4) 33 26 99 807 [ 20 36 52 64 ] [ 1 0 2 0 2 0 4 0 ] ]
- [ (full) (5) 37 30 99 1079 [ 26 48 72 88 ] [ 1 0 2 0 2 2 2 2 ] ]
- [ (full) (6) 41 34 99 1383 [ 36 64 96 112 ] [ 2 0 4 0 4 0 4 0 ] ]
- [ (full) (7) 45 22 38 1568 [ 40 72 108 130 ] [ 2 0 4 0 2 4 4 1 ] ]
- [ (full) (8) 49 24 42 1936 [ 48 88 132 156 ] [ 2 0 2 2 4 2 4 2 ] ]
- [ (full) (9) 53 26 46 2336 [ 60 110 160 192 ] [ 2 0 3 2 4 4 4 4 ] ]
- [ (full) (10) 57 28 50 2768 [ 72 130 192 224 ] [ 2 2 4 1 6 2 6 2 ] ]
- [ (full) (11) 61 30 54 3232 [ 80 150 224 264 ] [ 4 0 1 4 4 4 3 8 ] ]
- [ (full) (12) 65 32 58 3728 [ 96 176 260 308 ] [ 2 2 6 2 4 6 7 4 ] ]
- [ (full) (13) 69 34 62 4256 [ 104 198 288 352 ] [ 4 0 8 1 8 4 12 4 ] ]
- [ (full) (14) 73 26 46 4651 [ 120 216 320 384 ] [ 3 1 4 5 11 5 11 5 ] ]
- [ (full) (15) 77 26 48 5243 [ 132 240 360 432 ] [ 5 1 5 5 5 7 11 7 ] ]
- [ (full) (16) 81 26 50 5867 [ 144 280 408 480 ] [ 5 1 7 3 15 2 3 13 ] ]
- [ (full) (17) 85 30 54 6523 [ 168 308 448 532 ] [ 1 5 10 1 1 15 2 17 ] ]
- [ (full) (18) 89 30 56 7211 [ 180 338 504 588 ] [ 5 1 9 4 17 1 2 19 ] ]
- [ (full) (19) 93 30 58 7931 [ 196 364 546 650 ] [ 3 4 3 11 17 4 9 16 ] ]
- [ (full) (20) 97 34 62 8683 [ 224 416 600 700 ] [ 3 5 3 13 15 5 15 10 ] ]
- [ (full) (21) 101 28 50 9252 [ 224 442 644 750 ] [ 4 4 17 0 17 6 19 6 ] ]
- [ (full) (22) 105 26 50 10068 [ 252 476 690 816 ] [ 2 7 17 0 7 16 34 0 ] ]
- [ (full) (23) 109 30 54 10916 [ 270 504 750 900 ] [ 4 5 4 14 11 14 16 14 ] ]
- [ (full) (24) 113 28 54 11796 [ 300 560 810 960 ] [ 6 4 6 14 11 16 30 2 ] ]
- [ (full) (25) 117 32 58 12708 [ 312 588 870 1050 ] [ 8 4 8 13 7 22 22 13 ] ]
- [ (full) (26) 121 30 58 13652 [ 336 644 952 1110 ] [ 10 2 19 4 28 6 33 4 ] ]
- [ (full) (27) 125 34 62 14628 [ 360 700 1020 1200 ] [ 8 4 22 3 8 26 12 28 ] ]
- [ (full) (28) 129 26 50 15371 [ 390 728 1050 1260 ] [ 3 10 3 23 4 31 11 31 ] ]
- [ (full) (29) 133 30 54 16411 [ 420 784 1140 1350 ] [ 7 7 21 7 1 37 19 26 ] ]
- [ (full) (30) 137 26 52 17483 [ 450 812 1200 1440 ] [ 5 10 19 10 15 25 23 25 ] ]
- [ (full) (31) 141 30 56 18587 [ 480 868 1290 1530 ] [ 13 3 2 29 42 1 23 28 ] ]
- [ (full) (32) 145 34 60 19723 [ 510 924 1350 1620 ] [ 17 0 10 23 10 35 19 35 ] ]
- [ (full) (33) 149 30 58 20891 [ 540 980 1440 1710 ] [ 17 1 14 21 29 19 11 46 ] ]
- [ (full) (34) 153 34 62 22091 [ 570 1036 1530 1800 ] [ 13 6 14 23 44 7 59 1 ] ]
- [ (full) (35) 157 30 54 23008 [ 570 1064 1590 1890 ] [ 12 7 12 26 39 14 22 41 ] ]
- [ (full) (36) 161 24 50 24272 [ 600 1120 1680 1980 ] [ 6 14 6 34 46 10 2 64 ] ]
- [ (full) (37) 165 28 54 25568 [ 630 1204 1770 2100 ] [ 17 4 29 14 49 10 24 46 ] ]
- [ (full) (38) 169 32 58 26896 [ 660 1260 1860 2220 ] [ 4 18 13 32 48 14 42 32 ] ]
- [ (full) (39) 173 26 54 28256 [ 720 1316 1950 2310 ] [ 20 4 40 7 43 22 10 67 ] ]
- [ (full) (40) 177 30 58 29648 [ 750 1372 2040 2430 ] [ 19 6 18 31 34 34 20 61 ] ]
- ] def
- /eclval (LMQH) eclevel search pop length exch pop exch pop def
- /i 0 def
- { % loop
- /m metrics i get def
- /frmt m 0 get def % Format of the symbol
- /vers m 1 get def % Version of symbol
- /size m 2 get def % Length of side
- /asp2 m 3 get def % Position of second alignment symbol
- /asp3 m 4 get def % Position of third alignment symbol
- /nmod m 5 get def % Number of modules
- /ncws nmod 8 idiv def % Total number of codewords
- /rbit nmod 8 mod def % Number of remainder bits
- /lc4b false def % Last data codeword is 4 bits long
- size 11 eq size 15 eq or { % Adjustments for M1 and M3 symbols
- /ncws ncws 1 add def
- /rbit 0 def
- /lc4b true def
- } if
- /ecws m 6 get eclval get def % Number of error correction codewords
- /dcws ncws ecws sub def % Number of data codewords
- /dmod dcws 8 mul lc4b {4} {0} ifelse sub def % Number of data modules
- /ecb1 m 7 get eclval 2 mul get def % First error correction blocks
- /ecb2 m 7 get eclval 2 mul 1 add get def % Second error correction blocks
- /okay true def
- format frmt ne {/okay false def} if % The format must match that supplied
- version (unset) ne version vers ne and {/okay false def} if % The version must match that supplied
- msgbits length dmod gt {/okay false def} if % Bitstream must fit into data modules
- ecb1 -1 eq ecb2 -1 eq or {/okay false def} if % Error correction level must be valid
- okay {exit} if
- /i i 1 add def
- } loop
-
- /format frmt def
- /version vers def
- /dcpb dcws ecb1 ecb2 add idiv def % Base data codewords per block
- /ecpb ncws ecb1 ecb2 add idiv dcpb sub def % Error correction codewords per block
-
- % Complete the message bits by adding the terminator, truncated if neccessary
- /terms <<
- /M1 (000)
- /M2 (00000)
- /M3 (0000000)
- /M4 (000000000)
- >> def
- /term terms version known {terms version get} {(0000)} ifelse def
- /term term 0 dmod msgbits length sub term length 2 copy gt {exch} if pop getinterval def
- msgbits length term length add string
- dup 0 msgbits putinterval
- dup msgbits length term putinterval
- /msgbits exch def
-
- % Expand the message bits by adding padding as necessary
- /pad dmod string def
- 0 1 pad length 1 sub {pad exch 48 put} for
- pad 0 msgbits putinterval
- /padstrs [ (11101100) (00010001) ] def
- /padnum 0 def
- msgbits length 8 div ceiling 8 mul cvi 8 dmod lc4b {5} {1} ifelse sub {
- pad exch padstrs padnum get putinterval
- /padnum padnum 1 add 2 mod def
- } for
-
- % Evaluate the padded message into codewords
- /cws dcws array def
- 0 1 cws length 1 sub {
- /c exch def
- /bpcw 8 def
- lc4b c cws length 1 sub eq and {/bpcw 4 def} if
- /cwb pad c 8 mul bpcw getinterval def
- /cw 0 def
- 0 1 bpcw 1 sub {
- /i exch def
- /cw cw 2 bpcw i sub 1 sub exp cvi cwb i get 48 sub mul add def
- } for
- cws c cw put
- } for
-
- % Calculate the log and anti-log tables
- /rsalog [ 1 255 { dup 2 mul dup 256 ge {285 xor} if } repeat ] def
- /rslog 256 array def
- 1 1 255 {dup rsalog exch get exch rslog 3 1 roll put} for
-
- % Function to calculate the product in the field
- /rsprod {
- 2 copy 0 ne exch 0 ne and {
- rslog exch get exch rslog exch get add 255 mod rsalog exch get
- } {
- pop pop 0
- } ifelse
- } bind def
-
- % Generate the coefficients for the Reed-Solomon algorithm
- /coeffs [ 1 ecpb {0} repeat ] def
- 0 1 ecpb 1 sub {
- /i exch def
- coeffs i 1 add coeffs i get put
- i -1 1 {
- /j exch def
- coeffs j coeffs j 1 sub get coeffs j get rsalog i get rsprod xor put
- } for
- coeffs 0 coeffs 0 get rsalog i get rsprod put
- } for
- /coeffs coeffs 0 coeffs length 1 sub getinterval def
-
- % Reed-Solomon algorithm to derive the error correction codewords
- /rscodes {
- /rscws exch def
- /rsnd rscws length def
- /rscws [ rscws {} forall ecpb {0} repeat ] def
- 0 1 rsnd 1 sub {
- /m exch def
- /k rscws m get def
- 0 1 ecpb 1 sub {
- /j exch def
- rscws m j add 1 add coeffs ecpb j sub 1 sub get k rsprod rscws m j add 1 add get xor put
- } for
- } for
- rscws rsnd ecpb getinterval
- } bind def
-
- % Divide codewords into two groups of blocks and calculate the error correction codewords
- /dcwsb ecb1 ecb2 add array def
- /ecwsb ecb1 ecb2 add array def
- 0 1 ecb1 1 sub { % First group of blocks has smaller number of data codewords
- /i exch def
- dcwsb i cws i dcpb mul dcpb getinterval put
- ecwsb i dcwsb i get rscodes put
- } for
- 0 1 ecb2 1 sub { % Second group of blocks has larger number of data codewords
- /i exch def
- dcwsb ecb1 i add cws ecb1 dcpb mul i dcpb 1 add mul add dcpb 1 add getinterval put
- ecwsb ecb1 i add dcwsb ecb1 i add get rscodes put
- } for
-
- % Reassemble the codewords
- /cws ncws array def
- /cw 0 def
- 0 1 dcpb { % Interleave the data codeword blocks
- /i exch def
- 0 1 ecb1 ecb2 add 1 sub {
- /j exch def
- i dcwsb j get length lt { % Ignore the end of short blocks
- cws cw dcwsb j get i get put
- /cw cw 1 add def
- } if
- } for
- } for
- 0 1 ecpb 1 sub { % Interleave the error codeword blocks
- /i exch def
- 0 1 ecb1 ecb2 add 1 sub {
- /j exch def
- cws cw ecwsb j get i get put
- /cw cw 1 add def
- } for
- } for
-
- % Extend codewords by one if there are remainder bits
- rbit 0 gt {
- /pad cws length 1 add array def
- pad 0 cws putinterval
- pad pad length 1 sub 0 put
- /cws pad def
- } if
-
- % Fixups for the short final data byte in M1 and M3 symbols
- lc4b {
- dcws 1 sub 1 ncws 2 sub {
- /i exch def
- cws i cws i get 15 and 4 bitshift put
- cws i cws i 1 add get -4 bitshift 15 and cws i get or put
- } for
- cws ncws 1 sub cws ncws 1 sub get 15 and 4 bitshift put
- } if
-
- % Create the bitmap
- /pixs [ size size mul {-1} repeat ] def
- /qmv {size mul add} bind def
-
- % Finder patterns
- /fpat [
- [ 1 1 1 1 1 1 1 0 ]
- [ 1 0 0 0 0 0 1 0 ]
- [ 1 0 1 1 1 0 1 0 ]
- [ 1 0 1 1 1 0 1 0 ]
- [ 1 0 1 1 1 0 1 0 ]
- [ 1 0 0 0 0 0 1 0 ]
- [ 1 1 1 1 1 1 1 0 ]
- [ 0 0 0 0 0 0 0 0 ]
- ] def
- 0 1 fpat length 1 sub {
- /y exch def
- 0 1 fpat 0 get length 1 sub {
- /x exch def
- /fpb fpat y get x get def
- pixs x y qmv fpb put
- format (full) eq {
- pixs size x sub 1 sub y qmv fpb put
- pixs x size y sub 1 sub qmv fpb put
- } if
- } for
- } for
-
- % Alignment patterns
- /algnpat [
- [ 1 1 1 1 1 ]
- [ 1 0 0 0 1 ]
- [ 1 0 1 0 1 ]
- [ 1 0 0 0 1 ]
- [ 1 1 1 1 1 ]
- ] def
- /putalgnpat {
- /py exch def
- /px exch def
- 0 1 4 {
- /pb exch def
- 0 1 4 {
- /pa exch def
- pixs px pa add py pb add qmv algnpat pb get pa get put
- } for
- } for
- } bind def
- asp2 2 sub asp3 asp2 sub size 13 sub {
- /i exch def
- i 4 putalgnpat
- 4 i putalgnpat
- } for
- asp2 2 sub asp3 asp2 sub size 9 sub {
- /x exch def
- asp2 2 sub asp3 asp2 sub size 9 sub {
- /y exch def
- x y putalgnpat
- } for
- } for
-
- % Timing patterns
- format (full) eq {
- 8 1 size 9 sub {
- /i exch def
- pixs i 6 qmv i 1 add 2 mod put
- pixs 6 i qmv i 1 add 2 mod put
- } for
- } {
- 8 1 size 1 sub {
- /i exch def
- pixs i 0 qmv i 1 add 2 mod put
- pixs 0 i qmv i 1 add 2 mod put
- } for
- } ifelse
-
- % Format information modules
- format (full) eq {
- /formatmap [
- [ [ 0 8 ] [ 8 size 1 sub ] ] [ [ 1 8 ] [ 8 size 2 sub ] ] [ [ 2 8 ] [ 8 size 3 sub ] ]
- [ [ 3 8 ] [ 8 size 4 sub ] ] [ [ 4 8 ] [ 8 size 5 sub ] ] [ [ 5 8 ] [ 8 size 6 sub ] ]
- [ [ 7 8 ] [ 8 size 7 sub ] ] [ [ 8 8 ] [ size 8 sub 8 ] ] [ [ 8 7 ] [ size 7 sub 8 ] ]
- [ [ 8 5 ] [ size 6 sub 8 ] ] [ [ 8 4 ] [ size 5 sub 8 ] ] [ [ 8 3 ] [ size 4 sub 8 ] ]
- [ [ 8 2 ] [ size 3 sub 8 ] ] [ [ 8 1 ] [ size 2 sub 8 ] ] [ [ 8 0 ] [ size 1 sub 8 ] ]
- ] def
- } {
- /formatmap [
- [ [ 1 8 ] ] [ [ 2 8 ] ] [ [ 3 8 ] ] [ [ 4 8 ] ] [ [ 5 8 ] ]
- [ [ 6 8 ] ] [ [ 7 8 ] ] [ [ 8 8 ] ] [ [ 8 7 ] ] [ [ 8 6 ] ]
- [ [ 8 5 ] ] [ [ 8 4 ] ] [ [ 8 3 ] ] [ [ 8 2 ] ] [ [ 8 1 ] ]
- ] def
- } ifelse
- formatmap {
- { {} forall qmv pixs exch 0 put } forall
- } forall
-
- % Version information modules
- size 45 ge {
- /versionmap [
- [ [ size 9 sub 5 ] [ 5 size 9 sub ] ] [ [ size 10 sub 5 ] [ 5 size 10 sub ] ]
- [ [ size 11 sub 5 ] [ 5 size 11 sub ] ] [ [ size 9 sub 4 ] [ 4 size 9 sub ] ]
- [ [ size 10 sub 4 ] [ 4 size 10 sub ] ] [ [ size 11 sub 4 ] [ 4 size 11 sub ] ]
- [ [ size 9 sub 3 ] [ 3 size 9 sub ] ] [ [ size 10 sub 3 ] [ 3 size 10 sub ] ]
- [ [ size 11 sub 3 ] [ 3 size 11 sub ] ] [ [ size 9 sub 2 ] [ 2 size 9 sub ] ]
- [ [ size 10 sub 2 ] [ 2 size 10 sub ] ] [ [ size 11 sub 2 ] [ 2 size 11 sub ] ]
- [ [ size 9 sub 1 ] [ 1 size 9 sub ] ] [ [ size 10 sub 1 ] [ 1 size 10 sub ] ]
- [ [ size 11 sub 1 ] [ 1 size 11 sub ] ] [ [ size 9 sub 0 ] [ 0 size 9 sub ] ]
- [ [ size 10 sub 0 ] [ 0 size 10 sub ] ] [ [ size 11 sub 0 ] [ 0 size 11 sub ] ]
- ] def
- } {
- /versionmap [] def
- } ifelse
- versionmap {
- { {} forall qmv pixs exch 0 put } forall
- } forall
-
- % Solitary dark module in full symbols
- format (full) eq {
- pixs 8 size 8 sub qmv 1 put
- } if
-
- % Calculate the mask patterns
- format (full) eq {
- /maskfuncs [
- {add 2 mod} bind
- {exch pop 2 mod} bind
- {pop 3 mod} bind
- {add 3 mod} bind
- {2 idiv exch 3 idiv add 2 mod} bind
- {mul dup 2 mod exch 3 mod add} bind
- {mul dup 2 mod exch 3 mod add 2 mod} bind
- {2 copy mul 3 mod 3 1 roll add 2 mod add 2 mod} bind
- ] def
- } {
- /maskfuncs [
- {exch pop 2 mod} bind
- {2 idiv exch 3 idiv add 2 mod} bind
- {mul dup 2 mod exch 3 mod add 2 mod} bind
- {2 copy mul 3 mod 3 1 roll add 2 mod add 2 mod} bind
- ] def
- } ifelse
- /masks maskfuncs length array def
- 0 1 masks length 1 sub {
- /m exch def
- /mask size size mul array def
- 0 1 size 1 sub {
- /j exch def
- 0 1 size 1 sub {
- /i exch def
- i j maskfuncs m get exec 0 eq
- pixs i j qmv get -1 eq and {1} {0} ifelse
- mask i j qmv 3 -1 roll put
- } for
- } for
- masks m mask put
- } for
-
- % Walk the symbol placing the bitstream
- /posx size 1 sub def
- /posy size 1 sub def
- /dir -1 def % -1 is upwards, 1 is downwards
- /col 1 def % 0 is left bit, 1 is right bit
- /num 0 def
- { % loop
- posx 0 lt {exit} if
- pixs posx posy qmv get -1 eq {
- cws num 8 idiv get 7 num 8 mod sub neg bitshift 1 and
- pixs posx posy qmv 3 -1 roll put
- /num num 1 add def
- } if
- col 1 eq {
- /col 0 def
- /posx posx 1 sub def
- } {
- /col 1 def
- /posx posx 1 add def
- /posy posy dir add def
- posy 0 lt posy size ge or { % Turn around at top and bottom
- /dir dir -1 mul def
- /posy posy dir add def
- /posx posx 2 sub def
- % Hop over the timing pattern in full size symbols
- format (full) eq posx 6 eq and {/posx posx 1 sub def} if
- } if
- } ifelse
- } loop
-
- % Evaluate runlength encoded rows or columns in full symbols
- /evalfulln1n3 {
- /scrle exch def
- % Detect runs of 5 or more like modules
- /scr1 0 scrle { dup 5 ge {add 2 sub dup} if pop } forall def
- % Detect 1:1:3:1:1 ratio next to 4 modules of whitespace
- /scr3 0 def
- 3 2 scrle length 3 sub { % Scan odd (dark) runs within bounds
- /j exch def
- scrle j get 3 mod 0 eq { % Multiple of 3 black modules
- /fact scrle j get 3 idiv def
- scrle j 2 sub 5 getinterval {fact eq} forall and exch pop and and {
- j 3 eq j 4 add scrle length ge or { % At either extent of run
- /scr3 scr3 40 add def
- } { % Bounded by dark modules
- scrle j 3 sub get 4 ge scrle j 3 add get 4 ge or {
- /scr3 scr3 40 add def
- } if
- } ifelse
- } if
- } if
- } for
- scr1 scr3
- } bind def
-
- % Evaluation algorithm for full symbols
- /evalfull {
- /sym exch def
-
- /n1 0 def /n2 0 def /n3 0 def
- /rle size 1 add array def
- /lastpairs size array def
- /thispairs size array def
- /sizeadd1 size 1 add def
- 0 1 size 1 sub {
- /i exch def
-
- % Runlength encode (light, dark, light, ...) and evaluate each column
- mark 0 0
- i size dup dup mul 1 sub {
- sym exch get exch 1 index eq {exch 1 add exch} {1 exch} ifelse
- } for
- pop
- rle 0 counttomark 2 sub getinterval astore
- evalfulln1n3 n3 add /n3 exch def n1 add /n1 exch def
- pop
-
- % Runlength encode (light, dark, light, ...) and evaluate each row
- /symrow sym i size mul size getinterval def
- mark 0 0
- symrow {
- exch 1 index eq {exch 1 add exch} {1 exch} ifelse
- } forall
- pop
- rle 0 counttomark 2 sub getinterval astore
- evalfulln1n3 n3 add /n3 exch def n1 add /n1 exch def
- pop
-
- % Count and score same coloured blocks
- /lastpairs thispairs /thispairs lastpairs def def
- symrow 0 get 1 eq {0} {1} ifelse
- symrow {exch 1 index add exch} forall
- pop
- thispairs astore pop
- i 0 gt {
- mark
- lastpairs aload pop thispairs aload pop
- n2 size { exch sizeadd1 index add 3 and 0 eq {3 add} if } repeat
- /n2 exch def
- cleartomark
- } if
-
- } for
-
- % Score dark/light imbalance
- /dark 0 sym {add} forall def
- /n4 dark 100 mul size dup mul div 50 sub abs 5 div cvi 10 mul def
-
- n1 n2 add n3 add n4 add
- } bind def
-
- % Evaluation algorithm for micro symbols
- /evalmicro {
- /sym exch def
- /dkrhs 0 def /dkbot 0 def
- 1 1 size 1 sub {
- /i exch def
- /dkrhs dkrhs sym size 1 sub i qmv get add def
- /dkbot dkbot sym i size 1 sub qmv get add def
- } for
- dkrhs dkbot le {
- dkrhs 16 mul dkbot add neg
- } {
- dkbot 16 mul dkrhs add neg
- } ifelse
- } bind def
-
- % Evaluate the masked symbols to find the most suitable
- /bestscore 999999999 def
- 0 1 masks length 1 sub {
- /m exch def
- /masksym size size mul array def
- 0 1 size size mul 1 sub {
- /i exch def
- masksym i pixs i get masks m get i get xor put
- } for
- format (full) eq {
- masksym evalfull /score exch def
- } {
- masksym evalmicro /score exch def
- } ifelse
- score bestscore lt {
- /bestsym masksym def
- /bestmaskval m def
- /bestscore score def
- } if
- } for
- /pixs bestsym def
-
- % Add the format information
- format (full) eq {
- /fmtvals [
- 16#5412 16#5125 16#5e7c 16#5b4b 16#45f9 16#40ce 16#4f97 16#4aa0
- 16#77c4 16#72f3 16#7daa 16#789d 16#662f 16#6318 16#6c41 16#6976
- 16#1689 16#13be 16#1ce7 16#19d0 16#0762 16#0255 16#0d0c 16#083b
- 16#355f 16#3068 16#3f31 16#3a06 16#24b4 16#2183 16#2eda 16#2bed
- ] def
- /ecid (MLHQ) eclevel search pop length exch pop exch pop def
- /fmtval fmtvals ecid 3 bitshift bestmaskval add get def
- } {
- /fmtvals [
- 16#4445 16#4172 16#4e2b 16#4b1c 16#55ae 16#5099 16#5fc0 16#5af7
- 16#6793 16#62a4 16#6dfd 16#68ca 16#7678 16#734f 16#7c16 16#7921
- 16#06de 16#03e9 16#0cb0 16#0987 16#1735 16#1202 16#1d5b 16#186c
- 16#2508 16#203f 16#2f66 16#2a51 16#34e3 16#31d4 16#3e8d 16#3bba
- ] def
- /symid [ [0] [1 2] [3 4] [5 6 7] ] size 11 sub 2 idiv get eclval get def
- /fmtval fmtvals symid 2 bitshift bestmaskval add get def
- } ifelse
- 0 1 formatmap length 1 sub {
- /i exch def
- formatmap i get {
- pixs exch {} forall qmv fmtval 14 i sub neg bitshift 1 and put
- } forall
- } for
-
- % Add the version information
- size 45 ge {
- /vervals [
- 16#07c94 16#085bc 16#09a99 16#0a4d3 16#0bbf6 16#0c762 16#0d847
- 16#0e60d 16#0f928 16#10b78 16#1145d 16#12a17 16#13532 16#149a6
- 16#15683 16#168c9 16#177ec 16#18ec4 16#191e1 16#1afab 16#1b08e
- 16#1cc1a 16#1d33f 16#1ed75 16#1f250 16#209d5 16#216fd 16#228ba
- 16#2379f 16#24b0b 16#2542e 16#26a64 16#27541 16#28c69
- ] def
- /verval vervals size 17 sub 4 idiv 7 sub get def
- 0 1 versionmap length 1 sub {
- /i exch def
- versionmap i get {
- pixs exch {} forall qmv verval 17 i sub neg bitshift 1 and put
- } forall
- } for
- } if
-
- % Return the arguments
- <<
- /ren //renmatrix
- /pixs pixs
- /pixx size
- /pixy size
- /height size 2 mul 72 div
- /width size 2 mul 72 div
- /opt options
- >>
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/qrcode dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp qrcode 0.0 0 0 0
+%%BeginData: 286 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 06)#BD e* F+L_Q" 0Op
+s'_E-,f4DKCt)Ou "b#@< ,jr A7^ o fOu "b% Df0 Z-Eaa/ 7A moLsAW ei&
+AoD^,@<@M4Ap%p+ Ou"b7 ATD j+D f1 R= F`) 83F HSF5AR fO fG%GKM "a+
+^(ATX(k04f$2De* R"B9 !.< DK BB 2Ou "b3 @<W i+@;
+L!rOu"b1@<-F#+D ,%uF ( LL jD fBf 4Df 0WZY :js=E
+bTE(FEqh:P!+/J! Ko='%< $3- B l@m 1H ]kFA @;L !rP!+/T5^e epOuSV6P,4<
+rNWD;+NHB2`AWf3 'OtDh\ P') p OOu% N5Ot Ccr F_-^lI?ITY P%BdtOuY16E
+-,f4DKCt)Ou%NL< ,Z_tBl @m1 H]g1 5P"B V$E cYf=05YcC+ C\c"@rGmhP%
+'TNOu"b+L]ESo@U X:eDe *F+N WEILN I-gJ D0' ?Q5&-6EP'N 4"C6AUR!KmI
+:C6CcD1QlmD3/@Q j"-Q? @/8]H @P!3W :!K sFF5*C/R30 Ia,"-TX>"-P
+j29RV8N3,N_LP!3 WD5*C2S @VV&,0 5?Y6O u"b #@<,jrA7Zm #F(^:/C6D8R
+1Qk"OP#ZpnAUT_@04J@1Ch7K,@UX:eDe*FB@ZiNY@r,_"ASdA1F`)83FHSe604eX0AThX$+D,P
+4D..OH"D2dmCm$r.NWDk&H]A,#I?ITn1OYEcEaa0=04f$2De*R"B9!(7@<[kjI?IQ@DI[TqBl7
+RD"*.goP!+.FD0'?!BlnD=@UX:eDe*FB1OXU'Ap%p+@ps=t+?Vb>DKTf-EbT#+4?P8j+BsXNLe
+W\TL&ei?!<7cS6A>M]L&oPR![rd)N.qE;L')LO"9+#X9nif1L'<*^"q64j]nQc1L'S6C#e5TqB
+ncsWL'mj5$h8r[dtS=FL(74<%n23a5)'Y8L([79'4ln4Kn^>1L)/!f(^Yp7:PKchL)[C'023Qn
+La%X>Lh2;@Q%f:]L&h7.!@<I$D2&(qL&qC1!aLH]Z\AQ%L')(C"5eh93eddML'9nu"l+h:5_]K
+EL'LP0#Rc@mN.qXCL'd@($B9cJ.>A5bL()ai%A&:aD2&QiL(G\d&GLnkm"Q.NL(gbF'Z#M=gg)
+R1+BsX@LbOWZLi8"JOG3b@L&fPS!<\&W3/.HML&n?0!U5=?7"tb[L'#,E!saP_Ck`&!L'/lY"G
+_^7aG'jnL'>5E"uM&=[Y>"qL'N]m#UP32Kn]mlL'ai6$>tS*onEj.L("BC%'50m=b[CsL(;Oa&
+"-]V80D,m&VqWe3f$[iC5)_HL&dZs!6U#rl\5E_L&jr%!Hs1uX+gZ)L&r!B!a:<[U4ra7L''#^
+".+`EabBp@L'1J1"O)T(#)3;DL'?Cf"tbQ6NJ7Z2L'MFI#NgaHD2&>pL']kp$/C7B6&#`ML'qp
+S$h7LF5!CW.CiF&rDKTf-EbT#+4?P8j+BsX>LbFQYLiS4MRYCg[L&g.d!>gIk:PJn.L&oeY!Z-
+RmCPDn[L'%('"'1-YWeLWlL'3'^"Q>(=8;7;TL'BJh#,m7]4ba3]L'Ub5#d8sh6&#]uL'i'X$Q
++U+_1iA:L(+rR%FKn?ObOBJL(F$5&BJ-19d!Yr'Sn)l4c!9tHA2EgL&eN6!8WA1#)3.;L&l1H!
+MbAMj+[UHL&tJ3!g&-<hM)+dL'*Ei"3Q?$$\ee%L'6Fh"YPN5X+gf_L'D4D#/l6$089_SL'U)"
+#el$"6&#]gL'gJ+$J^@D:50/EL('<$%6n,O;'9)!&;V?_08MuO=,:[KI>.`mL&eoA!8WA1",6h
+)L&k\:!I0>"WeLQ*L&r$C!^;>?KSBQBL'$Ll"#kr:HA2O>L'/*C"@e+KP_K>0L'9&]"dOfGgP,
+o1L'FH.#5a,[983\SL'STM#_e!=qM#;u>q\_k>DNWB'Smui15J2O</=h9HA2E\L&eB2!6Blpj+
+[R:L&i6J!C;G@D2&(YL&o5I!UYUC/VX="L&um[!hb8Lk_90IL'(h<"-/*<^4labL'0Jj"Fc(.b
+(^'=L';UP"darIqM#25L'DsY#4@3N4C''n4tgAjFCcRW4>0AN>DNlI+G_n2:5EY>!/?4.RYCgX
+L&g@j!=snc6&#DYL&n9.!Qp,u#_iCQL'!$_!mZN&(kr,rL'+-("7([E6\Y`-L'7=,"]pE^\V::
+_L'Cn;#/l6$0STh*L'SKJ#`OKDs+Ui0L'e$;$B'WGq1]96>q\np>DNcF)Mfl!5)<0oC5@1j!18
+K@["\S2L&h+*!?[$s983I^L&mg!!Q'QlpkAi(L&u=K!h+iFa+a[(L'(S5"-80=jb<m_L'2(B"K
+$nVn:h*ML'=Z5"p0M`>_WHoL'J<F#Btn-`J+XSL'XW1#od/';'9)!$]#LQ+G_Y+4GZUc<etRH!
+.oq*Q\GLFL&fDO!:bdE!ep_$L&jVq!GmJkMM;/CL&p:g!W@`S2220BL'!Wp!m?<"mtLojL'(t@
+",qs:eqO;3L'1V5"H\?@b_?9'L':)%"cnBAgP,n_L'E-501[3iL^/_GL_tplLb+?CLd6bqLgl0
+aL&d'b!1S]CZ%`7qL&g"`!;_EN(kr&LL&k2,!Ifb(PD0+IL&oPR!WRlU(PVugL&u@L!g89>\qU
+:KL'&3G"%n:MJqaBAL'-%^"<3'u7>:qdL'5DK"Sl=G5!CW8@;]go+?Vb>9H[Pq$A]CP+G__-6&
+8Ep?\il[!0)^5VhP2kL&g4f!="8Z)MS8XL&l"C!KDg7\qU7LL&qp@!^)2=C5)e_L'#bW!t^1h8
+qmG&L'+N3"6tUD.Y\(BL'4c9"SmcU6\Yc$L'?4a"t>92I>.sBL'JT%023QnL^8eJL`2'rLbsoR
+LeEP0Li8"JK8'AqL&eK5!6g/thhD.1L&i$D!B,Z5=bZs-L&m`t!Od^`i._:EL&s)a!bR/gN.qD
+@L'$.b!t'bb983OtL'+c:"6tUD,_cG)L'3lu"NZ<$%#+p`L'=&P02WirL^/_EL_PXbLa@j/Lc'
+uTLern5Li%rrL&dKn!2"uG["\S#L&g.d!:tpG&;C37L&j>i!F1?[G_Q6cL&nf=!R?E#n:gu[L&
+s#_!aLH]HA2L&L'#\U!q_3L(5;oVL')7H".P#Ib_?6#>q\_k>DNE<#`'"I'o3fb,`!h(1l+8M8
+r-K'@#/ZUG_Q3SL&dZs!3LtU^P2a8L&gOo!;M9L%Yb!(L&jAj!D8(ID2&(BL&mQo!Nq.XabBiY
+L&qR6!\&j*:5/gUL'!-b!hk>M]nQUVL'%um+?ht35!G,c05YE5Ec5GrE-!-a4>1SpD.Ra%@j!l
+r02*KmL]rSAL_kjl>q\np>DW<8#`'+L*aLEr+Bs[%M#W;2L_X2K80D,ms+p]2s+p\\+?htB@;K
+mr@;^4)ATDKp+?Vb>9H[Pqs+gl8%Ytj*023QnM#W87L^T"O>q]%t>DW<8s+p]2%:(VX+Bs[%M#
+W;2M#Ua'5!CW/H$!U?4?P8j+Bs[%M#W8;L_!cE9d!Yrs+p]2#D`gp02WirM#W;2M#W8;>q\_k>
+DW<8s+p]2s'6a24tg\[DJEl.4?P8j+Bs[%M#W88L^@??9d!Yrs+p]2"Gd=h02WirM#W;2M#W87
+>q\_k>DW<8s+p]2s'6a24s3$QOu"b&DI[iuCi^^]4>1SpD.Ra%@u(+<@;Kmr@;^4)ATDKpL]K/
+<H$!VR!\\=tDJEmA"$So31G<<W@ribT4>1SpD.Ra%@kVD2@r?F+ATDKp04A[9BOPe$D.Ra%@kV
+D2@ps1mBOPe$D.Ra%@kV;:FCd+:DI[.$FCd+@@;]go04f$2CLM*qBcoT'Ou"b.Bk29->E/h?0J
+G5A">DMa0TH8i0eb;A">MSa0O9ht05YE6F!*S-024/D>E/]>s+p]2s'79P1*Be]!AKN70o5jcs
+'79P1E]n^!\c<g!\c?h!\lBh!\lE80248G>E/e>0JJLh0JG5A"#)G`NWUsi0jTS9L]N;[H\_`d
+V2,JA5*@U:Bk2:5P"7c#Ou"b$@ki(D3?VO^$A]"E#`&alOu"b$@kfZZD_a3n>DN]D$]#@M$=/f
+N04SKI2frsp0HaSU%YtRM&;Ua#Ou"b$@r,^oF!*S-024/D>DNB;s+p]2s'79P1*BeW"Gd/9s+p
+\\0245F>DNH="Gd2:"'mQS1a$"Y#)EG="c*:eL]N;4L^AEa!g9C9$BdT90OnTIFDj0fP":B9L]
+N;MH\_`dV2,JA5*@U0@kfZZD_a5!P":BJL]N;[H\_`dV2,JA5*@U0@koubD_s.rP"7c#Ou"b$B
+OPpu@;q5Y0JP==1c70M3&s8k6UX@47n?3D92&&T:Jand;cHat='/U/+=&6_.kNA,3g)9P@q]:k
+G%#3.Lb+]HOu%moL]N;_H]g?uBOPpu@;qAnP"Us%@q]:kG%#3.L]`G6P)#3FI?I,SASu!qF_t]
+1Bk)KCBl9(tOu"b0F`\a?DN\Ib$Bf4]"-QQ<!KmJHV33VfBnubP1G<L!!0T-bBcq,-P%'S;H]g
+XBP#Q-<Bl9)CL]Wa=P%K'$$8=.f0JG170JG2:$Bh6K)3QsnDBNYL"-Q?@/;O@`$Bh6K0TnDY@Y
+bAS5*Dn.5*C1EBcq,G"-N\J1OXUa+DG_V@Yb)KWKKDkNX%6l0JG170SfssV32^Z3,*7QBnuhR9
+Tgr_!f.)EV33Nq30Ia,#Eh96WKKH.GqWkSBnuhR!Ko6eH]A4_0JG2:"HoUE)3QsnDBNYL!Kp->
+/;O@`"HoUE0TnDY@Yb/M5*Dn.5*C1EBcq,G!KmJH1OYEdI?ITn3,`q]P!3WD5*C2S@VV&,05?Y
+6Ou%NLAT)^5L]D1Q9RW'6Ou"b&DI[*kE+iZtF_t]1Bk)KCBl9(tOu"b0F`\a?DN\Ib$^,=^!g6
+H;!KmJHV33VfBnubP1G<L!!0T-bBcq,-P%'S;H]gXBP#Q-<Bl9)CL]N[<P%K'$$SX7g0JG170J
+G17L^TBBOr9EB@q]:kG%#3.+DG^9Bp),P98G0_Ch%-eEctl-F!,17+DHW4Oo^_=P"Ur=L]WA?P
+,4<qOuSV6L^TA0P,XU.P'J]p+DHW5Oo^_%I=$tY0JG170JJ:eP,4<ZOuQrb@<-O"Ci^_5DBNYV
+99Mr(!f.&DV33Nq30Ia,#*M05WKKH.GqWkSBnueQ!Ko6eP#[Z)Dfp/b5&-6EP'N4"C6ATNC6Cc
+D1OYEtDfp/X!,@ZjI?G)'1G<<W@q'_*AU?(EDN[2H1G<ZhF<G:8P%'4QP&-;XOu%moL]M4-P%'
+4JP,Wd]Bp(ZC1QD_p0JG170JG2:#a2$I)3QsnDBNYV99Li^!f.,FV33Nq30Ia,#a.B7WKKH.H#
+IhI+DHW;P&,pVM#WWnP'MJ=88iWmI?G)'1G<<W@r#LjC2&#JBl9(tOu"b0F`\a?DN\Ib!g6H;%
+?bOjV33VfBnubP1G<L!!0T-bBcq,-P%'S;H]gXBP#Q.5+DI!3L&h:;Ch[c0BnueQ!Kp*=!KoEq
+!!(qBP%K&o!!%R8I=$VI!5UpKP#[[EOuS9mOq39I^liMs5)'(;Op$pKNX[Zr0JG170JG170JG2
+:%?dQN)3Qt8",Qu?LPQ"f%?dQN0TnDY@YbJV5*Dn.5*C2S3,`q]P!3WD5*C2S@VV&,05?Y6Ou"
+b*+DHW5Oo^_%I?J/[F``%p%[&VZDI[TqBl7RD"a+^(ATX(uHS98ZD.Ra%@rH-kGp%3LF_-^l04
+A[9BOPe$D.Ra%@rH-kGp%3LF_-^l05G!6C2%U%@<iu;EckrV1G<3_FCfB+@<iu;EckrV1Lad5C
+h7L?!g7;S!0V2G05G!6C2%U%@<iu-@;L!rOu%NL</:O1!FfJXCh7L?!KsF/056S5Ou"b#@<,jk
+@<*K"@<,jrA7ZltP"Uro@UX:eBOPq;0Tp$W@<,jk@<./aP#.<^HS98ZD.Ra%@rH-kGp$^-Cia0
+N1OYEc@q]:kG%#3.+C\c"@q]:kP$jGlHS8fDE+iZtF_t]1Bk)'s@<iu-@;L!rOu%NL<,%-iP%o
+dQP!+/$@<,jk@<.)&JWaVS@<,jk@<.)&T9<$6EaiHt@q]:kL&g.pAn#1h@q]:kL&gP&:m,j^"F
+De;@;]goDeid,+D,%uF(LLjI?IQXP#Qjm87HjdAT)?mH$_2UDI[TqBl7RD"CcXuAWeitP#Q4*D
+JEm(CLML804f$2De*R"B9!.2@;]goOu%NL<+0T^BOPe$D.Ra%@rH-kH$_2UDI[TqBl7RD$t3sk
+BOPe$D.Ra%A!/WrP#Q=AD.Ra%@rH-kH$_2UDI[TqBl7RD#B"[$ATDKpOu%NL<.0p/05boL@q]:
+kF!+q#Ebo<)+D#G#De*R"B9!.2@;]goP!+/J!g6H0P#RT#G%G]8Bl@mL"a+^(ATX(uHS8l;E-!
+.6DfT]'FH-K9F_klW4aUd`Ci!TiE-$GS+Dkh&Ec5GrE-$Gj<Fp&XDe*R"B9Go!@r,_"ASdN&Ou
+"b*L]NYpHZ!tC@q]:kF!+t$E-!.9L]N[<P"UsHH]gXBP#O)K+DHW4Oo^_%I?J.pG%G]8Bl@l3B
+o!+P!g9CC0Tn5(DfT]'FH-NABk)1%P!+.FG%G]8Bl@mL!_jen!g9CC)3Qt&ATDj+Df1@3P!5%S
+Ou%NL<.0p/04SF0F!,(5Ec#6,NW`s:Ci#7tHY.D:Ch$mmF+&BXD/!L#De!3pF+'3OASu!rA8,p
+oP"Uro06UoIG%#20AoD^,@<@M4Ap%p+P!+/8ATDj+Df1^hL]N[<I=$-KEcYr5DMS=V98G<cWI9
+q0Ou$ZZCh7d$ClSNiP!+/0F_tW%@<-E3@ps=t027U&G%G];@;M*"P$r\jARfOfG%GKM!DS_5I?
+IQXP#Q"&Ch7d$ClSNjP!+/0F_tW%@<-E3@ps=t02[m*G%G];@;M*"P$r\jARfOfG%GKM!E#"9I
+?IQXP#Q"&Ch7d$ClSNnP!+/0F_tW%@<-E3@ps=t01_7!G%G];@;M*"P$r\jARfOfG%GKM!D&A0
+I?IQXP#O)OBk/?'Bk29-G%G]8Bl@mP94`!NG%#3.+D#G#De*R"B9GoN99M(a@q0=dDBNG!Ch7L
+*+Eh=:F(oQ1P"TA(@s29sF!,%3@rGmlDJ,,*P"Uro04f$2+C\c"@rGmh+D#G#F!,%3@rGmlDJ,
+,*P%9_?Ou&+00JG170JG170JG170JG17L]CppCh7LI9OhRKAT![-Or9EB@UX:nASrW%DI[TqBl
+7RD"`%OaC2&hoH\_`d;LO^-Ot;Cj@q0=dDN^iZ0TnDY@UinaAT!YpP,XU.P'J]jA!0$=1G<TdB
+4>RsF!,=6A<LD3@r,^oOo]-3A!1;a!Ks:B1Mq2G@VKq*L]D:+A<M4TF(\rrFE8RABk3B9@q1[I
+D0'?!BlnD=D/!OD@UinaAT!Y3ASu"@H$tiU05Y9BEbT$)+BosmNWj96@rcLJ!_kD*$]&8J@u)C
+7L]WBBLgu6N>p*@-!Jg`3s+p]2s+p]2s+p\\+C-*oNWj96@rcLJ!_kG+%>\JL@u*rcL]rS=Lgu
+6N>p*@-!Jg`3!Jg`3s+p]2s+p\\+C-*oNWj96@rcLJ!_kJ,%u=\N@tju:>DNK>#`)uH@pL3]L]
+N;3L]N;3M#W;2M#W;2>p*Dq>E/l(Bk)1%NWMp3L_5GPLgu/>^fuU#L^JqJLgs^5>DN<9!/LZ3!
+/LZ3!/UZ2s'6aQ+Bsj/Ap%p+NWCkj'o6=T@tk!1>DNN?$A].I&R?M`L]N;3L]N;3L]N;3L]N;3
+>p*Dq>E/huF_klS!A]HKL_>MRL&kpkL^JqLL_bdd>p*@-!Jg`3!Jg`3!Jg`3!Jg_]+C-*oNW`s
+:Ci#+41Pd'-(5QIT!]O>>%u;-[,`"!W+BsX&L]E53L]E54L]E54L]C^'>p*@3"D2dmClSNQL`q
+QmLgu/A-X2B@La7d5Ld55g>DN<9!/L]4!/L]4!/Lc6!*p^Q+Bsj/Ap%p+NWD"n-&<Uu@tk+F>D
+O2R0Si8U=C!%RL]N;3L]WA4L]WA6L]WA6>p*Dq>E/huF_klS!B,`_La%XbL';3oLa7dALgZ$X>
+p*@-!f-i4"Gd&6"Gd&6"Gd%`+C-*oNW`s:Ci#+42i'&A(5O;l"s@-+.#:EMCk_qA>p*@-!f-i4
+"Gd&6!f-u8"Gd(a+C-*oNW`s:Ci#+43/B;F(l0Yr#EW/G0Sihc!/-(,S6[7AL]WA4L]WA6L]iM
+8L]iM8>p*Dq>E/huF_klS!BGrnL`2(%L'\u,LcgK2L&dm$!5Mk_>DN?:!/L`5!f-u8"Gd2:"C3
+-U+Bsj/Ap%p+NWLphLcL82Lba\lcs);sL&cg[!5O<hi*@I0L]WA6L]iM7L^&Y:L^&Y:>p*Dq>E
+/huF_klS!\lEc4bt/82MMX5>DQ+1!1&?>i._7<>p*@-"Gd&6!Jgl7"Gd2:",I4g+C-*oNW`s:C
+i#+50f"PNL`hL7L(9;LLgYr;Y_E/]L&j,:+BsX'L]WA:L]WA8L^&Y?L]h!+>p*@3"D2dmClSQO
+1PeJU,)AF;&>36`BSHN,L&iEO!FT1U>DNE<!/Lo:!Jh#;"GdJB"C3-U+Bsj/Ap%p+NWLplLe3C
+@Lb=Dp.pIgSL&fk\!C2A?J6a:%L]`G6L]iM;L^T"BL^T"B>p*Dq>E/huF_klS!\lQg9o'^D0SU
+9g>D<-2L&g^t!GI2gY[&AUL]rS8L]rS<L]rS>L^T"D>p*Dq>E/huF_klS!\lTh;2?-H156S1>D
+<->L&i-G!LSTBi*@I0L]rS8L^/_<L_#:CL]`GB>p*Dq>E/huF_klS!\lWi<JV]P2MN)r>D<-VL
+&j,c!PjEk'O;hcL]N;8L^Jq=L]N;BL]WAE>p*Dq>E/huF_klS!\lZj=bn,T3//D'>D<-bL&k2,
+!VhBN9O/cFL]rS8L^Ak?L_5FDL]WAG>p*Dq>E/huF_klS!\l]k?&0PX3ee^Q>D<-rL&l+F![<@
+#MHq?/L]`G9L]`G@L_5FGL^AkK>p*Dq>E/huF_klS!\uHc@>H+`5)(6H>D<.9L&ms%!a(0Y]Nl
+XaL]`G:L]`GBL_#:FL_#:K>p*Dq>E/huF_klS!\uKdAV_=^157&">D<.9L&nl?!ec:0mTgr>L]
+iM:L_5FCL_5FIL_GRK>p*Dq>E/huF_klS!\uNeBo![`157/U>D<.UL&p(a!j[O_0O5f*L]WA;L
+_5FCL^/_ILa%WT>p*Dq>E/huF_klS!\uQfD296h2MN]W>D<.gL&q((!q(dFKO#^)L]iM;L]iMD
+L^T"KL_,@P>p*Dq>E/huF_klS!\uTgEJPTj2MNgu>D</0L&s&`""K$-^g/'eL^&Y<L^&YFL^T"
+ML`V?R>p*Dq>E/huF_klS!\uWhFbh/r3efAb>D</<L&t&'"(m8j)I4IiL^8e>L^8eGL^/_OL_b
+dU>p*Dq>E/huF_klS!\uZiH&*Mt3efLk>D</TL'!$_"1X'g<a?hPL^Jq>L_GRIL`D3TL`qQW>p
+*Dq>E/huF_klS!\u]jI>B)'5))'C>D</lL'##B"8mlVY[&AUL^8e>L_bdKL^8eTL^](Z>p*Dq>
+E/huF_klS!\u`i!.fqELba]I$X8>dL5#c^L'/EL"RKD:>DNB;$A\e?(Pi3M+,C;\+'g!p+Bsj/
+Ap%p+NWLsrL&cp`*f)_/5T<p^!MkGP&;C=0L':%P+BsX,L^/_NL^/_:La@ijL`0PA>p*@3"D2d
+mClSQQ0STRaL`2(+L."[=L&o/G""]00Y_E=S>p*@-"c*MA'8R!O%u;*Z(Pir7+C-*oNW`s:Ci#
++51GOUaNJJX33/0tn>D<1:L'(t@"U]tfqHY4JL^f.BL]WAQLan2]L_kje>p*Dq>E/huF_klS!]
+)Td!0N']LcgDd$X8>dre:NFL':&$##nkN>DNlI!/Lu<(PiES,D["h,@)Et+Bsj/Ap%p+NWM!mL
+&dKp*f)k3;4CdE!ZZpse:n."L'Fed+BsX6L]N;AL_Y^dL_GRPLb;sU>p*@3"D2dmClSQQ1kl!u
+La%X=L/prOL&sDj":U"gqM#4\>p*@-%>Y4E%YtpW/;OOe4,<oC+C-*oNW`s:Ci#+51GsmeSVS>
+C2MPAm>D<2?L'/oZ"u_2@@U1*\L^](EL^](XLaRugL_bdq>p*Dq>E/huF_klS!])`h!252cLba
+]kcs)5+=G?rdL'E`o#J==b>DNK>%Yt=F,)@k-$A\b>5[>L<+Bsj/Ap%p+NWM!qL&e'+*/HM-A)
+LRG!d9;$["\eML'TVA+BsX6L]iMSL^o4qL^JqTLb;sU>p*@3"D2dmClSQQ3/.F4L`hL7L1q3'L
+'!To"RLjJ7"tuK>p*@-"Gd\H%>Z-_0Sg3p.Yo3Q+C-*oNW`s:Ci#+51HC0iXb[mO2MQ*W>D<4+
+L'8iW#G-YV#$i?UL_PXJLa\&aLb"8sL^Jr*>p*Dq>E/huF_klS!]2Tc!3q>$LcU93cs)5+mY1m
+ML'RL.$%?/&>DNrK#)EnJ+,D+s,)?qh4^B19+C1-d04eX0G%#3I"ADNe87c:IAThX$P)YWIP%'
+S<P')pOP')pD0564BOu%G<D'3\,FE2)*F!,1[99M(aAo_a1+Dlo7P"Uro06UoIF!,=U!Kp*=1G
+<f`H=\49L]W`4Ou"b"F)WlWD28:W99M(a@<6BD+Dlo;P"Uro05bWFA0>`F"d2NA1G<WUGB4mED
+/Ws@#a/)K1G<cXBlkJ8D/Ws@#a/qc1G<QS1h%S>@;L!rOu%/nH=_m?P!*l#H=_mCP!+tKHS98H
+GB4mE@s<!M!KmJH1G<cXBlo.2Ou"b-@l.X;FE2M8Ou%NL<%hfmGB4mDL^'#8ARfP"@;M*"Ou"b
+ %@s;u:DI[m3+D# &,F-< Mc1G< 9UDe' u$ @s< !M#a0" ?@l.YAL
+]i-QL]Djd<Ka>E1 G<< L@PK! BL^0) 9A RfP "@; L`$P
+&-:SOu"b&@q%29D 28F[9 4_ ULG%# 3C!g 7A U!K mJH99 M(a Deid, +EVX
+HAWei]DfT]'F<G1 9D01q XHS 9;Q @<iu -@ ;L! rOu%NL <- DhnF(o Q1N
+WjQCF(KHVD0BK2F (oQ1+ Eh= :F- : C'" FDe ?CL MK2Amo Ls AWeitP #Q:
+>B4>RsF-:!CD/Ws J:jXj 6CL MK2 Am oL sAW eit P#Q"&@ PN ]=P!*A d@P
+Wc>P!+tKHS9;Q@< iu-@ ;L! rO u% NL< ,ZP \H$ b]>I
+?IP_Bcq,G!KmJH1 OYEt 0 4o -C D.. N/A o_a1 Ou"b7
+ATDj+Df-\@ATDjT 1G<9KE +0r # @s; u: ARf1 (+D #%l16M[$;N `ghARf[g+Dt
+\5F!,%(@PK!:@q% 3V!Kp> k@r P n?WK K%jF CfK 0F!*S-0240 ]"#)D_0243^
+"Y_Va0JG.S1QD\o 0JG170 JG. S1l_ kr0J G17 0JG175!G,c 06CcGD'3q3E
+c#k?G%G]8Bl@mP@ !d!,E c#k? G%G]8 Bl@m P97 ;/I">DM`0R ]*aOu"b5ATD
+W1FCfK0L]Ct&De' u-F(\ rrFE< USP,W P7E c$tKL]W_WP #-Lg5(/SnP'
+)p]Ou$rrB4>RsF- :!SATDX N@ZgbT V33fo !,Z di@VKq*P'N 3MD0'?!BlnE
+Z@WZ1%D3B/tD0'?!BlnEZ5*@]TE+*9"A8Q6qP,4<tL]E53E+*:?@Yb&JWI&SmA<K-40Tp[/P"9
+P#A;C5&F(\rrFE<Uj05t?1F*)GD+Bsj30ekC:0ek@9NX.<m0JP780JQjr1G<]UA8ZO,L]ESoD0
+'?!BlnEZ@Yb;Q2NeW-#a0"e/;ORBD/Wr-Ch#;2H\_iRH\_]NP#[[EHZ3D(P!3hnA92j5F!,F1A
+8ZO,P"Us`05t?1DKTe=E+*9pF_up8Oo^@?P%p.9I?I,S@s;u:A7Kh)OpR:-L]E53@s<!W@Yb&J
+WI$:.P!5$b04Jm1GDHNf1MgPX@N]/'@s<!W@Yb&JWKKE-"FDe2E+=*J"HkQhP#O)EG@D\6@:UK
+jL^9/[@W5h$P"_#p04T3^!0T-o!/LYbE+=*J!KsF/056S5Ou"b$G9CC>L]V%)@s9&0P,X6<P,W
+#;E0;b^G@D\/P"UTbP,XU\Oo^_%I?I-2GB4m:+CfVYG^Y`G062,BCi<r/>DN<7!<7D/3/@X!Cm
+$c4!<A9TH\MPAP/2R0<.0p^?'6usEcZ&8B8-EeOpR:-L]N;4L&h7#OuRK'@;KjpP!5%%P!3o-C
+i<sB",Hu@LQZn1P"76HF)Z/<A:'+6Or9&UP&6@GL]ETTOp$,PF)5c-P!5%%P!3o-Ci<sL5*AR%
+!JUUSP%o#Y@;KjpP!5%%I=%-"P')Q\I?ITYOq*X204Sp3AnH*,>DN;k@rPn(L]DjdK3aWrL]E5
+3ARf[gL]N[<HS9)r5*@^3De3NmF!,1Q!KmInDe3NmF!,1[99OO6M#W83HS9,s5*@^3De3NmF!,
+3?@rGpjAof)0L]N[<P"T;'AS,Oq+DR'4EcYZ*DeC2,P"Th:E,ol-P/3<+I?I-2De3NmF,0g+De
+3NmF,0gZ96,)^Ci<r/Bp),0F)Z/<A<M1cP"769De3NmF!+t2AS,OqL]Cq'AS,OqP%'4JP,XU<O
+u"b3F(9-!ATN2OEcY`7F-8_M1G<ciDIal1F(9E8P%'S1062,DGB4m2+EDO5GB8+ZP"B4pE+40M
+!.C#_?'7""!/LYrF)GNE!KsF/05Zk9Ou"b,+EDO5GB4mDP"UroL]E53ARf[gL]N[<HS9,s5*@^
+BF(9E8+Di69Oo^@>Oo]'2AS,Oq+D#&%@N]EKWJCS<WKKni+EDOBEc5J2EcY`7F!,<BC6AUR!Km
+JH99R,SG^Y`GI?I-AF(9E8+EDO@A0>GnE+4u(I?G)'1G<9KGB749ARf1(+D#%l16M[$$'I(tAR
+fq*@N]5l@PK!:@q%3V!KmbP1Pc$e!G,bM0o,jnWI$:4P!5$bA7Kh)@N]A-@s;u:BcpqrE+4uHA
+7KRfP"_$`ARfq*@N]A-A7Kh)@N]BJ96,)`De*F#P'DD<8;I8%!G,bM15GsoWI$:4P!5$bA7Kh)
+@N]5l@PK!>Oo]':F!,%(@PK!9@rPn?ChY#&@rPn5!KmJHCm"g0@rPn5!KmJH9TjX3@s<!'+D#%
+l0d(1n!G#\aF(-8'@q%/8Bp&L[96,)`De*F#P'DD<82"IsF!,@1GB8oROu"b$GDH6^1Pc$e!G#
+\Z@XBbBP!5$bL]E53ARf1(+D#%l16MZo!KsF/05?Y6Ou$epA7Kh)@N]EK99NbIAp\$3F!+t:+C
+nu+F(-8,P"TMP99ONQ@s9&*GDH9_!Ko6eP#Qjm8:?XlL]E53ARf[gL]N[<HS9)r5*@^X!/LYe@
+q%/8ARf1)Oo^@>P,Wd]C6CcD1LkWM+CfU<ARfq*@N]EK950P^P'AWiG9CC>L]NY>Ou%NL8:?Xl
+Eaia)L]ET7HS9>HA0>B+F-:!g!KmJH$'I)`@:Y/o@s<!WH#R2&+E1b"P%'4JP,X6;P'AWiGB4m
+G@:YNWI?IQG@l.YA+Cnu+F,0j[WJCRm@s<!M!g9O0056S5Ou$TlF!,0>@s;u:Bp),F&!@'O"Hj
+:YG[kr=+DDs.GB4m@L]NY>P"UW/Oq3?ZOp#9=F!,1[99O=YG^Y`G@s;u:DI[m3L]N[<@s;u:DI
+[m3L]N[<P"UTAOp$RDOq3_#I?IP_E+sQ<+Bot0BmO>5F(or3P&,K$s*^&_?'6usEG]lG+EM7CA
+Wgkm!I^+@Ou"b'E+*i2>9I.+!Jgc4!Jgc4!Jgc4!Jg_]+BsX&L]E52L]E52L]E53L]C^'>DN<9
+!/LZ3!Jgc4!/LZ3!*p^OL]N;3L]N;4L]N;3L]N;3>p*@-!Jg`3!Jgc4!Jg`3!Jg_]+BsX&L]E5
+2L]E52L]E53L]C^'>DN<9!Jgc4!Jgc4!Jgc4!*p^OL]E52L]E52L]E52L]E52>p*F91Pc$e!G6
+:ZFHU*h!KsF/06r^EOu%moL]M+,@<@;*P"UsIL]N[<HS9W,5*@]TAoM3%AoM1#+F0,CG`k^_1N
+7&QF!,]MGp%*DFs(C9@ZktJDfT]'FH-K9F_klW4aV-^G]P!KBmO>5G`o%^!KsF-+E;7A+D,S%P
+'Cq[G]P!P+EM7CAKZ8]WJCS<WGucu+D,S%P'DD<<.0p#I?I,S@;KRoE+*i2>9I.+!Jgc4!Jgc4
+!F6gPL]N;3L]E52L]Ld(>DN<9!/LZ3!/LY]+BsX&L]E52L]E53>p*@-!Jgc4!Jgc4!F6gROu"b
+1F`_&.B5VZsFF,Z[H'1@S1G<]lP!5$bL]E53L]i&XE+4toOu%moL]N;7HS9>HP!5$bE+sQ<+E2
+QJE++n1E-WRF@Zgb3D0@%1ChIX)@<<W2@ZjB'@?O9HG^Y`GI?I-LOq*X2@<6BCL]Wa=@<6BD+C
+T>116SVXBmO?H%?d];056S5Ou$g."E8L*@;KRoE+*jE"DJutF`_&.B5VZsFFB<C@<6BCL]Wa=@
+<6BD+CT>116SVXBmO?H$'M9706iXDOu$NfE&*4NP,Vl2E&/VFF)WmtWH2d"AV^YUWI$:DP!5$b
+GT_8SE-682ChIX)@<?p\8:?XlAoD^,@<@M4Ap%p+P!+/J#`&M&BmO?H$'M97056S5Ou%&kG]P!
+AL^%j9Fs(LT!KmJ>!g7;]G]7AAF,1$7+E;7A+DHW4Oo^@?P%p/)I?I-LH\_r`!HVt$AV^AMWI$
+:4P!5$bE+sQ<+DHW3EG]kABnueQ!Jgf?C6Eg\Bm=]T!,3QqD0@%9L]NY>L]W`SP'DD<8:?Y$Ao
+D^,@<@M4Ap%p+P!+.FAoD^,@<??pE$/@->9I.+!/Lnd+BsX-F(or3L]N[<>p*Dq>9I.+!Jh"e+
+BsX-F(or3L]Wa=>p*Dq>9I.+!f.+f+BsX-F(or3L]`g>>p*Dq>9I.+",I4g+BsX-F(or3L]im?
+>p*Dq>9I.+"Gd=h+BsX-F(or3L]rs@>p*Dq>9I.+"c*Fi+BsX-F(or3L^'$A>p*Dq>9I.+#D`X
+k+BsX-F(or3L^0*B>p*Dq>9I.+#`&al+Bot0BmO?H#a20C#[JQY+BosmL^8eA>p*>oF(or3L^0
+*BL^79/>p*>o>DNQ@"^N6T+EM7CAV^PRWJCgc+C-*o+BsX-L]h!+>9J!$H=_m9P,X6C>p*Dq>9
+I.+#`&Rg+Bot0BmO?H"Hoa?#[JQY+BosmL^8e<>p*>oF(or3L]`g>L^79/>p*>o>DNQ@!F6gP+
+EM7CAV^DNWJCgc+C-*o+BsX-L]C^'>9J!$H=_m5P,X6C>p*Dq?'7!lHS8uLEc#6,D..B+>9I,m
+>DN<9#[JQY+BosmL]WA<>p*Dq>9I.+",I4g+C-*o+BsX)L^79/>p*>o>DNH=#[JQY+BosmL^&Y
+@>p*Dq>9I.+#D`Xk+C-*o+BsX-L^79/>p*>o>DNQ@#@/HX+BosmL^8e@>p*Dq>9I.+#`&Xi+C-
+*o+BsX-L]h!+>p*>o>DNQ@"'m$T+BosmL^8e<>p*Dq>9I.+#`&Le+C-*qOu%NL<G$/iD..O'@;
+pR?H[V&KEG]kAE+sQ<P!4[%P'DD<8UZanF(or3Lb4c^HS9PREcYr5DJ`g$+Bosm+Bot0BmO?H$
+'M9D"^N6TL]qj6H=_m=P,V_0>p*>o>9J!$H=_m>P,X6@>p*@-"`nC(AV^\VWEgWP+Bosm+EM7C
+AV^_WWJC^`+BsX*F(or3L^TBF>p*Dq>9I,mF(or3L^B6DL]h!+>DNE'BmO?H$'M8n+C-*o+Bot
+0BmO?H$BhBE"C3-SL]hd5H=_m>P,V_0>p*>o>9J!$H=_m?P,X6?>p*@-"ES:'AV^_WWEgWP+Bo
+sm+EM7CAV^YUWJCX^+BsX(F(or3L^B6D>p*Dq>9I,mF(or3L^K<EL]^p*>DNB&BmO?H$BhAo+C
+-*o+Bot0BmO?H$^.KF"'m$RL]_^4H=_m?P,V_0>p*>o>9J!$H=_m=P,X6=>p*@-!cr(%AV^YUW
+EgWP+Bosm+EM7CAV^\VWJCU]+BsX'F(or3L^K<E>p*Dq>9I,mF(or3L^TBFL]Uj)>DN?%BmO?H
+$^.Jp+C-*o+Bot0BmO?H$'M9D!F6gPL]MR2H=_m=P,V_0>p*>o>9J!$H=_m>P,X6<>p*@-!HVt
+$AV^\VWEgWP+Bosm+EM7CAV^_WWJCR\+BsX&F(or3L^TBF>p*Dq>9I,mF(or3L^B6DL]C^'>DN
+9#BmO?H$'M8n+C-*o+Bot0BmO?H$BhBE!*p^OL]DL1H=_m>P,V_0>p*>o>9J!$H=_m?P,X6;>p
+*@-!-;k#AV^_WWEgWP+C1-dI=!VjATDj+Df0E#E$/@-?'7!lP#Z[:EcYr5DJ`g$H[C*fP"BY1F
+s(a<G]T$3L]ET_I?I0MP"B8(Ec#6,NW`s:Ci#7tHZ3\DF,1*CBmO?H#a20,D0C^9P'DD<<+^&h
+D..OH"D2dmCm$r.05Y-=CM%^,@ribsH]eDc!g7;HOq)i%5*C&E!g7;HOq)i%Fbg-_C426TH]eD
+c"-RDIOq)hp!g6HE5)9<(;N_':!g7;HOq)i%Cm$c6!g7;]5)9<(C6AUGOq)i%Cm$c6!g7;]5)9
+<(C6AUR!g7;HOq)hp!g4FaCkr1VC5;tJ!Kr5$!Jgf?C6AUR!g7;HOq(c\1OXU'D..L$Ap&!$F!
++\6P!5%OL]W`SI?G(eL]W`;P!4[(P#@GDL]W`SI?G(eP&-:@L]W`SP!4[(P%p-\L]W`SI?G(eL
+]W_WP&,pVP%odTL]NZoOo^@?P%p-\L]W`SI?G(GOu%NL<A/2tF),h>D..L$Ap&!$F-:!q$'I*#
+!/LYm@<64*P%'4JP,Wd]D3@)G1G<TRF))n>BmO>5F(or3P&-9fOu%moL]MR2H=_m5P,Wd]C6Cc
+D1Pc$e!HVt$AV^AMWI$:4P!5$bBcq.5D..L$Ap&!$F!,=_99MMq!0TKaBm=\ABcq.5EG]l^98N
+V24d#qpL]MpNL]Djd<Gc/cCER=6C*7M5G)-6Vs,r/#G^Y`GI?I-<@<64*+Di6<@<64IG^Y`G05
+tiNGT_'AH=_m5P,XU#05tiNGp%0BH=_m5P,XU#04\d;M#WVo04Sp:L]NYp05boLL]ESoHZ3nEG
+_c?_Ap]\+I?IQKBm=\AE,TfB+E27?Gp%*DG*5LSs,oNl@s;u:DKTfP#a/)K98EgjF_up?P%p/Z
+P&?EnL]NYAE+sQ<+E27?GT^sDF*SmJD0C^;M#WWnP'AWtF_r7=F_up8Oo^_%I?IQ>Det41P!+.
+F@rH1>!0T,kE,TfB+E27?G_cB`WKK&cHS8lICkr+T1G<]cF*JgHDf^/Z!KmJH1G<]cF*SmIDf^
+1HA8-(I!Ko6XDf^2[!0Ur5Df^1HF(or3P"LmXHS8oDEZen,EesaYCm$S-E,TfC+E27?Gp$X3Ef
+pHd1G<]cF*JgHDf^/Z!g9OG1M1QGD..OH"D2dmCm$r#Df^/Z#*M-4"FDe@Df^.GE,TfBL]N[<O
+u%NL<.0p/I?ITYP%?:XG%#3!F_kl30lAdo06:WDCh8bnOu"b4@ra;[!-;XjCh7sV3/@a$8pc^%
+L]Wa=OuRlQ<0DBPP"Cfm06:WD1Pc$o1Pc-h!cqjlCh8c=L]`g>HS9,s5*@^C@rcBs+DR'4L]`f
+TL]ET$HS8u>@rri7@rcBs+DR'4L]`f<Ou%/hEbo;0C5;qSWJC_@9RCA[@s!ksI?I0b"Hks3Fcl
+lj"FFm>"-Pf^L]ikAF(96,AWgMc8s44A06:WD1E^aKE\iM"Oo^_%I=$$FEbo;0C5;tTWKKo1"H
+lAu@rcBs+DQ]7Oo^_=L]il5P&bn&F(95H+EM%51PdHB!Ko6eP#Qjm<IL$0I?IQXP"9Y(E\S\X@
+raAROq*X204f<8Ch@g+CjRgVH#8^.Ou"b/0o,gm1G<W$L]ESo05`S%!0T,kEbo;0F(or3L]NY>
+OpR:-05P'<FDtZ&EcW@EBmO?R$'I(tFD,B0E+*I$F!,O<H=`6GOu"b4BmO?!A7RD;F(or3L]NY
+>Ou%moL]MR2H=_m5P,Wd]Bp(ZC1MpQ@CPVtH!,3QsBmO?R30H7aCkr+TWI&]3D3@)G99MJp!Kp
+QJ4aW>UL]NY>P!4;@L]NZ&I?ITYP":aYEbo<C!0S:W!g9OG9TfcpG%#3!F_kl30lAciDDRFV05
+`S/5*@^>0p2PjDD@;<Ou&8D06;DUEc6.EF*VUFBcqJ2H=`7UF(or3P"_#pD..I#L]E52F*VVCD
+g-Pk5)96&=HYgoP!4[&Oo^_0I=$bNP!4;W<IL$%P'(e]AV^>L)i+QYWKKr<$Y=KiCh@g+Ci1tF
+1E^QkOo[4R1Qjqb1N"q1!AA=FP!5$bP'&Eo@<6O0@;0b'+EV:2F)YQ%EcWmUBPDO,@;0b'+DbJ
+-FDtZ&Ec[C"Ou%0)D/sQ=L]ET2L]NZ%H\_ZMH\_]NP#ZRKD/sQ=H]gRK!KpQJ!KoWpP"CgZFD,
+B0E+*I$F-6ooF_QX3P#-LB@<--+CghC,E+*I$F-6TfF`_;2F)YQ%Ec[BFP'(Xt+EM7CAUBS(F(
+or3@:Wn'P$!kJL]`eCL]ET$H\_ce!I^,1I?K49DDIA=Ou&77I?IQXP"76:@<-.>!-<F&H]eDXP
+"Cfm05`ThA79LoLh)ZbF(or3OuSV@OuA+OP,XTEL]rr"Ot;CrP&-:;DD<8O16MZU1QhcV1m.lf
+Oq*X204f<8Ci*lrEc6:XF*VVc5*@]TA8?4!F,0gZ1G<9S@W-@E!0T-o!JgbtBmO?H!KsF/056S
+5Ou"b%CN=*0+Co8.BQG;;H#4[FBmO?H!KsEr+E;7AP"Ur=Ou"b%CLV4(+Co7sDfd+CH#4[<+EM
+7CAV^AMWGucuP"Ur=Ou%NL87ZLVBQG;,CLV4(P$r]JCN=*0L_,_cA8>XmFHQZfDLHkBCLV4(L_
+,_cA8?4!F-6QeDLI[JI?G)'1G<3KF*)J5DfTEB4.=:kOu%moL]M@$F),i[@Yb&JWI$:8P!5$b0
+5Y-=CNFc<+EM7CAKZ&.H=`7UOpR:-L]E53F(or3+EM7CAWgkc!KsF/056S5Ou$r`F),iBD'3O8
+E+sQ<+DI!3D..L$F!,=_950P^P/3<+I?I-5DfT]'FH-K9F_klW4aV$SF),iBD'3D5@;KOuChtb
+G@rHC!P!5$bI=#g>F),iBD'3D5@;Kdp@rcK@F(9-/AWf6?1OYEdF(9-/AKYGnF*)J5DfTEPApZ
+1?ATMs7H#4[@@<64*H#8^#04JL6FDYH-CNa-&+Dm8t04JL6FE:r1Eb-A7@rHC!Ou%NL<.0p#05
+tWMF!+q'F*)JKD3?\eDfT]'FH-K9F_klW4aShoD00r0Ci^_'L/\e?;'gs'I"kiuL.1om5gG*[Q
+\J,*L3LRjEq>$6WePbhL1W)n@i0r:6&')sL),W#'>B2@kCsl$L'M1B!`asa%#,$LL,E=m0PH2*
+0nq^nL*X-\+bPM%g4h-F?'6usARfFbNW`'M85Wr.Ch7d$Cm'd@Fcp3s5*C&O5*C&O1G<?WFEV)
+/+D,J4G%#3.+D#%sA;C>N%q9*kFDYH-CNa-&Oo^_=Ou%N504o'CG%#3.+BsRg7>=*KL/'7R9,r
+[dY(fc@L0q`N>5*baPD3PBL2HmDBZc'QG_U98L3sbkGp.nHhM)-sL((;@$&=6O222_FL)jKQ(i
+4pQ#_jHdL+d.n.T(pWj+];<L-CTO41\^\1G<fpD/!N'>9I.+!*p^OL]N;5>p*@-",I(c+BsX*L
+^&Y?>p*DqF(or3L^TBFL]W`;P"T@rCj'6'P"Uro04o'CG%#20Ao2X5@;L!-F*VV:A;C;M%q9*k
+FDYH-CNa-&Oo^_=Ou%NL<JUX2!G67jD..O'@;qB=L]N[<HS9)r5*@^6DfT]'FDYH*+DI!3HZ3\
+DF-8_6I?I0AD0@%6D00r0CkrR8P,XU^Oq3?LOp$qmI?I0MP"9Y.H=_maP"L'SG%G];@;L!->D@
+NiKE)"+]S$7bR[Jg/!2S(s!!'Y)KE)"m@Y=^]fLLSp!9O`D!!)gCKE)#\G_?%t'O?@l!@en=!!
++r4KE)$EVM"pM<eH&*!GKT.!!.<1KE)%5`.S*kOl:rn!O&PW!!0<aKE)%s)MA(kdm&Kc!UY#_!
+!2XeKE)&[eV!o((B&md![tX5!!5*OKE)'H$\SK]<%`h(!bu8!!!7:/KE)(4BjHlX06UoIG%#20
+G%G];@;L!-F(or3L_5fLL]il=L^0*BP"UroL]E53G%G]8Bl@m+@;qB=L]N[<HS9)r5*@^FATDj
++Df0E#E$/kX97(VlG]T$3H[V&KEG]kAG%G];@;L`3Bp,HYDNYNd!KmSKG^Y`HI?I-LP#OP+061
+WA0/%?WDJ`g(EbTbOE+sQ<+E2%>F"_KHG^(?PBmO>DE+sQB+EM7CAM7_.BkM+$+EM7CAV^DNCk
+tWF2D98gA9;K-F(or3L]W`ULe*[e05kfO+E)4@Bl@m1+?ht3A8c@-A9)+&P&N'-Eb0-*@<?O(G
+`l$h3IR&#Ou"b2Eas#uAWf$9A1r(@/n8fPFCfK5H"(o:FDl%L@WuO*E$/\&Anc-oEb0<1F`Lu'
+P')pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/qrcode 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER qrcode--
% --BEGIN ENCODER maxicode--
+% --REQUIRES preamble raiseerror renmaximatrix--
% --DESC: MaxiCode
% --EXAM: [)>^03001^02996152382802^029840^029001^0291Z00004951^029UPSN^02906X610^029159^0291234567^0291/1^029^029Y^029634 ALPHA DR^029PITTSBURGH^029PA^029^004
% --EXOP: mode=2 parse
% --RNDR: renmaximatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmaximatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/maxicode {
-
- 20 dict begin
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /mode -1 def
- /sam -1 def
- /parse false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /mode mode cvi def
- /sam sam cvi def
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- /msg barcode def
- /msglen msg length def
-
- % Special message handling for modes 2 and 3
- mode 2 eq mode 3 eq or {
-
- % Normalise messages that begin with a field identifier [)>RS01GSyy
- msg 0 7 getinterval <5b293e1e30311d> eq {
- /fid msg 0 9 getinterval def
- /msg msg 9 msglen 9 sub getinterval def
- } {
- /fid () def
- } ifelse
-
- % Read the postcode, country code and service code fields seperated by GS
- msg <1d> search pop /pcode exch def
- pop <1d> search pop /ccode exch def
- pop <1d> search pop /scode exch def
- pop /msg exch def
-
- % Prepend the field identifier
- msg length fid length add string dup
- 0 fid putinterval dup
- fid length msg putinterval
- /msg exch def
- /msglen msg length def
-
- } if
-
- % Special function characters
- /eci -1 def /pad -2 def /ns -3 def
- /la -4 def /lb -5 def
- /sa -6 def /sb -7 def /sc -8 def /sd -9 def /se -10 def
- /sa2 -11 def /sa3 -12 def
- /lkc -13 def /lkd -14 def /lke -15 def
- /pd2 -16 def /pd3 -17 def
-
- % Character maps for each state
- /charmaps [
- % A B C D E
- [ 13 (`) 192 224 0 ] % 0
- [ (A) (a) 193 225 1 ] % 1
- [ (B) (b) 194 226 2 ] % 2
- [ (C) (c) 195 227 3 ] % 3
- [ (D) (d) 196 228 4 ] % 4
- [ (E) (e) 197 229 5 ] % 5
- [ (F) (f) 198 230 6 ] % 6
- [ (G) (g) 199 231 7 ] % 7
- [ (H) (h) 200 232 8 ] % 8
- [ (I) (i) 201 233 9 ] % 9
- [ (J) (j) 202 234 10 ] % 10
- [ (K) (k) 203 235 11 ] % 11
- [ (L) (l) 204 236 12 ] % 12
- [ (M) (m) 205 237 13 ] % 13
- [ (N) (n) 206 238 14 ] % 14
- [ (O) (o) 207 239 15 ] % 15
- [ (P) (p) 208 240 16 ] % 16
- [ (Q) (q) 209 241 17 ] % 17
- [ (R) (r) 210 242 18 ] % 18
- [ (S) (s) 211 243 19 ] % 19
- [ (T) (t) 212 244 20 ] % 20
- [ (U) (u) 213 245 21 ] % 21
- [ (V) (v) 214 246 22 ] % 22
- [ (W) (w) 215 247 23 ] % 23
- [ (X) (x) 216 248 24 ] % 24
- [ (Y) (y) 217 249 25 ] % 25
- [ (Z) (z) 218 250 26 ] % 26
- [ eci eci eci eci eci ] % 27
- [ 28 28 28 28 pad ] % 28
- [ 29 29 29 29 pad ] % 29
- [ 30 30 30 30 27 ] % 30
- [ ns ns ns ns ns ] % 31
- [ ( ) ({) 219 251 28 ] % 32
- [ pad pad 220 252 29 ] % 33
- [ (") (}) 221 253 30 ] % 34
- [ (#) (~) 222 254 31 ] % 35
- [ ($) 127 223 255 159 ] % 36
- [ (%) (;) 170 161 160 ] % 37
- [ (&) (<) 172 168 162 ] % 38
- [ (') (=) 177 171 163 ] % 39
- [ 40 (>) 178 175 164 ] % 40
- [ 41 (?) 179 176 165 ] % 41
- [ (*) ([) 181 180 166 ] % 42
- [ (+) 92 185 183 167 ] % 43
- [ (,) (]) 186 184 169 ] % 44
- [ (-) (^) 188 187 173 ] % 45
- [ (.) (_) 189 191 174 ] % 46
- [ (/) ( ) 190 138 182 ] % 47
- [ (0) (,) 128 139 149 ] % 48
- [ (1) (.) 129 140 150 ] % 49
- [ (2) (/) 130 141 151 ] % 50
- [ (3) (:) 131 142 152 ] % 51
- [ (4) (@) 132 143 153 ] % 52
- [ (5) (!) 133 144 154 ] % 53
- [ (6) (|) 134 145 155 ] % 54
- [ (7) pd2 135 146 156 ] % 55
- [ (8) sa2 136 147 157 ] % 56
- [ (9) sa3 137 148 158 ] % 57
- [ (:) pd3 la la la ] % 58
- [ sb sa ( ) ( ) ( ) ] % 59
- [ sc sc lkc sc sc ] % 60
- [ sd sd sd lkd sd ] % 61
- [ se se se se lke ] % 62
- [ lb la lb lb lb ] % 63
- ] def
-
- % Invert charmaps to give character to value maps for each state
- /charvals [ 64 dict 64 dict 64 dict 64 dict 64 dict ] def
- 0 1 charmaps length 1 sub {
- /i exch def
- /encs charmaps i get def
- 0 1 4 {
- /j exch def
- encs j get dup type /stringtype eq {0 get} if % convert string to ASCII if required
- charvals j get exch i put
- } for
- } for
- /seta charvals 0 get def
- /setb charvals 1 get def
- /setc charvals 2 get def
- /setd charvals 3 get def
- /sete charvals 4 get def
-
- % Compute numeric runlengths
- /nseq [ msglen 1 add {0} repeat ] def
- msglen 1 sub -1 0 {
- /i exch def
- msg i get dup 48 ge exch 57 le and {
- nseq i nseq i 1 add get 1 add put
- } {
- nseq i 0 put
- } ifelse
- } for
- /nseq nseq 0 msglen getinterval def
-
- % Encode the message from ASCII to codewords
- /prefixinset {
- 0 {
- 2 copy exch length ge {exit} if
- 2 copy get 3 index exch known {1 add} {exit} ifelse
- } loop
- exch pop exch pop
- } bind def
-
- /enc {
- exch get out exch j exch put
- /j j 1 add def
- } bind def
-
- /out 144 array def
- /i 0 def /j 0 def /cset (seta) def
- { % loop
- % Exit when no characters remain latching back to A if necessary
- i msglen eq {
- cset (seta) ne cset (setb) ne and {
- la cset load enc
- /cset (seta) def
- } if
- exit
- } if
- { % not a loop but common exit point
-
- % If 9 numerals available then use NS
- nseq i get 9 ge {
- msg i 9 getinterval cvi 4 { dup 63 and exch -6 bitshift } repeat cset load ns get
- 0 2 10 {index} for 6 array astore 7 1 roll 6 {pop} repeat
- out exch j exch putinterval
- /i i 9 add def
- /j j 6 add def
- exit
- } if
-
- % Read next three characters
- /char1 msg i get def
- /char2 i 1 add msglen lt {msg i 1 add get} {-99} ifelse def
- /char3 i 2 add msglen lt {msg i 2 add get} {-99} ifelse def
-
- % If current mode is sufficient then directly encode
- cset load char1 known {
- char1 cset load enc
- /i i 1 add def
- exit
- } if
-
- % For switching from A to B
- cset (seta) eq setb char1 known and {
- setb char2 known {
- lb seta enc
- /cset (setb) def
- } {
- sb seta enc
- char1 setb enc
- /i i 1 add def
- } ifelse
- exit
- } if
-
- % For switching from B to A encode according to length of prefix
- cset (setb) eq seta char1 known and {
- /p seta msg i 4 msglen i sub 2 copy gt {exch} if pop getinterval prefixinset def
- p 1 eq {
- sa setb enc
- char1 seta enc
- /i i 1 add def
- } if
- p 2 eq {
- sa2 setb enc
- char1 seta enc
- char2 seta enc
- /i i 2 add def
- } if
- p 3 eq {
- sa3 setb enc
- char1 seta enc
- char2 seta enc
- char3 seta enc
- /i i 3 add def
- } if
- p 4 ge {
- la setb enc
- /cset (seta) def
- } if
- exit
- } if
-
- % If character is in A or B then directly latch
- seta char1 known {
- la cset load enc
- /cset (seta) def
- exit
- } if
- setb char1 known {
- lb cset load enc
- /cset (setb) def
- exit
- } if
-
- % Determine which one of sets C, D or E the character is in
- setc char1 known {/setx (setc) def /sx sc def /lkx lkc def} if
- setd char1 known {/setx (setd) def /sx sd def /lkx lkd def} if
- sete char1 known {/setx (sete) def /sx se def /lkx lke def} if
-
- % Encode according to the length of the prefix
- /p setx load msg i 4 msglen i sub 2 copy gt {exch} if pop getinterval prefixinset def
- p 1 eq {
- sx cset load enc
- char1 setx load enc
- /i i 1 add def
- } if
- p 2 eq {
- sx cset load enc
- char1 setx load enc
- sx cset load enc
- char2 setx load enc
- /i i 2 add def
- } if
- p 3 eq {
- sx cset load enc
- char1 setx load enc
- sx cset load enc
- char2 setx load enc
- sx cset load enc
- char3 setx load enc
- /i i 3 add def
- } if
- p 4 ge {
- sx cset load enc
- lkx setx load enc
- /cset setx def
- } if
-
- exit
- } loop % out
- } loop
- /encmsg out 0 j getinterval def
- /padval cset load pad get def
-
- % Prefix the encoded message with the structured append insert
- /sami [] def
- sam -1 ne {
- /sami 2 array def
- sami 0 seta pad get put
- sami 1 sam 10 idiv 1 sub 8 mul sam 10 mod 1 sub add put
- } if
- /encmsg [ sami aload pop encmsg aload pop ] def
-
- % Derive the primary and secondary codewords for modes 2 and 3
- mode 2 eq mode 3 eq or {
-
- % Calculate the fixed-width binary values for the mode, postcode, country code and service
- /mdb (0000) 4 string copy dup mode cvi 2 4 string cvrs dup length 4 exch sub exch putinterval def
- /ccb (0000000000) 10 string copy dup ccode cvi 2 10 string cvrs dup length 10 exch sub exch putinterval def
- /scb (0000000000) 10 string copy dup scode cvi 2 10 string cvrs dup length 10 exch sub exch putinterval def
- /pcb (000000000000000000000000000000000000) 36 string copy def
- mode 2 eq {
- % For numeric postcode, first six bits represent length and remaining 30 bits the value
- pcb pcode length 2 6 string cvrs dup length 6 exch sub exch putinterval
- pcb pcode cvi 2 30 string cvrs dup length 36 exch sub exch putinterval
- } { % mode=3
- % For alphanumeric postcode, trim or pad with spaces to 6 chars and encode to binary
- /pccw [
- ( ) 6 string copy dup 0 pcode length 6 gt {pcode 0 6 getinterval} {pcode} ifelse putinterval
- {seta exch get} forall
- ] def
- 0 1 5 {
- /i exch def
- pcb pccw i get 2 6 string cvrs dup length 6 i mul 6 add exch sub exch putinterval
- } for
- } ifelse
-
- % Convolute the binary values into the structured carrier message
- /scm 60 string def
- scm 2 mdb putinterval
- scm 38 pcb 0 4 getinterval putinterval
- scm 30 pcb 4 6 getinterval putinterval
- scm 24 pcb 10 6 getinterval putinterval
- scm 18 pcb 16 6 getinterval putinterval
- scm 12 pcb 22 6 getinterval putinterval
- scm 6 pcb 28 6 getinterval putinterval
- scm 0 pcb 34 2 getinterval putinterval
- scm 52 ccb 0 2 getinterval putinterval
- scm 42 ccb 2 6 getinterval putinterval
- scm 36 ccb 8 2 getinterval putinterval
- scm 54 scb 0 6 getinterval putinterval
- scm 48 scb 6 4 getinterval putinterval
-
- % Evaluate the structured carrier message as codewords
- /pri [ 0 0 0 0 0 0 0 0 0 0 ] def
- 0 1 59 {
- /i exch def
- /ps i 6 idiv def
- /ep 2 5 i 6 mod sub exp cvi scm i get 48 sub mul def
- pri ps pri ps get ep add put
- } for
-
- % Pad the encoded message into the secondary component
- /sec [ 84 {padval} repeat ] def
- sec 0 encmsg putinterval
-
- } if
-
- % Derive the primary and secondary codewords for modes 4, 5 and 6
- mode 4 eq mode 5 eq or mode 6 eq or mode -1 eq or {
-
- % If mode isn't specified then use EEC if message fits, otherwise SEC
- mode -1 eq {
- /mode encmsg length 77 le {5} {4} ifelse def
- } if
-
- % First symbol is the mode and the remainder are the padded message
- /cws [ mode 5 eq {78} {94} ifelse {padval} repeat ] def
- cws 0 mode put
- cws 1 encmsg putinterval
-
- % Fit the message into the primary and secondary components
- /pri cws 0 10 getinterval def
- /sec cws 10 cws length 10 sub getinterval def
-
- } if
-
- % Calculate the log and anti-log tables
- /rsalog [ 1 63 { dup 2 mul dup 64 ge {67 xor} if } repeat ] def
- /rslog 64 array def
- 1 1 63 {dup rsalog exch get exch rslog 3 1 roll put} for
-
- % Function to calculate the product in the field
- /rsprod {
- 2 copy 0 ne exch 0 ne and {
- rslog exch get exch rslog exch get add 63 mod rsalog exch get
- } {
- pop pop 0
- } ifelse
- } bind def
-
- % Generate error correction codewords
- /rscodes {
-
- /rsnum exch def
- /cwb exch def
-
- % Generate the coefficients
- /coeffs [ 1 rsnum {0} repeat ] def
- 1 1 rsnum {
- /i exch def
- coeffs i coeffs i 1 sub get put
- i 1 sub -1 1 {
- /j exch def
- coeffs j coeffs j 1 sub get coeffs j get rsalog i get rsprod xor put
- } for
- coeffs 0 coeffs 0 get rsalog i get rsprod put
- } for
- /coeffs coeffs 0 coeffs length 1 sub getinterval def
-
- % Calculate the error correction codewords
- /ecb [ rsnum {0} repeat ] def
- 0 1 cwb length 1 sub {
- /t exch cwb exch get ecb 0 get xor def
- ecb length 1 sub -1 0 {
- /i exch def
- /p ecb length i sub 1 sub def
- ecb p t coeffs i get rsprod put
- i 0 gt { ecb p ecb p 1 add get ecb p get xor put } if
- } for
- } for
-
- ecb
-
- } bind def
-
- % Split secondary codeword into odd and even elements
- /seco [ 0 2 sec length 1 sub { sec exch get } for ] def
- /sece [ 1 2 sec length 1 sub { sec exch get } for ] def
-
- % Calculate the parity codewords for secondary codeword parts based on mode
- /scodes sec length 84 eq {20} {28} ifelse def % SEC/EEC mode
- /secochk seco scodes rscodes def
- /secechk sece scodes rscodes def
-
- % Recompose the secondary parity codewords
- /secchk [ 0 1 scodes 1 sub { dup secochk exch get exch secechk exch get } for ] def
-
- % Concatinate the data into final codewords
- /codewords [
- pri aload pop
- pri 10 rscodes aload pop
- sec aload pop
- secchk aload pop
- ] def
-
- % Convert the codewords into module bits
- /mods [ 864 {0} repeat ] def
- 0 1 143 {
- /i exch def
- /cw [ codewords i get 2 6 string cvrs {48 sub} forall ] def
- mods 6 i mul 6 cw length sub add cw putinterval
- } for
-
- % Maps modules to pixels in the grid
- /modmap [
- 469 529 286 316 347 346 673 672 703 702 647 676 283 282 313 312 370 610 618 379
- 378 409 408 439 705 704 559 589 588 619 458 518 640 701 675 674 285 284 315 314
- 310 340 531 289 288 319 349 348 456 486 517 516 471 470 369 368 399 398 429 428
- 549 548 579 578 609 608 649 648 679 678 709 708 639 638 669 668 699 698 279 278
- 309 308 339 338 381 380 411 410 441 440 561 560 591 590 621 620 547 546 577 576
- 607 606 367 366 397 396 427 426 291 290 321 320 351 350 651 650 681 680 711 710
- 1 0 31 30 61 60 3 2 33 32 63 62 5 4 35 34 65 64 7 6
- 37 36 67 66 9 8 39 38 69 68 11 10 41 40 71 70 13 12 43 42
- 73 72 15 14 45 44 75 74 17 16 47 46 77 76 19 18 49 48 79 78
- 21 20 51 50 81 80 23 22 53 52 83 82 25 24 55 54 85 84 27 26
- 57 56 87 86 117 116 147 146 177 176 115 114 145 144 175 174 113 112 143 142
- 173 172 111 110 141 140 171 170 109 108 139 138 169 168 107 106 137 136 167 166
- 105 104 135 134 165 164 103 102 133 132 163 162 101 100 131 130 161 160 99 98
- 129 128 159 158 97 96 127 126 157 156 95 94 125 124 155 154 93 92 123 122
- 153 152 91 90 121 120 151 150 181 180 211 210 241 240 183 182 213 212 243 242
- 185 184 215 214 245 244 187 186 217 216 247 246 189 188 219 218 249 248 191 190
- 221 220 251 250 193 192 223 222 253 252 195 194 225 224 255 254 197 196 227 226
- 257 256 199 198 229 228 259 258 201 200 231 230 261 260 203 202 233 232 263 262
- 205 204 235 234 265 264 207 206 237 236 267 266 297 296 327 326 357 356 295 294
- 325 324 355 354 293 292 323 322 353 352 277 276 307 306 337 336 275 274 305 304
- 335 334 273 272 303 302 333 332 271 270 301 300 331 330 361 360 391 390 421 420
- 363 362 393 392 423 422 365 364 395 394 425 424 383 382 413 412 443 442 385 384
- 415 414 445 444 387 386 417 416 447 446 477 476 507 506 537 536 475 474 505 504
- 535 534 473 472 503 502 533 532 455 454 485 484 515 514 453 452 483 482 513 512
- 451 450 481 480 511 510 541 540 571 570 601 600 543 542 573 572 603 602 545 544
- 575 574 605 604 563 562 593 592 623 622 565 564 595 594 625 624 567 566 597 596
- 627 626 657 656 687 686 717 716 655 654 685 684 715 714 653 652 683 682 713 712
- 637 636 667 666 697 696 635 634 665 664 695 694 633 632 663 662 693 692 631 630
- 661 660 691 690 721 720 751 750 781 780 723 722 753 752 783 782 725 724 755 754
- 785 784 727 726 757 756 787 786 729 728 759 758 789 788 731 730 761 760 791 790
- 733 732 763 762 793 792 735 734 765 764 795 794 737 736 767 766 797 796 739 738
- 769 768 799 798 741 740 771 770 801 800 743 742 773 772 803 802 745 744 775 774
- 805 804 747 746 777 776 807 806 837 836 867 866 897 896 835 834 865 864 895 894
- 833 832 863 862 893 892 831 830 861 860 891 890 829 828 859 858 889 888 827 826
- 857 856 887 886 825 824 855 854 885 884 823 822 853 852 883 882 821 820 851 850
- 881 880 819 818 849 848 879 878 817 816 847 846 877 876 815 814 845 844 875 874
- 813 812 843 842 873 872 811 810 841 840 871 870 901 900 931 930 961 960 903 902
- 933 932 963 962 905 904 935 934 965 964 907 906 937 936 967 966 909 908 939 938
- 969 968 911 910 941 940 971 970 913 912 943 942 973 972 915 914 945 944 975 974
- 917 916 947 946 977 976 919 918 949 948 979 978 921 920 951 950 981 980 923 922
- 953 952 983 982 925 924 955 954 985 984 927 926 957 956 987 986 58 89 88 118
- 149 148 178 209 208 238 269 268 298 329 328 358 389 388 418 449 448 478 509 508
- 538 569 568 598 629 628 658 689 688 718 749 748 778 809 808 838 869 868 898 929
- 928 958 989 988
- ] def
-
- % Lookup pixels for enabled modules from modmap
- /pixs 864 array def
- /j 0 def
- 0 1 mods length 1 sub {
- /i exch def
- mods i get 1 eq {
- pixs j modmap i get put
- /j j 1 add def
- } if
- } for
- /pixs [ pixs 0 j getinterval {} forall 28 29 280 281 311 457 488 500 530 670 700 677 707 ] def
-
- % Return the arguments
- <<
- /ren //renmaximatrix
- /pixs pixs
- /opt options
- >>
-
- dontdraw not //renmaximatrix if
-
- end
-
-} bind def
-/maxicode dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp maxicode 0.0 0 0 0
+%%BeginData: 157 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nG \M#'F E2)?
+OuP+;CG'+8/p(ZF Ed;,: Ecc 5;/ n0$= E, ^uo P'E-!0 5Y -BBk)' lAU
+B4IOu8C305kfOBl @m1P! 5$b 04J @ 1@r Gmh P!5 $b04]! =F C]E#G9 CL+
+Cia0N1G<T`A7^Ss Ou"b4 @;U i#O u" b1 @<- F#+ D,%uF( LL jDfBf4 Df0
+WZY:js=EbTE(FEq h:P! +/J !K o= '%< $3- Bl@ m1H]
+kFA@;L!rP!+/T5^ eepO u SV 6P ,4< rNW D;+N HB2`A
+Wf3'OtDh\P')pOO u%N5Ot Ccr F _-^ lI ?ITY P%B dtOuY16E-, f4DKCt)Ou%N
+L<,Z_tBl@m1H]g1 5P"@<D De* E %D/W rrOt ;bP 06:Q=+ELt. Ot;bPE+*d.A
+U?(IF(ZV)@<,jrA 7^p5P, 4<t 05?: COu$ QUE as#uAUBF<? BU:pOuR<"B9
+GGnP!5%SP%&0h!J gc>!A A2N5 *@^bF cn_? !/L `?9TgrDF(^ Y"C5;nRWKKH
+.G`k%L@Yb,LWJCY >5*AT fH]g@ *F(^Y "C6 CcDH'2WOOo [4NP!5$b04J
+@1@rGmh+Dl14L]D 1Q9Th2p 5^eeqI ?J/iP #O) OF(ZV)@<,j rA7^o[05YcC
+Ch7K,D0'?Q@ZiNaDe*F8!g5]`De*F8"-Pg1EdMYEB8?PD#Ehc@#?rW@*\];hP!+.FAnbcuD0'?
+G!/LrE9Th1bD0'>4D0'?G$#O`rCh7L?$'M9N9Th2[HS8uFA<$YQ1OYEdD0'?M!?I>_P'&Es@rG
+mhP!5$bP')cc*KlDFFY@67De*FB5*@^bFcHJCP)YWI06:WAA7^ofOu&8D05YcCP!5$bD0'?Q@V
+0=bP%'RTP,4=$L]D%$A<M5$3+cl8P%&9LB9INnD0'?Q5*@]TD0'?+ASrW-F(^YFOu%NL<%hfmB
+o)eP1G<]UA;L5J1G<WeM#EJm05P'Qr/rihCgr4tOu"b4@>OcC1G<fYM#!2i06:WZpl[EdF(C+$
+Ou"b4AVg&C1G<fX15PUd1G<fX1Pk[d1G<Q[@u0`>1G<Q[A;Kf>1G<Q[AVfl>1G<]X15PF_1G<]
+X1PkL_1G<6O@<-3nE-!.++BsX2NWEOB!5O<hi.qA=+Bsj,6&ktSL&f&E!9&_7>p*@3!CDeI@YO
+m"L&g4h!aQpQNWDM-!Fpia_hJ0OL]^p*>E/_PNWE[F!5sTljG3qE+Bsj,7?.C[L&f2I!9K"?>p
+*@3!Ci(MAqg<*L&g@l#$i?UNWDY1!G@,ea+aTWL^.3.>E/_TNWEgJ!6Blpk_KLM+Bsj,8WEgcL
+&f>M!9o:G>p*@3!D8@QC5)`2L&gLp$=+cYNWDe5!GdDibD$#_L^RK2>E/_XNWEsN!6g/tm"c'U
++Bsj,9o]6kL&fJQ!:>RO>p*@3!D\XUDMA/:L&gXt%UC2]NWDq9!H3\mc\;GgL_!c6>E/_\NWF*
+R!76H#n;%W]+Bsj,;2tZsL&fVU!:bjW>p*@3!E+pYEeXSBL&ge#&mZVaNWE(=!HWtqdtRkoL_F
+&:>E/_`NWF6V!7Z`'oS=2e+Bsj,<K7*&L&fbY!;2-_>p*@3!EP3]G(p"JL&gq'(0r%eNWE4A!I
+'7uf7j;"L_j>>>E/_dNWFBZ!8*#+pkTbm+Bsj,=cNN.L&fn]!;VEg>p*@3!EtKaHA2FRL&h(+)
+I4Ii+D#%s+D#%s+D#%s+D#%s+D#%s+C-*oL`D3jL`D3jE+*9">p*@-*Jb_l*Jb_T@:UKd+BsXC
+L`V?nL`V?k>p*>oDK?q<F!,@A+Du6CDK?q++Bsj,+H?JLL&ft_!;hQl>p*>oE+*9"E+*:3!8N;
+/r.lA!+Bsj,,)u\PL&g%a!<%]p>p*@3!@*U*IYIjZL&h4/+'g!nNWCD]Itds\L&h7.!2!O>>E/
+_1NWD4r!31bRTnWQ?>p*@3!@Eg-4GEj;L&e0,!2<aA>E/_3NWD:t!3q7YX+gVL>p*@-.#n<lL&
+eN6!3_+WUg5*ILae>b5DB0EL&eH4!2WsD>E/_6NWE@=!4@O]["\RX>p*@3!@rt2L&ec=!4R[_V
+d1ELNWC\k!F:E[\qU3pL&e2Y+Bsj,/WKj<L&el@!5!scX^*&RNWCbm!FLQ]]nQO%L&eA^+Bsj,
+09-&UL&erB!/cL2[Tt"[NWCho!A&s*J;+&^L&dKE+Bsj,0oc8eL&cdZ!/uX4Q<bV;NWCnq!AB0
+-Jqa8bL&dQG+Bsj,1QDJsL&cj\!02d6QsCh=NWCts!C2A>KSBJfL&dWI+Bsj,23%\\L&cp^!0D
+p8RU%%?NWD%u!ITV%L5#\jL&d]K+Bsj,2fN:_L&d!`!0W':S6[7ANWD+\@5<Q;LkYnnL&dcM+B
+sj,3HJUbL&d'b!0i3<Sm<ICNWD1[A2>?E@3BAp+DbI/>p*>oF(-85@?(@2NWC8_!?bYj>9Ius+
+EM$8ChmN'F(6>6@j#&">9Iut+EM'9F(?D0CLeQ/A0>/#>9Iuu+EM*:F(HJ8AKYf)AKY8$>9I`k
++DbI/CgnN'@N]Jr+C-*qOu"b$BOPq)@;L!->DPP-22FM\22FM\22FM\22FM\2-lA$L]E53@q]:
+kD..C)P%'4JP,Wd]Bp(ZC1G<<W@ric&BOPpu@;p91Bp),P1Pc$e!Jgl*05?Y6Ou$Ze@ric-P"U
+rtP-6N[FE2)5B68E<AWf3'L]ET2I?IQ>BOPq)@;L!-C6D5Q5&$1)I?I-LP"76IATV?'@q]:kG%
+#3.L]ET2Ou"b4ATVB(@q]:kG%#3.L]NZ3Ou"b4ATVE)@q]:kG%#3.L]W`4Ou"b4ATVH*@q]:kG
+ %#3.L]`f5Ou"b4ATVK+@q]:kG%#3.L]il6Ou"b/F(K>6>9Id(B5D-sL]NY>H\_ZMP(R&'1Mq2
+GCh7L?!KsF<s+gZ%056S5Ou$rrB-:oO99M8j0To%k5);4^@?Lb?DKBB/+DDs9F(K>6BnueQ!Kp
+*3!KmJHG^XpVF(K>6BnubPG^Y`TI?I,SDKBB/+Du73EJOU3F(]<#DN[\V1G<]fAS,Y$Bl8!'FF
+/fDH\_`d)3R1H@Zj?1P!FGY</:U=)3RXK"-QcL5*B<#L]NY>I=%,BI?ITYP%Be?P')pOP')29%
+[&V$ASu")P!5%%Dfp/b5&-6EP'AWp+DQ]5Oo^_%I?G)'1G<ZhFG9dWOpR:-0564BOu"b+L]ESo
+04T'7FH-KFATV@D1OEgYD0'?+AT!YoHXh,.FH-KFATV@DD.@WuFH-KFATVCED3>$KCgeGrF(KH
+VA7]Xg04T'7FH-KFATV@D1OYEcP!FGY<-rM(AT8i,P"UT;P"L(<F(ZV0L^B5<Ot;ClH]g@E5EZ
+/45)B&u%t0Un@rl4'P%8HOP"UT2L]WA>H]hKZP":B5OpR9ZL^/_:P)"htH]iN"P(R[qFHSh&P!
+5%S052PCL^B4FOu"b++DQ]:Oo^_%P!FGY<%h`p@<+(FD0'>4Bp),P1G<6O@<++GBnueQ!GumjC
+h7LIAp\B9B-:oE!KmJH97;/CSUHZ$Ou"b$BOPp;+DHW5Oo]E@B5D-sP%K&XF(ZV0L]W_?P"U4M
+Ln/sW<K].JF(KHVA7K:]E\W_bHXg_tE\S\HF(KHVA7]Xg052PCL]NY>Ou&7dI?IQ>F(KHR"ES-
+r@?NcpATVB(@q]:k0p5q-"FG3$FCHA&BOPp:P$iWQ@N]`'FC?;'DIY>0F(KHR"ES-r@ZiNqHZN
+X=F(KH%+D#G#+Cf(nE\S\XATVB(ASu!2Bcq,G!KmJH1OYEdP!FGY<+Bu\FH-KFATVCE4`b1V@3
+B&n@<+)c@$1Y>05r%TATV?'D0'>4Bnun/F(]<#DBNYVWJCV=)3RgCP!4;W<0DBe9Q5#`AncL(D
+KBB2Ou%'5!KoTmF($24ATVB(ASu!#@q]:k0d(OKFC?;'DIY>6+DHW4Oo^_%I?IQKL]W`&HZNUN
++EM+9@N]6"@j#8p@<+(FF(KH%+D#G#+Cf(nE\\bYATV?'ASu!2Bcq,G!g3SI1OYEcE/4UZ4aV6
+Y1E^aMFCHA(DIXf!BOPp9+EM+9@3B-!@j#8p@<++GF(KH%+D#G#+Cf(nE\ehZATV?'ASu!2Bcq
+,G"-N\J1OYEcE/4X[8pbA_+EM+9@N]6"@kV>5ATWq8F(KH%Ou%NL<0BLpP#QL6FC?;%BOPp9P$
+iWQ@3B'$ATX)GASu!2@rl4'NWaE7FCC=gP!FGY<-)Vm@N]/o@<+)c@!c^!+CfJ(FHU0GDIY>0F
+(KHR"ES-r@ZiO15^eepF(KH'+Cf(nE\W_bHS9GOFEifKF(KH'Ou"b4GT_';Ou"b-CNpt<CL`M`
+I?IQNATVH*@q]:k0p5pk06:]HG`DoJATVIG1G<fo+EM(V1G<Q[GT^g<A<J`sP#QL6FCcS)BOPp
+9P$iViF(KH<NWaE7FCgUk06;@\F(LLj05PEK+Dbh)Ou%NL<%i25F(KH<P%8ENB-:oE"Dr3mCh7
+K,Bp,HO!g4Fa:j\?hI?IQmFcoF;Eb/isG\M&:ATX(kE/4OX4aV6p+CfJ(FHU0GDIXf!BOPp9+E
+M+9G`lTKDIY>6+DHW4Oo^_%I?IQKL]W`&HZOES@rl4'P%8-A@j#8p@<+(FF(KH<P%8-A@j#i;+
+CfJ(FHU0GDIXf!BOPp:+EM+9G`lTKDIY>6+DHW5Oo^_%I?IQKL]`f'HZOES@rl4'P%8-A@j#8p
+@<+(FF(KH<P%8-A@j#i;+CfJ(FHU0GDIXf!BOPp:+EM+9G`lTKDIXf1GT^L;ATX)GASu!#@q]:
+k1E^aMFEisZASu!2Bcq,G"-N\J1OYEcE/4X[8pbW(+CfJ(FHU0GDIXf*CNptCATW0[A7]Xg04T
+'7F<GX9FEis)I?IQm5^ef,I?J.pASu!pF(ZV6F``E>C6D8R1G<]UA9MBt+CfJ(FHU0R@:YNoOu
+"b4@;T^$>9I471NQuAM#WWTHS9GKD/"e-OpR:-F(&p"L]DL-FC?;2@:YNoP'D%VD/"e,F(&pA$
+Be;C!KsF<#a0"F@;Uf-P%odRP,XTFP'DD<<%hg#@r6:"+Bot0@;T_A!g7\;DI[O)B9E=ZF^:.d
+D/WrrL]W`&D/WrrL]`f'P&bn&D.I+9">DM`0SfjpV32^Z3,NSEAWeU#!f-uBV33Nq30Ia,"Hks
+3WKKH.H'0s:@q/u.$8=.f0JG170JG2:$Bh6K)3Qsh@rGmhOt;CjL^K<AOt`%YP%'4SP!5&.P!5
+ %SOu"b4@q(H*0JG170JG170JJ:iP,4<ZOuRMmDe*FB/;O@`$Bh6K0TnDY@YbAS5*Dn.5*C2S1
+G<]W@ZD]f0JG170JG170JG170JG170JG170JG170JG170JG170JG2:,a,!e)3QdmDe*F8!g5]n
+E+<?"E+<fsAWgMY!f.&DV33Nq30Ia,#*M05WKKH.H#R8&+E1h/A7^oTL]WARP,4<qOuSV6La8-
+IP,XU.P'MJ&05tE2G9C+M"s>$2+<Ve_#*PgG)3Qt8!,uFdA7^p5L^'#=HZ3J5A7^PsL^'#9I=#
+pCDe*F-P#[ZjHZNb?@?Ng;97;sp?'7""!/LZ3"a_n:P!5$bE+<?"E+<C%+DI!3L]WA:P,4<qOu
+SV6L^%RVCkr:Y!KoX0WKKH.H$tiHI?IS`F(9'C4HcP(1NR&CL]VF(@Zl"X@r7#KE+<@5!/Lc@9
+Tj[B@r7#CE+<@5"Gd8F9Tj[B@r7#=E+<@5$A\nL9Tj[B@r7#7E+<@5&;UOR9Tj[B@r7#1E+<@5
+(5N0X9Tj[B@r7#+E+<@5*/Ff^9Tj[B@r7#%E+<@5,)?;`9Tj[B@r7#Y@q/u(!/L]>9Tj[B@r7#
+O@q/u(!f.&D9Tj[B@r7#I@q/u(#`&PF9Tj[B@r7#[F(8[8!/LiB9Tj[B@r7#UF(8[8#)EDF9Tj
+ZSE,oY8>DN98!/LW2!/LW2!/LW2!/LW2!*taDL]E53Lc]r:Bp(ZC1G<]g+DHW9P#@H!04f*Y!f
+."oL^'#WP,W#;E0;bn@r3?&P"UTbP,XU\Ou%&tBcqA9+E2@8+E2Cb94`(*!Kq\UP"76IARcieL
+fA_?@:XOiCjhJ!?'7!bARgMrASu!pF(^Y]I?IQHDe*F8"HkobDe*F8"d2$3Ec#`*AV^PR4d'i&
+De*F8s,oO.EdMYAA7^SsP!+.FD/Wrr+D#G#D0'?Q@YdaA@=*e6I=$bQI?ITn1OYEc04T3I+Bot
+*De*F8"d2#qLe`AFLgGLm<I8[nA9MBtI?K4gOu$TlF,0g5De*FBG[kr=L]M()@r6:"P'J^"EbQ
+Y+GB8Q?L^K;=Ou"b4ARcimGB8QI@s<!W@YbASWKKr<1OYEc062,BCi<r/>DN<95C8PQL]W`UOu
+S7_P"L(W6^#96P#QjmK3aWr062,MDeFkkOpR:-L]N;4Ld-6L3-'(KCi<sL5*AR%5&t^\DeFk.L
+]NZoP'DD<82#")E,ol-H\_`d)2J9UD3@)=!0V2^"FG01Ci<sL5*AR%5&t^\DeG4sP"Ur=Ld.&;
+EcYZ*DeG4sP"U4MP')q1L]Djd<IL#?Ou"b3F(9-!ATN2OEcZ,@D3@)G1G<6^@Zip<1G<6VAS,O
+q+BsX&EcZ,@D0q'=I?K4gOu%mpL]MO;DKTfC056S5Ou$TdAS,Oq+DDs.De3NmF!,1Q!KsFF99O
+O6L]N[<M#W83HS9,s5*@^3De3NmF!,3?@rGpjAof)0L]N[<P"T;'AS,Oq+DR'4EcYZ*DeC2,P"
+Th:E,ol-P/3<+I?I-2De3NmF,0g+De3NmF,0gZ96,)^Ci<r/Bp),0F)Z/<A<M1cP"769De3NmF
+!+t2AS,OqL]Cq'AS,OqP%'4JP,XU<Ou"b&@q$Qb+EDO@F_uJ]!.C#_?'7""!/LYcG@H_EL]N[<
+HS9K(5%AeGP!5%%ARf2*!0U!<_3-Tc@q(U1L]N[<M#W82HS9)r5*@]TE$/_%@Zk27P,X6<P,XU
+#ARf0lE$06F@rGpjAof)/P"Th:E,ol-P'C\s!0U0*ARf0lE$/_%@N]WG!KmJH94_UB+E3K:P/3
+<+I?IQXP":"a87c:?I?G)'1G<f\@rEJoL]E54F(JjE@Yb&JWI&\tA!0$=97;so?'6usF(Jim+B
+sX&L]VX/A!1;W!KsF/F(JjE5*AQeP"8lA1G<fZDe*F#+EM+(P%'5HP!+/J'Rb=a*.<uMOu"b4A
+RfXgBPS`3ARfX$F(9-!ATJu7F(9-!ATO"j06:]7ARfCh+EM+(AKZ&(De*F#+EDO5De*F#Ou"b4
+ARf4`CEQi;!/LYs@rGmhF,0j[WI'dfF(Jj"@q]Y@5*AR%5'(:FARfChP!5%%I?I-,Ou"b$De*F
+'DfTB0+Bot-EbU[<P'(_aBo!+:F(9-!ATO"9P'(hWA!-nVF`V,(@q]Y@!g7\3Ou"b.De*o3>D<
+5fH\_ZMP(R&'1Pc$e!JUT8HS9)r5*@]T@s9&"+Cf>#ATr'5A9/l-P"UT4L^'$=Ot_6=0TrD`P"
+ArB1Mq&@F,1$7P&,pY@s=)FP,XTF@s=)]I?I,SD/Ws%@;m>nL&ohZ!YL.f*ej\XL&kM5!Et3ZT
+nWWAL'#,E!ksBjLP>l+L&i6J!?-[n3JIPoL&l=L!b-lcC5)b9L&lUT!L\ZCR"bXNL'#2G!l0Nl
+089O&L&t&'!c*Mkb(]s%L&um[!kj<iUP8iEL&i<L!??gp4,*bsL&j2e!E=dT'8?N2L&iEO!C);
+>?%rAbL&oAM!To+<"bm']L&on\!S2u+EJ=L5L&m?i!KMm8XbHkXL&rZU![NL%6\YY/L&te<!ap
+`aM1u(fL'"9-!iC\R`J+H4L&ujZ!e,k*SV@39L'"uA!kO*e(PVr+L&j/d!AoN3;hb<NL&l^W!I
+TV&Rt^s4L&ni>!P!jc0no``L&t/*!`"IOD2&+.L&rTS![<@#6&#G+L&t_:!a^T^Dh\:1L&m9g!
+K;a6X+gYTL&iNR!@!7!6&#D*L&kY9!FCK^MhV:jL'"?/!iUhTa+aZ8L]N;3L`_EoLcpPVL]`G7
+L`qQsLd-\ZL]rS;La.^"Ld?h^L^/_?La@j&LdQtbL^AkCLaS!*Ldd+fL^T"GLae-.Le!7jL^f.
+KLb"92Le3CnL_#:OLb4E6LeEOrL_5FSLbFQ:LeW\!L_GRWLbX]>Leih%L_Y^[LbjiBLf&t)L_k
+j_Lc'uFLf9+-L`)!cLc:,JLfK71L`;-gLcL8NLf]C5LinMqL&dEl!0W':Z%`7_Li\AmL&d?j!0
+Dp8YD*%[LiJ5iL&d9h!02d6XbHhWLi8)eL&d3f!/uX4X+gVSLi%raL&d-d!/cL2WJ1DOLhhf]L
+&d'b!/Q@0VhP2KLhVZYL&d!`!/?4.V1nuGLhDNUL&cp^!/-(,UP8cCLh2BQL&cj\!.oq*TnWQ?
+Lgu6ML&cdZ!.]e(T8!?;Lgc*ILjt50L&dd!!1\jPLgGmcLjXpWRt^p3Lg>gALjOr(L&dWr!18R
+HLg#U[Lj4XSQ\GL+L&eW9!47I\dtRkNL&gau!:Y^C[tXmkL&fbY!7Z`'o7d89L&ec=!4[a`f7j
+:VL&gn$!;)!G]7p<sL&fn]!8*#+pP&\AL&eoA!5+$dgP,^^L&h%(!;M9K^P2a&L&g%a!8N;/qh
+>+IL&f&E!5O<hhhD-fL&h1,!;qQO_hJ0.L&g1e!8rS3s+UOQL&f2I!5sTlj+[QnL&h=0!<@iSa
++aT6L&g=i!9Ak8",6gXL&f>M!6BlpkCs!!L&hI4!<e,WbD$#>L&gIm!9f.<#DN6`L&fJQ!6g/t
+l\5E)L&hU8!=4D[c\;GFL&gUq!:5F@$\eZhL&i`X!@W['7tq%6L&kk?!G$oc-\_XKL&j_t!CVY
+C@tk"nL&iTT!@3C#6\YV.L&k_;!FUW_'nu`'L&j)b!A]B1;2,*JL&hsB!>:+f0no]_L&k))!D\
+@M&V^;tL&ir^!A9*-9ni[BL&hg>!=jhb/VX9WL&jr%!D8(IBncY%L&m'a!JZ=0V1o#HL&l(E!G
+[>iM1u%eL&n3,!N(SPD2&(-L&m3e!K)U4WJ1GPL&ldY!Ifb(SV@08L&no@!P4!dJVF2UL&mp$!
+M5#H]nQR#L&lp]!J6%,TnWT@L&o&D!PX9hh1bscL&q1+!W%NP)2820L&p%`!SW8/q1\qFL&r0G
+!Z$LkfnKO[L&q%'!VV6L'nuc(L&o>L!QKipjb<fsL&qI3!Wn)W`J+E3L&p=h!TJh8!JUXUL&o2
+H!Q'QliJ%BkL&q=/!WIfT*JOV8L&sGk!]l&;=bZu[L&rHO!Zm't4ba##L&tS6!a:<[+bg%@L&s
+So!^;>??%rDcL&s/c!]#K3;2,-KL&u:J!cE_o222/hL&t;.!`FaSEJ=O6L&s;g!]Gc7<JCQSL&
+uFN!cj"sObNq!L'"Q5!j77Zc%Z;DL'!Ej!fi!:XbHnYL'#PQ!m66!NJ7LnL'"E1!igtVabBl<L
+&udX!do_(Rt_!5L'"o?!k<sdH\MTJL'!ct!gn]D[tXsmL&uXT!dKG$Q\GR-L'"c;!jm[`GD60B
+L'!Wp!gJE@Z\AOeL'#bW!mlZ'mtLo3L'%m>!t9ncdtRqPL'$n"!q:pH%u(/rL'#n[!n;r+o7d>
+;L'&$B!t^1gf7j@XL'%%&!q_3L'8?T%L'$%_!n`5/pP&bCL'&0F!u-IkgP,d`L'%1*!r.KP(PW
+#-L'$1c!o/M3qh>1KL'&<J!uQaohhD3hL'%=.!rRcT)hnG5L'$=g!oSe7s+UUSL'&HN"!!$sj+
+[WpL'%I2!s"&X+,0k=L'$Ik!p#(<",6mZL'&TR"!E="kCs'#L'%U6!sF>\,DH:EL'$Uo!pG@@#
+DN<bL'&`V"!iU&l\5K+L'%a:!sjV`-\_^ML''l!"%7kG@tk(pL'*!]"+Z+.6\Y\0L'(k="(6ic
+Ite&SL''_r"$hSC?\SYhL')jY"+5h*5DB8(L'(_9"'gQ_H\MWKL''Sn"$D;?>D<5`L')^U"*fP
+&4,*huL'(S5"'C9[GD63CL''Gj"#u#;=,$fXL')RQ"*B8"2hhDmL'(G1"&t!WF+sd;L'';f"#P
+`7;hbBPL')FM")rts1PPueL'(;-"&O^SDh\@3L''/b"#,H3:PJsHL'):I")N\o089Q]L'(/)"&
++FOCPDq+L''#^""]0/983O@L').E")*Dk.u"-UL'(#%"%\.KB8-M#L'*-a",)C2UP8lFL',8H"
+2KWnLP>ncL'+9,"/LYR_hJ91L'*9e",M[6VhP;NL',DL"2oorMhV=kL'+E0"/pqVa+a]9L'*Ei
+",qs:X+g_VL',PP"3?3!O+masL'+Q4"0@4ZbD$,AL'*Qm"-A6>YD*.^L',\T"3cK%PD01&L'+]
+8"0dL^c\;PIL'*]q"-eNBZ\ARfL',hX"42c)Q\GU.L'+i<"13dbdtRtQL'*iu".4fF[tY!nL',
+t\"4W&-Rt_$6L'+u@"1X'ff7jCYL'+!$".Y)J]7pF!L'-+`"5&>1T8!H>L',,D"2'?jgP,gaLc
+U>pLffIVL&dKn!0i3<ZA&A,L&fST!:GRB%>FllL&icY!D/"H8;7.WL&m!_!JH1.U4r]bL&o)E!
+T&P3rIt@NL&r9J!]bu:3/.K8L&uLP!d'.uP(j%CL'"T6!mZN%m=k]/L'%d;""As,.#%gnL')"A
+"([,gJqaB$L'+*'"29Klh1c$e?'6usE+sQ<L'(hH$'I(tC5;kQ1Pc$e!GuacF-:!g!KsF/056S
+5Ou$rnA9/l-P"UT3P!+/2Bm=\AC*7A3A8Pao+DI!3P'AWp+DQ]5Oo^_%I?IQXP"76FBm=\A>9I
+m!G]SZ@C6D8;I?I0X*/GVi!>pOl)28/NL&oDN!U,7=oS*D[L'!s$!ka6hV1o&h?'7!+4>1_dDD
+*Y`ASu?nG\M#'FE 2)?05 tWMF! ,F9G] PN VE- *4@E-, f4DK?pa
+4s4BSDKKE0@<[lR 0/% ?WDJ` g,Bl. :# EbT c]< 0B7i
+Oq*X205Y-BBk)'l AWf$9 A1 r(@/n 8fPF Cf K5H "(o:F Dl% L@WuO *E$/
+\&Anc-oEb0<1F`L u'P') pJ0 6:] HE+* 6l Bl7 RH\pKT _F (KH4@: O(e
+DJ+B\;u~>
+% uk.co.terryburton.bwipp/maxicode 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER maxicode--
% --BEGIN ENCODER azteccode--
+% --REQUIRES preamble raiseerror renmatrix--
% --DESC: Aztec Code
% --EXAM: This is Aztec Code
% --EXOP: format=full
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/azteccode {
-
- 20 dict begin
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
- /format (unset) def % full, compact or rune
- /readerinit false def
- /layers -1 def
- /eclevel 23 def
- /ecaddchars 3 def
- /raw false def
- /parse false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /layers layers cvi def
- /eclevel eclevel cvr def
- /ecaddchars ecaddchars cvi def
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- % Convert from input into message bitstream
- /msgbits () def
- format (rune) ne raw and {/msgbits barcode def} if
- format (rune) ne raw not and { % Simple autoencoder from input to bitstream using byte mode only
-
- % Determine the character count
- /barlen barcode length def
- barlen 31 le {
- (00000) 5 string copy dup barlen 2 5 string cvrs
- dup length 5 exch sub exch putinterval
- /cc exch def
- } {
- (0000000000000000) 16 string copy dup barlen 31 sub 2 16 string cvrs
- dup length 16 exch sub exch putinterval
- /cc exch def
- } ifelse
- /cclen cc length def
-
- % Create the bitstream as byte_mode_id character_count data_bytes
- /msgbits 5 cclen add barlen 8 mul add string def
- msgbits 0 (11111) putinterval
- msgbits 5 cc putinterval
- 0 1 barlen 1 sub {
- /i exch def
- (00000000) 8 string copy dup barcode i get cvi 2 8 string cvrs dup length 8 exch sub exch putinterval
- msgbits 5 cclen add i 8 mul add 3 -1 roll putinterval
- } for
-
- } if
-
- % Lookup the most appropriate symbol specification
- /metrics [
- [ (rune) 0 0 0 6 ] % Special metric for rune symbols
- [ (compact) 1 1 17 6 ] [ (full) 1 1 21 6 ] [ (compact) 2 0 40 6 ]
- [ (full) 2 1 48 6 ] [ (compact) 3 0 51 8 ] [ (full) 3 1 60 8 ]
- [ (compact) 4 0 76 8 ] [ (full) 4 1 88 8 ] [ (full) 5 1 120 8 ]
- [ (full) 6 1 156 8 ] [ (full) 7 1 196 8 ] [ (full) 8 1 240 8 ]
- [ (full) 9 1 230 10 ] [ (full) 10 1 272 10 ] [ (full) 11 1 316 10 ]
- [ (full) 12 1 364 10 ] [ (full) 13 1 416 10 ] [ (full) 14 1 470 10 ]
- [ (full) 15 1 528 10 ] [ (full) 16 1 588 10 ] [ (full) 17 1 652 10 ]
- [ (full) 18 1 720 10 ] [ (full) 19 1 790 10 ] [ (full) 20 1 864 10 ]
- [ (full) 21 1 940 10 ] [ (full) 22 1 1020 10 ] [ (full) 23 0 920 12 ]
- [ (full) 24 0 992 12 ] [ (full) 25 0 1066 12 ] [ (full) 26 0 1144 12 ]
- [ (full) 27 0 1224 12 ] [ (full) 28 0 1306 12 ] [ (full) 29 0 1392 12 ]
- [ (full) 30 0 1480 12 ] [ (full) 31 0 1570 12 ] [ (full) 32 0 1664 12 ]
- ] def
-
- /i 0 def
- { % loop
- /m metrics i get def
- /frmt m 0 get def % Format of the symbol
- /mlyr m 1 get def % Data layers
- /icap m 2 get def % Reader initialisation capable
- /ncws m 3 get def % Total of codewords
- /bpcw m 4 get def % Bits per codeword
- /numecw ncws eclevel mul 100 div ecaddchars add ceiling cvi def
- msgbits length 0 eq {/numecw 0 def} if % Error correction codewords
- /numdcw ncws numecw sub def % Data codewords
- /okay true def
- format (unset) ne format frmt ne and {/okay false def} if
- readerinit icap 1 ne and {/okay false def} if
- layers -1 ne layers mlyr ne and {/okay false def} if
- msgbits length bpcw div ceiling cvi numdcw gt {/okay false def} if
- okay {exit} if
- /i i 1 add def
- } loop
- /layers mlyr def
- /format frmt def
-
- % Expand message bits into codewords avoiding codewords with all zeros or all ones
- /allzero {dup length (000000000000) 0 3 -1 roll getinterval eq} bind def
- /allones {dup length (111111111111) 0 3 -1 roll getinterval eq} bind def
- /cws ncws array def
- /m 0 def /c 0 def
- {
- msgbits length m le {exit} if
- msgbits length m sub bpcw ge {
- /cwb msgbits m bpcw 1 sub getinterval def % All but last bit
- /cwf msgbits m bpcw add 1 sub 1 getinterval def % Last bit
- cwb allzero {/cwf (1) def /m m 1 sub def} if % Flip last bit to avoid zeros
- cwb allones {/cwf (0) def /m m 1 sub def} if % Flip last bit to avoid ones
- % Concatinate the bits
- 12 string dup 0 cwb putinterval
- dup bpcw 1 sub cwf putinterval
- 0 bpcw getinterval
- /cwb exch def
- } { % Final codeword
- /cwb msgbits m msgbits length m sub getinterval def
- /cwb (111111111111) 12 string copy dup 0 cwb putinterval 0 bpcw getinterval def
- cwb allones {cwb cwb length 1 sub (0) putinterval} if % Prevent all ones
- } ifelse
- % Conversion of binary data into byte array
- /cw 0 def
- 0 1 bpcw 1 sub {
- /i exch def
- /cw cw 2 bpcw i sub 1 sub exp cvi cwb i get 48 sub mul add def
- } for
- cws c cw put
- /m m bpcw add def
- /c c 1 add def
- } loop
- /cws cws 0 c getinterval def
-
- % Reed-Solomon algorithm
- /rscodes {
-
- /rspm exch def
- /rsgf exch def
- /rsnc exch def
- /rscws exch def
-
- % Calculate the log and anti-log tables
- /rsalog [ 1 rsgf 1 sub { dup 2 mul dup rsgf ge {rspm xor} if } repeat ] def
- /rslog rsgf array def
- 1 1 rsgf 1 sub {dup rsalog exch get exch rslog 3 1 roll put} for
-
- % Function to calculate the product in the field
- /rsprod {
- 2 copy 0 ne exch 0 ne and {
- rslog exch get exch rslog exch get add rsgf 1 sub mod rsalog exch get
- } {
- pop pop 0
- } ifelse
- } bind def
-
- % Generate the coefficients
- /coeffs [ 1 rsnc {0} repeat ] def
- 1 1 rsnc {
- /i exch def
- coeffs i coeffs i 1 sub get put
- i 1 sub -1 1 {
- /j exch def
- coeffs j coeffs j 1 sub get coeffs j get rsalog i get rsprod xor put
- } for
- coeffs 0 coeffs 0 get rsalog i get rsprod put
- } for
-
- % Extend the input with the error correction values
- /nd rscws length def
- /rscws [ rscws {} forall rsnc {0} repeat 0 ] def
- 0 1 nd 1 sub {
- /k exch rscws exch get rscws nd get xor def
- 0 1 rsnc 1 sub {
- /j exch def
- rscws nd j add rscws nd j add 1 add get k coeffs rsnc j sub 1 sub get rsprod xor put
- } for
- } for
-
- % Return all but the last codeword
- rscws 0 rscws length 1 sub getinterval
-
- } bind def
-
- % Create the codewords and bit string for the mode
- format (full) eq {
- /mode layers 1 sub 11 bitshift cws length 1 sub add def
- readerinit {/mode mode 2#1000000000000000 or def} if
- /mode [
- mode 2#1111000000000000 and -12 bitshift
- mode 2#0000111100000000 and -8 bitshift
- mode 2#0000000011110000 and -4 bitshift
- mode 2#0000000000001111 and
- ] def
- /mode mode 6 16 19 rscodes def
- } if
- format (compact) eq {
- /mode layers 1 sub 6 bitshift cws length 1 sub add def
- readerinit {/mode mode 2#10000000 or def} if
- /mode [
- mode 2#11110000 and -4 bitshift
- mode 2#00001111 and
- ] def
- /mode mode 5 16 19 rscodes def
- } if
- format (rune) eq {
- /mode barcode cvi def
- /mode [
- mode 2#11110000 and -4 bitshift
- mode 2#00001111 and
- ] def
- /mode mode 5 16 19 rscodes def
- /mode [mode {2#1010 xor} forall] def % Invert alternate bits
- } if
- /modebits mode length 4 mul string def
- 0 1 modebits length 1 sub {modebits exch (0) putinterval} for
- 0 1 mode length 1 sub {
- /i exch def
- modebits mode i get 2 4 string cvrs dup length 4 exch sub 4 i mul add exch putinterval
- } for
-
- % Extend the data codewords with error correction codewords to create the bit string for the data
- /rsparams [
- [] [] [] [] [] []
- [ 64 67 ] % 6-bit codewords
- []
- [ 256 301 ] % 8-bit codewords
- []
- [ 1024 1033 ] % 10-bit codewords
- []
- [ 4096 4201 ] % 12-bit codewords
- ] def
- /cws cws ncws cws length sub rsparams bpcw get {} forall rscodes def
- format (full) eq {
- /databits layers layers mul 16 mul layers 112 mul add string def
- } {
- /databits layers layers mul 16 mul layers 88 mul add string def
- } ifelse
- 0 1 databits length 1 sub {databits exch (0) putinterval} for
- 0 1 ncws 1 sub {
- /i exch def
- databits cws i get 2 bpcw string cvrs
- dup length bpcw exch sub bpcw i mul add databits length ncws bpcw mul sub add
- exch putinterval
- } for
-
- % Move to a point in the cartesian plane centered on the bullseye
- /cmv {size mul sub mid add} bind def
-
- % Move to a bit position within a layer
- /lmv {
- /lbit exch def
- /llyr exch def
- /lwid fw llyr 4 mul add def
- /ldir lbit 2 idiv lwid idiv def
- ldir 0 eq { % Top
- lwid 1 sub 2 idiv neg 1 add lbit 2 idiv lwid mod add
- fw 1 sub 2 idiv llyr 2 mul add lbit 2 mod add
- cmv
- } if
- ldir 1 eq { % Right
- fw 2 idiv llyr 2 mul add lbit 2 mod add
- lwid 1 sub 2 idiv 1 sub lbit 2 idiv lwid mod sub
- cmv
- } if
- ldir 2 eq { % Bottom
- lwid 2 idiv neg 1 add lbit 2 idiv lwid mod add neg
- fw 2 idiv llyr 2 mul add lbit 2 mod add neg
- cmv
- } if
- ldir 3 eq { % Left
- fw 1 sub 2 idiv llyr 2 mul add lbit 2 mod add neg
- lwid 2 idiv 1 sub lbit 2 idiv lwid mod sub neg
- cmv
- } if
- } bind def
-
- % Create the pixel map
- % For full symbols we disregard the reference grid at this stage
- format (full) eq {/fw 12 def} {/fw 9 def} ifelse
- /size fw layers 4 mul add 2 add def
- /pixs [size size mul {-1} repeat] def
- /mid size 1 sub 2 idiv size mul size 1 sub 2 idiv add def
-
- % Data layers
- /i 0 def
- 1 1 layers {
- /layer exch def
- 0 1 fw layer 4 mul add 8 mul 1 sub {
- /pos exch def
- pixs layer pos lmv databits databits length i sub 1 sub get 48 sub put
- /i i 1 add def
- } for
- } for
-
- % For full symbols expand the pixel map by inserting the reference grid
- format (full) eq {
- /fw 13 def
- /size fw layers 4 mul add 2 add layers 10.5 add 7.5 div 1 sub cvi 2 mul add def
- /mid size size mul 2 idiv def
- /npixs [size size mul {-2} repeat] def
- 0 16 size 2 idiv {
- /i exch def
- 0 1 size 1 sub {
- /j exch def
- npixs size 2 idiv neg j add i cmv [size 2 idiv j add i add 1 add 2 mod] putinterval
- npixs size 2 idiv neg j add i neg cmv [size 2 idiv j add i add 1 add 2 mod] putinterval
- npixs i size 2 idiv neg j add cmv [size 2 idiv j add i add 1 add 2 mod] putinterval
- npixs i neg size 2 idiv neg j add cmv [size 2 idiv j add i add 1 add 2 mod] putinterval
- } for
- } for
- /j 0 def
- 0 1 npixs length 1 sub {
- /i exch def
- npixs i get -2 eq {
- npixs i pixs j get put
- /j j 1 add def
- } if
- } for
- /pixs npixs def
- } if
-
- % Finder pattern
- /fw fw 2 idiv def
- fw neg 1 fw {
- /i exch def
- fw neg 1 fw {
- /j exch def
- pixs i j cmv
- i abs j abs gt {i abs} {j abs} ifelse 1 add 2 mod
- put
- } for
- } for
-
- % Orientation bits
- [ [ fw 1 add neg fw 1 ] [ fw 1 add neg fw 1 add 1 ]
- [ fw neg fw 1 add 1 ] [ fw 1 add fw 1 add 1 ]
- [ fw 1 add fw 1 ] [ fw 1 add fw neg 1 ]
- [ fw fw 1 add 0 ] [ fw 1 add fw 1 add neg 0 ]
- [ fw fw 1 add neg 0 ] [ fw neg fw 1 add neg 0 ]
- [ fw 1 add neg fw 1 add neg 0 ] [ fw 1 add neg fw neg 0 ]
- ] {pixs exch {} forall 3 1 roll cmv exch put} forall
-
- % Mode ring
- format (full) eq {
- /modemap [
- [-5 7] [-4 7] [-3 7] [-2 7] [-1 7] [ 1 7] [ 2 7] [ 3 7] [ 4 7] [ 5 7]
- [ 7 5] [ 7 4] [ 7 3] [ 7 2] [ 7 1] [ 7 -1] [ 7 -2] [ 7 -3] [ 7 -4] [ 7 -5]
- [ 5 -7] [ 4 -7] [ 3 -7] [ 2 -7] [ 1 -7] [-1 -7] [-2 -7] [-3 -7] [-4 -7] [-5 -7]
- [-7 -5] [-7 -4] [-7 -3] [-7 -2] [-7 -1] [-7 1] [-7 2] [-7 3] [-7 4] [-7 5]
- ] def
- } {
- /modemap [
- [-3 5] [-2 5] [-1 5] [ 0 5] [ 1 5] [ 2 5] [ 3 5]
- [ 5 3] [ 5 2] [ 5 1] [ 5 0] [ 5 -1] [ 5 -2] [ 5 -3]
- [ 3 -5] [ 2 -5] [ 1 -5] [ 0 -5] [-1 -5] [-2 -5] [-3 -5]
- [-5 -3] [-5 -2] [-5 -1] [-5 0] [-5 1] [-5 2] [-5 3]
- ] def
- } ifelse
- 0 1 modemap length 1 sub {
- /i exch def
- pixs modemap i get {} forall cmv modebits i get 48 sub put
- } for
-
- <<
- /ren //renmatrix
- /pixs pixs
- /pixx size
- /pixy size
- /height size 2 mul 72 div
- /width size 2 mul 72 div
- /opt options
- >>
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/azteccode dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp azteccode 0.0 0 0 0
+%%BeginData: 117 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04B0KA Rf 4gA7^+ D'T
+t>:%52X=FD5Z2F- 8_M1G <3G Eas # uAW f6? 1G< 9WDKKE 0@ <Wi+@; L!r
+Ou"b'DfT]'FH-NI DKBB2 Ou" b3A RT +\ EbT E*F <G1(Ci a0 N1G<QQ H"D
+#;M#WVo04eX0ATh X$L_ l41 04 eX %A7 T1` @<- FF"-
+PGnEaa/7AmoLsAW ei&E + *d .A KYS nCi a0N1 N.5SB
+l@m1P-6N[FE2)5B 68E<AW f3' L ]NY rO pu>K FD5 Z2F*j(NAmo LsAWf3'P!FG
+Y<0B5(@ZmRN0oc8 tP)XR( F_- _ !H]f tD5* C&O 5*@^MH]ft& EckrV1OYEdI
+?J0)*g/N:DfBf4D f0WZ5* @^M P#Q@ =FD5 Z2F *j'+I?I/TC ghU#EcW@>@<
+lF)F-8);1G<<LCh 7d$C` m;!C h7d$C m$H7 1G< <L@:WnYBOP q&+D#%kA7T1
+`@<-FP/<Vf.@<-F #HS95 WB-:Y lEas# uAW gMcV33VfC5 ;kQ1Lad5@rG
+mhH]A,5P)XgO3,N _LP!3WD 5*C2S@ VV&,L ]NY >05?Y6Ou&8 DOuS6tL]`f6
+Ot:HkB9GGnL]N[<P!5%ROuSV6L]`g>L]`f(P"^:NOuR<"B9GGnP!5%SP%&0h!AA2N5*@]T@UX:
+eDe*E%D0'?G!,@ZjOu&7dI?ITYP%B')<%i*0B4>RsF,g6`1M1QGD..OH"EJX&AWgnN@<[k;HS9
+5WB4>RsF!+q#Eas#uAWeitP#Q%3Ec#6,NWaBFDInuJEaa0TE0:?N04J@1Ch7K,@UX:eDe*FB@Z
+iNV@<-0qDMTBt@=+"<0JG170SfmqV32^Z3+?<:Ch7L?!f.#CV33Nq30Ia,"d2'4WKKH.GqWZ;P
+!5$bI=$tc0JG170JG170JG170JG17L_,`GOr9EB@UX:nAT!;GP,X6=L_,`GOt`%YP%'4YP!5&.
+P!5%S04SLT5*@^MP#X/F@r,^o+CeoE@ZiN#D0'?!BlnEP"_2%YAT!Y3@UX:nAT!;0P&-9^P,4<
+tD0'?!BlnEP!0.4;0ekC;P'LncB4>RsF,1!0A!2+n!/LYb@<-0qDMS=VWI$:4P!5$bNX.<m0JG
+170JJ:gP,4<ZOuQoZEas#uAKY]M99Li^!f.,FV33Nq30Ia,#a.B7WKKH.H#7V8@VKq*L]q9uCh
+7LI!GR>qP&-9^L]`J5P)#3GI?I-LP#O)OATVs,@ribs+Bsj/Ecl82L]E52L]E58>p*@3#@h[hE
++*6uL]N;4L_5FI>p*@3"D2dmCkr+J!JhJH#$i?UNX''4D/`onFGL!S!/N%Z#$i?UNW`s:Ci"n/
+L]N;cL^%-->E/quDf'H%@s!M/L]E5eL^79/>E/huF_klM",Hu64GX8K+Bsj2@rH4'@:OD8"Gd&
+69S`s[+Bsj/Ap%p+L]iM7LffH=>p*@3"D2dmCkr7N!JkuV#[JQWNW`s:Ci"n3L]N51S;7GV+Bs
+j/Ap%p+L^/_:L&f/J#[JQWNW`s:Ci"n5L]N51n;%?U+Bsj/Ap%p+L^Ak<L&g@l$=+cYNW`s:Ci
+"n7L]N52&;U[!+Bsj/Ap%p+L^T">L&jDm$=+cYNW`s:Ci"n9L]N52CkrF(+Bsj/Ap%p+L^f.@L
+&ms'$=+cYNW`s:Ci"n;L]N52eqaZ=+Bsj/Ap%p+L_#:BL&qpB$=+cYNW`s:Ci"n=L]N539Sa$]
++Bsj/Ap%p+L_5FDL'!<i$=+cYNW`s:Ci"n?L]N53d"i$7+Bsj/Ap%p+L_GRFL'&3I$=+cYNW`s
+:Ci"nAL]N54@#,.q+Bsj/Ap%p+L_Y^HL'+N5$=+cYNW`s:Ci"nCL]N54r.k\c+Bsj/Ap%p+L_k
+jIL'*g!$sau[NW`s:Ci"nEL]E/3i.qeI+Bsj/Ap%p+L`)!KL'/u^$sau[NW`s:Ci"nGL]E/4G_
+cc6+Bsj/Ap%p+L`;-ML'5SR$sau[NW`s:Ci"nIL]E/5)Mef-+Bsj/Ap%p+L`M9OL';OP$sau[N
+W`s:Ci"nKL]E/5aG:71+Bsj/Ap%p+L`_EQL'AiX$sau[NW`s:Ci"nML]E/6J;=V>+C1-d0564B
+Ou%G<D'3\,FE2)*F!,1[99M(aAo_a1+Dlo7P"Uro05YNNEZf4T!Kp*=1G<HP@;m?+L]W`4Ou"b
+/@s;u:D28:W99M(a@W5h$+Dlo;P"Uro05boLARfp,DI[m3+D#&!AThX$P&,qbOu?l]@:WnYBOP
+q&Oo^^WOt;bPD0'?!BlnEZ@Yb#I4aSi"F_t]"GDH6^1OYEc05boLA7Kg+DI[m3+Du==ARfqIWK
+K%jDeid,+EVXHAWei]DfT]'FH-NIDKBB2P&4fLEc#6,+D,Y2FHUL("FDe?CLMK2AmoLsAWeitP
+#QI5@:WqiBl7X,+DG=oE/4OXD3>$K05kW7Gp$^-Cia0N1OYEcCghU#Ec[':P&5#DH"D#;+Dkq?
+Eft:&"FDe?CLMK2AmoLsAWeitP#Q:>B4>RsF-:!AE+=*T2NeW7/8fTIA7KhH:jXj6CLMK2AmoL
+sAWeitP#Q@8@<m3_5^eep052PCL]NY>Ou%NLAM7k.H"D#;+Dkq?Efr43AoD^,@<<W(Ec#o]1G<
+0QCjKZ5DgRX,P%'F[0JG170JG170JG17L]E55M#WWnP"_$%I?G)'1G<0QCi=3&F*j'0P%'F[0e
+kC;0ekC;0ekC;L]E55M#WWnP"_$%I?G)'1G<6^F!,@1GB8oROu"b.L]ESo04Te<Ou%H%F(\rrF
+E<USD3A=SP!FGY<,H\h@VKq*P%&9kWFBgVGEPRF04T38+Dl14@VKq*+Di61E+=*J!KsFF9Th1b
+@s;N-D0'?!BlnD=D'3;,@s=(:L]N[<L]NZ4Ou$Tl@N])qCjKZ5DgO-IG@lj90p4=GD'3\O!KsF
+F1OYEc@s;B)@;KauDImm904T3<NWChs1G<SfD284UWKK&cP#R5GP,4=$L]Cq/@Zl#"3+?i:GDH
+9_WFL-aP'Mi`@W5h$P"[N=G@H_!Ou%N504T38+Dl14@VKq*+Di6<F(\rrFE<USD3Cl]9Th1b@s
+;CB$o'Ik0ekC;0ekC;0o-7$V32^Z3/@QEG@H_\L]Cn'@s=)0Ou$Tl@N])qCi=3&F*f$>G@D\)G
+@H_EL]N[<NWChsH$tiTI?IS`@s<_/Ou%moL]Lt(@s<_0P,Wd]Bp(ZC1G<6^+CfVO!b-+YG9CU_
+WJCS<WF^<nOt:*e@N]BJ98G9bWKM(\!Ko6eP"9),F!+s8@s=)\05VhK+C];"GEMui1G<5\@u(/
+K!Ko6eP%?:VGB4m:GB8Q?A!0NK1G<ci@rGmhF*fQ\F)YuZ5*@]TEcYl*P!5$b062,OA!0$=1G<
+ci@s<!W5*@]TEcYZ*DeC1sL]MO;B4cr#P,Wek3/@X!Cm$buF(]*J8pbT"E,CcSI?IQXP(R&'1G
+<ciCi<r/EcYl*OpR:-L]N;4EcYl*L]N[<H]g@/F(&m'B9GHA99MJZF)5c-L]`G6P)#3FI?I,SE
+cZ2?De+3N!g4FW!0V2^5)93%D3>$KEcZ&8B9GHA99MJZF)5c-P!5%%Oo]TEB4cr#P,XUZEcYZ*
+DeG4sP"U4MP')q1L]Djd<IL#?Ou"b$De3NmF!+\C!HN7!@sa"3I?K4gOu%mpL]MO;DI\#HBp(Z
+C1Lk?7AnH*,Bcpo(AS,Oq+DHW4P,XU;P'C\s!KsF<s+g]&05?Y6Ou$TdAS,Oq+DN$/De3NmF!,
+4R!KsFF94MmOAnH*,C6D51F(&m'B-:oO96,)mEc5KO_30%kP"9)$AS,OqL]Cq'AS,OqL]ET2Ec
+YZ*DeC2,P"Th:E,ol-P'DD<82"jk+EDO5GB8pVOu"b3F(9E8+Bot/F(9E8H[V&KEcZ,.H\_ZMP
+(SPj?'7""!/LYnA;C8LWI$:6P!3o-@s<!W5*AQZF(9E8+Dt_Q99R,S1Pc$e!HN7!@u(/KWI$:5
+P!5$bEcY`7F!,@2+DR&?EcY`7F!,@2+DR&?L]NY>P"TR5@rGpjAof)8F)GJ1C6GQP!KsFF96,)
+mEc5KO_30%kP":"a89/c]GB8Q?EcY`7F-:!g!KsFF9RW'6Ou$]gEc#6,NW`s:Ci#7tHS95SA7Z
+m"@<lF)F,0j[WJCqF%qBg)P%'4JP,XTFOu%,i@:WqiBl7X,HS95SA7Zm#De*F6"9=U*Ou%NL<%
+i*,A7Zlf+Dl%-AV:$`n,SUSM"Hi@D/WrrL(=9I"Gli9%rH5qAVL3SOp$U=Oq2DJA7^Q-Op#'R1
+G<T`A7Zm#De*F8#)EhH'68/(De*F#Ou%NL<+^&hD..OH#@h[hE+*6uP!+.FD/Wrr+DbJ3ATDjJ
+!KsF<#*KL,GB8pVL]N[<Oo^_%Eb/ZiATDL&Bln\TD/Wrr+Dl%-AV_IlEfr5,P#O)ODe*E%>9Id
+$A7^Jqn<*p1r/qS-De*F8&!@'$Ou"b.De*E%D/WrrL]rSGL_FfM@rGmhF-8>-P#Q%3Ec#6,NWa
+BFDIntoHS95SA7Zlm@<,jrA7^oTOu"b.De*E%>9Id$A7^Jqn<*p1r/qS-De*F8&!@'$Ou"b.De
+*E%D/WrrL]rSGL_FfM@rGmhF-8=4D/Wrr+Bot*De*F+L^K<]I?I0-Ou%NL<%i*,A7]4aFE8RAD
+e*FB@Yb/MCm(WX1Pc$e!GuacAR]@qF-:!g!KsF/D/Wrr@VKq*P!4m,0Tp^0P":B/L]M@2A7^p5
+L]N[<HS9)r5*@^=De*EgBlnD=D/Wrr+DI!3L]WA8P,4<qOuSV6L]il)P,X6?Bp*:q!KoX0H$ti
+H062,Q@<,dnF!+[0>9I2o>9I2o>9I2o>9I2o>9I2o>9I2o>DPP#6X:g=+C-*oL&h:/!A.S">9I
+2o>D<7\L'.fg+Boso+BsR3!/;&!>p*F91G<6^F!+t:F!,@1GB4m:GB8pVP,WJCE+*cqD0$h/E+
+=*T97))M8TJl^De*F#Ou$]gEc#6,NW`s:Ci#7tHS8o<FCAWmFE8R@@<lF)F!,:-H"D#;P&,pcP
+&+rCH"D#;LiAMnOo^`BOu%N504\L5@:EqmF!,:-H"D#;+DbJ3ATDjTCkrXcCi!O*ATDjJ=H[K`
+!Ks:B1OYEdL]E53A79Rg@VKq*P%'4JP,We=@<>peBlnEZ5)oXtP'MJ=8;I8%!H)CkF,0j[WI$:
+4P!5$bA79Rg@VKq*+CfV:+DI!3L]V%)@s=*4Ot`%YP%%m>@s=)"P,Vo0@s9&0P&-9^A79Rg@VK
+q*P%&<=GB4m9E+=*TCm(c\!KoX0H$tiH04SjBHQ[BDH=`7UP,W;4A<HtAOq*X205PKKHS92EBl
+oM%Ou"b-CjC&a5*@]TCj0T(+D,g?Ci"B;L]ilWOo^_%05P05EZf1-Blo.4P#?+?Bk3B)Ou$obB
+l]"0P!+/.GA1TD!KsF<!g6HEDMS=V!Gl4ZFGL!];J^PkA<L\j!G6P3!KsF<!g6GtCjC&W!g7A_
+!Gl4ZFGL!]C6AU-D0C>j<,?)ZEejaZ4aUdbL]W`;Ci"B;L]W`UOo]B.Blo.4P%p-\Cj0T(L]N[
+<L]W`;L]N[<Cgq+#L]W`;Cj0T(P%p/Z@r6C;P#Q7.Bl]"2P!+/.GA1TD!g6HEDMS=V!Gl4ZFGL
+!];J^PkA<L\j!Kq>4GDH<`;J^/pEejd[Cm"g8@VKq?!g7;]!Kq>1D0C>j<,?)ZEejg\4aUdbL]
+N[<L]W`;Ci"B;L]W`UOo]B.Blo.4P%p-\P&>)[Bk3#$P#@):P,W8,Blo.4P#?+?Bk3BAP,XU^@
+r6C;P#Qjm%[&V[DfT]'FH-K9F_klW4aShoGDHZj1OXU'Ap9%;Ou%NL<A/E-H=\42G9C^1H"D#;
+L]ilWOo^@?Oo^_%05tWMF!+[0F(or3+EM7CAWgkVM#VmdK3aWr05YE6+EM7CAV^AMWJCV=;KHP
+uAWgkNBmO?H!KsF<!g6HE!Ko5lBnubP1Pc'f!Gl1iATDj=05P'BATEqtOu%moL]M+3+DbJ3ATE
+S0P&-9^L^9/[L]N[<HS9>VF-8_M1N7&QF!,:-H"D"=E,Te?Ci+><A79Rg@VKq*+Cno&@:EqmF-
+:!HP,X6<P,XU;LbP!kP'AWo+DHW4Oo^_%I?I-LP"92'Ec#6,NW`s:Ci#7tHS8uTL^fM'06:iRA
+KYT/+DbJ3ATDjJ"HmSa!Jgf?!Gl1iATDjL5pu^5Oo^G*n,NHO2M_BsWKJfg!g7A_!Ko5lD/!N'
+F(or3+EM7CAWgkc!g6HE1G<WbBm=\A>9J!$H=\4?BmO?RCjV!;I?K4gOu%moL_+WAH=_m6P#?W
+[Bp(ZC1Pc$e!HVt$AV^AMWI$:5P!5$bDK'<7F!,O<H=_m6P#@H\C6AU3+Cf83+Bot0BmO?H!g6
+GrOo]9[!Jgc>!Jgf?C0d!JDK'<7F!,O<H=_m6P#@H\C6AU3P&=cHFs(!3F(or3L]W`;C6AU3Oo
+^@>Oo^@?P%n9cH#@S8G]P!A+EM7CAV^DN;Nbp4Oo]'0Fs(!3F(or3L]W`;C6AU3Oo^@>Oo^@?P
+ %n9cH#@S8G]P!AP&>>TH=_m6P#@H\C6AU-D0@%++EM7CAV^DN;JM?qBp&LQ!KmJ>!g7;(P'MJ
+=8:?Xl05?:COu%moL]MC4Bm=]^@Yb&JWI$:4P!5$bDK'<7F!,1[98NS14aV'cBm=\ABcqA/G]P
+!BP"Us_05;VEL]NY>Ou%NL<.0p#05tWMF!,@>Bm=]^1OYEc04oDNAp9%4P#@H!Ap9DUL]M+3HS
+9)r5*@^6GEQj"!G6P&05?Y6Ou%&kG]P!A+DN$/D0@%9OoT6[!0U0*Bp&IEHYS]DI?ITd!KmJ>!
+g7;]G^Y`GI?I-*+Bot#GDH9_!Kq>4GDH9*+Bot#GDH9_!Kq>4GDH9_!Jgb^+Bot#GEQiUGDH9_
+!Jgb^+Bot#GDH9_!G6P3!KmJ>!F6gP+D,hR!KmIqGDH9*+Bot#GDH9_!G6P=DMS=!+Bot#G9CL
+AL]NY>L]C^'>9IO%L]NY>Ap9%3Oo^_`L]C^'>9IO%+D,hR!KmJHDMS9u+Bot#GEQiUGDH9_!Kq
+>V!*p^O+D,hR!KmJHDJ"*K!KmJHDMS9u+Bot#GDH9_!Kq>4GEQj"!*p^QHQ[9AG]T$3H[V&KL]
+`G6P)!OaG*5%PG^Y`HAoD^,@<@M4Ap%p+P!+.FD/WrrD..B+>9I.+qhPJ_+Bs["L^.3.>DW66#
+@/HVM#N28>p*@-s+gnc+BsX&L^.3.>DN?:#@/HVL]`G<>p*@-"Gd:g+BsX*L^.3.>DNN?"^N6T
+L^/_=>p*@-#D`If+BsX,L]Uj)>DNN?!F6gPL^/b9>p*@-#Di@b+BsX,M#CU%>DNN?r*:FLL^/b
+5>p*@-"c2t[+BsX)M"t=!>DNB;q->+IL]WD.>p*@-!JpPW+Bs[%M"t=!>DW97q->+IM#E/*>p*
+@-r.t/S+Bs[!M"t=!>DW*2qct=KM"ul)>p*@-q2"uT+BsZtM#L[&>DW*2s'6aOM"ui->p*@-q1
+o)X+BsZtL]^p*>DW*2"C3-SM"ui1>p*F91OXU'D/WrrD..B+>9I.+rJ1V_+Bs[$L]q',>DW<8"
+^N6TL]E57>p*@-!Jgnb+BsX'L]q',>DNB;"^N6TL]rS:>p*@-"c*4c+BsX*L]Ld(>DNH=!*p^O
+L]rV7>p*@-"c3.`+BsX*M#CU%>DNB;qct=KL]WD0>p*@-!JpVY+BsX%M#1I#>DW<8qct=KM#N5
+->p*@-rJ:>V+Bs[!M#CU%>DW04r`pXNM#3#.>p*@-qhP5X+Bs[!L]Ld(>DW04!aQpQM#2u1>p*
+F91OYEdL]E53D/WrrD..CH@Yb&JWI$:4P!5$bE+sQ<+Dl%-ASkjp+DI!3H[V&K@r6B3D/Wrr@V
+Kq*+DI!3LbP!kP'DD<83B!fEb0,A061WAD..O,Bm;:MBm=\AE+sQ<05tWMGT_'AH=\aKBm=nGF
+(or305+p2B4uB0F(or3L]W`ULe*[e06_,@FD)e<BmO?H!g7AU8<PkaDfBe@DfBf4Df0V=5!C*"
+Df0Z-Eaa0TE%`kbASu?nFE2)?P#RT)I?G)'1G<0_FCerlDe*FB30If*F_`U>D_?-CEcQG7F`MS
+BDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP'(hWFDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/azteccode 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER azteccode--
% --BEGIN ENCODER codeone--
+% --REQUIRES preamble raiseerror renmatrix--
% --DESC: Code One
% --EXAM: Code One
% --EXOP: version=B
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/codeone {
-
- 20 dict begin
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
- /version (unset) def
- /encoding (ascii) def
- /raw false def
- /parse false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /stype version 0 1 getinterval (S) eq def
- stype {/raw true def} if
-
- % Parse ordinals of the form ^NNN to ASCII
- parse {
- /msg barcode length string def
- /j 0 def
- barcode
- { % loop
- (^) search {
- dup msg exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi msg exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup msg exch j exch putinterval
- length j add /j exch def
- /barcode msg 0 j getinterval def
- exit
- } ifelse
- } loop
- } if
-
- /barlen barcode length def
-
- raw {/encoding (raw) def} if
-
- encoding (raw) eq {
- /cws barlen array def
- /i 0 def /j 0 def
- { % loop
- i barlen eq {exit} if
- /cw barcode i 1 add 3 getinterval cvi def
- cws j cw put
- /i i 4 add def
- /j j 1 add def
- } loop
- /cws cws 0 j getinterval def
- } if
-
- encoding (ascii) eq {
- /cws barlen 2 mul array def
- /i 0 def /j 0 def
- { % loop
- i barlen eq {exit} if
- /char barcode i get def
- char 48 ge char 57 le and i barlen 1 sub lt and {
- barcode i 1 add get dup 48 ge exch 57 le and { % Digit pair
- cws j barcode i 2 getinterval cvi 130 add put
- /i i 2 add def
- /j j 1 add def
- } { % Singular digit
- cws j char 1 add put
- /i i 1 add def
- /j j 1 add def
- } ifelse
- } { char 127 le { % ASCII
- cws j char 1 add put
- /i i 1 add def
- /j j 1 add def
- } { % Extended ASCII
- cws j 235 put
- cws j 1 add char 127 sub put
- /i i 1 add def
- /j j 2 add def
- } ifelse } ifelse
- } loop
- /cws cws 0 j getinterval def
- } if
-
- % Basic metrics for the each symbol
- % ver row col dcol dcws rscw rsbl ro ri rl
- /metrics [
- [ (A) 16 18 16 10 10 1 4 99 6 ]
- [ (B) 22 22 20 19 16 1 4 99 8 ]
- [ (C) 28 32 28 44 26 1 4 22 11 ]
- [ (D) 40 42 36 91 44 1 4 16 16 ]
- [ (E) 52 54 48 182 70 1 4 22 22 ]
- [ (F) 70 76 68 370 140 2 4 22 31 ]
- [ (G) 104 98 88 732 280 4 6 21 47 ]
- [ (H) 148 134 120 1480 560 8 6 20 69 ]
- [ (S-10) 8 11 10 4 4 1 99 99 99 ]
- [ (S-20) 8 21 20 8 8 1 99 99 99 ]
- [ (S-30) 8 31 30 12 12 1 99 99 99 ]
- [ (T-16) 16 17 16 10 10 1 99 99 99 ]
- [ (T-32) 16 33 32 24 16 1 99 99 99 ]
- [ (T-48) 16 49 48 38 22 1 99 99 99 ]
- ] def
-
- % Select metrics of an appropriate symbol
- /i 0 def
- { % loop
- /m metrics i get def
- /vers m 0 get def % Version of symbol
- /rows m 1 get def % Rows in symbol
- /cols m 2 get def % Columns in symbol
- /dcol m 3 get def % Data columns in symbol
- /dcws m 4 get def % Data codewords in symbol
- /rscw m 5 get def % Error correction codewords
- /rsbl m 6 get def % Error correction blocks
- /riso m 7 get def % Riser offset
- /risi m 8 get def % Riser interval
- /risl m 9 get def % Riser length
- /dcpb dcws rsbl idiv def % Data codewords per block
- /ecpb rscw rsbl idiv def % Error codewords per block
- /okay true def
- version (unset) ne version vers ne and {/okay false def} if % The version must match that supplied
- cws length dcws gt {/okay false def} if
- okay {exit} if
- /i i 1 add def
- } loop
-
- % Extend cws to ncws codewords by addition of pad characters
- stype not {
- /cws [ cws aload pop dcws cws length sub {129} repeat ] def
- } if
-
- % De-interleave the codewords into blocks
- /cwbs rsbl array def % Array of data codeword blocks
- /ecbs rsbl array def % Array of error correction blocks
- 0 1 rsbl 1 sub {
- /i exch def
- /cwb dcpb array def
- 0 1 dcpb 1 sub {
- /j exch def
- cwb j cws j rsbl mul i add get put
- } for
- cwbs i cwb put
- } for
-
- % Log and anti-log tables and function to calculate product in the field
- /gf stype {32} {256} ifelse def
- /gf-1 gf 1 sub def
- /pm stype {37} {301} ifelse def
- /rsalog [ 1 gf-1 { dup 2 mul dup gf ge {pm xor} if } repeat ] def
- /rslog gf array def
- 1 1 gf-1 {dup rsalog exch get exch rslog 3 1 roll put} for
- /rsprod {
- 2 copy 0 ne exch 0 ne and {
- rslog exch get exch rslog exch get add gf-1 mod rsalog exch get
- } {
- pop pop 0
- } ifelse
- } bind def
-
- % Generate the coefficients for the Reed-Solomon algorithm
- /coeffs [ 1 ecpb {0} repeat ] def
- 0 1 ecpb 1 sub {
- /i exch def
- coeffs i 1 add coeffs i get put
- i -1 1 {
- /j exch def
- coeffs j coeffs j 1 sub get coeffs j get rsalog i get rsprod xor put
- } for
- coeffs 0 coeffs 0 get rsalog i get rsprod put
- } for
- /coeffs coeffs 0 coeffs length 1 sub getinterval def
-
- % Reed-Solomon algorithm to derive the error correction codewords
- 0 1 cwbs length 1 sub {
- /i exch def
- /rscws [ cwbs i get aload pop ecpb {0} repeat ] def
- 0 1 dcpb 1 sub {
- /m exch def
- /k rscws m get def
- 0 1 ecpb 1 sub {
- /j exch def
- rscws m j add 1 add coeffs ecpb j sub 1 sub get k rsprod rscws m j add 1 add get xor put
- } for
- } for
- ecbs i rscws dcpb ecpb getinterval put
- } for
-
- % Extend codewords with the interleaved error correction codes
- /cws [ cws aload pop rscw {0} repeat ] def
- 0 1 rscw 1 sub {
- /i exch def
- cws dcws i add ecbs i rsbl mod get i rsbl idiv get put
- } for
-
- % Module matrix for layout of the codewords
- /mmat dcws rscw add stype {5} {8} ifelse mul array def
- /r 0 def /c 0 def
- 0 stype {2} {1} ifelse cws length 1 sub {
- /i exch def
- stype not {
- (00000000) 8 string copy dup cws i get 2 8 string cvrs
- dup length 8 exch sub exch putinterval [ exch {48 sub} forall ]
- dup 0 4 getinterval /top exch def
- 4 4 getinterval /bot exch def
- } {
- (00000) 5 string copy dup cws i get 2 5 string cvrs
- dup length 5 exch sub exch putinterval [ exch {48 sub} forall ]
- /c1 exch def
- (00000) 5 string copy dup cws i 1 add get 2 5 string cvrs
- dup length 5 exch sub exch putinterval [ exch {48 sub} forall ]
- /c2 exch def
- /top [ c1 0 3 getinterval aload pop c2 0 2 getinterval aload pop ] def
- /bot [ c1 3 2 getinterval aload pop c2 2 3 getinterval aload pop ] def
- } ifelse
- mmat r dcol mul c add top putinterval
- mmat r 1 add dcol mul c add bot putinterval
- /c c top length add def
- c dcol eq {/c 0 def /r r 2 add def} if
- } for
-
- % Create bitmap and add finder patterns
- /mmv {cols mul add} bind def
- /pixs [ rows cols mul {-1} repeat ] def
-
- % Centre pattern
- /artifact [
- {cols {0} repeat} bind
- {cols {1} repeat} bind
- {0 cols 2 sub {1} repeat 0} bind
- {0 1 cols 4 sub {0} repeat 1 0} bind
- {cols 1 sub 2 idiv {-1} repeat 1 cols 1 sub 2 idiv {-1} repeat} bind
- {cols 1 sub 2 idiv {-1} repeat 0 cols 1 sub 2 idiv {-1} repeat} bind
- {1 cols 2 sub {0} repeat 1} bind
- {1 0 cols 4 sub {1} repeat 0 1} bind
- ] def
- /cpat <<
- /A (121343)
- /B (12134343)
- /C (12121343)
- /D (1213434343)
- /E (1212134343)
- /F (1212121343)
- /G (121213434343)
- /H (121212134343)
- /S (56661278)
- /T (5666666666127878)
- >> vers 0 1 getinterval get def
- pixs 0 rows cpat length sub 2 idiv mmv
- [ cpat {artifact exch 49 sub get exec} forall ] putinterval
-
- % Risers
- 0 1 risl 1 sub {
- /i exch def
- riso risi cols 1 sub {
- /j exch def
- [ 1 i 12 mod 0 eq {1} {0} ifelse ] dup
- pixs j i mmv
- 3 -1 roll putinterval
- i risl 1 sub ne {
- pixs cols j sub 2 sub rows i sub 1 sub mmv
- 3 -1 roll putinterval
- } {pop} ifelse
- } for
- } for
-
- % Black dots
- <<
- /A [ [12 5] ]
- /B [ [16 7] ]
- /C [ [26 12] ]
- /D []
- /E [ [26 23] ]
- /F [ [26 32] [70 32] [26 34] [70 34] ]
- /G [ [27 48] [69 48] ]
- /H [ [26 70] [66 70] [106 70] [26 72] [66 72] [106 72] ]
- /S-10 []
- /S-20 [ [10 4] ]
- /S-30 [ [15 4] [15 6] ]
- /T-16 [ [8 10] ]
- /T-32 [ [16 10] [16 12] ]
- /T-48 [ [24 10] [24 12] [24 14] ]
- >> vers get {pixs exch aload pop mmv 1 put} forall
-
- % Place the modules onto a pixel map between alignment patterns
- /j 0 def
- 0 1 pixs length 1 sub {
- /i exch def
- pixs i get -1 eq {
- pixs i mmat j get put
- /j j 1 add def
- } if
- } for
-
- % Return the arguments
- <<
- /ren //renmatrix
- /pixs pixs
- /pixx cols
- /pixy rows
- /height rows 72 div 2 mul
- /width cols 72 div 2 mul
- /opt options
- >>
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/codeone dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp codeone 0.0 0 0 0
+%%BeginData: 82 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-! 04Sp2A T) HtH\`B !23
+JD%DfBf4Df0WZ5* @]T@U X:e De* F B5* @]T A8c @-A9)+ &+ D,%uF( LLj
+06UoIF(oQ1NWjQC F(KHV 1G< <W@ rG ml DJ+ t5@ <5pmBp (8 *Eaa/7 Amo
+LsAWei&E+*d.AKY SnCi a0N 1N .5 SBl @m1 P-6 N[FE
+2)5B68E<AWf3'L] NYrO p u> KF D5Z 2F* j(NA moLsA
+Wf3'P!FGY<0B5(@ ZmRN0o c8t P )XR (F _-_! H]f tD5*C&O5*@ ^MH]ft&Eckr
+V1OYEdI?J0)*g/N :DfBf4 Df0 W Z5*@ ^MP# Q@= FD5Z2F*j'+ I?I/TF*)\HA
+KZ/-EcYr5DMS:K! Kp-:!E 5.E Ou%0 $H#R >A0 61KF+EVXHA WeitP#QC/Ec
+Yf=05YcC+C\c"@r GmhP% 'TNO u"b+L ]ESo @UX :eDe*F+NWE ILNI-gJD0'?
+Q5&-6EP'N4"C6AU R!KmI :C6Cc D1Qlm D3/ @Qj"-Q?@/8 ]H@P!3W:!Ks
+FF5*C/R30Ia,"-T X>"-Pj2 9RV8N3 ,N_LP !3W D5*C2S@VV& ,05?Y6Ou"b#
+@<,jrA7Zm#F(^:/C6D8R1Qk"OP#ZpnAUT_@04J@1Ch7K,@UX:eDe*FB@ZiNf@<[&OASu!rA8,p
+oNWX<1GEOb1P#Q"1@rGmlDJ+t3Eaa0T4aShlGB4m9@<-0qDNY<h1G<Hu!0T,kC5;kQ1OEgY@UX
+:nAT!YoH]gXBP#O)EG9C@'Eas#uAKY]C!KmJ>"-Q?@/<Vf!GB4mA+CfVYGV<bRBnunT!Ko5lC*
+78I!KmJH1OYEt04T3I+CfV:L]D1Q9Th2[P#Q"1@rGmlDJ+t5@<5pmBp(W+04T3I+C\c"Ch7L?!
+g7A_$'I(tBnubP1G<L!!0T-bBcpknEbo<)P!+/T5^eep04S[(EZeh"Eas#uAKY]M99M)@BOPq;
+0To%<BOPq;3Kdg6"DJuf@<-0qDMS=VWKLkV"FFTdEas#uAKY]C!KmJH99M8j0To%k5);4^@?Lb
+?@s;u:C*6toEas#uAKY]C!g66?/;=.VOo^_j052PCL]W_?Ou"b++DQ]5Oo^_%I=#IJF!,3?@q]
+:kL]NY>P'AWo+DHW4Oo^_%05;VEL]NY>Ou%NL<IK4(BOPq;J!+5e@s;u:C*7#"@<./)Oo^_j05
+2PCL]NY>Ou"b++DQ]5Oo^_%I=#IJF!,4P!:,em@s;u:C5;nR!FoeOEeo4.WKMKZBcq,G!KmJH1
+G<JcC5;qS!Ko6eP#Zpn<IL$A04T3I+CfV:L]D1Q9Th2[P#O)OATVs,@ribs+Bsj,6&6).&r7*T
+$A]%F!Jgl7@u(=p+Bsj,6AQD5(5NZ\'8R3U!Jgl7@u(Cr+Bsj,6\l_<+G_"n/;P4#!Jgl7(5N?
+(+Bsj,7#37I.Yo@+>DOhd!Jgl7&;Um'+Bsj,7>NdV2Ma&A!4I\QL]N;7L_bd^>p*@3!Chl7LeN
+UmL&l=L!/u^8L]iMLL`]nF>E/_SLhMTRLffB5gkGhHL]iM<L_Y_!>p*@3!D%qFP_K0mLj4XXaG
+'aML^8e@L_PY6>p*@3"B-m,0Sg!j$]#.G"Gd2:!Jk6A@u+W#+Bsj/;_9aYL^8eOL_PXNL^8e;L
+gu6NLgs^5>E/hb/Mf):#`'RY*f(5\%#=q?@u+WN@pL3]NW`<50fFh!L_5FSL^JqFL]N<ALgu6N
+>p*@3"B6s/15HKt+c%7s(l/`Z!Jk6A@u+W#+Bsj/<%TpdL_,@sLbOW3L_bdILgu6NLgs^5?'6u
+sBnubP1OCcl+Dk\3EbT$)+DI!3Ou"b7ATDi7D281T99M(aEc6/C+Dlo8P"Uro04Sp:F!,=U!g6
+3>1G<9KDepP5L]`f5Ou"b%@s;u:D28=X99M(aEcY`7+Dlo<P"Uro062,CC`mSN#*MWB1G<c_F)
+N1<L^0)9Ou"b3Bldu2D28I\99M(aEbTT2+Dlo@P"Uro04\R3@N]2kGB4mIF(/sK;N`ghARf[g+
+EDO5G9CpI@Vh3*Ou"b0CLMK2FE2M8Ou%8mEcYr5DN4mCDKBB2P&5AREcYr5DBO+6Ec[C\Op$+b
+Deid,+D,%uF(LLjI?IQ>GB8pVA7Kh)P#-KYDeid,+D,%uF(LLjI?IQJCLML8P!FGY<%hr.Bnue
+Q!Ko6eP%A]VH#R>XE-j6JGB4m2+CfV:OogehA7Kh)+CfV:P%'TRH\MNOI?K4gOu%NL<%ha*@WN
+Z4F(/sK$'I(tARf1j+EDO4Cm#*f1Pc$e!HN6jCkr+TWI$:4P!5$b04T38+Cnu$@Zh%\1Pc$e!G
+#\Z@Yb&JWI$:5P!5$b@s;B)C*7#1F!,3?EcY]+P&+iq!Kp*=G^Y`G@s;C'+DDs.G@H_[I?I,SB
+4`9-FEqh:H\`emH\MP$I?ITn1G<BQ/MSA\Ar$JNWKK%jE,?_=FEqh:H\`trH\MPQI?ITn1G<ci
+@;Kjp+BsX&B4`_MH]g@E!g7A_3+lid8pbMoP/2R0<.0p^?'6usEcZ&8B-:i!OpR:-L]N;4B4`_
+MH]g@/F(&m'B9GHA99MJZF)5c-L]`G6P)#3FI?I,SEcZ2?De+3N!g4FW!0V2^5)93%D3>$KEcZ
+&8B9GHA99MJZF)5c-P!5%%Oo]3-/MWE'EcYZ*DeG4sP"U4MP')q1L]Djd<IL#?Ou"b$De3NmF!
++\C!G,b[@XEn2I?K4gOu%moL]M'sE+4V(P,Wd]Bp(ZC1Lk?7AnH*,BnueQ!Fp%ZAnH*,Bp),PG
+\N!6L]MiUC6CcD1Lk?7AnH*,C*7#)AS,Oq+DQ]5P,XU;@rGpjAof)0P"Th:@;Kjp+DI!3EcZ2?
+De,$IP'DD<87QRLAnH+?!+TqYAnH+?!0TuqF(&m'B-:oO96,)mEc5KOG^Y`G04Sp3AnH*,@rGp
+jAoib.@rGpjAoj,EL]N[<P"_#pL]E53@s;C'P%'4JP,Wd]Bp(ZC1G<ci@s;u:>9IF"@WNZ+P"U
+r>P'(>GE+40M!.C#_?'7""!/LYd@rPn5!KsF/05Zk9Ou"b,+EDO5GB4mDP"UroL]E53ARf[gL]
+N[<HS9,s5*@^BF(9E8+Di69Oo^@>Oo]'2AS,Oq+D#&%@N]EKWJCS<WKKni+EDOBEc5J2EcY`7F
+!,<BC6AUR!KmJH99R,SG^Y`GI?I-4@q'L%BcqG;@s;u:A7KRf+D#&%@ZjEJG^Y`G04T3I+Bosu
+GB8oKP'(ed@s<9U!.C#_?'7""!/LYrF(9EM!KsF/056S5Ou$TlF!,"'GB4m@Oo]-(@WNZ++EDO
+4Cm&Or95,MhF(/sK;Na\9G^Y`G05YQ7F<G+(GB4mIF(9EW!HW@.E+OBP"at`R#^qk9P&-9fOu"
+b3L]ESo04Te<Ou%moF*)\HAUB47I=$bNI?IT?GB8pVL]N[<HS9)r5*@^CFEqh:P&Pc.#V[qd0J
+G170Sg!tV32^Z3+I/R+DI!3L]WA<P,4<qOuSV6L^9/-P,XU.P'L8p5'r)>P,Wkm8R7K=L]E56P
+"[NNDfCk'Ou%msL]il704JjAP!5$bI=$tX0JG170SfmqV32^Z3+I/R+DI!3L]WA9P,4<qOuSV6
+L]rr*P,XU.P'L8p5'r)>P,Wkm8R3uZ0p4_`1QDVm0JG17L]rs<Or9EB@s;u:BnueQ!Kp*3!f.#
+CV33Nq30Ia,"d2'4WKKH.H!?FqH\aA=WI9q$>q]\CP!5$b06D,O+Bosu0o,gc"-Q?@!g7\915G
+pd!g66?!g7\3Ou"b#Dfd+++Cd-^",I#A9TfI?F^m1_!f-rA9TfI?F^:.dI?ITID..N/EZen&De
+tSQA!-k7DfCkbD/E^'+EE8=Oo]*'DetSQA!-k%Dfh.f04Q,7+EVO@P%'RTOu$SjA7KOoP!+.F@
+u(,J1G<bkEejd[!Ko6eP#Qjm82"gsG'b?ADesKXCm"gIOq*X205tWMF!+[0Ec6/C+Cf>+F-:?d
+M#VmdK3aWr04AmCBkCd`F<Fe7+Cf>+F*i]CI?K52Oq)hKDesKAL]MpeK7/mmH\_Z3DesKN!g9O
+0L]MpeK89MUOq)hp!/LYcDesKN"Hoa2L]DjdK89Pa!.C"?HXgu1F,0j[WJCV=;L=6"I?K5=!Fp
+ %aF,0j[WJCV=;L=6"I?K52Oq)hKDesKN!KsF<!g6H.M#VmdK89M;DesKN!KsF<!g6H.M#VmdK
+7/mmH\_]4DesKN!g9O0L]DjdK89PVOq)hp!Jg_cDesKN"Hoa2L]MpeK89M`!I^+@?'6us@rPju
++?Vb>6&l.(1,1RA1G;(T#Ve(h1GgmE1G;+U#Ve(h1,1RA1G;.V$8F:j1GgmE1Ggm@7?.^01,1O
+=1GgmE1G;4X$8F:j1,1O=1Ggm@7ue!41,1O=1GgmE1Ggm@8<+*51,1O=1,1RA1Ggm@;iV,@2E!
+HJ1,h0G</qMI2E!HO2E!HO2DHsG3&`f\4s5#[Ec[$:L]NZ4P"UroE+sQ<L]DI6GB4m:E+*jO@Z
+m^H!g6GuD0@%++CfA!FF,-=Ecc#-@:ODB5):qVWKKo;5CJ\d?'9Jh!/LYrBle*H!KsF/056S5O
+u%,mF)N1ABldu2@rH1)L]N[<HS9,s5*@^+L]M4G%$G@]!0TKlL]MpNL]Djd<F(bIE+sQ<+DN$5
++Dkt=L]`J5P)#3GBcqG1F)6X5P,XU]HZ3\DF!+t2Ci^_6P,X6=P,WJ?GB4m@P,X6<P,W;8G)-6
+Vs,r/#H$t%&Fa]EQI?I-LP"7\t00p^b+BsX1L]q',>q\Me>9I.+&;UQs+C-Wf+BosmL`2'X>p*
+E+6m,\V>q\Vh>9I.+)Mf28+C-Wi+BosmL`2'l>p*@-7Yi0m+BsX?La$+I>DPb),$c<s01R-h+B
+sX@LbN*W>DP_(0O5f,01[3i+BsX?LdkYm>DPV%7U7-@Lh_`8>p*@-)Mgpi+BsXgLe(eo>DR$M8
+6m?D02jGW0HaRB>q],.1,'hT+BsX/L]h!+>q],.1GBqU+BsX4L]h!+>DNfG#$i?W02sMX2BZ3H
+>DNQ@$=+c[02sMZ1*BdD>DNiH$=+cYL_,@N>p*E+<%Tpd+BosmL_tpT>p*@-(l/T++BsX=L^m]
+5>p)<p+Eh=:F-91CE+sQ<P!5$1P'(VYG)-0^G^Y`H05?:COu%moL]MI/G]T$WL]N[<HS9)r5*@
+^@Bm=\ABp),Fs,oNlE+sQ<+DDs8D..N/C6D5QGV<eSC5;nR!Ko6eP#Qjm83B!fEb0,A061WAD.
+.O,Bm;:MBm=\AE+sQ<05tWMGT^L7Ci_7KBm=nGEc6/C05+p2B4uB0Ec6/CLe*[eL]W`U06_,@F
+D)e,DesKN8<Ple!g7@QDfBe@DfBf4Df0V=5!C*"Df0Z-Eaa0TE%`kbASu?nFE2)?P#RT)I?G)'
+1G<6VA7][sAWf$9A1r(@/n8fPFCfK5H"(o:FDl%L@WuO*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]
+HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/codeone 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER codeone--
% --BEGIN ENCODER gs1-cc--
-% --REQUIRES micropdf417 pdf417--
+% --REQUIRES preamble raiseerror renmatrix micropdf417 pdf417--
% --DESC: GS1 Composite 2D Component
% --EXAM: (01)95012345678903(3103)000123
% --EXOP: ccversion=b cccolumns=4
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-dup /pdf417 dup /uk.co.terryburton.bwipp findresource put
-dup /micropdf417 dup /uk.co.terryburton.bwipp findresource put
-begin
-/gs1-cc {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /ccversion (a) def
- /cccolumns -1 def
- /lintype () def
- /linwidth -1 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /cccolumns cccolumns cvi def
- /linwidth linwidth cvi def
-
- % Select columns based on linear type
- cccolumns -1 eq {
- <<
- /ean13 4
- /upca 4
- /ean8 3
- /upce 2
- /gs1-128
- ccversion (c) ne {4} {linwidth 52 sub 17 idiv} ifelse
- /databaromni 4
- /databarstacked 2
- /databarstackedomni 2
- /databartruncated 4
- /databarlimited 3
- /databarexpanded 4
- /databarexpandedstacked 4
- >> lintype get /cccolumns exch def
- } if
-
- % Expand ordinals of the form ^NNN to ASCII
- /expand {
- /in exch def
- /out in length string def
- /j 0 def
- in
- { % loop
- (^) search {
- dup out exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi out exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup out exch j exch putinterval
- length j add /j exch def
- out 0 j getinterval exit
- } ifelse
- } loop
- } bind def
-
- % Parse out AIs
- /ais [] def
- /aival 2 dict def
- barcode dup length 1 sub 1 exch getinterval
- { % loop
- dup () eq {exit} if
- (\)) search pop
- exch pop
- exch (\() search {
- exch pop exch 3 1 roll
- } {
- () 3 1 roll
- } ifelse
- [ ais aload pop counttomark 2 add index ] /ais exch def
- aival 3 1 roll expand put
- } loop
- pop
-
- % Method selection
- /isupper {dup 65 ge exch 90 le and} bind def % A-Z
- /isnum0 {dup 48 ge exch 57 le and} bind def % 0-9
- /isnum1 {dup 49 ge exch 57 le and} bind def % 1-9
- { % common exit
-
- % (10/11/17)...
- ais length 1 ge {
- ais 0 get (10) eq ais 0 get (11) eq or ais 0 get (17) eq or {
- -1 (10) exit
- } if
- } if
-
- % (90){0-3 digits not starting 0}{upper alpha}...
- ais length 1 ge {
- ais 0 get (90) eq {
- /v aival (90) get def
- v length 1 ge {
- v 0 get isupper {
- 0 (11) exit
- } if
- } if
- v length 2 ge {
- v 0 get isnum1
- v 1 get isupper and {
- 1 (11) exit
- } if
- } if
- v length 3 ge {
- v 0 get isnum1
- v 1 get isnum0 and
- v 2 get isupper and {
- 2 (11) exit
- } if
- } if
- v length 4 ge {
- v 0 get isnum1
- v 1 get isnum0 and
- v 2 get isnum0 and
- v 3 get isupper and {
- 3 (11) exit
- } if
- } if
- } if
- } if
-
- % Freeform
- -1 (0) exit
-
- } loop
- /method exch def
- /npre exch def
-
- /fnc1 -1 def /lnumeric -2 def /lalphanumeric -3 def /liso646 -4 def
-
- /tobin {
- string dup length 1 sub 0 exch 1 exch {1 index exch 48 put} for
- dup 3 -1 roll 2 2 index length string cvrs dup length 2 index length exch sub exch putinterval
- } bind def
-
- /alpha <<
- 65 1 90 {dup 65 sub 5 tobin} for
- 48 1 57 {dup 4 add 6 tobin} for
- fnc1 (11111)
- >> def
-
- /numeric <<
- 0 1 119 {
- dup (00) 2 string copy dup 3 -1 roll 11 2 string cvrs
- dup length 2 exch sub exch putinterval
- dup 0 get 65 eq {dup 0 94 put} if
- dup 1 get 65 eq {dup 1 94 put} if
- exch 8 add
- (0000000) 7 string copy dup 3 -1 roll 2 7 string cvrs
- dup length 7 exch sub exch putinterval
- } for
- lalphanumeric (0000)
- >> def
-
- /alphanumeric <<
- 48 1 57 {dup 43 sub 5 tobin} for
- fnc1 (01111)
- 65 1 90 {dup 33 sub 6 tobin} for
- 42 (111010)
- 44 1 47 {dup 15 add 6 tobin} for
- lnumeric (000)
- liso646 (00100)
- >> def
-
- /iso646 <<
- 48 1 57 {dup 43 sub 5 tobin} for
- fnc1 (01111)
- 65 1 90 {dup 1 sub 7 tobin} for
- 97 1 122 {dup 7 sub 7 tobin} for
- 33 (11101000)
- 34 (11101001)
- 37 1 47 {dup 197 add 8 tobin} for
- 58 1 63 {dup 187 add 8 tobin} for
- 95 (11111011)
- 32 (11111100)
- lnumeric (000)
- lalphanumeric (00100)
- >> def
-
- method (10) eq { % TODO: fixme
- ais 0 get (11) eq ais 0 get (17) eq or {
- aival ais 0 get get
- dup 0 2 getinterval cvi 384 mul exch
- dup 2 2 getinterval cvi 1 sub 32 mul exch
- 4 2 getinterval cvi add add
- (0000000000000000) 16 string copy dup 3 -1 roll 2 16 string cvrs
- dup length 16 exch sub exch putinterval
- [ 1 0
- 4 -1 roll {48 sub} forall
- ais 0 get (11) eq {0} {1} ifelse
- ] /cdf exch def
- /ais ais 1 ais length 1 sub getinterval def
- } {
- /cdf [ 1 0 1 1 ] def
- } ifelse
- ais length 0 ne {
- ais 0 get (10) eq {
- /gpf [ aival (10) get {} forall ] def
- ais length 1 gt {/gpf [ gpf aload pop fnc1 ] def} if % TODO: check
- /ais ais 1 ais length 1 sub getinterval def
- } {
- /gpf [fnc1] def % TODO: check
- } ifelse
- } {
- /cdf [ cdf aload pop 0 0 0 0 0 1 1 1 1 ] def
- /gpf [] def
- } ifelse
- /mode (numeric) def
- } if
-
- method (11) eq {
- /cdf [ 1 1 ] def
- /ai90 aival (90) get def
- npre 1 add ai90 length ne {
- ai90 npre 1 add ai90 length npre sub 1 sub getinterval
- } {
- ()
- } ifelse
- /ai90rem exch def
- /nalpha 0 ai90rem {dup 65 ge exch 90 le and {1 add} if} forall def
- /nnums 0 ai90rem {dup 48 ge exch 57 le and {1 add} if} forall def
- /mode nalpha nnums gt {(alpha)} {(numeric)} ifelse def
- nalpha nnums add ai90rem length ne {/mode (alphanumeric) def} if
- /cdf [
- cdf aload pop
- mode (alphanumeric) eq {0} if
- mode (numeric) eq {1 0} if
- mode (alpha) eq {1 1} if
- ] def
- /ais1 ais length 1 gt {ais 1 get} {-1} ifelse def
- ais1 (21) eq ais1 (8004) eq or {
- /cdf [ cdf aload pop ais1 (21) eq {1 0} {1 1} ifelse ] def
- } {
- /cdf [ cdf aload pop 0 ] def
- } ifelse
- /nval npre 0 ne {ai90 0 npre getinterval cvi} {0} ifelse def
- (BDHIJKLNPQRSTVXZ) ai90 npre 1 getinterval search {
- length exch pop exch pop
- /aval exch def
- } {
- pop /aval -1 def
- } ifelse
- nval 31 lt aval -1 ne and {
- (00000) 5 string copy dup nval 2 5 string cvrs
- dup length 5 exch sub exch putinterval
- [ exch {48 sub} forall ] /nbits exch def
- (0000) 4 string copy dup aval 2 4 string cvrs
- dup length 4 exch sub exch putinterval
- [ exch {48 sub} forall ] /abits exch def
- /cdf [
- cdf aload pop
- nbits aload pop
- abits aload pop
- ] def
- } {
- (0000000000) 10 string copy dup nval 2 10 string cvrs
- dup length 10 exch sub exch putinterval
- [ exch {48 sub} forall ] /nbits exch def
- (00000) 5 string copy dup ai90 npre get 65 sub 2 5 string cvrs
- dup length 5 exch sub exch putinterval
- [ exch {48 sub} forall ] /abits exch def
- /cdf [
- cdf aload pop
- 1 1 1 1 1
- nbits aload pop
- abits aload pop
- ] def
- } ifelse
- mode (numeric) eq {
- /gpf [ ai90rem {} forall ais length 1 gt {fnc1} if ] def
- } {
- /encs mode (alpha) eq {alpha} {alphanumeric} ifelse def
- /in [ ai90rem {} forall ais length 1 gt {fnc1} if ] def
- /out in length 6 mul array def
- /j 0 def
- 0 1 in length 1 sub {
- in exch get encs exch get
- dup [ exch {48 sub} forall ] out exch j exch putinterval
- length j add /j exch def
- } for
- /cdf [
- cdf aload pop
- out 0 j getinterval aload pop
- ] def
- /gpf [] def
- ais length 1 gt mode (alpha) ne or {/mode (numeric) def} if
- } ifelse
- /ais ais 1 ais length 1 sub getinterval def
- ais length 0 ne {
- ais1 (21) eq ais1 (8004) eq or {
- /gpf [
- gpf aload pop
- aival ais1 get {} forall
- ] def
- /ais ais 1 ais length 1 sub getinterval def
- ais length 0 ne {/gpf [gpf aload pop fnc1] def} if
- } if
- } if
- } if
-
- method (0) eq {
- /cdf [ 0 ] def
- /gpf [] def
- /mode (numeric) def
- } if
-
- % Pre-defined fixed length data field AIs
- % any AI whose prefix is not included in this table must be
- % terminated with "FNC1", even if it's fixed length
- /aifixed 23 dict def
- [
- 0 1 4 {} for
- ] {
- (00) 2 string copy dup dup 1 5 -1 roll 48 add put aifixed 3 1 roll put
- } forall
- [
- 11 1 20 {} for
- 23
- 31 1 36 {} for
- 41
- ] {
- 10 2 string cvrs dup aifixed 3 1 roll put
- } forall
-
- % Append the remaining AI data
- 0 1 ais length 1 sub {
- /i exch def
- /ai ais i get def
- /val aival ai get def
- gpf length ai length add val length add array
- dup 0 gpf putinterval
- dup gpf length ai [ exch {} forall ] putinterval
- dup gpf length ai length add val [ exch {} forall ] putinterval
- /gpf exch def
- i ais length 1 sub ne aifixed ai 0 2 getinterval known not and { % Append FNC1
- gpf length 1 add array
- dup 0 gpf putinterval
- dup gpf length fnc1 put
- /gpf exch def
- } if
- } for
-
- % Calculate the number of bits remaining to the next valid symbol size
- /rembits {
- /used exch def
- ccversion (c) ne { % cc-a or cc-b
- <<
- /a [
- [167 138 118 108 88 78 59]
- [167 138 118 98 78]
- [197 167 138 108 78]
- ]
- /b [
- [ 336 296 256 208 160 104 56]
- [ 768 648 536 416 304 208 152 112 72 32]
- [1184 1016 840 672 496 352 264 208 152 96 56]
- ]
- >> ccversion get cccolumns 2 sub get /bitcaps exch def
- -1 bitcaps {dup used ge {exch} if pop} forall
- dup -1 ne {used sub} if
- } {
- << /c -1 >> ccversion get pop % Assert cc-c
- /m used 8 div ceiling cvi dup 6 idiv 5 mul exch 6 mod add def
- m 40 le {8 } if
- m 41 ge m 160 le and {16} if
- m 161 ge m 320 le and {32} if
- m 321 ge {64} if
- /eccws exch def
- /m m eccws add 3 add def
- /c linwidth 52 sub 17 idiv def
- m c idiv 90 gt {/c c 1 add def} if
- /r m c div ceiling cvi def
- /tgt c r mul eccws sub 3 sub dup 5 idiv 6 mul exch 5 mod add 8 mul def
- used 8296 le {tgt used sub} {-1} ifelse
- } ifelse
- dup -1 eq { % Upgrade CC-A to CC-B or CC-B to CC-C to fit
- pop
- ccversion (a) eq {
- /ccversion (b) def
- } {
- ccversion (b) eq lintype (gs1-128) eq and {
- /ccversion (c) def
- /cccolumns linwidth 52 sub 17 idiv def
- } {
- /ccversion -1 def
- } ifelse
- } ifelse
- used rembits
- } if
- } bind def
-
- /encode {
- dup /raw ne {exch get} {pop} ifelse
- [ exch {48 sub} forall ]
- dup length exch
- gpfenc exch j exch putinterval
- /j exch j add def
- } bind def
-
- % Pre-compute alphanumeric and numeric runlengths and position of next ISO646-only characters
- /numericruns [ gpf length {0} repeat 0 -1 ] def
- /alphanumericruns [ gpf length {0} repeat 0 ] def
- /nextiso646only [ gpf length {0} repeat 9999 ] def
- gpf length 1 sub -1 0 {
- /i exch def
- gpf i get
- (00) 2 string copy
- dup 0 gpf i get dup fnc1 eq {pop 94} if put
- i gpf length 1 sub lt {dup 1 gpf i 1 add get dup fnc1 eq {pop 94} if put} if
- numeric exch known {
- numericruns i numericruns i 2 add get 2 add put
- } {
- numericruns i 0 put
- } ifelse
- dup alphanumeric exch known {
- alphanumericruns i alphanumericruns i 1 add get 1 add put
- } {
- alphanumericruns i 0 put
- } ifelse
- dup iso646 exch known exch alphanumeric exch known not and {
- nextiso646only i 0 put
- } {
- nextiso646only i nextiso646only i 1 add get 1 add put
- } ifelse
- } for
-
- % Encode the general purpose field
- /gpfenc 8296 array def
- /i 0 def /j 0 def
- { % loop
- i gpf length eq {exit} if
- { % not a loop but common exit point
-
- mode (numeric) eq {
- i gpf length 2 sub le {
- 2 string
- dup 0 gpf i get dup fnc1 eq {pop 94} if put
- dup 1 gpf i 1 add get dup fnc1 eq {pop 94} if put
- dup numeric exch known {
- numeric encode
- /i i 2 add def
- exit
- } if
- pop
- lalphanumeric numeric encode
- /mode (alphanumeric) def
- exit
- } {
- gpf i get dup 48 lt exch 57 gt or {
- lalphanumeric numeric encode
- /mode (alphanumeric) def
- exit
- } if
- /rem cdf length j add rembits def
- rem 4 ge rem 6 le and { % C1 + 1 into 4 to 6 bits
- (000000) 6 string copy 0 rem getinterval
- dup gpf i get 47 sub 2 4 string cvrs
- dup length 4 exch sub exch putinterval /raw encode
- /i i 1 add def
- exit
- } { % C1.FNC1
- 2 string dup 0 gpf i get put dup 1 94 put numeric encode
- /i i 1 add def
- exit
- } ifelse
- } ifelse
- } if
-
- mode (alphanumeric) eq {
- gpf i get fnc1 eq {
- fnc1 alphanumeric encode
- /i i 1 add def
- exit
- } if
- gpf i get dup iso646 exch known exch alphanumeric exch known not and {
- liso646 alphanumeric encode
- /mode (iso646) def
- exit
- } if
- numericruns i get 6 ge {
- lnumeric alphanumeric encode
- /mode (numeric) def
- exit
- } if
- numericruns i get dup 4 ge exch i add gpf length eq and {
- lnumeric alphanumeric encode
- /mode (numeric) def
- exit
- } if
- gpf i get alphanumeric encode
- /i i 1 add def
- exit
- } if
-
- mode (iso646) eq {
- gpf i get fnc1 eq {
- fnc1 iso646 encode
- /i i 1 add def
- exit
- } if
- numericruns i get 4 ge nextiso646only i get 10 ge and {
- lnumeric iso646 encode
- /mode (numeric) def
- exit
- } if
- alphanumericruns i get 5 ge nextiso646only i get 10 ge and {
- lalphanumeric iso646 encode
- /mode (alphanumeric) def
- exit
- } if
- gpf i get iso646 encode
- /i i 1 add def
- exit
- } if
-
- } loop
- } loop
- /gpf gpfenc 0 j getinterval def
-
- % Create pad
- /pad cdf length gpf length add rembits array def
- pad length 0 gt {
- 0 5 pad length 1 sub { % Fill with 00100
- /i exch def
- pad i [ 0 0 1 0 0 ] 0 pad length i sub 5 2 copy gt {exch} if pop getinterval putinterval
- } for
- mode (numeric) eq { % Prefix shift from numeric to ASCII
- /pad [ 0 0 0 0 pad aload pop ] 0 pad length getinterval def
- } if
- mode (alpha) eq { % Prefix FNC1
- /pad [ 1 1 1 1 1 pad aload pop ] 0 pad length getinterval def
- } if
- } if
-
- % Concatinate fields
- /bits [
- cdf aload pop
- gpf aload pop
- pad aload pop
- ] def
-
- ccversion (a) eq {
- /pwr928 [
- [ 0 0 0 0 0 0 1 ]
- 68 {7 array} repeat
- ] def
- 1 1 68 {
- /j exch def
- /v 0 def
- 6 -1 1 {
- /i exch def
- /v pwr928 j 1 sub get i get 2 mul v 928 idiv add def
- pwr928 j get i v 928 mod put
- } for
- pwr928 j get 0 pwr928 j 1 sub get 0 get 2 mul v 928 idiv add put
- } for
- /cws [ 28 {0} repeat ] def
- /b 0 def /c 0 def
- { % loop
- b bits length eq {exit} if
- /bs bits b 69 bits length b sub 2 copy gt {exch} if pop getinterval def
- /bsl bs length def
- /cs cws c bsl 10 idiv 1 add getinterval def
- /csl cs length def
- 0 1 bsl 1 sub {
- /i exch def
- 0 1 csl 1 sub {
- /j exch def
- cs j 2 copy get
- pwr928 i get j 7 add csl sub get
- bs bsl i sub 1 sub get
- mul add put
- } for
- } for
- csl 1 sub -1 1 {
- /i exch def
- cs i 1 sub 2 copy get cs i get 928 idiv add put
- cs i 2 copy get 928 mod put
- } for
- /b b bsl add def
- /c c csl add def
- } loop
- /cws cws 0 c getinterval def
- /barcode cws length 4 mul string def
- 0 1 cws length 1 sub {
- /i exch def
- (^ ) 4 string copy dup cws i get 10 4 string cvrs
- dup length 4 exch sub exch putinterval
- barcode i 4 mul 3 -1 roll putinterval
- } for
- options (dontdraw) true put
- options (cca) true put
- options (columns) cccolumns put
- /args barcode options //micropdf417 exec def
- } if
-
- ccversion (b) eq {
- /barcode bits length 8 idiv string def
- 0 1 barcode length 1 sub {
- /i exch def
- bits i 8 mul 8 getinterval 0 exch {add 2 mul} forall 2 idiv
- barcode exch i exch put
- } for
- options (dontdraw) true put
- options (ccb) true put
- options (columns) cccolumns put
- /args barcode options //micropdf417 exec def
- } if
-
- ccversion (c) eq {
- /barcode bits length 8 idiv string def
- 0 1 barcode length 1 sub {
- /i exch def
- bits i 8 mul 8 getinterval 0 exch {add 2 mul} forall 2 idiv
- barcode exch i exch put
- } for
- options (dontdraw) true put
- options (ccc) true put
- options (columns) cccolumns put
- /args barcode options //pdf417 exec def
- } if
-
- args
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/gs1-cc dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp gs1-cc 0.0 0 0 0
+%%BeginData: 152 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 05tH61 bg qP3%oD i/n
+8fPFCfK5H"(o:FD l%L@W uO* E0A q <G` k$> D/! L#DfB6 !1 bgqP3% oDi
+/n8fPFCfK5H"(o: FDl%L @Wu O*E 0A q< G`i LhB 6,dZ@q 0k A'Tt>: %52
+X=FD5Z2F-8_M1G< 3GEa s#u AW f6 ?1G <9W DKK E0@<
+Wi+@;L!rOu"b$@s 2F(F ( oQ 1N WER O1G <6J@ rH1+D
+/OENs,o/kCh[d/H #R>T!0 T,k C h[d 2B k2=! M#W VoDfBf4Df0 WZY:js=EbTE
+(FEqh:P!+/J!Ko= '%<$3- Bl@ m 1H]k FA@; L!r P!+/T5^eep OuSV6P,4<rN
+WD;+NHB2`AWf3'O tDh\P' )pO Ou%N 5OtC crF _-^lI?ITYP %BdtOuY16E-
+,f4DKCt)Ou%NL<, Z_tBl @m1H ]g15P "@<: @q0 FnF_u#;+Ce nkDesQ5DKCs
+lOu"b-Bl8-/A9;K -Ch[d 2Bk2= !Ot;b P@q 0"eCisT4F, 9jZ4aT:R04e
+R00f+Ug06M5D@>G %>ARTI9 L]];QE +<I8! \\2 -0eG+83$;^ @G%G]8Bl@mL
+!Fq:0H\_fQHYdD6GA1T0BS\L.WJD.L;LO^.04\L5@:EYcDf'B+L]fAA@<>pe@<-F2@:O(aA;C:
+?A79Rg@UX:uFCAZpARo^rDJ=n.04\L5@:EYcFE2MA@psIjA;C@AA79Rg@UX:nBl.R+ARpT!04\
+L5@:EYcAU&0&DId<hL]fAA@<>pe@<,q(E+*WpARok(@:O(aA;C@P4s4ZUDKL/CAWf\>@q0"eCi
+sT4F-8_M1OYEc04fBI@;]V&055<e5*@]TDfp.EBl9)CP,4<t05?:COu$fiH]A,5P)XgO3,`q]P
+!3WD5*C2S@VV&,L]NY>05?Y6Ou&8DOuS6tL]`f6Ot:NoFHSh&L]N[<P!5%ROuSV6L]`g>L]`f(
+P"^:NOuRB&FHSh&P!5%SP%&0h!AA2N5*@^?F``E>C6D8R5^eeqI?J/iOq*X204AR9+BosoOu"b
+"Bm*p$L]W_sOu$QUEas#uAWf$9@Yb&JWJCS<5*ATdOuSI%P!+/T5^eepNWCSlNKSFI5*C&O5)o
+XlP)XgO5*C&O5)9;s!Kr4dH]A)^",Hu@LOG=c>9I?gF-6TfFcm]"!g3SI=C!RgBlfG$Ou$N\G%
+#3C",Hu@LLk^L@;]V=G^Y`dP'&ElF*2G@ATE-\3/Bk`8s2Ao>*<<W"FZFCOu"b*F)H,;0RJsBL
+bOuaP!4[^P$sLVI?G)'1G<H`DKTeNH]g@E0p5.l5);4^@?LbAOq*X2HXUW0P%'4JP"L(0Blf(1
+P"Uf:0eebR@;0e=!0U!8!\lEm4d'hoBlf(1P"Uf:0fP7YP&bo*s,I.80Tn\LP#Qjm<+0K^P%'4
+JP"L(0Blf(1P"Uf:3A?UZHS9Ob@;0mnClSQW0To(l1NnpjL]NZ2HZk2FP"TM1F`;;2EdNTBNWL
+piP!FGY<.0p/G*6<j!g60&G)--]95/HbF_riUG)-0^95/HiE,]B/Op$,f!KI490p4eMP#Qjm<-
+FF6L]`f4HZk2FP"TM1DKTeN+EiPAP"TM1DKTeMOp#ra!g62jF*2G@ATEq:H\_``!\lEm5^eepI
+?IQQP%'4MP"L(EL]ET2Ble07D)!/VL]NZ3Ble07D(q+UG)-3_95/HbF_rgq"EoS'P"TM1F`;;2
+EfpQPL]`Y=0enhVI?IQXP#Qjm<.0p/M#WJ90Tn\LP%?:`ATVU(A<K->1G<WbEb1CtOu"b'DIYD
+Ws,o/kCi4B4ATDKpM#NPn05P'5E+iZtF_t]1Bk)ttOu"b-Ble2N1cC0fOu"b5DdmEuH]k4g30I
+a,!KsF<!0TO%!KoWnL]NZ@P!4[UP'DD<8<Prg",Qu?LPQ"f!g6ZK@ZmRN0TnDY@Yb)K=H[-V5*
+Dn.5*C2>Oq*X204A[9BON#G4GZ:Z!Jjp+OuS7`P,X6@FDkW&DLI[=LbOVcLcKgF3/@^#!Jgr%D
+dmEuI?I-5DIYD]"Yh_d0ekjUOu"b/F_t]1Bk&8J4GWun!JkrHOuSI'0JJ:aP,4<ZOuS7"M#WWn
+L^T"?P,4<qOuSV6L]W`'P,XU.P'N3ML]ET2Ld@1eH]g@E!/OsEG^Y`SOuS6uP"UTsP!+/T3/@T
+k?BTP]P#RT.L^9.ENX%6l0JG170SfssV32^Z3/@Zms,r.n!f.)EV33Nq30Ia,#Eh96WKKH.H$t
+iHCgh.!BOPe$D.Ra%@u^[G0JG1E5*@]T@;Kmr@;^4)ATDKp+?VcB0Sfac3I?oKLb"XfL]qm=@V
+K_.P"92&@kiuI0JP::0o/,O!Jjp+OuS7@P,X6AFDkW&DLI[=LanDh0ekC:0eeD7L]N;bH]g@E&
+!?sL#'=cmBl8?^88N0dD.Ra%@u^XF0JI<WF)Nrn2N@qp0JP785!G,c055KG2Dd<74?SERL]N;l
+H]g@E/!?lf"a"ZlBl8?^87laL0ocDk0ekC;Ld?gtLg#.g3/@TuWJCe$DdmEuI?I-W@>Fr?H@(f
+7L^0*BL^/$?@VK_.P":BPNX.?o0eb=90JJ;,NX.?o0eb=90JSA0L]N;bH]g@C!6(*%L^8*@@VK
+_.P":BiL]N;rH]g@C!5"BpL^8*@@VK_.P":C9NX.?o0ekC:0enJ,NX.?o0ekC;0JI<\F_t]1Bk
+*/*0JG1s@;Kmr@;^4)ATDKpNWh*j0eb:F5*@^=ATVU(A<$^G0TnSG@;0e=!0U!8!\lEm4^i&GL
+]ET2NWLpoP!+tKHXUW3@;I&pBlf(1P"Us2OuS6tL]W`5Ot;=gJ<F`35*@m]!f-o@9Tgr_!KsF<
++HgQ(5)9>t!g66?/<U$s!KI^F0JG170JG170JG170JG2:&<`lQ)3Qt8",Qu?LPQ"f&<`lQ0TnD
+Y@YbSY5*Dn.5*C1qL]N;3L]iP6P)"C?0TrD`P"B(rF,0gZ99''.0p4\HL]DjML]Mpe<F%7fA7g
+ugOu"b"BlbD*Blf(2@;0eG@Yb&JWKKr<1OXU'@q90o>DN<9!/LZ3!F:jEI?IT=BlfGHL]ETTHX
+UW0L]ET2NWLphP!+.FB5hH*>9I?gG%#3I!\lBl97))M8R7K8@;0eG@Yb&J:jXj.E+U4s+D5Y*O
+ogehAo;*5+C1-dI?IP_@;0d*@;0e=!F]\`P%'4JP,XU<Ou%N505#69+Bot#DIYCD?'7!lP#ZpW
+04SO)+BosuA7gu+P')Q\L]E52L]E52L]N;4L]N;4?'6usB5hH*>9I471OYEd05YW<AW@"5F_t]
+1Bk*;^I?IQHATVU(A<$^G0p4\H04SO)+BsX&L]LeE1G<0N3A;RaBm*p$NWM3pP"UroDK'W-L]N
+Y>@;._UP%'SkHXUVK0Hb7PEb1%-Oo]!*3A?V*DK'W-P,X6<P,XU<I=$tSI?IS`@;._UEb0*N5*
+@]TDII@#BOQ\s@;._UEb0*7OuS7`P"Lm$Lg#sMOp$,f!KmJ3P#Qjm8Wkk_DJjT6F,0g)BfRkfA
+SldW3/B8O8s2Ao3Kdg6"FGq*Oo]uo<.0p$Ou"b.De*E%DII@#BON$$DKTf;P#-Lc"^u4dBOQ=9
+NX'HED.Ra%@ssM?Ou$uaCiF&r+Du(>D0(j@@;._UEb0*N@ZkST05YW<AW@1-CiF&rDKTf-EbT$
+H1OYEc04SO)+BosuA7gu+P'(V[A7^c0@;Kmr@;^4)ATDKpP!+/J!.C#0D/WrrNX'HED.Ra%A!0
+!%L]N;3I?IQHDe*F>"^u4dBOR&eH\_]Y!I^,1?'6us@;0d;+CSu*P%'4JP#-L6Blf(2P"U4MM#
+Vmd<K].HBlc"h!\uKn4^i&G0ocAr0JG>H4d'i404SO)+BosuA7gu+P'(2IF"r[V1,4qTH\_]Y!
+.B3M!Jgc)P#YeN1OXU'@q90o>9IEdAs*4YFbg$'Ou%NL<A/65@;I'(E,oNG!0V2G@;._UL]D=3
+Eb1D-Ot;$.L]Djd<K].u&4/cU8P2WL:/Fec;cHe">%),*0Hb7PEb1%-P"_$uH]hj$5*C&O5*C%
+A@<Q'qP!5$bI=%-"04B$4Cl&+S1OYEdDK]H)L`_dl@<Q'qM#WWTOp$,l"Y_Va0JJ:dP,4<ZOuR
+?&@;L`$L]rs<Ot`%YP%'4NP!5&.P!5%S>EV0sLbP!kI?I0-05b65FE<U/Ou&+$0JG17L]im;Or
+9EB@<Q'qL]WA8P,4<qOuSV6L]il)P,XU.P'L8p5'r)>P,Wkm8R3uX@VKq*P!5$b04SO)+BosuA
+7gu+P'(YOBlnEZ!g7\7@VKq*Oogeh?'7!lH]AFe0JG170JG170Sg(!V32^Z3,WnJCkr.K$Bh6K
+0TnDY@YbAS5*Dn.5*C1qP!45K0TrD`P"Aq4DIR=%F-8_M1QDVm0JG17L]rs<Or9EB@;._U+Du.
+=AWf]B6'A4'!f.#CV33Nq30Ia,"d2'4WKKH.H!?FqH\aA=WI9q$>q]VqBlnEZ5*@]T@q90o>9I
+EdAs*4YFbg'S!Jgc4!Jgbo@VKq*Oogeh@:EqmF-6TfF^:.dI?ITIDe*F>#B"[$ATDKpP!+.FB5
+hH*>9I?g3A>JbD0p\o8RZ=SP%'4JP#-L;DIYDLP#P_M1OXU'ASu"!+Dl%-AW?q&CiF&rP!+/#C
+iF&rI=!)FCiF&rDKTf-EbT$3P#[Z$055;H>9I?g3A>JbD0p\o8RZ=SP%'4JP#-L;DIYDLP#P_M
+1G<ZhF<G:8P%'4OP&-9fOu"b+L]ESoL]E53Bl9)CL]N[<HYIA\5*AQMDI[aN5*AR%3*VP0H\aA
+=WI9q$>p+'.FHSh&P!5%SP%&0h!AA2N5*@^MP"769A7crg+CeqoOogehDfp/X!,@ZjOogeh?'6
+usB5hH*>9I471LY!=P%'4JP#-"6A7^c)@;Kmr@?PJjEdKHVDe*F>#B"[$ATDKpOu%NL<.0p004
+AR9+CSu*L]LpuF-:!g!KsFF9Th2?BlfGHL]ETTHXUW00oc;j0p4\.Blc"h"?8(h1m1"bEdKHPE
++U4s+D5Y*Oogeh@;0mnC`m/#F"rhNH[V&K?'6us@;0d*@;0e=!F]\`P%'4JP,XU<Ou$N\F-:!g
+!0V2G05#69+Bot$E+Y77P'(AS@kf*3Ou%NL<.0p/I?IQXP#Q:0FD,T'NWChs4aShlA7crgL]C_
+D1G<B[Aft;#?'6usD/WrrNX'HED.Ra%A!/WrP#O)CBkD((ARpT5Ou8CY>DN98!Jgl*I?I-,H]A
+.]0SfdnV32^Z30H7W!Jgo8s,r.n0TlI"G[Y;uBm=3"L]`G6P)#3FI?I0+L^T">L_P2aP":BFL`
+_ERLa7=qP":BX?$hA7L]Wa9Ot`%Y@;0=fG\(EA",Hu@LQZn1P"CH0L]LpuF-:!g!KsF/056S5O
+u"b"BcphuF!,1[99M(aG%#20@;0mnC`m/#P"UroB5hIG@UWu6@Zgb8@;M*9Oo^^POuS6tB5hIG
+H'1."E+Y8B@;-igP!45@P"ArBH'1."E+Y8B@;1m6Oo]`7C`lrF5'q^@8R7L)05#69P!5$bBcph
+uF-:!g!KsFFD..-jBm=3"+CSu?!/L]>9TieHE0:?NB5hIG@Yb&J!KmbP3/@QIE+Y8YOuR)nAs-
+V8DIYDaGV<]KAs,?@1OYEcI?I,SEb0)sBlnEC06M>IA<K->1Ljp<ATDj+Df1R9A!1\U4?P9*+B
+osmL&e-+!/cSULhqlLLe`af>p*@+!2kPOMMQG3@Ydcb+BsR#`J+AjL&d*eCkthl+C-X0+BosmL
+&k,*!@W['!/:L#L&dm&BS\WR+BsR&!/:Q2L&r3H!MG/J0STSSL&dTsE/7&@+C-*oL'40("8ITQ
+8;72=L&pdu!FUW_#_i?+L&dTs@#-dJ+C-*R4s4?FG%G]8Bl@mP94MIADesQ5DKCU8P,XU;04JX
+;@ps=tP!5$bM#UpuFCS`uF*j'0F`V,)P"L(a5(/SnP')298Wl&hs,q5GF`V,)P,Wkm<.0*U4>1
+3#s#rUh@q0[nEcYr5DN[YUFY@SSF`V,)L^9/%Oq<d-OuS7%P#@)>P&-:FL^'#WOo^_%D29U'@=
+*e9I?IQHLaeKZD2&%`P$sLVH\`5]P#Q:Q!25QJD2&'VP$sLVH\`emP#Q:Q!C;l@H\aq8P#O)G@
+q0_(P!5$b05VhK+D#%mGB8oJL]`e@Ou"b$+Dbb0GA1T0BS\L.WJD.L;N`hQ+CgR4Lg#s<HS8kO
+@u(/K!Ko6eP#O)T+Di62OuAI7Ot;bP06CiK+CcO7P&+]>@s<!WWJCY>WKK5s"d2c>#*Nec5)9B
+*C6AUR#a0"e1NdbMA;24?P$r]ZB658=F(JmFWI9,Ls*^&1I?ITn3/ITt4aW?7@q0[nEcYr5DN4
+a+P!+.F@q0[nEcYr5DN4a,Ou%N5@q0[nEcYr5DN4a,P!*VqDKL/CAW@".F"o7$1,tF[Op$+b@q
+0[nEcYr5DN4a-Ou"b$@q0FnF_u#;+Dbb0GA1T0BS\L.WJD.L;N`haHS8l=G%G]8Bl@mFs,o0dP
+#Zpn<HW@oA0>o(D.74$F+'3NI?G)'1G<<W@rGmhH]g?AEaa0TD0qF0P"U4MP')29<EkVMH\aA=
+WI9q$?'711@ZiofE+W[!A!0#jP!5%S05?Y6C6AU\1OYDrOu"b/F_t]1Bk)1+DK?q)+D5Y*P%&c
+o!.C#_L]E82?'6us@;Kmr@;^4)ATDKpEcl8@+Bot$E+Y8BH\_ZMP(SPj?'6usDIn'7Ble2N1cB
+8iCj@.-+D5Y*P%&co!.C#_L*mL;Ou$`iAs-VZ!KsF<s+gZ%056S5Ou$`iAftfN99''-0SfdnV3
+2^Z3/@QIE+U5,P"UrtAo;*5P!+/TFbj@PP#RThBcq&-As-VZ!KsFFAp]\#L]M.-AftfD!KmJH9
+9M8HDIYDa4aW?7LgGLm<0DKSP#Q=AD.Ra%A!0$=@!cd6D.Ra%@rc^0F!,0>DKTf-EbT$(F`)7C
+BnuhR!Kp*3!g3SIG^XpVF_t]1Bk)1+DK?q7L]ET_I?ITn3+6WBBOPe$D.Ra%A!0$=@!c<uE+iZ
+tF_t]1Bk)1+DK?q7+CT)*BOPe$D.Ra%@rc^0F!,1Q!KmJH98EV3!Kq\UHXU`0BOPe$D.Ra%@rc
+^0F!,1Q!0VSTP#[Z)Ble2N1cCL\P$jG:@;Kmr@;^4)ATDKpP!5%:P&QQeHZ!D>FD5f72Dd=1DJ
+XS@BnubPG^XpVAU&<2F)Nrn2K*JLGp$fDDIn'7Ble2N1cB8iCj@.;L]NY>P"UT3Oo^_jI?ITYP
+"76=E+W[!@tl+>OpR:-0564BOu"b+L]ESoHYFU8E+Y8BP!+/T5^eepHYm\3AW@"5F_t]1Bk*;h
+HYFU8E+Y8BL]Wa=P$r]n!g9CC3/@QIE+U5,P"UrtAo;*5P!+/TFbj@PP#RThOuS6uB5hH*Bnue
+Q!Kp*=3+d&<0p4\HP')ReI?IQmG`k%(F_t]1Bk*;iP$iWSF_t]1Bk&8sDI[TqAM7a?BnuhR!Ko
+7%5^eepP'(SLCiF&rDKTf-EbT#+DKTf-EbT#+ASu!rA7[E2De*F>$t3skBOPe$D.Ra%A!/X25^
+dulE+U5,P"UrtLbP!(P!4[^P#.<^HYd,,E+iZtF_t]1Bk&9'F_t]1Bk&8sDI[TqAM7n=A7^c0@
+;Kmr@;^4)ATDKpOu&7dI?IP_Eb0)1@q927@VV&,Eb0)sBlnEZ1NI&DL]il5Eb0*D#*NDX"FH.5
+0JG170JJ:eP,4<ZL]DI,D3@SU3+m2B+DI!3LbFpjL]WA8P,4<qOuSV6L]il)P,XU.P'J^$@<Wi
+*DI[TqAM7a?BnueQ!Ko7%5^e!8!g9CC3/@QIE+U5,P"Us_OuS6uLgH6hDKTf-EbT#+ASu!rA7[
+E.+DHW4Oo^_%P!FGY<IL$1I?IQHDe*F>$t3skBOPe$D.Ra%A!0!%B5hH*Bp),$DIYDa4aUdY@k
+f*7CiF&rDKTf-EbT#+ASu!rA7[E2De*F>#B"[$ATDKpOu"b*+DHW4Oo^_%P!FGY<+g/^+DI!3O
+uR/sD`0F1P!5%:P!3;jE+iZtF_t]1Bk*;iP$jGlOp$,JBle2N1c?IbCiF&rDKTf-EbT#+ASu!r
+A7[E2De*F>#&/-s2Dd=T1Qk"OP#Q=AD.Ra%@rc^0F!,1[98Ee88pbAlF_t]1Bk&8oCiF&rDKTf
+-EbT#+ASu!rA7[E2De*F>#B"[$ATDKpOu&7dI?IQIF_t]1Bk)1+DK?q7P"UrtL]il5P!3TC!G?
+@`P%'S;Op$,JDKTf-EbT#+@;Kmr@;^4)ATDKp+D#G#De*E4D/WrrNX'HED.Ra%A!/X25^eepB5
+hH*Bp)+tCiF&rDKTf-EbT#+ASu!rA7[E.+DHW4Oo^_%P!FGY<,HPaAW?t/F)Nrn2Ng4MB5hH*B
+p),$DIYDa4aUdY@kf*?F)Nrn2BZRK@rGmh05YW<AW@"5F_t]1Bk*;^052PCL]NY>Ou&7dI?IQI
+F_t]1Bk)1+DK?q7P"UT6P"KV'G][Y@D`0F1Df0B:+DI!3L^K;;Op$,JDKTf-EbT#+Ble2N1c?I
+fDI[TqAM7n=A7^c+DKTf-EbT$H1Qk"OP#Pk+E+iZtF_t]1Bk)1+DK?q7P"UT7P"KV'G][Y@D`0
+F1Df0B:+DI!3L^K;;Op$,J@;Kmr@;^4)ATDKp+DGn82Dd<7ASu!rA7[E2De*F>$t3skBOPe$D.
+Ra%A!/X25^eepB5hH*Bp),'F)Nrn2BZRK@rGmh052PCL]NY>Ou&7dI?IQXP%B')AM7\8Aft`*A
+n>jiL]D1Q9Th1bE+*9"@q927@V9XlP%'RTEb0)sBlnEZ$'I)`@:YO1L]ET7H\_ZX"`Rm\P%'4J
+P,Wd]Bp(ZC1N6c5+DDs&L]E52L]N;3L]C_:!,u@WP%&-gWJC_6!g4Fa:j\?hI?IQmFcoF]H$ti
+HD/WrrNX'HED.Ra%A!0!%05t?1+BsX%L]E52L]DC&A<I"WF^9e'E+*:?@ZjEJ1OYEcD/WrrNWi
+j-E+i[C4aSi$@:UKbL]N;4L]N;4L]MI'A<I"WF^9e'E+*:?@ZjEJ1OYEcI?IP_@VKq*+BosuA7
+gu+P'(DVAs*4YF`:c"Oogeh?'7!R@s2F(F(oQ1NWERO4aSi$GB,]!3$;EJ>DN98!/LW2!/LW2!
+/LY]LdZTG#EfCAP(R&'1Pc'f!Jj-j05?Y6Ou"b7L]ESoL^&\8L]MiUBp(ZC1G<noE-H=_1,pCk
+L]N[<P"TMP98EY4Cj(O8TTW39!Ko6XGB,]!3$;t!95,MlL'+*3C6EgiP"9P9E]Gm7+DR'4L]DC
+<E]Gm7+DQ]5P,XU;L]ET2L]W`UG(p*lP#@GDP'DD<82"IsF!+\C*.*JAI?K4gOu"b#L]ESo04T
+e<Ou%Go+C]&,F-:!q4aW>WI?IP_@WNZ$BlnD=@YdH^BlnEZ@UbM"L]W_WP#-Lg5(/SnP')p]Ou
+"b#F)2t.F-:!q1G<6Z+CfV:+CcO'F)6X>P#@):Oo^_>Ou"b$F)2t/F-:!q1Pc$e!Fg+dL]N[<H
+S9)r5*@^X!/LYcF)6X5P,Wd]C6CcD1LkJKC5;qS)3RX3GB,]!3$;pu9597fOo]'6Cm(c\94Drb
+@WQ?.Bp,HO!KsFF99O+S!Kq\UP":"a87Q^WL]N[<M#W83HS9)r5*@^3F!,1Q!KsF<!g4Fa94N#
+cBp),D"/(fTOo^_j@ric,L]W_WP"UN3TTX&QG^Y`G04H&5+C]D.Oo^_%04Q,7+CfJ/Oo^_%I?J
+.p@s;u:@s<!M!+V0cOu"b#@<,jrA7ZlnGB8pVL]ilWP,4<tL]E53@s<!W@Yb&JWI$:4P!5$bNW
+`Z2+<ZICP,4<ZOuQrqF!,1[98Eq2"HoUE0TnDY@Yb/M5*Dn.5*C2#@<,jrA7ZltL]ilWL]`J5P
+)#3GI?I->E-,f4DKCgDA8c@-A9)+&FE2M8P'CnaFD5Z2F,g?4@psJ"F_-_\DfBf4Df0WV#@h[g
+F_u#;@q0"eCisT4F-:c$@<-"%+C\c"@rGmh+E)4@Bl@m10/%0V@rcL,A7dYQ2j-Cg1OYEc@q0[
+nEcYr5DN4a,P!+.F@UX:eDe*E%@VKq*P%'4QP#@I>Ou%moL]LsnEas#uAWgMY!KsF/056S5Ou$
+Q]FE8R=L^9/[L^9/;L]ET%H]eDc!g7AJP"CH2P#>atEas#uAWf5kP!5%RI?I->E-,f4DKCgDA8
+c@-A9)+&FE2M8P'CnaFD5Z2F,g?4@q'P#F_-_\DfBf4Df0WV#@h[gF_u#;@q0"eCisT4F-:c$@
+<-"%+C\c"@rGmh+E)4@Bl@m10/%0V@rcL,A7dYQ2j-Cg1OYEc@q0[nEcYr5DN4a-P!+.F@UX:e
+De*E%@VKq*P%'4QP#@I>Ou%moL]LsnEas#uAWgMY!KsF/056S5Ou$Q]FE8R=L^9/[L^9/;L]ET
+ %H]eDc!g7AJP"CH2P#>atEas#uAWf5kP!5%RI?I->E-,f4DKCgDA8c@-A9)+&FE2M8P'CnaFD
+5Z2F,g?4@q0V$F_-_\DfBf4Df0WV#@h[gF_u#;@q0"eCisT4F-:c$@<-"%+C\c"@rGmh+E)4@B
+l@m10/%9TAi)5$P!>*cI?IQ<EbBG9A8c@-A9)+&P&N'-Eb0-*@<?O(G`l$h3IR&#Ou"b(F"o7V
+A!/g7A1r(@/n8fPFCfK5H"(o:FDl%L@WuO*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]HE+*6lBl7R
+H\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/gs1-cc 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER gs1-cc--
% --BEGIN ENCODER ean13composite--
-% --REQUIRES ean13 micropdf417 pdf417 gs1-cc--
-% --SUGGESTS ean5 ean2--
+% --REQUIRES preamble raiseerror renlinear renmatrix ean5 ean2 ean13 micropdf417 pdf417 gs1-cc--
% --DESC: EAN-13 Composite
% --EXAM: 2112345678900|(99)1234-abcd
% --EXOP: includetext
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-2 dict
-dup /ean13 dup /uk.co.terryburton.bwipp findresource put
-dup /gs1-cc dup /uk.co.terryburton.bwipp findresource put
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/ean13composite {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Split the linear and composite parts
- barcode (|) search {
- /linear exch def
- pop
- /comp exch def
- } {
- pop
- } ifelse
-
- gsave
-
- options (lintype) (ean13) put
- options (inkspread) (0) put
- options (dontdraw) true put
-
- % Plot the linear part
- linear options //ean13 exec //renlinear exec
-
- % Plot the separator
- -1 72 rmoveto <<
- /ren //renmatrix
- /pixs [
- 0 1 93 {0} repeat 1 0
- 1 0 93 {0} repeat 0 1
- 0 1 93 {0} repeat 1 0
- ]
- /pixx 97
- /pixy 3
- /height 6 72 div
- /width 97 72 div
- /opt options
- >> //renmatrix exec
-
- % Plot the 2D part
- -2 6 rmoveto comp options //gs1-cc exec //renmatrix exec
-
- grestore
-
- end
-
-} bind def
-/ean13composite dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp ean13composite 0.0 0 0 0
+%%BeginData: 22 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP ++@;[ eUO uP+;C G'+8
+/p(ZFEd;,:Ecc5; /n0$= E,^ uoP 'E-L 05 #>\ /Rr:R3 %o Di/n8f PFC
+fK5H"(o:FDl%L@W uO*E0 Aq< G`k $ >Eb 0-) Bl7 KjEfrC 8F _`U>D_ ?-C
+EcQG7F`MSBDD#CB BlJ$S g6- ]D3 %o ;` DJ` g(E bTc]3% oD i/n8fP FCf
+K5H"(o:FDl%L@Wu O*E0 Aq< G` iL hAR TI2 1Lk ??E,
+Tf3FCffT'Tt>:%5 2X=F D 5Z 2F -8_ M1G <3GE as#uA
+Wf6?1G<9WDKKE0@ <Wi+@; L!r O u%# qF D5Z2 F-< ^[F*)G:DJ+ ':E+P1qH\_]
+c23JDeE-,f4DKC/ fX(GdV F(L L tH]g XBP# RT( P%'TNOthst 4d(eHEckrV4
+aW>DP!5%OP!5$bI =%,/FE 2M8 Ou%N L<IL $AO rfcH05kfOB l@m1P!5$bI?
+IQJE-,f4DKC/f1O YEX@U X:eD e*F>! IU&i HS9 2LDIm6sP!5 $bP'&EfDf'H
+V5*@^MH]iN"P#[Z ?DfBf 4Df0W V#Ae* lFE qh:NWj!&DD <r1G].PCBl@
+m1NX9E;CNFH8ART ,0!AK[] DfBf4D f0WV# \7j kFC]E#GB@k JAWh:SBl7Kj
+EZf:>FD5Z2F"]1X@;[eUP!:TQEb0-)Bl7KjEfrYCs+j4/L-.ROEb0,A061WAD..O,Bm;:MBm=\
+A>DN98!Jk$.L]DjdK89Pa!/LZ3!/Op-L]DjdK89M`!Jg`3!Jk$.L]DjdK89Pa!*q6sBm=lY@4u
+S6G^5)I05+p2B4uCC#)Gg52D98gA9;L@@>II;2D8ufF<GL@FD5Z2F!*Y10/%?WDJ`g(EbTc]5D
+];p#*O^NDf'G9DfBf4Df0VL05#>\/Rr:R5;+[1ASu?nFE2)?P!>+(Ou[rR%[&V$ARTI21Lk??E
+,Tf3FCgUpP%64gCG'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYu
+CM@[!P.H"'F`V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/ean13composite 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER ean13composite--
% --BEGIN ENCODER ean8composite--
-% --REQUIRES ean8 micropdf417 pdf417 gs1-cc--
-% --SUGGESTS ean5 ean2--
+% --REQUIRES preamble raiseerror renlinear renmatrix ean5 ean2 ean8 micropdf417 pdf417 gs1-cc--
% --DESC: EAN-8 Composite
% --EXAM: 02345673|(21)A12345678
% --EXOP: includetext
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-2 dict
-dup /ean8 dup /uk.co.terryburton.bwipp findresource put
-dup /gs1-cc dup /uk.co.terryburton.bwipp findresource put
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/ean8composite {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Split the linear and composite parts
- barcode (|) search {
- /linear exch def
- pop
- /comp exch def
- } {
- pop
- } ifelse
-
- gsave
-
- % Get the result of encoding with ean8 and gs1-cc
- options (lintype) (ean8) put
- options (inkspread) (0) put
- options (dontdraw) true put
-
- % Plot the linear part
- linear options //ean8 exec //renlinear exec
-
- % Plot the separator
- -1 72 rmoveto <<
- /ren //renmatrix
- /pixs [
- 0 1 65 {0} repeat 1 0
- 1 0 65 {0} repeat 0 1
- 0 1 65 {0} repeat 1 0
- ]
- /pixx 69
- /pixy 3
- /height 6 72 div
- /width 69 72 div
- /opt options
- >> //renmatrix exec
-
- % Plot the 2D part
- comp options //gs1-cc exec
- dup (pixx) get 69 exch sub 6 rmoveto
- //renmatrix exec
-
- grestore
-
- end
-
-} bind def
-/ean8composite dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp ean8composite 0.0 0 0 0
+%%BeginData: 22 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP ++@;\ &f3 %oDi/ n8fP
+FCfK5H"(o:FDl%L @WuO* E0A q<G `k$> B6 ,dZ @q1Z]0 6M %_@rEu AAT
+Dg:@Wc^5Df.1:GA 2#8P1 l(D OuP + 8AS u<u DIm 6sOuP+ ;C G'+8/p (ZF
+Ed;,:Ecc5;/n0$= E,^uo P'E -L0 61 WA D.. O,B m>e#06 M% _@rEuA ATD
+g:@Wc^5Df.1:GA2 #8P1 l(D Op s' U@; \&7 Df' H3F(
+o`-H\`B!23JD%Df Bf4D f 0W Z5 *@] T@U X:eD e*FB5
+*@]TA8c@-A9)+&+ D,%uF( LLj D fBf 4D f0WZ Y:j s=EbTE(FEq h:P!+/J!Ko=
+'%<$3-Bl@m1H]kF A@;L!r P!+ / T5^e epOu SV6 P,4<rNWD;+ NHB2`AWf3'O
+tDh\P')pOOu%N5O tCcrF_ -^l I?IT YP%B dtO uY16E-,f4D KCt)Ou%NL<,
+Z_tBl@m1H]g15P" B+kEa s#uA W?e=P )XfA Ch[ cu@<.MpOu& 8D04Sp;E0<D
+J1OXV5Fa]EQP"oq 7FD5Z 2F,gK ABl8$ <E+ P%4ARTI9P' CnaFD5Z2F,g
+Q@DJO<4Eb/ZiNWC hsG].PC Bl@m1N X006D KKE 0@<Zg6F_-_ \Ch[cu@<*K/
+E-,f4DK@HaARTI9P!:TQEb0-)Bl7KjEfrYCs+j4/L-.ROEb0,A061WAD..O,Bm;:MBm=\A>DN9
+8!Jj$gL]DjdK89Pa!/LZ3!/NpfL]DjdK89M`!Jg`3!Jj$gL]DjdK89Pa!*q6sBm=lY75&UoG^5
+)I05+p2B4uCC#)Gg52D98gA9;L@7>OKt2D8ufF<GL@FD5Z2F!*Y10/%?WDJ`g(EbTc]5@\VKE$
+0(<FD5Z2F"]1ZF"o7VA!0'>30",\Bm=lc98H$"5*Dn$#*O]o061WAD..O,Bm>e*P"h*"I?G)'1
+G<<JDE)-ED/aE7BlmpL30If*F_`U>D_?-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgG
+OuY1:ATVm"@r#drB9KiQP'(hWFDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/ean8composite 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER ean8composite--
% --BEGIN ENCODER upcacomposite--
-% --REQUIRES upca micropdf417 pdf417 gs1-cc--
-% --SUGGESTS ean5 ean2--
+% --REQUIRES preamble raiseerror renlinear renmatrix ean5 ean2 upca micropdf417 pdf417 gs1-cc--
% --DESC: UPC-A Composite
% --EXAM: 416000336108|(99)1234-abcd
% --EXOP: includetext
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-2 dict
-dup /upca dup /uk.co.terryburton.bwipp findresource put
-dup /gs1-cc dup /uk.co.terryburton.bwipp findresource put
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/upcacomposite {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Split the linear and composite parts
- barcode (|) search {
- /linear exch def
- pop
- /comp exch def
- } {
- pop
- } ifelse
-
- gsave
-
- options (lintype) (ean13) put
- options (inkspread) (0) put
- options (dontdraw) true put
-
- % Plot the linear part
- linear options //upca exec //renlinear exec
-
- % Plot the separator
- -1 72 rmoveto <<
- /ren //renmatrix
- /pixs [
- 0 1 93 {0} repeat 1 0
- 1 0 93 {0} repeat 0 1
- 0 1 93 {0} repeat 1 0
- ]
- /pixx 97
- /pixy 3
- /height 6 72 div
- /width 97 72 div
- /opt options
- >> //renmatrix exec
-
- % Plot the 2D part
- -2 6 rmoveto comp options //gs1-cc exec //renmatrix exec
-
- grestore
-
- end
-
-} bind def
-/upcacomposite dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp upcacomposite 0.0 0 0 0
+%%BeginData: 22 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: U=2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +;E+< =>3 %oDi/ n8fP
+FCfK5H"(o:FDl%L @WuO* E0A q<G `k$> B6 ,dZ @q1Z]0 6M %_@rEu AAT
+Dg:@Wc^5Df.1:GA 2#8P1 l(D OuP + 8AS u<u DIm 6sOuP+ ;C G'+8/p (ZF
+Ed;,:Ecc5;/n0$= E,^uo P'E -L0 61 WA D.. O,B m>e#06 M% _@rEuA ATD
+g:@Wc^5Df.1:GA2 #8P1 l(D Op s' eE+ <<d Df' H3F(
+o`-H\`B!23JD%Df Bf4D f 0W Z5 *@] T@U X:eD e*FB5
+*@]TA8c@-A9)+&+ D,%uF( LLj D fBf 4D f0WZ Y:j s=EbTE(FEq h:P!+/J!Ko=
+'%<$3-Bl@m1H]kF A@;L!r P!+ / T5^e epOu SV6 P,4<rNWD;+ NHB2`AWf3'O
+tDh\P')pOOu%N5O tCcrF_ -^l I?IT YP%B dtO uY16E-,f4D KCt)Ou%NL<,
+Z_tBl@m1H]g15P" B+kEa s#uA W?e=P )XfA Ch[ cu@<.MpOu& 8D04Sp;E0<D
+J1OXV5Fa]EQP"oq 7FD5Z 2F,gK ABl8$ <E+ P%5ARTI21Q m!$E-,f4DKC
+gEBl7^-E,oMuA<$ [EP'Cna FD5Z2F ,gN:D f0Z -Eaa06Eckr VG\h)3ARTU%
+DfBf4Df0VL06M5D@?Ni.061WACh[cu@<.MqM#W9%P(l(]061WA0/%?WDJ`g(EbTbOE+sQ<+BsX
+ %L]N<;H\_ZMP(SPkL]E53L]E6:H\_ZMP(SPjL]N;3L]N<;H\_ZMP(SPkL]C^6E+sQALg_rUBm
+=oZ"#">!BkM+$L^&Z+Ou=t;Bk2=!Lgc*1Ou=t3E-*4@E-,f4DK?pa4teR0ASu?nFE2)?P!=d%L
+^'#s@rH4'+E)4@Bl@m10/$sZ0eHmFP!:TQEb0-*@<?O(G`k:S9p.MbOq*X206M5D@:O4mE,Tf3
+FCgUpP%64gCG'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM@[
+!P.H"'F`V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/upcacomposite 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER upcacomposite--
% --BEGIN ENCODER upcecomposite--
-% --REQUIRES upce micropdf417 pdf417 gs1-cc--
-% --SUGGESTS ean5 ean2--
+% --REQUIRES preamble raiseerror renlinear renmatrix ean5 ean2 upce micropdf417 pdf417 gs1-cc--
% --DESC: UPC-E Composite
% --EXAM: 00123457|(15)021231
% --EXOP: includetext
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-2 dict
-dup /upce dup /uk.co.terryburton.bwipp findresource put
-dup /gs1-cc dup /uk.co.terryburton.bwipp findresource put
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/upcecomposite {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Split the linear and composite parts
- barcode (|) search {
- /linear exch def
- pop
- /comp exch def
- } {
- pop
- } ifelse
-
- % Define the separator
- /sep <<
- /ren //renmatrix
- /pixs [
- 0 1 49 {0} repeat 1 0
- 1 0 49 {0} repeat 0 1
- 0 1 49 {0} repeat 1 0
- ]
- /pixx 53
- /pixy 3
- /height 6 72 div
- /width 53 72 div
- /opt options
- >> def
-
- gsave
-
- options (lintype) (upce) put
- options (inkspread) (0) put
- options (dontdraw) true put
-
- % Plot the linear part
- linear options //upce exec //renlinear exec
-
- % Plot the separator
- -1 72 rmoveto <<
- /ren //renmatrix
- /pixs [
- 0 1 49 {0} repeat 1 0
- 1 0 49 {0} repeat 0 1
- 0 1 49 {0} repeat 1 0
- ]
- /pixx 53
- /pixy 3
- /height 6 72 div
- /width 53 72 div
- /opt options
- >> //renmatrix exec
-
- % Plot the 2D part
- -2 6 rmoveto comp options //gs1-cc exec //renmatrix exec
-
- grestore
-
- end
-
-} bind def
-/upcecomposite dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp upcecomposite 0.0 0 0 0
+%%BeginData: 24 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: U=2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +;E+< IB3 %oDi/ n8fP
+FCfK5H"(o:FDl%L @WuO* E0A q<G `k$> B6 ,dZ @q1Z]0 6M %_@rEu AAT
+Dg:@Wc^5Df.1:GA 2#8P1 l(D OuP + 8AS u<u DIm 6sOuP+ ;C G'+8/p (ZF
+Ed;,:Ecc5;/n0$= E,^uo P'E -L0 61 WA D.. O,B m>e#06 M% _@rEuA ATD
+g:@Wc^5Df.1:GA2 #8P1 l(D Op s' eE+ <Hh Df' H3F(
+o`-H\`B!23JD%Df Bf4D f 0W Z5 *@] T@U X:eD e*FB5
+*@]TA8c@-A9)+&+ D,%uF( LLj D fBf 4D f0WZ Y:j s=EbTE(FEq h:P!+/J!Ko=
+'%<$3-Bl@m1H]kF A@;L!r P!+ / T5^e epOu SV6 P,4<rNWD;+ NHB2`AWf3'O
+tDh\P')pOOu%N5O tCcrF_ -^l I?IT YP%B dtO uY16E-,f4D KCt)Ou%NL<,
+Z_tBl@m1H]g15P" B+kEa s#uA W?e=P )XfA Ch[ cu@<.MpOu& 8D04Sp;E0<D
+J1OXV5Fa]EQ06:] D+?Vb >Eb0, A061W AD. .O,Bm;:MBm =\A>DN98!Ji
+IWL]DjdK89Pa!/L Z3!/N@V L]DjdK 89M`! Jg` 3!JiIWL]Dj dK89Pa!*q6s
+Bm=lY2(ro_G^5)I05+p2B4uCC#)Gg52D98gA9;L@22Fed2D8ufF<GL@FD5Z2F!*Y1Ou&7rDfBf
+4Df0WV#Ae*lFEqh:NWaKD@qCgJDfBf4Df0WV$#+9mF)Z/2@:YB!0Tp[!E-,f4DKCgDA8c@-A9)
++&FE2M8P'CeWDIm6s+E)4@Bl@m10/%He@qCff0/%?WDJX$)ARTVB5D]>q8<S]i4>1_dDD*Y`AS
+u?nFE2)?05tWMF!+\C!/LZ30me]VI?K5=!Jg`3!Jg`30me]VI?K5=!/LZ3!/LZ30me]VI?K5=!
+Jg_]05tWMG_e41E+sQBL]];DASGdjFGL-W8<PkaGA1T0BS\O%8<PkaDfBe@DfBf4Df0V=5!CVQ
+Eb0-*@<?O(G`k:IreLcAL1>.=E$0(<FD5Z2F"]1ZF"o7VA!0&0061WAD..O,Bm>e*P"h*"I?G)
+'1G<li@qB.gD/aE7BlmpL30If*F_`U>D_?-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qC
+gGOuY1:ATVm"@r#drB9KiQP'(hWFDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/upcecomposite 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER upcecomposite--
% --BEGIN ENCODER databaromnicomposite--
-% --REQUIRES databaromni micropdf417 pdf417 gs1-cc--
+% --REQUIRES preamble raiseerror renlinear renmatrix databaromni micropdf417 pdf417 gs1-cc--
% --DESC: GS1 DataBar Omnidirectional Composite
% --EXAM: (01)03612345678904|(11)990102
% --EXOP:
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-2 dict
-dup /databaromni dup /uk.co.terryburton.bwipp findresource put
-dup /gs1-cc dup /uk.co.terryburton.bwipp findresource put
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/databaromnicomposite {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Split the linear and composite parts
- barcode (|) search {
- /linear exch def
- pop
- /comp exch def
- } {
- pop
- } ifelse
-
- gsave
-
- options (lintype) (databaromni) put
- options (linkage) true put
- options (inkspread) (0) put
- options (dontdraw) true put
-
- % Plot the linear part
- linear options //databaromni exec
- dup (sbs) get /linsbs exch def
- dup (bhs) get 0 get 72 mul /linheight exch def
- //renlinear exec
-
- % Plot the separator
- /sepfinder {
- /fp exch def
- fp 1 fp 12 add {
- /i exch def
- bot i get 0 eq {
- bot i 1 sub get 1 eq {
- 1
- } {
- sep i 1 sub get 0 eq {1} {0} ifelse
- } ifelse
- } {
- 0
- } ifelse
- sep exch i exch put
- } for
- /f3 [1 1 1 1 1 1 1 1 1 0 1 1 1] def
- true 0 1 12 {dup bot exch fp add get exch f3 exch get eq and} for {
- % Right shifted module for value 3 finder
- sep fp [ 0 0 0 0 0 0 0 0 0 0 1 0 0 ] putinterval
- } if
- } bind def
- mark
- 0 linsbs {1 index 1 eq {{0}} {{1}} ifelse repeat} forall
- counttomark 1 sub array astore /bot exch def pop pop
- /sep [ bot {1 exch sub} forall ] def
- sep 0 [0 0 0] putinterval
- sep sep length 4 sub [0 0 0 0] putinterval
- 18 sepfinder 64 sepfinder
- 0 linheight rmoveto <<
- /ren //renmatrix
- /pixs sep
- /pixx sep length
- /pixy 1
- /height 1 72 div
- /width sep length 72 div
- /opt options
- >> //renmatrix exec
-
- % Plot the 2D part
- -5 1 rmoveto comp options //gs1-cc exec //renmatrix exec
-
- grestore
-
- end
-
-} bind def
-/databaromnicomposite dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp databaromnicomposite 0.0 0 0 0
+%%BeginData: 30 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: U=2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +*@<> pe@ <-:'D J>7n
+06M%_@rEuAATDg: @Wc^5 Df. 1:G A2#8 P1 l(D OuP+-F "o 7VA!/f )F_
+`U>D_?-CEcQG7F` MSBDD #CB BlJ $ Sg6 -]D 3%o ;`DJX$ )A RTVB3% oDi
+/n8fPFCfK5H"(o: FDl%L @Wu O*E 0A q< G`k $>E b0-*@< ?O (G`k$> F_`
+U>D_?-CEcQG7F`M SBDD #CB Bl J$ Sg6 -]D %52 7#FC
+AWeEc5f4Bk)'uE, Tf3F C ff T' Tt> :%5 2X=F D5Z2F
+-8_M1G<3GEas#uA Wf6?1G <9W D KKE 0@ <Wi+ @;L !rOu%#qFD5 Z2F-<^[F*)G
+:DJ+':E+P1qH\_] c23JDe E-, f 4DKC /fX( GdV F(LLtH]gXB P#RT(P%'TNO
+thst4d(eHEckrV4 aW>DP! 5%O P!5$ bI=% ,/F E2M8Ou%NL< IL$AOrfcH05
+kfOBl@m1P!5$bI? IQJE- ,f4D KC/f1 OYEX @UX :eDe*F>!IU &iHS92LDIm6
+sP!5$bP'&EfDf'H V5*@^ MH]iN "P#[Z ?Df Bf4Df0WV#A e*lFEqh:NXK
+B+FCAWeEc5f4Bp* ^ZE-,f4 DKCgCC h[d&@ :s. nEckrVG].P CBl@m1NX9E;
+CNFH8ART,0!AK[]DfBf4Df0WV#\7jkFC]E#GB@kJAWh:SBl7KjEZf:>FD5Z2F"]1W@<>pe@<-:
+'DJ>7uOuSI(F(03R9.t*qDKB9.P!5$bOuSI(@VBhG98ES298H-%CbKU=DJ3TqB4uCM5*@]T061
+WACh[cu@<.Mq06:]DAnc-nATE,NAoNnsOu$]hL]M+,L^]FIHS9)r5*@^2Dfd+9P"UT2P!+/$Df
+d+9L]N[<P"UT3P!+/J!I]<9AT/c+L]N[<P"UT2P!+/J!I]<N!.C#1I?ITYH\_ZMP#ZR7E0<D!P
+!5%RI?I,SAhtQ6L]N;4L]N;4L]N;4L]N;4L]N;3L]N;4L]LeE1N[Y[AV^>B!Jh/2OuQohFHSh"
+E0:6b99MJN1Qjqb99MH$"FZG(HZNb;+D,R8>DN98!/LW2!/LW2!/LW2!/LW2!/LZ3!/LV\P'MJ
+=<.0o>Ou$r`EbgI2Ch[d.@WQmP!KpQ@!KoTmH\_ZMI=$<s!I]BZ<K_u_P"CfUL]N[<OpR9Z04J
+jAP!5$bP')q106:]D+BostDfg>^!KoX0WI9q$?'7!bAT3G*>DN98!/LV\P'M+[E$045E0=[d"H
+o`gL]E52L]E52?'9Jh&p%W'Anc-nATESlF(K<&Bl7HmEej^3Bl7TqBkM+$P(l(]061WA0/%?WD
+J`g(EbTbOE+sQ<+EM+505tWMGT_'=E0=Z`E+sQBL]K/BASGdjFGKsR8<PkaGA1T0BHVA-E0=[d
+8<PkaDfBe@DfBf4Df0V=5!CVQEb0-*@<?O(G`k:IqhP99L1>.=E$0(<FD5Z2F"]1ZF"o7VA!0&
+0061WAD..O,Bm>e*P"h*"I?G)'1G<9IFCAWeEc5f4Bk)'uE,Tf3FCgUpP%64gCG'+8/p(ZFEd;
+,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM@[!P.H"'F`V,9E+*6lBl7R3P#
+M~>
+% uk.co.terryburton.bwipp/databaromnicomposite 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databaromnicomposite--
% --BEGIN ENCODER databarstackedcomposite--
-% --REQUIRES databaromni databarstacked micropdf417 pdf417 gs1-cc--
+% --REQUIRES preamble raiseerror renlinear renmatrix databaromni databarstacked micropdf417 pdf417 gs1-cc--
% --DESC: GS1 DataBar Stacked Composite
% --EXAM: (01)03412345678900|(17)010200
% --EXOP:
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-2 dict
-dup /databarstacked dup /uk.co.terryburton.bwipp findresource put
-dup /gs1-cc dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/databarstackedcomposite {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Split the linear and composite parts
- barcode (|) search {
- /linear exch def
- pop
- /comp exch def
- } {
- pop
- } ifelse
-
- gsave
-
- options (lintype) (databarstacked) put
- options (linkage) true put
- options (inkspread) (0) put
- options (dontdraw) true put
-
- % Plot the linear part
- linear options //databarstacked exec
- dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def
- dup (pixy) get /linheight exch def
- //renmatrix exec
-
- % Plot the separator
- /sepfinder {
- /fp exch def
- fp 1 fp 12 add {
- /i exch def
- bot i get 0 eq {
- bot i 1 sub get 1 eq {
- 1
- } {
- sep i 1 sub get 0 eq {1} {0} ifelse
- } ifelse
- } {
- 0
- } ifelse
- sep exch i exch put
- } for
- /f3 [1 1 1 1 1 1 1 1 1 0 1 1 1] def
- true 0 1 12 {dup bot exch fp add get exch f3 exch get eq and} for {
- % Right shifted module for value 3 finder
- sep fp [ 0 0 0 0 0 0 0 0 0 0 1 0 0 ] putinterval
- } if
- } bind def
- /sep [ bot {1 exch sub} forall ] def
- sep 0 [ 0 0 0 0 ] putinterval
- sep sep length 4 sub [ 0 0 0 0 ] putinterval
- 18 sepfinder
- 0 linheight rmoveto <<
- /ren //renmatrix
- /pixs sep
- /pixx sep length
- /pixy 1
- /height 1 72 div
- /width sep length 72 div
- /opt options
- >> //renmatrix exec
-
- % Plot the 2D part
- 1 1 rmoveto comp options //gs1-cc exec //renmatrix exec
-
- grestore
-
- end
-
-} bind def
-/databarstackedcomposite dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp databarstackedcomposite 0.0 0 0 0
+%%BeginData: 28 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: U=2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +*@<> pe@ <-F2@ :O(a
+A<Jo*F_`U>D_?-C EcQG7 F`M SBD D#CB Bl J$S g6-]D3 %n oc0eHm FOu
+P+;CG'+8/p(ZFEd ;,:Ec c5; /n0 $ =E, ^uo P'E -L061W AD ..O,Bm >e#
+06M%_@rEuAATDg: @Wc^5 Df. 1:G A2 #8 P1l (DO ps'T@< >p e@<-F2 @:O
+(aA7KOpE,Tf3FCf fT'T t>: %5 2X =FD 5Z2 F-8 _M1G
+<3GEas#uAWf6?1G <9WD K KE 0@ <Wi +@; L!rO u%#qF
+D5Z2F-<^[F*)G:D J+':E+ P1q H \_] c2 3JDe E-, f4DKC/fX(G dVF(LLtH]gX
+BP#RT(P%'TNOths t4d(eH Eck r V4aW >DP! 5%O P!5$bI=%,/ FE2M8Ou%NL<
+IL$AOrfcH05kfOB l@m1P! 5$b I?IQ JE-, f4D KC/f1OYEX@ UX:eDe*F>!I
+U&iHS92LDIm6sP! 5$bP' &EfD f'HV5 *@^M H]i N"P#[Z?DfB f4Df0WV#Ae*
+lFEqh:NXfT.FCAW eEcZ> 2@r#X dP'Cn aFD 5Z2F,gKABl 7]pB4Z1*F_-
+_\DfBf4Df0WV$#+ 9mF)Z/2 @:YB!0 Tp[!E -,f 4DKCgDA8c@ -A9)+&FE2M8
+P'CeWDIm6s+E)4@Bl@m10/$jEFCAWeEcZ>2@r#XdP!>*hNWa<8G]T$@L]E54P$!_IE+sQAP"Us
+304JjAP!5$bOuSI)E+sQBP"RHEBl7TqBkM+$P!5$b0/%?WDJ`g(EbTc]5;.(hE+Wg%A7]e.04o
+0d5*@^6E/4O,E/4pc!IHJ6P!5$b@W-?2Bp),F!0TKl@W-?2BnueQWKKo1!KoTmL]MpNF(K;5Bn
+ueQWKKo1!0TKlL]MpNL]Djd<IL$1I=$bMI?ITOAT3erBp(ZCG^Y`G04m!_>DN<9!Jgc4!Jgc4!
+Jgc4!Jgc4!/LZ3!Jgb^Ou%3#F_-@/L]N;?H]g?tDfh.+AoNn6P"Us%Ai#T6P"Us$Op$2r8:,Dh
+E$/b3+BsX%L]E52L]E52L]E52L]E52L]E53L]E52?'9J]P#Qjm%[&V$F(K;5>9IBnFF/fEP!5&
+.I?I0-Ou%/jE/4KuL]E52L]E52?'9JSAT/c5AT3fAL]im?>DN98!/LW2!*tb5L_=c?E+Wg%A7]
+e;!,Q@eBOtmjBQTDl4?P9;ASs.SEb0-*@<?O(GV=#MG]P!KAT0;ABm=kFF(K<R@P;\7G^5)G05
++p2B4uCC!Jj:02D98gA9;K-F(K<R@YdR<2D8ufF<GL@FD5Z2F!*Y10/%?WDJ`g(EbTc]5DT>r!
+Kr1IDf'G9DfBf4Df0VL05#>\/Rr:R5;+[1ASu?nFE2)?P!>+(Ou[rR%[&V$A79Rg@UX:uFCAZp
+ARo:hD/aE7BlmpL30If*F_`U>D_?-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1
+:ATVm"@r#drB9KiQP'(hWFDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/databarstackedcomposite 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databarstackedcomposite--
% --BEGIN ENCODER databarstackedomnicomposite--
-% --REQUIRES databaromni databarstackedomni micropdf417 pdf417 gs1-cc--
+% --REQUIRES preamble raiseerror renlinear renmatrix databaromni databarstackedomni micropdf417 pdf417 gs1-cc--
% --DESC: GS1 DataBar Stacked Omnidirectional Composite
% --EXAM: (01)03612345678904|(11)990102
% --EXOP:
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-2 dict
-dup /databarstackedomni dup /uk.co.terryburton.bwipp findresource put
-dup /gs1-cc dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/databarstackedomnicomposite {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Split the linear and composite parts
- barcode (|) search {
- /linear exch def
- pop
- /comp exch def
- } {
- pop
- } ifelse
-
- gsave
-
- options (lintype) (databarstackedomni) put
- options (linkage) true put
- options (inkspread) (0) put
- options (dontdraw) true put
-
- % Plot the linear part
- linear options //databarstackedomni exec
- dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def
- dup (pixy) get /linheight exch def
- //renmatrix exec
-
- % Plot the separator
- /sepfinder {
- /fp exch def
- fp 1 fp 12 add {
- /i exch def
- bot i get 0 eq {
- bot i 1 sub get 1 eq {
- 1
- } {
- sep i 1 sub get 0 eq {1} {0} ifelse
- } ifelse
- } {
- 0
- } ifelse
- sep exch i exch put
- } for
- /f3 [1 1 1 1 1 1 1 1 1 0 1 1 1] def
- true 0 1 12 {dup bot exch fp add get exch f3 exch get eq and} for {
- % Right shifted module for value 3 finder
- sep fp [ 0 0 0 0 0 0 0 0 0 0 1 0 0 ] putinterval
- } if
- } bind def
- /sep [ bot {1 exch sub} forall ] def
- sep 0 [ 0 0 0 ] putinterval
- sep sep length 4 sub [ 0 0 0 0 ] putinterval
- 18 sepfinder
- 0 linheight rmoveto <<
- /ren //renmatrix
- /pixs sep
- /pixx sep length
- /pixy 1
- /height 1 72 div
- /width sep length 72 div
- /opt options
- >> //renmatrix exec
-
- % Plot the 2D part
- 1 1 rmoveto comp options //gs1-cc exec //renmatrix exec
-
- grestore
-
- end
-
-} bind def
-/databarstackedomnicomposite dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp databarstackedomnicomposite 0.0 0 0 0
+%%BeginData: 28 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: U=2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +*@<> pe@ <-F2@ :O(a
+A8c=&Bp(G/F_`U> D_?-C EcQ G7F `MSB DD #CB BlJ$Sg 6- ]D3%no c0e
+HmFOuP+;CG'+8/p (ZFEd ;,: Ecc 5 ;/n 0$= E,^ uoP'E- L0 61WAD. .O,
+Bm>e#06M%_@rEuA ATDg: @Wc ^5D f. 1: GA2 #8P 1l(DOp s' T@<>pe @<-
+F2@:O(aA8c=&Bk) 'uE, Tf3 FC ff T'T t>: %52 X=FD
+5Z2F-8_M1G<3GEa s#uA W f6 ?1 G<9 WDK KE0@ <Wi+@
+;L!rOu%#qFD5Z2F -<^[F* )G: D J+' :E +P1q H\_ ]c23JDeE-, f4DKC/fX(Gd
+VF(LLtH]gXBP#RT (P%'TN Oth s t4d( eHEc krV 4aW>DP!5%O P!5$bI=%,/F
+E2M8Ou%NL<IL$AO rfcH05 kfO Bl@m 1P!5 $bI ?IQJE-,f4D KC/f1OYEX@U
+X:eDe*F>!IU&iHS 92LDI m6sP !5$bP '&Ef Df' HV5*@^MH]i N"P#[Z?DfBf
+4Df0WV#Ae*lFEqh :NY5l 2FCAW eEcZ> 2@r #XdDf'B+P' CnaFD5Z2F,g
+KABl7]pB4Z1*F_- _\DfBf4 Df0WV$ #+9mF )Z/ 2@:YB!0Tp[ !E-,f4DKCgD
+A8c@-A9)+&FE2M8P'CeWDIm6s+E)4@Bl@m10/$jEFCAWeEcZ>2@r#XdDf'B+P!>*hNWa<8G]T$
+@L]E54P$!_IE+sQAP"Us304JjAP!5$bOuSI)E+sQBP"RHEBl7TqBkM+$P!5$b0/%?WDJ`g(EbT
+c]5;.(hE+Wg%A7]e.04o0d5*@^6E/4O,E/4pc!IHJ6P!5$b@W-?2Bp),F!0TKl@W-?2BnueQWK
+Ko1!KoTmL]MpNF(K;5BnueQWKKo1!0TKlL]MpNL]Djd<IL$1I=$bMI?ITOAT3erBp(ZCG^Y`G0
+4m!_>DN<9!Jgc4!Jgc4!Jgc4!Jgc4!/LZ3!Jgb^Ou%3#F_-@/L]N;?H]g?tDfh.+AoNn6P"Us%
+Ai#T6P"Us$Op$2r8:,DhE$/b3+BsX%L]E52L]E52L]E52L]E52L]E53L]E52?'9J]P#Qjm%[&V
+$F(K;5>9IBnFF/fEP!5&.I?I0-Ou%/jE/4KuL]E52L]C_DH#mP9+EM+5P%'4MP,VZA!/LW2!/L
+V\P'MirF(K<&Bl7HmEej^3Bl7TqBkM+$P(l(]061WA0/%?WDJ`g(EbTbOE+sQ<+EM+505tWMGT
+_'=E0=Z`E+sQBL]K/BASGdjFGKsR8<PkaGA1T0BHVA-E0=[d8<PkaDfBe@DfBf4Df0V=5!CVQE
+b0-*@<?O(G`k:I!Jgc>L1>.=E$0(<FD5Z2F"]1ZF"o7VA!0&0061WAD..O,Bm>e*P"h*"I?G)'
+1G<9IFCAWeEcZ>2@r#XdDf'B+@rH4'Df]W7AWf$9A1r(@/n8fPFCfK5H"(o:FDl%L@WuO*E$/\
+&Anc-oEb0<1F`Lu'P')pJ06:]HE+*6lBl7RH\pKT_F(KH4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/databarstackedomnicomposite 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databarstackedomnicomposite--
% --BEGIN ENCODER databartruncatedcomposite--
-% --REQUIRES databaromni databartruncated micropdf417 pdf417 gs1-cc--
+% --REQUIRES preamble raiseerror renlinear renmatrix databaromni databartruncated micropdf417 pdf417 gs1-cc--
% --DESC: GS1 DataBar Truncated Composite
% --EXAM: (01)03612345678904|(11)990102
% --EXOP:
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-2 dict
-dup /databartruncated dup /uk.co.terryburton.bwipp findresource put
-dup /gs1-cc dup /uk.co.terryburton.bwipp findresource put
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/databartruncatedcomposite {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Split the linear and composite parts
- barcode (|) search {
- /linear exch def
- pop
- /comp exch def
- } {
- pop
- } ifelse
-
- gsave
-
- options (lintype) (databartruncated) put
- options (linkage) true put
- options (inkspread) (0) put
- options (dontdraw) true put
-
- % Plot the linear part
- linear options //databartruncated exec
- dup (sbs) get /linsbs exch def
- dup (bhs) get 0 get 72 mul /linheight exch def
- //renlinear exec
-
- % Plot the separator
- /sepfinder {
- /fp exch def
- fp 1 fp 12 add {
- /i exch def
- bot i get 0 eq {
- bot i 1 sub get 1 eq {
- 1
- } {
- sep i 1 sub get 0 eq {1} {0} ifelse
- } ifelse
- } {
- 0
- } ifelse
- sep exch i exch put
- } for
- /f3 [1 1 1 1 1 1 1 1 1 0 1 1 1] def
- true 0 1 12 {dup bot exch fp add get exch f3 exch get eq and} for {
- % Right shifted module for value 3 finder
- sep fp [ 0 0 0 0 0 0 0 0 0 0 1 0 0 ] putinterval
- } if
- } bind def
- mark
- 0 linsbs {1 index 1 eq {{0}} {{1}} ifelse repeat} forall
- counttomark 1 sub array astore /bot exch def pop pop
- /sep [ bot {1 exch sub} forall ] def
- sep 0 [0 0 0] putinterval
- sep sep length 4 sub [0 0 0 0] putinterval
- 18 sepfinder 64 sepfinder
- 0 linheight rmoveto <<
- /ren //renmatrix
- /pixs sep
- /pixx sep length
- /pixy 1
- /height 1 72 div
- /width sep length 72 div
- /opt options
- >> //renmatrix exec
-
- % Plot the 2D part
- -5 1 rmoveto comp options //gs1-cc exec //renmatrix exec
-
- grestore
-
- end
-
-} bind def
-/databartruncatedcomposite dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp databartruncatedcomposite 0.0 0 0 0
+%%BeginData: 30 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: U=2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +*@<> pe@ <-I1F `(\t
+FCf!G3%oDi/n8fP FCfK5 H"( o:F Dl%L @W uO* E0Aq<G `k $>B6,d Z@q
+1Z]06M%_@rEuAAT Dg:@W c^5 Df. 1 :GA 2#8 P1l (DOuP+ 8A Su<uDI m6s
+OuP+;CG'+8/p(ZF Ed;,: Ecc 5;/ n0 $= E,^ uoP 'E-L06 1W AD..O, Bm>
+e#06M%_@rEuAATD g:@W c^5 Df .1 :GA 2#8 P1l (DOp
+s'T@<>pe@<-I1F` (\tF C eu mD f'H 3F( o`-H \`B!2
+3JD%DfBf4Df0WZ5 *@]T@U X:e D e*F B5 *@]T A8c @-A9)+&+D, %uF(LLjDfBf
+4Df0WZY:js=EbTE (FEqh: P!+ / J!Ko ='%< $3- Bl@m1H]kFA @;L!rP!+/T5
+^eepOuSV6P,4<rN WD;+NH B2` AWf3 'OtD h\P ')pOOu%N5O tCcrF_-^lI?
+ITYP%BdtOuY16E- ,f4DK Ct)O u%NL< ,Z_t Bl@ m1H]g15P"B +kEas#uAW?e
+=P)XfACh[cu@<.M pOu&8 D04Sp ;E0<D J1O XV5Fa]EQP" oq7FD5Z2F,g
+KABl8$<E+P%@A79 Rg@UX;! Ecl80@ <?'kP 'Cn aFD5Z2F,gK ABl7]pB4Z1*
+F_-_\DfBf4Df0WV$#+9mF)Z/2@:YB!0Tp[!E-,f4DKCgDA8c@-A9)+&FE2M8P'CeWDIm6s+E)4
+@Bl@m10/$jEFCAWeEcc>EDI[*sARprgOuSI(F(03R9.t*qDKB9.P!5$bOuSI(@VBhG98ES298H
+-%CbKU=DJ3TqB4uCM5*@]T061WACh[cu@<.Mq06:]DAnc-nATE,NAoNnsOu$]hL]M+,L^]FIHS
+9)r5*@^2Dfd+9P"UT2P!+/$Dfd+9L]N[<P"UT3P!+/J!I]<9AT/c+L]N[<P"UT2P!+/J!I]<N!
+.C#1I?ITYH\_ZMP#ZR7E0<D!P!5%RI?I,SAhtQ6L]N;4L]N;4L]N;4L]N;4L]N;3L]N;4L]LeE
+1N[Y[AV^>B!Jh/2OuQohFHSh"E0:6b99MJN1Qjqb99MH$"FZG(HZNb;+D,R8>DN98!/LW2!/LW
+2!/LW2!/LW2!/LZ3!/LV\P'MJ=<.0o>Ou$r`EbgI2Ch[d.@WQmP!KpQ@!KoTmH\_ZMI=$<s!I]
+BZ<K_u_P"CfUL]N[<OpR9Z04JjAP!5$bP')q106:]D+BostDfg>^!KoX0WI9q$?'7!bAT3G*>D
+N98!/LV\P'M+[E$045E0=[d"Ho`gL]E52L]E52?'9Jh&p%W'Anc-nATESlF(K<&Bl7HmEej^3B
+l7TqBkM+$P(l(]061WA0/%?WDJ`g(EbTbOE+sQ<+EM+505tWMGT_'=E0=Z`E+sQBL]K/BASGdj
+FGKsR8<PkaGA1T0BHVA-E0=[d8<PkaDfBe@DfBf4Df0V=5!CVQEb0-*@<?O(G`k:IqhP99L1>.
+=E$0(<FD5Z2F"]1ZF"o7VA!0&0061WAD..O,Bm>e*P"h*"I?G)'1G<9IFCAWeEcc>EDI[*sARo
+:hD/aE7BlmpL30If*F_`U>D_?-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:AT
+Vm"@r#drB9KiQP'(hWFDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/databartruncatedcomposite 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databartruncatedcomposite--
% --BEGIN ENCODER databarlimitedcomposite--
-% --REQUIRES databarlimited micropdf417 pdf417 gs1-cc--
+% --REQUIRES preamble raiseerror renlinear renmatrix databarlimited micropdf417 pdf417 gs1-cc--
% --DESC: GS1 DataBar Limited Composite
% --EXAM: (01)03512345678907|(21)abcdefghijklmnopqrstuv
% --EXOP:
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-2 dict
-dup /databarlimited dup /uk.co.terryburton.bwipp findresource put
-dup /gs1-cc dup /uk.co.terryburton.bwipp findresource put
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/databarlimitedcomposite {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Split the linear and composite parts
- barcode (|) search {
- /linear exch def
- pop
- /comp exch def
- } {
- pop
- } ifelse
-
- gsave
-
- options (lintype) (databarlimited) put
- options (linkage) true put
- options (inkspread) (0) put
- options (dontdraw) true put
-
- % Plot the linear part
- linear options //databarlimited exec
- dup (sbs) get /linsbs exch def
- dup (bhs) get 0 get 72 mul /linheight exch def
- //renlinear exec
-
- % Plot the separator
- mark
- 1 linsbs {1 index 0 eq {{1}} {{0}} ifelse repeat} forall
- counttomark 1 sub array astore /sep exch def pop pop
- sep 0 [0 0 0] putinterval
- sep sep length 4 sub [0 0 0 0] putinterval
- 0 linheight rmoveto <<
- /ren //renmatrix
- /pixs sep
- /pixx sep length
- /pixy 1
- /height 1 72 div
- /width sep length 72 div
- /opt options
- >> //renmatrix exec
-
- % Plot the 2D part
- comp options //gs1-cc exec
- dup (pixx) get 72 exch sub 1 rmoveto
- //renmatrix exec
-
- grestore
-
- end
-
-} bind def
-/databarlimitedcomposite dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp databarlimitedcomposite 0.0 0 0 0
+%%BeginData: 25 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: U=2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +*@<> pe@ <-0uD /"*'
+A<Jo*F_`U>D_?-C EcQG7 F`M SBD D#CB Bl J$S g6-]D3 %n oc0eHm FOu
+P+;CG'+8/p(ZFEd ;,:Ec c5; /n0 $ =E, ^uo P'E -L061W AC h[cu@< .Mj
+06M%_@rEuAATDg: @Wc^5 Df. 1:G A2 #8 P1l (DO uP+8AS u? nFE2)? OuP
++;CG'+8/p(ZFEd; ,:Ec c5; /n 0$ =E, ^uo P'E -!04
+\L5@:EYcCh[a#FC eumD f 'H 3F (o` -H\ `B!2 3JD%D
+fBf4Df0WZ5*@]T@ UX:eDe *FB 5 *@] TA 8c@- A9) +&+D,%uF(L LjDfBf4Df0W
+ZY:js=EbTE(FEqh :P!+/J !Ko = '%<$ 3-Bl @m1 H]kFA@;L!r P!+/T5^eepO
+uSV6P,4<rNWD;+N HB2`AW f3' OtDh \P') pOO u%N5OtCcrF _-^lI?ITYP%
+BdtOuY16E-,f4DK Ct)Ou %NL< ,Z_tB l@m1 H]g 15P"B+kEas #uAW?e=P)Xf
+ACh[cu@<.MpOu&8 D04Sp ;E0<D J1OXV 5Fa ]EQP"oq7FD 5Z2F,gKABl8
+$<E+P%>A79Rg@UX :nBl.R+ ARpsKD fBf4D f0W V#Ae*lCLLj eFE2M8P'Cna
+FD5Z2F,gQ@DJO<4Eb/ZiNWChsG].PCBl@m1NX006DKKE0@<Zg6F_-_\Ch[cu@<*K/E-,f4DK@H
+aA79Rg@UX:nBl.R+ARprgOuSI(F(03R9.t*qDKB9.P!5$bOuSI(@VBhG98ES298H-%CbKU=DJ3
+TqB4uCM5*@]T061WACh[cu@<.MqD..I#L]M=+DKB9.H\_]c=GQs?4aVO3!I]BCH\_ZMI?ITnK7
+/nSOrK2XP,XTNOp`paAT3erOu&8DP'(hWE/4KuL]E52L]C_DH#mP9+EM+5P%'4MP,VZA!/LW2!
+/LV\P'Mi`Ch[d#ASGdjFHVA@4>1_dDD*Y`ASu?nFE2)?05tWMF!,O8E%c0EG^(?PAT3fA05tWM
+H&)JSBOtmjBQT%2Le*[e06_,@FD)e<AT3fALe*[e05kfO+E)4@Bl@m1+?htB061WAD..O,Bm>e
+*@rH4'+E)4@Bl@m10/$sZ0eHmFP!>*hNWa<8G^,BELe*[mP,X6<P(kVCEb0-*@<?O(G`k:S9p.
+MbOq*X204\L5@:EYcCh[a#FCeumDf'H3F(o`-OuSV806M%_@rEuAATDg:@Wc^5Df.1:GA2#8+C
+o%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,-DH]iMmATVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/databarlimitedcomposite 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databarlimitedcomposite--
% --BEGIN ENCODER databarexpandedcomposite--
-% --REQUIRES databarexpanded micropdf417 pdf417 gs1-cc--
+% --REQUIRES preamble raiseerror renlinear renmatrix databarexpanded micropdf417 pdf417 gs1-cc--
% --DESC: GS1 DataBar Expanded Composite
% --EXAM: (01)93712345678904(3103)001234|(91)1A2B3C4D5E
% --EXOP:
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-2 dict
-dup /databarexpanded dup /uk.co.terryburton.bwipp findresource put
-dup /gs1-cc dup /uk.co.terryburton.bwipp findresource put
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/databarexpandedcomposite {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Split the linear and composite parts
- barcode (|) search {
- /linear exch def
- pop
- /comp exch def
- } {
- pop
- } ifelse
-
- gsave
-
- options (lintype) (databarexpanded) put
- options (linkage) true put
- options (inkspread) (0) put
- options (dontdraw) true put
-
- % Plot the linear part
- linear options //databarexpanded exec
- dup (sbs) get /linsbs exch def
- dup (bhs) get 0 get 72 mul /linheight exch def
- //renlinear exec
-
- % Plot the separator
- /sepfinder {
- /fp exch def
- fp 1 fp 12 add {
- /i exch def
- bot i get 0 eq {
- bot i 1 sub get 1 eq {
- 1
- } {
- sep i 1 sub get 0 eq {1} {0} ifelse
- } ifelse
- } {
- 0
- } ifelse
- sep exch i exch put
- } for
- } bind def
- mark
- 0 linsbs {1 index 1 eq {{0}} {{1}} ifelse repeat} forall
- counttomark 1 sub array astore /bot exch def pop pop
- /sep [ bot {1 exch sub} forall ] def
- sep 0 [0 0 0] putinterval
- sep sep length 4 sub [0 0 0 0] putinterval
- [ % Finder pattern module positions
- 18 98 bot length 13 sub {} for
- 69 98 bot length 13 sub {} for
- ] {sepfinder} forall
- 0 linheight rmoveto <<
- /ren //renmatrix
- /pixs sep
- /pixx sep length
- /pixy 1
- /height 1 72 div
- /width sep length 72 div
- /opt options
- >> //renmatrix exec
-
- % Plot the 2D part
- 1 1 rmoveto comp options //gs1-cc exec //renmatrix exec
-
- grestore
-
- end
-
-} bind def
-/databarexpandedcomposite dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp databarexpandedcomposite 0.0 0 0 0
+%%BeginData: 28 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: U=2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +*@<> pe@ <,q(E +*Wp
+ARpr`06M%_@rEuA ATDg: @Wc ^5D f.1: GA 2#8 P1l(DO uP +-F"o7 VA!
+/f)F_`U>D_?-CEc QG7F` MSB DD# C BBl J$S g6- ]D3%o; `D JX$)AR TVB
+3%oDi/n8fPFCfK5 H"(o: FDl %L@ Wu O* E0A q<G `k$>Eb 0- *@<?O( G`k
+$>F_`U>D_?-CEcQ G7F` MSB DD #C BBl J$S g6- ]D%5
+27#FCAWeEb0K7@; ]UeA 7 KO pE ,Tf 3FC ffT' Tt>:%
+52X=FD5Z2F-8_M1 G<3GEa s#u A Wf6 ?1 G<9W DKK E0@<Wi+@;L !rOu%#qFD5Z
+2F-<^[F*)G:DJ+' :E+P1q H\_ ] c23J DeE- ,f4 DKC/fX(GdV F(LLtH]gXBP
+#RT(P%'TNOthst4 d(eHEc krV 4aW> DP!5 %OP !5$bI=%,/F E2M8Ou%NL<I
+L$AOrfcH05kfOBl @m1P! 5$bI ?IQJE -,f4 DKC /f1OYEX@UX :eDe*F>!IU&
+iHS92LDIm6sP!5$ bP'&E fDf'H V5*@^ MH] iN"P#[Z?Df Bf4Df0WV#Ae
+*lFEqh:NXoZ/FCA WeEb0K7 @;]UeA <M1UE -,f 4DKCgCCh[d &@:s.nEckrV
+G].PCBl@m1NX9E;CNFH8ART,0!AK[]DfBf4Df0WV#\7jkFC]E#GB@kJAWh:SBl7KjEZf:>FD5Z
+2F"]1W@<>pe@<,q(E+*WpARprgOuSI(F(03R9.t*qDKB9.P!5$bOuSI(@VBhG98ES298H-%CbK
+U=DJ3TqB4uCM5*@]T061WACh[cu@<.Mq06:]DAnc-nATE,NAoNnsOu$]hL]M+,L^]FIHS9)r5*
+@^2Dfd+9P"UT2P!+/$Dfd+9L]N[<P"UT3P!+/J!I]<9AT/c+L]N[<P"UT2P!+/J!I]<N!.C#1I
+?ITYH\_ZMP#ZR7E0<D!P!5%RI?I-LOq*X2D..I#L]D7*DKB9.H\_]c=GR!@4aVO3!.B9BH\_]N
+I?ITnK7/nSOrK2XP,XTNOp`pPDfh.+Ou&8DP'&F!AT/br+C]82H\_]c5*DmnP"ArB1NR,HL]CY
+8!/LW2!*tb5F(K;5F(K<R@Yb/MWEY/YL]E52L]C_DH!?(;Lgjh3FHU*h%?d];I?I-W7>PD^Dfh
+.OL^fNHH[V&J?$d]8AT26qDId=!I?I0X!,Q@eBOtmjBQTDl4?P9;ASs.SEb0-*@<?O(GV=#MG]
+P!KAT0;ABm=kFF(K<R@P;\7G^5)G05+p2B4uCC!Jj:02D98gA9;K-F(K<R@YdR<2D8ufF<GL@F
+D5Z2F!*Y10/%?WDJ`g(EbTc]5DT>r!Kr1IDf'G9DfBf4Df0VL05#>\/Rr:R5;+[1ASu?nFE2)?
+P!>+(Ou[rR%[&V$A79Rg@UX:gG]7)/A7]:]Df'H3F(o`-OuSV806M%_@rEuAATDg:@Wc^5Df.1
+:GA2#8+Co%qBl7L&ATMd4Ear[DFcna<F(KH4@:O(eDJ,-DH]iMmATVm"@r#drB75qB~>
+% uk.co.terryburton.bwipp/databarexpandedcomposite 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databarexpandedcomposite--
% --BEGIN ENCODER databarexpandedstackedcomposite--
-% --REQUIRES databarexpanded databarexpandedstacked micropdf417 pdf417 gs1-cc--
+% --REQUIRES preamble raiseerror renlinear renmatrix databarexpanded databarexpandedstacked micropdf417 pdf417 gs1-cc--
% --DESC: GS1 DataBar Expanded Stacked Composite
% --EXAM: (01)00012345678905(10)ABCDEF|(21)12345678
% --EXOP: segments=4
% --RNDR: renmatrix renlinear
-/setpacking where {pop currentpacking true setpacking} if
-2 dict
-dup /databarexpandedstacked dup /uk.co.terryburton.bwipp findresource put
-dup /gs1-cc dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/databarexpandedstackedcomposite {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Split the linear and composite parts
- barcode (|) search {
- /linear exch def
- pop
- /comp exch def
- } {
- pop
- } ifelse
-
- gsave
-
- options (lintype) (databarexpandedstacked) put
- options (linkage) true put
- options (inkspread) (0) put
- options (dontdraw) true put
-
- % Plot the linear part
- linear options //databarexpandedstacked exec
- dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def
- dup (pixy) get /linheight exch def
- //renmatrix exec
-
- % Plot the separator
- /sepfinder {
- /fp exch def
- fp 1 fp 12 add {
- /i exch def
- bot i get 0 eq {
- bot i 1 sub get 1 eq {
- 1
- } {
- sep i 1 sub get 0 eq {1} {0} ifelse
- } ifelse
- } {
- 0
- } ifelse
- sep exch i exch put
- } for
- } bind def
- /sep [ bot {1 exch sub} forall ] def
- sep 0 [ 0 0 0 ] putinterval
- sep sep length 4 sub [ 0 0 0 0 ] putinterval
- [ % Finder pattern module positions
- 19 98 bot length 13 sub {} for
- 70 98 bot length 13 sub {} for
- ] {sepfinder} forall
- 0 linheight rmoveto <<
- /ren //renmatrix
- /pixs sep
- /pixx sep length
- /pixy 1
- /height 1 72 div
- /width sep length 72 div
- /opt options
- >> //renmatrix exec
-
- % Plot the 2D part
- bot 0 get 0 eq {2} {0} ifelse 1 rmoveto
- comp options //gs1-cc exec //renmatrix exec
-
- grestore
-
- end
-
-} bind def
-/databarexpandedstackedcomposite dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp databarexpandedstackedcomposite 0.0 0 0 0
+%%BeginData: 28 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: U=2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +*@<> pe@ <,q(E +*Wp
+ARok(@:O(aA<Jo* F_`U> D_? -CE cQG7 F` MSB DD#CBB lJ $Sg6-] D3%
+noc0eHmFOuP+;CG '+8/p (ZF Ed; , :Ec c5; /n0 $=E,^u oP 'E-L06 1WA
+D..O,Bm>e#06M%_ @rEuA ATD g:@ Wc ^5 Df. 1:G A2#8P1 l( DOps'T @<>
+pe@<,q(E+*WpARo k(@: O(a A7 KO pE, Tf3 FCf fT'T
+t>:%52X=FD5Z2F- 8_M1 G <3 GE as# uAW f6?1 G<9WD
+KKE0@<Wi+@;L!rO u%#qFD 5Z2 F -<^ [F *)G: DJ+ ':E+P1qH\_ ]c23JDeE-,f
+4DKC/fX(GdVF(LL tH]gXB P#R T (P%' TNOt hst 4d(eHEckrV 4aW>DP!5%OP
+!5$bI=%,/FE2M8O u%NL<I L$A Orfc H05k fOB l@m1P!5$bI ?IQJE-,f4DK
+C/f1OYEX@UX:eDe *F>!I U&iH S92LD Im6s P!5 $bP'&EfDf' HV5*@^MH]iN
+"P#[Z?DfBf4Df0W V#Ae* lFEqh :NYZ/ 6FC AWeEb0K7@; ]UeA92j$@r#
+XdP'CnaFD5Z2F,g KABl7]p B4Z1*F _-_\D fBf 4Df0WV$#+9 mF)Z/2@:YB!
+0Tp[!E-,f4DKCgDA8c@-A9)+&FE2M8P'CeWDIm6s+E)4@Bl@m10/$jEFCAWeEb0K7@;]UeA92j
+$@r#XdP!>*hNWa<8G]T$@L]E54P$!_IE+sQAP"Us304JjAP!5$bOuSI)E+sQBP"RHEBl7TqBkM
++$P!5$b0/%?WDJ`g(EbTc]5;.(hE+Wg%A7]e.04o0d5*@^6E/4O,E/4pc!IHJ6P!5$b@W-?2Bp
+),F!0TKl@W-?2BnueQWKKo1!KoTmL]MpNF(K;5BnueQWKKo1!0TKlL]MpNL]Djd<IL$1I=$bMI
+?ITOAT3erBp(ZCG^Y`GI?G)'1G<f\E$/@-@W-@8L]NZ&P,Wkm8R7K8F(K<H!*b6ZL]E52?'9JS
+AT/c5AT3fAL]im?>DN98!/LW2!*tb5>DNrK@Ua7tP%'4VP,WeVP":BuLgjh3FHU*h%?d];I?I-
+,HQ[B@E+Wg%A7]e0P"CH0Ch[d#ASGdjFHVA@4>1_dDD*Y`ASu?nFE2)?05tWMF!,O8E%c0EG^(
+?PAT3fA05tWMH&)JSBOtmjBQT%2Le*[e06_,@FD)e<AT3fALe*[e05kfO+E)4@Bl@m1+?htB06
+1WAD..O,Bm>e*@W-@E!0U!2!0TKlL]W!OL]Djd<JU[=L1>.=E$0(<FD5Z2F"]1ZF"o7VA!0&00
+61WAD..O,Bm>e*P"h*"I?G)'1G<9IFCAWeEb0K7@;]UeA92j$@r#Xd@rH4'Df]W7AWf$9A1r(@
+/n8fPFCfK5H"(o:FDl%L@WuO*E$/\&Anc-oEb0<1F`Lu'P')pJ06:]HE+*6lBl7RH\pKT_F(KH
+4@:O(eDJ+B\;u~>
+% uk.co.terryburton.bwipp/databarexpandedstackedcomposite 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER databarexpandedstackedcomposite--
% --BEGIN ENCODER gs1-128composite--
-% --REQUIRES code128 gs1-128 micropdf417 pdf417 gs1-cc--
+% --REQUIRES preamble raiseerror renlinear renmatrix code128 gs1-128 micropdf417 pdf417 gs1-cc--
% --DESC: GS1-128 Composite
% --EXAM: (00)030123456789012340|(02)13012345678909(37)24(10)1234567ABCDEFG
% --EXOP: ccversion=c
% --RNDR: renlinear renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-2 dict
-dup /gs1-128 dup /uk.co.terryburton.bwipp findresource put
-dup /gs1-cc dup /uk.co.terryburton.bwipp findresource put
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/gs1-128composite {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def
- /barcode exch def
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Split the linear and composite parts
- barcode (|) search {
- /linear exch def
- pop
- /comp exch def
- } {
- pop
- } ifelse
-
- gsave
-
- options (inkspread) (0) put
- options (dontdraw) true put
-
- % Dummy plot of linear part with CC-A to get width
- options (linkagea) true put
- linear << options {} forall >> //gs1-128 exec
- (sbs) get 0 exch {add} forall /linwidth exch def
-
- % Create 2D part and determine type
- options (lintype) (gs1-128) put
- options (linwidth) linwidth put
- comp options //gs1-cc exec /compsym exch def
- compsym (pixx) get 99 eq {(a)} {(c)} ifelse /linktype exch def
-
- % Plot linear part
- linktype (a) eq {
- options (linkagea) true put
- options (linkagec) false put
- } {
- options (linkagea) false put
- options (linkagec) true put
- } ifelse
- linear << options {} forall >> //gs1-128 exec
- dup (sbs) get /linsbs exch def
- dup (bhs) get 0 get 72 mul /linheight exch def
- //renlinear exec
-
- % Plot the separator
- mark
- 1 linsbs {1 index 0 eq {{1}} {{0}} ifelse repeat} forall
- counttomark 1 sub array astore /sep exch def pop pop
- 0 linheight rmoveto <<
- /ren //renmatrix
- /pixs sep
- /pixx sep length
- /pixy 1
- /height 1 72 div
- /width sep length 72 div
- /opt options
- >> //renmatrix exec
-
- % Plot the 2D part
- linktype (a) eq {
- /s linwidth 2 sub 11 idiv def
- /p s 9 sub 2 idiv def
- /x s p sub 1 sub 11 mul 10 add p 0 eq {2 add} if 99 sub def
- x 1 rmoveto
- } {
- -7 1 rmoveto
- } ifelse
-
- compsym //renmatrix exec
-
- grestore
-
- end
-
-} bind def
-/gs1-128composite dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp gs1-128composite 0.0 0 0 0
+%%BeginData: 30 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: U=2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +-F"o 7$1 ,tFV0 6M%_
+@rEuAATDg:@Wc^5 Df.1: GA2 #8P 1l(D Ou P+- F"o7VA !/ f)F_`U >D_
+?-CEcQG7F`MSBDD #CBBl J$S g6- ] D3% o;` DJX $)ARTV B3 %oDi/n 8fP
+FCfK5H"(o:FDl%L @WuO* E0A q<G `k $> Eb0 -*@ <?O(G` k$ >F_`U> D_?
+-CEcQG7F`MSBDD# CBBl J$S g6 -] D%5 2@8 0eG +83+
+HlDE,Tf3FCffT'T t>:% 5 2X =F D5Z 2F- 8_M1 G<3GE
+as#uAWf6?1G<9WD KKE0@< Wi+ @ ;L! rO u%#q FD5 Z2F-<^[F*) G:DJ+':E+P1
+qH\_]c23JDeE-,f 4DKC/f X(G d VF(L LtH] gXB P#RT(P%'TN Othst4d(eHE
+ckrV4aW>DP!5%OP !5$bI= %,/ FE2M 8Ou% NL< IL$AOrfcH0 5kfOBl@m1P!
+5$bI?IQJE-,f4DK C/f1O YEX@ UX:eD e*F> !IU &iHS92LDIm 6sP!5$bP'&E
+fDf'HV5*@^MH]iN "P#[Z ?DfBf 4Df0W V$# +9mF)Z/2@: YB!0Tp[!E-,
+f4DKCgDA8c@-A9) +&FE2M8 P'CnaF D5Z2F ,gN BBl7]pB4YL nEckrVG\h)3
+ARTU%4?Oa)E-,f4DKC/QP"@i$0/$sZ0eG+830HLd"*7pmP"UT2P!45U!I^,&05P??GA1T0BTbQ
+B1N.5SBl@m1NX'B7DKL/CAW@".F"o7$1,tGADfBf4Df0WV#]+3mGA1T0BP_C#GA1T0BTdUMDf'
+G9DfBf4Df0VL05#>\/Rr:R5;-MbD/aQAD3@)G1Lk??E-$;ANWa<8G^,BELguT2H]A,8I=$tT@s
+sM?05P??CNOi@AWf6?1MgcCCNOi@AW?e"P!+/1E-,f4DKCgDCh[d&@:s.[FE2M8P'CnaFD5Z2F
+,gNBBl7]pB4YRb@;L!rP'DD%DfBf4Df0WV#]+3mCLLje@:iqaF(LMZDfBf4Df0WV#]+3mCLLje
+@rua6AWh:dP#Z=4DIm6s+?Vb/DfBf4Df0WCI?I/c4teR%F"o7$1,tF]OuSI(F(03R9.t*qDKB9
+.P!5$bOuSI(@VBhG98ES298H-%CbKU=DJ3TqB4uCM5*@]T061WACh[cu@<.MqD..I#L]M=+DKB
+9.H\_]c=GQs?4aVO3!I]BCH\_ZMI?ITnK7/nSOrK2XP,XTNOp`paAT3erOu&8DP')Q\Ch[d#AS
+GdjFHVA@4>1_dDD*Y`ASu?nFE2)?05tWMF!,O8E%c0EG^(?PAT3fA05tWMH&)JSBOtmjBQT%2L
+e*[e06_,@FD)e<AT3fALe*[e05kfO+E)4@Bl@m1+?htB061WAD..O,Bm>e*Ch[d&FEqh:NWERO
+4aSi'+Dbb0GA1T0BSZ_QWJCqF;N`ghE$04X$'M9D!g6HE1G<tqF!,FbWJCS<WJCqFCkrF]!H<h
+pP!+/J!g3S4P#R6IP,XU#G_cB`L4+E)q1o'7L4,4b@rH4'F*VUU061WAD..O,Bm>e*P"h*"I?G
+)'1G<B^0eG+83+HlDE,Tf3FCgUpP%64gCG'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Df
+p)1AWh2!3A5GbFDtYuCM@[!P.H"'F`V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/gs1-128composite 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER gs1-128composite--
% --BEGIN ENCODER gs1datamatrix--
-% --REQUIRES datamatrix--
+% --REQUIRES preamble raiseerror renmatrix datamatrix--
% --DESC: GS1 Data Matrix
% --EXAM: (01)03453120000011(17)120508(10)ABCD1234(410)9501101020917
% --EXOP:
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-dup /datamatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/gs1datamatrix {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- % Expand ordinals of the form ^NNN to ASCII
- /expand {
- /in exch def
- /out in length string def
- /j 0 def
- in
- { % loop
- (^) search {
- dup out exch j exch putinterval
- length j add 1 add /j exch def
- pop
- dup 0 3 getinterval cvi out exch j 1 sub exch put
- dup length 3 sub 3 exch getinterval
- } {
- dup out exch j exch putinterval
- length j add /j exch def
- out 0 j getinterval exit
- } ifelse
- } loop
- } bind def
-
- % Parse out AIs
- /ais [] def
- /aival 2 dict def
- barcode dup length 1 sub 1 exch getinterval
- { % loop
- dup () eq {exit} if
- (\)) search pop
- exch pop
- exch (\() search {
- exch pop exch 3 1 roll
- } {
- () 3 1 roll
- } ifelse
- [ ais aload pop counttomark 2 add index ] /ais exch def
- aival 3 1 roll expand put
- } loop
- pop
-
- % Pre-defined fixed length data field AIs
- % any AI whose prefix is not included in this table must be
- % terminated with "FNC1", even if it's fixed length
- /aifixed 23 dict def
- [
- 0 1 4 {} for
- ] {
- (00) 2 string copy dup dup 1 5 -1 roll 48 add put aifixed 3 1 roll put
- } forall
- [
- 11 1 20 {} for
- 23
- 31 1 36 {} for
- 41
- ] {
- 10 2 string cvrs dup aifixed 3 1 roll put
- } forall
-
- % Create the datamatrix data
- /fnc1 -1 def
- /dmtx [ fnc1 ] def
- 0 1 ais length 1 sub {
- /i exch def
- /ai ais i get def
- /val aival ai get def
- dmtx length ai length add val length add array
- dup 0 dmtx putinterval
- dup dmtx length ai [ exch {} forall ] putinterval
- dup dmtx length ai length add val [ exch {} forall ] putinterval
- /dmtx exch def
- i ais length 1 sub ne aifixed ai 0 2 getinterval known not and { % Append FNC1
- dmtx length 1 add array
- dup 0 dmtx putinterval
- dup dmtx length fnc1 put
- /dmtx exch def
- } if
- } for
-
- % Compose input to datamatrix
- /barcode dmtx length 1 add 5 mul string def
- /i 0 def /j 0 def {
- i dmtx length eq {exit} if
- dmtx i get dup fnc1 eq {
- pop barcode j (^FNC1) putinterval
- /j j 4 add def
- } {
- barcode exch j exch put
- } ifelse
- /i i 1 add def
- /j j 1 add def
- } loop
- /barcode barcode 0 j getinterval def
-
- % Get the result of encoding with code128
- options (dontdraw) true put
- options (parsefnc) true put
- /args barcode options //datamatrix exec def
-
- args (opt) options put
- args
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/gs1datamatrix dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp gs1datamatrix 0.0 0 0 0
+%%BeginData: 31 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04\L5@ ;T FpEbTc ]3%
+oDi/n8fPFCfK5H" (o:FD l%L @Wu O *E0 Aq< G`i LhB6,e <@ <>pp@< ?O(
+G^G5\Ou8C305kfO Bl@m1 P!5 $b0 4J @1 @rG mhP !5$b04 ]! =FC]E# G9C
+L+Cia0N1N.5SBl@ m1P- 6N[ FE 2) 5B6 8E< AWf 3'L]
+NYrOpu>KFD5Z2F* j(NA m oL sA Wf3 'P! FGY< 0B5(@
+ZmRN0oc8tP)XR(F _-_!H] ftD 5 *C& O5 *@^M H]f t&EckrV1OY EdI?J0)*g/N
+:DfBf4Df0WZ5*@^ MP#Q@= FD5 Z 2F*j '+I? I/T AU&0&DIe)I Bl9(tOu"b0F
+`\a?DN\IlV33VfC 5;kQ1M L`R NWEI LNI- gJD fp/b5&-6EP 'N4"C6AUR!K
+mI:C6CcD1QlmD3/ @Qj"- Q?@/ 8oZQP !3W: !Ks FF5*C/R30I a,"-TX>"-Pj
+29RV8N3,`q]P!3W D5*C2 S@VV& ,05?Y 6Ou %$!FGKp3P" _$(I?ITYP%B
+')%[&V$@;0d*>9I 471G<0N G%#3C! g5F(1 Lad 5@rGmhOuSV 6L]N[<L]NZ&
+P"^4c30"!%4aW>WI?IQi!@a1kP')pOP')pONWCPkNI-gPP')pOL]`G6P)"I4NW=k;L]NZoI?IT
+7+CSu*OogehOrK2YOo^_J>q]W#F-8_M1LY!@@;L`%L]NZoAU&0&DIeoTI?J0)FY@0;AncL$A;D
+ %b23Kb"L]E53L]i'QP"8l*NWLmgL]Wa9Or9EBOuS6uL]rV7P)"iIOo^_j@;0=fG\(EA",Hu@L
+QZn1P"Al6$]"h>'RP7k8;J(<+,BrR,^Xs&8;J^#H\`#b!g9CC0TnD(BkD((ARpT!L]NZoP'DD<
+8M=[n@kif>Ou"b%D01"F>9INq@kf*3Ou%moL]LpuF-:!g!KsF/056S5Ou"b"BcphuF!,1[99M(
+aG%#20@;0mnC`m/#P"UroA8QF5P%%j6P%'RTG%#3M@ZgbT$'I9(!+]qgG`m?83+QlJG`lNEBcp
+WC5'q^@8R7L)OuQuhFEisX@;1m6Oo]`7C`lrF5'q^@8R7L)04\pAG`k7R1MIt?BlfGHL]N[<P&
+4WAAncL$A0>;pL]E54P"_$HP&QQeHXpu8G`lNl!KmJH$'I9(!+]qgG`m?83+QlJG`lNJDIYDaG
+V<TEFEis4Ou%NL<.0p#04J@1@rGmh+Co>2G`lNl!KmJ>"d3\bV33VfBnubP1G<L!!0T-bBcpr'
+FEisXP!+/T5^eepA8QF5+DI!3OuR&k@kj-0H]iM\@<,jrA7ZluNWi`Y:.$b!GqWnTC5<"U!Ko6
+eHX^E(@rGmhP!3WD5*C/=P#X/L+DHW4Oo^_%05;VEL]NY>Ou%NLAM7M$Eas#uAKYGjEas#uAV^
+>$P"_#pDfBf4Df0WV#\7jkFC]E#GB@kJAWh:VE-,f4DKCgDE+*d.AS,giFE2M8P'AWgEbBG9@U
+X:eDe*E%DfBf4Df0VL04\L5@;TFpEbTc]5E[g2EbBHR")i.#DfBf4Df0WZG[YW*F!,"3DKKE0@
+<[lR0/%?WDJ`g(EbTc]<0B7iOq*X205#>\A79RgD..O,Bm>e#P%64gCG'+8/p(ZFEd;,:Ecc5;
+/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM@[!P.H"'F`V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/gs1datamatrix 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER gs1datamatrix--
% --BEGIN ENCODER hibccode39--
-% --REQUIRES code39--
+% --REQUIRES preamble raiseerror renlinear code39--
% --DESC: HIBC Code 39
% --EXAM: A123BJC5D6E71
% --EXOP: includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /code39 dup /uk.co.terryburton.bwipp findresource put
-begin
-/hibccode39 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /textxoffset 0 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /textxoffset textxoffset cvr def
-
- /barlen barcode length def
-
- /barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%) def
-
- /barcode barlen 2 add string dup 1 barcode putinterval def
- barcode 0 43 put
-
- /checksum 0 def
- 0 1 barlen {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /checksum checksum indx add def
- } for
- barcode barlen 1 add barchars checksum 43 mod get put
-
- /text barlen 4 add string def
- text 0 42 put
- text 1 barcode putinterval
- text barlen 2 add barcode barlen 1 add get dup 32 eq {pop 95} if put
- text barlen 3 add 42 put
-
- % Get the result of encoding with code39
- options (dontdraw) true put
- options (includecheck) false put
- /args barcode options //code39 exec def
-
- args (txt) [ [text textxoffset textyoffset textfont textsize] ] put
- args (textxalign) (center) put
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/hibccode39 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp hibccode39 0.0 0 0 0
+%%BeginData: 36 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04Sp2A MZ ?03%oD i/n
+8fPFCfK5H"(o:FD l%L@W uO* E0A q <G` iLh BPC pc@rGm h1 HBf<'T t>:
+ %52X=FD5Z2F-8_ M1G<3 GEa s#u AW f6 ?1G <9W DKKE0@ <W i+@;L! rOu
+"b5AU&</Df0ZZa- &53F Cf] =F (o r3L ^K; $06 CcMF
+Eqe:AohO*M#!2i0 6CcM F Eh _9 Aoh O*L ]ESo 06Uc?
+Bk1XoARfCb@r!3! @;L!rO u%# q FD5 Z2 F-<^ [F* )G:DJ+':E+ P1qH\_]c23J
+DeE-,f4DKC/fX(G dVF(LL tH] g XBP# RT(P %'T NOthst4d(e HEckrV4aW>D
+P!5%OP!5$bI=%,/ FE2M8O u%N L<IL $AOr fcH 05kfOBl@m1 P!5$bI?IQJE
+-,f4DKC/f1OYEX0 6CcMF CoH/ F<G[: G][P 9DK M$nOu"b5AU &<<BmO>5FCf
+]=F(or3OtVtS06C cMFEq e:Aoh O*+EV 1>F Eqe:AohO*O tVtS06CcMFE
+h_9AohO*+EV1>FE h_9AohO *OtVtS 04J@1 @q] :kF,hb)0et OA2)[BQ3C,u
+!6q'R884cEH9MJ8X:f1+h<)lt#=BSfZ/g)Dm.j^?704S[(Ectl-F,2?023KbO!/LZ3.XPZ=@<-
+O"Cibb'OuQoZEarckEc[C-L]NZ4P!5%RI?I-W!/LYb@<,jrA7^p5L]N[<HX^E(@rGmhP!4[&P"
+]A!@<-O"Cibb'P$jGlHS8iPBlJ#DBPCpc@rGmh1HAoQA4($=Ea`I"ATEf284c-8+@C'XAKWch+
+Dl7BF<G(3DKK<$DBNk8Cj@.6BkM.%F"AGD@;oq&@;I'&ATW$*EcWcSF)YPtATJu&DIal3BOr<-
+H#7#/Ci^^N/gN)#,qgol@;0doATDg0EfrY8P#Qjm82"F\Ebo<)+C\c"@rGmhP%&TCCh[EgFCer
+qARfM&L]N[<I?IQm1G<6OARfLsF_up7Ou%moL]LsnEbo<)L]N[<HX^E(@rGmhP!4[&P"]A!@<-
+O"Cibb'P"T:uARfLsF`!9B04S[,@r$..D3@)G1OYEW04S[,@r$..D'3>%ARfLsF_upbP%p.9G%
+#3$A79Rk@q]F`CO715@<,jrA7Zlm@<-0qDN[Y%@<,jk@<-E3@q]F`CNFW8P"UsTHS8iPBlJ#DB
+PCpc@rGmh1HAoQA4($A@r"JHB5)IJ.nOVgDfTl0@rrha8O>ce6Z6LH+>Z##@q]F`CER/%B5)H1
+E,ol?Bk1dc0/%?SBldisEcQ)=P!=AX<%h]hEas#uAKYGjEas#uAV^=q@<-0qDN[\V1OYEc04J@
+1@rGmh+C\c"Ch7L?!g3SIV33fo!FfJX@rGmhP'N3H@UX:eDe*F8!/N.gG[b*%@rGmh+C\c"Ch7
+L?!KmIm@<,jk@<-E3@q]F`CNFW8P"Us_06CcMF<G%$Ebo<)L]ikAP,4<tFCf]=L]E5\P'D([G]
+\`B@UX:eDe*FBH$!VBF<G%$Ebo<)L]W_?@UX:eDe*E%@UX:nAT!;)Oo^_=OuS7?P!+/TFbjCQP
+#RThFCf]=+C\c"Ch7L?"-N\@.[#$pE-,f4DKCgDA8c@-A9)+&FE2M8P'CnaFD5Z2F,gZCDI[L*
+A7]7aARfLf@;L!rP'CnaFD5Z2F,g]Q@;KXg@<?'jBOt[hAmoLsAWh9k@<-"%+C\c"@rGmh+E)4
+@Bl@m10/$gRA7[PWP!>*c@<-"%NWXBJFB]kl+EV1>F<G[:G]\1KAnH*qF<G[:G]\4LAnH*qF<G
+[:G][P9DKI"CAU&<<BmO>5>p*F9G[YW*F,gTLAU&<A@;KXjDN4p2ASuU$EftZUEbBHR")i.#Df
+Bf4Df0WZG[YW*F!,"3DKKE0@<[lR0/%?WDJX$)ARTVB<0B7iOq*X205,'/@q0FfAMZ?030If*F
+_`U>D_?-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP'(hW
+FDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/hibccode39 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER hibccode39--
% --BEGIN ENCODER hibccode128--
-% --REQUIRES code128--
+% --REQUIRES preamble raiseerror renlinear code128--
% --DESC: HIBC Code 128
% --EXAM: A123BJC5D6E71
% --EXOP: includetext
% --RNDR: renlinear
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renlinear dup /uk.co.terryburton.bwipp findresource put
-dup /code128 dup /uk.co.terryburton.bwipp findresource put
-begin
-/hibccode128 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /textfont /Courier def
- /textsize 10 def
- /textyoffset -7 def
- /textxoffset 0 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /textfont textfont cvlit def
- /textsize textsize cvr def
- /textyoffset textyoffset cvr def
- /textxoffset textxoffset cvr def
-
- /barlen barcode length def
-
- /barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%) def
-
- /barcode barlen 2 add string dup 1 barcode putinterval def
- barcode 0 43 put
-
- /checksum 0 def
- 0 1 barlen {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /checksum checksum indx add def
- } for
- barcode barlen 1 add barchars checksum 43 mod get put
-
- /text barlen 4 add string def
- text 0 42 put
- text 1 barcode putinterval
- text barlen 2 add barcode barlen 1 add get dup 32 eq {pop 95} if put
- text barlen 3 add 42 put
-
- % Get the result of encoding with code128
- options (dontdraw) true put
- /args barcode options //code128 exec def
-
- args (txt) [ [text textxoffset textyoffset textfont textsize] ] put
- args (textxalign) (center) put
- args (opt) options put
- args
-
- dontdraw not //renlinear if
-
- end
-
-} bind def
-/hibccode128 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp hibccode128 0.0 0 0 0
+%%BeginData: 35 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu <uD Im6sO uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04Sp2A MG r"OuP+ ;CG
+'+8/p(ZFEd;,:Ec c5;/n 0$= E,^ u oP' E-! 05, '/@q0F fA MGr"H\ `B!
+23JD%DfBf4Df0WZ 5*@]T @UX :eD e* FB 5*@ ]TA 8c@-A9 )+ &+D,%u F(L
+Lj06CcMFCoH/FHO V,1G <i] G] \" @H= _m> Ou" b5AU
+&<BDe<U&ATWb(Ou "b5A U &< AD e<U &AT W_.O u"b7@
+;KXg@<?'jBOt[h+ D,%uF( LLj D fBf 4D f0WZ Y:j s=EbTE(FEq h:P!+/J!Ko=
+'%<$3-Bl@m1H]kF A@;L!r P!+ / T5^e epOu SV6 P,4<rNWD;+ NHB2`AWf3'O
+tDh\P')pOOu%N5O tCcrF_ -^l I?IT YP%B dtO uY16E-,f4D KCt)Ou%NL<,
+Z_tBl@m1H]g15P" @<KAU &</D f0Y>F Cf]= AoD R/OtDhQ06C cMFE;/BAKZ)
++G]\"@H=`6mOu"b 5AU&< BDe<U &ATT& :AU &<BDe<U&AT X(gOu"b5AU&
+<ADe<U&ATT&:AU& <ADe<U& ATX(gO u"b#@ <,j k@<-FL.ki\ 51GgsI2`Nf`
+6:4.07Rp!@8kViP:/=\`;H$Op<``C+=tM?L,VLYoOu"b$BOPq)@;L"@/!;cQ1Pc$e!Ji4P@q]:
+kG%#3.P!5$g@UX:eBOPq&P!4[&P"_$&P'DD<8;I8%!FfJX@rGmhP%'4JP,We;@<,jrA7^ofL]N
+Z4@q]:kG%#3.P!5%:P&Pb$@WuO*E%Yg<@UindA7[JN3+?<,6YKnK@:OCjEfO0k8O>ce6Z6LH+>
+GW2+Dl7BF<G(3DKK<$DBNk8Cj@.6BkM.%F"AGD@;oq&@;I'&ATW$*EcWcSF)YPtATJu&DIal3B
+Or<-H#7#/Ci^^N/gN)#,qgol@;0doATDg0EfrY8P#Qjm82"F\Ebo<)+C\c"@rGmhP%&TCCh[Eg
+FCerqARfM&L]N[<I?IQm1G<6OARfLsF_up7Ou%moL]LsnEbo<)L]N[<HX^E(@rGmhP!4[&P"]A
+!@<-O"Cibb'P"T:uARfLsF`!9B04S[,@r$..D3@)G1OYEW04S[,@r$..D'3>%ARfLsF_upbP%p
+.9G%#3$A79Rk@q]F`CO715@<,jrA7Zlm@<-0qDN[Y%@<,jk@<-E3@q]F`CNFW8P"UsTHS8iPBl
+J#DBPCpc@rGmh0et^t@:V`=ARfLDBkM.%N\!b>@rHC.ARfg)84c-8+@C'XAKW]_3$;^EARfKuA
+8,[jF<GOCDg#i*ARmGIEa`['AS#n&DfV"*I?IP_@UX:eDe*E%@UX:eDe*F8!+KAWCh7LI9Th2[
+P#O)D@<,jrA7Zlm@<-0qDMS@W!Ks:B3/@TE@<,jrA7^pLOu$QUEas#uAV^>B/!>-d@<,jrA7Zl
+m@<-0qDMS=V!FfJX@q]:kF!+t+ARfLsF`!:7P'AX%AU&;>@UX:nAT!;,Oo^`BOu%2kG]\`ALan
+R4FCf]=L]LsnEas#uAWh=\AU&;>@UX:nAT!;*Oo]$#Eas#uAKYGjEbo<)L]NY>P"UrtL`hjDH]
+iN-?[\):P'D([G]Y';@<-0qDMSCX!Ji4gG].PCBl@m1NX006DKKE0@<Zg6F_-_\DfBf4Df0WV%
+<c/rBk1XoARfCb@r#[bCia0NGV<KGB6,2)@<,jrA7Zm%E-,f4DK@Ha@rGmh0et_O5E[g2EbBHR
+"*Ad0>9I,mFCf]=+EV1>FEh_9AohO*+EV1>FEqe:AohO*+EV1>FCoH/F<G[:G]\"@H=\4)+C1.
+T@<-"%NXBl>G]\1=Ch[O"NWs!)DKKH1P'CDUB60(8DfBf:E-,f4DKCtc@<-"%+CoD.FC]E#GEQ
+nu061WACh[cu@<.N1Ou[rR%[&V$BPCpc@rGmh0et_O30If*F_`U>D_?-CEcQG7F`MSBDD#CBBl
+J#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP'(hWFDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/hibccode128 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER hibccode128--
% --BEGIN ENCODER hibcdatamatrix--
-% --REQUIRES datamatrix--
+% --REQUIRES preamble raiseerror renmatrix datamatrix--
% --DESC: HIBC Data Matrix
% --EXAM: A123BJC5D6E71
% --EXOP:
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-dup /datamatrix dup /uk.co.terryburton.bwipp findresource put
-begin
-/hibcdatamatrix {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /barlen barcode length def
-
- /barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%) def
-
- /barcode barlen 2 add string dup 1 barcode putinterval def
- barcode 0 43 put
-
- /checksum 0 def
- 0 1 barlen {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /checksum checksum indx add def
- } for
- barcode barlen 1 add barchars checksum 43 mod get put
-
- % Get the result of encoding with datamatrix
- options (dontdraw) true put
- /args barcode options //datamatrix exec def
-
- args (opt) options put
- args
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/hibcdatamatrix dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp hibcdatamatrix 0.0 0 0 0
+%%BeginData: 30 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04\L5@ ;T FpEbTc ]3%
+oDi/n8fPFCfK5H" (o:FD l%L @Wu O *E0 Aq< G`i LhBPCp cA 79RgD. .O,
+Bm=u\'Tt>:%52X= FD5Z2 F-8 _M1 G< 3G Eas #uA Wf6?1G <9 WDKKE0 @<W
+i+@;L!rOu"b7@;K Xg@< ?'j BO t[ h+D ,%u F(L LjDf
+Bf4Df0WZY:js=Eb TE(F E qh :P !+/ J!K o='% <$3-B
+l@m1H]kFA@;L!rP !+/T5^ eep O uSV 6P ,4<r NWD ;+NHB2`AWf 3'OtDh\P')p
+OOu%N5OtCcrF_-^ lI?ITY P%B d tOuY 16E- ,f4 DKCt)Ou%NL <,Z_tBl@m1H
+]g15P"@<9@<,jk@ <-FL.k i\5 1Ggs I2`N f`6 :4.07Rp!@8 kViP:/=\`;H
+$Op<``C+=tM?L,V LYoOu "b$B OPq)@ ;L"@ /!; cQ1Pc$e!Ji 4P@q]:kG%#3
+.P!5$g@UX:eBOPq &P!4[ &P"_$ &P'DD <8; I8%!FfJX@r GmhP%'4JP,W
+e;@<,jrA7^ofL]N Z4@q]:k G%#3.P !5%:P &Pb $@WuO*E%Yg <@UiqWFCB#p
+FE2)?6=FClBOPpi@ru:&N`enE6:2k`@<>p#9jr-aBm:b;F`VXI@rH7,@;0U%Df0B:+Co2!BlnD
+I+Cei!Blmd"+DbV2FCfK6/0K"Q@:Nki+CT.u+EV:.+EMgF@W-((+>#2k0.S>%061K8F(Jp'Ec5
+u]5CJ\oI?I,S@UX:nASrW"@<,jrA7^p5G%#3$A79Rk@q]F`CO:j<P,Wkm<0B$j@q]F`CNFW8L]
+ESoL]E53@UX:nAT!;)P,We;@<,jrA7^ofL]NZ4@q]:kG%#3.P!5%%@q]F`CNFW8Oo[4GBOt[hF
+*2>_5*@^MP"769BOt[hF*2=B@q]F`CNFW8Lb"X'Ou%8iCh[EgFCerqARfM&+C\c"@rGmh+C\c"
+Ch7LI94D=M@q]:kF!+t+ARfLsF`!:7P&5P!@WuO*E%Yg<@UiqWFCB#pFE2)?6=FClBOt[h6tp:
+JFH/"GDI[U*Eb/a&+@o'j6Qed*FC?:d@<?O(GT^L0ARfKuA8,[jF<GOCDg#i*ARmGIEa`['AS#
+n&DfV"*I?IP_@UX:eDe*E%@UX:eDe*F8!+KAWCh7LI9Th2[P#O)D@<,jrA7Zlm@<-0qDMS@W!K
+s:B3/@TE@<,jrA7^pLOu$QUEas#uAV^>B/!>-d@<,jrA7Zlm@<-0qDMS=V!FfJX@q]:kF!+t+A
+RfLsF`!:7P'CnaFD5Z2F,gN:Df0Z-Eaa06EckrVG].PCBl@m1NX^/?Ch[EgFCerqARfLf@;L!r
+P'AWgEbBG9@UX:eDe*E%DfBf4Df0VL04\L5@;TFpEbTc]5E[g2EbBHR")i.#DfBf4Df0WZG[YW
+*F!,"3DKKE0@<[lR0/%?WDJ`g(EbTc]<0B7iOq*X205,'/@q9"i@;TFpEbTc]30If*F_`U>D_?
+-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP'(hWFDtYuCM
+@[!I?IP~>
+% uk.co.terryburton.bwipp/hibcdatamatrix 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER hibcdatamatrix--
% --BEGIN ENCODER hibcpdf417--
-% --REQUIRES pdf417--
+% --REQUIRES preamble raiseerror renmatrix pdf417--
% --DESC: HIBC PDF417
% --EXAM: A123BJC5D6E71
% --EXOP:
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-dup /pdf417 dup /uk.co.terryburton.bwipp findresource put
-begin
-/hibcpdf417 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /columns 2 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /columns columns cvi def
-
- /barlen barcode length def
-
- /barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%) def
-
- /barcode barlen 2 add string dup 1 barcode putinterval def
- barcode 0 43 put
-
- /checksum 0 def
- 0 1 barlen {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /checksum checksum indx add def
- } for
- barcode barlen 1 add barchars checksum 43 mod get put
-
- % Get the result of encoding with pdf417
- options (dontdraw) true put
- options (columns) columns put
- /args barcode options //pdf417 exec def
-
- args (opt) options put
- args
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/hibcpdf417 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp hibcpdf417 0.0 0 0 0
+%%BeginData: 30 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 05tH61 bg qP3%oD i/n
+8fPFCfK5H"(o:FD l%L@W uO* E0A q <G` iLh BPC pcE+EQ ;0 fOH8'T t>:
+ %52X=FD5Z2F-8_ M1G<3 GEa s#u AW f6 ?1G <9W DKKE0@ <W i+@;L! rOu
+"b$DesQ5DKCU8Ou "b7@ ;KX g@ <? 'jB Ot[ h+D ,%uF
+(LLjDfBf4Df0WZY :js= E bT E( FEq h:P !+/J !Ko='
+ %<$3-Bl@m1H]kF A@;L!r P!+ / T5^ ee pOuS V6P ,4<rNWD;+N HB2`AWf3'Ot
+Dh\P')pOOu%N5Ot CcrF_- ^lI ? ITYP %Bdt OuY 16E-,f4DKC t)Ou%NL<,Z_
+tBl@m1H]g15P"@< :DesQ5 DK? q1De sQ5D KCs lOu"b#@<,j k@<-FL.ki\5
+1GgsI2`Nf`6:4.0 7Rp!@ 8kVi P:/=\ `;H$ Op< ``C+=tM?L, VLYoOu"b$BO
+Pq)@;L"@/!;cQ1P c$e!J i4P@q ]:kG% #3. P!5$g@UX:e BOPq&P!4[&P
+"_$&P'DD<8;I8%! FfJX@rG mhP%'4 JP,We ;@< ,jrA7^ofL] NZ4@q]:kG%#
+3.P!5%:P&Pb$@WuO*E%Yg<@Uj@fAi)5$6=FClBOPpi@ru:&N`8P@6:2kl6q0!f2]us[F*&O7Df
+0Z*Bl5&3DJXS@A8,[jFE8uU@ps=jFCAu.Ch7^1ATDiC+EML1@qB^(@;]TuFD,5.F*VV3DesJ;/
+M8;%.jZi%Ea`['AS#n&DfV"*I?IQXP"768@<-0qDBNCsEas#uAWgMG@;KXg@<?'jBOt[hH\_]c
+WI9q/Ou"b$BOt[hF*2>U!0T-o!/LYb@<-0qDMS=VWI&)_Eas#uAWf65!Kp,dBOPq)@;L"J5*AQ
+KBOt[hF*2>_!A@qrARfLsF`!:*Ou%NL82"IdARfLsF_r72BOt[hF*2>U/!=Y11Nm2CBk1XoARf
+Cb@r$E6@UX:eDe*E%@UX:nAT!Z(@UX:eBOPq&+Cf(r@r$..D3@PTD0mpFGA2#8/nes.@rPsj1b
+gpU@:V`=ARfLDBkM.%N[dV<@rHC.ARfg)84c-8+AbHq1bgp3@q]F`CER/%B5)H1E,ol?Bk1dc0
+/%?SBldisEcQ)=P!=AX<%h]hEas#uAKYGjEas#uAV^=q@<-0qDN[\V1OYEc04J@1@rGmh+C\c"
+Ch7L?!g3SIV33fo!FfJX@rGmhP'N3H@UX:eDe*F8!/N.gG[b*%@rGmh+C\c"Ch7L?!KmIm@<,j
+k@<-E3@q]F`CNFW8P"Us_DfBf4Df0WV#\7jkFC]E#GB@kJAWh:VE-,f4DKCgC@rH1+D/OE)Des
+Q5DKCtcDfBf4Df0WV%<c/rBk1XoARfCb@r#[bCia0NGV<KGB6,2)@<,jrA7Zm%E-,f4DK@HaE+
+EQ;0fP7[Ou$NeB60(8DfBf:E-,f4DKCtc@<-"%+CoD.FC]E#GEQnu061WAD..O,Bm>e?Ou[rR%
+[&V$BPCpcE+EQ;0fP7TP%64gCG'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!
+3A5GbFDtYuCM@[!P.H"'F`V,9E+*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/hibcpdf417 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER hibcpdf417--
% --BEGIN ENCODER hibcmicropdf417--
-% --REQUIRES micropdf417--
+% --REQUIRES preamble raiseerror renmatrix micropdf417--
% --DESC: HIBC MicroPDF417
% --EXAM: A123BJC5D6E71
% --EXOP:
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-dup /micropdf417 dup /uk.co.terryburton.bwipp findresource put
-begin
-/hibcmicropdf417 {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
- /columns 2 def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /columns columns cvi def
-
- /barlen barcode length def
-
- /barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%) def
-
- /barcode barlen 2 add string dup 1 barcode putinterval def
- barcode 0 43 put
-
- /checksum 0 def
- 0 1 barlen {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /checksum checksum indx add def
- } for
- barcode barlen 1 add barchars checksum 43 mod get put
-
- % Get the result of encoding with micropdf417
- options (dontdraw) true put
- options (columns) columns put
- /args barcode options //micropdf417 exec def
-
- args (opt) options put
- args
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/hibcmicropdf417 dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp hibcmicropdf417 0.0 0 0 0
+%%BeginData: 31 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 05YE5E c5 o-Ai)5 $Ou
+P+;CG'+8/p(ZFEd ;,:Ec c5; /n0 $ =E, ^uo P'E -!05,' /@ r5piEc 5o-
+Ai)5$H\`B!23JD% DfBf4 Df0 WZ5 *@ ]T @UX :eD e*FB5* @] TA8c@- A9)
++&+D,%uF(LLj04S p:F_ u#; L] W_ q06 Uc? Bk1 XoAR
+fCb@r!3!@;L!rOu %#qF D 5Z 2F -<^ [F* )G:D J+':E
++P1qH\_]c23JDeE -,f4DK C/f X (Gd VF (LLt H]g XBP#RT(P%' TNOthst4d(e
+HEckrV4aW>DP!5% OP!5$b I=% , /FE2 M8Ou %NL <IL$AOrfcH 05kfOBl@m1P
+!5$bI?IQJE-,f4D KC/f1O YEX 04Sp :F_u #;+ Cf>+F_u#;O t;bP04J@1@q
+]:kF,hb)0etOA2) [BQ3C ,u!6 q'R88 4cEH 9MJ 8X:f1+h<)l t#=BSfZ/g)D
+m.j^?704S[(Ectl -F,2? 023Kb O!/LZ 3.X PZ=@<-O"Ci bb'OuQoZEar
+ckEc[C-L]NZ4P!5 %RI?I-W !/LYb@ <,jrA 7^p 5L]N[<HX^E (@rGmhP!4[&
+P"]A!@<-O"Cibb'P$jGlHS8iPBlJ#DBPCpcD/!L#DfB6!1bgpU@:V`=@<,ddFCfKQ=\)+N6Qf*
+;@rcKa6q0!f2]us[F*&O7Df0Z*Bl5&3DJXS@A8,[jFE8uU@ps=jFCAu.Ch7^1ATDiC+EML1@qB
+^(@;]TuFD,5.F*VV3DesJ;/M8;%.jZi%Ea`['AS#n&DfV"*I?IQXP"768@<-0qDBNCsEas#uAW
+gMG@;KXg@<?'jBOt[hH\_]cWI9q/Ou"b$BOt[hF*2>U!0T-o!/LYb@<-0qDMS=VWI&)_Eas#uA
+Wf65!Kp,dBOPq)@;L"J5*AQKBOt[hF*2>_!A@qrARfLsF`!:*Ou%NL82"IdARfLsF_r72BOt[h
+F*2>U/!=Y11Nm2CBk1XoARfCb@r$E6@UX:eDe*E%@UX:nAT!Z(@UX:eBOPq&+Cf(r@r$..D3@P
+TD0mpFGA2#8/nes.@r5piEc5o-Ai)5$6=FClBOt[h6tp:JFH/"GDI[U*Eb/a&+@o'j6Qf*;@rc
+Ka6q0!f2]uUDARfKuA8,[jF<GOCDg#i*ARmGIEa`['AS#n&DfV"*I?IP_@UX:eDe*E%@UX:eDe
+*F8!+KAWCh7LI9Th2[P#O)D@<,jrA7Zlm@<-0qDMS@W!Ks:B3/@TE@<,jrA7^pLOu$QUEas#uA
+V^>B/!>-d@<,jrA7Zlm@<-0qDMS=V!FfJX@q]:kF!+t+ARfLsF`!:7P'CnaFD5Z2F,gN:Df0Z-
+Eaa06EckrVG].PCBl@m1NX''4CisT4F(9-)F_u#;P'CnaFD5Z2F,g]Q@;KXg@<?'jBOt[hAmoL
+sAWh9k@<-"%+C\c"@rGmh+E)4@Bl@m10/%0V@rcL,A7dYQ2j-Cg1LY<:F,g?@E--#;FD5Z2F-:
+cVEbBG9A8c@-A9)+&P&N'-Eb0-*@<?O(G`l$h3IR&#Ou"b)BjtRhBk)1%E+EQ;0fP7TP%64gCG
+'+8/p(ZFEd;,:Ecc5;/n0$=E,Zq1AS,XoATD@'Dfp)1AWh2!3A5GbFDtYuCM@[!P.H"'F`V,9E
++*6lBl7R3P#M~>
+% uk.co.terryburton.bwipp/hibcmicropdf417 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER hibcmicropdf417--
% --BEGIN ENCODER hibcqrcode--
-% --REQUIRES qrcode--
+% --REQUIRES preamble raiseerror renmatrix qrcode--
% --DESC: HIBC QR Code
% --EXAM: A123BJC5D6E71
% --EXOP:
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-dup /qrcode dup /uk.co.terryburton.bwipp findresource put
-begin
-/hibcqrcode {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /barlen barcode length def
-
- /barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%) def
-
- /barcode barlen 2 add string dup 1 barcode putinterval def
- barcode 0 43 put
-
- /checksum 0 def
- 0 1 barlen {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /checksum checksum indx add def
- } for
- barcode barlen 1 add barchars checksum 43 mod get put
-
- % Get the result of encoding with qrcode
- options (dontdraw) true put
- /args barcode options //qrcode exec def
-
- args (opt) options put
- args
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/hibcqrcode dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp hibcqrcode 0.0 0 0 0
+%%BeginData: 29 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 06)#BD e* FB3%oD i/n
+8fPFCfK5H"(o:FD l%L@W uO* E0A q <G` iLh BPC pcEH5Q -A 7^+D'T t>:
+ %52X=FD5Z2F-8_ M1G<3 GEa s#u AW f6 ?1G <9W DKKE0@ <W i+@;L! rOu
+"b7@;KXg@<?'jBO t[h+ D,% uF (L LjD fBf 4Df 0WZY
+:js=EbTE(FEqh:P !+/J ! Ko =' %<$ 3-B l@m1 H]kFA
+@;L!rP!+/T5^eep OuSV6P ,4< r NWD ;+ NHB2 `AW f3'OtDh\P' )pOOu%N5OtC
+crF_-^lI?ITYP%B dtOuY1 6E- , f4DK Ct)O u%N L<,Z_tBl@m 1H]g15P"@<9
+@<,jk@<-FL.ki\5 1GgsI2 `Nf `6:4 .07R p!@ 8kViP:/=\` ;H$Op<``C+=
+tM?L,VLYoOu"b$B OPq)@ ;L"@ /!;cQ 1Pc$ e!J i4P@q]:kG% #3.P!5$g@UX
+:eBOPq&P!4[&P"_ $&P'D D<8;I 8%!Ff JX@ rGmhP%'4JP ,We;@<,jrA7
+^ofL]NZ4@q]:kG% #3.P!5% :P&Pb$ @WuO* E%Y g<@UjCu@rG mh6=FClBOPp
+i@ru:&N`AVA6:2km;BS>FA7Zm#F`VXI@rH7,@;0U%Df0B:+Co2!BlnDI+Cei!Blmd"+DbV2FCf
+K6/0K"Q@:Nki+CT.u+EV:.+EMgF@W-((+>#2k0.S>%061K8F(Jp'Ec5u]5CJ\oI?I,S@UX:nAS
+rW"@<,jrA7^p5G%#3$A79Rk@q]F`CO:j<P,Wkm<0B$j@q]F`CNFW8L]ESoL]E53@UX:nAT!;)P
+,We;@<,jrA7^ofL]NZ4@q]:kG%#3.P!5%%@q]F`CNFW8Oo[4GBOt[hF*2>_5*@^MP"769BOt[h
+F*2=B@q]F`CNFW8Lb"X'Ou%8iCh[EgFCerqARfM&+C\c"@rGmh+C\c"Ch7LI94D=M@q]:kF!+t
++ARfLsF`!:7P&5P!@WuO*E%Yg<@UjCu@rGmh6=FClBOt[h6tp:JFH.kCDI[U*Eb/a&+@o'j6Qf
+6(+@C'XAKYJrARfKuA8,[jF<GOCDg#i*ARmGIEa`['AS#n&DfV"*I?IP_@UX:eDe*E%@UX:eDe
+*F8!+KAWCh7LI9Th2[P#O)D@<,jrA7Zlm@<-0qDMS@W!Ks:B3/@TE@<,jrA7^pLOu$QUEas#uA
+V^>B/!>-d@<,jrA7Zlm@<-0qDMS=V!FfJX@q]:kF!+t+ARfLsF`!:7P'CnaFD5Z2F,gN:Df0Z-
+Eaa06EckrVG].PCBl@m1NX^/?Ch[EgFCerqARfLf@;L!rP'AWgEbBG9@UX:eDe*E%DfBf4Df0V
+L06)#BDe*FB5E[g2EbBHR")i.#DfBf4Df0WZG[YW*F!,"3DKKE0@<[lR0/%?WDJ`g(EbTc]<0B
+7iOq*X205,'/@rZO!De*FB30If*F_`U>D_?-CEcQG7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@q
+CgGOuY1:ATVm"@r#drB9KiQP'(hWFDtYuCM@[!I?IP~>
+% uk.co.terryburton.bwipp/hibcqrcode 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER hibcqrcode--
% --BEGIN ENCODER hibccodablockf--
-% --REQUIRES codablockf--
+% --REQUIRES preamble raiseerror renmatrix codablockf--
% --DESC: HIBC Codablock F
% --EXAM: A123BJC5D6E71
% --EXOP:
% --RNDR: renmatrix
-/setpacking where {pop currentpacking true setpacking} if
-1 dict
-dup /renmatrix dup /uk.co.terryburton.bwipp findresource put
-dup /codablockf dup /uk.co.terryburton.bwipp findresource put
-begin
-/hibccodablockf {
-
- 20 dict begin % Confine variables to local scope
-
- /options exch def % We are given an option string
- /barcode exch def % We are given a barcode string
-
- /dontdraw false def
-
- % Parse the input options
- options type /stringtype eq {
- 1 dict begin
- options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
- } loop
- currentdict end /options exch def
- } if
- options {def} forall
-
- /barlen barcode length def
-
- /barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%) def
-
- /barcode barlen 2 add string dup 1 barcode putinterval def
- barcode 0 43 put
-
- /checksum 0 def
- 0 1 barlen {
- /i exch def
- % Lookup the encoding for the each barcode character
- barcode i 1 getinterval barchars exch search
- pop % Discard true leaving pre
- length /indx exch def % indx is the length of pre
- pop pop % Discard seek and post
- /checksum checksum indx add def
- } for
- barcode barlen 1 add barchars checksum 43 mod get put
-
- % Get the result of encoding with codablockf
- options (dontdraw) true put
- /args barcode options //codablockf exec def
-
- args (opt) options put
- args
-
- dontdraw not //renmatrix if
-
- end
-
-} bind def
-/hibccodablockf dup load /uk.co.terryburton.bwipp defineresource pop
-end
-/setpacking where {pop setpacking} if
+%%BeginResource: uk.co.terryburton.bwipp hibccodablockf 0.0 0 0 0
+%%BeginData: 30 ASCII Lines
+currentfile /ASCII85Decode filter cvx exec
+06:]HE+*6lBl7RH \pKT_ @s)g4 ASuU/ @: O(e DJ()6E ckq9F(K
+H4@:O(eDJ+B\</: R<2 3KpPE a`['A S# n&D fV" #06M
+ %_@rEuAATDg:@W c^5Df .1 :GA2# 8P1l (D OuP +8ASu ?nF E2)?O uP+;
+CG'+8/p(ZFEd;,: Ecc5; /n0 $=E ,^uo P' E-L 04Sp2@ :F %k@r#\ >3%
+oDi/n8fPFCfK5H" (o:FD l%L @Wu O *E0 Aq< G`i LhBPCp c@ rGmd@V fsm
+CM%pL'Tt>:%52X= FD5Z2 F-8 _M1 G< 3G Eas #uA Wf6?1G <9 WDKKE0 @<W
+i+@;L!rOu"b7@;K Xg@< ?'j BO t[ h+D ,%u F(L LjDf
+Bf4Df0WZY:js=Eb TE(F E qh :P !+/ J!K o='% <$3-B
+l@m1H]kFA@;L!rP !+/T5^ eep O uSV 6P ,4<r NWD ;+NHB2`AWf 3'OtDh\P')p
+OOu%N5OtCcrF_-^ lI?ITY P%B d tOuY 16E- ,f4 DKCt)Ou%NL <,Z_tBl@m1H
+]g15P"@<9@<,jk@ <-FL.k i\5 1Ggs I2`N f`6 :4.07Rp!@8 kViP:/=\`;H
+$Op<``C+=tM?L,V LYoOu "b$B OPq)@ ;L"@ /!; cQ1Pc$e!Ji 4P@q]:kG%#3
+.P!5$g@UX:eBOPq &P!4[ &P"_$ &P'DD <8; I8%!FfJX@r GmhP%'4JP,W
+e;@<,jrA7^ofL]N Z4@q]:k G%#3.P !5%:P &Pb $@WuO*E%YX =A78q`De!Qp
+6=FClBOPpi@ru:&N`enE6:2k_De*9cCi<g!+@[JjF`VXI@rH7,@;0U%Df0B:+Co2!BlnDI+Cei
+!Blmd"+DbV2FCfK6/0K"Q@:Nki+CT.u+EV:.+EMgF@W-((+>#2k0.S>%061K8F(Jp'Ec5u]5CJ
+\oI?I,S@UX:nASrW"@<,jrA7^p5G%#3$A79Rk@q]F`CO:j<P,Wkm<0B$j@q]F`CNFW8L]ESoL]
+E53@UX:nAT!;)P,We;@<,jrA7^ofL]NZ4@q]:kG%#3.P!5%%@q]F`CNFW8Oo[4GBOt[hF*2>_5
+*@^MP"769BOt[hF*2=B@q]F`CNFW8Lb"X'Ou%8iCh[EgFCerqARfM&+C\c"@rGmh+C\c"Ch7LI
+94D=M@q]:kF!+t+ARfLsF`!:7P&5P!@WuO*E%Yg<@UindA78q`De!Qp6=FClBOt[h6tp:JFH/"
+GDI[U*Eb/a&+@o'j6Qea7A78q`De!Q*7Nc2SARfKuA8,[jF<GOCDg#i*ARmGIEa`['AS#n&DfV
+"*I?IP_@UX:eDe*E%@UX:eDe*F8!+KAWCh7LI9Th2[P#O)D@<,jrA7Zlm@<-0qDMS@W!Ks:B3/
+@TE@<,jrA7^pLOu$QUEas#uAV^>B/!>-d@<,jrA7Zlm@<-0qDMS=V!FfJX@q]:kF!+t+ARfLsF
+`!:7P'CnaFD5Z2F,gN:Df0Z-Eaa06EckrVG].PCBl@m1NX^/?Ch[EgFCerqARfLf@;L!rP'AWg
+EbBG9@UX:eDe*E%DfBf4Df0VL04Sp2@:F%k@r#\>5E[g2EbBHR")i.#DfBf4Df0WZG[YW*F!,"
+3DKKE0@<[lR0/%?WDJ`g(EbTc]<0B7iOq*X205,'/@q0Ff@:F%k@r#\>30If*F_`U>D_?-CEcQ
+G7F`MSBDD#CBBlJ#6A7]@eDImj"F)Q2A@qCgGOuY1:ATVm"@r#drB9KiQP'(hWFDtYuCM@[!I?
+IP~>
+% uk.co.terryburton.bwipp/hibccodablockf 0.0 0
+%%EndData
+%%EndResource
% --END ENCODER hibccodablockf--
% --END TEMPLATE--