r4164 delete SQL comments in "dictbase" text, which the current code doesn't support
[racktables] / install.php
CommitLineData
0e7f2155 1<?php
5b4523dc 2
d3372430
DO
3// This script is intended for execution through a web-browser, e.g.:
4// https://example.com/racktables/install.php
5// See README file for more information.
5b4523dc 6
0e7f2155
DO
7$stepfunc[1] = 'not_already_installed';
8$stepfunc[2] = 'platform_is_ok';
9$stepfunc[3] = 'init_config';
96e102b2
DO
10$stepfunc[4] = 'init_database_static';
11$stepfunc[5] = 'init_database_dynamic';
12$stepfunc[6] = 'congrats';
13$dbxlink = NULL;
0e7f2155
DO
14
15if (isset ($_REQUEST['step']))
16 $step = $_REQUEST['step'];
17else
18 $step = 1;
19
20if ($step > count ($stepfunc))
21{
790a60e8
DO
22 $root = (empty($_SERVER['HTTPS']) or $_SERVER['HTTPS'] == 'off') ? 'http://' : 'https://';
23 $root .= isset ($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ($_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']=='80'?'':$_SERVER['SERVER_PORT']));
24 // "Since PHP 4.3.0, you will often get a slash or a dot back from
25 // dirname() in situations where the older functionality would have given
26 // you the empty string."
27 // "On Windows, both slash (/) and backslash (\) are used as directory
28 // separator character."
29 $root .= strtr (dirname ($_SERVER['PHP_SELF']), '\\', '/');
30 if (substr ($root, -1) != '/')
31 $root .= '/';
32 header ("Location: ${root}");
0e7f2155
DO
33 exit;
34}
35$title = "RackTables installation: step ${step} of " . count ($stepfunc);
3fb336f6 36require_once ('inc/dictionary.php');
878512c6 37header ('Content-Type: text/html; charset=UTF-8');
0e7f2155 38?>
f48dc2cc
DO
39<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
40<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
0e7f2155 41<head><title><?php echo $title; ?></title>
0d505e5c 42<link rel=stylesheet type='text/css' href='css/pi.css' />
f48dc2cc
DO
43</head>
44<body>
0e7f2155 45<center>
f48dc2cc 46<?php
f92287f4
DO
47echo "<h1>${title}</h1><p>";
48
49echo "</p><form method=post>\n";
50$testres = $stepfunc[$step] ();
51if ($testres)
52{
53 $next_step = $step + 1;
ae067ef3 54 echo "<br><input type=submit value='proceed'>";
f92287f4
DO
55}
56else
57{
58 $next_step = $step;
ae067ef3 59 echo "<br><input type=submit value='retry'>";
f92287f4
DO
60}
61echo "<input type=hidden name=step value='${next_step}'>\n";
62
63?>
64</form>
65</center>
66</body>
67</html>
68
69<?php
0e7f2155
DO
70// Check if the software is already installed.
71function not_already_installed()
f48dc2cc 72{
80138748 73 @include ('inc/secret.php');
f92287f4
DO
74 if (isset ($pdo_dsn))
75 {
76 echo 'Your configuration file exists and seems to hold necessary data already.<br>';
77 return FALSE;
78 }
79 else
80 {
43f06d53 81 echo 'There seem to be no existing installation here, I am going to setup one now.<br>';
f92287f4
DO
82 return TRUE;
83 }
f48dc2cc
DO
84}
85
0e7f2155
DO
86// Check that we can write to configuration file.
87// If so, ask for DB connection paramaters and test
88// the connection. Neither save the parameters nor allow
89// going further until we succeed with the given
90// credentials.
91function init_config ()
92{
80138748 93 if (!is_writable ('inc/secret.php'))
f92287f4 94 {
80138748 95 echo "The inc/secret.php file is not writable by web-server. Make sure it is.";
e826d3d8 96 echo "The following commands should suffice:<pre>touch inc/secret.php; chmod 666 inc/secret.php</pre>";
9b16b1f1 97 echo 'Fedora Linux with SELinux may require this file to be owned by specific user (apache) and/or executing "setenforce 0" for the time of installation. ';
b836a843 98 echo 'SELinux may be turned back on with "setenforce 1" command.<br>';
f92287f4
DO
99 return FALSE;
100 }
101 if
102 (
103 !isset ($_REQUEST['save_config']) or
104 empty ($_REQUEST['mysql_host']) or
105 empty ($_REQUEST['mysql_db']) or
106 empty ($_REQUEST['mysql_username']) or
107 empty ($_REQUEST['mysql_password'])
108 )
109 {
110 echo "<input type=hidden name=save_config value=1>\n";
ae067ef3
DO
111 echo '<h3>Hint on setting up a database:</h3><pre>';
112 echo "mysql&gt; CREATE DATABASE racktables_db CHARACTER SET utf8 COLLATE utf8_general_ci;\n";
aa004b1a 113 echo "mysql&gt; GRANT ALL PRIVILEGES ON racktables_db.* TO racktables_user@localhost IDENTIFIED BY 'MY_SECRET_PASSWORD';\n</pre>";
f92287f4
DO
114 echo '<table>';
115 echo "<tr><td><label for=mysql_host>MySQL host:</label></td>";
116 echo "<td><input type=text name=mysql_host id=mysql_host value=localhost></td></tr>\n";
117 echo "<tr><td><label for=mysql_host>database:</label></td>";
ae067ef3 118 echo "<td><input type=text name=mysql_db id=mysql_db value=racktables_db></td></tr>\n";
f92287f4 119 echo "<tr><td><label for=mysql_username>username:</label></td>";
ae067ef3 120 echo "<td><input type=text name=mysql_username value=racktables_user></td></tr>\n";
f92287f4
DO
121 echo "<tr><td><label for=mysql_password>password:</label></td>";
122 echo "<td><input type=password name=mysql_password></td></tr>\n";
123 echo '</table>';
124 return FALSE;
125 }
126 $pdo_dsn = 'mysql:host=' . $_REQUEST['mysql_host'] . ';dbname=' . $_REQUEST['mysql_db'];
127 try
128 {
129 $dbxlink = new PDO ($pdo_dsn, $_REQUEST['mysql_username'], $_REQUEST['mysql_password']);
130 }
131 catch (PDOException $e)
132 {
133 echo "<input type=hidden name=save_config value=1>\n";
134 echo '<table>';
135 echo "<tr><td><label for=mysql_host>MySQL host:</label></td>";
136 echo "<td><input type=text name=mysql_host id=mysql_host value='" . $_REQUEST['mysql_host'] . "'></td></tr>\n";
137 echo "<tr><td><label for=mysql_host>database:</label></td>";
138 echo "<td><input type=text name=mysql_db id=mysql_db value='" . $_REQUEST['mysql_db'] . "'></td></tr>\n";
139 echo "<tr><td><label for=mysql_username>username:</label></td>";
140 echo "<td><input type=text name=mysql_username value='" . $_REQUEST['mysql_username'] . "'></td></tr>\n";
141 echo "<tr><td><label for=mysql_password>password:</label></td>";
142 echo "<td><input type=password name=mysql_password value='" . $_REQUEST['mysql_password'] . "'></td></tr>\n";
143 echo "<tr><td colspan=2>The above parameters did not work. Check and try again.</td></tr>\n";
144 echo '</table>';
145 return FALSE;
146 }
e1ae3fb4 147
80138748 148 $conf = fopen ('inc/secret.php', 'w+');
f92287f4
DO
149 if ($conf === FALSE)
150 {
80138748 151 echo "Error: failed to open inc/secret.php for writing";
f92287f4
DO
152 return FALSE;
153 }
154 fwrite ($conf, "<?php\n/* This file has been generated automatically by RackTables installer.\n");
155 fwrite ($conf, " * you shouldn't normally edit it unless your database setup has changed.\n");
156 fwrite ($conf, " */\n");
157 fwrite ($conf, "\$pdo_dsn = '${pdo_dsn}';\n");
158 fwrite ($conf, "\$db_username = '" . $_REQUEST['mysql_username'] . "';\n");
e0dcbf1e 159 fwrite ($conf, "\$db_password = '" . $_REQUEST['mysql_password'] . "';\n\n");
2a622048
DO
160 fwrite ($conf, <<<ENDOFTEXT
161// Default setting is to authenticate users locally, but it is possible to
162// employ existing LDAP or Apache userbase. Uncommenting below two lines MAY
163// help in switching authentication to LDAP completely.
ad592f37 164// More info: http://sourceforge.net/apps/mediawiki/racktables/index.php?title=RackTablesAdminGuide
2a622048
DO
165#\$user_auth_src = 'ldap';
166#\$require_local_account = FALSE;
167
168// This is only necessary for 'ldap' authentication source
169\$LDAP_options = array
170(
171 'server' => 'some.server',
172 'domain' => 'some.domain',
173# 'search_dn' => 'ou=people,O=YourCompany',
174 'search_attr' => 'uid',
175# 'displayname_attrs' => 'givenname familyname',
176
177// LDAP cache, values in seconds. Refresh, retry and expiry values are
178// treated exactly as those for DNS SOA record. Example values 300-15-600:
179// unconditionally remeber successful auth for 5 minutes, after that still
180// permit user access, but try to revalidate username and password on the
181// server (not more often, than once in 15 seconds). After 10 minutes of
182// unsuccessful retries give up and deny access, so someone goes to fix
183// LDAP server.
184 'cache_refresh' => 300,
185 'cache_retry' => 15,
186 'cache_expiry' => 600,
187);
188
189
190ENDOFTEXT
191);
f92287f4
DO
192 fwrite ($conf, "?>\n");
193 fclose ($conf);
194 echo "The configuration file has been written successfully.<br>";
0e7f2155 195 return TRUE;
f48dc2cc
DO
196}
197
96e102b2
DO
198function connect_to_db ()
199{
80138748 200 require ('inc/secret.php');
96e102b2
DO
201 global $dbxlink;
202 try
203 {
204 $dbxlink = new PDO ($pdo_dsn, $db_username, $db_password);
205 }
206 catch (PDOException $e)
207 {
208 die ('Error connecting to the database');
209 }
210}
211
212function init_database_static ()
0e7f2155 213{
01539ac3
DO
214 connect_to_db ();
215 global $dbxlink;
485cf8a8
DO
216 if (!isInnoDBSupported())
217 {
218 echo 'InnoDB test failed! Please configure MySQL server properly and retry.';
219 return FALSE;
220 }
01539ac3
DO
221 $result = $dbxlink->query ('show tables');
222 $tables = $result->fetchAll (PDO::FETCH_NUM);
223 $result->closeCursor();
224 unset ($result);
225 if (count ($tables))
226 {
227 echo 'Your database is already holding ' . count ($tables);
228 echo ' tables, so I will stop here and let you check it yourself.<br>';
229 echo 'There is some important data there probably.<br>';
230 return FALSE;
231 }
0e7f2155 232 echo 'Initializing the database...<br>';
96e102b2 233 echo '<table border=1>';
aa004b1a 234 echo "<tr><th>section</th><th>queries</th><th>errors</th></tr>";
b2bdfd89 235 $errlist = array();
3fb336f6 236 foreach (array ('structure', 'dictbase') as $part)
f92287f4 237 {
aa004b1a 238 echo "<tr><td>${part}</td>";
b2bdfd89 239 $nq = $nerrs = 0;
aa004b1a 240 foreach (preg_split ("/;\s*\n/", get_pseudo_file ($part)) as $query)
96e102b2 241 {
5fe42ae4 242 $query = trim($query);
aa004b1a 243 if (empty ($query) or '--' == substr ($query, 0, 2))
96e102b2
DO
244 continue;
245 $nq++;
b2bdfd89
DO
246 if ($dbxlink->exec ($query) === FALSE)
247 {
248 $nerrs++;
249 $errlist[] = $query;
250 }
96e102b2 251 }
b2bdfd89 252 echo "<td>${nq}</td><td>${nerrs}</td></tr>\n";
f92287f4 253 }
3fb336f6 254 // (re)load dictionary by pure PHP means w/o any external file
20ba7f38 255 echo "<tr><td>dictionary</td>";
3fb336f6 256 $nq = $nerrs = 0;
3fb336f6 257 $dictq = array();
ca3d68bd
DO
258 foreach (reloadDictionary() as $query)
259 {
260 $nq++;
261 if ($dbxlink->exec ($query) === FALSE)
3fb336f6 262 {
ca3d68bd
DO
263 $nerrs++;
264 $errlist[] = $query;
3fb336f6 265 }
ca3d68bd 266 }
3fb336f6
DO
267 echo "<td>${nq}</td><td>${nerrs}</td></tr>\n";
268
96e102b2 269 echo '</table>';
b2bdfd89
DO
270 if (count ($errlist))
271 {
272 echo '<pre>The following queries failed:\n';
273 foreach ($errlist as $q)
274 echo "${q}\n\n";
275 echo '</pre>';
276 return FALSE;
277 }
0e7f2155
DO
278 return TRUE;
279}
f48dc2cc 280
96e102b2
DO
281function init_database_dynamic ()
282{
283 connect_to_db();
284 global $dbxlink;
43f06d53 285 if (!isset ($_REQUEST['password']) or empty ($_REQUEST['password']))
96e102b2
DO
286 {
287 $result = $dbxlink->query ('select count(user_id) from UserAccount where user_id = 1');
288 $row = $result->fetch (PDO::FETCH_NUM);
289 $nrecs = $row[0];
290 $result->closeCursor();
291 if (!$nrecs)
292 {
293 echo '<table border=1>';
294 echo '<caption>Administrator password not set</caption>';
295 echo '<tr><td><input type=password name=password></td></tr>';
296 echo '</table>';
297 }
43f06d53 298 return FALSE;
96e102b2
DO
299 }
300 else
301 {
93bdb7ba
DO
302 // Never send cleartext password over the wire.
303 $hash = sha1 ($_REQUEST['password']);
79b8ad1e 304 $query = "INSERT INTO `UserAccount` (`user_id`, `user_name`, `user_password_hash`, `user_realname`) " .
93bdb7ba 305 "VALUES (1,'admin','${hash}','RackTables Administrator')";
43f06d53
DO
306 $result = $dbxlink->exec ($query);
307 echo "Administrator password has been set successfully.<br>";
308 return TRUE;
96e102b2 309 }
96e102b2
DO
310}
311
0e7f2155 312function congrats ()
f48dc2cc 313{
01539ac3 314 echo 'Congratulations! RackTables installation is complete. After pressing Proceed you will ';
ad592f37
DO
315 echo 'enter the system. Authenticate with <strong>admin</strong> username.<br>RackTables project has a ';
316 echo "<a href='http://sourceforge.net/apps/mediawiki/racktables/index.php?title=RackTablesAdminGuide'>";
317 echo "wiki</a> and a ";
318 echo "<a href='http://www.freelists.org/list/racktables-users'>mailing list</a> for users. Have fun.<br>";
0e7f2155 319 return TRUE;
f48dc2cc
DO
320}
321
aa004b1a
DO
322function get_pseudo_file ($name)
323{
324 switch ($name)
325 {
326 case 'structure':
327 return <<<END_OF_FILE
328alter database character set utf8;
329set names 'utf8';
330SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
331
332CREATE TABLE `Atom` (
333 `molecule_id` int(10) unsigned default NULL,
334 `rack_id` int(10) unsigned default NULL,
335 `unit_no` int(10) unsigned default NULL,
336 `atom` enum('front','interior','rear') default NULL
337) ENGINE=InnoDB;
338
339CREATE TABLE `Attribute` (
340 `id` int(10) unsigned NOT NULL auto_increment,
341 `type` enum('string','uint','float','dict') default NULL,
342 `name` char(64) default NULL,
343 PRIMARY KEY (`id`),
344 UNIQUE KEY `name` (`name`)
345) ENGINE=MyISAM AUTO_INCREMENT=10000;
346
347CREATE TABLE `AttributeMap` (
348 `objtype_id` int(10) unsigned NOT NULL default '1',
349 `attr_id` int(10) unsigned NOT NULL default '1',
350 `chapter_id` int(10) unsigned default NULL,
351 UNIQUE KEY `objtype_id` (`objtype_id`,`attr_id`)
352) ENGINE=InnoDB;
353
354CREATE TABLE `AttributeValue` (
355 `object_id` int(10) unsigned default NULL,
356 `attr_id` int(10) unsigned default NULL,
357 `string_value` char(128) default NULL,
358 `uint_value` int(10) unsigned default NULL,
359 `float_value` float default NULL,
360 UNIQUE KEY `object_id` (`object_id`,`attr_id`),
361 CONSTRAINT `AttributeValue-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
362) ENGINE=InnoDB;
363
364CREATE TABLE `CachedPAV` (
365 `object_id` int(10) unsigned NOT NULL,
366 `port_name` char(255) NOT NULL,
367 `vlan_id` int(10) unsigned NOT NULL default '0',
368 PRIMARY KEY (`object_id`,`port_name`,`vlan_id`),
369 KEY `vlan_id` (`vlan_id`),
370 CONSTRAINT `CachedPAV-FK-object-port` FOREIGN KEY (`object_id`, `port_name`) REFERENCES `CachedPVM` (`object_id`, `port_name`) ON DELETE CASCADE,
371 CONSTRAINT `CachedPAV-FK-vlan_id` FOREIGN KEY (`vlan_id`) REFERENCES `VLANValidID` (`vlan_id`)
372) ENGINE=InnoDB;
373
374CREATE TABLE `CachedPNV` (
375 `object_id` int(10) unsigned NOT NULL,
376 `port_name` char(255) NOT NULL,
377 `vlan_id` int(10) unsigned NOT NULL default '0',
378 PRIMARY KEY (`object_id`,`port_name`,`vlan_id`),
379 UNIQUE KEY `port_id` (`object_id`,`port_name`),
380 CONSTRAINT `CachedPNV-FK-compound` FOREIGN KEY (`object_id`, `port_name`, `vlan_id`) REFERENCES `CachedPAV` (`object_id`, `port_name`, `vlan_id`) ON DELETE CASCADE
381) ENGINE=InnoDB;
382
383CREATE TABLE `CachedPVM` (
384 `object_id` int(10) unsigned NOT NULL,
385 `port_name` char(255) NOT NULL,
386 `vlan_mode` enum('access','trunk') NOT NULL default 'access',
387 PRIMARY KEY (`object_id`,`port_name`),
388 CONSTRAINT `CachedPVM-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
389) ENGINE=InnoDB;
390
391CREATE TABLE `Chapter` (
392 `id` int(10) unsigned NOT NULL auto_increment,
393 `sticky` enum('yes','no') default 'no',
394 `name` char(128) NOT NULL,
395 PRIMARY KEY (`id`),
396 UNIQUE KEY `name` (`name`)
397) ENGINE=MyISAM AUTO_INCREMENT=10000;
398
399CREATE TABLE `Config` (
400 `varname` char(32) NOT NULL,
401 `varvalue` char(255) NOT NULL,
402 `vartype` enum('string','uint') NOT NULL default 'string',
403 `emptyok` enum('yes','no') NOT NULL default 'no',
404 `is_hidden` enum('yes','no') NOT NULL default 'yes',
405 `is_userdefined` enum('yes','no') NOT NULL default 'no',
406 `description` text,
407 PRIMARY KEY (`varname`)
408) ENGINE=InnoDB;
409
410CREATE TABLE `Dictionary` (
411 `chapter_id` int(10) unsigned NOT NULL,
412 `dict_key` int(10) unsigned NOT NULL auto_increment,
413 `dict_value` char(255) default NULL,
414 PRIMARY KEY (`dict_key`),
415 UNIQUE KEY `chap_to_val` (`chapter_id`,`dict_value`)
416) ENGINE=MyISAM AUTO_INCREMENT=50000;
417
418CREATE TABLE `File` (
419 `id` int(10) unsigned NOT NULL auto_increment,
420 `name` char(255) NOT NULL,
421 `type` char(255) NOT NULL,
422 `size` int(10) unsigned NOT NULL,
423 `ctime` datetime NOT NULL,
424 `mtime` datetime NOT NULL,
425 `atime` datetime NOT NULL,
426 `thumbnail` longblob,
427 `contents` longblob NOT NULL,
428 `comment` text,
429 PRIMARY KEY (`id`),
430 UNIQUE KEY `name` (`name`)
431) ENGINE=InnoDB;
432
433CREATE TABLE `FileLink` (
434 `id` int(10) unsigned NOT NULL auto_increment,
435 `file_id` int(10) unsigned NOT NULL,
436 `entity_type` enum('ipv4net','ipv4rspool','ipv4vs','object','rack','user','ipv6net') NOT NULL default 'object',
437 `entity_id` int(10) NOT NULL,
438 PRIMARY KEY (`id`),
439 KEY `FileLink-file_id` (`file_id`),
440 UNIQUE KEY `FileLink-unique` (`file_id`,`entity_type`,`entity_id`),
441 CONSTRAINT `FileLink-File_fkey` FOREIGN KEY (`file_id`) REFERENCES `File` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
442) ENGINE=InnoDB;
443
444CREATE TABLE `IPv4Address` (
445 `ip` int(10) unsigned NOT NULL default '0',
446 `name` char(255) NOT NULL default '',
447 `reserved` enum('yes','no') default NULL,
448 PRIMARY KEY (`ip`)
449) ENGINE=InnoDB;
450
451CREATE TABLE `IPv4Allocation` (
452 `object_id` int(10) unsigned NOT NULL default '0',
453 `ip` int(10) unsigned NOT NULL default '0',
454 `name` char(255) NOT NULL default '',
455 `type` enum('regular','shared','virtual','router') default NULL,
456 PRIMARY KEY (`object_id`,`ip`),
457 CONSTRAINT `IPv4Allocation-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
458) ENGINE=InnoDB;
459
460CREATE TABLE `IPv4LB` (
461 `object_id` int(10) unsigned default NULL,
462 `rspool_id` int(10) unsigned default NULL,
463 `vs_id` int(10) unsigned default NULL,
464 `prio` int(10) unsigned default NULL,
465 `vsconfig` text,
466 `rsconfig` text,
467 UNIQUE KEY `LB-VS` (`object_id`,`vs_id`),
468 KEY `IPv4LB-FK-rspool_id` (`rspool_id`),
469 KEY `IPv4LB-FK-vs_id` (`vs_id`),
470 CONSTRAINT `IPv4LB-FK-vs_id` FOREIGN KEY (`vs_id`) REFERENCES `IPv4VS` (`id`),
471 CONSTRAINT `IPv4LB-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`),
472 CONSTRAINT `IPv4LB-FK-rspool_id` FOREIGN KEY (`rspool_id`) REFERENCES `IPv4RSPool` (`id`)
473) ENGINE=InnoDB;
474
475CREATE TABLE `IPv4NAT` (
476 `object_id` int(10) unsigned NOT NULL default '0',
477 `proto` enum('TCP','UDP') NOT NULL default 'TCP',
478 `localip` int(10) unsigned NOT NULL default '0',
479 `localport` smallint(5) unsigned NOT NULL default '0',
480 `remoteip` int(10) unsigned NOT NULL default '0',
481 `remoteport` smallint(5) unsigned NOT NULL default '0',
482 `description` char(255) default NULL,
483 PRIMARY KEY (`object_id`,`proto`,`localip`,`localport`,`remoteip`,`remoteport`),
484 KEY `localip` (`localip`),
485 KEY `remoteip` (`remoteip`),
486 KEY `object_id` (`object_id`),
487 CONSTRAINT `IPv4NAT-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`)
488) ENGINE=InnoDB;
489
490CREATE TABLE `IPv4Network` (
491 `id` int(10) unsigned NOT NULL auto_increment,
492 `ip` int(10) unsigned NOT NULL default '0',
493 `mask` int(10) unsigned NOT NULL default '0',
494 `name` char(255) default NULL,
495 `comment` text,
496 PRIMARY KEY (`id`),
497 UNIQUE KEY `base-len` (`ip`,`mask`)
498) ENGINE=InnoDB;
499
500CREATE TABLE `IPv4RS` (
501 `id` int(10) unsigned NOT NULL auto_increment,
502 `inservice` enum('yes','no') NOT NULL default 'no',
503 `rsip` int(10) unsigned default NULL,
504 `rsport` smallint(5) unsigned default NULL,
505 `rspool_id` int(10) unsigned default NULL,
506 `rsconfig` text,
507 PRIMARY KEY (`id`),
508 UNIQUE KEY `pool-endpoint` (`rspool_id`,`rsip`,`rsport`),
509 CONSTRAINT `IPv4RS-FK` FOREIGN KEY (`rspool_id`) REFERENCES `IPv4RSPool` (`id`) ON DELETE CASCADE
510) ENGINE=InnoDB;
511
512CREATE TABLE `IPv4RSPool` (
513 `id` int(10) unsigned NOT NULL auto_increment,
514 `name` char(255) default NULL,
515 `vsconfig` text,
516 `rsconfig` text,
517 PRIMARY KEY (`id`)
518) ENGINE=InnoDB;
519
520CREATE TABLE `IPv4VS` (
521 `id` int(10) unsigned NOT NULL auto_increment,
522 `vip` int(10) unsigned default NULL,
523 `vport` smallint(5) unsigned default NULL,
524 `proto` enum('TCP','UDP') NOT NULL default 'TCP',
525 `name` char(255) default NULL,
526 `vsconfig` text,
527 `rsconfig` text,
528 PRIMARY KEY (`id`)
529) ENGINE=InnoDB;
530
531CREATE TABLE `IPv6Address` (
532 `ip` binary(16) NOT NULL,
533 `name` char(255) NOT NULL default '',
534 `reserved` enum('yes','no') default NULL,
535 PRIMARY KEY (`ip`)
536) ENGINE=InnoDB;
537
538CREATE TABLE `IPv6Allocation` (
539 `object_id` int(10) unsigned NOT NULL default '0',
540 `ip` binary(16) NOT NULL,
541 `name` char(255) NOT NULL default '',
542 `type` enum('regular','shared','virtual','router') default NULL,
543 PRIMARY KEY (`object_id`,`ip`),
544 CONSTRAINT `IPv6Allocation-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
545) ENGINE=InnoDB;
546
547CREATE TABLE `IPv6Network` (
548 `id` int(10) unsigned NOT NULL auto_increment,
549 `ip` binary(16) NOT NULL,
550 `mask` int(10) unsigned NOT NULL,
551 `last_ip` binary(16) NOT NULL,
552 `name` char(255) default NULL,
553 `comment` text,
554 PRIMARY KEY (`id`),
555 UNIQUE KEY `ip` (`ip`,`mask`)
556) ENGINE=InnoDB;
557
558CREATE TABLE `LDAPCache` (
559 `presented_username` char(64) NOT NULL,
560 `successful_hash` char(40) NOT NULL,
561 `first_success` timestamp NOT NULL default CURRENT_TIMESTAMP,
562 `last_retry` timestamp NOT NULL default '0000-00-00 00:00:00',
563 `displayed_name` char(128) default NULL,
564 `memberof` text,
565 UNIQUE KEY `presented_username` (`presented_username`),
566 KEY `scanidx` (`presented_username`,`successful_hash`)
567) ENGINE=InnoDB;
568
569CREATE TABLE `Link` (
570 `porta` int(10) unsigned NOT NULL default '0',
571 `portb` int(10) unsigned NOT NULL default '0',
572 `cable` char(64) DEFAULT NULL,
573 PRIMARY KEY (`porta`,`portb`),
574 UNIQUE KEY `porta` (`porta`),
575 UNIQUE KEY `portb` (`portb`),
576 CONSTRAINT `Link-FK-a` FOREIGN KEY (`porta`) REFERENCES `Port` (`id`) ON DELETE CASCADE,
577 CONSTRAINT `Link-FK-b` FOREIGN KEY (`portb`) REFERENCES `Port` (`id`) ON DELETE CASCADE
578) ENGINE=InnoDB;
579
580CREATE TABLE `Molecule` (
581 `id` int(10) unsigned NOT NULL auto_increment,
582 PRIMARY KEY (`id`)
583) ENGINE=InnoDB;
584
585CREATE TABLE `MountOperation` (
586 `id` int(10) unsigned NOT NULL auto_increment,
587 `object_id` int(10) unsigned NOT NULL default '0',
588 `ctime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
589 `user_name` char(64) default NULL,
590 `old_molecule_id` int(10) unsigned default NULL,
591 `new_molecule_id` int(10) unsigned default NULL,
592 `comment` text,
593 PRIMARY KEY (`id`),
594 KEY `object_id` (`object_id`),
595 CONSTRAINT `MountOperation-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
596) ENGINE=InnoDB;
597
598CREATE TABLE `ObjectLog` (
599 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
600 `object_id` int(10) unsigned NOT NULL,
601 `user` char(64) NOT NULL,
602 `date` datetime NOT NULL,
603 `content` text NOT NULL,
604 PRIMARY KEY (`id`),
605 KEY `object_id` (`object_id`),
606 KEY `date` (`date`),
607 CONSTRAINT `ObjectLog-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
608) ENGINE=InnoDB;
609
610CREATE TABLE `Port` (
611 `id` int(10) unsigned NOT NULL auto_increment,
612 `object_id` int(10) unsigned NOT NULL default '0',
613 `name` char(255) NOT NULL default '',
614 `iif_id` int(10) unsigned NOT NULL,
615 `type` int(10) unsigned NOT NULL default '0',
616 `l2address` char(64) default NULL,
617 `reservation_comment` char(255) default NULL,
618 `label` char(255) default NULL,
619 PRIMARY KEY (`id`),
620 UNIQUE KEY `object_iif_oif_name` (`object_id`,`iif_id`,`type`,`name`),
621 KEY `type` (`type`),
622 KEY `comment` (`reservation_comment`),
623 KEY `l2address` (`l2address`),
624 KEY `Port-FK-iif-oif` (`iif_id`,`type`),
625 CONSTRAINT `Port-FK-iif-oif` FOREIGN KEY (`iif_id`, `type`) REFERENCES `PortInterfaceCompat` (`iif_id`, `oif_id`),
626 CONSTRAINT `Port-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
627) ENGINE=InnoDB;
628
629CREATE TABLE `PortAllowedVLAN` (
630 `object_id` int(10) unsigned NOT NULL,
631 `port_name` char(255) NOT NULL,
632 `vlan_id` int(10) unsigned NOT NULL default '0',
633 PRIMARY KEY (`object_id`,`port_name`,`vlan_id`),
634 KEY `vlan_id` (`vlan_id`),
635 CONSTRAINT `PortAllowedVLAN-FK-object-port` FOREIGN KEY (`object_id`, `port_name`) REFERENCES `PortVLANMode` (`object_id`, `port_name`) ON DELETE CASCADE,
636 CONSTRAINT `PortAllowedVLAN-FK-vlan_id` FOREIGN KEY (`vlan_id`) REFERENCES `VLANValidID` (`vlan_id`)
637) ENGINE=InnoDB;
638
639CREATE TABLE `PortCompat` (
640 `type1` int(10) unsigned NOT NULL default '0',
641 `type2` int(10) unsigned NOT NULL default '0',
642 UNIQUE KEY `type1_2` (`type1`,`type2`),
643 KEY `type2` (`type2`)
644) ENGINE=InnoDB;
645
646CREATE TABLE `PortInnerInterface` (
647 `id` int(10) unsigned NOT NULL,
648 `iif_name` char(16) NOT NULL,
649 PRIMARY KEY (`id`),
650 UNIQUE KEY `iif_name` (`iif_name`)
651) ENGINE=InnoDB;
652
653CREATE TABLE `PortInterfaceCompat` (
654 `iif_id` int(10) unsigned NOT NULL,
655 `oif_id` int(10) unsigned NOT NULL,
656 UNIQUE KEY `pair` (`iif_id`,`oif_id`),
657 CONSTRAINT `PortInterfaceCompat-FK-iif_id` FOREIGN KEY (`iif_id`) REFERENCES `PortInnerInterface` (`id`)
658) ENGINE=InnoDB;
659
660CREATE TABLE `PortNativeVLAN` (
661 `object_id` int(10) unsigned NOT NULL,
662 `port_name` char(255) NOT NULL,
663 `vlan_id` int(10) unsigned NOT NULL default '0',
664 PRIMARY KEY (`object_id`,`port_name`,`vlan_id`),
665 UNIQUE KEY `port_id` (`object_id`,`port_name`),
666 CONSTRAINT `PortNativeVLAN-FK-compound` FOREIGN KEY (`object_id`, `port_name`, `vlan_id`) REFERENCES `PortAllowedVLAN` (`object_id`, `port_name`, `vlan_id`) ON DELETE CASCADE
667) ENGINE=InnoDB;
668
669CREATE TABLE `PortVLANMode` (
670 `object_id` int(10) unsigned NOT NULL,
671 `port_name` char(255) NOT NULL,
672 `vlan_mode` enum('access','trunk') NOT NULL default 'access',
673 PRIMARY KEY (`object_id`,`port_name`),
674 CONSTRAINT `PortVLANMode-FK-object-port` FOREIGN KEY (`object_id`, `port_name`) REFERENCES `CachedPVM` (`object_id`, `port_name`)
675) ENGINE=InnoDB;
676
677CREATE TABLE `Rack` (
678 `id` int(10) unsigned NOT NULL auto_increment,
679 `name` char(255) default NULL,
680 `row_id` int(10) unsigned NOT NULL default '1',
681 `height` tinyint(3) unsigned NOT NULL default '42',
682 `comment` text,
683 `thumb_data` blob,
684 PRIMARY KEY (`id`),
685 UNIQUE KEY `name_in_row` (`row_id`,`name`),
686 CONSTRAINT `Rack-FK-row_id` FOREIGN KEY (`row_id`) REFERENCES `RackRow` (`id`)
687) ENGINE=InnoDB;
688
689CREATE TABLE `RackHistory` (
690 `id` int(10) unsigned default NULL,
691 `name` char(255) default NULL,
692 `row_id` int(10) unsigned default NULL,
693 `height` tinyint(3) unsigned default NULL,
694 `comment` text,
695 `thumb_data` blob,
696 `ctime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
697 `user_name` char(64) default NULL
698) ENGINE=InnoDB;
699
700CREATE TABLE `RackObject` (
701 `id` int(10) unsigned NOT NULL auto_increment,
702 `name` char(255) default NULL,
703 `label` char(255) default NULL,
704 `barcode` char(16) default NULL,
705 `objtype_id` int(10) unsigned NOT NULL default '1',
706 `asset_no` char(64) default NULL,
707 `has_problems` enum('yes','no') NOT NULL default 'no',
708 `comment` text,
709 PRIMARY KEY (`id`),
710 UNIQUE KEY `RackObject_asset_no` (`asset_no`),
711 UNIQUE KEY `name` (`name`),
712 UNIQUE KEY `barcode` (`barcode`)
713) ENGINE=InnoDB;
714
715CREATE TABLE `RackObjectHistory` (
716 `id` int(10) unsigned default NULL,
717 `name` char(255) default NULL,
718 `label` char(255) default NULL,
719 `barcode` char(16) default NULL,
720 `objtype_id` int(10) unsigned default NULL,
721 `asset_no` char(64) default NULL,
722 `has_problems` enum('yes','no') NOT NULL default 'no',
723 `comment` text,
724 `ctime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
725 `user_name` char(64) default NULL,
726 KEY `id` (`id`),
727 CONSTRAINT `RackObjectHistory-FK-object_id` FOREIGN KEY (`id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
728) ENGINE=InnoDB;
729
730CREATE TABLE `RackRow` (
731 `id` int(10) unsigned NOT NULL auto_increment,
732 `name` char(255) NOT NULL,
733 PRIMARY KEY (`id`),
734 UNIQUE KEY `name` (`name`)
735) ENGINE=InnoDB;
736
737CREATE TABLE `RackSpace` (
738 `rack_id` int(10) unsigned NOT NULL default '0',
739 `unit_no` int(10) unsigned NOT NULL default '0',
740 `atom` enum('front','interior','rear') NOT NULL default 'interior',
741 `state` enum('A','U','T','W') NOT NULL default 'A',
742 `object_id` int(10) unsigned default NULL,
743 PRIMARY KEY (`rack_id`,`unit_no`,`atom`),
744 KEY `RackSpace_object_id` (`object_id`),
745 CONSTRAINT `RackSpace-FK-rack_id` FOREIGN KEY (`rack_id`) REFERENCES `Rack` (`id`),
746 CONSTRAINT `RackSpace-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
747) ENGINE=InnoDB;
748
749CREATE TABLE `Script` (
750 `script_name` char(64) NOT NULL,
751 `script_text` longtext,
752 PRIMARY KEY (`script_name`)
753) ENGINE=InnoDB;
754
755CREATE TABLE `TagStorage` (
756 `entity_realm` enum('file','ipv4net','ipv4vs','ipv4rspool','object','rack','user','ipv6net') NOT NULL default 'object',
757 `entity_id` int(10) unsigned NOT NULL,
758 `tag_id` int(10) unsigned NOT NULL default '0',
759 UNIQUE KEY `entity_tag` (`entity_realm`,`entity_id`,`tag_id`),
760 KEY `entity_id` (`entity_id`),
761 KEY `TagStorage-FK-tag_id` (`tag_id`),
762 CONSTRAINT `TagStorage-FK-tag_id` FOREIGN KEY (`tag_id`) REFERENCES `TagTree` (`id`)
763) ENGINE=InnoDB;
764
765CREATE TABLE `TagTree` (
766 `id` int(10) unsigned NOT NULL auto_increment,
767 `parent_id` int(10) unsigned default NULL,
768 `tag` char(255) default NULL,
769 PRIMARY KEY (`id`),
770 UNIQUE KEY `tag` (`tag`),
771 KEY `TagTree-K-parent_id` (`parent_id`),
772 CONSTRAINT `TagTree-K-parent_id` FOREIGN KEY (`parent_id`) REFERENCES `TagTree` (`id`)
773) ENGINE=InnoDB;
774
775CREATE TABLE `UserAccount` (
776 `user_id` int(10) unsigned NOT NULL auto_increment,
777 `user_name` char(64) NOT NULL default '',
778 `user_password_hash` char(40) default NULL,
779 `user_realname` char(64) default NULL,
780 PRIMARY KEY (`user_id`),
781 UNIQUE KEY `user_name` (`user_name`)
782) ENGINE=MyISAM AUTO_INCREMENT=10000;
783
784CREATE TABLE `UserConfig` (
785 `varname` char(32) NOT NULL,
786 `varvalue` char(255) NOT NULL,
787 `user` char(64) NOT NULL,
788 UNIQUE KEY `user_varname` (`user`,`varname`)
789) ENGINE=InnoDB;
790
791CREATE TABLE `VLANDescription` (
792 `domain_id` int(10) unsigned NOT NULL,
793 `vlan_id` int(10) unsigned NOT NULL default '0',
794 `vlan_type` enum('ondemand','compulsory','alien') NOT NULL default 'ondemand',
795 `vlan_descr` char(255) default NULL,
796 PRIMARY KEY (`domain_id`,`vlan_id`),
797 KEY `vlan_id` (`vlan_id`),
798 CONSTRAINT `VLANDescription-FK-domain_id` FOREIGN KEY (`domain_id`) REFERENCES `VLANDomain` (`id`) ON DELETE CASCADE,
799 CONSTRAINT `VLANDescription-FK-vlan_id` FOREIGN KEY (`vlan_id`) REFERENCES `VLANValidID` (`vlan_id`)
800) ENGINE=InnoDB;
801
802CREATE TABLE `VLANDomain` (
803 `id` int(10) unsigned NOT NULL auto_increment,
804 `description` char(255) default NULL,
805 PRIMARY KEY (`id`),
806 UNIQUE KEY `description` (`description`)
807) ENGINE=InnoDB;
808
809CREATE TABLE `VLANIPv4` (
810 `domain_id` int(10) unsigned NOT NULL,
811 `vlan_id` int(10) unsigned NOT NULL,
812 `ipv4net_id` int(10) unsigned NOT NULL,
813 UNIQUE KEY `network-domain` (`ipv4net_id`,`domain_id`),
814 KEY `VLANIPv4-FK-compound` (`domain_id`,`vlan_id`),
815 CONSTRAINT `VLANIPv4-FK-compound` FOREIGN KEY (`domain_id`, `vlan_id`) REFERENCES `VLANDescription` (`domain_id`, `vlan_id`) ON DELETE CASCADE,
816 CONSTRAINT `VLANIPv4-FK-ipv4net_id` FOREIGN KEY (`ipv4net_id`) REFERENCES `IPv4Network` (`id`) ON DELETE CASCADE
817) ENGINE=InnoDB;
818
819CREATE TABLE `VLANIPv6` (
820 `domain_id` int(10) unsigned NOT NULL,
821 `vlan_id` int(10) unsigned NOT NULL,
822 `ipv6net_id` int(10) unsigned NOT NULL,
823 UNIQUE KEY `network-domain` (`ipv6net_id`,`domain_id`),
824 KEY `VLANIPv6-FK-compound` (`domain_id`,`vlan_id`),
825 CONSTRAINT `VLANIPv6-FK-compound` FOREIGN KEY (`domain_id`, `vlan_id`) REFERENCES `VLANDescription` (`domain_id`, `vlan_id`) ON DELETE CASCADE,
826 CONSTRAINT `VLANIPv6-FK-ipv6net_id` FOREIGN KEY (`ipv6net_id`) REFERENCES `IPv6Network` (`id`) ON DELETE CASCADE
827) ENGINE=InnoDB;
828
829CREATE TABLE `VLANSTRule` (
830 `vst_id` int(10) unsigned NOT NULL,
831 `rule_no` int(10) unsigned NOT NULL,
832 `port_pcre` char(255) NOT NULL,
833 `port_role` enum('access','trunk','anymode','uplink','downlink','none') NOT NULL default 'none',
834 `wrt_vlans` char(255) default NULL,
835 `description` char(255) default NULL,
836 UNIQUE KEY `vst-rule` (`vst_id`,`rule_no`),
837 CONSTRAINT `VLANSTRule-FK-vst_id` FOREIGN KEY (`vst_id`) REFERENCES `VLANSwitchTemplate` (`id`) ON DELETE CASCADE
838) ENGINE=InnoDB;
839
840CREATE TABLE `VLANSwitch` (
841 `object_id` int(10) unsigned NOT NULL,
842 `domain_id` int(10) unsigned NOT NULL,
843 `template_id` int(10) unsigned NOT NULL,
844 `mutex_rev` int(10) unsigned NOT NULL default '0',
845 `out_of_sync` enum('yes','no') NOT NULL default 'yes',
846 `last_errno` int(10) unsigned NOT NULL default '0',
847 `last_change` timestamp NOT NULL default '0000-00-00 00:00:00',
848 `last_push_started` timestamp NOT NULL default '0000-00-00 00:00:00',
849 `last_push_finished` timestamp NOT NULL default '0000-00-00 00:00:00',
850 `last_error_ts` timestamp NOT NULL default '0000-00-00 00:00:00',
851 UNIQUE KEY `object_id` (`object_id`),
852 KEY `domain_id` (`domain_id`),
853 KEY `template_id` (`template_id`),
854 KEY `out_of_sync` (`out_of_sync`),
855 KEY `last_errno` (`last_errno`),
856 CONSTRAINT `VLANSwitch-FK-domain_id` FOREIGN KEY (`domain_id`) REFERENCES `VLANDomain` (`id`),
857 CONSTRAINT `VLANSwitch-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`),
858 CONSTRAINT `VLANSwitch-FK-template_id` FOREIGN KEY (`template_id`) REFERENCES `VLANSwitchTemplate` (`id`)
859) ENGINE=InnoDB;
860
861CREATE TABLE `VLANSwitchTemplate` (
862 `id` int(10) unsigned NOT NULL auto_increment,
863 `max_local_vlans` int(10) unsigned default NULL,
864 `description` char(255) default NULL,
865 `mutex_rev` int(10) NOT NULL,
866 `saved_by` char(64) NOT NULL,
867 PRIMARY KEY (`id`),
868 UNIQUE KEY `description` (`description`)
869) ENGINE=InnoDB;
870
871CREATE TABLE `VLANValidID` (
872 `vlan_id` int(10) unsigned NOT NULL default '1',
873 PRIMARY KEY (`vlan_id`)
874) ENGINE=InnoDB;
875
876SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
877END_OF_FILE;
878##########################################################################
879 case 'dictbase':
880 return <<<END_OF_FILE
aa004b1a
DO
881INSERT INTO `Attribute` (`id`, `type`, `name`) VALUES
882(1,'string','OEM S/N 1'),
883(2,'dict','HW type'),
884(3,'string','FQDN'),
885(4,'dict','SW type'),
886(5,'string','SW version'),
887(6,'uint','number of ports'),
888(7,'float','max. current, Ampers'),
889(8,'float','power load, percents'),
890(14,'string','contact person'),
891(13,'float','max power, Watts'),
892(16,'uint','flash memory, MB'),
893(17,'uint','DRAM, MB'),
894(18,'uint','CPU, MHz'),
895(20,'string','OEM S/N 2'),
896(21,'string','support contract expiration'),
897(22,'string','HW warranty expiration'),
898(24,'string','SW warranty expiration'),
899(25,'string','UUID');
900
901INSERT INTO `AttributeMap` (`objtype_id`, `attr_id`, `chapter_id`) VALUES
902(2,1,NULL),
903(2,2,27),
904(2,3,NULL),
905(2,5,NULL),
906(4,1,NULL),
907(4,2,11),
908(4,3,NULL),
909(4,4,13),
910(4,14,NULL),
911(4,21,NULL),
912(4,22,NULL),
913(4,25,NULL),
914(4,24,NULL),
915(5,1,NULL),
916(5,2,18),
917(6,1,NULL),
918(6,2,19),
919(6,20,NULL),
920(7,1,NULL),
921(7,2,17),
922(7,3,NULL),
923(7,4,16),
924(7,5,NULL),
925(7,14,NULL),
926(7,16,NULL),
927(7,17,NULL),
928(7,18,NULL),
929(7,21,NULL),
930(7,22,NULL),
931(7,24,NULL),
932(8,1,NULL),
933(8,2,12),
934(8,3,NULL),
935(8,4,14),
936(8,5,NULL),
937(8,14,NULL),
938(8,16,NULL),
939(8,17,NULL),
940(8,18,NULL),
941(8,20,NULL),
942(8,21,NULL),
943(8,22,NULL),
944(8,24,NULL),
945(9,6,NULL),
946(12,1,NULL),
947(12,3,NULL),
948(12,7,NULL),
949(12,8,NULL),
950(12,13,NULL),
951(12,20,NULL),
952(445,1,NULL),
953(445,2,21),
954(445,3,NULL),
955(445,5,NULL),
956(445,14,NULL),
957(445,22,NULL),
958(447,1,NULL),
959(447,2,22),
960(447,3,NULL),
961(447,5,NULL),
962(447,14,NULL),
963(447,22,NULL),
964(15,2,23),
965(798,1,NULL),
966(798,2,24),
967(798,3,NULL),
968(798,5,NULL),
969(798,14,NULL),
970(798,16,NULL),
971(798,17,NULL),
972(798,18,NULL),
973(798,20,NULL),
974(798,21,NULL),
975(798,22,NULL),
976(798,24,NULL),
977(965,1,NULL),
978(965,3,NULL),
979(965,2,25),
980(1055,2,26),
981(1323,1,NULL),
982(1323,2,28),
983(1323,3,NULL),
984(1323,5,NULL);
985
986INSERT INTO `Chapter` (`id`, `sticky`, `name`) VALUES
987(1,'yes','RackObjectType'),
988(2,'yes','PortOuterInterface'),
989(11,'no','server models'),
990(12,'no','network switch models'),
991(13,'no','server OS type'),
992(14,'no','switch OS type'),
993(16,'no','router OS type'),
994(17,'no','router models'),
995(18,'no','disk array models'),
996(19,'no','tape library models'),
997(21,'no','KVM switch models'),
998(22,'no','multiplexer models'),
999(23,'no','console models'),
1000(24,'no','network security models'),
1001(25,'no','wireless models'),
1002(26,'no','fibre channel switch models'),
1003(27,'no','PDU models'),
1004(28,'no','Voice/video hardware');
1005
1006INSERT INTO `PortInnerInterface` VALUES
1007(1,'hardwired'),
1008(2,'SFP-100'),
1009(3,'GBIC'),
1010(4,'SFP-1000'),
1011(5,'XENPAK'),
1012(6,'X2'),
1013(7,'XPAK'),
1014(8,'XFP'),
1015(9,'SFP+');
1016
1017INSERT INTO `PortInterfaceCompat` VALUES
1018(2,1208),(2,1195),(2,1196),(2,1197),(2,1198),(2,1199),(2,1200),(2,1201),
1019(3,1078),(3,24),(3,34),(3,1202),(3,1203),(3,1204),(3,1205),(3,1206),(3,1207),
1020(4,1077),(4,24),(4,34),(4,1202),(4,1203),(4,1204),(4,1205),(4,1206),(4,1207),
1021(5,1079),(5,30),(5,35),(5,36),(5,37),(5,38),(5,39),(5,40),
1022(6,1080),(6,30),(6,35),(6,36),(6,37),(6,38),(6,39),(6,40),
1023(7,1081),(7,30),(7,35),(7,36),(7,37),(7,38),(7,39),(7,40),
1024(8,1082),(8,30),(8,35),(8,36),(8,37),(8,38),(8,39),(8,40),
1025(9,1084),(9,30),(9,35),(9,36),(9,37),(9,38),(9,39),(9,40),
1026(1,16),(1,19),(1,24),(1,29),(1,31),(1,33),(1,446),(1,681),(1,682),(1,1322);
1027
1028INSERT INTO `PortCompat` (`type1`, `type2`) VALUES
1029(17,17),
1030(18,18),
1031(19,19),
1032(20,20),
1033(21,21),
1034(21,1195),
1035(22,22),
1036(22,1196),
1037(23,23),
1038(23,1196),
1039(24,24),
1040(25,25),
1041(26,26),
1042(27,27),
1043(28,28),
1044(18,19),
1045(19,18),
1046(18,24),
1047(24,18),
1048(19,24),
1049(24,19),
1050(29,29),
1051(20,21),
1052(20,1083),
1053(20,1195),
1054(21,20),
1055(21,1083),
1056(22,23),
1057(23,22),
1058(25,26),
1059(25,1202),
1060(26,25),
1061(26,1202),
1062(27,28),
1063(27,1204),
1064(28,27),
1065(28,1204),
1066(30,30),
1067(16,1322),
1068(1322,16),
1069(29,681),
1070(29,682),
1071(32,32),
1072(33,446),
1073(34,34),
1074(35,35),
1075(36,36),
1076(37,37),
1077(38,38),
1078(39,39),
1079(40,40),
1080(41,41),
1081(439,439),
1082(446,33),
1083(681,29),
1084(681,681),
1085(681,682),
1086(682,29),
1087(682,681),
1088(682,682),
1089(1077,1077),
1090(1083,20),
1091(1083,21),
1092(1083,1083),
1093(1083,1195),
1094(1084,1084),
1095(1087,1087),
1096(1195,20),
1097(1195,21),
1098(1195,1083),
1099(1195,1195),
1100(1196,22),
1101(1196,23),
1102(1196,1196),
1103(1197,1197),
1104(1198,1199),
1105(1199,1198),
1106(1200,1200),
1107(1201,1201),
1108(1202,25),
1109(1202,26),
1110(1202,1202),
1111(1203,1203),
1112(1204,27),
1113(1204,28),
1114(1204,1204),
1115(1205,1205),
1116(1206,1207),
1117(1207,1206),
1118(1209,1209),
1119(1210,1210),
1120(1211,1211),
1121(1212,1212),
1122(1213,1213),
1123(1214,1214),
1124(1215,1215),
1125(1216,1216),
1126(1217,1217),
1127(1218,1218),
1128(1219,1219),
1129(1220,1220),
1130(1221,1221),
1131(1222,1222),
1132(1223,1223),
1133(1224,1224),
1134(1225,1225),
1135(1226,1226),
1136(1227,1227),
1137(1228,1228),
1138(1229,1229),
1139(1230,1230),
1140(1231,1231),
1141(1232,1232),
1142(1233,1233),
1143(1234,1234),
1144(1235,1235),
1145(1236,1236),
1146(1237,1237),
1147(1238,1238),
1148(1239,1239),
1149(1240,1240),
1150(1241,1241),
1151(1242,1242),
1152(1243,1243),
1153(1244,1244),
1154(1245,1245),
1155(1246,1246),
1156(1247,1247),
1157(1248,1248),
1158(1249,1249),
1159(1250,1250),
1160(1251,1251),
1161(1252,1252),
1162(1253,1253),
1163(1254,1254),
1164(1255,1255),
1165(1256,1256),
1166(1257,1257),
1167(1258,1258),
1168(1259,1259),
1169(1260,1260),
1170(1261,1261),
1171(1262,1262),
1172(1263,1263),
1173(1264,1264),
1174(1265,1265),
1175(1266,1266),
1176(1267,1267),
1177(1268,1268),
1178(1269,1269),
1179(1270,1270),
1180(1271,1271),
1181(1272,1272),
1182(1273,1273),
1183(1274,1274),
1184(1275,1275),
1185(1276,1276),
1186(1277,1277),
1187(1278,1278),
1188(1279,1279),
1189(1280,1280),
1190(1281,1281),
1191(1282,1282),
1192(1283,1283),
1193(1284,1284),
1194(1285,1285),
1195(1286,1286),
1196(1287,1287),
1197(1288,1288),
1198(1289,1289),
1199(1290,1290),
1200(1291,1291),
1201(1292,1292),
1202(1293,1293),
1203(1294,1294),
1204(1295,1295),
1205(1296,1296),
1206(1297,1297),
1207(1298,1298),
1208(1299,1299),
1209(1300,1300),
1210(1316,1316);
1211
1212INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, is_userdefined, description) VALUES
1213('color_F','8fbfbf','string','no','yes','no','HSV: 180-25-75. Free atoms, they are available for allocation to objects.'),
1214('color_A','bfbfbf','string','no','yes','no','HSV: 0-0-75. Absent atoms.'),
1215('color_U','bf8f8f','string','no','yes','no','HSV: 0-25-75. Unusable atoms. Some problems keep them from being free.'),
1216('color_T','408080','string','no','yes','no','HSV: 180-50-50. Taken atoms, object_id should be set for such.'),
1217('color_Th','80ffff','string','no','yes','no','HSV: 180-50-100. Taken atoms with highlight. They are not stored in the database and are only used for highlighting.'),
1218('color_Tw','804040','string','no','yes','no','HSV: 0-50-50. Taken atoms with object problem. This is detected at runtime.'),
1219('color_Thw','ff8080','string','no','yes','no','HSV: 0-50-100. An object can be both current and problematic. We run highlightObject() first and markupObjectProblems() second.'),
1220('MASSCOUNT','15','uint','no','no','yes','&quot;Fast&quot; form is this many records tall'),
1221('MAXSELSIZE','30','uint','no','no','yes','&lt;SELECT&gt; lists height'),
1222('enterprise','MyCompanyName','string','no','no','no','Organization name'),
1223('ROW_SCALE','2','uint','no','no','yes','Picture scale for rack row display'),
1224('PORTS_PER_ROW','12','uint','no','no','yes','Ports per row in VLANs tab'),
1225('IPV4_ADDRS_PER_PAGE','256','uint','no','no','yes','IPv4 addresses per page'),
1226('DEFAULT_RACK_HEIGHT','42','uint','yes','no','yes','Default rack height'),
1227('DEFAULT_SLB_VS_PORT','','uint','yes','no','yes','Default port of SLB virtual service'),
1228('DEFAULT_SLB_RS_PORT','','uint','yes','no','yes','Default port of SLB real server'),
1229('DETECT_URLS','no','string','yes','no','yes','Detect URLs in text fields'),
1230('RACK_PRESELECT_THRESHOLD','1','uint','no','no','yes','Rack pre-selection threshold'),
1231('DEFAULT_IPV4_RS_INSERVICE','no','string','no','no','yes','Inservice status for new SLB real servers'),
1232('AUTOPORTS_CONFIG','4 = 1*33*kvm + 2*24*eth%u;15 = 1*446*kvm','string','yes','no','no','AutoPorts configuration'),
1233('DEFAULT_OBJECT_TYPE','4','uint','yes','no','yes','Default object type for new objects'),
1234('SHOW_EXPLICIT_TAGS','yes','string','no','no','yes','Show explicit tags'),
1235('SHOW_IMPLICIT_TAGS','yes','string','no','no','yes','Show implicit tags'),
1236('SHOW_AUTOMATIC_TAGS','no','string','no','no','yes','Show automatic tags'),
1237('IPV4_AUTO_RELEASE','1','uint','no','no','yes','Auto-release IPv4 addresses on allocation'),
1238('SHOW_LAST_TAB','no','string','yes','no','yes','Remember last tab shown for each page'),
1239('EXT_IPV4_VIEW','yes','string','no','no','yes','Extended IPv4 view'),
1240('TREE_THRESHOLD','25','uint','yes','no','yes','Tree view auto-collapse threshold'),
1241('IPV4_JAYWALK','no','string','no','no','no','Enable IPv4 address allocations w/o covering network'),
1242('ADDNEW_AT_TOP','yes','string','no','no','yes','Render "add new" line at top of the list'),
1243('IPV4_TREE_SHOW_USAGE','yes','string','no','no','yes','Show address usage in IPv4 tree'),
1244('PREVIEW_TEXT_MAXCHARS','10240','uint','yes','no','yes','Max chars for text file preview'),
1245('PREVIEW_TEXT_ROWS','25','uint','yes','no','yes','Rows for text file preview'),
1246('PREVIEW_TEXT_COLS','80','uint','yes','no','yes','Columns for text file preview'),
1247('PREVIEW_IMAGE_MAXPXS','320','uint','yes','no','yes','Max pixels per axis for image file preview'),
1248('VENDOR_SIEVE','','string','yes','no','yes','Vendor sieve configuration'),
1249('IPV4LB_LISTSRC','{\$typeid_4}','string','yes','no','no','List source: IPv4 load balancers'),
1250('IPV4OBJ_LISTSRC','{\$typeid_4} or {\$typeid_7} or {\$typeid_8} or {\$typeid_12} or {\$typeid_445} or {\$typeid_447} or {\$typeid_798}','string','yes','no','no','List source: IPv4-enabled objects'),
1251('IPV4NAT_LISTSRC','{\$typeid_4} or {\$typeid_7} or {\$typeid_8} or {\$typeid_798}','string','yes','no','no','List source: IPv4 NAT performers'),
1252('ASSETWARN_LISTSRC','{\$typeid_4} or {\$typeid_7} or {\$typeid_8}','string','yes','no','no','List source: object, for which asset tag should be set'),
1253('NAMEWARN_LISTSRC','{\$typeid_4} or {\$typeid_7} or {\$typeid_8}','string','yes','no','no','List source: object, for which common name should be set'),
1254('RACKS_PER_ROW','12','uint','yes','no','yes','Racks per row'),
1255('FILTER_PREDICATE_SIEVE','','string','yes','no','no','Predicate sieve regex(7)'),
1256('FILTER_DEFAULT_ANDOR','or','string','no','no','no','Default list filter boolean operation (or/and)'),
1257('FILTER_SUGGEST_ANDOR','yes','string','no','no','no','Suggest and/or selector in list filter'),
1258('FILTER_SUGGEST_TAGS','yes','string','no','no','no','Suggest tags in list filter'),
1259('FILTER_SUGGEST_PREDICATES','yes','string','no','no','no','Suggest predicates in list filter'),
1260('FILTER_SUGGEST_EXTRA','no','string','no','no','no','Suggest extra expression in list filter'),
1261('DEFAULT_SNMP_COMMUNITY','public','string','no','no','no','Default SNMP Community string'),
1262('IPV4_ENABLE_KNIGHT','yes','string','no','no','no','Enable IPv4 knight feature'),
1263('TAGS_TOPLIST_SIZE','50','uint','yes','no','no','Tags top list size'),
1264('TAGS_QUICKLIST_SIZE','20','uint','no','no','no','Tags quick list size'),
1265('TAGS_QUICKLIST_THRESHOLD','50','uint','yes','no','no','Tags quick list threshold'),
1266('ENABLE_MULTIPORT_FORM','no','string','no','no','no','Enable "Add/update multiple ports" form'),
1267('DEFAULT_PORT_IIF_ID','1','uint','no','no','no','Default port inner interface ID'),
1268('DEFAULT_PORT_OIF_IDS','1=24; 3=1078; 4=1077; 5=1079; 6=1080; 8=1082; 9=1084','string','no','no','no','Default port outer interface IDs'),
1269('IPV4_TREE_RTR_AS_CELL','yes','string','no','no','no','Show full router info for each network in IPv4 tree view'),
1270('PROXIMITY_RANGE','0','uint','yes','no','no','Proximity range (0 is current rack only)'),
1271('VLANSWITCH_LISTSRC', '', 'string', 'yes', 'no', 'yes', 'List of VLAN running switches'),
1272('VLANIPV4NET_LISTSRC', '', 'string', 'yes', 'no', 'yes', 'List of VLAN-based IPv4 networks'),
1273('IPV4_TREE_SHOW_VLAN','yes','string','no','no','yes','Show VLAN for each network in IPv4 tree'),
1274('DEFAULT_VDOM_ID','','uint','yes','no','yes','Default VLAN domain ID'),
1275('DEFAULT_VST_ID','','uint','yes','no','yes','Default VLAN switch template ID'),
1276('8021Q_DEPLOY_MINAGE','300','uint','no','no','no','802.1Q deploy minimum age'),
1277('8021Q_DEPLOY_MAXAGE','3600','uint','no','no','no','802.1Q deploy maximum age'),
1278('8021Q_DEPLOY_RETRY','10800','uint','no','no','no','802.1Q deploy retry timer'),
1279('8021Q_WRI_AFTER_CONFT_LISTSRC','false','string','no','no','no','802.1Q: save device configuration after deploy (RackCode)'),
1280('8021Q_INSTANT_DEPLOY','no','string','no','no','yes','802.1Q: instant deploy'),
1281('STATIC_FILTER','yes','string','no','no','yes','Enable Filter Caching'),
1282('ENABLE_BULKPORT_FORM','yes','string','no','no','yes','Enable "Bulk Port" form'),
1283('CDP_RUNNERS_LISTSRC', '', 'string', 'yes', 'no', 'no', 'List of devices running CDP'),
1284('LLDP_RUNNERS_LISTSRC', '', 'string', 'yes', 'no', 'no', 'List of devices running LLDP'),
1285('HNDP_RUNNERS_LISTSRC', '', 'string', 'yes', 'no', 'no', 'List of devices running HNDP (RackCode)'),
1286('SHRINK_TAG_TREE_ON_CLICK','yes','string','no','no','yes','Dynamically hide useless tags in tagtree'),
1287('MAX_UNFILTERED_ENTITIES','0','uint','no','no','yes','Max item count to display on unfiltered result page'),
1288('SYNCDOMAIN_MAX_PROCESSES','0','uint','yes','no', 'no', 'How many worker proceses syncdomain cron script should create'),
1289('DB_VERSION','0.19.0','string','no','yes','no','Database version.');
1290
1291INSERT INTO `Script` VALUES ('RackCode','allow {\$userid_1}');
1292
1293INSERT INTO VLANValidID (vlan_id) VALUES
1294(1),
1295(2),
1296(3),
1297(4),
1298(5),
1299(6),
1300(7),
1301(8),
1302(9),
1303(10),
1304(11),
1305(12),
1306(13),
1307(14),
1308(15),
1309(16),
1310(17),
1311(18),
1312(19),
1313(20),
1314(21),
1315(22),
1316(23),
1317(24),
1318(25),
1319(26),
1320(27),
1321(28),
1322(29),
1323(30),
1324(31),
1325(32),
1326(33),
1327(34),
1328(35),
1329(36),
1330(37),
1331(38),
1332(39),
1333(40),
1334(41),
1335(42),
1336(43),
1337(44),
1338(45),
1339(46),
1340(47),
1341(48),
1342(49),
1343(50),
1344(51),
1345(52),
1346(53),
1347(54),
1348(55),
1349(56),
1350(57),
1351(58),
1352(59),
1353(60),
1354(61),
1355(62),
1356(63),
1357(64),
1358(65),
1359(66),
1360(67),
1361(68),
1362(69),
1363(70),
1364(71),
1365(72),
1366(73),
1367(74),
1368(75),
1369(76),
1370(77),
1371(78),
1372(79),
1373(80),
1374(81),
1375(82),
1376(83),
1377(84),
1378(85),
1379(86),
1380(87),
1381(88),
1382(89),
1383(90),
1384(91),
1385(92),
1386(93),
1387(94),
1388(95),
1389(96),
1390(97),
1391(98),
1392(99),
1393(100),
1394(101),
1395(102),
1396(103),
1397(104),
1398(105),
1399(106),
1400(107),
1401(108),
1402(109),
1403(110),
1404(111),
1405(112),
1406(113),
1407(114),
1408(115),
1409(116),
1410(117),
1411(118),
1412(119),
1413(120),
1414(121),
1415(122),
1416(123),
1417(124),
1418(125),
1419(126),
1420(127),
1421(128),
1422(129),
1423(130),
1424(131),
1425(132),
1426(133),
1427(134),
1428(135),
1429(136),
1430(137),
1431(138),
1432(139),
1433(140),
1434(141),
1435(142),
1436(143),
1437(144),
1438(145),
1439(146),
1440(147),
1441(148),
1442(149),
1443(150),
1444(151),
1445(152),
1446(153),
1447(154),
1448(155),
1449(156),
1450(157),
1451(158),
1452(159),
1453(160),
1454(161),
1455(162),
1456(163),
1457(164),
1458(165),
1459(166),
1460(167),
1461(168),
1462(169),
1463(170),
1464(171),
1465(172),
1466(173),
1467(174),
1468(175),
1469(176),
1470(177),
1471(178),
1472(179),
1473(180),
1474(181),
1475(182),
1476(183),
1477(184),
1478(185),
1479(186),
1480(187),
1481(188),
1482(189),
1483(190),
1484(191),
1485(192),
1486(193),
1487(194),
1488(195),
1489(196),
1490(197),
1491(198),
1492(199),
1493(200),
1494(201),
1495(202),
1496(203),
1497(204),
1498(205),
1499(206),
1500(207),
1501(208),
1502(209),
1503(210),
1504(211),
1505(212),
1506(213),
1507(214),
1508(215),
1509(216),
1510(217),
1511(218),
1512(219),
1513(220),
1514(221),
1515(222),
1516(223),
1517(224),
1518(225),
1519(226),
1520(227),
1521(228),
1522(229),
1523(230),
1524(231),
1525(232),
1526(233),
1527(234),
1528(235),
1529(236),
1530(237),
1531(238),
1532(239),
1533(240),
1534(241),
1535(242),
1536(243),
1537(244),
1538(245),
1539(246),
1540(247),
1541(248),
1542(249),
1543(250),
1544(251),
1545(252),
1546(253),
1547(254),
1548(255),
1549(256),
1550(257),
1551(258),
1552(259),
1553(260),
1554(261),
1555(262),
1556(263),
1557(264),
1558(265),
1559(266),
1560(267),
1561(268),
1562(269),
1563(270),
1564(271),
1565(272),
1566(273),
1567(274),
1568(275),
1569(276),
1570(277),
1571(278),
1572(279),
1573(280),
1574(281),
1575(282),
1576(283),
1577(284),
1578(285),
1579(286),
1580(287),
1581(288),
1582(289),
1583(290),
1584(291),
1585(292),
1586(293),
1587(294),
1588(295),
1589(296),
1590(297),
1591(298),
1592(299),
1593(300),
1594(301),
1595(302),
1596(303),
1597(304),
1598(305),
1599(306),
1600(307),
1601(308),
1602(309),
1603(310),
1604(311),
1605(312),
1606(313),
1607(314),
1608(315),
1609(316),
1610(317),
1611(318),
1612(319),
1613(320),
1614(321),
1615(322),
1616(323),
1617(324),
1618(325),
1619(326),
1620(327),
1621(328),
1622(329),
1623(330),
1624(331),
1625(332),
1626(333),
1627(334),
1628(335),
1629(336),
1630(337),
1631(338),
1632(339),
1633(340),
1634(341),
1635(342),
1636(343),
1637(344),
1638(345),
1639(346),
1640(347),
1641(348),
1642(349),
1643(350),
1644(351),
1645(352),
1646(353),
1647(354),
1648(355),
1649(356),
1650(357),
1651(358),
1652(359),
1653(360),
1654(361),
1655(362),
1656(363),
1657(364),
1658(365),
1659(366),
1660(367),
1661(368),
1662(369),
1663(370),
1664(371),
1665(372),
1666(373),
1667(374),
1668(375),
1669(376),
1670(377),
1671(378),
1672(379),
1673(380),
1674(381),
1675(382),
1676(383),
1677(384),
1678(385),
1679(386),
1680(387),
1681(388),
1682(389),
1683(390),
1684(391),
1685(392),
1686(393),
1687(394),
1688(395),
1689(396),
1690(397),
1691(398),
1692(399),
1693(400),
1694(401),
1695(402),
1696(403),
1697(404),
1698(405),
1699(406),
1700(407),
1701(408),
1702(409),
1703(410),
1704(411),
1705(412),
1706(413),
1707(414),
1708(415),
1709(416),
1710(417),
1711(418),
1712(419),
1713(420),
1714(421),
1715(422),
1716(423),
1717(424),
1718(425),
1719(426),
1720(427),
1721(428),
1722(429),
1723(430),
1724(431),
1725(432),
1726(433),
1727(434),
1728(435),
1729(436),
1730(437),
1731(438),
1732(439),
1733(440),
1734(441),
1735(442),
1736(443),
1737(444),
1738(445),
1739(446),
1740(447),
1741(448),
1742(449),
1743(450),
1744(451),
1745(452),
1746(453),
1747(454),
1748(455),
1749(456),
1750(457),
1751(458),
1752(459),
1753(460),
1754(461),
1755(462),
1756(463),
1757(464),
1758(465),
1759(466),
1760(467),
1761(468),
1762(469),
1763(470),
1764(471),
1765(472),
1766(473),
1767(474),
1768(475),
1769(476),
1770(477),
1771(478),
1772(479),
1773(480),
1774(481),
1775(482),
1776(483),
1777(484),
1778(485),
1779(486),
1780(487),
1781(488),
1782(489),
1783(490),
1784(491),
1785(492),
1786(493),
1787(494),
1788(495),
1789(496),
1790(497),
1791(498),
1792(499),
1793(500),
1794(501),
1795(502),
1796(503),
1797(504),
1798(505),
1799(506),
1800(507),
1801(508),
1802(509),
1803(510),
1804(511),
1805(512),
1806(513),
1807(514),
1808(515),
1809(516),
1810(517),
1811(518),
1812(519),
1813(520),
1814(521),
1815(522),
1816(523),
1817(524),
1818(525),
1819(526),
1820(527),
1821(528),
1822(529),
1823(530),
1824(531),
1825(532),
1826(533),
1827(534),
1828(535),
1829(536),
1830(537),
1831(538),
1832(539),
1833(540),
1834(541),
1835(542),
1836(543),
1837(544),
1838(545),
1839(546),
1840(547),
1841(548),
1842(549),
1843(550),
1844(551),
1845(552),
1846(553),
1847(554),
1848(555),
1849(556),
1850(557),
1851(558),
1852(559),
1853(560),
1854(561),
1855(562),
1856(563),
1857(564),
1858(565),
1859(566),
1860(567),
1861(568),
1862(569),
1863(570),
1864(571),
1865(572),
1866(573),
1867(574),
1868(575),
1869(576),
1870(577),
1871(578),
1872(579),
1873(580),
1874(581),
1875(582),
1876(583),
1877(584),
1878(585),
1879(586),
1880(587),
1881(588),
1882(589),
1883(590),
1884(591),
1885(592),
1886(593),
1887(594),
1888(595),
1889(596),
1890(597),
1891(598),
1892(599),
1893(600),
1894(601),
1895(602),
1896(603),
1897(604),
1898(605),
1899(606),
1900(607),
1901(608),
1902(609),
1903(610),
1904(611),
1905(612),
1906(613),
1907(614),
1908(615),
1909(616),
1910(617),
1911(618),
1912(619),
1913(620),
1914(621),
1915(622),
1916(623),
1917(624),
1918(625),
1919(626),
1920(627),
1921(628),
1922(629),
1923(630),
1924(631),
1925(632),
1926(633),
1927(634),
1928(635),
1929(636),
1930(637),
1931(638),
1932(639),
1933(640),
1934(641),
1935(642),
1936(643),
1937(644),
1938(645),
1939(646),
1940(647),
1941(648),
1942(649),
1943(650),
1944(651),
1945(652),
1946(653),
1947(654),
1948(655),
1949(656),
1950(657),
1951(658),
1952(659),
1953(660),
1954(661),
1955(662),
1956(663),
1957(664),
1958(665),
1959(666),
1960(667),
1961(668),
1962(669),
1963(670),
1964(671),
1965(672),
1966(673),
1967(674),
1968(675),
1969(676),
1970(677),
1971(678),
1972(679),
1973(680),
1974(681),
1975(682),
1976(683),
1977(684),
1978(685),
1979(686),
1980(687),
1981(688),
1982(689),
1983(690),
1984(691),
1985(692),
1986(693),
1987(694),
1988(695),
1989(696),
1990(697),
1991(698),
1992(699),
1993(700),
1994(701),
1995(702),
1996(703),
1997(704),
1998(705),
1999(706),
2000(707),
2001(708),
2002(709),
2003(710),
2004(711),
2005(712),
2006(713),
2007(714),
2008(715),
2009(716),
2010(717),
2011(718),
2012(719),
2013(720),
2014(721),
2015(722),
2016(723),
2017(724),
2018(725),
2019(726),
2020(727),
2021(728),
2022(729),
2023(730),
2024(731),
2025(732),
2026(733),
2027(734),
2028(735),
2029(736),
2030(737),
2031(738),
2032(739),
2033(740),
2034(741),
2035(742),
2036(743),
2037(744),
2038(745),
2039(746),
2040(747),
2041(748),
2042(749),
2043(750),
2044(751),
2045(752),
2046(753),
2047(754),
2048(755),
2049(756),
2050(757),
2051(758),
2052(759),
2053(760),
2054(761),
2055(762),
2056(763),
2057(764),
2058(765),
2059(766),
2060(767),
2061(768),
2062(769),
2063(770),
2064(771),
2065(772),
2066(773),
2067(774),
2068(775),
2069(776),
2070(777),
2071(778),
2072(779),
2073(780),
2074(781),
2075(782),
2076(783),
2077(784),
2078(785),
2079(786),
2080(787),
2081(788),
2082(789),
2083(790),
2084(791),
2085(792),
2086(793),
2087(794),
2088(795),
2089(796),
2090(797),
2091(798),
2092(799),
2093(800),
2094(801),
2095(802),
2096(803),
2097(804),
2098(805),
2099(806),
2100(807),
2101(808),
2102(809),
2103(810),
2104(811),
2105(812),
2106(813),
2107(814),
2108(815),
2109(816),
2110(817),
2111(818),
2112(819),
2113(820),
2114(821),
2115(822),
2116(823),
2117(824),
2118(825),
2119(826),
2120(827),
2121(828),
2122(829),
2123(830),
2124(831),
2125(832),
2126(833),
2127(834),
2128(835),
2129(836),
2130(837),
2131(838),
2132(839),
2133(840),
2134(841),
2135(842),
2136(843),
2137(844),
2138(845),
2139(846),
2140(847),
2141(848),
2142(849),
2143(850),
2144(851),
2145(852),
2146(853),
2147(854),
2148(855),
2149(856),
2150(857),
2151(858),
2152(859),
2153(860),
2154(861),
2155(862),
2156(863),
2157(864),
2158(865),
2159(866),
2160(867),
2161(868),
2162(869),
2163(870),
2164(871),
2165(872),
2166(873),
2167(874),
2168(875),
2169(876),
2170(877),
2171(878),
2172(879),
2173(880),
2174(881),
2175(882),
2176(883),
2177(884),
2178(885),
2179(886),
2180(887),
2181(888),
2182(889),
2183(890),
2184(891),
2185(892),
2186(893),
2187(894),
2188(895),
2189(896),
2190(897),
2191(898),
2192(899),
2193(900),
2194(901),
2195(902),
2196(903),
2197(904),
2198(905),
2199(906),
2200(907),
2201(908),
2202(909),
2203(910),
2204(911),
2205(912),
2206(913),
2207(914),
2208(915),
2209(916),
2210(917),
2211(918),
2212(919),
2213(920),
2214(921),
2215(922),
2216(923),
2217(924),
2218(925),
2219(926),
2220(927),
2221(928),
2222(929),
2223(930),
2224(931),
2225(932),
2226(933),
2227(934),
2228(935),
2229(936),
2230(937),
2231(938),
2232(939),
2233(940),
2234(941),
2235(942),
2236(943),
2237(944),
2238(945),
2239(946),
2240(947),
2241(948),
2242(949),
2243(950),
2244(951),
2245(952),
2246(953),
2247(954),
2248(955),
2249(956),
2250(957),
2251(958),
2252(959),
2253(960),
2254(961),
2255(962),
2256(963),
2257(964),
2258(965),
2259(966),
2260(967),
2261(968),
2262(969),
2263(970),
2264(971),
2265(972),
2266(973),
2267(974),
2268(975),
2269(976),
2270(977),
2271(978),
2272(979),
2273(980),
2274(981),
2275(982),
2276(983),
2277(984),
2278(985),
2279(986),
2280(987),
2281(988),
2282(989),
2283(990),
2284(991),
2285(992),
2286(993),
2287(994),
2288(995),
2289(996),
2290(997),
2291(998),
2292(999),
2293(1000),
2294(1001),
2295(1002),
2296(1003),
2297(1004),
2298(1005),
2299(1006),
2300(1007),
2301(1008),
2302(1009),
2303(1010),
2304(1011),
2305(1012),
2306(1013),
2307(1014),
2308(1015),
2309(1016),
2310(1017),
2311(1018),
2312(1019),
2313(1020),
2314(1021),
2315(1022),
2316(1023),
2317(1024),
2318(1025),
2319(1026),
2320(1027),
2321(1028),
2322(1029),
2323(1030),
2324(1031),
2325(1032),
2326(1033),
2327(1034),
2328(1035),
2329(1036),
2330(1037),
2331(1038),
2332(1039),
2333(1040),
2334(1041),
2335(1042),
2336(1043),
2337(1044),
2338(1045),
2339(1046),
2340(1047),
2341(1048),
2342(1049),
2343(1050),
2344(1051),
2345(1052),
2346(1053),
2347(1054),
2348(1055),
2349(1056),
2350(1057),
2351(1058),
2352(1059),
2353(1060),
2354(1061),
2355(1062),
2356(1063),
2357(1064),
2358(1065),
2359(1066),
2360(1067),
2361(1068),
2362(1069),
2363(1070),
2364(1071),
2365(1072),
2366(1073),
2367(1074),
2368(1075),
2369(1076),
2370(1077),
2371(1078),
2372(1079),
2373(1080),
2374(1081),
2375(1082),
2376(1083),
2377(1084),
2378(1085),
2379(1086),
2380(1087),
2381(1088),
2382(1089),
2383(1090),
2384(1091),
2385(1092),
2386(1093),
2387(1094),
2388(1095),
2389(1096),
2390(1097),
2391(1098),
2392(1099),
2393(1100),
2394(1101),
2395(1102),
2396(1103),
2397(1104),
2398(1105),
2399(1106),
2400(1107),
2401(1108),
2402(1109),
2403(1110),
2404(1111),
2405(1112),
2406(1113),
2407(1114),
2408(1115),
2409(1116),
2410(1117),
2411(1118),
2412(1119),
2413(1120),
2414(1121),
2415(1122),
2416(1123),
2417(1124),
2418(1125),
2419(1126),
2420(1127),
2421(1128),
2422(1129),
2423(1130),
2424(1131),
2425(1132),
2426(1133),
2427(1134),
2428(1135),
2429(1136),
2430(1137),
2431(1138),
2432(1139),
2433(1140),
2434(1141),
2435(1142),
2436(1143),
2437(1144),
2438(1145),
2439(1146),
2440(1147),
2441(1148),
2442(1149),
2443(1150),
2444(1151),
2445(1152),
2446(1153),
2447(1154),
2448(1155),
2449(1156),
2450(1157),
2451(1158),
2452(1159),
2453(1160),
2454(1161),
2455(1162),
2456(1163),
2457(1164),
2458(1165),
2459(1166),
2460(1167),
2461(1168),
2462(1169),
2463(1170),
2464(1171),
2465(1172),
2466(1173),
2467(1174),
2468(1175),
2469(1176),
2470(1177),
2471(1178),
2472(1179),
2473(1180),
2474(1181),
2475(1182),
2476(1183),
2477(1184),
2478(1185),
2479(1186),
2480(1187),
2481(1188),
2482(1189),
2483(1190),
2484(1191),
2485(1192),
2486(1193),
2487(1194),
2488(1195),
2489(1196),
2490(1197),
2491(1198),
2492(1199),
2493(1200),
2494(1201),
2495(1202),
2496(1203),
2497(1204),
2498(1205),
2499(1206),
2500(1207),
2501(1208),
2502(1209),
2503(1210),
2504(1211),
2505(1212),
2506(1213),
2507(1214),
2508(1215),
2509(1216),
2510(1217),
2511(1218),
2512(1219),
2513(1220),
2514(1221),
2515(1222),
2516(1223),
2517(1224),
2518(1225),
2519(1226),
2520(1227),
2521(1228),
2522(1229),
2523(1230),
2524(1231),
2525(1232),
2526(1233),
2527(1234),
2528(1235),
2529(1236),
2530(1237),
2531(1238),
2532(1239),
2533(1240),
2534(1241),
2535(1242),
2536(1243),
2537(1244),
2538(1245),
2539(1246),
2540(1247),
2541(1248),
2542(1249),
2543(1250),
2544(1251),
2545(1252),
2546(1253),
2547(1254),
2548(1255),
2549(1256),
2550(1257),
2551(1258),
2552(1259),
2553(1260),
2554(1261),
2555(1262),
2556(1263),
2557(1264),
2558(1265),
2559(1266),
2560(1267),
2561(1268),
2562(1269),
2563(1270),
2564(1271),
2565(1272),
2566(1273),
2567(1274),
2568(1275),
2569(1276),
2570(1277),
2571(1278),
2572(1279),
2573(1280),
2574(1281),
2575(1282),
2576(1283),
2577(1284),
2578(1285),
2579(1286),
2580(1287),
2581(1288),
2582(1289),
2583(1290),
2584(1291),
2585(1292),
2586(1293),
2587(1294),
2588(1295),
2589(1296),
2590(1297),
2591(1298),
2592(1299),
2593(1300),
2594(1301),
2595(1302),
2596(1303),
2597(1304),
2598(1305),
2599(1306),
2600(1307),
2601(1308),
2602(1309),
2603(1310),
2604(1311),
2605(1312),
2606(1313),
2607(1314),
2608(1315),
2609(1316),
2610(1317),
2611(1318),
2612(1319),
2613(1320),
2614(1321),
2615(1322),
2616(1323),
2617(1324),
2618(1325),
2619(1326),
2620(1327),
2621(1328),
2622(1329),
2623(1330),
2624(1331),
2625(1332),
2626(1333),
2627(1334),
2628(1335),
2629(1336),
2630(1337),
2631(1338),
2632(1339),
2633(1340),
2634(1341),
2635(1342),
2636(1343),
2637(1344),
2638(1345),
2639(1346),
2640(1347),
2641(1348),
2642(1349),
2643(1350),
2644(1351),
2645(1352),
2646(1353),
2647(1354),
2648(1355),
2649(1356),
2650(1357),
2651(1358),
2652(1359),
2653(1360),
2654(1361),
2655(1362),
2656(1363),
2657(1364),
2658(1365),
2659(1366),
2660(1367),
2661(1368),
2662(1369),
2663(1370),
2664(1371),
2665(1372),
2666(1373),
2667(1374),
2668(1375),
2669(1376),
2670(1377),
2671(1378),
2672(1379),
2673(1380),
2674(1381),
2675(1382),
2676(1383),
2677(1384),
2678(1385),
2679(1386),
2680(1387),
2681(1388),
2682(1389),
2683(1390),
2684(1391),
2685(1392),
2686(1393),
2687(1394),
2688(1395),
2689(1396),
2690(1397),
2691(1398),
2692(1399),
2693(1400),
2694(1401),
2695(1402),
2696(1403),
2697(1404),
2698(1405),
2699(1406),
2700(1407),
2701(1408),
2702(1409),
2703(1410),
2704(1411),
2705(1412),
2706(1413),
2707(1414),
2708(1415),
2709(1416),
2710(1417),
2711(1418),
2712(1419),
2713(1420),
2714(1421),
2715(1422),
2716(1423),
2717(1424),
2718(1425),
2719(1426),
2720(1427),
2721(1428),
2722(1429),
2723(1430),
2724(1431),
2725(1432),
2726(1433),
2727(1434),
2728(1435),
2729(1436),
2730(1437),
2731(1438),
2732(1439),
2733(1440),
2734(1441),
2735(1442),
2736(1443),
2737(1444),
2738(1445),
2739(1446),
2740(1447),
2741(1448),
2742(1449),
2743(1450),
2744(1451),
2745(1452),
2746(1453),
2747(1454),
2748(1455),
2749(1456),
2750(1457),
2751(1458),
2752(1459),
2753(1460),
2754(1461),
2755(1462),
2756(1463),
2757(1464),
2758(1465),
2759(1466),
2760(1467),
2761(1468),
2762(1469),
2763(1470),
2764(1471),
2765(1472),
2766(1473),
2767(1474),
2768(1475),
2769(1476),
2770(1477),
2771(1478),
2772(1479),
2773(1480),
2774(1481),
2775(1482),
2776(1483),
2777(1484),
2778(1485),
2779(1486),
2780(1487),
2781(1488),
2782(1489),
2783(1490),
2784(1491),
2785(1492),
2786(1493),
2787(1494),
2788(1495),
2789(1496),
2790(1497),
2791(1498),
2792(1499),
2793(1500),
2794(1501),
2795(1502),
2796(1503),
2797(1504),
2798(1505),
2799(1506),
2800(1507),
2801(1508),
2802(1509),
2803(1510),
2804(1511),
2805(1512),
2806(1513),
2807(1514),
2808(1515),
2809(1516),
2810(1517),
2811(1518),
2812(1519),
2813(1520),
2814(1521),
2815(1522),
2816(1523),
2817(1524),
2818(1525),
2819(1526),
2820(1527),
2821(1528),
2822(1529),
2823(1530),
2824(1531),
2825(1532),
2826(1533),
2827(1534),
2828(1535),
2829(1536),
2830(1537),
2831(1538),
2832(1539),
2833(1540),
2834(1541),
2835(1542),
2836(1543),
2837(1544),
2838(1545),
2839(1546),
2840(1547),
2841(1548),
2842(1549),
2843(1550),
2844(1551),
2845(1552),
2846(1553),
2847(1554),
2848(1555),
2849(1556),
2850(1557),
2851(1558),
2852(1559),
2853(1560),
2854(1561),
2855(1562),
2856(1563),
2857(1564),
2858(1565),
2859(1566),
2860(1567),
2861(1568),
2862(1569),
2863(1570),
2864(1571),
2865(1572),
2866(1573),
2867(1574),
2868(1575),
2869(1576),
2870(1577),
2871(1578),
2872(1579),
2873(1580),
2874(1581),
2875(1582),
2876(1583),
2877(1584),
2878(1585),
2879(1586),
2880(1587),
2881(1588),
2882(1589),
2883(1590),
2884(1591),
2885(1592),
2886(1593),
2887(1594),
2888(1595),
2889(1596),
2890(1597),
2891(1598),
2892(1599),
2893(1600),
2894(1601),
2895(1602),
2896(1603),
2897(1604),
2898(1605),
2899(1606),
2900(1607),
2901(1608),
2902(1609),
2903(1610),
2904(1611),
2905(1612),
2906(1613),
2907(1614),
2908(1615),
2909(1616),
2910(1617),
2911(1618),
2912(1619),
2913(1620),
2914(1621),
2915(1622),
2916(1623),
2917(1624),
2918(1625),
2919(1626),
2920(1627),
2921(1628),
2922(1629),
2923(1630),
2924(1631),
2925(1632),
2926(1633),
2927(1634),
2928(1635),
2929(1636),
2930(1637),
2931(1638),
2932(1639),
2933(1640),
2934(1641),
2935(1642),
2936(1643),
2937(1644),
2938(1645),
2939(1646),
2940(1647),
2941(1648),
2942(1649),
2943(1650),
2944(1651),
2945(1652),
2946(1653),
2947(1654),
2948(1655),
2949(1656),
2950(1657),
2951(1658),
2952(1659),
2953(1660),
2954(1661),
2955(1662),
2956(1663),
2957(1664),
2958(1665),
2959(1666),
2960(1667),
2961(1668),
2962(1669),
2963(1670),
2964(1671),
2965(1672),
2966(1673),
2967(1674),
2968(1675),
2969(1676),
2970(1677),
2971(1678),
2972(1679),
2973(1680),
2974(1681),
2975(1682),
2976(1683),
2977(1684),
2978(1685),
2979(1686),
2980(1687),
2981(1688),
2982(1689),
2983(1690),
2984(1691),
2985(1692),
2986(1693),
2987(1694),
2988(1695),
2989(1696),
2990(1697),
2991(1698),
2992(1699),
2993(1700),
2994(1701),
2995(1702),
2996(1703),
2997(1704),
2998(1705),
2999(1706),
3000(1707),
3001(1708),
3002(1709),
3003(1710),
3004(1711),
3005(1712),
3006(1713),
3007(1714),
3008(1715),
3009(1716),
3010(1717),
3011(1718),
3012(1719),
3013(1720),
3014(1721),
3015(1722),
3016(1723),
3017(1724),
3018(1725),
3019(1726),
3020(1727),
3021(1728),
3022(1729),
3023(1730),
3024(1731),
3025(1732),
3026(1733),
3027(1734),
3028(1735),
3029(1736),
3030(1737),
3031(1738),
3032(1739),
3033(1740),
3034(1741),
3035(1742),
3036(1743),
3037(1744),
3038(1745),
3039(1746),
3040(1747),
3041(1748),
3042(1749),
3043(1750),
3044(1751),
3045(1752),
3046(1753),
3047(1754),
3048(1755),
3049(1756),
3050(1757),
3051(1758),
3052(1759),
3053(1760),
3054(1761),
3055(1762),
3056(1763),
3057(1764),
3058(1765),
3059(1766),
3060(1767),
3061(1768),
3062(1769),
3063(1770),
3064(1771),
3065(1772),
3066(1773),
3067(1774),
3068(1775),
3069(1776),
3070(1777),
3071(1778),
3072(1779),
3073(1780),
3074(1781),
3075(1782),
3076(1783),
3077(1784),
3078(1785),
3079(1786),
3080(1787),
3081(1788),
3082(1789),
3083(1790),
3084(1791),
3085(1792),
3086(1793),
3087(1794),
3088(1795),
3089(1796),
3090(1797),
3091(1798),
3092(1799),
3093(1800),
3094(1801),
3095(1802),
3096(1803),
3097(1804),
3098(1805),
3099(1806),
3100(1807),
3101(1808),
3102(1809),
3103(1810),
3104(1811),
3105(1812),
3106(1813),
3107(1814),
3108(1815),
3109(1816),
3110(1817),
3111(1818),
3112(1819),
3113(1820),
3114(1821),
3115(1822),
3116(1823),
3117(1824),
3118(1825),
3119(1826),
3120(1827),
3121(1828),
3122(1829),
3123(1830),
3124(1831),
3125(1832),
3126(1833),
3127(1834),
3128(1835),
3129(1836),
3130(1837),
3131(1838),
3132(1839),
3133(1840),
3134(1841),
3135(1842),
3136(1843),
3137(1844),
3138(1845),
3139(1846),
3140(1847),
3141(1848),
3142(1849),
3143(1850),
3144(1851),
3145(1852),
3146(1853),
3147(1854),
3148(1855),
3149(1856),
3150(1857),
3151(1858),
3152(1859),
3153(1860),
3154(1861),
3155(1862),
3156(1863),
3157(1864),
3158(1865),
3159(1866),
3160(1867),
3161(1868),
3162(1869),
3163(1870),
3164(1871),
3165(1872),
3166(1873),
3167(1874),
3168(1875),
3169(1876),
3170(1877),
3171(1878),
3172(1879),
3173(1880),
3174(1881),
3175(1882),
3176(1883),
3177(1884),
3178(1885),
3179(1886),
3180(1887),
3181(1888),
3182(1889),
3183(1890),
3184(1891),
3185(1892),
3186(1893),
3187(1894),
3188(1895),
3189(1896),
3190(1897),
3191(1898),
3192(1899),
3193(1900),
3194(1901),
3195(1902),
3196(1903),
3197(1904),
3198(1905),
3199(1906),
3200(1907),
3201(1908),
3202(1909),
3203(1910),
3204(1911),
3205(1912),
3206(1913),
3207(1914),
3208(1915),
3209(1916),
3210(1917),
3211(1918),
3212(1919),
3213(1920),
3214(1921),
3215(1922),
3216(1923),
3217(1924),
3218(1925),
3219(1926),
3220(1927),
3221(1928),
3222(1929),
3223(1930),
3224(1931),
3225(1932),
3226(1933),
3227(1934),
3228(1935),
3229(1936),
3230(1937),
3231(1938),
3232(1939),
3233(1940),
3234(1941),
3235(1942),
3236(1943),
3237(1944),
3238(1945),
3239(1946),
3240(1947),
3241(1948),
3242(1949),
3243(1950),
3244(1951),
3245(1952),
3246(1953),
3247(1954),
3248(1955),
3249(1956),
3250(1957),
3251(1958),
3252(1959),
3253(1960),
3254(1961),
3255(1962),
3256(1963),
3257(1964),
3258(1965),
3259(1966),
3260(1967),
3261(1968),
3262(1969),
3263(1970),
3264(1971),
3265(1972),
3266(1973),
3267(1974),
3268(1975),
3269(1976),
3270(1977),
3271(1978),
3272(1979),
3273(1980),
3274(1981),
3275(1982),
3276(1983),
3277(1984),
3278(1985),
3279(1986),
3280(1987),
3281(1988),
3282(1989),
3283(1990),
3284(1991),
3285(1992),
3286(1993),
3287(1994),
3288(1995),
3289(1996),
3290(1997),
3291(1998),
3292(1999),
3293(2000),
3294(2001),
3295(2002),
3296(2003),
3297(2004),
3298(2005),
3299(2006),
3300(2007),
3301(2008),
3302(2009),
3303(2010),
3304(2011),
3305(2012),
3306(2013),
3307(2014),
3308(2015),
3309(2016),
3310(2017),
3311(2018),
3312(2019),
3313(2020),
3314(2021),
3315(2022),
3316(2023),
3317(2024),
3318(2025),
3319(2026),
3320(2027),
3321(2028),
3322(2029),
3323(2030),
3324(2031),
3325(2032),
3326(2033),
3327(2034),
3328(2035),
3329(2036),
3330(2037),
3331(2038),
3332(2039),
3333(2040),
3334(2041),
3335(2042),
3336(2043),
3337(2044),
3338(2045),
3339(2046),
3340(2047),
3341(2048),
3342(2049),
3343(2050),
3344(2051),
3345(2052),
3346(2053),
3347(2054),
3348(2055),
3349(2056),
3350(2057),
3351(2058),
3352(2059),
3353(2060),
3354(2061),
3355(2062),
3356(2063),
3357(2064),
3358(2065),
3359(2066),
3360(2067),
3361(2068),
3362(2069),
3363(2070),
3364(2071),
3365(2072),
3366(2073),
3367(2074),
3368(2075),
3369(2076),
3370(2077),
3371(2078),
3372(2079),
3373(2080),
3374(2081),
3375(2082),
3376(2083),
3377(2084),
3378(2085),
3379(2086),
3380(2087),
3381(2088),
3382(2089),
3383(2090),
3384(2091),
3385(2092),
3386(2093),
3387(2094),
3388(2095),
3389(2096),
3390(2097),
3391(2098),
3392(2099),
3393(2100),
3394(2101),
3395(2102),
3396(2103),
3397(2104),
3398(2105),
3399(2106),
3400(2107),
3401(2108),
3402(2109),
3403(2110),
3404(2111),
3405(2112),
3406(2113),
3407(2114),
3408(2115),
3409(2116),
3410(2117),
3411(2118),
3412(2119),
3413(2120),
3414(2121),
3415(2122),
3416(2123),
3417(2124),
3418(2125),
3419(2126),
3420(2127),
3421(2128),
3422(2129),
3423(2130),
3424(2131),
3425(2132),
3426(2133),
3427(2134),
3428(2135),
3429(2136),
3430(2137),
3431(2138),
3432(2139),
3433(2140),
3434(2141),
3435(2142),
3436(2143),
3437(2144),
3438(2145),
3439(2146),
3440(2147),
3441(2148),
3442(2149),
3443(2150),
3444(2151),
3445(2152),
3446(2153),
3447(2154),
3448(2155),
3449(2156),
3450(2157),
3451(2158),
3452(2159),
3453(2160),
3454(2161),
3455(2162),
3456(2163),
3457(2164),
3458(2165),
3459(2166),
3460(2167),
3461(2168),
3462(2169),
3463(2170),
3464(2171),
3465(2172),
3466(2173),
3467(2174),
3468(2175),
3469(2176),
3470(2177),
3471(2178),
3472(2179),
3473(2180),
3474(2181),
3475(2182),
3476(2183),
3477(2184),
3478(2185),
3479(2186),
3480(2187),
3481(2188),
3482(2189),
3483(2190),
3484(2191),
3485(2192),
3486(2193),
3487(2194),
3488(2195),
3489(2196),
3490(2197),
3491(2198),
3492(2199),
3493(2200),
3494(2201),
3495(2202),
3496(2203),
3497(2204),
3498(2205),
3499(2206),
3500(2207),
3501(2208),
3502(2209),
3503(2210),
3504(2211),
3505(2212),
3506(2213),
3507(2214),
3508(2215),
3509(2216),
3510(2217),
3511(2218),
3512(2219),
3513(2220),
3514(2221),
3515(2222),
3516(2223),
3517(2224),
3518(2225),
3519(2226),
3520(2227),
3521(2228),
3522(2229),
3523(2230),
3524(2231),
3525(2232),
3526(2233),
3527(2234),
3528(2235),
3529(2236),
3530(2237),
3531(2238),
3532(2239),
3533(2240),
3534(2241),
3535(2242),
3536(2243),
3537(2244),
3538(2245),
3539(2246),
3540(2247),
3541(2248),
3542(2249),
3543(2250),
3544(2251),
3545(2252),
3546(2253),
3547(2254),
3548(2255),
3549(2256),
3550(2257),
3551(2258),
3552(2259),
3553(2260),
3554(2261),
3555(2262),
3556(2263),
3557(2264),
3558(2265),
3559(2266),
3560(2267),
3561(2268),
3562(2269),
3563(2270),
3564(2271),
3565(2272),
3566(2273),
3567(2274),
3568(2275),
3569(2276),
3570(2277),
3571(2278),
3572(2279),
3573(2280),
3574(2281),
3575(2282),
3576(2283),
3577(2284),
3578(2285),
3579(2286),
3580(2287),
3581(2288),
3582(2289),
3583(2290),
3584(2291),
3585(2292),
3586(2293),
3587(2294),
3588(2295),
3589(2296),
3590(2297),
3591(2298),
3592(2299),
3593(2300),
3594(2301),
3595(2302),
3596(2303),
3597(2304),
3598(2305),
3599(2306),
3600(2307),
3601(2308),
3602(2309),
3603(2310),
3604(2311),
3605(2312),
3606(2313),
3607(2314),
3608(2315),
3609(2316),
3610(2317),
3611(2318),
3612(2319),
3613(2320),
3614(2321),
3615(2322),
3616(2323),
3617(2324),
3618(2325),
3619(2326),
3620(2327),
3621(2328),
3622(2329),
3623(2330),
3624(2331),
3625(2332),
3626(2333),
3627(2334),
3628(2335),
3629(2336),
3630(2337),
3631(2338),
3632(2339),
3633(2340),
3634(2341),
3635(2342),
3636(2343),
3637(2344),
3638(2345),
3639(2346),
3640(2347),
3641(2348),
3642(2349),
3643(2350),
3644(2351),
3645(2352),
3646(2353),
3647(2354),
3648(2355),
3649(2356),
3650(2357),
3651(2358),
3652(2359),
3653(2360),
3654(2361),
3655(2362),
3656(2363),
3657(2364),
3658(2365),
3659(2366),
3660(2367),
3661(2368),
3662(2369),
3663(2370),
3664(2371),
3665(2372),
3666(2373),
3667(2374),
3668(2375),
3669(2376),
3670(2377),
3671(2378),
3672(2379),
3673(2380),
3674(2381),
3675(2382),
3676(2383),
3677(2384),
3678(2385),
3679(2386),
3680(2387),
3681(2388),
3682(2389),
3683(2390),
3684(2391),
3685(2392),
3686(2393),
3687(2394),
3688(2395),
3689(2396),
3690(2397),
3691(2398),
3692(2399),
3693(2400),
3694(2401),
3695(2402),
3696(2403),
3697(2404),
3698(2405),
3699(2406),
3700(2407),
3701(2408),
3702(2409),
3703(2410),
3704(2411),
3705(2412),
3706(2413),
3707(2414),
3708(2415),
3709(2416),
3710(2417),
3711(2418),
3712(2419),
3713(2420),
3714(2421),
3715(2422),
3716(2423),
3717(2424),
3718(2425),
3719(2426),
3720(2427),
3721(2428),
3722(2429),
3723(2430),
3724(2431),
3725(2432),
3726(2433),
3727(2434),
3728(2435),
3729(2436),
3730(2437),
3731(2438),
3732(2439),
3733(2440),
3734(2441),
3735(2442),
3736(2443),
3737(2444),
3738(2445),
3739(2446),
3740(2447),
3741(2448),
3742(2449),
3743(2450),
3744(2451),
3745(2452),
3746(2453),
3747(2454),
3748(2455),
3749(2456),
3750(2457),
3751(2458),
3752(2459),
3753(2460),
3754(2461),
3755(2462),
3756(2463),
3757(2464),
3758(2465),
3759(2466),
3760(2467),
3761(2468),
3762(2469),
3763(2470),
3764(2471),
3765(2472),
3766(2473),
3767(2474),
3768(2475),
3769(2476),
3770(2477),
3771(2478),
3772(2479),
3773(2480),
3774(2481),
3775(2482),
3776(2483),
3777(2484),
3778(2485),
3779(2486),
3780(2487),
3781(2488),
3782(2489),
3783(2490),
3784(2491),
3785(2492),
3786(2493),
3787(2494),
3788(2495),
3789(2496),
3790(2497),
3791(2498),
3792(2499),
3793(2500),
3794(2501),
3795(2502),
3796(2503),
3797(2504),
3798(2505),
3799(2506),
3800(2507),
3801(2508),
3802(2509),
3803(2510),
3804(2511),
3805(2512),
3806(2513),
3807(2514),
3808(2515),
3809(2516),
3810(2517),
3811(2518),
3812(2519),
3813(2520),
3814(2521),
3815(2522),
3816(2523),
3817(2524),
3818(2525),
3819(2526),
3820(2527),
3821(2528),
3822(2529),
3823(2530),
3824(2531),
3825(2532),
3826(2533),
3827(2534),
3828(2535),
3829(2536),
3830(2537),
3831(2538),
3832(2539),
3833(2540),
3834(2541),
3835(2542),
3836(2543),
3837(2544),
3838(2545),
3839(2546),
3840(2547),
3841(2548),
3842(2549),
3843(2550),
3844(2551),
3845(2552),
3846(2553),
3847(2554),
3848(2555),
3849(2556),
3850(2557),
3851(2558),
3852(2559),
3853(2560),
3854(2561),
3855(2562),
3856(2563),
3857(2564),
3858(2565),
3859(2566),
3860(2567),
3861(2568),
3862(2569),
3863(2570),
3864(2571),
3865(2572),
3866(2573),
3867(2574),
3868(2575),
3869(2576),
3870(2577),
3871(2578),
3872(2579),
3873(2580),
3874(2581),
3875(2582),
3876(2583),
3877(2584),
3878(2585),
3879(2586),
3880(2587),
3881(2588),
3882(2589),
3883(2590),
3884(2591),
3885(2592),
3886(2593),
3887(2594),
3888(2595),
3889(2596),
3890(2597),
3891(2598),
3892(2599),
3893(2600),
3894(2601),
3895(2602),
3896(2603),
3897(2604),
3898(2605),
3899(2606),
3900(2607),
3901(2608),
3902(2609),
3903(2610),
3904(2611),
3905(2612),
3906(2613),
3907(2614),
3908(2615),
3909(2616),
3910(2617),
3911(2618),
3912(2619),
3913(2620),
3914(2621),
3915(2622),
3916(2623),
3917(2624),
3918(2625),
3919(2626),
3920(2627),
3921(2628),
3922(2629),
3923(2630),
3924(2631),
3925(2632),
3926(2633),
3927(2634),
3928(2635),
3929(2636),
3930(2637),
3931(2638),
3932(2639),
3933(2640),
3934(2641),
3935(2642),
3936(2643),
3937(2644),
3938(2645),
3939(2646),
3940(2647),
3941(2648),
3942(2649),
3943(2650),
3944(2651),
3945(2652),
3946(2653),
3947(2654),
3948(2655),
3949(2656),
3950(2657),
3951(2658),
3952(2659),
3953(2660),
3954(2661),
3955(2662),
3956(2663),
3957(2664),
3958(2665),
3959(2666),
3960(2667),
3961(2668),
3962(2669),
3963(2670),
3964(2671),
3965(2672),
3966(2673),
3967(2674),
3968(2675),
3969(2676),
3970(2677),
3971(2678),
3972(2679),
3973(2680),
3974(2681),
3975(2682),
3976(2683),
3977(2684),
3978(2685),
3979(2686),
3980(2687),
3981(2688),
3982(2689),
3983(2690),
3984(2691),
3985(2692),
3986(2693),
3987(2694),
3988(2695),
3989(2696),
3990(2697),
3991(2698),
3992(2699),
3993(2700),
3994(2701),
3995(2702),
3996(2703),
3997(2704),
3998(2705),
3999(2706),
4000(2707),
4001(2708),
4002(2709),
4003(2710),
4004(2711),
4005(2712),
4006(2713),
4007(2714),
4008(2715),
4009(2716),
4010(2717),
4011(2718),
4012(2719),
4013(2720),
4014(2721),
4015(2722),
4016(2723),
4017(2724),
4018(2725),
4019(2726),
4020(2727),
4021(2728),
4022(2729),
4023(2730),
4024(2731),
4025(2732),
4026(2733),
4027(2734),
4028(2735),
4029(2736),
4030(2737),
4031(2738),
4032(2739),
4033(2740),
4034(2741),
4035(2742),
4036(2743),
4037(2744),
4038(2745),
4039(2746),
4040(2747),
4041(2748),
4042(2749),
4043(2750),
4044(2751),
4045(2752),
4046(2753),
4047(2754),
4048(2755),
4049(2756),
4050(2757),
4051(2758),
4052(2759),
4053(2760),
4054(2761),
4055(2762),
4056(2763),
4057(2764),
4058(2765),
4059(2766),
4060(2767),
4061(2768),
4062(2769),
4063(2770),
4064(2771),
4065(2772),
4066(2773),
4067(2774),
4068(2775),
4069(2776),
4070(2777),
4071(2778),
4072(2779),
4073(2780),
4074(2781),
4075(2782),
4076(2783),
4077(2784),
4078(2785),
4079(2786),
4080(2787),
4081(2788),
4082(2789),
4083(2790),
4084(2791),
4085(2792),
4086(2793),
4087(2794),
4088(2795),
4089(2796),
4090(2797),
4091(2798),
4092(2799),
4093(2800),
4094(2801),
4095(2802),
4096(2803),
4097(2804),
4098(2805),
4099(2806),
4100(2807),
4101(2808),
4102(2809),
4103(2810),
4104(2811),
4105(2812),
4106(2813),
4107(2814),
4108(2815),
4109(2816),
4110(2817),
4111(2818),
4112(2819),
4113(2820),
4114(2821),
4115(2822),
4116(2823),
4117(2824),
4118(2825),
4119(2826),
4120(2827),
4121(2828),
4122(2829),
4123(2830),
4124(2831),
4125(2832),
4126(2833),
4127(2834),
4128(2835),
4129(2836),
4130(2837),
4131(2838),
4132(2839),
4133(2840),
4134(2841),
4135(2842),
4136(2843),
4137(2844),
4138(2845),
4139(2846),
4140(2847),
4141(2848),
4142(2849),
4143(2850),
4144(2851),
4145(2852),
4146(2853),
4147(2854),
4148(2855),
4149(2856),
4150(2857),
4151(2858),
4152(2859),
4153(2860),
4154(2861),
4155(2862),
4156(2863),
4157(2864),
4158(2865),
4159(2866),
4160(2867),
4161(2868),
4162(2869),
4163(2870),
4164(2871),
4165(2872),
4166(2873),
4167(2874),
4168(2875),
4169(2876),
4170(2877),
4171(2878),
4172(2879),
4173(2880),
4174(2881),
4175(2882),
4176(2883),
4177(2884),
4178(2885),
4179(2886),
4180(2887),
4181(2888),
4182(2889),
4183(2890),
4184(2891),
4185(2892),
4186(2893),
4187(2894),
4188(2895),
4189(2896),
4190(2897),
4191(2898),
4192(2899),
4193(2900),
4194(2901),
4195(2902),
4196(2903),
4197(2904),
4198(2905),
4199(2906),
4200(2907),
4201(2908),
4202(2909),
4203(2910),
4204(2911),
4205(2912),
4206(2913),
4207(2914),
4208(2915),
4209(2916),
4210(2917),
4211(2918),
4212(2919),
4213(2920),
4214(2921),
4215(2922),
4216(2923),
4217(2924),
4218(2925),
4219(2926),
4220(2927),
4221(2928),
4222(2929),
4223(2930),
4224(2931),
4225(2932),
4226(2933),
4227(2934),
4228(2935),
4229(2936),
4230(2937),
4231(2938),
4232(2939),
4233(2940),
4234(2941),
4235(2942),
4236(2943),
4237(2944),
4238(2945),
4239(2946),
4240(2947),
4241(2948),
4242(2949),
4243(2950),
4244(2951),
4245(2952),
4246(2953),
4247(2954),
4248(2955),
4249(2956),
4250(2957),
4251(2958),
4252(2959),
4253(2960),
4254(2961),
4255(2962),
4256(2963),
4257(2964),
4258(2965),
4259(2966),
4260(2967),
4261(2968),
4262(2969),
4263(2970),
4264(2971),
4265(2972),
4266(2973),
4267(2974),
4268(2975),
4269(2976),
4270(2977),
4271(2978),
4272(2979),
4273(2980),
4274(2981),
4275(2982),
4276(2983),
4277(2984),
4278(2985),
4279(2986),
4280(2987),
4281(2988),
4282(2989),
4283(2990),
4284(2991),
4285(2992),
4286(2993),
4287(2994),
4288(2995),
4289(2996),
4290(2997),
4291(2998),
4292(2999),
4293(3000),
4294(3001),
4295(3002),
4296(3003),
4297(3004),
4298(3005),
4299(3006),
4300(3007),
4301(3008),
4302(3009),
4303(3010),
4304(3011),
4305(3012),
4306(3013),
4307(3014),
4308(3015),
4309(3016),
4310(3017),
4311(3018),
4312(3019),
4313(3020),
4314(3021),
4315(3022),
4316(3023),
4317(3024),
4318(3025),
4319(3026),
4320(3027),
4321(3028),
4322(3029),
4323(3030),
4324(3031),
4325(3032),
4326(3033),
4327(3034),
4328(3035),
4329(3036),
4330(3037),
4331(3038),
4332(3039),
4333(3040),
4334(3041),
4335(3042),
4336(3043),
4337(3044),
4338(3045),
4339(3046),
4340(3047),
4341(3048),
4342(3049),
4343(3050),
4344(3051),
4345(3052),
4346(3053),
4347(3054),
4348(3055),
4349(3056),
4350(3057),
4351(3058),
4352(3059),
4353(3060),
4354(3061),
4355(3062),
4356(3063),
4357(3064),
4358(3065),
4359(3066),
4360(3067),
4361(3068),
4362(3069),
4363(3070),
4364(3071),
4365(3072),
4366(3073),
4367(3074),
4368(3075),
4369(3076),
4370(3077),
4371(3078),
4372(3079),
4373(3080),
4374(3081),
4375(3082),
4376(3083),
4377(3084),
4378(3085),
4379(3086),
4380(3087),
4381(3088),
4382(3089),
4383(3090),
4384(3091),
4385(3092),
4386(3093),
4387(3094),
4388(3095),
4389(3096),
4390(3097),
4391(3098),
4392(3099),
4393(3100),
4394(3101),
4395(3102),
4396(3103),
4397(3104),
4398(3105),
4399(3106),
4400(3107),
4401(3108),
4402(3109),
4403(3110),
4404(3111),
4405(3112),
4406(3113),
4407(3114),
4408(3115),
4409(3116),
4410(3117),
4411(3118),
4412(3119),
4413(3120),
4414(3121),
4415(3122),
4416(3123),
4417(3124),
4418(3125),
4419(3126),
4420(3127),
4421(3128),
4422(3129),
4423(3130),
4424(3131),
4425(3132),
4426(3133),
4427(3134),
4428(3135),
4429(3136),
4430(3137),
4431(3138),
4432(3139),
4433(3140),
4434(3141),
4435(3142),
4436(3143),
4437(3144),
4438(3145),
4439(3146),
4440(3147),
4441(3148),
4442(3149),
4443(3150),
4444(3151),
4445(3152),
4446(3153),
4447(3154),
4448(3155),
4449(3156),
4450(3157),
4451(3158),
4452(3159),
4453(3160),
4454(3161),
4455(3162),
4456(3163),
4457(3164),
4458(3165),
4459(3166),
4460(3167),
4461(3168),
4462(3169),
4463(3170),
4464(3171),
4465(3172),
4466(3173),
4467(3174),
4468(3175),
4469(3176),
4470(3177),
4471(3178),
4472(3179),
4473(3180),
4474(3181),
4475(3182),
4476(3183),
4477(3184),
4478(3185),
4479(3186),
4480(3187),
4481(3188),
4482(3189),
4483(3190),
4484(3191),
4485(3192),
4486(3193),
4487(3194),
4488(3195),
4489(3196),
4490(3197),
4491(3198),
4492(3199),
4493(3200),
4494(3201),
4495(3202),
4496(3203),
4497(3204),
4498(3205),
4499(3206),
4500(3207),
4501(3208),
4502(3209),
4503(3210),
4504(3211),
4505(3212),
4506(3213),
4507(3214),
4508(3215),
4509(3216),
4510(3217),
4511(3218),
4512(3219),
4513(3220),
4514(3221),
4515(3222),
4516(3223),
4517(3224),
4518(3225),
4519(3226),
4520(3227),
4521(3228),
4522(3229),
4523(3230),
4524(3231),
4525(3232),
4526(3233),
4527(3234),
4528(3235),
4529(3236),
4530(3237),
4531(3238),
4532(3239),
4533(3240),
4534(3241),
4535(3242),
4536(3243),
4537(3244),
4538(3245),
4539(3246),
4540(3247),
4541(3248),
4542(3249),
4543(3250),
4544(3251),
4545(3252),
4546(3253),
4547(3254),
4548(3255),
4549(3256),
4550(3257),
4551(3258),
4552(3259),
4553(3260),
4554(3261),
4555(3262),
4556(3263),
4557(3264),
4558(3265),
4559(3266),
4560(3267),
4561(3268),
4562(3269),
4563(3270),
4564(3271),
4565(3272),
4566(3273),
4567(3274),
4568(3275),
4569(3276),
4570(3277),
4571(3278),
4572(3279),
4573(3280),
4574(3281),
4575(3282),
4576(3283),
4577(3284),
4578(3285),
4579(3286),
4580(3287),
4581(3288),
4582(3289),
4583(3290),
4584(3291),
4585(3292),
4586(3293),
4587(3294),
4588(3295),
4589(3296),
4590(3297),
4591(3298),
4592(3299),
4593(3300),
4594(3301),
4595(3302),
4596(3303),
4597(3304),
4598(3305),
4599(3306),
4600(3307),
4601(3308),
4602(3309),
4603(3310),
4604(3311),
4605(3312),
4606(3313),
4607(3314),
4608(3315),
4609(3316),
4610(3317),
4611(3318),
4612(3319),
4613(3320),
4614(3321),
4615(3322),
4616(3323),
4617(3324),
4618(3325),
4619(3326),
4620(3327),
4621(3328),
4622(3329),
4623(3330),
4624(3331),
4625(3332),
4626(3333),
4627(3334),
4628(3335),
4629(3336),
4630(3337),
4631(3338),
4632(3339),
4633(3340),
4634(3341),
4635(3342),
4636(3343),
4637(3344),
4638(3345),
4639(3346),
4640(3347),
4641(3348),
4642(3349),
4643(3350),
4644(3351),
4645(3352),
4646(3353),
4647(3354),
4648(3355),
4649(3356),
4650(3357),
4651(3358),
4652(3359),
4653(3360),
4654(3361),
4655(3362),
4656(3363),
4657(3364),
4658(3365),
4659(3366),
4660(3367),
4661(3368),
4662(3369),
4663(3370),
4664(3371),
4665(3372),
4666(3373),
4667(3374),
4668(3375),
4669(3376),
4670(3377),
4671(3378),
4672(3379),
4673(3380),
4674(3381),
4675(3382),
4676(3383),
4677(3384),
4678(3385),
4679(3386),
4680(3387),
4681(3388),
4682(3389),
4683(3390),
4684(3391),
4685(3392),
4686(3393),
4687(3394),
4688(3395),
4689(3396),
4690(3397),
4691(3398),
4692(3399),
4693(3400),
4694(3401),
4695(3402),
4696(3403),
4697(3404),
4698(3405),
4699(3406),
4700(3407),
4701(3408),
4702(3409),
4703(3410),
4704(3411),
4705(3412),
4706(3413),
4707(3414),
4708(3415),
4709(3416),
4710(3417),
4711(3418),
4712(3419),
4713(3420),
4714(3421),
4715(3422),
4716(3423),
4717(3424),
4718(3425),
4719(3426),
4720(3427),
4721(3428),
4722(3429),
4723(3430),
4724(3431),
4725(3432),
4726(3433),
4727(3434),
4728(3435),
4729(3436),
4730(3437),
4731(3438),
4732(3439),
4733(3440),
4734(3441),
4735(3442),
4736(3443),
4737(3444),
4738(3445),
4739(3446),
4740(3447),
4741(3448),
4742(3449),
4743(3450),
4744(3451),
4745(3452),
4746(3453),
4747(3454),
4748(3455),
4749(3456),
4750(3457),
4751(3458),
4752(3459),
4753(3460),
4754(3461),
4755(3462),
4756(3463),
4757(3464),
4758(3465),
4759(3466),
4760(3467),
4761(3468),
4762(3469),
4763(3470),
4764(3471),
4765(3472),
4766(3473),
4767(3474),
4768(3475),
4769(3476),
4770(3477),
4771(3478),
4772(3479),
4773(3480),
4774(3481),
4775(3482),
4776(3483),
4777(3484),
4778(3485),
4779(3486),
4780(3487),
4781(3488),
4782(3489),
4783(3490),
4784(3491),
4785(3492),
4786(3493),
4787(3494),
4788(3495),
4789(3496),
4790(3497),
4791(3498),
4792(3499),
4793(3500),
4794(3501),
4795(3502),
4796(3503),
4797(3504),
4798(3505),
4799(3506),
4800(3507),
4801(3508),
4802(3509),
4803(3510),
4804(3511),
4805(3512),
4806(3513),
4807(3514),
4808(3515),
4809(3516),
4810(3517),
4811(3518),
4812(3519),
4813(3520),
4814(3521),
4815(3522),
4816(3523),
4817(3524),
4818(3525),
4819(3526),
4820(3527),
4821(3528),
4822(3529),
4823(3530),
4824(3531),
4825(3532),
4826(3533),
4827(3534),
4828(3535),
4829(3536),
4830(3537),
4831(3538),
4832(3539),
4833(3540),
4834(3541),
4835(3542),
4836(3543),
4837(3544),
4838(3545),
4839(3546),
4840(3547),
4841(3548),
4842(3549),
4843(3550),
4844(3551),
4845(3552),
4846(3553),
4847(3554),
4848(3555),
4849(3556),
4850(3557),
4851(3558),
4852(3559),
4853(3560),
4854(3561),
4855(3562),
4856(3563),
4857(3564),
4858(3565),
4859(3566),
4860(3567),
4861(3568),
4862(3569),
4863(3570),
4864(3571),
4865(3572),
4866(3573),
4867(3574),
4868(3575),
4869(3576),
4870(3577),
4871(3578),
4872(3579),
4873(3580),
4874(3581),
4875(3582),
4876(3583),
4877(3584),
4878(3585),
4879(3586),
4880(3587),
4881(3588),
4882(3589),
4883(3590),
4884(3591),
4885(3592),
4886(3593),
4887(3594),
4888(3595),
4889(3596),
4890(3597),
4891(3598),
4892(3599),
4893(3600),
4894(3601),
4895(3602),
4896(3603),
4897(3604),
4898(3605),
4899(3606),
4900(3607),
4901(3608),
4902(3609),
4903(3610),
4904(3611),
4905(3612),
4906(3613),
4907(3614),
4908(3615),
4909(3616),
4910(3617),
4911(3618),
4912(3619),
4913(3620),
4914(3621),
4915(3622),
4916(3623),
4917(3624),
4918(3625),
4919(3626),
4920(3627),
4921(3628),
4922(3629),
4923(3630),
4924(3631),
4925(3632),
4926(3633),
4927(3634),
4928(3635),