akaiutil: access to AKAI S900/S1000/S3000 filesystems
Copyright (c) 2008-2022 by Klaus Michael Indlekofer. All rights reserved.
Note: Special restrictions apply. See disclaimers below and within the distribution.

Release akaiutil-4.6.7 (21-OCT-2022)



Email: m.indlekofer@gmx.de



Usage:
------

akaiutil [-h] [-r] [-F] [-C] [-l <lock-file>] [-o <start-offset>] [-s <pseudo-disk-size>] [-n <pseudo-disk-number>] [-c <cdrom-index> ...] [-p <physdrive-index> ...] [[-f] <floppy-drive> ...] [[-f] <disk-file> ...]
	-h	print this info
	-r	read-only mode
	-F	disable floppy filesystem for disk-files/CD-ROM drives/physical drives
	-C	disable cache
	-l	lock-file
	-o	set start offset for disk-file/drive in bytes
	-s	set pseudo-disk size in KB
	-n	set max. number of pseudo-disks per disk-file/drive
	-c	CD-ROM drive
	-p	physical drive
	-f	floppy drive or disk-file
		<floppy-drive> = floppyla: | floppylb: | floppyha: | floppyhb:



Commands:
---------

help [<cmd>]			print help information for a command
=man

exit				exit program
=quit
=bye
=q

restart				restart program (with opened disks)

restartkeep			restart program (with opened disks, keep current directory path etc.)
=restart.
=sync

df				print disk info

dinfo				print current directory info
=pwd

cd [<path>]			change current directory

cdi <volume-index>		change current volume

dir [<path>]			list directory
=ls

dirrec				list current directory recursively
=lsrec

lstags				list tags in partition
=dirtags

inittags			initialize tags of disk or partition

rentag <tag-index> <tag-name>	rename tag in partition

cdinfo				print CD3000 CD-ROM info

vcdinfo				print verbose CD3000 CD-ROM info

setcdinfo [<cdlabel>]		set CD3000 CD-ROM info of disk or partition

lcd <dir-path>			change current local (external) directory

ldir				list files in current local (external) directory
=lls

lsfat				print FAT of current partition

lsfati <file-index>		print FAT-chain of file

lstfati <take-index>		print FAT-chain of DD take

infoi <file-index>		print information for file

infoall				print information for all files in current volume

tinfoi <take-index>		print information for DD take

tinfoall			print information for all DD takes in current partition

del <file-path>			delete file
=rm

deli <file-index>		delete file
rmi

tdeli <take-index>		delete DD take
trmi

ren <old-file-path> <new-file-path> [<new-file-index>]		rename/move file
=mv

reni <old-file-index> <new-file-path> [<new-file-index>]	rename/move file
=mvi

setosveri <file-index> <new-os-version>				set OS version of file in S1000/S3000 volume

setosverall <new-os-version>					set OS version of all files in current S1000/S3000 volume

setuncompri <file-index> <new-uncompr>				set uncompr value of compressed file in S900 volume

updateuncompri <file-index>					update uncompr value of compressed file in S900 volume

updateuncomprall						update uncompr value of all compressed files in current S900 volume

sample900uncompr <file-path> [<dest-vol-path>]			uncompress S900 compressed sample file
=s9uncompr

sample900uncompri <file-index> [<dest-vol-path>]		uncompress S900 compressed sample file
=s9uncompri

sample900uncomprall [<dest-vol-path>]				uncompress all S900 compressed sample files in current volume
=s9uncomprall

sample900compr <file-path> [<dest-vol-path>]			compress S900 non-compressed sample file
=s9compr

sample900compri <file-index> [<dest-vol-path>]			compress S900 non-compressed sample file
=s9compri

sample900comprall [<dest-vol-path>]				compress all S900 non-compressed sample files in current volume
=s9comprall

fixramname <file-path>						fix name in file header

fixramnamei <file-index>					fix name in file header

fixramnameall							fix name in file header of all files in current volume

clrtagi <file-index> {<tag-index>|all}				untag file

clrtagall {<tag-index>|all}					untag all files in current volume

