readme.eng.txt
1# Highlight.js
2
3Highlight.js highlights syntax in code examples on blogs, forums and
4in fact on any web pages. It's very easy to use because it works
5automatically: finds blocks of code, detects a language, highlights it.
6
7Autodetection can be fine tuned when it fails by itself (see "Heuristics").
8
9## Installation and usage
10
11Downloaded package includes file "highlight.pack.js" which is a full compressed
12version of the library intended to use in production. All uncompressed source
13files are also available, feel free to look into them!
14
15The script is installed by linking to a single file and making a single
16initialization call:
17
18 <script type="text/javascript" src="highlight.pack.js"></script>
19 <script type="text/javascript">
20 hljs.initHighlightingOnLoad();
21 </script>
22
23Also you can replaces TAB ('\x09') characters used for indentation in your code
24with some fixed number of spaces or with a `<span>` to set them special styling:
25
26 <script type="text/javascript">
27 hljs.tabReplace = ' '; // 4 spaces
28 // ... or
29 hljs.tabReplace = '<span class="indent">\t</span>';
30
31 hljs.initHighlightingOnLoad();
32 </script>
33
34Despite highlight.pack.js already includes only those languages that you need sometimes
35you may want to further constrain a set of languages used on a page by listing them as
36parameters to initialization:
37
38 <script type="text/javascript">
39 hljs.initHighlightingOnLoad('html', 'css');
40 </script>
41
42A full list of available classes is below ("Languages").
43
44Then the script looks in your page for fragments `<pre><code>...</code></pre>`
45that are used traditionally to mark up code examples. Their content is
46marked up by logical pieces with defined class names. The classes are
47used to actually style the code elements:
48
49 .comment {
50 color: gray;
51 }
52
53 .keyword {
54 font-weight: bold;
55 }
56
57 .python .string {
58 color: blue;
59 }
60
61 .html .atribute .value {
62 color: green;
63 }
64
65Highligt.js comes with several style themes located in "styles" directory that
66can be used directly or as a base for your own experiments.
67
68### WordPress plugin
69
70Generally installing highlight.js in a [WordPress][wp] blog is no different
71than for any other web page. However it can also be installed as a plugin.
72This is useful if your blog is located on a shared hosting and you don't
73have a permission to edit template and style files. Or it may be more convenient
74to you this way.
75
76To install the plugin copy the whole directory with highlight.js to the
77WordPress plugins directory. After this you can activate and deactivate it
78from the Plugins panel. There is also a page "highlight.js" under the Options
79menu where you can set a list of languages and style rules. Insanely convenient :-)
80
81[wp]: http://wordpress.org/
82
83
84## Export
85
86File export.html contains a little program that shows and allows to copy and paste
87an HTML code generated by the highlighter for any code snippet. This can be useful
88in situations when one can't use the script itself on a site.
89
90
91## Languages
92
93This is a full list of available classes corresponding to languages'
94syntactic structures. In parentheses after language names are identifiers
95used as class names in `<code>` element.
96
97Python ("python"):
98
99 keyword keyword
100 built_in built-in objects (None, False, True and Ellipsis)
101 number number
102 string string (of any type)
103 comment comment
104 decorator @-decorator for functions
105 function function header "def some_name(...):"
106 class class header "class SomeName(...):"
107 title name of a function or a class inside a header
108 params everything inside parentheses in a function's or class' header
109
110Python profiler results ("profile"):
111
112 number number
113 string string
114 builtin builtin function entry
115 filename filename in an entry
116 summary profiling summary
117 header header of table of results
118 keyword column header
119 function function name in an entry (including parentheses)
120 title actual name of a function in an entry (excluding parentheses)
121
122Ruby ("ruby"):
123
124 keyword keyword
125 string string
126 subst in-string substitution (#{...})
127 comment comment
128 function function header "def some_name(...):"
129 class class header "class SomeName(...):"
130 title name of a function or a class inside a header
131 parent name of a parent class
132 symbol symbol
133 instancevar instance variable
134
135Perl ("perl"):
136
137 keyword keyword
138 comment comment
139 number number
140 string string
141 regexp regular expression
142 sub subroutine header (from "sub" till "{")
143 variable variable starting with "$", "%", "@"
144 operator operator
145 pod plain old doc
146
147PHP ("php"):
148
149 keyword keyword
150 number number
151 string string (of any type)
152 comment comment
153 phpdoc phpdoc params in comments
154 variable variable starting with "$"
155 preprocessor preprocessor marks: "<?php" and "?>"
156
157XML ("xml"):
158
159 tag any tag from "<" till ">"
160 comment comment
161 pi processing instruction (<? ... ?>)
162 cdata CDATA section
163 attribute attribute
164 value attribute's value
165
166HTML ("html"):
167
168 keyword HTML tag
169 tag any tag from "<" till ">"
170 comment comment
171 doctype <!DOCTYPE ... > declaration
172 attribute tag's attribute with or without value
173 value attribute's value
174
175CSS ("css"):
176
177 keyword HTML tag when in selectors, CSS keyword when in rules
178 id #some_name in selectors
179 class .some_name in selectors
180 at_rule @-rule till first "{" or ";"
181 attr_selector attribute selector (square brackets in a[href^=http://])
182 pseudo pseudo classes and elemens (:after, ::after etc.)
183 comment comment
184 rules everything from "{" till "}"
185 value property's value inside a rule, from ":" till ";" or
186 till the end of rule block
187 number number within a value
188 string string within a value
189 hexcolor hex color (#FFFFFF) within a value
190 function CSS function within a value
191 params everything between "(" and ")" within a function
192
193Django ("django"):
194
195 keyword HTML tag in HTML, default tags and default filters in templates
196 tag any tag from "<" till ">"
197 comment comment
198 doctype <!DOCTYPE ... > declaration
199 attribute tag's attribute with or withou value
200 value attribute's value
201 template_tag template tag {% .. %}
202 variable template variable {{ .. }}
203 template_comment template comment, both {# .. #} and {% comment %}
204 filter filter from "|" till the next filter or the end of tag
205 argument filter argument
206
207Javascript ("javascript"):
208
209 keyword keyword
210 comment comment
211 number number
212 literal special literal: "true", "false" and "null"
213 string string
214 regexp regular expression
215 function header of a function
216 title name of a function inside a header
217 params everything inside parentheses in a function's header
218
219VBScript ("vbscript"):
220
221 keyword keyword
222 number number
223 string string
224 comment comment
225 built_in built-in function
226
227Delphi ("delphi"):
228
229 keyword keyword
230 comment comment (of any type)
231 number number
232 string string
233 function header of a function, procedure, constructor and destructor
234 title name of a function, procedure, constructor or destructor
235 inside a header
236 params everything inside parentheses in a function's header
237 class class' body from "= class" till "end;"
238
239Java ("java"):
240
241 keyword keyword
242 number number
243 string string
244 comment commment
245 annotaion annotation
246 javadoc javadoc comment
247 class class header from "class" till "{"
248 title class name inside a header
249 params everything in parentheses inside a class header
250 inheritance keywords "extends" and "implements" inside class header
251
252C++ ("cpp"):
253
254 keyword keyword
255 number number
256 string string and character
257 comment comment
258 preprocessor preprocessor directive
259 stl_container instantiation of STL containers ("vector<...>")
260
261C# ("cs"):
262
263 keyword keyword
264 number number
265 string string
266 comment commment
267 xmlDocTag xmldoc tag ("///", "<!--", "-->", "<..>")
268
269RenderMan RSL ("rsl"):
270
271 keyword keyword
272 number number
273 string string (including @"..")
274 comment comment
275 preprocessor preprocessor directive
276 shader sahder keywords
277 shading shading keywords
278 built_in built-in function
279
280RenderMan RIB ("rib"):
281
282 keyword keyword
283 number number
284 string string
285 comment comment
286 commands command
287
288Maya Embedded Language ("mel"):
289
290 keyword keyword
291 number number
292 string string
293 comment comment
294 variable variable
295
296SQL ("sql"):
297
298 keyword keyword (mostly SQL'92 and SQL'99)
299 number number
300 string string (of any type: "..", '..', `..`)
301 comment comment
302 aggregate aggregate function
303
304Smalltalk ("smalltalk"):
305
306 keyword keyword
307 number number
308 string string
309 comment commment
310 symbol symbol
311 array array
312 class name of a class
313 char char
314 localvars block of local variables
315
316Lisp ("lisp"):
317
318 keyword keyword
319 number number
320 string string
321 comment commment
322 variable variable
323 literal b, t and nil
324 list non-quoted list
325 title first symbol in a non-quoted list
326 body remainder of the non-quoted list
327 quoted_list quoted list, both "(quote .. )" and "'(..)"
328
329Ini ("ini"):
330
331 title title of a section
332 value value of a setting of any type
333 string string
334 number number
335 keyword boolean value keyword
336
337Apache ("apache"):
338
339 keyword keyword
340 number number
341 comment commment
342 literal On and Off
343 sqbracket variables in rewrites "%{..}"
344 cbracket options in rewrites "[..]"
345 tag begin and end of a configuration section
346
347DOS ("dos"):
348
349 keyword keyword
350 flow batch control keyword
351 stream DOS special files ("con", "prn", ...)
352 winutils some commands (see dos.js specifically)
353 envvar environment variables
354
355Bash ("bash"):
356
357 keyword keyword
358 string string
359 number number
360 comment comment
361 literal special literal: "true" и "false"
362 variable variable
363 shebang script interpreter header
364
365Diff ("diff"):
366
367 header file header
368 chunk chunk header within a file
369 addition added lines
370 deletion deleted lines
371 change changed lines
372
373Axapta ("axapta"):
374
375 keyword keyword
376 number number
377 string string
378 comment commment
379 class class header from "class" till "{"
380 title class name inside a header
381 params everything in parentheses inside a class header
382 inheritance keywords "extends" and "implements" inside class header
383 preprocessor preprocessor directive
384
3851C ("1c"):
386
387 keyword keyword
388 number number
389 date date
390 string string
391 comment commment
392 function header of function or procudure
393 title function name inside a header
394 params everything in parentheses inside a function header
395 preprocessor preprocessor directive
396
397AVR assembler ("avrasm"):
398
399 keyword keyword
400 built_in pre-defined register
401 number number
402 string string
403 comment commment
404 label label
405 preprocessor preprocessor directive
406 localvars substitution in .macro
407
408Parser3 ("parser3"):
409
410 keyword keyword
411 number number
412 comment commment
413 variable variable starting with "$"
414 preprocessor preprocessor directive
415 title user-defined name starting with "@"
416
417## Heuristics
418
419Autodetection of a code's language is done with a simple heuristics:
420the program tries to highlight a fragment with all available languages and
421counts all syntactic structures that it finds along the way. The language
422with greatest count wins.
423
424This means that in short fragments the probability of an error is high
425(and it really happens sometimes). In this cases you can set the fragment's
426language explicitly by assigning a class to the `<code>` element:
427
428 <pre><code class="html">...</code></pre>
429
430You can use class names recommended in HTML5: "language-html",
431"language-php". Classes also can be assigned to the `<pre>` element.
432
433To disable highlighting of a fragment altogether use "no-highlight" class:
434
435 <pre><code class="no-highlight">...</code></pre>
436
437## Contacts
438
439Version: 5.7
440URL: http://softwaremaniacs.org/soft/highlight/en/
441Author: Ivan Sagalaev (Maniac@SoftwareManiacs.Org)
442
443For the license terms see LICENSE files.
444For the list of contributors see AUTHORS.en.txt file.
445
readme.rus.txt
1# Highlight.js
2
3Highlight.js нужен для подсветки синтаксиса в примерах кода в блогах,
4форумах и вообще на любых веб-страницах. Пользоваться им очень просто,
5потому что работает он автоматически: сам находит блоки кода, сам
6определяет язык, сам подсвечивает.
7
8Автоопределением языка можно управлять, когда оно не справляется само (см.
9дальше "Эвристика").
10
11## Подключение и использование
12
13В загруженном архиве лежит файл "highlight.pack.js" -- полная сжатая версия
14библиотеки для работы. Все несжатые исходные файлы также есть в пакете, поэтому
15не стесняйтесь в них смотреть!
16
17Скрипт подключается одним файлом и одним вызовом инициализирующей
18функции:
19
20 <script type="text/javascript" src="highlight.pack.js"></script>
21 <script type="text/javascript">
22 hljs.initHighlightingOnLoad();
23 </script>
24
25Также вы можете заменить символы TAB ('\x09'), используемые для отступов, на
26фиксированное количество пробелов или на отдельный `<span>`, чтобы задать ему
27какой-нибудь специальный стиль:
28
29 <script type="text/javascript">
30 hljs.tabReplace = ' '; // 4 spaces
31 // ... or
32 hljs.tabReplace = '<span class="indent">\t</span>';
33
34 hljs.initHighlightingOnLoad();
35 </script>
36
37Несмотря на то, что highlight.pack.js уже содержит только те языки, которые вы
38собираетесь использовать, иногда возникает нужда еще больше оганичить набор языков,
39используемых на странице. Это достигается перечислением их имен при инициализации:
40
41 <script type="text/javascript">
42 hljs.initHighlightingOnLoad('html', 'css');
43 </script>
44
45Полный список классов для разных языков приведен ниже ("Языки").
46
47Дальше скрипт ищет на странице конструкции `<pre><code>...</code></pre>`,
48которые традиционно используются для написания кода, и код в них
49размечается на куски, помеченные разными значениями классов. Классам
50этим затем надо задать в стилях нужные цвета например так:
51
52 .comment {
53 color: gray;
54 }
55
56 .keyword {
57 font-weight: bold;
58 }
59
60 .python .string {
61 color: blue;
62 }
63
64 .html .atribute .value {
65 color: green;
66 }
67
68В комплекте с highlight.js идут несколько стилевых тем в директории styles,
69которые можно использовать напрямую или как основу для собственных экспериментов.
70
71
72### Плагин к WordPress
73
74Вообще, подключение highlight.js к блогу на [WordPress][wp] ничем не отличается
75от подключения куда-либо еще. Однако он может быть подключен к блогу и как плагин.
76Это удобно, если блог находится на общественном сервере, где вы не можете
77свободно редактировать файлы, или просто если вы привыкли пользоваться плагинами.
78
79Для установки плагина надо скопировать всю директорию с файлами highlight.js в
80директорию плагинов WordPress. После этого в панели плагинов его можно
81будет включать и отключать. В меню Options также добавляется страничка
82highlight.js, где можно настраивать список языков и CSS-стили. Удобно до одурения :-).
83
84[wp]: http://wordpress.org/
85
86
87## Экспорт
88
89В файле export.html находится небольшая программка, которая показывает и дает
90скопировать непосредственно HTML-код подсветки для любого заданного фрагмента кода.
91Это может понадобится например на сайте, на котором нельзя подключить сам скрипт
92highlight.js.
93
94
95## Языки
96
97В списке приведены все языки, которые знает библиотека с классами,
98соответствующими различным синтаксическим частям. В скобках после
99названий языков указаны идентификаторы языков, используемые в качестве
100классов элемента `<code>`.
101
102Python ("python"):
103
104 keyword ключевое слово языка
105 built_in стандартные значения (None, False, True и Ellipsis)
106 number число
107 string строка (любого типа)
108 comment комментарий
109 decorator @-декоратор функции
110 function заголовок функции "def some_name(...):"
111 class заголовок класса "class SomeName(...):"
112 title название функции или класса внутри заголовка
113 params все, что в скобках внутри заголовка функции или класса
114
115Результаты профайлинга Питона ("profile"):
116
117 number число
118 string строка
119 builtin встроенная функция в строке результата
120 filename имя файла в строке результата
121 summary итоговые результаты профилирования
122 header заголовок таблицы результатов
123 keyword название колонки в заголовке
124 function название функции в строке результата (включая скобки)
125 title само название функци в строке результата (без скобок)
126
127Ruby ("ruby"):
128
129 keyword ключевое слово языка
130 string строка
131 subst внутристроковая подстановка (#{...})
132 comment комментарий
133 function заголовок функции "def ..."
134 class заголовок класса "class ..."
135 title название функции или класса внутри заголовка
136 parent название родительского класса
137 symbol символ
138 instancevar переменная класса
139
140Perl ("perl"):
141
142 keyword ключевое слово языка
143 comment комментарий
144 number число
145 string строка
146 regexp регулярное выражение
147 sub заголовок процедуры (от "sub" до "{")
148 variable переменная, начинающаяся с "$", "%", "@"
149 operator оператор
150 pod документация (plain old doc)
151
152PHP ("php"):
153
154 keyword ключевое слово языка
155 number число
156 string строка (любого типа)
157 comment комментарий
158 phpdoc параметры phpdoc в комментарии
159 variable переменная, начинающаяся с "$"
160 preprocessor метки препроцессора: "<?php" and "?>"
161
162XML ("xml"):
163
164 tag любой открывающий или закрывающий тег от "<" до ">"
165 comment комментарий
166 pi инструкции обработки (<? ... ?>)
167 cdata раздел CDATA
168 attribute атрибут
169 value значение атрибута
170
171HTML ("html"):
172
173 keyword тег языка HTML
174 tag любой открывающий или закрывающий тег от "<" до ">"
175 comment комментарий
176 doctype объявление <!DOCTYPE ... >
177 attribute атрибут внутри тега со значением или без
178 value значение атрибута
179
180CSS ("css"):
181
182 keyword тег языка HTML в селекторах или свойство CSS в правилах
183 id #some_name в селекторах
184 class .some_name в селекторах
185 at_rule @-rule до первого "{" или ";"
186 attr_selector селектор атрибутов (квадатные скобоки в a[href^=http://])
187 pseudo псевдо-классы и элементы (:after, ::after и т.д.)
188 comment комментарий
189 rules все от "{" до "}"
190 value значение свойства внутри правила, все от ":" до ";" или
191 до конца блока правил
192 number число внутри значения
193 string строка внутри значения
194 hexcolor шестнадцатеричный цвет (#FFFFFF) внутри значения
195 function CSS-функция внутри значения
196 params все от "(" до ")" внутри функции
197
198Django ("django"):
199
200 keyword тег HTML в HTML, встроенные шаблонные теги и фильтры в шаблонах
201 tag любой открывающий или закрывающий тег от "<" до ">"
202 comment комментарий
203 doctype объявление <!DOCTYPE ... >
204 attribute атрибут внутри тега со значением или без
205 value значение атрибута
206 template_tag шаблонный тег {% .. %}
207 variable шаблонная переменная {{ .. }}
208 template_comment шаблонный комментарий, и {# .. #}, и {% comment %}
209 filter фильтр от "|" до следующего фильтра или до конца тега
210 argument аргумент фильтра
211
212Javascript ("javascript"):
213
214 keyword ключевое слово языка
215 comment комментарий
216 number число
217 literal специальное слово: "true", "false" и "null"
218 string строка
219 regexp регулярное выражение
220 function заголовок функции
221 title название функции внутри заголовка
222 params все, что в скобках внутри заголовка функции
223
224VBScript ("vbscript"):
225
226 keyword ключевое слово языка
227 comment комментарий
228 number число
229 string строка
230 built_in встроенная функция
231
232Delphi ("delphi"):
233
234 keyword ключевое слово языка
235 comment комментарий (любого типа)
236 number число
237 string строка
238 function заголовок функции, процедуры, конструктора или деструктора
239 title название функции, процедуры, конструктора или деструктора
240 внутри заголовка
241 params все, что в скобках внутри заголовка функций
242 class тело класса от "= class" до "end;"
243
244Java ("java"):
245
246 keyword ключевое слово языка
247 number число
248 string строка
249 comment комментарий
250 annotaion аннотация
251 javadoc javadoc-комментарии
252 class заголовок класса от "class" до "{"
253 title название класса внутри заголовка
254 params все, что в скобках внутри заголовка класса
255 inheritance слова "extends" и "implements" внутри заголовка класса
256
257C++ ("cpp"):
258
259 keyword ключевое слово языка
260 built_in тип из стандартной библиотеки (включая STL)
261 number число
262 string строка и одиночный символ
263 comment комментарий
264 preprocessor директива препроцессора
265 stl_container инстанцирование STL-контейнеров ("vector<...>")
266
267C# ("cs"):
268
269 keyword ключевое слово языка
270 number число
271 string строка (включая @"..")
272 comment комментарий
273 xmlDocTag тег в xmldoc ("///", "<!--", "-->", "<..>")
274
275RenderMan RSL ("rsl"):
276
277 keyword ключевое слово языка
278 number число
279 string строка
280 comment комментарий
281 preprocessor директива препроцессора
282 shader ключевое слово шейдеров
283 shading ключевое слово затенений
284 built_in встроенная функция
285
286RenderMan RIB ("rib"):
287
288 keyword ключевое слово языка
289 number число
290 string строка
291 comment комментарий
292 commands команда
293
294Maya Embedded Language ("mel"):
295
296 keyword ключевое слово языка
297 number число
298 string строка
299 comment комментарий
300 variable переменная
301
302SQL ("sql"):
303
304 keyword ключевое слово (в основном из SQL'92 и SQL'99)
305 number число
306 string строка (любого типа: "..", '..', `..`)
307 comment комментарий
308 aggregate агрегатная функция
309
310Smalltalk ("smalltalk"):
311
312 keyword ключевое слово
313 number число
314 string строка
315 comment комментарий
316 symbol символ
317 array массив
318 class имя класса
319 char буква
320 localvars блок локальных переменных
321
322Lisp ("lisp"):
323
324 keyword ключевое слово
325 number число
326 string строка
327 comment комментарий
328 variable переменная
329 literal b, t и nil
330 list неквотированный список
331 title первый символ неквотированного списка
332 body остаток неквотированного списка
333 quoted_list квотированный список: и "(quote .. )", и "'(..)"
334
335Ini ("ini"):
336
337 title заголовок секции
338 value значение настройки любого типа
339 string строка
340 number число
341 keyword ключевое слово булевского значения
342
343Apache ("apache"):
344
345 keyword ключевое слово
346 number число
347 comment комментарий
348 literal "On" и "Off"
349 sqbracket переменная в rewrite'ах "%{..}"
350 cbracket опции в rewrite'ах "[..]"
351 tag начало и конец раздела конфига
352
353DOS ("dos"):
354
355 keyword ключевое слово
356 flow команда .bat-файла
357 stream специальные файлы DOS ("con", "prn", ...)
358 winutils некоторые (см. dos.js за списком)
359 envvar переменная окружения
360
361Bash ("bash"):
362
363 keyword ключевое слово
364 string строка
365 number число
366 comment комментарий
367 literal специальное слово: "true" и "false"
368 variable переменная
369 shebang заголовок интерпретатора скрипта
370
371Diff ("diff"):
372
373 header заголовок файла
374 chunk заголовок куска внутри файла
375 addition добавленные строки
376 deletion удаленные строки
377 change измененные строки
378
379Axapta ("axapta"):
380
381 keyword ключевое слово языка
382 number число
383 string строка
384 comment комментарий
385 class заголовок класса от "class" до "{"
386 title название класса внутри заголовка
387 params все, что в скобках внутри заголовка класса
388 inheritance слова "extends" и "implements" внутри заголовка класса
389 preprocessor директива препроцессора
390
3911С ("1c"):
392
393 keyword ключевое слово языка
394 number число
395 date дата
396 string строка
397 comment комментарий
398 function заголовок функции или процедуры
399 title название функции внутри заголовка
400 params все, что в скобках внутри заголовка функции
401 preprocessor директива препроцессора
402
403AVR ассемблер ("avrasm"):
404
405 keyword ключевое слово языка
406 built_in предопределенный регистр
407 number число
408 string строка
409 comment комментарий
410 label метка
411 preprocessor директива препроцессора
412 localvars подстановка в .macro
413
414Parser3 ("parser3"):
415
416 keyword ключевое слово языка
417 number число
418 comment комментарий
419 variable переменная, начинающаяся с "$"
420 preprocessor директива препроцессора
421 title пользовательское имя, начинающееся с "@"
422
423
424## Эвристика
425
426Определение языка, на котором написан фрагмент, делается с помощью
427довольно простой эвристики: программа пытается расцветить фрагмент всеми
428языками подряд, и для каждого языка считает количество подошедших
429синтаксически конструкций и ключевых слов. Для какого языка нашлось больше,
430тот и выбирается.
431
432Это означает, что в коротких фрагментах высока вероятность ошибки, что
433периодически и случается. Чтобы указать язык фрагмента явно, надо написать
434его название в виде класса к элементу `<code>`:
435
436 <pre><code class="html">...</code></pre>
437
438Можно использовать рекомендованные в HTML5 названия классов:
439"language-html", "language-php". Также можно назначать классы на элемент
440`<pre>`.
441
442Чтобы запретить расцветку фрагмента вообще, используется класс "no-highlight":
443
444 <pre><code class="no-highlight">...</code></pre>
445
446## Координаты
447
448Версия: 5.7
449URL: http://softwaremaniacs.org/soft/highlight/
450Автор: Иван Сагалаев (Maniac@SoftwareManiacs.Org)
451
452Лицензионное соглашение читайте в файле LICENSE.
453Список соавторов читайте в файле AUTHORS.ru.txt
454