kssdtree 2.0.1__tar.gz → 2.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {kssdtree-2.0.1/kssdtree.egg-info → kssdtree-2.0.2}/PKG-INFO +1 -1
- {kssdtree-2.0.1 → kssdtree-2.0.2/kssdtree.egg-info}/PKG-INFO +1 -1
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdtree.egg-info/requires.txt +1 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdtree.py +86 -75
- {kssdtree-2.0.1 → kssdtree-2.0.2}/setup.py +7 -20
- {kssdtree-2.0.1 → kssdtree-2.0.2}/toolutils.py +5 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/MANIFEST.in +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/README.md +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/align.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/buildtree.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/bytescale.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/cluster.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/co2mco.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/command_composite.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/command_dist.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/command_dist_wrapper.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/command_set.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/command_shuffle.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/distancemat.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnj.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/bytescale.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/dnj.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/filebuff.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/hclust.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/matrix.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/mman.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/nj.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/nwck.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/pherror.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/phy.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/qseqs.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/str.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/threader.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/tmp.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/dnjheaders/vector.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/filebuff.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/global_basic.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/hclust.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/iseq2comem.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdheaders/co2mco.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdheaders/command_composite.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdheaders/command_dist.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdheaders/command_dist_wrapper.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdheaders/command_set.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdheaders/command_shuffle.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdheaders/global_basic.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdheaders/iseq2comem.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdheaders/mman.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdheaders/mytime.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdtree.egg-info/SOURCES.txt +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdtree.egg-info/dependency_links.txt +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdtree.egg-info/not-zip-safe +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/kssdtree.egg-info/top_level.txt +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/matrix.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/mman.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/mytime.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/nj.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/njheaders/align.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/njheaders/buildtree.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/njheaders/cluster.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/njheaders/distancemat.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/njheaders/sequence.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/njheaders/tree.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/njheaders/util.h +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/nwck.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/pherror.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/phy.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/pydnj.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/pykssd.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/pynj.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/qseqs.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/sequence.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/setup.cfg +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/str.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/tmp.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/tree.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/util.c +0 -0
- {kssdtree-2.0.1 → kssdtree-2.0.2}/vector.c +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: kssdtree
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
4
4
|
Summary: Kssdtree is a versatile Python package for phylogenetic analysis. It also provides one-stop tree construction and visualization. It can handle DNA sequences of both fasta or fastq format, whether gzipped or not.
|
|
5
5
|
Home-page: https://github.com/yhlink/kssdtree
|
|
6
6
|
Download-URL: https://pypi.org/project/kssdtree
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: kssdtree
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
4
4
|
Summary: Kssdtree is a versatile Python package for phylogenetic analysis. It also provides one-stop tree construction and visualization. It can handle DNA sequences of both fasta or fastq format, whether gzipped or not.
|
|
5
5
|
Home-page: https://github.com/yhlink/kssdtree
|
|
6
6
|
Download-URL: https://pypi.org/project/kssdtree
|
|
@@ -44,7 +44,7 @@ def sketch(shuf_file=None, genome_files=None, output=None, set_opt=None):
|
|
|
44
44
|
end_time = time.time()
|
|
45
45
|
if end_time - start_time > 120:
|
|
46
46
|
print(
|
|
47
|
-
"Network timeout, please manually download from
|
|
47
|
+
"Network timeout, please manually download from https://zenodo.org/records/12699159")
|
|
48
48
|
return False
|
|
49
49
|
print('Download finished: ', shuf_file)
|
|
50
50
|
elif shuf_file in ['L2K8.shuf', 'L2K9.shuf', 'L3K11.shuf', './L2K8.shuf', './L2K9.shuf', './L3K11.shuf']:
|
|
@@ -207,7 +207,12 @@ def visualize(newick=None, taxonomy=None, mode=None):
|
|
|
207
207
|
return False
|
|
208
208
|
if mode is None:
|
|
209
209
|
mode = 'r'
|
|
210
|
-
|
|
210
|
+
if taxonomy is not None and mode == 'c':
|
|
211
|
+
print('Warning: this pipeline only support 'r' (rectangle) mode !!!')
|
|
212
|
+
mode = 'r'
|
|
213
|
+
toolutils.view_tree(newick, taxonomy, mode=mode)
|
|
214
|
+
else:
|
|
215
|
+
toolutils.view_tree(newick, taxonomy, mode=mode)
|
|
211
216
|
else:
|
|
212
217
|
print('Args error!!!')
|
|
213
218
|
return False
|
|
@@ -280,6 +285,9 @@ def subtract(ref_sketch=None, genome_sketch=None, output=None, flag=None):
|
|
|
280
285
|
def quick(shuf_file=None, genome_files=None, output=None, reference=None, database=None, method='nj', mode='r', N=0):
|
|
281
286
|
if reference is None and database is None:
|
|
282
287
|
if shuf_file is not None and genome_files is not None and output is not None:
|
|
288
|
+
if toolutils.is_positive_integer(N) or toolutils.is_negative_integer(N):
|
|
289
|
+
print("N must = 0 !!!")
|
|
290
|
+
return False
|
|
283
291
|
timeStamp = int(time.mktime(time.localtime(time.time())))
|
|
284
292
|
temp_sketch = toolutils.rs() + '_sketch_' + str(timeStamp)
|
|
285
293
|
temp_phy = toolutils.rs() + '_temp.phy'
|
|
@@ -325,7 +333,7 @@ def quick(shuf_file=None, genome_files=None, output=None, reference=None, databa
|
|
|
325
333
|
elif reference is None and database == 'gtdbr214':
|
|
326
334
|
if shuf_file is not None and genome_files is not None and output is not None:
|
|
327
335
|
if not toolutils.is_positive_integer(N):
|
|
328
|
-
print("N must >0 !!!")
|
|
336
|
+
print("N must > 0 !!!")
|
|
329
337
|
return False
|
|
330
338
|
if shuf_file != 'L3K9.shuf':
|
|
331
339
|
print("shuf_file must be set to 'L3K9.shuf'")
|
|
@@ -354,83 +362,86 @@ def quick(shuf_file=None, genome_files=None, output=None, reference=None, databa
|
|
|
354
362
|
return False
|
|
355
363
|
elif reference is not None and database is None:
|
|
356
364
|
if shuf_file is not None and genome_files is not None and output is not None and method in ['nj', 'dnj']:
|
|
357
|
-
if
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
print('genome_files is a folder containing at least two . fasta or .fastq files, not a file!!!')
|
|
365
|
+
if toolutils.is_positive_integer(N) or toolutils.is_negative_integer(N):
|
|
366
|
+
print("N must = 0 !!!")
|
|
367
|
+
return False
|
|
368
|
+
if not toolutils.allowed_file(genome_files):
|
|
369
|
+
num = toolutils.get_file_num(genome_files)
|
|
370
|
+
if num == 1:
|
|
371
|
+
print('genome_files is a folder containing at least two . fasta or .fastq files!!!')
|
|
365
372
|
return False
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
else:
|
|
373
|
+
else:
|
|
374
|
+
print('genome_files is a folder containing at least two . fasta or .fastq files, not a file!!!')
|
|
375
|
+
return False
|
|
376
|
+
timeStamp = int(time.mktime(time.localtime(time.time())))
|
|
377
|
+
temp_reference_sketch = toolutils.rs() + '_ref_sketch_' + str(timeStamp)
|
|
378
|
+
temp_genomes_sketch = toolutils.rs() + '_sketch_' + str(timeStamp)
|
|
379
|
+
if not toolutils.allowed_file(reference):
|
|
380
|
+
# cur_path = os.getcwd()
|
|
381
|
+
# ref_path = os.path.join(cur_path, reference)
|
|
382
|
+
num = toolutils.get_file_num(reference)
|
|
383
|
+
if num == 1:
|
|
378
384
|
temp_union_sketch = temp_reference_sketch
|
|
379
|
-
temp_subtract_sketch = toolutils.rs() + '_subtract_sketch_' + str(timeStamp)
|
|
380
|
-
temp_phy = toolutils.rs() + '_temp.phy'
|
|
381
|
-
print('Step1...')
|
|
382
|
-
s1 = sketch(shuf_file=shuf_file, genome_files=reference, output=temp_reference_sketch, set_opt=True)
|
|
383
|
-
if not s1:
|
|
384
|
-
return False
|
|
385
|
-
s2 = sketch(shuf_file=shuf_file, genome_files=genome_files, output=temp_genomes_sketch, set_opt=True)
|
|
386
|
-
if not s2:
|
|
387
|
-
return False
|
|
388
|
-
print('Step2...')
|
|
389
|
-
s3 = union(ref_sketch=temp_reference_sketch, output=temp_union_sketch)
|
|
390
|
-
if not s3:
|
|
391
|
-
return False
|
|
392
|
-
s4 = subtract(ref_sketch=temp_union_sketch, genome_sketch=temp_genomes_sketch,
|
|
393
|
-
output=temp_subtract_sketch, flag=1)
|
|
394
|
-
if not s4:
|
|
395
|
-
return False
|
|
396
|
-
print('Step3...')
|
|
397
|
-
if method == 'nj':
|
|
398
|
-
s5 = dist(genome_sketch=temp_subtract_sketch, output=temp_phy,
|
|
399
|
-
flag=0)
|
|
400
385
|
else:
|
|
401
|
-
|
|
402
|
-
flag=1)
|
|
403
|
-
if not s5:
|
|
404
|
-
return False
|
|
405
|
-
print('Step4...')
|
|
406
|
-
s6 = build(phylip=temp_phy, output=output, method=method)
|
|
407
|
-
if not s6:
|
|
408
|
-
return False
|
|
409
|
-
print('Step5...')
|
|
410
|
-
print('Tree visualization finished!')
|
|
411
|
-
visualize(newick=output, mode=mode)
|
|
412
|
-
if platform.system() == 'Linux':
|
|
413
|
-
current_directory = os.getcwd()
|
|
414
|
-
temp_dir1 = os.path.join(current_directory, temp_reference_sketch)
|
|
415
|
-
temp_dir2 = os.path.join(current_directory, temp_genomes_sketch)
|
|
416
|
-
temp_dir3 = os.path.join(current_directory, temp_union_sketch)
|
|
417
|
-
temp_dir4 = os.path.join(current_directory, temp_subtract_sketch)
|
|
418
|
-
temp_dir5 = os.path.join(current_directory, 'distout')
|
|
419
|
-
if os.path.exists(temp_dir1):
|
|
420
|
-
shutil.rmtree(temp_dir1)
|
|
421
|
-
if os.path.exists(temp_dir2):
|
|
422
|
-
shutil.rmtree(temp_dir2)
|
|
423
|
-
if os.path.exists(temp_dir3):
|
|
424
|
-
shutil.rmtree(temp_dir3)
|
|
425
|
-
if os.path.exists(temp_dir4):
|
|
426
|
-
shutil.rmtree(temp_dir4)
|
|
427
|
-
if os.path.exists(temp_dir5):
|
|
428
|
-
shutil.rmtree(temp_dir5)
|
|
429
|
-
if os.path.exists(temp_phy):
|
|
430
|
-
os.remove(temp_phy)
|
|
386
|
+
temp_union_sketch = toolutils.rs() + '_ref_union_sketch_' + str(timeStamp)
|
|
431
387
|
else:
|
|
432
|
-
|
|
388
|
+
temp_union_sketch = temp_reference_sketch
|
|
389
|
+
temp_subtract_sketch = toolutils.rs() + '_subtract_sketch_' + str(timeStamp)
|
|
390
|
+
temp_phy = toolutils.rs() + '_temp.phy'
|
|
391
|
+
print('Step1...')
|
|
392
|
+
s1 = sketch(shuf_file=shuf_file, genome_files=reference, output=temp_reference_sketch, set_opt=True)
|
|
393
|
+
if not s1:
|
|
433
394
|
return False
|
|
395
|
+
s2 = sketch(shuf_file=shuf_file, genome_files=genome_files, output=temp_genomes_sketch, set_opt=True)
|
|
396
|
+
if not s2:
|
|
397
|
+
return False
|
|
398
|
+
print('Step2...')
|
|
399
|
+
s3 = union(ref_sketch=temp_reference_sketch, output=temp_union_sketch)
|
|
400
|
+
if not s3:
|
|
401
|
+
return False
|
|
402
|
+
s4 = subtract(ref_sketch=temp_union_sketch, genome_sketch=temp_genomes_sketch,
|
|
403
|
+
output=temp_subtract_sketch, flag=1)
|
|
404
|
+
if not s4:
|
|
405
|
+
return False
|
|
406
|
+
print('Step3...')
|
|
407
|
+
if method == 'nj':
|
|
408
|
+
s5 = dist(genome_sketch=temp_subtract_sketch, output=temp_phy,
|
|
409
|
+
flag=0)
|
|
410
|
+
else:
|
|
411
|
+
s5 = dist(genome_sketch=temp_subtract_sketch, output=temp_phy,
|
|
412
|
+
flag=1)
|
|
413
|
+
if not s5:
|
|
414
|
+
return False
|
|
415
|
+
print('Step4...')
|
|
416
|
+
s6 = build(phylip=temp_phy, output=output, method=method)
|
|
417
|
+
if not s6:
|
|
418
|
+
return False
|
|
419
|
+
print('Step5...')
|
|
420
|
+
print('Tree visualization finished!')
|
|
421
|
+
visualize(newick=output, mode=mode)
|
|
422
|
+
if platform.system() == 'Linux':
|
|
423
|
+
current_directory = os.getcwd()
|
|
424
|
+
temp_dir1 = os.path.join(current_directory, temp_reference_sketch)
|
|
425
|
+
temp_dir2 = os.path.join(current_directory, temp_genomes_sketch)
|
|
426
|
+
temp_dir3 = os.path.join(current_directory, temp_union_sketch)
|
|
427
|
+
temp_dir4 = os.path.join(current_directory, temp_subtract_sketch)
|
|
428
|
+
temp_dir5 = os.path.join(current_directory, 'distout')
|
|
429
|
+
if os.path.exists(temp_dir1):
|
|
430
|
+
shutil.rmtree(temp_dir1)
|
|
431
|
+
if os.path.exists(temp_dir2):
|
|
432
|
+
shutil.rmtree(temp_dir2)
|
|
433
|
+
if os.path.exists(temp_dir3):
|
|
434
|
+
shutil.rmtree(temp_dir3)
|
|
435
|
+
if os.path.exists(temp_dir4):
|
|
436
|
+
shutil.rmtree(temp_dir4)
|
|
437
|
+
if os.path.exists(temp_dir5):
|
|
438
|
+
shutil.rmtree(temp_dir5)
|
|
439
|
+
if os.path.exists(temp_phy):
|
|
440
|
+
os.remove(temp_phy)
|
|
441
|
+
else:
|
|
442
|
+
print('Args error, please see https://kssdtree.readthedocs.io/en/latest!!!')
|
|
443
|
+
return False
|
|
444
|
+
|
|
434
445
|
else:
|
|
435
446
|
print('Pipeline error, please see https://kssdtree.readthedocs.io/en/latest!!!')
|
|
436
447
|
return False
|
|
@@ -2,8 +2,6 @@ import sys
|
|
|
2
2
|
from setuptools import setup, Extension, find_packages
|
|
3
3
|
from os import environ
|
|
4
4
|
import os
|
|
5
|
-
import platform
|
|
6
|
-
|
|
7
5
|
|
|
8
6
|
# def get_gcc_version():
|
|
9
7
|
# gcc_version = subprocess.check_output(['gcc', '--version']).decode('utf-8')
|
|
@@ -85,25 +83,16 @@ include_dirs1 = ['kssdheaders']
|
|
|
85
83
|
include_dirs2 = ['njheaders']
|
|
86
84
|
include_dirs3 = ['dnjheaders']
|
|
87
85
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
'ete3',
|
|
95
|
-
'requests'
|
|
96
|
-
]
|
|
97
|
-
else:
|
|
98
|
-
require_pakages = [
|
|
99
|
-
'pyqt5',
|
|
100
|
-
'ete3',
|
|
101
|
-
'requests'
|
|
102
|
-
]
|
|
86
|
+
require_pakages = [
|
|
87
|
+
'pyqt5',
|
|
88
|
+
'ete3',
|
|
89
|
+
'requests',
|
|
90
|
+
'pandas'
|
|
91
|
+
]
|
|
103
92
|
|
|
104
93
|
setup(
|
|
105
94
|
name='kssdtree',
|
|
106
|
-
version='2.0.
|
|
95
|
+
version='2.0.2',
|
|
107
96
|
author='Hang Yang',
|
|
108
97
|
author_email='yhlink1207@gmail.com',
|
|
109
98
|
description="Kssdtree is a versatile Python package for phylogenetic analysis. It also provides one-stop tree construction and visualization. It can handle DNA sequences of both fasta or fastq format, whether gzipped or not. ",
|
|
@@ -125,5 +114,3 @@ setup(
|
|
|
125
114
|
zip_safe=False,
|
|
126
115
|
include_package_data=True
|
|
127
116
|
)
|
|
128
|
-
|
|
129
|
-
|
|
@@ -24,6 +24,11 @@ def is_positive_integer(num):
|
|
|
24
24
|
else:
|
|
25
25
|
return False
|
|
26
26
|
|
|
27
|
+
def is_negative_integer(num):
|
|
28
|
+
if isinstance(num, int) and num < 0:
|
|
29
|
+
return True
|
|
30
|
+
else:
|
|
31
|
+
return False
|
|
27
32
|
|
|
28
33
|
def randomcolor():
|
|
29
34
|
colorArr = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|