settagi <file-index> <tag-index>				tag file

settagall <tag-index>						tag all files in current volume

treni <take-index> <new-name>					rename DD take
=tmvi

clrfiltertag {<tag-index>|all}					remove tag from file filter

setfiltertag <tag-index>					add tag to file filter

copy <src-file-path> <new-file-path> [<new-file-index>]		copy file
=cp

copyi <src-file-index> <new-file-path> [<new-file-index>]	copy file
=cpi

copyvol <src-volume-path> <new-volume-path>			copy volume (with all of its files)
=cpvol

copyvoli <src-volume-index> <new-volume-path>			copy volume (with all of its files)
=cpvoli

copypart <src-partition-path> <dst-partition-path>		copy all volumes of a partition
=cppart

copytags <src-partition-path> <dst-partition-path>		copy all tags of a partition
=cptags

wipevol <volume-path>				delete all files in volume
=wipedir
=rmall

wipevoli <volume-index>				delete all files in volume
=wipediri
=rmalli

delvol <volume-path>				delete volume and all of its files
=deldir
=rmvol
=rmdir

delvoli <volume-index>				delete volume and all of its files
=deldiri
=rmvoli
=rmdiri

formatfloppyl9						format/erase low-density floppy for S900/S950, create filesystem
=formatfl9

formatfloppyl1						format/erase low-density floppy for S1000, create filesystem
=formatfl1

formatfloppyl3						format/erase low-density floppy for S3000, create filesystem
=formatfl3

formatfloppyh9						format/erase high-density floppy for S950, create filesystem
=formatfh9

formatfloppyh1						format/erase high-density floppy for S1000, create filesystem
=formatfh1

formatfloppyh3						format/erase high-density floppy for S3000, create filesystem
=formatfh3

wipefloppy						create filesystem on floppy
=newfsfloppy

formatharddisk9 [<total-size>[M]|SH205|SUPRA20M|SUPRA30M|SUPRA60M]	create filesystem on harddisk for S900/S950 (size in blocks or MB, or drive name)
=formathd9
=newfsharddisk9
=newfshd9

formatharddisk1 [<part-size>[M] [<total-size>[M]]]	create filesystem on harddisk for S1000 (size in blocks or MB)
=formathd1
=newfsharddisk9
=newfshd1

formatharddisk3 [<part-size>[M] [<total-size>[M]]]	create filesystem on harddisk for S3000 or CD3000 (size in blocks or MB)
=formathd3
=newfsharddisk3
=newfshd3

formatharddisk3cd [<part-size>[M] [<total-size>[M]]]	create filesystem on harddisk for CD3000 CD-ROM (size in blocks or MB)
=formatcd
=newfsharddisk3cd
=newfscd

wipepart [<partition-path>]				create filesystem in harddisk partition
=newfspart

wipepart3cd [<partition-path>]				create filesystem in harddisk partition for CD3000 CD-ROM
=newfspart3cd

fixpart [<partition-path>]			fix filesystem in harddisk partition

fixharddisk [<disk-path>]			fix filesystem on harddisk

scanbadblkspart [<partition-path>]		scan for bad blocks/clusters in partition

markbadblkspart [<partition-path>]		mark free bad blocks/clusters in partition

scanbadblksdisk [<disk-path>]			scan for bad blocks/clusters in all partitions of disk

markbadblksdisk [<disk-path>]			mark free bad blocks/clusters in all partitions of disk

getdisk <file-name>				get disk (to external file)
=dget
=dexport

putdisk <file-name>				put disk (from external file)
=dput
=dimport

getpart [<partition-path>] <file-name>		get partition (to external file)
=pget
=pexport

putpart <file-name> [<partition-path>]		put partition (from external file)
=pput
=pimport

gettags <file-name>				get tags from partition (to external file)
=tagsget
=tagsexport

puttags <file-name>				put tags to partition (from external file)
=tagsput
=tagsimport

renvol <old-path> <new-name>			rename volume
=rendir
=mvvol
=mvdir

