content_server 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +15 -0
  2. data/bin/file_utils +118 -0
  3. data/lib/content_data/content_data.rb +114 -48
  4. data/lib/content_server/version.rb +1 -1
  5. data/lib/file_monitoring/file_monitoring.rb +94 -50
  6. data/lib/file_monitoring/monitor_path.rb +196 -113
  7. data/lib/file_utils/file_utils.rb +10 -49
  8. data/lib/networking/tcp.rb +4 -4
  9. data/spec/content_data/content_data_spec.rb +331 -0
  10. data/spec/content_data/validations_spec.rb +5 -0
  11. data/spec/content_server/content_server_spec.rb +5 -0
  12. data/spec/content_server/file_streamer_spec.rb +5 -0
  13. data/spec/file_copy/copy_spec.rb +5 -0
  14. data/spec/file_indexing/index_agent_spec.rb +5 -0
  15. data/spec/networking/tcp_spec.rb +5 -0
  16. data/spec/validations/index_validations_spec.rb +5 -0
  17. metadata +9 -89
  18. data/test/content_data/content_data_test.rb +0 -291
  19. data/test/file_generator/file_generator_spec.rb +0 -85
  20. data/test/file_monitoring/monitor_path_test.rb +0 -189
  21. data/test/file_monitoring/monitor_path_test/dir1000/test_file.1000 +0 -1000
  22. data/test/file_monitoring/monitor_path_test/dir1000/test_file.1000.0 +0 -1000
  23. data/test/file_monitoring/monitor_path_test/dir1000/test_file.1000.1 +0 -1000
  24. data/test/file_monitoring/monitor_path_test/dir1500/test_file.1500 +0 -1500
  25. data/test/file_monitoring/monitor_path_test/dir1500/test_file.1500.0 +0 -1500
  26. data/test/file_monitoring/monitor_path_test/dir1500/test_file.1500.1 +0 -1500
  27. data/test/file_monitoring/monitor_path_test/test_file.500 +0 -500
  28. data/test/file_monitoring/monitor_path_test/test_file.500.0 +0 -500
  29. data/test/file_monitoring/monitor_path_test/test_file.500.1 +0 -500
  30. data/test/file_utils/fileutil_mksymlink_test.rb +0 -134
  31. data/test/file_utils/fileutil_mksymlink_test/dir1000/dir1500/test_file.1500 +0 -1500
  32. data/test/file_utils/fileutil_mksymlink_test/dir1000/dir1500/test_file.1500.0 +0 -1500
  33. data/test/file_utils/fileutil_mksymlink_test/dir1000/dir1500/test_file.1500.1 +0 -1500
  34. data/test/file_utils/fileutil_mksymlink_test/dir1000/test_file.1000 +0 -1000
  35. data/test/file_utils/fileutil_mksymlink_test/dir1000/test_file.1000.0 +0 -1000
  36. data/test/file_utils/fileutil_mksymlink_test/dir1000/test_file.1000.1 +0 -1000
  37. data/test/file_utils/fileutil_mksymlink_test/test_file.500 +0 -500
  38. data/test/file_utils/fileutil_mksymlink_test/test_file.500.0 +0 -500
  39. data/test/file_utils/fileutil_mksymlink_test/test_file.500.1 +0 -500
  40. data/test/file_utils/time_modification_test.rb +0 -136
  41. data/test/params/params_spec.rb +0 -280
  42. data/test/params/params_test.rb +0 -43
  43. data/test/run_in_background/run_in_background_test.rb +0 -122
  44. data/test/run_in_background/test_app +0 -59
