1texmath (0.12.3.1)
2
3  * MathML reader: don't allow mfenced attributes to inherit (#177).
4    When open and close attributes aren't given on an mfenced,
5    we should use defaults rather than inheriting these from a
6    parent mfenced.
7
8texmath (0.12.3)
9
10  * TeX reader: implement logic to convert a Bin symbol to
11    an Op to Op when it occurs at the beginning of a group,
12    or after an Open, Pun, or Op symbol. This will give much
13    better results for unary `-` (#176).
14
15  * OMML writer: fixed rendering of EDelimited (#173).
16    We now properly render "middles" (separators).
17
18texmath (0.12.2)
19
20  * MathML input: support mmultiscripts element (#158, #100).
21
22  * Make MathML tag/attr recognition case-insensitive (#158).
23
24  * Pandoc writer: better handling of styling such as `\mathrm` (#145).
25    Previously identifiers were always italic, no matter what
26    styling was applied.
27
28  * Ignore `\tag` in TeX input (#162).
29
30  * TeX writer: avoid unneeded `\left` and `\right` for delimited.
31    We don't need `\left` and `\right` when the contents are
32    "standard height."
33
34  * TeX reader: parse implicit EDelimited sections (#172).
35    We now parse `(x)` as EDelimited, even though `\right` and `\left`
36    are not used.
37
38texmath (0.12.1.1)
39
40  * Fix compilation with GHC-9.0.1 (#169, Simon Jakobi).
41    Background:
42    https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.0#simplified-subsumption
43  * Add eqn to online demo.
44  * Improve error messages for unknown control sequences, and restructure
45    tex parser to be more efficient (#167).
46
47texmath (0.12.1)
48
49  * OMML writer: explicitly mark symbols as non-italic (#109).
50    Otherwise, for some reason, they appear as italic by default.
51  * Improve error messages in reading tex arrays.
52  * Improve support for `\bmod`, `\mod`, etc. (#165).
53    Allow them to take complex arguments like `\left( 1 \right)`.
54  * Improve support for `\genfrac` (#164).
55  * Ignore `\textstyle`, `\scriptstyle`, `\scriptscriptstyle`,
56    as we currently ignore `\displaystyle`.
57  * Parse siunitx commands in reading tex (#157).
58  * Improve handling of `\not` in reading tex (#161).
59    Previously we only handled `\not` in front of certain symbols.
60  * Support `\pod` and `\pmod` and clean up spacing and font for
61    `\mod` and `\bmod` (#160).
62
63texmath (0.12.0.3)
64
65  * Allow pandoc-types 1.22.
66
67texmath (0.12.0.2)
68
69  * Allow pandoc-types 1.21.
70  * Pandoc output: omit empty Emph for sub/superscript without base (#155).
71  * tex writer: Use `\overline{\overline{B}}` instead of unicode
72    double line accent (#153).
73
74texmath (0.12.0.1)
75
76  * OMML writer: Fix overline and accent rendering (#152).
77  * OMML reader: Fix dropped arrows (#153). Add tests.
78
79texmath (0.12)
80
81  * Use Text instead of String in data types and functions
82    (Christian Despres) [API change].  Note that there are still a few
83    places where we unpack Text to String with a view pattern:
84    performance could likely be increased with further rewriting.
85  * Avoid use of !! with negative index (jgm/pandoc#5853).
86
87texmath (0.11.3)
88
89  * Use error instead of fail to allow building with ghc 8.8.
90  * Test output: remove superfluous spaces after control sequences,
91    superfluous groups, and unicode VARIATION SELECTOR 1.
92  * renderTeX: add space between control sequence and any non-ASCII
93    character.  There are differences in behavior of isAlphaNum between
94    different ghc versions that would affect test output otherwise.
95  * charToLaTeXString: Ignore 65024 VARIATION SELECTOR 1 to avoid putting
96    it literally in the output ; it is used in mathml output and occurs
97    in many of the test cases.
98  * Add cabal.project.
99  * Use actions rather than travis for CI.
100
101texmath (0.11.2.3)
102
103  * OMML reader: properly distinguish normal text from math (#136).
104    If `m:nor` or `m:lit` is set in `m:rPr`, we interpret the
105    contents as literal text and not as math.
106  * TeX reader: use different symbol (`_`) for `\underline` (#142).
107    This gets the right accent properties on MathML output, so
108    that the underline is not lower than it should be.
109  * TeX reader: Treat `\bmod` as a relational symbol rather than
110    an operator (#143).  This fixes spacing problems in several
111    output formats.
112
113texmath (0.11.2.2)
114
115  * OMML writer: use m:nor for normal text (#135).
116
117texmath (0.11.2.1)
118
119  * OMML reader: Don't collapse `fName` to a string (#133).
120    This fixes cases where fName has some complexity, e.g.
121    a subscript or limit.
122
123texmath (0.11.2)
124
125  * Improved handling of \mathop etc (#126).  We now allow operators like
126    `arg\,min`, converting the space into unicode.
127  * Support \hspace (#126).
128  * Support \hdots as synonym of \ldots (#126).
129  * Support \mathds (#126).
130  * In parsing array, ignore `|` in column specs (#127).
131    We have no way to represent this in EArray, currently.
132    Ignoring them seems better than failing altogether.
133
134texmath (0.11.1.2)
135
136  * Eqn writer: properly escape `{` and `}`.
137  * Set more accurate bounds (Herbert Valerio Riedel).
138
139texmath (0.11.1.1)
140
141  * Fix building with ghc-8.6.1 by removing need for now missing
142    MonadFail instances (Jonas Scholl).
143  * TeX reader: Allow operators like `/` to be scaled (#120).
144  * TeX reader: Improved efficiency of basicEnclosure.
145  * TeX reader: Handle `\bmod` (#115).
146
147texmath (0.11.1)
148
149  * OMML writer: Use m:acc for accents in OMML (#119).  This fixes
150    some spacing issues for e.g. the translation of `\dot{m}`.
151
152texmath (0.11.0.1)
153
154  * OMML writer: use zero-width space to avoid dashed box (#118).
155    In Word, a dashed box shows up for empty text runs in
156    exponents and bases, or empty exponents and bases.  So
157    we use a zero-width space in these contexts.
158
159texmath (0.11)
160
161  * Changed treatment of non-ASCII characters.
162    Previously we ensured that the output of conversion to tex
163    was pure ASCII.  This meant rendering "ä" as "a", for
164    example, and it meant that many characters (e.g. Chinese)
165    simply got replaced with an empty string, while others
166    got replaced with "[?]".
167
168    This was not a particularly helpful behavior.  Including
169    the unicode characters verbatim doesn't interfere with
170    latex compilation.  They often won't show up in the generated
171    math, but that is no worse than what happened before.
172
173    This change passes through unicode characters unchanged
174    when they can't be converted to standard LaTeX commands.
175
176    An important reason for including the unicode characters
177    is that pandoc uses TeX to represent math in its AST.
178    So, for example, if you convert HTML with mathml to docx,
179    you'll currently lose all Chinese characters, since they'll
180    disappear in the TeX intermediary, even though a direct
181    mathml to ooml conversion would have passed them through.
182    With this change, these conversions will work better
183    (see jgm/pandoc#4642).
184
185    + Removed Text.TeXMath.Unicode.ToASCII (API change).
186    + Removed cbits that were needed for that module.
187    + Modified Tex.TeXMath.Unicode.ToTeX to pass through
188      unicode characters that can't be converted, rather
189      than trying to asciify them or remove them.
190
191  * Render degree symbol in tex as `{^\circ}`.
192
193texmath (0.10.1.2)
194
195  * eqn writer:  use uppercase letters in unicode escapes (jgm/pandoc#4597).
196
197texmath (0.10.1.1)
198
199  * Handle multicharacter operators better in Eqn, TeX, OMML (#109).
200
201  * OMML reader: unwrap `<w:...>` tags immediately under `<m:oMath>`
202    (#111, Jesse Rosenthal).
203
204texmath (0.10.1)
205
206  * Expose Text.TeXMath.TeX (TeX rendering functions) (#108).
207    This is needed in order to use getTeXMath from Text.TeXMath.Unicode.ToTeX.
208  * Pandoc writer: don't insert punctuation space before explicit space
209    (#107).  E.g. in `2,\!4`.
210  * Fix end-line command ('\\') in AMSmath environments (ARATA Mizuki).
211    The end-line command in AMSmath environments does not allow spaces
212    before its optional argument.
213  * Use `\in` for SMALL ELEMENT OF in "base" (Vaclav Haisman).
214
215texmath (0.10)
216
217  * Use `\ni` in base for U+220D (#103).
218  * Improved unicode -> tex symbol lookup.  Previously we had many
219    cases where the lookup table would map a unicode character to
220    the empty string for the base package, and this would print finding
221    a good match in another package in the environment.
222  * Added support for `\symbf` (#101).
223  * Revert "migrating the lookup structures for Unicode/ToTex.hs to
224    use C source files to accelerate builds."  This change gave us somewhat
225    faster builds (using less memory), but at a huge cost of
226    maintainability.
227  * Removed AlignDefault from Alignment (API change, #102).
228    AlignDefault doesn't make sense for a converter between
229    formats that may have different defaults.  We now properly treat
230    centering as the default in MathML and OMML input.
231
232texmath (0.9.4.4)
233
234  * Update tests that should have been updated for 0.9.4.3.
235
236texmath (0.9.4.3)
237
238  * MathML writer: put linethickness attribute directly on mfrac
239    element. This fixes binomial rendering.
240
241texmath (0.9.4.2)
242
243  * Pandoc writer: better handle accented characters (jgm/pandoc#3922).
244
245texmath (0.9.4.1)
246
247  * Improved handling of accents and upper/lower delimiters (#98).
248  * cgi: use cloudflare cdn for mathjax.
249
250texmath (0.9.4)
251
252  * Added writer for GNU eqn format (used with *roff).
253
254    + New module Text.TeXMath.Writers.Eqn, exporting writeEqn.
255    + Moved handleDownup to Shared.
256    + Add eqn output option in texmath executable.
257    + Add eqn writer tests.
258
259texmath (0.9.3)
260
261  * Expose pMacroDefinition in Text.TeXMath.Readers.TeX.Macros,
262    with generalized type.
263
264texmath (0.9.2)
265
266  * Support `\newenvironment` and `\renewenvironment`.
267
268texmath (0.9.1.1)
269
270  * Added program to generate cbits/{key,val}ToASCII.c from a data file.
271  * Migrate lookup structures for Unicode/ToTex.hs to use C
272    source files to accelerate builds (Carter Tazio Schonwald).
273  * Allow \boldsymbol + a token without braces.
274    And same for other styling commands. Closes #94.
275  * Better ghc-prof-options.
276
277texmath (0.9.1)
278
279  * Pandoc writer:  add thin space after math operators.
280  * TeX reader: improve parsing of `\mathop` to allow
281    multi-character operator names.
282  * Minor optimizations.
283  * Added Ord instances to Exp and associated types.
284
285texmath (0.9)
286
287  * OMML writer: Properly handle nary inside delimiters (#92).
288    Previously under-overs inside delimiters didn't get
289    converted to nary the way they did outside of delimiters.
290  * TeX reader: Support bm, mathbold, pmd.
291  * OMML reader: Handle w:sym (#65).
292  * New module, Text.TeXMath.Unicode.Fonts, for MS font code point
293    lookup.  Copied from pandoc Text.Pandoc.Readers.Docx.Fonts,
294    which will be changed to import this.  [API change]
295  * Fixed typo in test program for round-trip tests.
296  * Parse math inside text constructions (#62).  E.g.
297    `\text{if $y$ is greater than $0$}` Text and math can nest indefinitely.
298  * Modify test suite so tests can be marked as "ought to raise error."
299    So far this is only used in mml.  If the test is called foo
300    and `readers/mml/foo.error` exists, then the test is expected
301    to raise a parse error.
302  * MathML reader err: Don't print colon after line number.
303  * Restore proper error handling to MathML reader.  Note that the tests
304    need to be redone, since they assumed the old behavior of just
305    returning empty elements on parse errors.
306
307texmath (0.8.6.7)
308
309  * TeX reader: treat backslash + newline as like backslash + space.
310    Previously this case gave an error.  See jgm/pandoc#3189.
311
312texmath (0.8.6.6)
313
314  * Allow pandoc-types 1.17.*.
315
316texmath (0.8.6.5)
317
318  * Fixed transposition of sub/super on operators (jgm/pandoc#3040).
319
320texmath (0.8.6.4)
321
322  * Support 'equation' environment, without the numbering of course.
323
324texmath (0.8.6.3)
325
326  * Use POST instead of GET for texmath-cgi.
327
328texmath (0.8.6.2)
329
330  * Fixed array alignment issues (jgm/pandoc#2864, jgm/pandoc#2310).
331  * Use 1 and 0 for _Hide attributes, rather than on and off.
332    Officially it seems that either 1/0 or true/false are wanted.
333  * Fixed EUnderOver for omml output.  Previously both the under and
334    the over part were being placed under (jgm/pandoc#2775).
335
336texmath (0.8.6.1)
337
338  * OMML writer:  Fixed rendering of roots, so that the degree appears
339    in the right place.
340  * OMML writer:  Don't include empty rPr elements.
341
342texmath (0.8.6)
343
344  * TeX reader: Support hundreds more math symbols (all of those defined in
345    Text.TeXMath.Unicode.ToTeX), including `\nwarrow`, `\swarrow`,
346    `\nearrow`, `\searrow` (#90).
347
348texmath (0.8.5.1)
349
350  * OMML writer: Fixed order of elements in nary formulas to conform
351    to OMML spec (#88, Niko Weh).  `<e>` must follow the `<sup>` and `<sub>`
352    parts of `<nary>`. This fixes rendering issues in LibreOffice
353    (though Word copes with the incorrect order).
354  * Added Paths_texmath to Other-Modules for texmath executable.
355
356texmath (0.8.5)
357
358  * TeX parser: Support limited styling inside \DeclareMathOperator (#85).
359  * TeX reader: Correctly parse \mbox.  Its argument is text mode.
360  * Updated mathml tests to use mo for operators.
361  * TeX reader: support mathopen, mathclose, mathpunct.
362  * MathML writer: render EMathOperator as mo, not mi (#86).
363  * MathML: handle leading space in EText (#87).
364  * Take --version in executable from cabal metadata.
365  * Added Paths_texmath to other-modules.
366
367texmath (0.8.4.2)
368
369  * Fixed overbrace, underbrace (#82).  Previously we were using the wrong
370    character: U+FE37 instead of U+23DE.  This didn't work in Word.
371  * Support \mathop, \mathrel, \mathbin, \mathord
372  * MathML - render Symbol Ord as mi, not mo (#83).
373  * Handle align environments with > 2 cells per row (#84).
374
375texmath (0.8.4.1)
376
377  * Added stack install instructions.
378  * Fixed bold-italic in OMML (#76).  Previously `\mathbfit` didn't work
379    properly in OMML output.
380  * Ignore `\nonumber` (#79).
381  * Allow styling in `\operatorname` e.g. `\operatorname{\mathcal{L}}` (#80).
382  * Fixed bug in `supHide` and `subHide` for OMML.  This  led to little
383    empty boxes being displayed in integrals with subscripts but no
384    superscripts.  See jgm/pandoc#2571.
385  * Implemented `\mod` as a math operator (#81).  This doesn't capture all the
386    spacing subtleties of the amsmath version, but should be good enough
387    for most purposes.
388  * Allow pandoc-types < 1.17.
389
390texmath (0.8.4)
391
392  * Improved symbol spacing in Pandoc output (jgm/pandoc#2261).
393    This change avoids putting space around binary symbols that
394    come at the beginning or end of a group, or appear on their
395    own.  It also avoids spacing on a binary symbol that follows
396    a Bin, Op, Rel, Open, or Punct atom, in accord with
397    TeXBook Appendix G.  We could go farther towards exactly
398    matching the TeXBook rules, but this simple change goes some of
399    the way.
400  * Added stack.yaml.
401
402texmath (0.8.3)
403
404  * Parse uppercase Greek letters as EIdentifier, not ESymbol Op.
405    This fixes handling of things like `$Lambda^1$`, particularly in omml.
406
407texmath (0.8.2.2)
408
409  * Handle `.` after number with no following digits.
410
411texmath (0.8.2.1)
412
413  * Handle bare hyphen in `\text{...}`.  Closes jgm/pandoc#2274.
414  * Support `\ltimes` and `\rtimes` in the TeX reader (Arata Mizuki).
415  * Slightly more efficient number parser.
416
417texmath (0.8.2)
418
419  * Better handling of decimal points. Decimal points are now parsed
420    as parts of numbers, not as separate symbols.  E.g. in MathML they
421    now appear in `<mn>` elements.  Closes #74.
422
423texmath (0.8.1)
424
425  * OMML: Don't force everything into Roman font by default.
426    This change ensures that variables will be italic by
427    default in Word.  See jgm/pandoc#2075.
428
429texmath (0.8.0.2)
430
431  * Fixed typo in `defaultEnv` to include `amssymb` (#68).
432  * Moved some lookup tables to C, and disabled aggressive
433    profiling defaults, to avoid excessive memory usage in
434    compiling with clang (#70).
435  * Support `\newcommand*` in `parseMacroDefinition` (jgm/pandoc#2005).
436  * Fixed order bug for over/under in OMML reader (#66).
437  * Support `\boldsymbol` (#67).
438
439texmath (0.8.0.1)
440
441  * Added network-uri flag. This addresses the split of network
442    and network-uri packages.
443  * OMML reader: change default accent (Jesse Rosenthal).
444    The default had previously been set as accute (possibly as a
445    placeholder). It appears to be circumflex/hat instead.
446
447texmath (0.8)
448
449  * Added OMML reader (Jesse Rosenthal).
450  * Support latex \substack (#57).
451  * Added EBoxed and implemented in readers and writers (#58).
452  * Handle latex \genfrac.  Use \genfrac for \brace, \brack,
453    etc. when amsmath is available.
454  * Improvements in handling of space characters.
455  * Use ESpace rather than EText when a mathml mtext just contains
456    a space.
457  * Use \mspace when needed to get latex spaces with odd sizes, rather
458    than finding the closest simple command.
459  * Use Rational instead of Double in ESpaced, EScaled.
460  * Shared: Export getSpaceWidth, getSpaceChars.
461  * Shared: Export fixTree, isEmpty, empty (formerly in MathML reader).
462
463texmath (0.7.0.2)
464
465  * TeX reader:  further improvements in error reporting.
466    Instead of reporting line and column, a snippet is printed
467    with a caret indicating the position of the error.  Also
468    fixed bad position information when control sequences are
469    followed by a letter.
470
471texmath (0.7.0.1)
472
473  * TeX reader:
474
475    + Improved error reporting.
476    + Optimized parser.
477    + Treat `\ ` as ESpaced rather than ESymbol.
478    + Internal improvements, including using the parsec3 interface
479      instead of the older parsec2 compatibility interface.
480
481  * Added tests for phantom.
482
483texmath (0.7)
484
485  * Changes in Exp type:
486
487    + Removed EUp, EDown, EDownup, EUnary, EBinary.
488    + Added EFraction (and FractionType), ESqrt, Eroot, EPhantom.
489    + Added boolean "convertible" parameter to EUnder, EOver, EUnderover.
490    + Changed parameter of EScaled from String to Double.
491    + Changed parameter of ESpace from String to Double.
492    + Removed EStretchy.
493    + Added EStyled, corresponding to mstyle in mathml, and \mathrm,
494      \mathcal, etc. in TeX (which can contain arbitrary math content,
495      not just text).
496    + Changed the type of EDelimited.  The contents of an EDelimited are
497      now either Right Exp or Left String (the latter case represents a
498      fence in middle position, e.g. \mid| in LaTeX).
499
500  * Module reorganisation:  the exposed interface has been completely
501    changed, and modules for reading MathML and writing TeX math
502    have been added:
503
504    + All writers now reside in Text.TeXMath.Writers.
505        - Text.TeXMath.MathML -> Text.TeXMath.Writers.MathML.
506          toMathML and showExp are removed, writeMathML added.
507        - Text.TeXMath.OMML -> Text.TeXMath.Writers.OMML.
508          toOMML and showExp removed, writeOMML added.
509        - Text.TeXMath.Pandoc -> Text.TeXMath.Writers.Pandoc.
510          toPandoc removed, writePandoc added.
511        - New module Text.TeXMath.Writers.TeX, exporting writeTeX,
512          writeTeXWith, addLaTeXEnvironment (the latter giving control
513          over which packages are assumed to be available).
514
515    + All readers now reside in Text.TeXMath.Readers.
516        - Text.TeXMath.MathMLParser -> Text.TeXMath.Readers.MathML,
517	  exporting readMathML.
518        - Text.TeXMath.Readers.TeX nows exports readTeX rather than
519          parseFormula.
520
521    + New modules for unicode conversion: Text.TeXMath.Unicode.ToASCII,
522      Text.TeXMath.Unicode.ToTeX, Text.TeXMath.Unicode.ToUnicode.
523
524    + Two MathML specific modules: Text.TeXMath.Readers.MathML.EntityMap,
525      Text.TeXMath.Readers.MathML.MMLDict.
526
527    + In Text.TeXMath, all the XtoY functions have been removed
528      in favour of rexporting raw reader and writer functions. The
529      data type Exp is now also exported.
530
531  * Bug fixes and improvements.
532
533    + TeX writer: Properly handle accents inside \text{}.
534      Use real text environments for EText (\textrm, not \mathrm).
535      Improved handling of scalers (\Big etc.).  Use amsmath matrix
536      environments when appropriate.  Fixed \varepsilon.
537    + MathML writer:  Omit superfluous outer mrows.  Add position
538      information to fences.
539    + OMML writer:  Handle \phantom.
540    + Pandoc writer:  Use unicode characters to support Fraktur and
541      other text styles.
542    + TeX reader:  Use EUnder/Over for \stackrel, \overset, \underset.
543      Improved handling of primes.  Fixed \notin.  Avoid superfluous
544      grouping of single elements.  Improved handling of scalers (\Big etc.).
545      Handle \choose, \brace, \brack, \bangle (#21).
546    + Macros:  Don't raise an error if applying a macro fails to
547      resolve to a fixed point; instead, just return the original string.
548
549  * Rewrote test suite as a proper cabal test suite.  Added
550    --regenerate-tests and --round-trip options.
551
552  * Updated texmath online demo for bidirectional conversion.
553
554  * Removed cgi and test flags.  Added executable flag to build texmath.
555
556  * Modified texmath so it works like a cgi script when run as
557    texmath-cgi (through symlink or renaming).  Removed dependency on
558    the cgi package.
559
560texmath (0.6.7)
561
562  * New Module: Text.TeXMath.Unidecode, a module for approximating
563    unicode characters in ASCII.
564  * New Module: Text.TeXMath.Shared, a module for shared lookup
565    tables between the various readers and writers
566  * New Module: Text.TeXMath.MathMLParser, exporting readMathML.
567  * New Module: Text.TeXMath.EntityMap, exporting getUnicode,
568    a conversion table from MathML entities to unicode characters.
569  * New Module: Text.TeXMath.UnicodeToLaTeX, exporting getLaTeX,
570    converting a string of unicode characters to a string of equivalent LaTeX
571    commands.
572  * New Module: Text.TeXMath.LaTeX, replacing Text.TeXMath.Parser,
573    exporting toTeXMath.
574  * New Module: Text.TeXMath.MMLDict, implements a lookup table from
575    operators to their default values as defined by the MML dictionary,
576    exporting getOperator.
577  * New Module: Text.TeXMath.Compat, maintaining compatibility with
578    mtl < 2.2.1.
579  * Modified Text.TeXMath to export the primitive readers, as well as
580    mathMLTo{Writer} for all writers
581  * Modified: Text.TeXMath.Types: added additional record types for
582    Text.TeXMath.MMLDict and Text.TeXMath.UnicodeToLaTeX.
583    New Exports: Operator(..), Record(..).
584  * Modified test suite:  use cabal test, added significant number of tests.
585  * Added recognition of the LaTeX command \phantom
586
587texmath (0.6.6.3)
588
589  * Use combining tilde accent for \tilde.  Closes pandoc #1324.
590
591texmath (0.6.6.2)
592
593  * Allow \left to be used with ), ], etc.  Ditto with \right.
594    Previously only (, [, etc. were allowed with \left.  Closes pandoc #1319.
595
596texmath (0.6.6.1)
597
598  * Support \multline (previously it was mispelled "multiline")
599  * Changed data-files to extra-source-files.
600
601texmath (0.6.6)
602
603  * Insert braces around macro expansions to prevent breakage (#7).
604  * Support \operatorname and \DeclareMathOperator (rekka) (#17).
605  * Support \providecommand (#15).
606  * Fixed spacing bugs in pandoc rendering (#24).
607  * Ignore \hline at end of array row instead of failing (#19).
608
609