renvoli <volume-index> <new-name>		rename volume
=rendiri
=mvvoli
=mvdiri

setosvervol <new-os-version>				set OS version of current volume

setosvervoli <volume-index> <new-os-version>		set OS version of volume

setlnum <new-load-number>				set load number of current volume (OFF for none)

setlnumi <volume-index> <new-load-number>		set load number of volume (OFF for none)

lsparam							list parameters in current volume

lsparami <volume-index>					list parameters in volume

initparam						initialize parameters in current volume

initparami <volume-index>				initialize parameters in volume

setparam <par-index> <par-value>			set parameters in current volume

setparami <volume-index> <par-index> <par-value>	set parameters in volume

getparam <file-name>					get parameters from current volume (to external file)
=paramget
=paramexport

getparami <volume-index> <file-name>			get parameters from volume (to external file)
=paramgeti
=paramexporti

putparam <file-name>					put parameters to current volume (from external file)
=paramput
=paramimport

putparami <volume-index> <file-name>			put parameters to volume (from external file)
=paramputi
=paramimporti

get <file-path> [<begin-byte> [<end-byte>]]	get file (to external)
=export

geti <file-index> [<begin-byte> [<end-byte>]]	get file (to external)
=exporti

getall						get all files (to external)
=exportall

sample2wav <file-path>				convert sample file into external WAV file
=s2wav
=getwav

sample2wavi <file-index>			convert sample file into external WAV file
=s2wavi
=getwavi

sample2wavall					convert all sample files into external WAV files
=s2wavall
=getwavall

put [<volume-path>/]<file-name> [<file-index>]			put file (from external, use * for all local files)
=import

wav2sample [<volume-path>/]<wav-file> [<file-index>]		convert external WAV file into sample file (use *.wav for all local WAV files)
=wav2s
=putwav

wav2sample9 [<volume-path>/]<wav-file> [<file-index>]		convert external WAV file into S900 non-compressed sample file (use *.wav for all local WAV files)
=wav2s9
=putwav9

wav2sample9c [<volume-path>/]<wav-file> [<file-index>]		convert external WAV file into S900 compressed sample file (use *.wav for all local WAV files)
=wav2s9c
=putwav9c

wav2sample1 [<volume-path>/]<wav-file> [<file-index>]		convert external WAV file into S1000 sample file (use *.wav for all local WAV files)
=wav2s1
=putwav1

wav2sample3 [<volume-path>/]<wav-file> [<file-index>]		convert external WAV file into S3000 sample file (use *.wav for all local WAV files)
=wav2s3
=putwav3

tgeti <take-index>				get DD take (to external)
=texporti

tgetall						get all DD takes (to external)
=texportall

take2wavi <take-index>				convert DD take into external WAV file
=t2wavi
=tgetwavi
=getwavti

take2wavall					convert all DD takes into external WAV files
=t2wavall
=tgetwavall
=getwavtall

tput <take-file>				put DD take (from external, use *.TK for all local DD take files)
=timport

wav2take <wav-file>				convert external WAV file into DD take (use *.wav for all local WAV files)
=wav2t
=tputwav
=putwavt

tarc <tar-file>		tar c from current directory (to external)
=target
=gettar

tarcwav <tar-file>	tar c from current directory (to external) with WAV conversion
=targetwav
=gettarwav

tarx <tar-file>		tar x in current directory (from external)
=tarput
=puttar

tarx9 <tar-file>	tar x in current directory (from external) for S900
=tarput9
=puttar9

tarx1 <tar-file>	tar x in current directory (from external) for S1000
=tarput1
=puttar1

tarx3 <tar-file>	tar x in current directory (from external) for S3000 or CD3000
=tarput3
=puttar3

tarx3cd <tar-file>	tar x in current directory (from external) for CD3000 CD-ROM
=tarput3cd
=puttar3cd

tarxwav <tar-file>	tar x in current directory (from external) with WAV conversion
=tarputwav
=puttarwav

tarxwav9 <tar-file>	tar x in current directory (from external) with WAV conversion to S900 non-compressed sample
=tarputwav9
=puttarwav9

