# Template File Contents

Last Updated: July 2025

Document Version: 2

This article describes the metadata, tokens, and special characters that you can include in your custom template files for use with the [Template File Generator](https://help.claritylims.illumina.com/integration-toolkits/litk/litk-template-file-generator).

**Available from:** BaseSpace Clarity LIMS v5.1.x

## Metadata

The following table lists and describes the metadata elements that you can include in your template files.

* Unless otherwise specified, metadata elements are optional. In some cases, a metadata element must be used in conjunction with another element. For example, *ILLEGAL.CHARACTERS* must be used with *ILLEGAL.CHARACTER.REPLACEMENTS*.
* Unless otherwise specified, metadata elements can appear multiple times in the template. However, if they are paired with values, only the first occurrence is used. The other lines are silently ignored.
* Unless otherwise specified, if a metadata element requires a single value, any additional values are ignored when the file is generated. For example, suppose you include the *OUTPUT.TARGET.DIR* \<path> metadata in your template file and provide more than one value for \<path>. The script will process only the first (valid) path value and will ignore all other values.
* Unless "metadata syntax must match exactly" is specified, metadata elements are detected and used even if there is text appended before or after them. For example the following expressions are equivalent:

  <pre class="language-markup" data-overflow="wrap"><code class="lang-markup">LIST.SEPARATOR, COMMA
  This-expression-is-equivalent-LIST.SEPARATOR-to-the-one-above, COMMA
  </code></pre>

For more information on metadata and how to use metadata elements in your template files, see [Metadata](https://help.claritylims.illumina.com/integration-toolkits/litk/litk-creating-template-files#metadata) in [Creating Template Files](https://help.claritylims.illumina.com/integration-toolkits/litk/litk-template-file-generator/litk-creating-template-files) article.

<table data-header-hidden><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Metadata Element</strong></td><td><strong>Description</strong></td><td><strong>Examples</strong></td></tr><tr><td>CONTROL.SAMPLE.DEFAULT.PROJECT.NAME, &#x3C;project name></td><td><p>Defines a project name for control samples. The value specified is used to determine the <em>SAMPLE.PROJECT.NAME</em> and <em>SAMPLE.PROJECT.NAME.ALL</em> token values.</p><ul><li>If not specified, the default project name for control samples is left empty.</li><li>If no project name follows the metadata element, the project name is left empty.</li></ul></td><td><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">CONTROL.SAMPLE.DEFAULT.PROJECT.NAME, My Control Sample Project
</code></pre><p>See also <a href="../litk-creating-template-files#defining-a-project-name-for-control-samples">Defining a project name for control samples</a>.</p></td></tr><tr><td>EXCLUDE.CONTROL.TYPES, &#x3C;control-type name>, &#x3C;control-type name>, ...</td><td><p>Excludes control inputs that have a control-type uri matching an entry from the exclusion list.</p><ul><li>The metadata entry must be followed by one or more control-type name, otherwise file generation is aborted.</li><li>Each control-type name must exist in the LIMS and the metadata syntax must match exactly. If this is not the case, file generation continues, but a warning message displays and a warning is logged in the log file.</li><li>A warning is issued if the metadata element is included more than once.</li></ul></td><td><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">EXCLUDE.CONTROL.TYPES, PhiX v3,
</code></pre><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">EXCLUDE.CONTROL.TYPES, PhiX v3, Endogenous Positive Control
</code></pre></td></tr><tr><td>EXCLUDE.CONTROL.TYPES.ALL</td><td><p>Excludes all control types. Takes precedence over <em>EXCLUDE.CONTROL.TYPES</em></p><ul><li>The metadata syntax must match exactly.</li><li>If this metadata element is included more than once, file generation completes, but a warning message is logged in the log file.</li></ul></td><td></td></tr><tr><td>EXCLUDE.INPUT.ANALYTES</td><td>Excludes inputs of type Analyte (derived sample) from the generated file.<br>If used without the <em>INCLUDE.INPUT.RESULTFILES</em> element, the generated files will be empty. File generation finishes with a warning message and a warning is logged in the log file.</td><td></td></tr><tr><td>EXCLUDE.OUTPUT.ANALYTES</td><td><p>Excludes outputs of type Analyte (derived sample) from the generated file.<br>The generated file(s) will be empty if:</p><ul><li>This element is used without the <em>INCLUDE.OUTPUT.RESULTFILES</em> element.</li><li>There is no per input or shared result file output analyte in the step (or container if a <em>GROUP.FILES.BY</em> is enabled).</li></ul><p>In both scenarios, file generation finishes with a warning message and a warning is logged in the log file.</p></td><td></td></tr><tr><td><p>GROUP.FILES.BY.&#x3C;grouping>, &#x3C;zip file name><br><br>The following groupings are supported:</p><ul><li>GROUP.FILES.BY.INPUT.CONTAINERS - generates one file per input container</li><li>GROUP.FILES.BY.OUTPUT.CONTAINERS- generates one file per output container</li></ul></td><td><p>Creates a file for each instance of the specified grouping, i.e., one file per input or per output container. The script gathers all files together into one zip file so only one file placeholder is needed.<br>The metadata may be followed by the name of the zip file that will contain the grouped files. Otherwise, the value set by the <a href="../litk-creating-template-files#script-parameters"><em>-destLIMSID</em></a> script parameter is used for the file name.<br>The following scenarios will abort file generation:</p><ul><li>Collisions between the file names. (See <em>OUTPUT.FILE.NAME</em>)</li><li>Attempting to group files by both input and output container in the same template.</li></ul></td><td><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">GROUP.FILES.BY.INPUT.CONTAINERS, MyInputContainerFile
</code></pre><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">GROUP.FILES.BY.OUTPUT.CONTAINERs, MyOutputContainerFile
</code></pre><p>See also <a href="../litk-creating-template-files#generating-multiple-files">Generating Multiple Files</a>.</p></td></tr><tr><td><p>HIDE, &#x3C;token>, &#x3C;token>, ... IF &#x3C;case><br><br>The following case is supported:</p><ul><li>NODATA: Line/Column is removed if the token has no value.</li></ul></td><td><p>Removes lines from the <em>HEADER_BLOCK</em> section and columns from the <em>HEADER</em> and <em>DATA</em> sections when a &#x3C;token> matches the &#x3C;case>.</p><ul><li>All <em>HIDE</em> lines in the template are treated.</li><li>There can be one or more &#x3C;token> on a <em>HIDE</em> line.</li><li>If there is no &#x3C;token> between <em>HIDE</em> and <em>IF</em>, file generation is aborted.</li><li>All tokens must be part of the <a href="#tokens">supported tokens</a> list. Unsupported tokens will abort the file generation. Otherwise, file generation is aborted.</li></ul></td><td></td></tr><tr><td>ILLEGAL.CHARACTERS, &#x3C;character>, &#x3C;character>, ...<br>ILLEGAL.CHARACTER.REPLACEMENTS, &#x3C;replacement>, &#x3C;replacement>, ...<br><br>&#x3C;character> supports Special Character Mapping</td><td><p>Specifies characters that must not appear in the generated file, and replaces them.</p><ul><li>Each &#x3C;character> is replaced by the matching &#x3C;replacement> element.</li><li>Refer to <a href="#special-characters">Special Characters</a> section below to determine if the illegal character must be specified using a keyword.</li><li>If <em>ILLEGAL.CHARACTERS</em> or <em>ILLEGAL.CHARACTER.REPLACEMENTS</em> is missing, file generation completes with a warning message and a warning is logged in the log file. No character replacement is performed.</li><li>The lists following <em>ILLEGAL.CHARACTERS</em> and <em>ILLEGAL.CHARACTER.REPLACEMENTS</em> must match 1-to-1 in order. Otherwise, file generation completes with a warning message and a warning is logged in the log file. No character replacement is performed.</li></ul></td><td><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">ILLEGAL.CHARACTERS,PERIOD
</code></pre><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">ILLEGAL.CHARACTER.REPLACEMENTS,_
</code></pre><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">ILLEGAL.CHARACTERS,TAB,PERIOD,#,&#x3C;,>
</code></pre><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">ILLEGAL.CHARACTER.REPLACEMENTS,,,_,","
</code></pre></td></tr><tr><td>INCLUDE.INPUT.RESULTFILES</td><td><p>Includes inputs of type <em>ResultFile</em> in the generated file. (By default these are excluded.)</p><blockquote><p>ℹ In LIMS v5 and later, <em>ResultFile</em> inputs are only supported in the API.</p></blockquote></td><td></td></tr><tr><td>INCLUDE.OUTPUT.RESULTFILES</td><td>Includes outputs of type <em>ResultFile</em> in the generated file. (By default these are excluded.)</td><td></td></tr><tr><td>LIST.SEPARATOR, &#x3C;separator><br><br>&#x3C;separator> supports Special Character Mapping</td><td><p>Specifies character(s) used to separate elements for tokens that return lists (e.g., <em>SAMPLE.PROJECT.NAME.ALL</em>).</p><ul><li>If this metadata is not specified, COMMA is used by default.</li><li>Must be followed by the separator character(s) to be used. If no separator is specified, file generation is aborted.</li><li>Refer to the <a href="#special-characters">Special Characters</a> section below to determine if the character must be provided using a keyword.</li></ul></td><td><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">LIST.SEPARATOR,"; "
</code></pre></td></tr><tr><td>OUTPUT.FILE.NAME, &#x3C;file name></td><td><p>Specifies the name for the generated file(s).</p><ul><li>The metadata syntax must match exactly.</li><li>A subset of tokens is supported in the file name.</li><li>If the metadata element is not followed by the file name, file generation is aborted.</li><li><p>If this metadata element is not provided or is incomplete, the value of the <a href="../litk-creating-template-files#script-parameters"><em>-o</em></a> script parameter is used instead.</p><ul><li>This causes collisions when multiple files are generated. In this case, file generation completes with an exception message and a warning is logged in the log file.</li></ul></li><li>Using a path in the file name is deprecated, but still supported (update to <em>OUTPUT.TARGET.DIR</em>). File generation finishes with a warning message and a warning is logged in the log file.</li><li><p>Characters in the file name must be either alpha-numeric, underscores, dashes or periods.</p><ul><li>Illegal characters are replaced (see <em>OUTPUT.FILE.NAME.ILLEGAL.CHARACTER.REPLACEMENT</em>)</li><li>File generation finishes with a warning message and a warning is logged in the log file.</li></ul></li></ul></td><td><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">OUTPUT.FILE.NAME,NewTemplateFileName.csv
</code></pre><p>You can include 'grouping' tokens in the file name, which allows you to create unique file names when generating multiple files. For details and a list of supported tokens, see <a href="../litk-creating-template-files#using-token-values-in-file-names">Using Token Values in File Names</a>.</p></td></tr><tr><td>OUTPUT.FILE.NAME.ILLEGAL.CHARACTER.REPLACEMENT, &#x3C;replacement></td><td><p>Specifies the character(s) to use when replacing illegal characters in file names.</p><ul><li>Legal characters are either alpha-numeric or an underscore, dash or period.</li><li>If this metadata element is not present, an underscore is used instead. (File generation finishes with a warning message and a warning is logged in the log file.)</li><li>If the replacement character is an illegal character itself, an underscore is used.</li><li>Must be followed by the character(s) to use for replacing illegal characters in file names. Otherwise, file generation is aborted.</li></ul></td><td></td></tr><tr><td>OUTPUT.SEPARATOR, &#x3C;separator><br><br>&#x3C;separator> supports Special Character Mapping</td><td><p>Specifies the character(s) used to separate columns in the output.</p><ul><li>If this metadata is not specified, COMMA is used by default.</li><li>Must be followed by the separator character(s) to be used. If no separator is specified, file generation is aborted.</li><li>Refer to the <a href="#special-characters">Special Characters</a> section below to determine if the separator must be provided using a keyword</li></ul></td><td><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">OUTPUT.SEPARATOR,TAB
</code></pre></td></tr><tr><td>OUTPUT.TARGET.DIR, &#x3C;path></td><td><p>Specifies the name for the generated file(s).</p><ul><li>The metadata syntax must match exactly.</li><li>A subset of tokens is supported in the file name.</li><li>If the metadata element is not followed by a path, file generation is aborted.</li><li>If this metadata element is not provided or is incomplete, the value of <em>OUTPUT.FILE.NAME</em> is used instead.</li><li>If <em>OUTPUT.FILE.NAME</em> contains a path, it is replaced by &#x3C;path>.</li></ul></td><td><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">OUTPUT.TARGET.DIR,/Users/LabTech/TemplateFiles/
</code></pre><p>See also <a href="../litk-creating-template-files#using-token-values-in-file-names">Using Token Values in File Names</a>.</p></td></tr><tr><td>PROCESS.POOLED.ARTIFACTS</td><td><p>Includes pools in the generated file as if they were regular input artifacts.</p><ul><li>When this metadata element is present, it uses demultiplexing logic and prints one row per sample in the pool.</li><li>In the case of a submitted pool, sample names are generated following this pattern: “&#x3C;pool-name>-&#x3C;reagent-id>”</li><li>If an input is not pooled in this mode, the input is treated as a pool of one sample.</li><li>If the input is a pool of pools with only one sample, then it prints out as a pooled artifact instead of an input prior to the pool.</li><li>If this metadata element is not included, if the input is a pool, it is treated as if it were a single sample and only one row is output in the file.</li></ul></td><td></td></tr><tr><td>SCRIPT.VERSION, &#x3C;major>.&#x3C;minor>.&#x3C;patch></td><td><p>Provides the version of the compatible <em>DriverFileGenerator.jar</em> file.</p><ul><li>Version compatibility is only checked if this metadata is present.</li><li><em>&#x3C;major>.&#x3C;minor>.&#x3C;patch></em> must all be present. Otherwise, file generation is aborted.</li><li>File generation is aborted if <em>SCRIPT.VERSION &#x3C;major></em> does not match the Template File Generator version.</li><li>The file generation continues with a warning if the <em>SCRIPT.VERSION</em> is later than the Template File Generator version (<em>&#x3C;minor></em> and <em>&#x3C;patch></em> only).</li></ul><blockquote><p>⚠ Ensure your NGS version is up to date.</p></blockquote></td><td><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">SCRIPT.VERSION,1.0.2
</code></pre></td></tr><tr><td>SORT.BY.${token}, ${token}, ...</td><td><p>Sorts the <em>&#x3C;DATA></em> rows based on the <em>${token}</em> specified.</p><ul><li>There is no reverse order.</li><li>If the <em>SORT.BY.</em> metadata element is not followed by <em>${token}</em>, it is silently ignored.</li></ul></td><td><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">SORT.BY.${INPUT.CONTAINER.ROW}${INPUT.CONTAINER.COLUMN}
</code></pre><p>See <a href="../litk-creating-template-files#sorting-logic">Sorting Logic</a>.</p></td></tr><tr><td>SORT.VERTICAL</td><td><p>Sorts the <em>&#x3C;DATA></em> rows based on container column placement.</p><ul><li><em>SORT.BY.${INPUT.CONTAINER.ROW}${INPUT.CONTAINER.COLUMN}</em> must also be present in the template. Otherwise <em>SORT.VERTICAL</em> will have no effect and is silently ignored.</li></ul></td><td>See <a href="../litk-creating-template-files#sorting-logic">Sorting Logic</a>.</td></tr></tbody></table>

## Tokens

A token is a placeholder variable that is replaced with unique data at run time. You can include tokens in automation command lines, in scripts, and in template files.

For example, suppose you include the *INPUT.CONTAINER.NAME* token in a template file generated by a step. At run time, this token is replaced with the name of the container that was input to the step.

All tokens included in a template file must appear in the following form: *${TOKEN}*, for example - *${INPUT.CONTAINER.NAME}*.

### Input and Output Tokens

For steps with *ResultFile* inputs or outputs, refer to the following entries in the [Metadata](#metadata) table:

* INCLUDE.INPUT.RESULTFILES
* INCLUDE.OUTPUT.RESULTFILES

| **Token**                                                                  | **Description**                                                                                                                               |
| -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| <p>INPUT.LIMSID<br>OUTPUT.LIMSID</p>                                       | The LIMS ID of a given input / output                                                                                                         |
| <p>INPUT.NAME<br>OUTPUT.NAME</p>                                           | The name of a given input / output                                                                                                            |
| <p>INPUT.CONTAINER.COLUMN<br>OUTPUT.CONTAINER.COLUMN</p>                   | The column part of the placement of a given input / output in its container                                                                   |
| <p>INPUT.CONTAINER.LIMSID<br>OUTPUT.CONTAINER.LIMSID</p>                   | <p>The LIMS ID of the container of a given input / output<br>Also supported in:</p><ul><li>HEADER\_BLOCK</li><li>file name</li></ul>          |
| <p>INPUT.CONTAINER.NAME<br>OUTPUT.CONTAINER.NAME</p>                       | <p>The name of the container of a given input / output<br>Also supported in:</p><ul><li>HEADER\_BLOCK</li><li>file name</li></ul>             |
| <p>INPUT.CONTAINER.PLACEMENT<br>OUTPUT.CONTAINER.PLACEMENT</p>             | The placement of a given input / output in its container. Format defined in the \<PLACEMENT> segment                                          |
| <p>INPUT.CONTAINER.ROW<br>OUTPUT.CONTAINER.ROW</p>                         | The row part of the placement of a given input / output in its container                                                                      |
| <p>INPUT.CONTAINER.TYPE<br>OUTPUT.CONTAINER.TYPE</p>                       | <p>The type of container holding a given input / output<br>Also supported in:</p><ul><li>HEADER\_BLOCK</li><li>file name</li></ul>            |
| <p>INPUT.CONTAINER.UDF.\<udf name><br>OUTPUT.CONTAINER.UDF.\<udf name></p> | Get the value of a UDF on the container of a given input / output                                                                             |
| <p>INPUT.REAGENT.CATEGORY<br>OUTPUT.REAGENT.CATEGORY</p>                   | List of categories of reagent on a given input / output                                                                                       |
| <p>INPUT.REAGENT.NAME<br>OUTPUT.REAGENT.NAME</p>                           | List of reagents on an input / output                                                                                                         |
| <p>INPUT.REAGENT.SEQUENCE<br>OUTPUT.REAGENT.SEQUENCE</p>                   | List the sequence of each category of reagent on a given input / output                                                                       |
| <p>INPUT.UDF.\<udf name><br>OUTPUT.UDF.\<udf name></p>                     | Get the value of a UDF on a given input / output                                                                                              |
| INPUT.POOL.NAME                                                            | If the current input is a pool, provides its name. Empty if the input is not a pool                                                           |
| INPUT.POOL.PLACEMENT                                                       | <p>If the current input is a pool, provides its placement (not affected by the \<PLACEMENT> section)<br>Empty if the input is not a pool.</p> |
| INPUT.POOL.UDF.\<udf name>                                                 | <p>If the current input is a pool, provides one of its UDFs.<br>Empty if the input is not a pool.</p>                                         |

### Process Tokens

| **Token**                                                                                                                        | **Description**                                                                                                                                      |
| -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| PROCESS.LIMSID                                                                                                                   | <p>The LIMS ID of the current process<br>Also supported in:</p><ul><li>HEADER\_BLOCK</li><li>file name</li></ul>                                     |
| PROCESS.NAME                                                                                                                     | The name of the current process                                                                                                                      |
| PROCESS.UDF.\<udf name>                                                                                                          | <p>Get the value of a process UDF (on the current step)<br>Also supported in:</p><ul><li>HEADER\_BLOCK</li><li>file name</li></ul>                   |
| <p>PROCESS.TECHNICIAN<br><br>See Upgrade Note in <a href="litk-creating-template-files">Creating Template Files</a> article.</p> | <p>The first and last name of the technician running the current process.<br>Also supported in:</p><ul><li>HEADER\_BLOCK</li><li>file name</li></ul> |

### Submitted Sample Tokens

<table data-header-hidden><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Token</strong></td><td><strong>Description</strong></td></tr><tr><td>SAMPLE.LIMSID</td><td>List of all submitted sample LIMS IDs of a given artifact</td></tr><tr><td>SAMPLE.NAME</td><td>List of all submitted sample names of a given artifact</td></tr><tr><td>SAMPLE.UDF.&#x3C;udf name></td><td>Get the value of a UDF for the project containing the submitted samples of a given artifact</td></tr><tr><td>SAMPLE.UDT.&#x3C;udt name>.&#x3C;udf name></td><td>Get the value of a UDT UDF on the submitted samples of a given artifact</td></tr><tr><td>SAMPLE.PROJECT.CONTACT</td><td>List of the project contacts for all submitted samples of a given artifact</td></tr><tr><td>SAMPLE.PROJECT.CONTACT.ALL</td><td><p>List of the project contacts for the submitted samples of all artifacts.<br>Prints all unique project contact names in a line (first name followed by last name) separated by <em>LIST.SEPARATOR</em>.<br>Also supported in:</p><ul><li>HEADER_BLOCK</li><li>file name</li></ul></td></tr><tr><td>SAMPLE.PROJECT.LIMSID</td><td>List of the project LIMS IDs for all submitted samples of a given artifact</td></tr><tr><td>SAMPLE.PROJECT.NAME</td><td>List of projects for all submitted samples of a given artifact (uses <em>CONTROL.SAMPLE.DEFAULT.PROJECT.NAME</em>)</td></tr><tr><td>SAMPLE.PROJECT.NAME.ALL</td><td><p>List of projects for the submitted samples of all artifacts (uses <em>CONTROL.SAMPLE.DEFAULT.PROJECT.NAME</em>).<br>Prints all unique project names in a line, separated by <em>LIST.SEPARATOR</em>.<br>Also supported in:</p><ul><li>HEADER_BLOCK</li><li>file name</li></ul></td></tr><tr><td>SAMPLE.PROJECT.UDF.&#x3C;udf name></td><td><p>Get the value of a UDF for the project containing the submitted samples of a given artifact.<br>Empty if the sample is a control sample.<br>Example:</p><pre class="language-markup" data-overflow="wrap"><code class="lang-markup">${SAMPLE.PROJECT.UDF.My Project Level Field}
</code></pre></td></tr></tbody></table>

### Other Tokens

| **Token** | **Description**                                                                                 |
| --------- | ----------------------------------------------------------------------------------------------- |
| DATE      | Current date (i.e., when the script is run). The default format uses the host's locale setting. |
| INDEX     | Row number of the data row (in \<DATA> segment), starting from 1                                |

## Special Characters

CSV and template file generation special characters have substitution symbols within templates.

| **Substitution Symbol** | **Character Represented** |
| ----------------------- | ------------------------- |
| ASTERISK                | \*                        |
| BACKSLASH               | \\                        |
| CARET                   | ^                         |
| CLOSING\_BRACE          | }                         |
| CLOSING\_BRACKET        | ]                         |
| CLOSING\_PARENTHESIS    | )                         |
| COMMA                   | ,                         |
| DOLLAR\_SIGN            | $                         |
| DOUBLE\_QUOTE           | "                         |
| OPENING\_BRACE          | {                         |
| OPENING\_BRACKET        | \[                        |
| OPENING\_PARENTHESIS    | (                         |
| PERIOD                  | .                         |
| PIPE                    | \|                        |
| PLUS\_SIGN              | +                         |
| QUESTION\_MARK          | ?                         |
| SINGLE\_QUOTE           | '                         |
| TAB                     | tab                       |

## Revision History

| **Version** | **Changes**                                                                                         |
| ----------- | --------------------------------------------------------------------------------------------------- |
| 2           | <ul><li>Updated description of SAMPLE.PROJECT.UDF.\<udf name> in Submitted Sample Tokens.</li></ul> |
| 1           | <ul><li>Initial release.</li></ul>                                                                  |
