Specifications of XCKS and ZXCKS files version 1.0.0

Table of contents

Preamble

Semantics

Specifications of XCKS files

Principles

XML and schema

Structure of an XCKS file

Simple types of the XCKS schema

algorithmsType type

fileType type

relativeFilesDirectoryType type

relativeFilesParentDirectoryType type

relativeFilesType type

checksumsFile element

Additional requirements

Name of files and directories

Description of checksum algorithms

Test vectors

Specifications of ZXCKS files

Licence of this specification

GNU Free Documentation License

Preamble

This specification describes the format of the XCKS and ZXCKS files in its version 1.0.0.

The purpose of these files is to store checksums of other files.

It is thus possible to check that the files referenced in a (Z)XCKS file were not modified compared to the time when the checksums of referenced files were computed.

An XCKS file is an XML file compliant with a specific schema and some additional requirements.

A ZXCKS file is a gzipped XCKS file.

Semantics

The key words “must”, “must not”, “required”, “shall”, “shall not”, “should”, “should not”, “recommended”, “may”, and “optional” in this document are to be interpreted as described in RFC 2119 (see definitions below, local copy).

The term “checksum” in this document is used in its generic definition to refer to a checksum algorithm, a hash algorithm or a cryptographic hash algorithm.

Specifications of XCKS files

Principles

An XCKS file is an XML file which contains one or several checksums per referenced file. The checksum algorithms are the same for all the files in the XCKS file. The paths of the files referenced in the XCKS file are relative to a unique base directory, generally the path of the XCKS file itself.

An XCKS file has two main sections:

  • the list of the checksum algorithms computed for each file;
  • the list of files with theirs computed checksums, the computed checksum algorithms correspond to the list of the precedent section.

The XCKS file structure is made to forbid the same file to appear more than once in the XCKS file. Note that the specificities of some filesystems like symbolic links can bypass this principle. It is up to the implementation to process these cases.

XML and schema

An XCKS file must be a valid XML file.

An XCKS file must use UTF-8 or UTF-16 encodings (see the Unicode standard).

An XCKS file must validate against the XCKS schema. An XCKS file which validates against the XCKS schema is invalid if it doesn't comply to others requirements in this specification.

Implementations of XCKS file readers may use the XCKS schema in its XML Schema 1.1 or, since XML Schema parsers with XML Schema 1.1 support are rare its XML Schema 1.0. They also may not use the XCKS schema, but in these two last cases, the implementation must supply programmatically the same level of checking than the XML Schema 1.1.

If they use the XCKS schema, the implementations must embed it locally.

In the rest of the specification, it will be specified if the requirement is covered by the XCKS schema in XML Schema 1.1, XML Schema 1.0, or is an additional requirement:

☑ XSD 1.1☑ XSD 1.0
: requirement covered by XCKS XML Schema 1.1, XCKS XML Schema 1.0 and programmatically.
☑ XSD 1.1☐ XSD 1.0
: requirement covered by XCKS XML Schema 1.1 and programmatically.
☐ XSD 1.1☐ XSD 1.0
: requirement covered only programmatically.

Structure of an XCKS file

An XCKS file has the following structure:

generated algorithmsType algorithm 1..∞ algorithms relativeFilesType relativeFilesParentDirectoryType relativeFilesParentDirectoryType 1..∞ ... parentDirectory relativeFilesDirectoryType relativeFilesDirectoryType 1..∞ ... fileType directory information checksum 1..∞ file 1..∞ directory fileType information checksum 1..∞ file 1..∞ parentDirectory relativeFilesDirectoryType relativeFilesDirectoryType 1..∞ ... directory fileType information checksum 1..∞ file 1..∞ fileType directory information checksum 1..∞ file 0..∞ localFiles checksumsFile
☑ XSD 1.1☑ XSD 1.0
All data must be in the attributes of elements.
☑ XSD 1.1☑ XSD 1.0
There must not be any data in the text content of elements.

Simple types of the XCKS schema

☑ XSD 1.1☑ XSD 1.0
The nonNullStringType simple type is a string which must have at least one character.
☑ XSD 1.1☑ XSD 1.0
The checksumValueType simple type is a string which must conforms to the ([a-fA-F0-9]{2}\s?)*([a-fA-F0-9]{2}) regular expression. It is used to store a value of checksum as a byte array in hexadecimal representation.
☑ XSD 1.1☑ XSD 1.0
The checksumType simple type is a string which must have one of the following values (case sensitive):
  • BLAKE3
  • CRC-32
  • CRC-64
  • MD2
  • MD4
  • MD5
  • RIPEMD-160
  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
  • SHA3-224
  • SHA3-256
  • SHA3-384
  • SHA3-512
  • SM3
  • Tiger
  • Whirlpool

algorithmsType type

The algorithmsType is used to declare which algorithms of checksums are needed for each file referenced in the checksums file.

algorithm 1..∞ algorithmsType
☑ XSD 1.1☑ XSD 1.0
The elements of algorithmsType must have as child a sequence of one or more algorithm elements.
☑ XSD 1.1☑ XSD 1.0
The algorithm child element must have an attribute named type of type checksumType.

fileType type

The fileType is used to reference a file in the checksums file with some optional information (size and last modification date) and with its computed checksums.

information checksum 1..∞ fileType
☑ XSD 1.1☑ XSD 1.0
The elements of fileType must have an attribute named name of type nonNullStringType.
☐ XSD 1.1☐ XSD 1.0
This attribute name must contain the full name of the file (including its extension but excluding directories). See name of files and directories.
☑ XSD 1.1☑ XSD 1.0
The elements of fileType must have an optional information child element.
☑ XSD 1.1☑ XSD 1.0
The elements of fileType must have a sequence of one or more checksum child elements.
☑ XSD 1.1☑ XSD 1.0
The order of fileType children elements must be information and checksum.
☑ XSD 1.1☑ XSD 1.0
The information child element must have two optional attributes:
  • size of type xs:nonNegativeInteger (non-negative integer) which is the size of the file in bytes.
  • date of type xs:dateTime (a date/time as in chapter 5.4 of ISO 8601) which is the date and time of the last modification on the file. It must be formatted like this: CCYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm].
