|  | %% | 
|  | %% This is file `eptcs.bst', | 
|  | %% generated with the docstrip utility. | 
|  | %% | 
|  | %% The original source files were: | 
|  | %% | 
|  | %% merlin.mbs  (with options: `vonx,ed-au,dt-beg,yr-par,xmth,yrp-col,tit-it,atit-u,volp-com,jwdpg,pp-last,num-xser,ser-vol,jnm-x,pre-edn,doi,blknt,pp,xedn,amper,and-xcom,etal-xc,url,url-blk,bibinfo,nfss,') | 
|  | %% ---------------------------------------- | 
|  | %% *** Stylefile for EPTCS *** | 
|  | %% | 
|  | %% Copyright 1994-2004 Patrick W Daly | 
|  | % =============================================================== | 
|  | % NOTICE: | 
|  | % This bibliographic style (bst) file has been generated from one or | 
|  | % more master bibliographic style (mbs) files, listed above. | 
|  | % Subsequently it has been edited by hand by Rob van Glabbeek | 
|  | % | 
|  | % This file can be redistributed and/or modified under the terms | 
|  | % of the LaTeX Project Public License Distributed from CTAN | 
|  | % archives in directory macros/latex/base/lppl.txt; either | 
|  | % version 1 of the License, or any later version. | 
|  | % =============================================================== | 
|  | % Name and version information of the main mbs file: | 
|  | % \ProvidesFile{merlin.mbs}[2004/02/09 4.13 (PWD, AO, DPC)] | 
|  | %   For use with BibTeX version 0.99a or later | 
|  | %------------------------------------------------------------------- | 
|  | % This bibliography style file is intended for texts in ENGLISH | 
|  | % This is a numerical citation style, and as such is standard LaTeX. | 
|  | % It requires no extra package to interface to the main text. | 
|  | % The form of the \bibitem entries is | 
|  | %   \bibitem{key}... | 
|  | % Usage of \cite is as follows: | 
|  | %   \cite{key} ==>>          [#] | 
|  | %   \cite[chap. 2]{key} ==>> [#, chap. 2] | 
|  | % where # is a number determined by the ordering in the reference list. | 
|  | % The order in the reference list is alphabetical by authors. | 
|  | %--------------------------------------------------------------------- | 
|  |  | 
|  | ENTRY | 
|  | { address | 
|  | author | 
|  | booktitle | 
|  | chapter | 
|  | doi | 
|  | edition | 
|  | editor | 
|  | eid | 
|  | howpublished | 
|  | institution | 
|  | journal | 
|  | key | 
|  | note | 
|  | number | 
|  | organization | 
|  | pages | 
|  | publisher | 
|  | school | 
|  | series | 
|  | title | 
|  | type | 
|  | url | 
|  | ee | 
|  | volume | 
|  | year | 
|  | } | 
|  | {} | 
|  | { label } | 
|  | INTEGERS { output.state before.all mid.sentence after.sentence after.block } | 
|  | FUNCTION {init.state.consts} | 
|  | { #0 'before.all := | 
|  | #1 'mid.sentence := | 
|  | #2 'after.sentence := | 
|  | #3 'after.block := | 
|  | } | 
|  | STRINGS { s t} | 
|  | FUNCTION {output.nonnull} | 
|  | { 's := | 
|  | output.state mid.sentence = | 
|  | { ", " * write$ } | 
|  | { output.state after.block = | 
|  | { add.period$ write$ | 
|  | newline$ | 
|  | "\newblock " write$ | 
|  | } | 
|  | { output.state before.all = | 
|  | 'write$ | 
|  | { add.period$ " " * write$ } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | mid.sentence 'output.state := | 
|  | } | 
|  | if$ | 
|  | s | 
|  | } | 
|  | FUNCTION {output} | 
|  | { duplicate$ empty$ | 
|  | 'pop$ | 
|  | 'output.nonnull | 
|  | if$ | 
|  | } | 
|  | FUNCTION {output.check} | 
|  | { 't := | 
|  | duplicate$ empty$ | 
|  | { pop$ "empty " t * " in " * cite$ * warning$ } | 
|  | 'output.nonnull | 
|  | if$ | 
|  | } | 
|  | FUNCTION {fin.entry} | 
|  | { add.period$ | 
|  | write$ | 
|  | newline$ | 
|  | } | 
|  |  | 
|  | FUNCTION {new.block} | 
|  | { output.state before.all = | 
|  | 'skip$ | 
|  | { after.block 'output.state := } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {new.sentence} | 
|  | { output.state after.block = | 
|  | 'skip$ | 
|  | { output.state before.all = | 
|  | 'skip$ | 
|  | { after.sentence 'output.state := } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {add.blank} | 
|  | {  " " * before.all 'output.state := | 
|  | } | 
|  |  | 
|  | FUNCTION {date.block} | 
|  | { | 
|  | ":" * | 
|  | add.blank | 
|  | } | 
|  |  | 
|  | FUNCTION {not} | 
|  | {   { #0 } | 
|  | { #1 } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {and} | 
|  | {   'skip$ | 
|  | { pop$ #0 } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {or} | 
|  | {   { pop$ #1 } | 
|  | 'skip$ | 
|  | if$ | 
|  | } | 
|  | FUNCTION {new.block.checka} | 
|  | { empty$ | 
|  | 'skip$ | 
|  | 'new.block | 
|  | if$ | 
|  | } | 
|  | FUNCTION {new.block.checkb} | 
|  | { empty$ | 
|  | swap$ empty$ | 
|  | and | 
|  | 'skip$ | 
|  | 'new.block | 
|  | if$ | 
|  | } | 
|  | FUNCTION {new.sentence.checka} | 
|  | { empty$ | 
|  | 'skip$ | 
|  | 'new.sentence | 
|  | if$ | 
|  | } | 
|  | FUNCTION {new.sentence.checkb} | 
|  | { empty$ | 
|  | swap$ empty$ | 
|  | and | 
|  | 'skip$ | 
|  | 'new.sentence | 
|  | if$ | 
|  | } | 
|  | FUNCTION {field.or.null} | 
|  | { duplicate$ empty$ | 
|  | { pop$ "" } | 
|  | 'skip$ | 
|  | if$ | 
|  | } | 
|  | FUNCTION {emphasize} | 
|  | { duplicate$ empty$ | 
|  | { pop$ "" } | 
|  | { "\emph{" swap$ * "}" * } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {slant} | 
|  | { duplicate$ empty$ | 
|  | { pop$ "" } | 
|  | { "{\sl " swap$ * "}" * } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {tie.or.space.prefix} | 
|  | { duplicate$ text.length$ #3 < | 
|  | { "~" } | 
|  | { " " } | 
|  | if$ | 
|  | swap$ | 
|  | } | 
|  |  | 
|  | FUNCTION {capitalize} | 
|  | { "u" change.case$ "t" change.case$ } | 
|  |  | 
|  | FUNCTION {space.word} | 
|  | { " " swap$ * " " * } | 
|  | % Here are the language-specific definitions for explicit words. | 
|  | % Each function has a name bbl.xxx where xxx is the English word. | 
|  | % The language selected here is ENGLISH | 
|  | FUNCTION {bbl.and} | 
|  | { "and"} | 
|  |  | 
|  | FUNCTION {bbl.etal} | 
|  | { "et~al." } | 
|  |  | 
|  | FUNCTION {bbl.editors} | 
|  | { "editors" } | 
|  |  | 
|  | FUNCTION {bbl.editor} | 
|  | { "editor" } | 
|  |  | 
|  | FUNCTION {bbl.edby} | 
|  | { "edited by" } | 
|  |  | 
|  | FUNCTION {bbl.edition} | 
|  | { "edition" } | 
|  |  | 
|  | FUNCTION {bbl.volume} | 
|  | { "" } | 
|  |  | 
|  | FUNCTION {bbl.of} | 
|  | { "of" } | 
|  |  | 
|  | FUNCTION {bbl.nr} | 
|  | { "no." } | 
|  |  | 
|  | FUNCTION {bbl.in} | 
|  | { "in" } | 
|  |  | 
|  | FUNCTION {bbl.pages} | 
|  | { "pp." } | 
|  |  | 
|  | FUNCTION {bbl.page} | 
|  | { "p." } | 
|  |  | 
|  | FUNCTION {bbl.chapter} | 
|  | { "chapter" } | 
|  |  | 
|  | FUNCTION {bbl.techrep} | 
|  | { "Technical Report" } | 
|  |  | 
|  | FUNCTION {bbl.mthesis} | 
|  | { "Master's thesis" } | 
|  |  | 
|  | FUNCTION {bbl.phdthesis} | 
|  | { "Ph.D. thesis" } | 
|  |  | 
|  | MACRO {jan} {"January"} | 
|  |  | 
|  | MACRO {feb} {"February"} | 
|  |  | 
|  | MACRO {mar} {"March"} | 
|  |  | 
|  | MACRO {apr} {"April"} | 
|  |  | 
|  | MACRO {may} {"May"} | 
|  |  | 
|  | MACRO {jun} {"June"} | 
|  |  | 
|  | MACRO {jul} {"July"} | 
|  |  | 
|  | MACRO {aug} {"August"} | 
|  |  | 
|  | MACRO {sep} {"September"} | 
|  |  | 
|  | MACRO {oct} {"October"} | 
|  |  | 
|  | MACRO {nov} {"November"} | 
|  |  | 
|  | MACRO {dec} {"December"} | 
|  |  | 
|  | MACRO {acmcs} {"ACM Computing Surveys"} | 
|  |  | 
|  | MACRO {acta} {"Acta Informatica"} | 
|  |  | 
|  | MACRO {cacm} {"Communications of the ACM"} | 
|  |  | 
|  | MACRO {eptcs} {"Electronic Proceedings in Computer Science"} | 
|  |  | 
|  | MACRO {ibmjrd} {"IBM Journal of Research and Development"} | 
|  |  | 
|  | MACRO {ibmsj} {"IBM Systems Journal"} | 
|  |  | 
|  | MACRO {ieeese} {"IEEE Transactions on Software Engineering"} | 
|  |  | 
|  | MACRO {ieeetc} {"IEEE Transactions on Computers"} | 
|  |  | 
|  | MACRO {ieeetcad} | 
|  | {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} | 
|  |  | 
|  | MACRO {ipl} {"Information Processing Letters"} | 
|  |  | 
|  | MACRO {jacm} {"Journal of the ACM"} | 
|  |  | 
|  | MACRO {jcss} {"Journal of Computer and System Sciences"} | 
|  |  | 
|  | MACRO {scp} {"Science of Computer Programming"} | 
|  |  | 
|  | MACRO {sicomp} {"SIAM Journal on Computing"} | 
|  |  | 
|  | MACRO {tocs} {"ACM Transactions on Computer Systems"} | 
|  |  | 
|  | MACRO {tods} {"ACM Transactions on Database Systems"} | 
|  |  | 
|  | MACRO {tog} {"ACM Transactions on Graphics"} | 
|  |  | 
|  | MACRO {toms} {"ACM Transactions on Mathematical Software"} | 
|  |  | 
|  | MACRO {toois} {"ACM Transactions on Office Information Systems"} | 
|  |  | 
|  | MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} | 
|  |  | 
|  | MACRO {tcs} {"Theoretical Computer Science"} | 
|  | FUNCTION {bibinfo.check} | 
|  | { swap$ | 
|  | duplicate$ missing$ | 
|  | { | 
|  | pop$ pop$ | 
|  | "" | 
|  | } | 
|  | { duplicate$ empty$ | 
|  | { | 
|  | swap$ pop$ | 
|  | } | 
|  | { swap$ | 
|  | "\bibinfo{" swap$ * "}{" * swap$ * "}" * | 
|  | } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {bibinfo.warn} | 
|  | { swap$ | 
|  | duplicate$ missing$ | 
|  | { | 
|  | swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ | 
|  | "" | 
|  | } | 
|  | { duplicate$ empty$ | 
|  | { | 
|  | swap$ "empty " swap$ * " in " * cite$ * warning$ | 
|  | } | 
|  | { swap$ | 
|  | "\bibinfo{" swap$ * "}{" * swap$ * "}" * | 
|  | } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {either.or.check} | 
|  | { empty$ | 
|  | 'pop$ | 
|  | { "can't use both " swap$ * " fields in " * cite$ * warning$ } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.ee} | 
|  | { ee empty$ | 
|  | { "" } | 
|  | { "\urlprefix\url{" ee * "}" * } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.url} | 
|  | { url empty$ | 
|  | { format.ee } | 
|  | { "\urlprefix\url{" url * "}" * | 
|  | "ee and url" ee either.or.check | 
|  | } | 
|  | if$ | 
|  | } | 
|  |  | 
|  | STRINGS  { bibinfo} | 
|  | INTEGERS { nameptr namesleft numnames } | 
|  |  | 
|  | FUNCTION {format.names} | 
|  | { 'bibinfo := | 
|  | duplicate$ empty$ 'skip$ { | 
|  | 's := | 
|  | "" 't := | 
|  | #1 'nameptr := | 
|  | s num.names$ 'numnames := | 
|  | numnames 'namesleft := | 
|  | { namesleft #0 > } | 
|  | { s nameptr | 
|  | "{ff~}{vv~}{ll}{, jj}" | 
|  | format.name$ | 
|  | bibinfo bibinfo.check | 
|  | 't := | 
|  | nameptr #1 > | 
|  | { | 
|  | namesleft #1 > | 
|  | { ", " * t * } | 
|  | { | 
|  | s nameptr "{ll}" format.name$ duplicate$ "others" = | 
|  | { 't := } | 
|  | { pop$ } | 
|  | if$ | 
|  | t "others" = | 
|  | { | 
|  | " " * bbl.etal * | 
|  | } | 
|  | { | 
|  | "\&" | 
|  | space.word * t * | 
|  | } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | } | 
|  | 't | 
|  | if$ | 
|  | nameptr #1 + 'nameptr := | 
|  | namesleft #1 - 'namesleft := | 
|  | } | 
|  | while$ | 
|  | } if$ | 
|  | } | 
|  | FUNCTION {format.names.ed} | 
|  | { | 
|  | format.names | 
|  | } | 
|  | FUNCTION {format.authors} | 
|  | { author "author" format.names | 
|  | } | 
|  | FUNCTION {get.bbl.editor} | 
|  | { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } | 
|  |  | 
|  | FUNCTION {format.editors} | 
|  | { editor "editor" format.names duplicate$ empty$ 'skip$ | 
|  | { | 
|  | "," * | 
|  | " " * | 
|  | get.bbl.editor | 
|  | * | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.doi} | 
|  | { doi | 
|  | duplicate$ empty$ 'skip$ | 
|  | { | 
|  | "\doi{" swap$ * "}" * | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.note} | 
|  | { | 
|  | note empty$ | 
|  | { "" } | 
|  | { note #1 #1 substring$ | 
|  | duplicate$ "{" = | 
|  | 'skip$ | 
|  | { output.state mid.sentence = | 
|  | { "l" } | 
|  | { "u" } | 
|  | if$ | 
|  | change.case$ | 
|  | } | 
|  | if$ | 
|  | note #2 global.max$ substring$ * "note" bibinfo.check | 
|  | } | 
|  | if$ | 
|  | } | 
|  |  | 
|  | FUNCTION {format.title} | 
|  | { title | 
|  | "title" bibinfo.check | 
|  | duplicate$ empty$ 'skip$ | 
|  | { | 
|  | emphasize | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {output.bibitem} | 
|  | { newline$ | 
|  | "\bibitemdeclare{" type$ "}{" cite$ "}" * * * * write$ newline$ | 
|  | "\bibitem{" write$ | 
|  | cite$ write$ | 
|  | "}" write$ | 
|  | newline$ | 
|  | "" | 
|  | before.all 'output.state := | 
|  | } | 
|  |  | 
|  | FUNCTION {n.dashify} | 
|  | { | 
|  | 't := | 
|  | "" | 
|  | { t empty$ not } | 
|  | { t #1 #1 substring$ "-" = | 
|  | { t #1 #2 substring$ "--" = not | 
|  | { "--" * | 
|  | t #2 global.max$ substring$ 't := | 
|  | } | 
|  | {   { t #1 #1 substring$ "-" = } | 
|  | { "-" * | 
|  | t #2 global.max$ substring$ 't := | 
|  | } | 
|  | while$ | 
|  | } | 
|  | if$ | 
|  | } | 
|  | { t #1 #1 substring$ * | 
|  | t #2 global.max$ substring$ 't := | 
|  | } | 
|  | if$ | 
|  | } | 
|  | while$ | 
|  | } | 
|  |  | 
|  | FUNCTION {word.in} | 
|  | { bbl.in capitalize | 
|  | " " * } | 
|  |  | 
|  | FUNCTION {format.date} | 
|  | { | 
|  | "" | 
|  | duplicate$ empty$ | 
|  | year  "year"  bibinfo.check duplicate$ empty$ | 
|  | { swap$ 'skip$ | 
|  | { "there's a month but no year in " cite$ * warning$ } | 
|  | if$ | 
|  | * | 
|  | } | 
|  | { swap$ 'skip$ | 
|  | { | 
|  | swap$ | 
|  | " " * swap$ | 
|  | } | 
|  | if$ | 
|  | * | 
|  | } | 
|  | if$ | 
|  | duplicate$ empty$ | 
|  | 'skip$ | 
|  | { | 
|  | before.all 'output.state := | 
|  | " (" swap$ * ")" * | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.btitle} | 
|  | { title "title" bibinfo.check | 
|  | duplicate$ empty$ 'skip$ | 
|  | { | 
|  | emphasize | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {volume.or.number} | 
|  | { volume missing$ | 
|  | { number } | 
|  | { volume } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.volume.number.series} | 
|  | { volume.or.number missing$ | 
|  | { series "series" bibinfo.check field.or.null } | 
|  | { series empty$ | 
|  | { volume.or.number "volume" bibinfo.check } | 
|  | { volume.or.number tie.or.space.prefix "volume" bibinfo.check * | 
|  | series "series" bibinfo.check | 
|  | duplicate$ empty$ 'pop$ | 
|  | { slant swap$ * } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | volume missing$ | 
|  | 'skip$ | 
|  | { "volume and number" number either.or.check } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.edition} | 
|  | { edition duplicate$ empty$ 'skip$ | 
|  | { | 
|  | output.state mid.sentence = | 
|  | { "l" } | 
|  | { "t" } | 
|  | if$ change.case$ | 
|  | "edition" bibinfo.check | 
|  | " " * bbl.edition * | 
|  | } | 
|  | if$ | 
|  | } | 
|  | INTEGERS { multiresult } | 
|  | FUNCTION {multi.page.check} | 
|  | { 't := | 
|  | #0 'multiresult := | 
|  | { multiresult not | 
|  | t empty$ not | 
|  | and | 
|  | } | 
|  | { t #1 #1 substring$ | 
|  | duplicate$ "-" = | 
|  | swap$ duplicate$ "," = | 
|  | swap$ "+" = | 
|  | or or | 
|  | { #1 'multiresult := } | 
|  | { t #2 global.max$ substring$ 't := } | 
|  | if$ | 
|  | } | 
|  | while$ | 
|  | multiresult | 
|  | } | 
|  | FUNCTION {format.pages} | 
|  | { pages duplicate$ empty$ 'skip$ | 
|  | { duplicate$ multi.page.check | 
|  | { | 
|  | bbl.pages swap$ | 
|  | n.dashify | 
|  | } | 
|  | { | 
|  | bbl.page swap$ | 
|  | } | 
|  | if$ | 
|  | tie.or.space.prefix | 
|  | "pages" bibinfo.check | 
|  | * * | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.journal.pages} | 
|  | { pages duplicate$ empty$ 'pop$ | 
|  | { swap$ duplicate$ empty$ | 
|  | { pop$ pop$ format.pages } | 
|  | { | 
|  | ", " * | 
|  | swap$ | 
|  | n.dashify | 
|  | pages multi.page.check | 
|  | 'bbl.pages | 
|  | 'bbl.page | 
|  | if$ | 
|  | swap$ tie.or.space.prefix | 
|  | "pages" bibinfo.check | 
|  | * * | 
|  | * | 
|  | } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.journal.eid} | 
|  | { eid "eid" bibinfo.check | 
|  | duplicate$ empty$ 'pop$ | 
|  | { swap$ duplicate$ empty$ 'skip$ | 
|  | { | 
|  | ":" * | 
|  | } | 
|  | if$ | 
|  | swap$ * | 
|  | "eid and pages" pages either.or.check | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.vol.num.pages} | 
|  | { volume field.or.null | 
|  | duplicate$ empty$ 'skip$ | 
|  | { | 
|  | "volume" bibinfo.check | 
|  | } | 
|  | if$ | 
|  | number "number" bibinfo.check duplicate$ empty$ 'skip$ | 
|  | { | 
|  | swap$ duplicate$ empty$ | 
|  | { "there's a number but no volume in " cite$ * warning$ } | 
|  | 'skip$ | 
|  | if$ | 
|  | swap$ | 
|  | "(" swap$ * ")" * | 
|  | } | 
|  | if$ * | 
|  | } | 
|  |  | 
|  | FUNCTION {format.chapter} | 
|  | { chapter empty$ | 
|  | { "" } | 
|  | { type empty$ | 
|  | { bbl.chapter } | 
|  | { type "l" change.case$ | 
|  | "type" bibinfo.check | 
|  | } | 
|  | if$ | 
|  | chapter tie.or.space.prefix | 
|  | "chapter" bibinfo.check | 
|  | * * | 
|  | } | 
|  | if$ | 
|  | } | 
|  |  | 
|  | FUNCTION {format.booktitle} | 
|  | { | 
|  | booktitle "booktitle" bibinfo.check | 
|  | slant | 
|  | } | 
|  | FUNCTION {format.in.ed.booktitle} | 
|  | { format.booktitle duplicate$ empty$ 'skip$ | 
|  | { bbl.in capitalize | 
|  | editor "editor" format.names.ed duplicate$ empty$ 'pop$ | 
|  | { | 
|  | " " swap$ * | 
|  | ", " * | 
|  | get.bbl.editor * | 
|  | * } | 
|  | if$ | 
|  | ": " * | 
|  | swap$ * | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {empty.misc.check} | 
|  | { author empty$ title empty$ howpublished empty$ | 
|  | year empty$ note empty$ | 
|  | and and and and | 
|  | key empty$ not and | 
|  | { "all relevant fields are empty in " cite$ * warning$ } | 
|  | 'skip$ | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.thesis.type} | 
|  | { type duplicate$ empty$ | 
|  | 'pop$ | 
|  | { swap$ pop$ | 
|  | "t" change.case$ "type" bibinfo.check | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.tr.number} | 
|  | { number "number" bibinfo.check | 
|  | type duplicate$ empty$ | 
|  | { pop$ bbl.techrep } | 
|  | 'skip$ | 
|  | if$ | 
|  | "type" bibinfo.check | 
|  | swap$ duplicate$ empty$ | 
|  | { pop$ "t" change.case$ } | 
|  | { tie.or.space.prefix * * } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.article.crossref} | 
|  | { | 
|  | key duplicate$ empty$ | 
|  | { pop$ | 
|  | journal duplicate$ empty$ | 
|  | { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } | 
|  | { "journal" bibinfo.check slant word.in swap$ * } | 
|  | if$ | 
|  | } | 
|  | { word.in swap$ * " " *} | 
|  | if$ | 
|  | " \cite{" * crossref * "}" * | 
|  | } | 
|  | FUNCTION {format.crossref.editor} | 
|  | { editor #1 "{vv~}{ll}" format.name$ | 
|  | "editor" bibinfo.check | 
|  | editor num.names$ duplicate$ | 
|  | #2 > | 
|  | { pop$ | 
|  | "editor" bibinfo.check | 
|  | " " * bbl.etal | 
|  | * | 
|  | } | 
|  | { #2 < | 
|  | 'skip$ | 
|  | { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = | 
|  | { | 
|  | "editor" bibinfo.check | 
|  | " " * bbl.etal | 
|  | * | 
|  | } | 
|  | { | 
|  | " \& " | 
|  | * editor #2 "{vv~}{ll}" format.name$ | 
|  | "editor" bibinfo.check | 
|  | * | 
|  | } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.book.crossref} | 
|  | { volume duplicate$ empty$ | 
|  | { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ | 
|  | pop$ word.in | 
|  | } | 
|  | { bbl.volume | 
|  | capitalize | 
|  | swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * | 
|  | } | 
|  | if$ | 
|  | editor empty$ | 
|  | editor field.or.null author field.or.null = | 
|  | or | 
|  | { key empty$ | 
|  | { series empty$ | 
|  | { "need editor, key, or series for " cite$ * " to crossref " * | 
|  | crossref * warning$ | 
|  | "" * | 
|  | } | 
|  | { series slant * } | 
|  | if$ | 
|  | } | 
|  | { key * } | 
|  | if$ | 
|  | } | 
|  | { format.crossref.editor * } | 
|  | if$ | 
|  | " \cite{" * crossref * "}" * | 
|  | } | 
|  | FUNCTION {format.incoll.inproc.crossref} | 
|  | { | 
|  | editor empty$ | 
|  | editor field.or.null author field.or.null = | 
|  | or | 
|  | { key empty$ | 
|  | { format.booktitle duplicate$ empty$ | 
|  | { "need editor, key, or booktitle for " cite$ * " to crossref " * | 
|  | crossref * warning$ | 
|  | } | 
|  | { word.in swap$ * } | 
|  | if$ | 
|  | } | 
|  | { word.in key * " " *} | 
|  | if$ | 
|  | } | 
|  | { word.in format.crossref.editor * " " *} | 
|  | if$ | 
|  | " \cite{" * crossref * "}" * | 
|  | } | 
|  | FUNCTION {format.org.or.pub} | 
|  | { 't := | 
|  | "" | 
|  | address empty$ t empty$ and | 
|  | 'skip$ | 
|  | { | 
|  | t empty$ | 
|  | { address "address" bibinfo.check * | 
|  | } | 
|  | { t * | 
|  | address empty$ | 
|  | 'skip$ | 
|  | { ", " * address "address" bibinfo.check * } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {format.publisher.address} | 
|  | { publisher "publisher" bibinfo.warn format.org.or.pub | 
|  | } | 
|  |  | 
|  | FUNCTION {format.organization.address} | 
|  | { organization "organization" bibinfo.check format.org.or.pub | 
|  | } | 
|  |  | 
|  | FUNCTION {article} | 
|  | { output.bibitem | 
|  | format.authors "author" output.check | 
|  | format.date "year" output.check | 
|  | date.block | 
|  | format.title "title" output.check | 
|  | new.block | 
|  | crossref missing$ | 
|  | { | 
|  | journal | 
|  | "journal" bibinfo.check | 
|  | slant | 
|  | "journal" output.check | 
|  | add.blank | 
|  | format.vol.num.pages output | 
|  | } | 
|  | { format.article.crossref output.nonnull | 
|  | } | 
|  | if$ | 
|  | eid empty$ | 
|  | { format.journal.pages } | 
|  | { format.journal.eid } | 
|  | if$ | 
|  | format.doi output | 
|  | new.block | 
|  | format.url output | 
|  | new.block | 
|  | format.note output | 
|  | fin.entry | 
|  | } | 
|  | FUNCTION {book} | 
|  | { output.bibitem | 
|  | author empty$ | 
|  | { format.editors "author and editor" output.check | 
|  | } | 
|  | { format.authors output.nonnull | 
|  | crossref missing$ | 
|  | { "author and editor" editor either.or.check } | 
|  | 'skip$ | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | format.date "year" output.check | 
|  | date.block | 
|  | format.btitle "title" output.check | 
|  | crossref missing$ | 
|  | { format.edition output | 
|  | new.block | 
|  | format.volume.number.series output | 
|  | format.publisher.address output | 
|  | } | 
|  | { | 
|  | new.block | 
|  | format.book.crossref output.nonnull | 
|  | } | 
|  | if$ | 
|  | format.doi output | 
|  | new.block | 
|  | format.url output | 
|  | new.block | 
|  | format.note output | 
|  | fin.entry | 
|  | } | 
|  | FUNCTION {booklet} | 
|  | { output.bibitem | 
|  | format.authors output | 
|  | format.date output | 
|  | date.block | 
|  | format.title "title" output.check | 
|  | new.block | 
|  | howpublished "howpublished" bibinfo.check output | 
|  | address "address" bibinfo.check output | 
|  | format.doi output | 
|  | new.block | 
|  | format.url output | 
|  | new.block | 
|  | format.note output | 
|  | fin.entry | 
|  | } | 
|  |  | 
|  | FUNCTION {inbook} | 
|  | { output.bibitem | 
|  | author empty$ | 
|  | { format.editors "author and editor" output.check | 
|  | } | 
|  | { format.authors output.nonnull | 
|  | crossref missing$ | 
|  | { "author and editor" editor either.or.check } | 
|  | 'skip$ | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | format.date "year" output.check | 
|  | date.block | 
|  | format.btitle "title" output.check | 
|  | crossref missing$ | 
|  | { | 
|  | format.edition output | 
|  | format.chapter output | 
|  | format.pages output | 
|  | new.block | 
|  | format.volume.number.series output | 
|  | format.publisher.address output | 
|  | } | 
|  | { | 
|  | format.chapter output | 
|  | format.pages output | 
|  | new.block | 
|  | format.book.crossref output.nonnull | 
|  | } | 
|  | if$ | 
|  | format.doi output | 
|  | new.block | 
|  | format.url output | 
|  | new.block | 
|  | format.note output | 
|  | fin.entry | 
|  | } | 
|  |  | 
|  | FUNCTION {incollection} | 
|  | { output.bibitem | 
|  | format.authors "author" output.check | 
|  | format.date "year" output.check | 
|  | date.block | 
|  | format.title "title" output.check | 
|  | new.block | 
|  | crossref missing$ | 
|  | { format.in.ed.booktitle "booktitle" output.check | 
|  | format.edition output | 
|  | format.chapter output | 
|  | format.volume.number.series output | 
|  | format.publisher.address output | 
|  | } | 
|  | { format.incoll.inproc.crossref output.nonnull | 
|  | format.chapter output | 
|  | } | 
|  | if$ | 
|  | format.pages "pages" output.check | 
|  | format.doi output | 
|  | new.block | 
|  | format.url output | 
|  | new.block | 
|  | format.note output | 
|  | fin.entry | 
|  | } | 
|  | FUNCTION {inproceedings} | 
|  | { output.bibitem | 
|  | format.authors "author" output.check | 
|  | format.date "year" output.check | 
|  | date.block | 
|  | format.title "title" output.check | 
|  | new.block | 
|  | crossref missing$ | 
|  | { format.in.ed.booktitle "booktitle" output.check | 
|  | format.volume.number.series output | 
|  | publisher empty$ | 
|  | { format.organization.address output } | 
|  | { organization "organization" bibinfo.check output | 
|  | format.publisher.address output | 
|  | } | 
|  | if$ | 
|  | } | 
|  | { format.incoll.inproc.crossref output.nonnull | 
|  | } | 
|  | if$ | 
|  | format.pages "pages" output.check | 
|  | format.doi output | 
|  | new.block | 
|  | format.url output | 
|  | new.block | 
|  | format.note output | 
|  | fin.entry | 
|  | } | 
|  | FUNCTION {conference} { inproceedings } | 
|  | FUNCTION {manual} | 
|  | { output.bibitem | 
|  | author empty$ | 
|  | { organization "organization" bibinfo.check | 
|  | duplicate$ empty$ 'pop$ | 
|  | { output | 
|  | address "address" bibinfo.check output | 
|  | } | 
|  | if$ | 
|  | } | 
|  | { format.authors output.nonnull } | 
|  | if$ | 
|  | format.date output | 
|  | date.block | 
|  | format.btitle "title" output.check | 
|  | format.edition output | 
|  | author empty$ | 
|  | { organization empty$ | 
|  | { | 
|  | address new.block.checka | 
|  | address "address" bibinfo.check output | 
|  | } | 
|  | 'skip$ | 
|  | if$ | 
|  | } | 
|  | { | 
|  | organization address new.block.checkb | 
|  | organization "organization" bibinfo.check output | 
|  | address "address" bibinfo.check output | 
|  | } | 
|  | if$ | 
|  | format.doi output | 
|  | new.block | 
|  | format.url output | 
|  | new.block | 
|  | format.note output | 
|  | fin.entry | 
|  | } | 
|  |  | 
|  | FUNCTION {mastersthesis} | 
|  | { output.bibitem | 
|  | format.authors "author" output.check | 
|  | format.date "year" output.check | 
|  | date.block | 
|  | format.btitle | 
|  | "title" output.check | 
|  | new.block | 
|  | bbl.mthesis format.thesis.type output.nonnull | 
|  | school "school" bibinfo.warn output | 
|  | address "address" bibinfo.check output | 
|  | format.doi output | 
|  | new.block | 
|  | format.url output | 
|  | new.block | 
|  | format.note output | 
|  | fin.entry | 
|  | } | 
|  |  | 
|  | FUNCTION {misc} | 
|  | { output.bibitem | 
|  | format.authors output | 
|  | format.date output | 
|  | output.state before.all = | 
|  | 'skip$ | 
|  | {date.block} | 
|  | if$ | 
|  | title howpublished new.block.checkb | 
|  | format.title output | 
|  | howpublished new.block.checka | 
|  | howpublished "howpublished" bibinfo.check output | 
|  | format.doi output | 
|  | new.block | 
|  | format.url output | 
|  | new.block | 
|  | format.note output | 
|  | fin.entry | 
|  | empty.misc.check | 
|  | } | 
|  | FUNCTION {phdthesis} | 
|  | { output.bibitem | 
|  | format.authors "author" output.check | 
|  | format.date "year" output.check | 
|  | date.block | 
|  | format.btitle | 
|  | "title" output.check | 
|  | new.block | 
|  | bbl.phdthesis format.thesis.type output.nonnull | 
|  | school "school" bibinfo.warn output | 
|  | address "address" bibinfo.check output | 
|  | format.doi output | 
|  | new.block | 
|  | format.url output | 
|  | new.block | 
|  | format.note output | 
|  | fin.entry | 
|  | } | 
|  |  | 
|  | FUNCTION {proceedings} | 
|  | { output.bibitem | 
|  | editor empty$ | 
|  | { organization "organization" bibinfo.check output | 
|  | } | 
|  | { format.editors output.nonnull } | 
|  | if$ | 
|  | format.date "year" output.check | 
|  | date.block | 
|  | format.btitle "title" output.check | 
|  | editor empty$ | 
|  | { publisher empty$ | 
|  | { new.sentence format.volume.number.series output } | 
|  | { | 
|  | new.sentence | 
|  | format.volume.number.series output | 
|  | format.publisher.address output | 
|  | } | 
|  | if$ | 
|  | } | 
|  | { publisher empty$ | 
|  | { | 
|  | new.sentence | 
|  | format.volume.number.series output | 
|  | format.organization.address output } | 
|  | { | 
|  | new.sentence | 
|  | format.volume.number.series output | 
|  | organization "organization" bibinfo.check output | 
|  | format.publisher.address output | 
|  | } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | format.doi output | 
|  | new.block | 
|  | format.url output | 
|  | new.block | 
|  | format.note output | 
|  | fin.entry | 
|  | } | 
|  |  | 
|  | FUNCTION {techreport} | 
|  | { output.bibitem | 
|  | format.authors "author" output.check | 
|  | format.date "year" output.check | 
|  | date.block | 
|  | format.title | 
|  | "title" output.check | 
|  | new.block | 
|  | format.tr.number output.nonnull | 
|  | institution "institution" bibinfo.warn output | 
|  | address "address" bibinfo.check output | 
|  | format.doi output | 
|  | new.block | 
|  | format.url output | 
|  | new.block | 
|  | format.note output | 
|  | fin.entry | 
|  | } | 
|  |  | 
|  | FUNCTION {unpublished} | 
|  | { output.bibitem | 
|  | format.authors "author" output.check | 
|  | format.date output | 
|  | date.block | 
|  | format.title "title" output.check | 
|  | format.doi output | 
|  | new.block | 
|  | format.url output | 
|  | new.block | 
|  | format.note "note" output.check | 
|  | fin.entry | 
|  | } | 
|  |  | 
|  | FUNCTION {default.type} { misc } | 
|  | READ | 
|  | FUNCTION {sortify} | 
|  | { purify$ | 
|  | "l" change.case$ | 
|  | } | 
|  | INTEGERS { len } | 
|  | FUNCTION {chop.word} | 
|  | { 's := | 
|  | 'len := | 
|  | s #1 len substring$ = | 
|  | { s len #1 + global.max$ substring$ } | 
|  | 's | 
|  | if$ | 
|  | } | 
|  | FUNCTION {sort.format.names} | 
|  | { 's := | 
|  | #1 'nameptr := | 
|  | "" | 
|  | s num.names$ 'numnames := | 
|  | numnames 'namesleft := | 
|  | { namesleft #0 > } | 
|  | { s nameptr | 
|  | "{ll{ }}{  ff{ }}{  jj{ }}" | 
|  | format.name$ 't := | 
|  | nameptr #1 > | 
|  | { | 
|  | "   "  * | 
|  | namesleft #1 = t "others" = and | 
|  | { "zzzzz" * } | 
|  | { t sortify * } | 
|  | if$ | 
|  | } | 
|  | { t sortify * } | 
|  | if$ | 
|  | nameptr #1 + 'nameptr := | 
|  | namesleft #1 - 'namesleft := | 
|  | } | 
|  | while$ | 
|  | } | 
|  |  | 
|  | FUNCTION {sort.format.title} | 
|  | { 't := | 
|  | "A " #2 | 
|  | "An " #3 | 
|  | "The " #4 t chop.word | 
|  | chop.word | 
|  | chop.word | 
|  | sortify | 
|  | #1 global.max$ substring$ | 
|  | } | 
|  | FUNCTION {author.sort} | 
|  | { author empty$ | 
|  | { key empty$ | 
|  | { "to sort, need author or key in " cite$ * warning$ | 
|  | "" | 
|  | } | 
|  | { key sortify } | 
|  | if$ | 
|  | } | 
|  | { author sort.format.names } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {author.editor.sort} | 
|  | { author empty$ | 
|  | { editor empty$ | 
|  | { key empty$ | 
|  | { "to sort, need author, editor, or key in " cite$ * warning$ | 
|  | "" | 
|  | } | 
|  | { key sortify } | 
|  | if$ | 
|  | } | 
|  | { editor sort.format.names } | 
|  | if$ | 
|  | } | 
|  | { author sort.format.names } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {author.organization.sort} | 
|  | { author empty$ | 
|  | { organization empty$ | 
|  | { key empty$ | 
|  | { "to sort, need author, organization, or key in " cite$ * warning$ | 
|  | "" | 
|  | } | 
|  | { key sortify } | 
|  | if$ | 
|  | } | 
|  | { "The " #4 organization chop.word sortify } | 
|  | if$ | 
|  | } | 
|  | { author sort.format.names } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {editor.organization.sort} | 
|  | { editor empty$ | 
|  | { organization empty$ | 
|  | { key empty$ | 
|  | { "to sort, need editor, organization, or key in " cite$ * warning$ | 
|  | "" | 
|  | } | 
|  | { key sortify } | 
|  | if$ | 
|  | } | 
|  | { "The " #4 organization chop.word sortify } | 
|  | if$ | 
|  | } | 
|  | { editor sort.format.names } | 
|  | if$ | 
|  | } | 
|  | FUNCTION {presort} | 
|  | { type$ "book" = | 
|  | type$ "inbook" = | 
|  | or | 
|  | 'author.editor.sort | 
|  | { type$ "proceedings" = | 
|  | 'editor.organization.sort | 
|  | { type$ "manual" = | 
|  | 'author.organization.sort | 
|  | 'author.sort | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | } | 
|  | if$ | 
|  | "    " | 
|  | * | 
|  | year field.or.null sortify | 
|  | * | 
|  | "    " | 
|  | * | 
|  | title field.or.null | 
|  | sort.format.title | 
|  | * | 
|  | #1 entry.max$ substring$ | 
|  | 'sort.key$ := | 
|  | } | 
|  | ITERATE {presort} | 
|  | SORT | 
|  | STRINGS { longest.label } | 
|  | INTEGERS { number.label longest.label.width } | 
|  | FUNCTION {initialize.longest.label} | 
|  | { "" 'longest.label := | 
|  | #1 'number.label := | 
|  | #0 'longest.label.width := | 
|  | } | 
|  | FUNCTION {longest.label.pass} | 
|  | { number.label int.to.str$ 'label := | 
|  | number.label #1 + 'number.label := | 
|  | label width$ longest.label.width > | 
|  | { label 'longest.label := | 
|  | label width$ 'longest.label.width := | 
|  | } | 
|  | 'skip$ | 
|  | if$ | 
|  | } | 
|  | EXECUTE {initialize.longest.label} | 
|  | ITERATE {longest.label.pass} | 
|  | FUNCTION {begin.bib} | 
|  | { preamble$ empty$ | 
|  | 'skip$ | 
|  | { preamble$ write$ newline$ } | 
|  | if$ | 
|  | "\begin{thebibliography}{"  longest.label  * "}" * | 
|  | write$ newline$ | 
|  | "\providecommand{\bibitemdeclare}[2]{}" | 
|  | write$ newline$ | 
|  | "\providecommand{\urlprefix}{Available at }" | 
|  | write$ newline$ | 
|  | "\providecommand{\url}[1]{\texttt{#1}}" | 
|  | write$ newline$ | 
|  | "\providecommand{\href}[2]{\texttt{#2}}" | 
|  | write$ newline$ | 
|  | "\providecommand{\urlalt}[2]{\href{#1}{#2}}" | 
|  | write$ newline$ | 
|  | "\providecommand{\doi}[1]{doi:\urlalt{http://dx.doi.org/#1}{#1}}" | 
|  | write$ newline$ | 
|  | "\providecommand{\bibinfo}[2]{#2}" | 
|  | write$ newline$ | 
|  | } | 
|  | EXECUTE {begin.bib} | 
|  | EXECUTE {init.state.consts} | 
|  | ITERATE {call.type$} | 
|  | FUNCTION {end.bib} | 
|  | { newline$ | 
|  | "\end{thebibliography}" write$ newline$ | 
|  | } | 
|  | EXECUTE {end.bib} | 
|  | %% End of customized bst file | 
|  | %% | 
|  | %% End of file `eptcs.bst'. |