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