☐ XSD 1.1☐ XSD 1.0
The data in the information child element must not be used by implementations to determine the validity of checked files. The purpose of these data is purely informational.
☑ XSD 1.1☑ XSD 1.0
The checksum child element must have two mandatory attributes:
  • type of type checksumType which is the type of the computed checksum.
  • value of type checksumValueType which is the value of the computed checksum.
☐ XSD 1.1☐ XSD 1.0
The implementations must verify that the value of the checksum is valid in relation to its type.

relativeFilesDirectoryType type

The relativeFilesDirectoryType represents a directory structure, it can contain files and subdirectories. No parent directory is allowed.

directory file 1..∞ relativeFilesDirectoryType
☑ XSD 1.1☑ XSD 1.0
The elements of relativeFilesDirectoryType must have an attribute named name of type nonNullStringType.
☐ XSD 1.1☐ XSD 1.0
This attribute name must contain the full name of the directory (including its extension if any but excluding parent directories). See name of files and directories.
☑ XSD 1.1☑ XSD 1.0
The elements of relativeFilesDirectoryType must have as child a sequence of one or more directory or file elements. The child element directory has the relativeFilesDirectoryType type, and the child element file has the fileType type.
☑ XSD 1.1☑ XSD 1.0
Each name attribute value of directory and file elements in the child sequence of the directory element must be unique in the sequence.
☑ XSD 1.1☑ XSD 1.0
Each type attribute value of checksum element in the child sequence of the file element must be unique in the sequence.

relativeFilesParentDirectoryType type

The relativeFilesParentDirectoryType represents a directory structure, it can contain files and subdirectories and none or one parent directory.

parentDirectory directory file 1..∞ relativeFilesParentDirectoryType
☑ XSD 1.1☑ XSD 1.0
The elements of relativeFilesParentDirectoryType must have as child a sequence of one or more directory or file elements and none or one parentDirectory element. The child element directory has the relativeFilesDirectoryType type, the child element file has the fileType type and the child element parentDirectory has the relativeFilesParentDirectoryType type.
☑ XSD 1.1☑ XSD 1.0
Each name attribute value of directory and file elements in the child sequence of the parentDirectory element must be unique in the sequence.
☑ XSD 1.1☑ XSD 1.0
Each name attribute value of directory and file elements in the child sequence of the directory element must be unique in the sequence.
☑ XSD 1.1☑ XSD 1.0
Each type attribute value of checksum element in the child sequence of the file element must be unique in the sequence.
☑ XSD 1.1☐ XSD 1.0
The child sequence of the relativeFilesParentDirectoryType type must contain at least one element and at most one parentDirectory element.

relativeFilesType type

The relativeFilesParentDirectoryType represents a directory structure, it can contain files and subdirectories and none or one parent directory.

parentDirectory directory file 0..∞ relativeFilesType
☑ XSD 1.1☑ XSD 1.0
The elements of relativeFilesType must have as child a sequence of directory or file elements and none or one parentDirectory element. The child element directory has the relativeFilesDirectoryType type, the child element file has the fileType type and the child element parentDirectory has the relativeFilesParentDirectoryType type.
☑ XSD 1.1☑ XSD 1.0
Each name attribute value of directory and file elements in the child sequence of the parentDirectory element must be unique in the sequence.
☑ XSD 1.1☑ XSD 1.0
Each name attribute value of directory and file elements in the child sequence of the directory element must be unique in the sequence.
☑ XSD 1.1☑ XSD 1.0
Each type attribute value of checksum element in the child sequence of the file element must be unique in the sequence.
☑ XSD 1.1☐ XSD 1.0
The child sequence of the relativeFilesType type must contain at most one parentDirectory element.

checksumsFile element

generated algorithms localFiles checksumsFile
☑ XSD 1.1☑ XSD 1.0
The checksumsFile element must have an attribute named version of type nonNullStringType which must have the value 1.0.0.
☑ XSD 1.1☑ XSD 1.0
The checksumsFile element must have an optional generated child element.
☑ XSD 1.1☑ XSD 1.0
The checksumsFile element must have a mandatory algorithms child element.
☑ XSD 1.1☑ XSD 1.0
The checksumsFile element must have a mandatory localFiles child element.
☑ XSD 1.1☑ XSD 1.0
The order of checksumsFile children elements must be generated, algorithms and localFiles.
☑ XSD 1.1☑ XSD 1.0
The generated child element must have three mandatory attributes:
  • by of type nonNullStringType which is the name of the application that wrote the XCKS file.
  • version of type nonNullStringType which is the version of the application that wrote the XCKS file.
  • on of type xs:dateTime (a date/time as in chapter 5.4 of ISO 8601) which is the writing date and time of the XCKS file. It must be formatted like this: CCYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm].
☑ XSD 1.1☑ XSD 1.0
The algorithms child element must have the algorithmsType type.
☑ XSD 1.1☑ XSD 1.0
The localFiles child element must have the relativeFilesType type.
☑ XSD 1.1☑ XSD 1.0
Each type attribute value of the algorithm elements in the child sequence of the algorithms child element must be unique in the sequence.
☑ XSD 1.1☑ XSD 1.0
Each name attribute value of directory and file elements in the child sequence of the localFiles element must be unique in the sequence.

Additional requirements

☐ XSD 1.1☐ XSD 1.0
The name attribute value of directory element of the types relativeFilesParentDirectoryType and relativeFilesType must not have the same name that the parent directory has.

For example, in this directory structure:

Root_Dir
    │
    ├ Dir_Level_1
    │     ├ Dir_Level_1_1
    │     ├ Dir_Level_1_2   ⇐  base directory
    │     └ Dir_Level_1_3
    ├ Dir_Level_2
    │     ├ Dir_Level_2_1
    │     ├ Dir_Level_2_2
    │     └ Dir_Level_2_3
    └ Dir_Level_3
          ├ Dir_Level_3_1
          ├ Dir_Level_3_2
          └ Dir_Level_3_3