tarxwav9c <tar-file>	tar x in current directory (from external) with WAV conversion to S900 compressed sample
=tarputwav9c
=puttarwav9c

tarxwav1 <tar-file>	tar x in current directory (from external) with WAV conversion to S1000 sample
=tarputwav1
=puttarwav1

tarxwav3 <tar-file>	tar x in current directory (from external) with WAV conversion to S3000 sample
=tarputwav3
=puttarwav3

mkvol [<volume-path>]						create new volume
=mkdir

mkvol9 [<volume-path>]						create new volume for S900
=mkdir9

mkvol1 [<volume-path> [<load-number>]]				create new volume for S1000
=mkdir1

mkvol3 [<volume-path> [<load-number>]]				create new volume for S3000 or CD3000
=mkdir3

mkvol3cd [<volume-path> [<load-number>]]			create new volume for CD3000 CD-ROM
=mkdir3cd

mkvoli <volume-index> [<volume-name> [<load-number>]]		create new volume at index
=mkdiri

mkvoli9 <volume-index> [<volume-name>]				create new volume for S900 at index
=mkdiri9

mkvoli1 <volume-index> [<volume-name> [<load-number>]]		create new volume for S1000 at index
=mkdiri1

mkvoli3 <volume-index> [<volume-name> [<load-number>]]		create new volume for S3000 or CD3000 at index
=mkdiri3

mkvoli3cd <volume-index> [<volume-name> [<load-number>]]	create new volume for CD3000 CD-ROM
=mkdiri3cd

dircache		print cache information
=lscache

disablecache		disable cache

enablecache		enable cache

lock			acquire lock

unlock			release lock

playwav [<wav-file>]	start playback of current external WAV file
=p

stopwav			stop playback of current external WAV file
=s

delwav			delete current external WAV file
=rmwav



Examples:
---------

Example 1: access floppy image fff.img
akaiutil.exe fff.img

Example 2: access harddisk images hhh1.img and hhh2.img
akaiutil.exe hhh1.img hhh2.img

Example 3: access harddisk image hhh.img and floppy image fff.img
akaiutil.exe hhh.img fff.img

Example 4: access multi-harddisk image mmm.img with pseudo-disks of 524280KB
akaiutil.exe -s 524280 mmm.img

Example 5: access high-density (HD) floppy in floppy drive A: on Windows PC:
akaiutil.exe floppyha:

Example 6: access Windows physical drive 1 and Windows CD-ROM drive 0
akaiutil.exe -p 1 -c 0

Example 7: access Windows physical drive 2, harddisk image hhh.img, and floppy image fff.img
akaiutil.exe -p 2 hhh.img fff.img

Example 8: access UNIX harddisks /dev/da1, /dev/da2, and harddisk image hhh.img
akaiutil /dev/da1 /dev/da2 hhh.img

Example 9: access Darwin harddisk /dev/disk1
akaiutil /dev/disk1

Example 10: access Darwin CD-ROM /dev/disk2s0 in read-only mode
akaiutil -r /dev/disk2s0



Warning:
--------

Accessing disk-files or floppies or physical drives might destroy their contents!!! Use at your own risk!!!
It is strongly recommended to use the read-only mode (-r) for testing and for accessing valuable drives, floppies, or files.



Notes:
------

* whole (pseudo-)disks can be imported/exported via "putdisk"/"getdisk"
* whole partitions can be imported/exported via "putpart"/"getpart"
* individual files can be imported/exported via "put"/"get"
* sample files can be exported to external WAV files via "sample2wav", "sample2wavall"
* DD takes can be exported to external WAV files via "take2wav", "take2wavall"
* external WAV files can be imported to sample files via "wav2sample", "wav2sample9", "wav2sample1","wav2sample3"
  WAV files for sample import must be mono or stereo, and in 8bit or 16bit or 24bit or 32bit PCM format
* external WAV files can be imported to DD takes via "wav2take"
  WAV files for DD take import must be mono or stereo, and in 8bit or 16bit or 24bit or 32bit PCM format
