1<!-- 2 * t 3 **************************************************************************** 4 * Copyright 2019-2023,2024 Thomas E. Dickey * 5 * Copyright 2001-2015,2017 Free Software Foundation, Inc. * 6 * * 7 * Permission is hereby granted, free of charge, to any person obtaining a * 8 * copy of this software and associated documentation files (the * 9 * "Software"), to deal in the Software without restriction, including * 10 * without limitation the rights to use, copy, modify, merge, publish, * 11 * distribute, distribute with modifications, sublicense, and/or sell * 12 * copies of the Software, and to permit persons to whom the Software is * 13 * furnished to do so, subject to the following conditions: * 14 * * 15 * The above copyright notice and this permission notice shall be included * 16 * in all copies or substantial portions of the Software. * 17 * * 18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * 19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * 20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * 21 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * 22 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * 23 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * 24 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * 25 * * 26 * Except as contained in this notice, the name(s) of the above copyright * 27 * holders shall not be used in advertising or otherwise to promote the * 28 * sale, use or other dealings in this Software without prior written * 29 * authorization. * 30 **************************************************************************** 31 * @Id: curs_add_wch.3x,v 1.62 2024/04/20 21:20:07 tom Exp @ 32--> 33<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 34<HTML> 35<HEAD> 36<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> 37<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> 38<TITLE>curs_add_wch 3x 2024-04-20 ncurses 6.5 Library calls</TITLE> 39<link rel="author" href="mailto:bug-ncurses@gnu.org"> 40 41</HEAD> 42<BODY> 43<H1 class="no-header">curs_add_wch 3x 2024-04-20 ncurses 6.5 Library calls</H1> 44<PRE> 45<STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> Library calls <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> 46 47 48 49 50</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> 51 <STRONG>add_wch</STRONG>, <STRONG>wadd_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, <STRONG>mvwadd_wch</STRONG>, <STRONG>echo_wchar</STRONG>, <STRONG>wecho_wchar</STRONG> - add 52 a <EM>curses</EM> complex character to a window and advance the cursor 53 54 55</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> 56 <STRONG>#include</STRONG> <STRONG><curses.h></STRONG> 57 58 <STRONG>int</STRONG> <STRONG>add_wch(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> 59 <STRONG>int</STRONG> <STRONG>wadd_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> 60 <STRONG>int</STRONG> <STRONG>mvadd_wch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> 61 <STRONG>int</STRONG> <STRONG>mvwadd_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> 62 63 <STRONG>int</STRONG> <STRONG>echo_wchar(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> 64 <STRONG>int</STRONG> <STRONG>wecho_wchar(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> 65 66 67</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> 68 69</PRE><H3><a name="h3-add_wch">add_wch</a></H3><PRE> 70 The <STRONG>add_wch</STRONG>, <STRONG>wadd_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, and <STRONG>mvwadd_wch</STRONG> functions put the 71 complex character <EM>wch</EM> into the given window at its current position, 72 which is then advanced. These functions perform wrapping and special- 73 character processing as follows: 74 75 <STRONG>o</STRONG> If <EM>wch</EM> refers to a spacing character, then any previous character 76 at that location is removed. A new character specified by <EM>wch</EM> is 77 placed at that location with rendition specified by <EM>wch</EM>. The 78 cursor then advances after this spacing character, to prepare for 79 writing the next character on the screen. 80 81 The newly added spacing character is the base of the active complex 82 character. Subsequent non-spacing characters can be combined with 83 this base until another spacing character is written to the screen, 84 or the cursor is moved, e.g., using <STRONG>wmove</STRONG>. 85 86 <STRONG>o</STRONG> If <EM>wch</EM> refers to a non-spacing character, it is appended to the 87 active complex character, retaining the previous characters at that 88 location. The rendition specified by <EM>wch</EM> is ignored. 89 90 The cursor is not advanced after adding a non-spacing character. 91 Subsequent calls to add non-spacing characters will update the same 92 position. 93 94 <STRONG>o</STRONG> If the character part of <EM>wch</EM> is a tab, newline, backspace or other 95 control character, the window is updated and the cursor moves as if 96 <STRONG>addch</STRONG> were called. 97 98 99</PRE><H3><a name="h3-echo_wchar">echo_wchar</a></H3><PRE> 100 The <STRONG>echo_wchar</STRONG> function is functionally equivalent to a call to <STRONG>add_wch</STRONG> 101 followed by a call to <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>. Similarly, the <STRONG>wecho_wchar</STRONG> is 102 functionally equivalent to a call to <STRONG>wadd_wch</STRONG> followed by a call to 103 <STRONG>wrefresh</STRONG>. The knowledge that only a single character is being output 104 is taken into consideration and, for non-control characters, a 105 considerable performance gain might be seen by using the *<STRONG>echo</STRONG>* 106 functions instead of their equivalents. 107 108 109</PRE><H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE> 110 Like <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>, <STRONG>addch_wch</STRONG> accepts symbols which make it simple to draw 111 lines and other frequently used special characters. These symbols 112 correspond to the same VT100 line-drawing set as <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>. 113 114 <STRONG>Unicode</STRONG> <STRONG>ASCII</STRONG> <STRONG>acsc</STRONG> 115 116 117 <STRONG>ACS</STRONG> <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Default</STRONG> <STRONG>Char</STRONG> <STRONG>Glyph</STRONG> <STRONG>Name</STRONG> 118 ------------------------------------------------------------------------ 119 <STRONG>WACS_BLOCK</STRONG> 0x25ae # 0 solid square block 120 <STRONG>WACS_BOARD</STRONG> 0x2592 # h board of squares 121 <STRONG>WACS_BTEE</STRONG> 0x2534 + v bottom tee 122 <STRONG>WACS_BULLET</STRONG> 0x00b7 o ~ bullet 123 <STRONG>WACS_CKBOARD</STRONG> 0x2592 : a checker board (stipple) 124 <STRONG>WACS_DARROW</STRONG> 0x2193 v . arrow pointing down 125 <STRONG>WACS_DEGREE</STRONG> 0x00b0 ' f degree symbol 126 <STRONG>WACS_DIAMOND</STRONG> 0x25c6 + ` diamond 127 <STRONG>WACS_GEQUAL</STRONG> 0x2265 > > greater-than-or-equal-to 128 <STRONG>WACS_HLINE</STRONG> 0x2500 - q horizontal line 129 <STRONG>WACS_LANTERN</STRONG> 0x2603 # i lantern symbol 130 <STRONG>WACS_LARROW</STRONG> 0x2190 < , arrow pointing left 131 <STRONG>WACS_LEQUAL</STRONG> 0x2264 < y less-than-or-equal-to 132 <STRONG>WACS_LLCORNER</STRONG> 0x2514 + m lower left-hand corner 133 <STRONG>WACS_LRCORNER</STRONG> 0x2518 + j lower right-hand corner 134 <STRONG>WACS_LTEE</STRONG> 0x2524 + t left tee 135 <STRONG>WACS_NEQUAL</STRONG> 0x2260 ! | not-equal 136 <STRONG>WACS_PI</STRONG> 0x03c0 * { greek pi 137 <STRONG>WACS_PLMINUS</STRONG> 0x00b1 # g plus/minus 138 <STRONG>WACS_PLUS</STRONG> 0x253c + n plus 139 <STRONG>WACS_RARROW</STRONG> 0x2192 > + arrow pointing right 140 <STRONG>WACS_RTEE</STRONG> 0x251c + u right tee 141 <STRONG>WACS_S1</STRONG> 0x23ba - o scan line 1 142 <STRONG>WACS_S3</STRONG> 0x23bb - p scan line 3 143 <STRONG>WACS_S7</STRONG> 0x23bc - r scan line 7 144 <STRONG>WACS_S9</STRONG> 0x23bd _ s scan line 9 145 <STRONG>WACS_STERLING</STRONG> 0x00a3 f } pound-sterling symbol 146 <STRONG>WACS_TTEE</STRONG> 0x252c + w top tee 147 <STRONG>WACS_UARROW</STRONG> 0x2191 ^ - arrow pointing up 148 <STRONG>WACS_ULCORNER</STRONG> 0x250c + l upper left-hand corner 149 <STRONG>WACS_URCORNER</STRONG> 0x2510 + k upper right-hand corner 150 <STRONG>WACS_VLINE</STRONG> 0x2502 | x vertical line 151 152 The wide-character configuration of <EM>ncurses</EM> also defines symbols for 153 thick lines (<STRONG>acsc</STRONG> "J" to "V"): 154 155 <STRONG>Unicode</STRONG> <STRONG>ASCII</STRONG> <STRONG>acsc</STRONG> 156 <STRONG>ACS</STRONG> <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Default</STRONG> <STRONG>Char</STRONG> <STRONG>Glyph</STRONG> <STRONG>Name</STRONG> 157 ------------------------------------------------------------------------ 158 <STRONG>WACS_T_BTEE</STRONG> 0x253b + V thick tee pointing up 159 <STRONG>WACS_T_HLINE</STRONG> 0x2501 - Q thick horizontal line 160 <STRONG>WACS_T_LLCORNER</STRONG> 0x2517 + M thick lower left corner 161 <STRONG>WACS_T_LRCORNER</STRONG> 0x251b + J thick lower right corner 162 <STRONG>WACS_T_LTEE</STRONG> 0x252b + T thick tee pointing right 163 <STRONG>WACS_T_PLUS</STRONG> 0x254b + N thick large plus 164 <STRONG>WACS_T_RTEE</STRONG> 0x2523 + U thick tee pointing left 165 <STRONG>WACS_T_TTEE</STRONG> 0x2533 + W thick tee pointing down 166 <STRONG>WACS_T_ULCORNER</STRONG> 0x250f + L thick upper left corner 167 <STRONG>WACS_T_URCORNER</STRONG> 0x2513 + K thick upper right corner 168 <STRONG>WACS_T_VLINE</STRONG> 0x2503 | X thick vertical line 169 170 and for double-lines (<STRONG>acsc</STRONG> "A" to "I"): 171 172 <STRONG>Unicode</STRONG> <STRONG>ASCII</STRONG> <STRONG>acsc</STRONG> 173 <STRONG>ACS</STRONG> <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Default</STRONG> <STRONG>Char</STRONG> <STRONG>Glyph</STRONG> <STRONG>Name</STRONG> 174 ------------------------------------------------------------------------ 175 <STRONG>WACS_D_BTEE</STRONG> 0x2569 + H double tee pointing up 176 <STRONG>WACS_D_HLINE</STRONG> 0x2550 - R double horizontal line 177 <STRONG>WACS_D_LLCORNER</STRONG> 0x255a + D double lower left corner 178 <STRONG>WACS_D_LRCORNER</STRONG> 0x255d + A double lower right corner 179 <STRONG>WACS_D_LTEE</STRONG> 0x2560 + F double tee pointing right 180 <STRONG>WACS_D_PLUS</STRONG> 0x256c + E double large plus 181 <STRONG>WACS_D_RTEE</STRONG> 0x2563 + G double tee pointing left 182 183 <STRONG>WACS_D_TTEE</STRONG> 0x2566 + I double tee pointing down 184 <STRONG>WACS_D_ULCORNER</STRONG> 0x2554 + C double upper left corner 185 <STRONG>WACS_D_URCORNER</STRONG> 0x2557 + B double upper right corner 186 <STRONG>WACS_D_VLINE</STRONG> 0x2551 | Y double vertical line 187 188 Unicode's descriptions for these characters differs slightly from 189 <EM>ncurses</EM>, by introducing the term "light" (along with less important 190 details). Here are its descriptions for the normal, thick, and double 191 horizontal lines: 192 193 <STRONG>o</STRONG> U+2500 BOX DRAWINGS LIGHT HORIZONTAL 194 195 <STRONG>o</STRONG> U+2501 BOX DRAWINGS HEAVY HORIZONTAL 196 197 <STRONG>o</STRONG> U+2550 BOX DRAWINGS DOUBLE HORIZONTAL 198 199 200</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> 201 All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success. 202 203 X/Open Curses does not specify any error conditions. This 204 implementation returns an error 205 206 <STRONG>o</STRONG> if the window pointer is null or 207 208 <STRONG>o</STRONG> if it is not possible to add a complete character in the window. 209 210 The latter may be due to different causes: 211 212 <STRONG>o</STRONG> If <STRONG><A HREF="scrollok.3x.html">scrollok(3x)</A></STRONG> is not enabled, writing a character at the lower 213 right margin succeeds. However, an error is returned because it is 214 not possible to wrap to a new line. 215 216 <STRONG>o</STRONG> If an error is detected when converting a multibyte character to a 217 sequence of bytes, or if it is not possible to add all of the 218 resulting bytes in the window, an error is returned. 219 220 Functions prefixed with "mv" first perform cursor movement and fail if 221 the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries. 222 223 224</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> 225 Note that <STRONG>add_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, <STRONG>mvwadd_wch</STRONG>, and <STRONG>echo_wchar</STRONG> may be macros. 226 227 228</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> 229 These functions are described in X/Open Curses, Issue 4. The defaults 230 specified for line-drawing characters apply in the POSIX locale. 231 232 233</PRE><H3><a name="h3-WACS-Symbols">WACS Symbols</a></H3><PRE> 234 X/Open Curses makes it clear that the WACS_ symbols should be defined 235 as a pointer to <STRONG>cchar_t</STRONG> data, e.g., in the discussion of <STRONG>border_set</STRONG>. A 236 few implementations are problematic: 237 238 <STRONG>o</STRONG> NetBSD curses defines the symbols as a <STRONG>wchar_t</STRONG> within a <STRONG>cchar_t</STRONG>. 239 240 <STRONG>o</STRONG> HP-UX curses equates some of the <STRONG>ACS_</STRONG> symbols to the analogous 241 <STRONG>WACS_</STRONG> symbols as if the <STRONG>ACS_</STRONG> symbols were wide characters. The 242 misdefined symbols are the arrows and other symbols which are not 243 used for line-drawing. 244 245 X/Open Curses does not specify symbols for thick- or double-lines. 246 SVr4 curses implementations defined their line-drawing symbols in terms 247 of intermediate symbols. This implementation extends those symbols, 248 providing new definitions which are not in the SVr4 implementations. 249 250 Not all Unicode-capable terminals provide support for VT100-style 251 alternate character sets (i.e., the <STRONG>acsc</STRONG> capability), with their 252 corresponding line-drawing characters. X/Open Curses did not address 253 the aspect of integrating Unicode with line-drawing characters. 254 Existing implementations of Unix curses (AIX, HP-UX, Solaris) use only 255 the <STRONG>acsc</STRONG> character-mapping to provide this feature. As a result, those 256 implementations can only use single-byte line-drawing characters. 257 <EM>ncurses</EM> 5.3 (2002) provided a table of Unicode values to solve these 258 problems. NetBSD curses incorporated that table in 2010. 259 260 In this implementation, the Unicode values are used instead of the 261 terminal description's <STRONG>acsc</STRONG> mapping as discussed in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> for the 262 environment variable <EM>NCURSES</EM><STRONG>_</STRONG><EM>NO</EM><STRONG>_</STRONG><EM>UTF8</EM><STRONG>_</STRONG><EM>ACS</EM>. In contrast, for the same 263 cases, the line-drawing characters described in <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG> will use only 264 the ASCII default values. 265 266 Having Unicode available does not solve all of the problems with line- 267 drawing for curses: 268 269 <STRONG>o</STRONG> The closest Unicode equivalents to the VT100 graphics <EM>S1</EM>, <EM>S3</EM>, <EM>S7</EM> 270 and <EM>S9</EM> frequently are not displayed at the regular intervals which 271 the terminal used. 272 273 <STRONG>o</STRONG> The <EM>lantern</EM> is a special case. It originated with the AT&T 4410 274 terminal in the early 1980s. There is no accessible documentation 275 depicting the lantern symbol on the AT&T terminal. 276 277 Lacking documentation, most readers assume that a <EM>storm</EM> <EM>lantern</EM> was 278 intended. But there are several possibilities, all with problems. 279 280 Unicode 6.0 (2010) does provide two lantern symbols: U+1F383 and 281 U+1F3EE. Those were not available in 2002, and are irrelevant 282 since they lie outside the BMP and as a result are not generally 283 available in terminals. They are not storm lanterns, in any case. 284 285 Most <EM>storm</EM> <EM>lanterns</EM> have a tapering glass chimney (to guard against 286 tipping); some have a wire grid protecting the chimney. 287 288 For the tapering appearance, U+2603 was adequate. In use on a 289 terminal, no one can tell what the image represents. Unicode calls 290 it a snowman. 291 292 Others have suggested these alternatives: <section> U+00A7 (section 293 mark), <Theta> U+0398 (theta), <Phi> U+03A6 (phi), <delta> U+03B4 294 (delta), U+2327 (x in a rectangle), U+256C (forms double vertical 295 and horizontal), and U+2612 (ballot box with x). 296 297 298</PRE><H3><a name="h3-Complex-Characters">Complex Characters</a></H3><PRE> 299 The complex character type <STRONG>cchar_t</STRONG> can store more than one wide 300 character (<STRONG>wchar_t</STRONG>). The X/Open Curses description does not mention 301 this possibility, describing only the cases where <EM>wch</EM> is a spacing 302 character or a non-spacing character. 303 304 This implementation assumes that <EM>wch</EM> is constructed using <STRONG><A HREF="curs_getcchar.3x.html">setcchar(3x)</A></STRONG>, 305 and in turn that the result 306 307 <STRONG>o</STRONG> contains at most one spacing character in the beginning of its list 308 of wide characters, and zero or more non-spacing characters or 309 310 <STRONG>o</STRONG> may hold one non-spacing character. 311 312 In the latter case, <EM>ncurses</EM> adds the non-spacing character to the 313 active (base) spacing character. 314 315 316</PRE><H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE> 317 The <STRONG>TABSIZE</STRONG> variable is implemented in SVr4 and other versions of 318 <EM>curses</EM>, but is not specified by X/Open Curses (see <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>). 319 320 321</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> 322 <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> describes comparable functions of the <EM>ncurses</EM> library in 323 its non-wide-character configuration. 324 325 <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, 326 <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>, <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, 327 <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>putwc(3)</STRONG> 328 329 330 331ncurses 6.5 2024-04-20 <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> 332</PRE> 333<div class="nav"> 334<ul> 335<li><a href="#h2-NAME">NAME</a></li> 336<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> 337<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> 338<ul> 339<li><a href="#h3-add_wch">add_wch</a></li> 340<li><a href="#h3-echo_wchar">echo_wchar</a></li> 341<li><a href="#h3-Line-Graphics">Line Graphics</a></li> 342</ul> 343</li> 344<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> 345<li><a href="#h2-NOTES">NOTES</a></li> 346<li><a href="#h2-PORTABILITY">PORTABILITY</a> 347<ul> 348<li><a href="#h3-WACS-Symbols">WACS Symbols</a></li> 349<li><a href="#h3-Complex-Characters">Complex Characters</a></li> 350<li><a href="#h3-TABSIZE">TABSIZE</a></li> 351</ul> 352</li> 353<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> 354</ul> 355</div> 356</BODY> 357</HTML> 358