If the base directory of the XCKS file is /Root_Dir/Dir_Level_1/Dir_Level_1_2, the XML structure could be:

<checksumsFile version="1.0.0">
…
  <localFiles>
    <parentDirectory>
      <directory name="Dir_Level_1_1"> … </directory>  ⇐  ok
      <directory name="Dir_Level_1_2"> … </directory>  ⇐  invalid name because it as the same name than the parent directory
      <directory name="Dir_Level_1_3"> … </directory>  ⇐  ok
      <parentDirectory>
        <directory name="Dir_Level_1"> … </directory>  ⇐  invalid name because it as the same name than the parent directory
        <directory name="Dir_Level_2"> … </directory>  ⇐  ok        
        <directory name="Dir_Level_3"> … </directory>  ⇐  ok
      </parentDirectory>
    </parentDirectory>
  </localFiles>
</checksumsFile>
☐ XSD 1.1☐ XSD 1.0
The list of checksums algorithms computed for all the referenced files in the XCKS file must be strictly the same than the list of declared checksums algorithms in the checksumsFile/algorithms section of the XCKS file.

Name of files and directories

The validity of a name of file or directory is platform dependant, so it is just required that a name of file or directory does not contain a path separator.

For systems which represents the current and the parent directories with a special name or designation, these names must not be used as name of file or directory in the XCKS file. For exemple on Unix and Windows, the names . (dot) to designate the current directory and .. (dot dot) to designate the parent directory are forbidden and it will used the parentDirectory to designate a parent directory instead.