* the current external WAV file (e.g. previously exported via "sample2wav" or "take2wav") can be played back via "playwav"
* individual files can be copied via "copy"
* whole volumes and partitions can be copied via "copyvol" and "copypart"
* whole directory trees can be imported/exported from/to tar archives via "tarput"/"target"
* WAV file conversion for tar archives via "tarputwav"/"targetwav"
* file path names in akaiutil are of the form "/disk/partition/volume/file", e.g. "/disk2/C/VOLUME_007/SINE.S"
* for access to files/volumes via index, some commands have an "i" version
* abbreviations:
  ".." = one level up, "." = stay in same directory
  "/N" = "/diskN"
  "/floppyN" = "/diskN/A/<volume1>"
  '_' can be used as a typable replacement for ' ' (space) in file or volume names
* if the pseudo-disk size ("-s" option) and the max. number of pseudo-disks ("-n" option) are both specified,
  the given values are taken and the usable disk size is not determined automatically,
  which might be useful e.g. for accessing harddisks which have bad blocks
* for shared access to drives or disk-files,
  it might be useful to disable the cache (via the "-C" option or via the "disablecache" command),
  and the "restartkeep" command can be used to rescan disks/partitions/volumes,
  and a lock-file ("-l" option and "lock"/"unlock" commands) can be used for exclusive access
* for detailed information about individual akaiutil commands please read the online help infos



Floppy drives:
--------------

