Brahmi Keyboard Layout for Mac OS X
Brahmi script is the oldest attested writing system of Ancient India, apart from the yet-undeciphered Indus script. Brahmi is an abugida, i.e. each consonant has an individual inherent sound, such as ๐ /ka/. It makes use of diacritic marks to modify a consonant with a vowel, such as ๐๐บ /ki/, ๐๐ผ /ku/, and ๐๐ /ke/. Some hypotheses state that Brahmi is derived from Aramaic and Greek alphabets as a result of language contact through commerce with Middle Eastern merchants and Indo-Greek communities in Bactria. Brahmi is the ancestor of many scripts used in todayโs South, Central, and Southeast Asia, such as Devanagari, Thai, Burmese, and Khmer.
For illustrative examples of Brahmi script, please visit this ebook "Brahmi: Rediscovering the Lost Script" by Ankita Roy.
This manual and keyboard layout are designed to help you make use of the Brahmi keyboard layout (v1.0). This keyboard layout is developed to facilitate typing of Brahmi texts including vowel diacritics (saras), conjunct consonants (saแนyoga), and Brahmi numbers. It works with Mac OS X 10.10 onwards and is made available for downloads from Prachya Boonkwanโs Github. The keyboard layout was designed by Prachya Boonkwan as a hobby using Ukelele Keyboard Layout Designer (available on App Store) and is distributed under the MIT License. The keyboard icon represents the consonant ๐ฒ /s/, which is short for Sanskrit.
Note that the keyboard layout is based on Unicode character encoding. It cannot be installed on older operating systems that do not support Unicode and will not work with non-Unicode applications that rely on 8-bit character set. This manual is typeset using the Unicode-enabled font Google Noto Sans Brahmi and Segoe UI Historic.
Brahmi Keyboard Layout is packaged in a disk image file with the DMG extension. Follow the instruction below to install the keyboard layout.
-
Double click the file to open the disk image. A window for the disk image will show up.
-
Double click the Keyboard Installer app.
-
Go back to the window of the disk image. Drag the file Brahmi.keylayout to the app window.
-
Select a method of installation: (1) install for the current user, or (2) install for all users. Click on the corresponding icon to install the keyboard layout.
-
When finished, the keyboard installer app will close down automatically.
-
Unmount the disk image.
-
Add this keyboard layout to the system. Go to System Preferences > Keyboard.
-
In the Input Sources pane, push the + button. Under the Others language, click Brahmi and push the Add button.
-
Log out and relog in to refresh the memory.
Most consonants are mapped to their equivalent Sanskrit romanization on the keyboard layout. However, eight consonants are displaced due to linguistic dissimilarity between Sanskrit and English, i.e. ๐ /แน /, ๐ /รฑ/, ๐ /แนญ/, ๐ /แนญh/, ๐ /แธ/, ๐ /แธh/, ๐ฐ /ล/, and ๐ฑ /แนฃ/. Consonant aspiration is regularly marked by pressing the shift key.
| ๐ /k/ | ๐ /kh/ | ๐ /g/ | ๐ /gh/ | ๐ /แน / |
| [K] | Shift+[K] | [G] | Shift+[G] | ['] |
| ๐ /c/ | ๐ /ch/ | ๐ /j/ | ๐ /jh/ | ๐ /รฑ/ |
| [C] | Shift+[C] | [J] | Shift+[J] | Shift+[Y] |
| ๐ /แนญ/ | ๐ /แนญh/ | ๐ /แธ/ | ๐ /แธh/ | ๐ก /แน/ |
| [Z] | Shift+[Z] | [X] | Shift+[X] | Shift+[N] |
| ๐ข /t/ | ๐ฃ /th/ | ๐ค /d/ | ๐ฅ /dh/ | ๐ฆ /n/ |
| [T] | Shift+[T] | [D] | Shift+[D] | [N] |
| ๐ง /p/ | ๐จ /ph/ | ๐ฉ /b/ | ๐ช /bh/ | ๐ซ /m/ |
| [P] | Shift+[P] | [B] | Shift+[B] | [M] |
| ๐ฌ /y/ | ๐ญ /r/ | ๐ฎ /l/ | ๐ฏ /v/ | |
| [Y] | [R] | [L] | [V] | |
| ๐ฐ /ล/ | ๐ฑ /แนฃ/ | ๐ฒ /s/ | ๐ณ /h/ | ๐ด /ษญ/ |
| [W] | Shift+[W] | [S] | [H] | Shift+[L] |
Virฤma: Conjunct consonants can be achieved using the subconjoiner (virฤma) on the keystroke [F]. For example, one can easily achieve the conjunct ๐ฆ๐๐คโ/nd/ by keying [N] + virฤma [F] + [D].
Almost all vowels are placed on the keyboard layout with respect to their equivalent Sanskrit romanization. However, the vocalic r and l are positioned at the keys [[] and []], respectively.
| /a/ | ๐ธโ/ฤ/ | ๐ /สa/ | ๐ /สฤ/ |
| Shift+[A] | Alt+[A] | Shift+Alt+[A] | |
| ๐บโ/i/ | ๐ปโ/ฤซ/ | ๐ /สi/ | ๐ /สฤซ/ |
| [I] | Shift+[I] | Alt+[I] | Shift+Alt+[I] |
| ๐ผโ/u/ | ๐ฝโ/ลซ/ | ๐ /สu/ | ๐ /สลซ/ |
| [U] | Shift+[U] | Alt+[U] | Shift+Alt+[U] |
| ๐พโ/แน/ | ๐ฟโ/แน/ | ๐ /แน/ | ๐ /แน/ |
[[] |
Shift+[[] |
Alt+[[] |
Shift+Alt+[[] |
| ๐โ/แธท/ | ๐โ/แธน/ | ๐ /แธท/ | ๐ /แธน/ |
[]] |
Shift+[]] |
Alt+[]] |
Shift+Alt+[]] |
| ๐โ/e/ | ๐โ/ai/ | ๐ /สe/ | ๐ /สai/ |
| [E] | Shift+[E] | Alt+[E] | Shift+Alt+[E] |
| ๐โ/o/ | ๐ โ/au/ | ๐ /สo/ | ๐ /สau/ |
| [O] | Shift+[O] | Alt+[O] | Shift+Alt+[O] |
| ๐โ/aแน/ | ๐โ/aแน/ | ๐โ/aแธฅ/ | |
| Shift+[M] | Alt+[M] | Shift+[H] |
As seen, vowel lengthening is marked by pressing the shift key. The independent form of a vowel can be achieved by pressing the Alt key. The consonant allophones can also be achieved by pressing the Shift and Alt keys.
One final remark to make here is that the short vowel /a/ does not have any glyphs. This is because each consonant has an inherent /a/ sound; therefore, one can simply type [K] to achieve the sound /ka/. Typing [K] and Shift+[A] will produce ๐๐ธ /kฤ/. For the purpose of shortcut, the user can also opt for [K] and [A] to produce ๐๐ธ /kฤ/.
There are two numeral systems in Brahmi script: the digit one and the older non-digit one.
The digit system is based on the decimal numbers, similar to the current Hindu-Arabic numbers.
| ๐ฆ | ๐ง | ๐จ | ๐ฉ | ๐ช | ๐ซ | ๐ฌ | ๐ญ | ๐ฎ | ๐ฏ |
|---|---|---|---|---|---|---|---|---|---|
| [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] | [9] |
Note that the number zero is represented by a single middle dot. These Brahmi digits can be achieved by pressing their equivalent keystrokes in English.
The non-digit system, on the other hand, is not based on the decimal numbers because each numeral value is represented by a distinct glyph. These non-digit number glyphs can be achieved by pressing Alt + number.
| ๐ | ๐ | ๐ | ๐ | ๐ |
|---|---|---|---|---|
| Alt+[1] | Alt+[2] | Alt+[3] | Alt+[4] | Alt+[5] |
| ๐ | ๐ | ๐ | ๐ |
|---|---|---|---|
| Alt+[6] | Alt+[7] | Alt+[8] | Alt+[9] |
The values from 10 to 90 can be achieved by pressing a combination of Shift + Alt + (first digit).
| ๐ 10 | ๐ 20 | ๐ 30 | ๐ 40 |
|---|---|---|---|
| Shift+Alt+[1] | Shift+Alt+[2] | Shift+Alt+[3] | Shift+Alt+[4] |
| ๐ 50 | ๐ 60 | ๐ก 70 | ๐ข 80 |
|---|---|---|---|
| Shift+Alt+[5] | Shift+Alt+[6] | Shift+Alt+[7] | Shift+Alt+[8] |
| ๐ฃ 90 | ๐ค 100 | ๐ฅ 1,000 |
|---|---|---|
| Shift+Alt+[9] | Alt+[ - ] | Alt+[ = ] |
The non-digit system is preserved in the keyboard layout only for the purpose of ancient text transcription. Its use is rather discouraged because it under-represents the decimal system.
There are seven punctuation marks in Brahmi script. Each of them is graded according to the levels of segmentation.
| ๐ | [ . ] | End of clause (single แธanda) |
| ๐ | Shift+[ . ] | End of verse (double แธanda) |
| ๐ | [ ; ] | Comma |
| ๐ | Shift+[ ; ] | Colon |
| ๐ | [ / ] | Dash |
| ๐ | Shift+[ / ] | End of section |
| ๐ | [ ` ] | End of chapter |
When a consonant is combined with a dependent vowel, the vowel becomes a diacritic mark attached to the consonant. The shape of the vowel diacritic mark depends on the shape of the consonant and the attachment position of the vowel (top or bottom).
In Brahmi script, we characterize the shape of a consonant by its top and bottom parts. Each part is either straight, round, flat, or angled. For example, the following characters have distinct shapes of the top part.
| ๐ /k/ | ๐ฃ /th/ | ๐ /รฑ/ | ๐ /g/ |
|---|---|---|---|
| straight | round | flat | angled |
On the other hand, the following characters have different shapes of the bottom part.
| ๐ /kh/ | ๐ง /p/ | ๐ฉ /b/ | ๐ข /t/ |
|---|---|---|---|
| straight | round | flat | angled |
There is only one exception for the character ๐ช /bh/, presumably derived from the capital Pi (ฮ ) in Ancient Greek. In this case, we consider the top part as flat, and the bottom part as straight. This is because the vowels will be attached to the right-hand-side pillar.
We characterize any vowel diacritic mark by its attachment position: top-left, top-right, bottom-right, top, and outside. The following chart classifies each vowel diacritic into five attachment positions as follows.
| Top-left | ๐ | ๐ |
|---|---|---|
| /e/ | /ai/ |
| Top-right | ๐ธ | ๐บ | ๐ป |
|---|---|---|---|
| /ฤ/ | /i/ | /ฤซ/ |
| Bottom-right | ๐ผ | ๐ฝ |
|---|---|---|
| /u/ | /ลซ/ |
| Top | ๐ | ๐ |
|---|---|---|
| /o/ | /au/ |
| Outside | ๐พ | ๐ฟ | ๐ | ๐ | ๐ | ๐ | ๐ |
|---|---|---|---|---|---|---|---|
| /แน/ | /แน/ | /แธท/ | /แธน/ | /aแน/ | /aแน/ | /aแธฅ/ |
The vowels in the first four categories are attached to a consonant, while those in the last category (outside) are written separately. When attached to a consonant, a vowel may change its orientation with respect to the following rotation rules to comply with the shape of the consonant.
Once we identify the shape of a consonant and the attachment position of a vowel diacritic mark, we can now determine the shape of the latter by the following rotation rules.
Rule 1: If the shape of the attached part is straight or angled, the vowel can be directly attached to that part.
| ๐ /k/ + ๐ /e/ = ๐๐ /ke/ | ๐ /g/ + ๐ /e/ = ๐๐ /ge/ |
| ๐ /k/ + ๐ธ /ฤ/ = ๐๐ธ /kฤ/ | ๐ /g/ + ๐ธ /ฤ/ = ๐๐ธ /gฤ/ |
| ๐ /k/ + ๐ผ /u/ = ๐๐ผ /ku/ | ๐ /g/ + ๐ผ /u/ = ๐๐ผ /gu/ |
| ๐ /k/ + ๐ /o/ = ๐๐ /ko/ | ๐ /g/ + ๐ /o/ = ๐๐ /go/ |
| ๐ /k/ + ๐ /aแน/ = ๐๐ /kaแน/ | ๐ /g/ + ๐ /aแน/ = ๐๐ /gaแน/ |
Rule 2: In the case where the shape of the attached part is round, consider rules 2.1 and 2.2.
Rule 2.1: If the attachment position is top-left, top-right, top, or outside, we sometimes move the vowel slightly towards the center to avoid overlapping.
| ๐ฃ /th/ + ๐ /e/ = ๐ฃ๐ /the/ | ๐ /kh/ + ๐ /e/ = ๐๐ /khe/ |
| ๐ฃ /th/ + ๐ธ /ฤ/ = ๐ฃ๐ธ /thฤ/ | ๐ /kh/ + ๐ธ /ฤ/ = ๐๐ธ /khฤ/ |
| ๐ฃ /th/ + ๐ /o/ = ๐ฃ๐ /tho/ | ๐ /kh/ + ๐ /o/ = ๐๐ /kho/ |
| ๐ฃ /th/ + ๐ /aแน/ = ๐ฃ๐ /thaแน/ | ๐ง /p/ + ๐ /aแน/ = ๐ง๐ /paแน/ |
Rule 2.2: If the position is bottom-right, we rotate the vowel before attaching.
| ๐ฃ /th/ + ๐ผ /u/ = ๐ฃ๐ผ /thu/ | ๐ง /p/ + ๐ผ /u/ = ๐ง๐ผ /pu/ |
Rule 3: In the case where the shape of the attached part is flat, consider rules 3.1 and 3.2.
Rule 3.1: If the position is top-left, top-right, or top, we sometimes move the vowel slightly towards the center to avoid overlapping.
| ๐ /รฑ/ + ๐ /e/ = ๐๐ /รฑe/ | ๐ /แน / + ๐ /e/ = ๐๐ /แน e/ |
| ๐ /รฑ/ + ๐ธ /ฤ/ = ๐๐ธ /รฑฤ/ | ๐ /แน / + ๐ธ /ฤ/ = ๐๐ธ /แน ฤ/ |
| ๐ /รฑ/ + ๐ /o/ = ๐๐ /รฑo/ | ๐ /แน / + ๐ /o/ = ๐๐ /แน o/ |
| ๐ /รฑ/ + ๐ /aแน/ = ๐๐ /รฑaแน/ | ๐ /แน / + ๐ /aแน/ = ๐๐ /แน aแน/ |
Rule 3.2: If the position is bottom-right, we rotate the vowel before attaching.
| ๐ฆ /n/ + ๐ผ /u/ = ๐ฆ๐ผ /nu/ | ๐ฉ /b/ + ๐ผ /u/ = ๐ฉ๐ผ /bu/ |
The rotation rules aforementioned can be summarized as follows.
| Shape | Part | Action |
|---|---|---|
| straight | any | Attach |
| angled | any | Attach |
| round | top | Move towards center |
| bottom | Rotate | |
| flat | top | Move towards center |
| bottom | Rotate |
As aforementioned, the character ๐ช /bh/ is an exceptional case for vowel attachment. Since the vowels will be attached to the right-hand-side pillar, we obtain the following attachment scheme.
| top-left | top-right | bottom-right | top | outside |
|---|---|---|---|---|
| ๐ช | ๐ช๐ธ | ๐ช๐ผ | ๐ช๐ | ๐ช๐ |
| /bhe/ | /bhฤ/ | /bhu/ | /bho/ | /bhaแน/ |
The candrabindu ๐ /aแน/ becomes very similar to the anusvara ๐ /aแน/ when combined with a consonant, e.g. ๐๐ /kaแน/ vs. ๐๐ /kaแน/. The candrabindu is articulated as a nasalized sound /an/ in Modern Hindi while the anusvara still preserves the original pronunciation /aแน/. In the case of the character ๐ช /bh/, the candrabindu is moved towards the center ๐ช๐ /bhaแน/ while the anusvara is placed above the character ๐ช๐ /bhaแน/.
Two consonants can be combined to form a conjunct consonant using the virฤma sign (๐), which cancels the inherent /a/ sound. For example, ๐ฒ /sa/ + virฤma + ๐ข /ta/ + virฤma + ๐ญ /ra/ = ๐ฒ๐๐ข๐๐ญ /stra/; therefore ๐ฐ๐ธ๐ฒ๐๐ข๐๐ญ๐ธ is articulated as /ลฤstrฤ/. In the earliest attestation of Brahmi script (the Edicts of King Aลoka, circa 500 BC), conjunct consonants were written consecutively. But this practice evolved to stacking up a conjunct consonant for orthographical compactness in the following Gupta Dynasty era (circa 200 BC). The font Google Noto Sans Brahmi supports the Aลokaโs version, while Microsoftโs font Segoe UI Historic supports the Gupta Dynasty version.
The earliest attestation of Brahmi script (the Edicts of King Aลoka) portrays an extensive use of space as the word delimiter. It is assumed that this practice was influenced by Ancient Greekโs orthography in which space is used for the word delimiter. Generally, phrase and sentence boundaries are implicitly marked with (1) enclitic conjunction ๐ /ca/ โandโ, (2) direct-speech particle ๐๐ข๐บ /iti/ โthusโ, and (3) subordinate conjunction ๐ข๐บ /ti/ โbecauseโ. In proses and poetry, the single แธanda (๐) was used for clause delimiters, while the double แธanda (๐), as verse delimiters. For example, famous Sanskrit poem Ambฤ (Mother) is rendered as follows.
๐
๐ซ๐๐ฉ๐ธโ๐ฒ๐ข๐ข๐โ๐ฎ๐ธ๐ฎ๐ฌ๐ข๐บโ๐
๐
๐ซ๐๐ฉ๐ธโ๐ฒ๐ข๐ข๐โ๐ง๐ธ๐ฎ๐ฌ๐ข๐บโ๐
๐
๐ซ๐๐ฉ๐ธโ๐ฒ๐ข๐ข๐โ๐ฏ๐๐ค๐ฌ๐ข๐บโ๐
๐
๐ซ๐๐ฉ๐ธโ๐ฒ๐ข๐ข๐โ๐ข๐๐ฑ๐ฌ๐ข๐บโ๐
๐
๐ซ๐๐ฉ๐ธโ๐ฆ๐บ๐ข๐๐ฌ๐โ๐ฒ๐๐ญ๐ธ๐ง๐ฌ๐ข๐บโ๐
๐
๐ซ๐๐ฉ๐ธโ๐ฆ๐บ๐ข๐๐ฌ๐โ๐ช๐๐๐ฌ๐ข๐บโ๐
๐
๐ซ๐๐ฉ๐ธโ๐๐ป๐ข๐โ๐ฐ๐๐ญ๐ธ๐ฏ๐ฌ๐ข๐บโ๐
๐
๐ซ๐๐ฉ๐ธโ๐ซ๐ธ๐ซ๐๐ฒ๐ญ๐๐ฏ๐ฒ๐๐ฏ๐ซ๐โ๐
More information in Wikipedia
๐ฅ๐๐ฆ๐ผ๐๐ธ๐๐๐ธโ๐ฌ๐ฏ๐ฆ๐ฒ
Dhenukฤkaแนญฤ Yavanasa
๐ฌ๐ฒ๐ฏ๐ฅ๐ฆ๐ธ๐ฆ๐
Yasava dhanฤnaแน
๐ฃ๐ช๐๐ ๐ค๐ธ๐ฆ๐
thabho dฤnaแน
Translation: โ(This) pillar (is) the gift of the Yavana Yasavadhana from Denukakata.โ โ Epigraphia Indica Vol.18 p.328 Inscription No.10
More information in Wikipedia
๐ฒ๐ธ๐ฏ๐ข๐บ๐ฌ๐ธ๐ฆ๐โ๐ซ๐ณ๐ธ๐ซ๐ธ๐ข๐๐ข๐ธ๐ฆ๐โ๐ฒ๐ธ๐ฒ๐ฆ๐โ๐ซ๐ธ๐ฆ๐ฏ๐ธ๐ฒ๐ป๐ข๐บ๐
Sฤvatiyฤnam Mahฤmattฤnam sฤsane Mฤnavฤsฤซtika
๐๐ฒ๐บ๐ฎ๐บ๐ซ๐ธ๐ข๐โ๐๐ฒ๐๐ฒ๐๐ธ๐ซ๐โ๐ฏโ๐๐ข๐โ๐ค๐ผ๐ฏ๐โ๐๐๐๐๐๐ธ๐๐ธ๐ฎ๐ธ๐ฆ๐บ
แธasilimate Ussagฤme va ete duve koแนญแนญhฤgฤlฤni
๐ข๐บ๐ฆ๐ธ๐ฌ๐ฏ๐ธ๐ฆ๐บโ๐ซ๐๐๐ผ๐ฎ๐๐ฎ๐๐โ๐๐๐ซ๐ธโ๐ค๐ธ๐ซโ๐ช๐ธ๐ฎ๐๐ธ๐ฆ๐บ๐ฏ
tina-yavฤni maแนthulloca-chammฤ-dฤma-bhฤlakฤniva
๐ฎ๐โ๐๐ฌ๐บ๐ฌ๐ข๐บโ๐ธ๐ข๐บ๐ฌ๐ธ๐ฌ๐บ๐๐ธ๐ฌโ๐ฆ๐โ๐๐ธ๐ณ๐บ๐ข๐ฏ๐๐ฏ๐ธ๐ฌ
laแน kayiyati atiyฤyikฤya no gahitavvฤya
Translation: โAt the junction called Manawasi, these two storehouses are prepared, for the sheltering of loads of commodities, of Tiyavani, Mathura and Chanchu.โ โโTranslated by Sircar Fleet (1942) Selected Inscriptions Vol 1 OCR p.85.
More information in Wikipedia
๐ค๐๐ฏ๐ธ๐ฆ๐๐ง๐บ๐ฌ๐๐ฆ ๐ง๐บ๐ฌ๐ค๐ฒ๐บ๐ฆ ๐ฎ๐ธ๐๐บ๐ฆ๐ฏ๐ป๐ฒ๐ข๐บ๐ฏ๐ฒ๐ธ๐ช๐บ๐ฒ๐บ๐ข๐๐ฆ
Devฤnaแนpiyena Piyadasina lฤjina vฤซsati-vasฤbhisitena
๐
๐ข๐ฆ๐๐๐ธ๐ ๐ซ๐ณ๐ป๐ฌ๐บ๐ข๐ ๐ณ๐บ๐ค๐ฉ๐ผ๐ฅ๐๐๐ธ๐ข ๐ฒ๐๐๐ฌ๐ซ๐ผ๐ฆ๐บ๐ข๐บ
atana ฤgฤca mahฤซyite hida Budhe jฤte Sakyamuni ti
๐ฒ๐บ๐ฎ๐ธ๐ฏ๐บ๐๐ฅ๐ช๐บ๐๐ธ๐๐ธ๐ณ๐ธ๐ง๐บ๐ข ๐ฒ๐บ๐ฎ๐ธ๐ฃ๐ช๐๐ ๐๐ฒ๐ง๐ธ๐ง๐บ๐ข๐
silฤ vigaแธabhฤซ cฤ kฤlฤpita silฤ-thabhe ca usapฤpite
๐ณ๐บ๐ค๐ช๐๐ฏ๐๐๐ธ๐ข๐ข๐บ ๐ฎ๐ผ๐๐ซ๐บ๐ฆ๐บ๐๐ธ๐ซ๐ ๐๐ฉ๐ฎ๐บ๐๐๐๐๐
hida Bhagavaแน jฤte ti Luแนmini-gฤme ubalike kaแนญe
๐
๐๐ช๐ธ๐๐บ๐ฌ๐๐
aแนญha-bhฤgiye ca
Translation: โWhen King Devandmpriya Priyadarsin had been anointed twenty years, he came himself and worshipped (this spot) because the Buddha Shakyamuni was born here. (He) both caused to be made a stone bearing a horse (?) and caused a stone pillar to be set up, (in order to show) that the Blessed One was born here. (He) made the village of Lummini free of taxes, and paying (only) an eighth share (of the produce).โ โ Translated in Hultzsch, E. (1925). Inscriptions of Asoka pp. 164-165.
The MIT License
Copyright 2019 Prachya Boonkwan
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.