The implementations should handle the common path separators, i.e. / (forward slash) and \ (backslash).

  • On Unix the following characters should be avoided: / (forward slash) and NUL byte.
  • On Windows the following characters should be avoided (see this Microsoft article [archive.org] : < (less than), > (greater than), : (colon), " (double quote), / (forward slash), \ (backslash), | (vertical bar or pipe), ? (question mark), * (asterisk), NUL byte.
  • On Windows the following should also considered as invalid:
    • bytes 1 to 31 (ASCII control characters)
    • the following reserved name of file (case insensitive): CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8 and COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 and LPT9

On Windows systems, implementations should treat names of files and directory as case insensitive.

On other systems, implementations should treat names of files and directory as case sensitive.

Description of checksum algorithms

The checksum algorithms that are required to be handled by an XCKS file are the following:

Algorithms of checksums required by XCKS file specification
Algorithm Message digest
size (bytes)
Description
BLAKE3 32 Cryptographic hash function, must be used in its the default output size of 256 bits.
Official implementation in Rust and C
CRC-32 4 CRC32b.
Recommendation I.363.5 of International Telecommunication Union (english, spanish and french)
CRC-64 8 CRC-64 (ECMA 182 standard [archive.org]).
CRC RevEng [archive.org]
MD2 16 MD2 message digest algorithm by Ronald Rivest
RFC 1115
MD4 16 MD4 message digest algorithm by Ronald Rivest (MD for Message Digest)
RFC 1320
MD5 16 MD5 message digest algorithm by Ronald Rivest (MD for Message Digest)
RFC 1321
RIPEMD-160 20 RIPE Message Digest family with digest size of 160 bits
The hash function RIPEMD-160
SHA-1 20 United States National Security Agency SHA-1 (Secure Hash Algorithm 1).
RFC 3174, Secure Hash Standard (SHS) (NIST)
SHA-224 28 Part of the United States National Security Agency SHA-2 (Secure Hash Algorithm 2) family with digest size of 224 bits (truncated version of SHA-256).
Secure Hash Standard (SHS) (NIST)
SHA-256 32 Part of the United States National Security Agency SHA-2 (Secure Hash Algorithm 2) family with digest size of 256 bits.
Descriptions of SHA-256, SHA-384, and SHA-512, Secure Hash Standard (SHS) (NIST)
SHA-384 48 Part of the United States National Security Agency SHA-2 (Secure Hash Algorithm 2) family with digest size of 384 bits (truncated version of SHA-512).
Descriptions of SHA-256, SHA-384, and SHA-512, Secure Hash Standard (SHS) (NIST)
SHA-512 64 Part of the United States National Security Agency SHA-2 (Secure Hash Algorithm 2) family with digest size of 512 bits.
Descriptions of SHA-256, SHA-384, and SHA-512, Secure Hash Standard (SHS) (NIST)
SHA3-224 28 Part of the United States National Institute of Standards and Technology SHA-3 family with digest size of 224 bits (based on the Keccak family).
SHA-3 Project, FIPS 180-4, Secure Hash Standard (SHS), FIPS 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions
Keccak implementation overview
SHA3-256 32 Part of the United States National Institute of Standards and Technology SHA-3 family with digest size of 256 bits (based on the Keccak family).
SHA-3 Project, FIPS 180-4, Secure Hash Standard (SHS), FIPS 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions
Keccak implementation overview
SHA3-384 48 Part of the United States National Institute of Standards and Technology SHA-3 family with digest size of 384 bits (based on the Keccak family).
SHA-3 Project, FIPS 180-4, Secure Hash Standard (SHS), FIPS 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions
Keccak implementation overview
SHA3-512 64 Part of the United States National Institute of Standards and Technology SHA-3 family with digest size of 512 bits (based on the Keccak family).
SHA-3 Project, FIPS 180-4, Secure Hash Standard (SHS), FIPS 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions
Keccak implementation overview
SM3 32 Chinese National Cryptography Administration SM3 cryptographic hash function.
The SM3 Cryptographic Hash Function, SM3 Cryptographic Hash Algorithm (in Chinese)
Tiger 24 Tiger cryptographic hash function by Ross Anderson and Eli Biham.
Tiger: A Fast New Cryptographic Hash Function (Designed in 1995)
Whirlpool 64 Whirlpool cryptographic hash function by Vincent Rijmen and Paulo S. L. M. Barreto.
The Whirlpool Hash Function

All algorithms described in this section must be supported by implementations.

Other algorithm than those described in this section must not be used in a XCKS file.

Test vectors

The test vectors are:

Definition of the test vectors
Name of the test vector Definition of the test vector and byte sequence
TV01 No data
Empty byte sequence
TV02 UTF-8 character sequence “abc
61 62 63
TV03 UTF-8 character sequence “абв
D0 B0 D0 B1 D0 B2
TV04 UTF-8 character sequence “αβγ
CE B1 CE B2 CE B3
TV05 UTF-8 character sequence “⠁⠃⠉
E2 A0 81 E2 A0 83 E2 A0 89
TV06 UTF-8 character sequence “1337 5|*34|<
31 33 33 37 20 35 7C 2A 33 34 7C 3C
TV07 UTF-8 character sequence “0123456789
30 31 32 33 34 35 36 37 38 39
TV08 UTF-8 character sequence “The quick brown fox jumps over the lazy dog
54 68 65 20 71 75 69 63 6B 20 62 72 6F 77 6E 20 66 6F 78 20 6A 75 6D 70 73 20 6F 76 65 72 20 74 68 65 20 6C 61 7A 79 20 64 6F 67
TV09 UTF-8 character sequence “Monsieur Jack, vous dactylographiez bien mieux que Wolf
4D 6F 6E 73 69 65 75 72 20 4A 61 63 6B 2C 20 76 6F 75 73 20 64 61 63 74 79 6C 6F 67 72 61 70 68 69 65 7A 20 62 69 65 6E 20 6D 69 65 75 78 20 71 75 65 20 57 6F 6C 66
TV10 UTF-8 character sequence “Danglars suivit Edmond et Mercédès des yeux jusqu’à ce que les deux amants eussent disparu à l’un des angles du fort Saint-Nicolas ; puis, se retournant alors, il aperçut Fernand, qui était retombé pâle et frémissant sur sa chaise, tandis que Caderousse balbutiait les paroles d’une chanson à boire.” from Le Comte de Monte-Cristo by Alexandre Dumas (père).
44 61 6E 67 6C 61 72 73 20 73 75 69 76 69 74 20 45 64 6D 6F 6E 64 20 65 74 20 4D 65 72 63 C3 A9 64 C3 A8 73 20 64 65 73 20 79 65 75 78 20 6A 75 73 71 75 E2 80 99 C3 A0 20 63 65 20 71 75 65 20 6C 65 73 20 64 65 75 78 20 61 6D 61 6E 74 73 20 65 75 73 73 65 6E 74 20 64 69 73 70 61 72 75 20 C3 A0 20 6C E2 80 99 75 6E 20 64 65 73 20 61 6E 67 6C 65 73 20 64 75 20 66 6F 72 74 20 53 61 69 6E 74 2D 4E 69 63 6F 6C 61 73 C2 A0 3B 20 70 75 69 73 2C 20 73 65 20 72 65 74 6F 75 72 6E 61 6E 74 20 61 6C 6F 72 73 2C 20 69 6C 20 61 70 65 72 C3 A7 75 74 20 46 65 72 6E 61 6E 64 2C 20 71 75 69 20 C3 A9 74 61 69 74 20 72 65 74 6F 6D 62 C3 A9 20 70 C3 A2 6C 65 20 65 74 20 66 72 C3 A9 6D 69 73 73 61 6E 74 20 73 75 72 20 73 61 20 63 68 61 69 73 65 2C 20 74 61 6E 64 69 73 20 71 75 65 20 43 61 64 65 72 6F 75 73 73 65 20 62 61 6C 62 75 74 69 61 69 74 20 6C 65 73 20 70 61 72 6F 6C 65 73 20 64 E2 80 99 75 6E 65 20 63 68 61 6E 73 6F 6E 20 C3 A0 20 62 6F 69 72 65 2E

The following table contains the test vectors for all the algorithms of checksums required by the XCKS specification:

Checksum algorithms test vectors
Algorithm Test vectors
BLAKE3 TV01 AF1349B9F5F9A1A6 A0404DEA36DCC949 9BCB25C9ADC112B7 CC9A93CAE41F3262
TV02 6437B3AC38465133 FFB63B75273A8DB5 48C558465D79DB03 FD359C6CD5BD9D85
TV03 12DFC1E620423E0E B649B76A917E515A 5650BCC7C3C60ABA 8E10B30ACECA4E0A
TV04 3F891E9A888B9FDE A67AEE5E4D16C9FB B6730EB6A8226CCC EDB8D8E8DE46D74C
TV05 32B47BC8948AEE02 A64808CEFA60AD56 653702022268FBC7 356D1FC9CDCAF031
TV06 A952A837BDF08B31 AAC00BB46F787410 67C4AFE64BA4FF5C 997F0C104AE94447
TV07 53B63A6FC8605D0C 0CE559317A00177D 72ADB24D669235E4 C914F443A8831CA1
TV08 2F1514181AADCCD9 13ABD94CFA592701 A5686AB23F8DF1DF F1B74710FEBC6D4A
TV09 2A1B2829D292EE75 736949A7A3718715 4DFC0B5E93D97E2F 54182B63EC35969E
TV10 3F02DACCA42C0C8C 540BB73A019903BC B2B2A97E3A94ACA9 F80F8A528E7048E4
CRC-32 TV01 00000000
TV02 352441C2
TV03 F5A48F99
TV04 E0DE547E
TV05 32A70460
TV06 15E047FB
TV07 A684C7C6
TV08 414FA339
TV09 9F1EA346
TV10 25D9646F
CRC-64 TV01 0000000000000000
TV02 66501A349A0E0855
TV03 BD610400506D2A6A
TV04 EFF0002CA8161896
TV05 567C6CDAE10624FF
TV06 CCC01732E4416DF7
TV07 2A71AB4164C3BBE8
TV08 41E05242FFA9883B
TV09 60D88D674DEC0717
TV10 C203567B583ED9C8
MD2 TV01 8350E5A3 E24C153D F2275C9F 80692773
TV02 DA853B0D 3F88D99B 30283A69 E6DED6BB
TV03 46B6D8DF E79F63BC 356ABC5B B347E569
TV04 F7232EAE 6A53E8DA 3347ED33 9EB29B54
TV05 5C756E29 B61CBDF4 21CB43C1 398E39C4
TV06 C04997DB 74150E98 AB14054F 82EB781A
TV07 46148200 A1C137CB 918812F2 EB08597C
TV08 03D85A0D 629D2C44 2E987525 319FC471
TV09 F4950EA5 B73E6CA0 6DE7301B 7D9D3395
TV10 16DC49EA 82AEA7E0 4B8F783E E8359C80
MD4 TV01 31D6CFE0 D16AE931 B73C59D7 E0C089C0
TV02 A448017A AF21D852 5FC10AE8 7AA6729D
TV03 AF668F53 0A305910 C61AE113 362DAA22
TV04 B236FF09 97576384 D8EB6E5B 7AF2041F
TV05 CFC197FC 8BE3AC5C F01D11A3 D9144863
TV06 165CAD07 8BFA1374 E130D401 72146128
TV07 165CAD07 8BFA1374 E130D401 72146128
TV08 1BEE69A4 6BA81118 5C194762 ABAEAE90
TV09 0E70B5A5 E9998E11 B84820FC B95B4EDC
TV10 D00F22B6 9A649B74 7C4662D6 7F00C219
MD5 TV01 D41D8CD9 8F00B204 E9800998 ECF8427E
TV02 90015098 3CD24FB0 D6963F7D 28E17F72
TV03 9817DE3F 4BD1D1D1 49FC366D 46E5E134
TV04 BF4AEDEA 98CEAB53 AF12B169 0F0CF6DC
TV05 A9124E89 E1195198 5C3A5F29 C2FDB603
TV06 3EEC9BE9 41F52C4B B262C872 5AC56151
TV07 781E5E24 5D69B566 979B86E2 8D23F2C7
TV08 9E107D9D 372BB682 6BD81D35 42A419D6
TV09 86DED208 39F3D6BC 3A656B1D DD9C2B6E
TV10 208FA702 14232EC5 6DC2389F CDDBF54A
RIPEMD-160 TV01 9C1185A5C5 E9FC546128 08977EE8F5 48B2258D31
TV02 8EB208F7E0 5D987A9B04 4A8E98C6B0 87F15A0BFC
TV03 F37F493421 CD195DD666 47080A401F EB648E65CA
TV04 5AFD0D670A 0C6D717DB6 A7176BEEEE 5ACDBD866D
TV05 096F813523 F9C631D9DE E1399493D2 6C8743CBBA
TV06 B06BB37196 4E432BFF79 FF7AD5D946 0D40E996D6
TV07 A1A922B488 E74B095C32 DD2EB01706 54944D1225
TV08 37F332F68D B77BD9D7ED D4969571AD 671CF9DD3B
TV09 E4A8A7DEC7 2E38DB1FEC E8C875FE94 E4E0036C20
TV10 62F2D12EB4 550B560C10 FEFC654F91 36CA3F4985
SHA-1 TV01 DA39A3EE5E 6B4B0D3255 BFEF956018 90AFD80709
TV02 A9993E3647 06816ABA3E 25717850C2 6C9CD0D89D
TV03 1598E4CA20 C6FEC5DAD8 C8A105F614 830C734257
TV04 A33E01A96D 92C1643EBB 4774C1B10D 7D9D4B6B6F
TV05 C4BD06E298 4CC7B9476A 690A34C90F E76E856084
TV06 71DB6D8B44 240CBEAF93 2E6F7A15C8 446F35D10A
TV07 87ACEC17CD 9DCD20A716 CC2CF67417 B71C8A7016
TV08 2FD4E1C67A 2D28FCED84 9EE1BB76E7 391B93EB12
TV09 DC12D14441 16B8608787 F21C5347B4 57DA74A828
TV10 5056021DE3 5676C2D4E4 C00843F275 FEE86FB944
SHA-224 TV01 D14A028C2A3A2B C9476102BB2882 34C415A2B01F82 8EA62AC5B3E42F
TV02 23097D223405D8 228642A477BDA2 55B32AADBCE4BD A0B3F7E36C9DA7
TV03 5A6D4B487BD9E1 B4D6A4AE04F8D1 69A5C5A423C29E EB67C2D0D36AD4
TV04 968FF792F76956 B958B1A7526FBA 17316D078898AC 92E980136CA6BC
TV05 1E070821323D69 FCDF2AC5FD8628 731DE9B7589FD8 6D8461C0084514
TV06 F06B4BB4AC5B11 7A91FDFEF476AE 6EDE7BE7D98030 DD46DC7179CFC3
TV07 F28AD8ECD48BA6 F914C114821685 AD08F0D6103649 FF156599A90426
TV08 730E109BD7A8A3 2B1CB9D9A09AA2 325D2430587DDB C0C38BAD911525
TV09 2841D91F770FE2 ADD87FB509188B 9ABA03F6EE09D9 D4C785C635AD96
TV10 FF7489DACD2227 DB53A1C74C91F7 57669E2103CCFF 8620222EF42C20
SHA-256 TV01 E3B0C44298FC1C14 9AFBF4C8996FB924 27AE41E4649B934C A495991B7852B855
TV02 BA7816BF8F01CFEA 414140DE5DAE2223 B00361A396177A9C B410FF61F20015AD
TV03 39E305D37FF46062 CC8BFC3CA667491E 07D17CFA2E71404C 641381FA1B8CC2CA
TV04 A36D0B22783C5FAC 3141DF5BD7C0CD4C 58ABFAF8E2EFF196 FF3043226D66FBB1
TV05 5295F77C71A065B8 94078F7911064C6D 668B3420C6A16C05 134C2F702E941D47
TV06 500063886A2EF632 3C9AD2B040EEA750 4290EB5BAF59127E F7D5C8009C386780
TV07 84D89877F0D4041E FB6BF91A16F0248F 2FD573E6AF05C19F 96BEDB9F882F7882
TV08 D7A8FBB307D78094 69CA9ABCB0082E4F 8D5651E46D3CDB76 2D02D0BF37C9E592
TV09 8C9E28C456E3EE52 985A54E356B9A431 CA78ECD42F5CA8F4 B7DA7FC13CCD5F21
TV10 77C700D3B7A4082C 38BC3A8EFF56A710 3B881229988DA092 98E2FA8848671A8C
SHA-384 TV01 38B060A751AC9638 4CD9327EB1B1E36A 21FDB71114BE0743 4C0CC7BF63F6E1DA 274EDEBFE76F65FB D51AD2F14898B95B
TV02 CB00753F45A35E8B B5A03D699AC65007 272C32AB0EDED163 1A8B605A43FF5BED 8086072BA1E7CC23 58BAECA134C825A7
TV03 27D4D488033FB387 92B9B6A37396183E CB5A448E492530B0 43DC5585A6234930 CB7B9CBFA10087F2 B4D26D7277EE3752
TV04 4776D59DE74F6CBD 026F5EA5500AD67A 8EA89B6E05CF51F0 49A33A4F53188CD3 847468839E029F90 7C802F90626A5D51
TV05 C14D00B30BC952A7 3AAF3148A2350C70 6E6A8F2C5E6CDE45 5FDFED7A138B3C67 DD00F5CD9F42E80A 8F3128E61CEAB69E
TV06 6DBFF46BF96AFF7A 0335261AAA8B4311 81310A71839C2FAE 94C8A54893227A8D 68C3B92F4904D043 B098A139D8A01231
TV07 90AE531F24E48697 904A4D0286F354C5 0A350EBB6C2B9EFC B22F71C96CEAEFFC 11C6095E9CA0DF0E C30BF685DCF2E5E5
TV08 CA737F1014A48F4C 0B6DD43CB177B0AF D9E5169367544C49 4011E3317DBF9A50 9CB1E5DC1E85A941 BBEE3D7F2AFBC9B1
TV09 87CD222CA18EF913 D6AD383336664C8E A58FF0E581E34DDD E0332CB57858C76A 28A22D295282BF65 7EAF73A96E8192D7
TV10 D5E611F3016B0D9B A48E861462F5DF88 EBBA66AFFD29B218 B62509CD845BD959 73CBEA91C753406A AA09655676BC820A
SHA-512 TV01 CF83E1357EEFB8BD F1542850D66D8007 D620E4050B5715DC 83F4A921D36CE9CE 47D0D13C5D85F2B0 FF8318D2877EEC2F 63B931BD47417A81 A538327AF927DA3E
TV02 DDAF35A193617ABA CC417349AE204131 12E6FA4E89A97EA2 0A9EEEE64B55D39A 2192992A274FC1A8 36BA3C23A3FEEBBD 454D4423643CE80E 2A9AC94FA54CA49F
TV03 37676FA9406B2FD4 C2AFDB6674826273 32B3E58F6ED8B3A8 3D16908329D6D6A0 43E1F3C0B40D2DC9 306163AF04680910 355BD50B4EC2F1AC BCEE94BCB18DBC5B
TV04 0DFF56E383BC8867 543CEFFBD11D801C DAD6EC7BF1810E73 B9A6A256DA0CA464 863094C96E1BA807 BEB5FDFE945A9648 A4989B7D962815B4 D8E20474B6D3B6C6
TV05 38C95BA53B4B299B 9F4C887DE924076E 10FD5DF1D7DC0410 5394704469C5077A C7D8A1D3B0AD3A30 33C094A486FE43BC 4C6EDB6465743DD9 385AFC608B2141E6
TV06 4928EA289D047301 D5EC7D9EB176F785 52FA5A941A984D8C 05FA3BBFF876FE13 784939FE7D9D0E6F 43696196B71D32DC 360D6A69A0760395 23C49199F61C4C6F
TV07 BB96C2FC40D2D546 17D6F276FEBE571F 623A8DADF0B73485 5299B0E107FDA32C F6B69F2DA32B3644 5D73690B93CBD0F7 BFC20E0F7F28553D 2A4428F23B716E90
TV08 07E547D9586F6A73 F73FBAC0435ED769 51218FB7D0C8D788 A309D785436BBB64 2E93A252A954F239 12547D1E8A3B5ED6 E1BFD7097821233F A0538F3DB854FEE6
TV09 A29BE2EEE0E6E8B0 C13A2BBB572DD62D CB5794D586B86180 C4DE513BD2ED6F86 7631B78B924525F2 D074A49A62B99F8C 91081CA62FFEC026 6E4F7F44A74BB225
TV10 BF2F25420800009B 34998413DC2B4D24 BE70703DDC3542FB E31B4E1BD3D4088F 6E42A0071F8F693E F8A6C143E63EADCA 28C7791E0CBA579E F380C031335CADEB
SHA3-224 TV01 6B4E03423667DB B73B6E15454F0E B1ABD4597F9A1B 078E3F5B5A6BC7
TV02 E642824C3F8CF2 4AD09234EE7D3C 766FC9A3A5168D 0C94AD73B46FDF
TV03 9898724992CB40 B25B558F300C57 1481EABC86C992 FEBAC4A573355A
TV04 5DD114F53F508E 8CC7C4A70DDE6F 2A12C5F38817BC E8921FD8947D1D
TV05 EB5EFBB1C3E01E 800E0A3AAF4D87 3BC4B0D26A8805 7A0B6041078E61
TV06 B815A1C4E8FF45 8B9CAFEBF98652 DB4C43795157A9 173EF5015A1288
TV07 06AA5C957A256C E91B3DB10862FB 3B5BBC77F2B621 A57DBA88AD0167
TV08 D15DADCEAA4D5D 7BB3B48F446421 D542E08AD88873 05E28D58335795
TV09 2D650A956272B7 C12AA3EDC6897F AE2FB3B45B6372 9AC83EC1C233C4
TV10 FB02BD9C2F32AA 180994EFABE11B 4DA9CCD1FE9733 DE1FD6BD04FF36
SHA3-256 TV01 A7FFC6F8BF1ED766 51C14756A061D662 F580FF4DE43B49FA 82D80A4B80F8434A
TV02 3A985DA74FE225B2 045C172D6BD390BD 855F086E3E9D525B 46BFE24511431532
TV03 5ECD0A88375A6853 C55F2208FA7B7F81 0EFD8E80F0C4628E 473CFA0DF05025F8
TV04 EC4019CA65EAD70D 808FEDF98B90998B 898B8A913B0827BF A385A6B759263A69
TV05 4883C4F2E5E38A6A 83364AA0F6111C95 3BD4D7CAFDD11EF3 340092C9EBF35439
TV06 ABBEA48FCB8F7C2C 7726A71DAC90855E 2043EA0549A502C8 C30360233DC3AC7C
TV07 8F8EAAD16CBF8722 A2165B660D47FCFD 8496A41C611DA758 F3BB70F809F01EE3
TV08 69070DDA01975C8C 120C3AADA1B28239 4E7F032FA9CF32F4 CB2259A0897DFC04
TV09 051A15FB5EB6FE47 18ADEF514293E075 EA738A7B94C48115 6E5912BCA3B82BBC
TV10 2B2120C16E61486F 38434E001D108954 D831939C78C9AA3E 24E7746CDC7C89AA
SHA3-384 TV01 0C63A75B845E4F7D 01107D852E4C2485 C51A50AAAA94FC61 995E71BBEE983A2A C3713831264ADB47 FB6BD1E058D5F004
TV02 EC01498288516FC9 26459F58E2C6AD8D F9B473CB0FC08C25 96DA7CF0E49BE4B2 98D88CEA927AC7F5 39F1EDF228376D25
TV03 3EEE4CAB897C17DE A4B170E43FF1353E 6AE64E3616F24DB1 C6958BF25444D3D4 5781B54D13C2AD0D D083AC5F6018096A
TV04 53B61C246C6C80E6 D2DFA628DB922D32 C7808E333A167F40 685AA47A5916A137 B98C235C92298A93 0AF9CD68811B5849
TV05 C4EAD93FB2FD1374 5AAEF328E3684877 87C7DB320BAAEC12 68B2B0EF9D7067D9 A327A72BDC58F91F 74D0D2F8CAF95424
TV06 63170F7FB2B89DD8 2F7F9BF609CFAB0C C0B056B88A38521B 14870E5E1BB93AF2 EED7DB892935762D 3C96E84E42067457
TV07 B489BC5DF177FC6F 7B8F6D4AB016058F DB9388A492A1C258 A1BE67BBB6E06DF5 A3D515557D05896B 11D14AD50017E319
TV08 7063465E08A93BCE 31CD89D2E3CA8F60 2498696E253592ED 26F07BF7E703CF32 8581E1471A7BA7AB 119B1A9EBDF8BE41
TV09 382C8D137FF7D872 7EADA78AF6F9F0D2 BEF22F3ABC6173A2 38A4689EDBC2F970 7379B50A5D1FBB00 DE6579236F2249C4
TV10 13CA80A8419B9E13 E70B52A4B5D0A7DE E481D927A0DE10DB 27A95507E3E5B62A B45FBE23386C8BD7 FE2E26CA9FD2D139
SHA3-512 TV01 A69F73CCA23A9AC5 C8B567DC185A756E 97C982164FE25859 E0D1DCC1475C80A6 15B2123AF1F5F94C 11E3E9402C3AC558 F500199D95B6D3E3 01758586281DCD26
TV02 B751850B1A57168A 5693CD924B6B096E 08F621827444F70D 884F5D0240D2712E 10E116E9192AF3C9 1A7EC57647E39340 57340B4CF408D5A5 6592F8274EEC53F0
TV03 358A09BB82A5B8C5 E9071718BB28BE8F 20C360FF76D15B42 35D3AD19D7DAAEBA 5709ABD9BA945A67 42934A469B9D75C8 4DCC9474DC2B666B EF1457007C4E3448
TV04 81006847BFFA6AD4 CC06E67F31C5A27A 6C321641FBCF873E DEEF93E20F97889B 57E3A2C78627FBD0 DD2E3090839065D9 D6AE4BD9277247E9 4527DFD919E6E777
TV05 F833CA8BE81F62F5 18F02B33FA9E2D49 2B2DD11D93A327D4 551D95EB9814581B 129D9F460A360CCA 5EB7E7A4FDC5C814 3932BBD0DA4C77D7 F4A4603BD457190E
TV06 334B6BDA3293B5E6 6EAAB8FEE142906D C0A4DCE871D59383 6833605D58D743BD 79AF46BFE21D7326 143835AF26CCF64D E7ACB4D22593AEDB 15A0D4BD0BFB2324
TV07 62610B14FCD9F4AB EAB6ED1CB4EC99E7 441BE250E62B805E 3A92811D31F2A170 D1A801E0E0FC15CF 5F28F0C508C3F3D9 295C6DDDDAD9B725 0140F6B27C641346
TV08 01DEDD5DE4EF1464 2445BA5F5B97C15E 47B9AD931326E4B0 727CD94CEFC44FFF 23F07BF543139939 B49128CAF436DC1B DEE54FCB24023A08 D9403F9B4BF0D450
TV09 992EA858C02D6D87 359599AD77753FEC E4FAABCD37137CE9 9B1CEB9E205DA5FA 45000AFF7678969D DDCCECCB05A36867 16B6FFC736BFF9C7 CA27250CD6525856
TV10 4BDCA29D6929A5E3 1A554BB3321787CE DD6EF9E121EB954A CAE4F34E24A3A00A 514CE4ED5665C68F D92742E453BBAF21 3B38F1D20239F8BD 305C925924AFA0BC
SM3 TV01 1AB21D8355CFA17F 8E61194831E81A8F 22BEC8C728FEFB74 7ED035EB5082AA2B
TV02 66C7F0F462EEEDD9 D1F2D46BDC10E4E2 4167C4875CF2F7A2 297DA02B8F4BA8E0
TV03 295BCC7B51A3B100 5C59AAE8F4E3A8A1 BCD719CABC1BFB55 6A34D45B622C6819
TV04 A4E0FC952EE4613F 898111104AD49E54 4BC69886D1F90B7A A08E79AEC8549964
TV05 EFDBB231A5E23CFB 1A2DC4E347FC5AB3 820D784EE7424615 A0228BD65697B4AC
TV06 893B8C98F908461F 888242B3D759B032 45BFA0036FFE3069 D2017EB70655D378
TV07 09093B72553F5D9D 622D6C62F5FFD916 EE959679B1BD4D16 9C3E12AA8328E743
TV08 5FDFE814B8573CA0 21983970FC79B221 8C9570369B485968 4E2E4C3FC76CB8EA
TV09 918C7E8C1D8D05CB 8E0BA2B21BCB3361 950F471B04D55F8A 10995045F364DD11
TV10 3EC32D08CAB8FAD3 01CFAB56573D2EB7 1DFCCD8C1D33F298 C3840CB7713AF262
Tiger TV01 3293AC630C13 F0245F92BBB1 766E16167A4E 58492DDE73F3
TV02 2AAB1484E8C1 58F2BFB8C5FF 41B57A525129 131C957B5F93
TV03 E5BE41E1DFA4 3ED2A15E38F8 BB078F289187 4E996B171367
TV04 3198F30E02E7 3EDABCBC2A31 DDE20F95C7E4 3074DB236A85
TV05 8741FCD1BF1F B99EFD4F7BE0 4F4853D07056 A7E1F2F252F2
TV06 C7AD5FA3E51E A45F1A8EC1E8 51DA3381DB1F 3C521CE0DC8B
TV07 FFBBCC96B905 0526F6ABA936 00556B16EC23 0F47D2730871
TV08 6D12A41E72E6 44F017B6F0E2 F7B44C6285F0 6DD5D2C5B075
TV09 3A9375E90C3C A292441B3699 8080AC39A0C1 761E1B7DC87A
TV10 BDA7DDFDD373 52F95B6AA9F9 41FD0B6223BF 399406175BA4
Whirlpool TV01 19FA61D75522A466 9B44E39C1D2E1726 C530232130D407F8 9AFEE0964997F7A7 3E83BE698B288FEB CF88E3E03C4F0757 EA8964E59B63D937 08B138CC42A66EB3
TV02 4E2448A4C6F486BB 16B6562C73B4020B F3043E3A731BCE72 1AE1B303D97E6D4C 7181EEBDB6C57E27 7D0E34957114CBD6 C797FC9D95D8B582 D225292076D4EEF5
TV03 12F6E2696C09BC30 B2BA8ACAAA81B15F 9F44C42F822F2020 C8DE9B315229807D 1446A2C0202F720F A1188C06844FE31E 147AEA89953ED9AD 9C15FC993CAB928B
TV04 0781D4D3B8294767 77A9F7E5800B7188 735DF99044F4B9E3 33FE588A4A9BDA99 FAD334355B47D88A 5035AFFFAC638E34 21A42D0DD8C35794 156FF201FB764CBC
TV05 5AA9E302C6734159 8A43041EC4C1CD21 CBE68B06577B6069 D72E4AC733AFE0B1 5835661387BA8C03 FA9BE6F0F2F5A176 326EAB203B453F7B 1709D400FB67C2F3
TV06 93ED709915A6E959 BB70233627A2F1D6 70B5311D6DF0C00E F044A55156927EF3 F28FCEB377032E4B 458EB20BA7610BA5 E1958CA9C3A8CC07 6024FCDE4F105CB6
TV07 87D33C95622C2F2A D163C3DC715218EE 7D9ACADB5C767A7F A4FE9F433CAE6CA2 83D9A99B3A5212D3 3EC7F11B154E505E 2BFD8D21293E02F5 030FA7E99F286F19
TV08 B97DE512E91E3828 B40D2B0FDCE9CEB3 C4A71F9BEA8D88E7 5C4FA854DF36725F D2B52EB6544EDCAC D6F8BEDDFEA403CB 55AE31F03AD62A5E F54E42EE82C3FB35
TV09 9FF20F27A91B273A 5E2A48BC6D14F1FC 9DE3CDFB6F7EA172 B34E30C5BB58128D C9062D9162D3E975 A01E191737738951 E26850CD5862FE73 8DAD2C05DE536544
TV10 D68B0D73800AC086 8A1FAC18D0425BF3 C50BFE1C6482E974 C2C2FE186E15FE90 EC934A1093F13E15 E0B8EFC83BB21302 91CEF3840A17BAFD 33B73250035013E6

Specifications of ZXCKS files

A ZXCKS file is an XCKS file compressed at the gzip [archive.org] format.

A ZXCKS file must be compressed at the gzip format.

A ZXCKS file must have a gzip header.

A ZXCKS file must not have a zlib header.

A ZXCKS file must be able to be decompressed into a valid XCKS file.

Licence of this specification

Copyright © 2022 Julien Couot.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.

GNU Free Documentation License

GNU Free Documentation License

Version 1.3, 3 November 2008

Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. <https://fsf.org/>

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

The "publisher" means any person or entity that distributes copies of the Document to the public.

A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

3. COPYING IN QUANTITY

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

  • A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
  • B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
  • C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
  • D. Preserve all the copyright notices of the Document.
  • E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
  • F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
  • G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
  • H. Include an unaltered copy of this License.
  • I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
  • J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
  • K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
  • L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
  • M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
  • N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
  • O. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

8. TRANSLATION

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.

However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See https://www.gnu.org/licenses/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document.

11. RELICENSING

"Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site.

"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.

"Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document.

An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.

The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.

ADDENDUM: How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

    Copyright (C)  YEAR  YOUR NAME.
              Permission is granted to copy, distribute and/or modify this document
              under the terms of the GNU Free Documentation License, Version 1.3
              or any later version published by the Free Software Foundation;
              with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
              A copy of the license is included in the section entitled "GNU
              Free Documentation License".
          

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with … Texts." line with this:

    with the Invariant Sections being LIST THEIR TITLES, with the
              Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
          

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.

Tools used to make this documentation