In order to access a floppy drive to format, read, or write an AKAI floppy on a Windows PC,
fdrawcmd.sys (by Simon Owen, see https://simonowen.com/fdrawcmd/) has to be installed.

Floppy drive arguments for akaiutil running on a Windows PC:
  "floppyla:" for low-density (DD) floppy in drive A:
  "floppylb:" for low-density (DD) floppy in drive B:
  "floppyha:" for high-density (HD) floppy in drive A:
  "floppyhb:" for high-density (HD) floppy in drive B:



Formatting drives and images:
-----------------------------

Low-density (DD) floppy size: 800 blocks (1KB) = 800KB

High-density (HD) floppy size: 1600 blocks (1KB) = 1600KB

Max. S900/S950 harddisk (or CD-ROM) size: 8191 blocks (8KB) = 65528KB = approx. 64MB

S900/S950 standard harddisk sizes:
2601 blocks (8KB) = 20808KB ("Atari SH205")
2500 blocks (8KB) = 20000KB ("Supra 20M")
3812 blocks (8KB) = 30496KB ("Supra 30M")
7624 blocks (8KB) = 60992KB ("Supra 60M")

Max. S1000/S3000 harddisk (or CD-ROM) size: 65535 blocks (8KB) = 524280KB = approx. 512MB

S1000/S3000 standard harddisk partition sizes:
3840 blocks (8KB) = 30720KB = 30MB
5120 blocks (8KB) = 40960KB = 40MB
6400 blocks (8KB) = 51200KB = 50MB
7680 blocks (8KB) = 61440KB = 60MB

ZIP100 disk size (as seen by akaiutil): 12288 blocks (8KB) = 98304KB = 96MB

ZIP250 disk size (as seen by akaiutil): 30595 blocks (8KB) = 244760KB = approx. 239MB

Warning: Formatting disk-files or floppies or physical drives destroys their contents!!! Use at your own risk!!!

Example 1: format S900 low-density (DD) floppy in floppy drive A: on Windows PC:
akaiutil.exe floppyla:
-> formatfloppyl9

Example 2: create and format S900 low-density floppy image
dd if=/dev/zero of=fff.img bs=1024 count=800
akaiutil fff.img
-> formatfloppyl9

Example 3: create and format S1000 high-density floppy image
dd if=/dev/zero of=fff.img bs=1024 count=1600
akaiutil fff.img
-> formatfloppyh1

Example 4: create and format CD3000 CD-ROM image of max. size
dd if=/dev/zero of=hhh.img bs=8192 count=65535
akaiutil hhh.img
-> formatharddisk3cd 60M
(this gives 8 partitions of 60MB and 1 partition of approx. 32MB)
-> setcdinfo MYCDROM
(this must be done after all volumes/files have been transferred)

Example 5: create and format S950 harddisk image of max. size
dd if=/dev/zero of=hhh.img bs=8192 count=8191
akaiutil hhh.img
-> formatharddisk9

Example 6: format ZIP100 drive at Windows physical drive 3 for S1000
akaiutil.exe -p 3
-> formatharddisk1 60M
(this gives 1 partition of 60MB and 1 partition of 36MB)

Example 7: format drive at Windows physical drive 4 for S1100 with DD space
akaiutil.exe -p 4
-> formatharddisk1 1M 1M
(this gives 1 partition of 1MB, rest of disk is allocated for DD)



Compilation:
------------

Depending on the operating system and the programming environment,
use Makefile (for make) or Makefile.nmake (for nmake) or the .vcproj file.



References:
-----------

* documentation, manuals, and webpages for AKAI samplers
* floppies, harddisks, CD-ROMs, and files for AKAI samplers
* "AkaiDisk" and its documentation, by Paul Kellett, accessed 09-JAN-2008, 06-MAR-2008, 27-MAR-2010
* "akaitools", by Hiroyuki Ohsaki, accessed 09-JAN-2008
* "akaifs", by Raymond Dresens and Roger Karis, accessed 18-JAN-2008
* "libakai", by Sébastien Métrot and Christian Schoenebeck, accessed 09-JAN-2008
* "fdrawcmd.sys" by Simon Owen, https://simonowen.com/fdrawcmd/, accessed 14-AUG-2020
* "DiskUtil" by Simon Owen, https://simonowen.com/fdrawcmd/DiskUtil.zip, accessed 14-AUG-2020



---
The following holds for all files in this distribution (unless stated otherwise on an
individual basis for each file and statement):

These program/data/document/HTML/picture/media files (materials) are distributed in the
hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. In no event shall the author be
liable for any direct, indirect, incidental, special, exemplary, or consequential damages
(including, but not limited to, procurement of substitue goods or services; loss of use,
data, or profits; or business interruption) however caused and on any theory of liability,
whether in contract, strict liability, or tort (including negligence or otherwise) arising
in any way out of the use of data/information/software from this distribution, even if
advised of the possibility of such damage. 

The contents of this distribution are intended for educational, non-commercial purposes
only. Materials contained herein are property of their respective owners.
All brand names and trademarks are property of their respective owners.
If any copyrighted works/trademarks have been used, please contact the author
and the item will be either removed or properly credited (at the copyright/trademark
owner's discretion). We have no intention of violating any copyrights or trademarks.
This distribution might use inlining and deep-linking, i.e. links in this distribution
might lead directly to materials on other web sites/distributions (in which case the
target page normally should be listed/credited in a "links" section). The author does
not take responsibility for the contents of any links referred to. We do not necessarily 
endorse, sanction, support, encourage, verify or agree with the contents, opinions or
statements of/on any of the linked pages. These statements hold for all links/references
in all files in this distribution. We are in no way affiliated with any
companies/institutions/individuals which might be mentioned in any manner in this
distribution.

The author does not take responsibility for incorrect, incomplete or misleading information.
Statements are to be considered as the author's free personal opinion. The author does not
necessarly possess any of the items mentioned in files in this distribution.

Files (and the information therein) created by the author are copyright
(c) by the author. Unless protected/restricted otherwise, the author permits
reproduction/redistribution of material contained in this distribution under the condition
that the item is properly credited. Links to items/materials in this distribution are welcome.
Projects/publications/papers that make use of materials, programs, or generated output
of this distribution must properly credit the author and mention the usage of this distribution.
Please contact the author for comments or further questions
and permission to use materials/information from this distribution.



---
This product includes software developed by the University of California, Berkeley
and its contributors.

Copyright (c) 1987-2002 The Regents of the University of California.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice,
   this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. [rescinded 22 July 1999]
4. Neither the name of the University nor the names of its contributors
   may be used to endorse or promote products derived from this software
   without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.



---
End of file