@@ -1,85 +0,0 @@
1
- # Author: Slava Pasechnik (slavapas13@gmail.com)
2
- # Run from bbfs> ruby -Ilib test/file_generator/file_generator_spec.rb
3
-
4
- require 'file_utils/file_generator/file_generator'
5
- require 'rspec'
6
-
7
- module FileGenerator
8
- module Spec
9
- describe 'FileGenerator::run' do
10
- before(:each) do
11
- Params['total_created_directories'] = 1
12
- Params['total_files_in_dir'] = 1
13
- Params['is_tot_files_in_dir_random'] = false
14
- Params['is_use_random_size'] = false
15
- Params['sleep_time_in_seconds'] = 0
16
- Params['dir_name_prefix'] = "td4bs"
17
- Params['file_name_prefix'] = "agf4bs_"
18
- Params['file_size_in_bytes'] = 10
19
- end
20
-
21
- it 'should reach File.open 1 files' do
22
- file = mock('file')
23
- file_utils_mkdir_p = double('FileUtils.mkdir_p')
24
- file_open = double('File.open')
25
-
26
- FileUtils.stub(:mkdir_p).and_return(file_utils_mkdir_p)
27
- File.stub(:open).and_return(file_open)
28
- File.should_receive(:open).exactly(1).times
29
-
30
- fg = FileGenerator.new()
31
- fg.run()
32
- end
33
-
34
- it 'should reach File.open 3 files' do
35
- file = mock('file')
36
- file_utils_mkdir_p = double('FileUtils.mkdir_p')
37
- file_open = double('File.open')
38
-
39
- FileUtils.stub(:mkdir_p).and_return(file_utils_mkdir_p)
40
- File.stub(:open).and_return(file_open)
41
- File.should_receive(:open).exactly(3).times
42
-
43
- Params['total_files_in_dir'] = 3
44
- fg = FileGenerator.new()
45
- fg.run()
46
- end
47
-
48
- it 'should reach File.open with prefixed dir and file names' do
49
- file = mock('file')
50
- file_utils_mkdir_p = double('FileUtils.mkdir_p')
51
- file_open = double('File.open')
52
-
53
- FileUtils.stub(:mkdir_p).and_return(file_utils_mkdir_p)
54
- File.stub(:open).and_return(file_open)
55
- File.should_receive(:open).with(/td4bs.*agf4bs_/, "w")
56
-
57
- fg = FileGenerator.new()
58
- fg.run()
59
- end
60
-
61
- it 'should reach File.open 3 files' do
62
- file = mock('file')
63
- file_utils_mkdir_p = double('FileUtils.mkdir_p')
64
- file_open = double('File.open')
65
-
66
- FileUtils.stub(:mkdir_p).and_return(file_utils_mkdir_p)
67
- File.stub(:open).and_return(file_open)
68
- File.should_receive(:open).exactly(3).times
69
-
70
- Params['total_files_in_dir'] = 3
71
- fg = FileGenerator.new()
72
- fg.run()
73
- end
74
-
75
- it 'should create filename and put text in it' do
76
- file = mock('file')
77
- Params['total_files_in_dir'] = 2
78
- File.should_receive(:open).with(any_args(), "w").exactly(Params['total_files_in_dir']).times.and_yield(file)
79
- file.should_receive(:write).exactly(Params['file_size_in_bytes'] * Params['total_files_in_dir']).times
80
- fg = FileGenerator.new()
81
- fg.run()
82
- end
83
- end
84
- end
85
- end
@@ -1,189 +0,0 @@
1
- require './lib/file_monitoring/monitor_path'
2
- require 'test/unit'
3
- require 'fileutils'
4
-
5
- module FileMonitoring
6
- module Test
7
- class TestPathMonitor < ::Test::Unit::TestCase
8
- # directory where tested files will be placed: __FILE__/time_modification_test
9
- RESOURCES_DIR = File.expand_path(File.dirname(__FILE__) + '/path_monitor_test')
10
- MOVE_DIR = '/dir1500' # directory that will be moved
11
- MOVE_FILE = '/test_file.1000' # file that will be moved
12
- MOVE_SRC_DIR = RESOURCES_DIR + '/dir1000' # directory where moved entities where placed
13
- MOVE_DEST_DIR = RESOURCES_DIR # directory where moved entities will be placed
14
- LOG_PATH = RESOURCES_DIR + '/../log.txt'
15
-
16
- # simulates log4r activuty used by FileMonitoring
17
- class LogMock
18
- def initialize()
19
- File.unlink(LOG_PATH) if File.exists?(LOG_PATH)
20
- @log = File.open(LOG_PATH, 'w+')
21
- end
22
-
23
- def close()
24
- @log.close()
25
- end
26
-
27
- def outputters()
28
- [self];
29
- end
30
-
31
- def flush()
32
- # Do nothing
33
- end
34
-
35
- def log()
36
- @log
37
- end
38
-
39
- def info(str)
40
- @log.puts(str)
41
- end
42
- end
43
-
44
- def setup
45
- @sizes = [500, 1000, 1500]
46
- @numb_of_copies = 2
47
- @numb_entities = @sizes.size * (@numb_of_copies + 1) + @sizes.size
48
- @test_file_name = 'test_file' # file name format: <test_file_name_prefix>.<size>[.serial_number_if_more_then_1]
49
- @test_dir_name = 'dir'
50
- ::FileUtils.rm_rf(RESOURCES_DIR) if (File.exists?(RESOURCES_DIR))
51
-
52
- # prepare files for testing
53
- cur_dir = nil; # directory where currently files created in this iteration will be placed
54
-
55
- @sizes.each do |size|
56
- file_name = @test_file_name + '.' + size.to_s
57
-
58
- if (cur_dir == nil)
59
- cur_dir = String.new(RESOURCES_DIR)
60
- else
61
- cur_dir = cur_dir + "/#{@test_dir_name}" + size.to_s
62
- end
63
- Dir.mkdir(cur_dir) unless (File.exists?(cur_dir))
64
- raise "Can't create writable working directory: #{cur_dir}" unless (File.exists?(cur_dir) and File.writable?(cur_dir))
65
-
66
- file_path = cur_dir + '/' + file_name
67
- File.open(file_path, 'w') do |file|
68
- content = Array.new
69
- size.times do |i|
70
- content.push(sprintf('%5d ', i))
71
- end
72
- file.puts(content)
73
- end
74
-
75
- @numb_of_copies.times do |i|
76
- ::FileUtils.cp(file_path, "#{file_path}.#{i}")
77
- end
78
- end
79
-
80
- @log4r_mock = LogMock.new
81
- end
82
-
83
- def teardown()
84
- @log4r_mock.close
85
- File.unlink(LOG_PATH)
86
- ::FileUtils.rm_rf(RESOURCES_DIR) if (File.exists?(RESOURCES_DIR))
87
- end
88
-
89
- =begin [yarondbb] test needs to be refactored
90
- def test_monitor
91
- log = @log4r_mock.log
92
- FileStat.set_log(@log4r_mock)
93
- test_dir = DirStat.new(RESOURCES_DIR)
94
-
95
- # Initial run of monitoring -> initializing DirStat object
96
- # all found object will be set to NEW state
97
- # no output to the log
98
- test_dir.monitor
99
-
100
- # all files will be set to UNCHANGED
101
- log_prev_pos = log.pos
102
- log_prev_line = log.lineno
103
- test_dir.monitor
104
- sleep(1) # to be sure that data was indeed written
105
- log.pos= log_prev_pos
106
- log.each_line do |line|
107
- assert_equal(true, line.include?(FileStatEnum::UNCHANGED))
108
- end
109
- assert_equal(@numb_entities, log.lineno - log_prev_line) # checking that all entities were monitored
110
-
111
- # move (equivalent to delete and create new) directory with including files to new location
112
- ::FileUtils.mv MOVE_SRC_DIR + MOVE_DIR, MOVE_DEST_DIR + MOVE_DIR
113
- log_prev_pos = log.pos
114
- log_prev_line = log.lineno
115
- test_dir.monitor
116
- sleep(1)
117
- log.pos= log_prev_pos
118
- log.each_line do |line|
119
- if (line.include?(MOVE_SRC_DIR + MOVE_DIR))
120
- assert_equal(true, line.include?(FileStatEnum::NON_EXISTING))
121
- elsif (line.include?(MOVE_DEST_DIR + MOVE_DIR))
122
- assert_equal(true, line.include?(FileStatEnum::NEW))
123
- elsif (line.include?(MOVE_SRC_DIR) or line.include?(MOVE_DEST_DIR))
124
- assert_not_equal(true, line.include?(FileStatEnum::UNCHANGED))
125
- assert_equal(true, line.include?(FileStatEnum::CHANGED))
126
- end
127
- end
128
- # old and new containing directories: 2
129
- # moved directory: 1
130
- # deleted directory: 1
131
- # moved files: @numb_of_copies + 1
132
- assert_equal(5 + @numb_of_copies, log.lineno - log_prev_line) # checking that only MOVE_DIR_SRC, MOVE_DIR_DEST states were changed
133
-
134
- # no changes:
135
- # changed and new files moved to UNCHANGED
136
- log_prev_pos = log.pos
137
- log_prev_line = log.lineno
138
- test_dir.monitor
139
- sleep(1)
140
- log.pos= log_prev_pos
141
- log.each_line do |line|
142
- assert_equal(true, line.include?(FileStatEnum::UNCHANGED))
143
- end
144
- # old and new containing directories: 2
145
- # moved directory: 1
146
- # moved files: @numb_of_copies + 1
147
- assert_equal(4 + @numb_of_copies, log.lineno - log_prev_line)
148
-
149
- # move (equivalent to delete and create new) file
150
- log_prev_pos = log.pos
151
- log_prev_line = log.lineno
152
- ::FileUtils.mv MOVE_SRC_DIR + MOVE_FILE, MOVE_DEST_DIR + MOVE_FILE
153
- test_dir.monitor
154
- sleep(1)
155
- log.pos= log_prev_pos
156
- log.each_line do |line|
157
- if (line.include?MOVE_SRC_DIR + MOVE_FILE)
158
- assert_equal(true, line.include?(FileStatEnum::NON_EXISTING))
159
- elsif (line.include?MOVE_DEST_DIR + MOVE_FILE)
160
- assert_equal(true, line.include?(FileStatEnum::NEW))
161
- elsif (line.include?MOVE_SRC_DIR or line.include?MOVE_DEST_DIR)
162
- assert_equal(true, line.include?(FileStatEnum::CHANGED))
163
- end
164
- end
165
- # old and new containing directories: 2
166
- # removed file: 1
167
- # new file: 1
168
- assert_equal(4, log.lineno - log_prev_line)
169
-
170
- # all files were moved to UNCHANGED
171
- test_dir.monitor
172
-
173
- # check that all entities moved to stable
174
- log_prev_pos = log.pos
175
- log_prev_line = log.lineno
176
- (test_dir.stable_state + 1).times do
177
- test_dir.monitor
178
- end
179
- sleep(1)
180
- log.pos= log_prev_pos
181
- log.each_line do |line|
182
- assert_equal(true, line.include?(FileStatEnum::STABLE))
183
- end
184
- assert_equal(@numb_entities, log.lineno - log_prev_line)
185
- end
186
- =end
187
- end
188
- end
189
- end
@@ -1,1000 +0,0 @@
1
- 0
2
- 1
3
- 2
4
- 3
5
- 4
6
- 5
7
- 6
8
- 7
9
- 8
10
- 9
11
- 10
12
- 11
13
- 12
14
- 13
15
- 14
16
- 15
17
- 16
18
- 17
19
- 18
20
- 19
21
- 20
22
- 21
23
- 22
24
- 23
25
- 24
26
- 25
27
- 26
28
- 27
29
- 28
30
- 29
31
- 30
32
- 31
33
- 32
34
- 33
35
- 34
36
- 35
37
- 36
38
- 37
39
- 38
40
- 39
41
- 40
42
- 41
43
- 42
44
- 43
45
- 44
46
- 45
47
- 46
48
- 47
49
- 48
50
- 49
51
- 50
52
- 51
53
- 52
54
- 53
55
- 54
56
- 55
57
- 56
58
- 57
59
- 58
60
- 59
61
- 60
62
- 61
63
- 62
64
- 63
65
- 64
66
- 65
67
- 66
68
- 67
69
- 68
70
- 69
71
- 70
72
- 71
73
- 72
74
- 73
75
- 74
76
- 75
77
- 76
78
- 77
79
- 78
80
- 79
81
- 80
82
- 81
83
- 82
84
- 83
85
- 84
86
- 85
87
- 86
88
- 87
89
- 88
90
- 89
91
- 90
92
- 91
93
- 92
94
- 93
95
- 94
96
- 95
97
- 96
98
- 97
99
- 98
100
- 99
101
- 100
102
- 101
103
- 102
104
- 103
105
- 104
106
- 105
107
- 106
108
- 107
109
- 108
110
- 109
111
- 110
112
- 111
113
- 112
114
- 113
115
- 114
116
- 115
117
- 116
118
- 117
119
- 118
120
- 119
121
- 120
122
- 121
123
- 122
124
- 123
125
- 124
126
- 125
127
- 126
128
- 127
129
- 128
130
- 129
131
- 130
132
- 131
133
- 132
134
- 133
135
- 134
136
- 135
137
- 136
138
- 137
139
- 138
140
- 139
141
- 140
142
- 141
143
- 142
144
- 143
145
- 144
146
- 145
147
- 146
148
- 147
149
- 148
150
- 149
151
- 150
152
- 151
153
- 152
154
- 153
155
- 154
156
- 155
157
- 156
158
- 157
159
- 158
160
- 159
161
- 160
162
- 161
163
- 162
164
- 163
165
- 164
166
- 165
167
- 166
168
- 167
169
- 168
170
- 169
171
- 170
172
- 171
173
- 172
174
- 173
175
- 174
176
- 175
177
- 176
178
- 177
179
- 178
180
- 179
181
- 180
182
- 181
183
- 182
184
- 183
185
- 184
186
- 185
187
- 186
188
- 187
189
- 188
190
- 189
191
- 190
192
- 191
193
- 192
194
- 193
195
- 194
196
- 195
197
- 196
198
- 197
199
- 198
200
- 199
201
- 200
202
- 201
203
- 202
204
- 203
205
- 204
206
- 205
207
- 206
208
- 207
209
- 208
210
- 209
211
- 210
212
- 211
213
- 212
214
- 213
215
- 214
216
- 215
217
- 216
218
- 217
219
- 218
220
- 219
221
- 220
222
- 221
223
- 222
224
- 223
225
- 224
226
- 225
227
- 226
228
- 227
229
- 228
230
- 229
231
- 230
232
- 231
233
- 232
234
- 233
235
- 234
236
- 235
237
- 236
238
- 237
239
- 238
240
- 239
241
- 240
242
- 241
243
- 242
244
- 243
245
- 244
246
- 245
247
- 246
248
- 247
249
- 248
250
- 249
251
- 250
252
- 251
253
- 252
254
- 253
255
- 254
256
- 255
257
- 256
258
- 257
259
- 258
260
- 259
261
- 260
262
- 261
263
- 262
264
- 263
265
- 264
266
- 265
267
- 266
268
- 267
269
- 268
270
- 269
271
- 270
272
- 271
273
- 272
274
- 273
275
- 274
276
- 275
277
- 276
278
- 277
279
- 278
280
- 279
281
- 280
282
- 281
283
- 282
284
- 283
285
- 284
286
- 285
287
- 286
288
- 287
289
- 288
290
- 289
291
- 290
292
- 291
293
- 292
294
- 293
295
- 294
296
- 295
297
- 296
298
- 297
299
- 298
300
- 299
301
- 300
302
- 301
303
- 302
304
- 303
305
- 304
306
- 305
307
- 306
308
- 307
309
- 308
310
- 309
311
- 310
312
- 311
313
- 312
314
- 313
315
- 314
316
- 315
317
- 316
318
- 317
319
- 318
320
- 319
321
- 320
322
- 321
323
- 322
324
- 323
325
- 324
326
- 325
327
- 326
328
- 327
329
- 328
330
- 329
331
- 330
332
- 331
333
- 332
334
- 333
335
- 334
336
- 335
337
- 336
338
- 337
339
- 338
340
- 339
341
- 340
342
- 341
343
- 342
344
- 343
345
- 344
346
- 345
347
- 346
348
- 347
349
- 348
350
- 349
351
- 350
352
- 351
353
- 352
354
- 353
355
- 354
356
- 355
357
- 356
358
- 357
359
- 358
360
- 359
361
- 360
362
- 361
363
- 362
364
- 363
365
- 364
366
- 365
367
- 366
368
- 367
369
- 368
370
- 369
371
- 370
372
- 371
373
- 372
374
- 373
375
- 374
376
- 375
377
- 376
378
- 377
379
- 378
380
- 379
381
- 380
382
- 381
383
- 382
384
- 383
385
- 384
386
- 385
387
- 386
388
- 387
389
- 388
390
- 389
391
- 390
392
- 391
393
- 392
394
- 393
395
- 394
396
- 395
397
- 396
398
- 397
399
- 398
400
- 399
401
- 400
402
- 401
403
- 402
404
- 403
405
- 404
406
- 405
407
- 406
408
- 407
409
- 408
410
- 409
411
- 410
412
- 411
413
- 412
414
- 413
415
- 414
416
- 415
417
- 416
418
- 417
419
- 418
420
- 419
421
- 420
422
- 421
423
- 422
424
- 423
425
- 424
426
- 425
427
- 426
428
- 427
429
- 428
430
- 429
431
- 430
432
- 431
433
- 432
434
- 433
435
- 434
436
- 435
437
- 436
438
- 437
439
- 438
440
- 439
441
- 440
442
- 441
443
- 442
444
- 443
445
- 444
446
- 445
447
- 446
448
- 447
449
- 448
450
- 449
451
- 450
452
- 451
453
- 452
454
- 453
455
- 454
456
- 455
457
- 456
458
- 457
459
- 458
460
- 459
461
- 460
462
- 461
463
- 462
464
- 463
465
- 464
466
- 465
467
- 466
468
- 467
469
- 468
470
- 469
471
- 470
472
- 471
473
- 472
474
- 473
475
- 474
476
- 475
477
- 476
478
- 477
479
- 478
480
- 479
481
- 480
482
- 481
483
- 482
484
- 483
485
- 484
486
- 485
487
- 486
488
- 487
489
- 488
490
- 489
491
- 490
492
- 491
493
- 492
494
- 493
495
- 494
496
- 495
497
- 496
498
- 497
499
- 498
500
- 499
501
- 500
502
- 501
503
- 502
504
- 503
505
- 504
506
- 505
507
- 506
508
- 507
509
- 508
510
- 509
511
- 510
512
- 511
513
- 512
514
- 513
515
- 514
516
- 515
517
- 516
518
- 517
519
- 518
520
- 519
521
- 520
522
- 521
523
- 522
524
- 523
525
- 524
526
- 525
527
- 526
528
- 527
529
- 528
530
- 529
531
- 530
532
- 531
533
- 532
534
- 533
535
- 534
536
- 535
537
- 536
538
- 537
539
- 538
540
- 539
541
- 540
542
- 541
543
- 542
544
- 543
545
- 544
546
- 545
547
- 546
548
- 547
549
- 548
550
- 549
551
- 550
552
- 551
553
- 552
554
- 553
555
- 554
556
- 555
557
- 556
558
- 557
559
- 558
560
- 559
561
- 560
562
- 561
563
- 562
564
- 563
565
- 564
566
- 565
567
- 566
568
- 567
569
- 568
570
- 569
571
- 570
572
- 571
573
- 572
574
- 573
575
- 574
576
- 575
577
- 576
578
- 577
579
- 578
580
- 579
581
- 580
582
- 581
583
- 582
584
- 583
585
- 584
586
- 585
587
- 586
588
- 587
589
- 588
590
- 589
591
- 590
592
- 591
593
- 592
594
- 593
595
- 594
596
- 595
597
- 596
598
- 597
599
- 598
600
- 599
601
- 600
602
- 601
603
- 602
604
- 603
605
- 604
606
- 605
607
- 606
608
- 607
609
- 608
610
- 609
611
- 610
612
- 611
613
- 612
614
- 613
615
- 614
616
- 615
617
- 616
618
- 617
619
- 618
620
- 619
621
- 620
622
- 621
623
- 622
624
- 623
625
- 624
626
- 625
627
- 626
628
- 627
629
- 628
630
- 629
631
- 630
632
- 631
633
- 632
634
- 633
635
- 634
636
- 635
637
- 636
638
- 637
639
- 638
640
- 639
641
- 640
642
- 641
643
- 642
644
- 643
645
- 644
646
- 645
647
- 646
648
- 647
649
- 648
650
- 649
651
- 650
652
- 651
653
- 652
654
- 653
655
- 654
656
- 655
657
- 656
658
- 657
659
- 658
660
- 659
661
- 660
662
- 661
663
- 662
664
- 663
665
- 664
666
- 665
667
- 666
668
- 667
669
- 668
670
- 669
671
- 670
672
- 671
673
- 672
674
- 673
675
- 674
676
- 675
677
- 676
678
- 677
679
- 678
680
- 679
681
- 680
682
- 681
683
- 682
684
- 683
685
- 684
686
- 685
687
- 686
688
- 687
689
- 688
690
- 689
691
- 690
692
- 691
693
- 692
694
- 693
695
- 694
696
- 695
697
- 696
698
- 697
699
- 698
700
- 699
701
- 700
702
- 701
703
- 702
704
- 703
705
- 704
706
- 705
707
- 706
708
- 707
709
- 708
710
- 709
711
- 710
712
- 711
713
- 712
714
- 713
715
- 714
716
- 715
717
- 716
718
- 717
719
- 718
720
- 719
721
- 720
722
- 721
723
- 722
724
- 723
725
- 724
726
- 725
727
- 726
728
- 727
729
- 728
730
- 729
731
- 730
732
- 731
733
- 732
734
- 733
735
- 734
736
- 735
737
- 736
738
- 737
739
- 738
740
- 739
741
- 740
742
- 741
743
- 742
744
- 743
745
- 744
746
- 745
747
- 746
748
- 747
749
- 748
750
- 749
751
- 750
752
- 751
753
- 752
754
- 753
755
- 754
756
- 755
757
- 756
758
- 757
759
- 758
760
- 759
761
- 760
762
- 761
763
- 762
764
- 763
765
- 764
766
- 765
767
- 766
768
- 767
769
- 768
770
- 769
771
- 770
772
- 771
773
- 772
774
- 773
775
- 774
776
- 775
777
- 776
778
- 777
779
- 778
780
- 779
781
- 780
782
- 781
783
- 782
784
- 783
785
- 784
786
- 785
787
- 786
788
- 787
789
- 788
790
- 789
791
- 790
792
- 791
793
- 792
794
- 793
795
- 794
796
- 795
797
- 796
798
- 797
799
- 798
800
- 799
801
- 800
802
- 801
803
- 802
804
- 803
805
- 804
806
- 805
807
- 806
808
- 807
809
- 808
810
- 809
811
- 810
812
- 811
813
- 812
814
- 813
815
- 814
816
- 815
817
- 816
818
- 817
819
- 818
820
- 819
821
- 820
822
- 821
823
- 822
824
- 823
825
- 824
826
- 825
827
- 826
828
- 827
829
- 828
830
- 829
831
- 830
832
- 831
833
- 832
834
- 833
835
- 834
836
- 835
837
- 836
838
- 837
839
- 838
840
- 839
841
- 840
842
- 841
843
- 842
844
- 843
845
- 844
846
- 845
847
- 846
848
- 847
849
- 848
850
- 849
851
- 850
852
- 851
853
- 852
854
- 853
855
- 854
856
- 855
857
- 856
858
- 857
859
- 858
860
- 859
861
- 860
862
- 861
863
- 862
864
- 863
865
- 864
866
- 865
867
- 866
868
- 867
869
- 868
870
- 869
871
- 870
872
- 871
873
- 872
874
- 873
875
- 874
876
- 875
877
- 876
878
- 877
879
- 878
880
- 879
881
- 880
882
- 881
883
- 882
884
- 883
885
- 884
886
- 885
887
- 886
888
- 887
889
- 888
890
- 889
891
- 890
892
- 891
893
- 892
894
- 893
895
- 894
896
- 895
897
- 896
898
- 897
899
- 898
900
- 899
901
- 900
902
- 901
903
- 902
904
- 903
905
- 904
906
- 905
907
- 906
908
- 907
909
- 908
910
- 909
911
- 910
912
- 911
913
- 912
914
- 913
915
- 914
916
- 915
917
- 916
918
- 917
919
- 918
920
- 919
921
- 920
922
- 921
923
- 922
924
- 923
925
- 924
926
- 925
927
- 926
928
- 927
929
- 928
930
- 929
931
- 930
932
- 931
933
- 932
934
- 933
935
- 934
936
- 935
937
- 936
938
- 937
939
- 938
940
- 939
941
- 940
942
- 941
943
- 942
944
- 943
945
- 944
946
- 945
947
- 946
948
- 947
949
- 948
950
- 949
951
- 950
952
- 951
953
- 952
954
- 953
955
- 954
956
- 955
957
- 956
958
- 957
959
- 958
960
- 959
961
- 960
962
- 961
963
- 962
964
- 963
965
- 964
966
- 965
967
- 966
968
- 967
969
- 968
970
- 969
971
- 970
972
- 971
973
- 972
974
- 973
975
- 974
976
- 975
977
- 976
978
- 977
979
- 978
980
- 979
981
- 980
982
- 981
983
- 982
984
- 983
985
- 984
986
- 985
987
- 986
988
- 987
989
- 988
990
- 989
991
- 990
992
- 991
993
- 992
994
- 993
995
- 994
996
- 995
997
- 996
998
- 997
999
- 998
1000
- 999