[Pkg-mozext-commits] [SCM] system tray extension for thunderbird/firefox alike apps branch, dfsg-clean, updated. upstream/dfsg-clean-0.3.1-12-g057315d
Sascha Girrulat
sascha at girrulat.de
Wed Feb 8 19:00:27 UTC 2012
The following commit has been merged in the dfsg-clean branch:
commit 4b163cb9abefbfe92fa1a4af62ff4a14feb79360
Author: Sascha Girrulat <sascha at girrulat.de>
Date: Sat Jan 28 12:49:37 2012 +0100
Revert "Merge branch 'upstream' into dfsg-clean"
This reverts commit 38e3491cab3d1847e0289f8e925d6190635aad8b, reversing
changes made to 12c938aef594be657cd425557934e10bc12b7388.
diff --git a/SConstruct b/SConstruct
new file mode 100644
index 0000000..50845fd
--- /dev/null
+++ b/SConstruct
@@ -0,0 +1,40 @@
+import os, zipfile
+
+def zip(target, source, env):
+ f = zipfile.ZipFile(str(target[0]), 'w', zipfile.ZIP_DEFLATED)
+ chdir = None
+ try:
+ chdir = env['ZIPCHDIR'] + os.sep
+ except:
+ pass
+ for s in source:
+ s = str(s)
+ if chdir and s.find(chdir) == 0:
+ arcname = s[len(chdir):]
+ else:
+ arcname = s
+ f.write(s, arcname)
+ f.close()
+zipbld = Builder(action = zip)
+Export('zipbld')
+
+objs = []
+for subdir in ['components', 'chrome']:
+ r = SConscript(['%s/SConscript' % subdir])
+ objs.extend(r)
+
+env = Environment()
+r = env.Install('dist', 'chrome.manifest')
+objs.append(r)
+r = env.Install('dist', 'install.rdf')
+objs.append(r)
+r = env.Install('dist', 'License.txt')
+objs.append(r)
+
+r = env.Install('dist/defaults/preferences', 'defaults/preferences/prefs.js')
+objs.append(r)
+
+zipenv = Environment(BUILDERS = {'Zip' : zipbld}, ZIPCHDIR = 'dist')
+zipenv.Zip('firetray.xpi', objs)
+
+Alias('xpi', 'firetray.xpi')
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..91bc292
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,267 @@
+#!/bin/bash
+
+FIRETRAY_ID="{9533f794-00b4-4354-aa15-c2bbda6989f8}"
+
+
+prepare_options_header_file()
+{
+ echo "******************************"
+ echo " TRAY COMPONENT BUILD OPTIONS"
+ echo "******************************"
+
+ DEST="components/options.h"
+ echo "// OPTIONS.H - dinamically generated by build script " > $DEST
+ echo "#ifndef _OPTIONS_H_" >> $DEST
+ echo "#define _OPTIONS_H_" >> $DEST
+ echo "" >> $DEST
+
+ if [ -z "$NO_ERROR_MESSAGES" ]
+ then
+ echo "ERROR MESSAGES: on"
+ echo "#define ENABLE_ERROR_MSG 1 //enable error messages" >> $DEST
+ else
+ echo "ERROR MESSAGES: off"
+ fi
+
+ if [ -n "$ENABLE_DEBUG" ]
+ then
+ echo "DEBUG MESSAGES: on"
+ echo "#define DO_DEBUG 1 //enable generic debug messages" >> $DEST
+ else
+ echo "DEBUG MESSAGES: off"
+
+ fi
+
+ if [ -n "$ENABLE_DEBUG_FILTERS" ]
+ then
+ echo "DEBUG EVENT FILTERS: on"
+ echo "#define DO_DEBUG_FILTER 1 //enable window events filter debug messages" >> $DEST
+ else
+ echo "DEBUG EVENT FILTERS: off"
+ fi
+
+ if [ -n "$ENABLE_DEBUG_CALLS" ]
+ then
+ echo "DEBUG FUNCTION CALLS: on"
+ echo "#define DO_DEBUG_CALLS 1 //enable function calls debug messages" >> $DEST
+ else
+ echo "DEBUG FUNCTION CALLS: off"
+ fi
+
+ echo "" >> $DEST
+
+ if [ -z "$DISABLE_RESTORE_POSITION" ]
+ then
+ echo "REMEMBER WINDOWS POSITION: on"
+ echo "#define _REMEMBER_POSITION_" >> $DEST
+ else
+ echo "REMEMBER WINDOWS POSITION: off"
+ fi
+
+ if [ -n "$DISABLE_UPDATE_MENU_LABELS" ]
+ then
+ echo "MENU LABELS UPDATE DISABLED"
+ else
+ echo "#define __GTK_SET_LABEL__" >> $DEST
+ fi
+
+ echo "#define _KEYSYMS_" >> $DEST
+ echo "" >> $DEST
+ echo "#endif" >> $DEST
+}
+
+prepare_source()
+{
+ rm source.zip
+ for f in `find | grep -v "\.svn" | grep -v "~" | grep -v "\.xpi"`
+ do
+ zip source.zip $f
+ done
+}
+
+show_options()
+{
+ echo " "
+ echo "options:"
+ echo " "
+ echo " --official-amo-release set version number for official AMO release"
+ echo " --release-name=suffix set version number for other non testing release"
+ echo ""
+ echo " --gecko-sdk=folder Manually specify gecko-sdk path "
+ echo " --output-dir=folder Install extension files to the selected folder "
+ echo " --dynamic-linking Do not use static linking of libraries "
+ echo " "
+ echo " --no-restore-positions Disable saving window postion"
+ echo " --with-old-gtklib Disable the use of functions introduced in gtk 2.16"
+ echo " "
+ echo " --gecko19-compat Enable Gecko 1.9.x compatability when building"
+ echo " with Gecko 2.0"
+ echo " "
+ echo " --no-error-messages Disable error messages"
+ echo " --enable-debug Enable general debug messages"
+ echo " --debug-filters Enable event filters debugging"
+ echo " --debug-calls Enable function calls debugging"
+ echo " --debug-all Enable all debugging messages"
+ echo " "
+ echo " --source-package Create a zip file containing the source code"
+ exit
+}
+#SEP="--------------------------------------------------"
+
+
+
+for param in "$@"
+do
+ paramval=`echo $param | sed 's/[-a-zA-Z0-9]*=//'`
+
+ case $param in
+
+ --source-package)
+ prepare_source
+ exit
+ ;;
+
+ --official-amo-release)
+ export OFFICIAL_AMO_RELEASE="yes"
+ ;;
+
+ --release-name=*)
+ export OTHER_DISTRIBUTION_NAME="$paramval"
+ ;;
+
+ --output-dir=*)
+ OUTPUT_FOLDER="$paramval"
+ ;;
+
+ --gecko-sdk=*)
+ export GECKO_SDK="$paramval"
+ ;;
+
+ --gecko-sdk-bin=*)
+ export GECKO_SDK_BIN="$paramval"
+ ;;
+
+ --gecko-sdk-include=*)
+ export GECKO_SDK_INCLUDE="$paramval"
+ ;;
+
+ --gecko-sdk-idl=*)
+ export GECKO_SDK_IDL="$paramval"
+ ;;
+
+ --gecko-sdk-lib=*)
+ export GECKO_SDK_LIB="$paramval"
+ ;;
+
+ --gecko19-compat)
+ export GECKO_19_COMPAT="on"
+ ;;
+
+ --dynamic-linking)
+ export DYNAMIC_LINKING="dyn"
+ ;;
+
+ --no-error-messages)
+ NO_ERROR_MESSAGES="on"
+ ;;
+
+ --enable-debug)
+ ENABLE_DEBUG="on"
+ ;;
+
+ --debug-filters)
+ ENABLE_DEBUG_FILTERS="on"
+ ;;
+
+ --debug-calls)
+ ENABLE_DEBUG_CALLS="on"
+ ;;
+
+ --debug-all)
+ ENABLE_DEBUG="on"
+ ENABLE_DEBUG_FILTERS="on"
+ ENABLE_DEBUG_CALLS="on"
+ ;;
+
+ --no-restore-positions)
+ DISABLE_RESTORE_POSITION="on"
+ ;;
+
+ --with-old-gtklib)
+ DISABLE_UPDATE_MENU_LABELS="on"
+ ;;
+
+ -h|--help)
+ show_options
+ ;;
+
+ *)
+ echo
+ echo Unknown option: $param
+ show_options
+ ;;
+
+ esac
+done
+
+rm -f -r dist
+
+if [ -z "$GECKO_SDK" ]
+then
+ #echo sdk_not_set
+ export GECKO_SDK=$(pkg-config libxul --variable=sdkdir)
+fi
+
+export LIB_ARCH=_`uname -m`
+
+
+
+
+rm install.rdf
+source ./generate_install_rdf.sh > install.rdf
+
+FILE=firetray.xpi
+DESTFILE=firetray-$EXTENSION_VERSION.xpi
+
+prepare_options_header_file
+
+echo
+echo $SEP
+echo
+
+rm $FILE 2> /dev/null
+scons $FILE
+if [ -e $FILE ]
+then
+ zip $FILE components/libnptray*.so
+
+ if [ ! -z "$OUTPUT_FOLDER" ]
+ then
+ DEST_DIR="$OUTPUT_FOLDER/$FIRETRAY_ID/"
+ mkdir -p $DEST_DIR
+ if [ -d "$DEST_DIR" ]
+ then
+ rm $FILE
+
+ unzip $FILE -d $DEST_DIR
+
+ if [ $? -eq 0 ]
+ then
+ echo ok
+ else
+ exit 1
+ fi
+ else
+ exit 1
+ fi
+ fi
+
+ echo Extension packaged as: $DESTFILE
+ mv $FILE $DESTFILE
+
+
+else
+ echo error compiling $FILE
+ exit 1
+fi
+
diff --git a/changes b/changes
new file mode 100644
index 0000000..2723c6a
--- /dev/null
+++ b/changes
@@ -0,0 +1,78 @@
+0.3.0 Moved Tray handling functions to a new javascript XPCOM component to avoid problems when the first window is closed (see Issue 79)
+ Applied patch for Gecko2 support (Issue 127)
+ Added option to select between "unread" and "new" messages notification (Issue 120)
+ Added option to hide tray icon when not minimized (Issue 92)
+ Added option to disable showing mail count into messages notification icon
+ Dynamic creation of install.rdf
+ Exclude mails from special folders (Archive, Sent, Templates, Drafts) from message count
+ Added option to disable the use of functions introduced with gtk >= 2.16
+
+0.2.10 Merged "support for chatzilla" from Issue 135
+ "Select which servers to exclude" feature from Issue 105
+ Removed references to linux platform from SConscript file (Issue 138)
+ Applied fix for tb start minimized problem (Issue 122)
+
+0.2.9 Fixed problems with icons transparency (Issue 56)
+ Fixed code to save window position and re-enabled it by default (Issues 33,49)
+ Removed harcoded nspr path from build script (Issue 128)
+ Added new build options and applied corrections to disable warnings (Issue 114)
+
+0.2.8 Modified sunbird chrome path (Issue 116)
+ Disabled multimedia keys by default (Issue 117)
+ Update Thunderbird, Firefox and Seamonkey versions
+ Fixed uncaught exception when no local folders are found in seamonkey and thunderbird (Issue 115)
+
+
+0.2.7 Added ability to hide to tray on window minimize (Issue 77)
+ Added command line options to the build script and ability to detect Gecko-sdk folders using pkg-config (Issue 109)
+ Updated some icons
+ Corrected javascript code to follow AMO indications.
+
+0.2.6 Modified linking options to reduce library dependencies (Issue 58)
+
+0.2.5 Fixed bug on 64bit systems (Issues 52,55,61)
+ Temporarily disabled saving windows position (causes Issue 49)
+ Fixed restore problem in thunderbird when "restore to next unread message" is enabled (Issue 53, patch from corossig)
+
+0.2.4 Fixed Seamonkey2 mail count icon
+ Split option windows into separate tabs
+ Added option to exclude spam messages from new mail count
+
+0.2.3 Fixed "new window hides all" (Issue 27)
+ Cleaning interface code
+ Applied fix to the repeated mail count (Issue 43)
+ Begin support for seamonkey 2 alpha (not complete, mail issues)
+ Added scroll support (with songbird volume control)
+ Multimedia keys grabbing support
+ Fixed songbird "duplicate menu items" issue
+
+0.2.2 Added menu images from gtk stock
+
+0.2.1 Save windows position (Issue 33)
+
+0.2.0 Support for custom icons (Issue 17)
+
+
+
+TODO:
+
+ - windows position bug when using XRDC
+ - missing close confirmation request in some situations (issue 44)
+
+ - fix FF3.5+ and TB3+ icon problems with some images
+
+ - close single window menu element (Issue 32)
+
+ - save windows z-order
+
+
+WISHES (from wiki)
+
+- Enable the user to close all firefox windows while still keeping firefox in the tray and add a menu item to the tray icon "open new window
+
+- Clicking the tray icon with the middle mouse button fetches new messages (would be best with the icon changing to something else to indicate that the process is in progress).
+
+- Enable the user to close any of firefox windows individually
+
+- Close button only closes to tray when there is only one window up
+
diff --git a/chrome.manifest b/chrome.manifest
index b422615..dd330a2 100644
--- a/chrome.manifest
+++ b/chrome.manifest
@@ -13,18 +13,20 @@ contract @mozilla.org/FireTrayHandler;1 {f2f05844-d398-11df-9885-7d29dfd72085}
interfaces components/nsIFireTrayHandler.xpt
interfaces components/nsITray.xpt
+binary-component components/libnptray_i686.so ABI=Linux_x86-gcc3
+binary-component components/libnptray_x86_64.so ABI=Linux_x86_64-gcc3
-binary-component components/libnptray_gecko7_i686.so ABI=Linux_x86-gcc3
-binary-component components/libnptray_gecko7_x86_64.so ABI=Linux_x86_64-gcc3
-
-binary-component components/libnptray_gecko8_i686.so ABI=Linux_x86-gcc3
-binary-component components/libnptray_gecko8_x86_64.so ABI=Linux_x86_64-gcc3
+binary-component components/libnptray_gecko2_i686.so ABI=Linux_x86-gcc3
+binary-component components/libnptray_gecko2_x86_64.so ABI=Linux_x86_64-gcc3
+binary-component components/libnptray_gecko5_i686.so ABI=Linux_x86-gcc3
+binary-component components/libnptray_gecko5_x86_64.so ABI=Linux_x86_64-gcc3
locale firetray en-US jar:chrome/firetray.jar!/locale/en-US/
locale firetray it-IT jar:chrome/firetray.jar!/locale/it-IT/
locale firetray bg-BG jar:chrome/firetray.jar!/locale/bg-BG/
locale firetray ca-AD jar:chrome/firetray.jar!/locale/ca-AD/
+locale firetray cs-CZ jar:chrome/firetray.jar!/locale/cs-CZ/
locale firetray de-DE jar:chrome/firetray.jar!/locale/de-DE/
locale firetray es-AR jar:chrome/firetray.jar!/locale/es-AR/
locale firetray es-ES jar:chrome/firetray.jar!/locale/es-ES/
diff --git a/chrome/SConscript b/chrome/SConscript
new file mode 100644
index 0000000..68ced8e
--- /dev/null
+++ b/chrome/SConscript
@@ -0,0 +1,21 @@
+import os
+
+Import('zipbld')
+
+contents = []
+content = 'core.js browserOverlay.xul mailOverlay.xul songOverlay.xul navigatorOverlay.xul options.xul options.js icon.png'
+for c in content.split(' '):
+ contents.append('content' + os.sep + c)
+
+locales = 'bg-BG ca-AD de-DE en-US es-AR es-ES fa-IR fr-FR it-IT ja-JP mk-MK nl-NL pl-PL pt-BR ru-RU sk-SK sl-SI sv-SE tr-TR uk-UA zh-CN zh-TW'
+
+locale_files = 'browserOverlay.dtd core.properties mailOverlay.dtd options.dtd'
+
+for l in locales.split(' '):
+ for f in locale_files.split(' '):
+ contents.append('locale' + os.sep + l + os.sep + f)
+
+env = Environment(ZIPCHDIR= 'chrome', BUILDERS = {'Zip' : zipbld})
+r = env.Zip('#dist/chrome/firetray.jar', contents)
+
+Return('r')
diff --git a/chrome/firetray.jar!/content/browserOverlay.xul b/chrome/content/browserOverlay.xul
similarity index 100%
rename from chrome/firetray.jar!/content/browserOverlay.xul
rename to chrome/content/browserOverlay.xul
diff --git a/chrome/firetray.jar!/content/core.js b/chrome/content/core.js
similarity index 100%
rename from chrome/firetray.jar!/content/core.js
rename to chrome/content/core.js
diff --git a/chrome/firetray.jar!/content/icon.png b/chrome/content/icon.png
similarity index 100%
rename from chrome/firetray.jar!/content/icon.png
rename to chrome/content/icon.png
diff --git a/chrome/content/ircOverlay.xul b/chrome/content/ircOverlay.xul
new file mode 100644
index 0000000..be6b279
--- /dev/null
+++ b/chrome/content/ircOverlay.xul
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE overlay SYSTEM "chrome://firetray/locale/browserOverlay.dtd" >
+<overlay id="firetrayBrowserOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script type="application/x-javascript" src="core.js" />
+ <menupopup id="menu_ChatZillaPopup">
+ <menuitem label="&firetray.close_to_tray;" id="menu_hideTray" oncommand="FireTray.hideToTray()" />
+ <menuseparator />
+ </menupopup>
+ <menupopup id="menu_ViewPopup">
+ <menuitem label="&firetray.hide;" id="menu_hide" accesskey="&firetray.hide.accesskey;" oncommand="FireTray.hideWindow()" />
+ <menuseparator />
+ </menupopup>
+</overlay>
\ No newline at end of file
diff --git a/chrome/firetray.jar!/content/mailOverlay.xul b/chrome/content/mailOverlay.xul
similarity index 100%
rename from chrome/firetray.jar!/content/mailOverlay.xul
rename to chrome/content/mailOverlay.xul
diff --git a/chrome/firetray.jar!/content/navigatorOverlay.xul b/chrome/content/navigatorOverlay.xul
similarity index 100%
rename from chrome/firetray.jar!/content/navigatorOverlay.xul
rename to chrome/content/navigatorOverlay.xul
diff --git a/chrome/firetray.jar!/content/options.js b/chrome/content/options.js
similarity index 100%
rename from chrome/firetray.jar!/content/options.js
rename to chrome/content/options.js
diff --git a/chrome/firetray.jar!/content/options.xul b/chrome/content/options.xul
similarity index 100%
rename from chrome/firetray.jar!/content/options.xul
rename to chrome/content/options.xul
diff --git a/chrome/firetray.jar!/content/songOverlay.xul b/chrome/content/songOverlay.xul
similarity index 100%
rename from chrome/firetray.jar!/content/songOverlay.xul
rename to chrome/content/songOverlay.xul
diff --git a/chrome/firetray.jar!/locale/bg-BG/browserOverlay.dtd b/chrome/locale/bg-BG/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/bg-BG/browserOverlay.dtd
rename to chrome/locale/bg-BG/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/bg-BG/core.properties b/chrome/locale/bg-BG/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/bg-BG/core.properties
rename to chrome/locale/bg-BG/core.properties
diff --git a/chrome/firetray.jar!/locale/bg-BG/mailOverlay.dtd b/chrome/locale/bg-BG/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/bg-BG/mailOverlay.dtd
rename to chrome/locale/bg-BG/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/bg-BG/options.dtd b/chrome/locale/bg-BG/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/bg-BG/options.dtd
rename to chrome/locale/bg-BG/options.dtd
diff --git a/chrome/firetray.jar!/locale/ca-AD/browserOverlay.dtd b/chrome/locale/ca-AD/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/ca-AD/browserOverlay.dtd
rename to chrome/locale/ca-AD/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/ca-AD/core.properties b/chrome/locale/ca-AD/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/ca-AD/core.properties
rename to chrome/locale/ca-AD/core.properties
diff --git a/chrome/firetray.jar!/locale/ca-AD/mailOverlay.dtd b/chrome/locale/ca-AD/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/ca-AD/mailOverlay.dtd
rename to chrome/locale/ca-AD/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/ca-AD/options.dtd b/chrome/locale/ca-AD/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/ca-AD/options.dtd
rename to chrome/locale/ca-AD/options.dtd
diff --git a/chrome/firetray.jar!/locale/de-DE/browserOverlay.dtd b/chrome/locale/de-DE/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/de-DE/browserOverlay.dtd
rename to chrome/locale/de-DE/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/de-DE/core.properties b/chrome/locale/de-DE/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/de-DE/core.properties
rename to chrome/locale/de-DE/core.properties
diff --git a/chrome/firetray.jar!/locale/de-DE/mailOverlay.dtd b/chrome/locale/de-DE/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/de-DE/mailOverlay.dtd
rename to chrome/locale/de-DE/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/de-DE/options.dtd b/chrome/locale/de-DE/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/de-DE/options.dtd
rename to chrome/locale/de-DE/options.dtd
diff --git a/chrome/firetray.jar!/locale/en-US/browserOverlay.dtd b/chrome/locale/en-US/browserOverlay.dtd
similarity index 100%
copy from chrome/firetray.jar!/locale/en-US/browserOverlay.dtd
copy to chrome/locale/en-US/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/en-US/core.properties b/chrome/locale/en-US/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/en-US/core.properties
rename to chrome/locale/en-US/core.properties
diff --git a/chrome/firetray.jar!/locale/en-US/mailOverlay.dtd b/chrome/locale/en-US/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/en-US/mailOverlay.dtd
rename to chrome/locale/en-US/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/en-US/options.dtd b/chrome/locale/en-US/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/en-US/options.dtd
rename to chrome/locale/en-US/options.dtd
diff --git a/chrome/firetray.jar!/locale/en-US/browserOverlay.dtd b/chrome/locale/en-US/songOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/en-US/browserOverlay.dtd
rename to chrome/locale/en-US/songOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/es-AR/browserOverlay.dtd b/chrome/locale/es-AR/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/es-AR/browserOverlay.dtd
rename to chrome/locale/es-AR/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/es-AR/core.properties b/chrome/locale/es-AR/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/es-AR/core.properties
rename to chrome/locale/es-AR/core.properties
diff --git a/chrome/firetray.jar!/locale/es-AR/mailOverlay.dtd b/chrome/locale/es-AR/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/es-AR/mailOverlay.dtd
rename to chrome/locale/es-AR/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/es-AR/options.dtd b/chrome/locale/es-AR/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/es-AR/options.dtd
rename to chrome/locale/es-AR/options.dtd
diff --git a/chrome/firetray.jar!/locale/es-ES/browserOverlay.dtd b/chrome/locale/es-ES/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/es-ES/browserOverlay.dtd
rename to chrome/locale/es-ES/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/es-ES/core.properties b/chrome/locale/es-ES/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/es-ES/core.properties
rename to chrome/locale/es-ES/core.properties
diff --git a/chrome/firetray.jar!/locale/es-ES/mailOverlay.dtd b/chrome/locale/es-ES/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/es-ES/mailOverlay.dtd
rename to chrome/locale/es-ES/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/es-ES/options.dtd b/chrome/locale/es-ES/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/es-ES/options.dtd
rename to chrome/locale/es-ES/options.dtd
diff --git a/chrome/firetray.jar!/locale/fa-IR/browserOverlay.dtd b/chrome/locale/fa-IR/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/fa-IR/browserOverlay.dtd
rename to chrome/locale/fa-IR/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/fa-IR/core.properties b/chrome/locale/fa-IR/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/fa-IR/core.properties
rename to chrome/locale/fa-IR/core.properties
diff --git a/chrome/firetray.jar!/locale/fa-IR/mailOverlay.dtd b/chrome/locale/fa-IR/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/fa-IR/mailOverlay.dtd
rename to chrome/locale/fa-IR/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/fa-IR/options.dtd b/chrome/locale/fa-IR/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/fa-IR/options.dtd
rename to chrome/locale/fa-IR/options.dtd
diff --git a/chrome/firetray.jar!/locale/fr-FR/browserOverlay.dtd b/chrome/locale/fr-FR/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/fr-FR/browserOverlay.dtd
rename to chrome/locale/fr-FR/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/fr-FR/core.properties b/chrome/locale/fr-FR/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/fr-FR/core.properties
rename to chrome/locale/fr-FR/core.properties
diff --git a/chrome/firetray.jar!/locale/fr-FR/mailOverlay.dtd b/chrome/locale/fr-FR/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/fr-FR/mailOverlay.dtd
rename to chrome/locale/fr-FR/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/fr-FR/options.dtd b/chrome/locale/fr-FR/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/fr-FR/options.dtd
rename to chrome/locale/fr-FR/options.dtd
diff --git a/chrome/firetray.jar!/locale/it-IT/browserOverlay.dtd b/chrome/locale/it-IT/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/it-IT/browserOverlay.dtd
rename to chrome/locale/it-IT/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/it-IT/core.properties b/chrome/locale/it-IT/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/it-IT/core.properties
rename to chrome/locale/it-IT/core.properties
diff --git a/chrome/firetray.jar!/locale/it-IT/mailOverlay.dtd b/chrome/locale/it-IT/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/it-IT/mailOverlay.dtd
rename to chrome/locale/it-IT/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/it-IT/options.dtd b/chrome/locale/it-IT/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/it-IT/options.dtd
rename to chrome/locale/it-IT/options.dtd
diff --git a/chrome/firetray.jar!/locale/ja-JP/browserOverlay.dtd b/chrome/locale/ja-JP/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/ja-JP/browserOverlay.dtd
rename to chrome/locale/ja-JP/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/ja-JP/core.properties b/chrome/locale/ja-JP/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/ja-JP/core.properties
rename to chrome/locale/ja-JP/core.properties
diff --git a/chrome/firetray.jar!/locale/ja-JP/mailOverlay.dtd b/chrome/locale/ja-JP/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/ja-JP/mailOverlay.dtd
rename to chrome/locale/ja-JP/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/ja-JP/options.dtd b/chrome/locale/ja-JP/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/ja-JP/options.dtd
rename to chrome/locale/ja-JP/options.dtd
diff --git a/chrome/firetray.jar!/locale/mk-MK/browserOverlay.dtd b/chrome/locale/mk-MK/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/mk-MK/browserOverlay.dtd
rename to chrome/locale/mk-MK/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/mk-MK/core.properties b/chrome/locale/mk-MK/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/mk-MK/core.properties
rename to chrome/locale/mk-MK/core.properties
diff --git a/chrome/firetray.jar!/locale/mk-MK/mailOverlay.dtd b/chrome/locale/mk-MK/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/mk-MK/mailOverlay.dtd
rename to chrome/locale/mk-MK/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/mk-MK/options.dtd b/chrome/locale/mk-MK/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/mk-MK/options.dtd
rename to chrome/locale/mk-MK/options.dtd
diff --git a/chrome/firetray.jar!/locale/nl-NL/browserOverlay.dtd b/chrome/locale/nl-NL/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/nl-NL/browserOverlay.dtd
rename to chrome/locale/nl-NL/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/nl-NL/core.properties b/chrome/locale/nl-NL/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/nl-NL/core.properties
rename to chrome/locale/nl-NL/core.properties
diff --git a/chrome/firetray.jar!/locale/nl-NL/mailOverlay.dtd b/chrome/locale/nl-NL/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/nl-NL/mailOverlay.dtd
rename to chrome/locale/nl-NL/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/nl-NL/options.dtd b/chrome/locale/nl-NL/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/nl-NL/options.dtd
rename to chrome/locale/nl-NL/options.dtd
diff --git a/chrome/firetray.jar!/locale/pl-PL/browserOverlay.dtd b/chrome/locale/pl-PL/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/pl-PL/browserOverlay.dtd
rename to chrome/locale/pl-PL/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/pl-PL/core.properties b/chrome/locale/pl-PL/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/pl-PL/core.properties
rename to chrome/locale/pl-PL/core.properties
diff --git a/chrome/firetray.jar!/locale/pl-PL/mailOverlay.dtd b/chrome/locale/pl-PL/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/pl-PL/mailOverlay.dtd
rename to chrome/locale/pl-PL/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/pl-PL/options.dtd b/chrome/locale/pl-PL/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/pl-PL/options.dtd
rename to chrome/locale/pl-PL/options.dtd
diff --git a/chrome/firetray.jar!/locale/pt-BR/browserOverlay.dtd b/chrome/locale/pt-BR/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/pt-BR/browserOverlay.dtd
rename to chrome/locale/pt-BR/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/pt-BR/core.properties b/chrome/locale/pt-BR/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/pt-BR/core.properties
rename to chrome/locale/pt-BR/core.properties
diff --git a/chrome/firetray.jar!/locale/pt-BR/mailOverlay.dtd b/chrome/locale/pt-BR/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/pt-BR/mailOverlay.dtd
rename to chrome/locale/pt-BR/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/pt-BR/options.dtd b/chrome/locale/pt-BR/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/pt-BR/options.dtd
rename to chrome/locale/pt-BR/options.dtd
diff --git a/chrome/firetray.jar!/locale/ru-RU/browserOverlay.dtd b/chrome/locale/ru-RU/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/ru-RU/browserOverlay.dtd
rename to chrome/locale/ru-RU/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/ru-RU/core.properties b/chrome/locale/ru-RU/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/ru-RU/core.properties
rename to chrome/locale/ru-RU/core.properties
diff --git a/chrome/firetray.jar!/locale/ru-RU/mailOverlay.dtd b/chrome/locale/ru-RU/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/ru-RU/mailOverlay.dtd
rename to chrome/locale/ru-RU/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/ru-RU/options.dtd b/chrome/locale/ru-RU/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/ru-RU/options.dtd
rename to chrome/locale/ru-RU/options.dtd
diff --git a/chrome/firetray.jar!/locale/sk-SK/browserOverlay.dtd b/chrome/locale/sk-SK/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/sk-SK/browserOverlay.dtd
rename to chrome/locale/sk-SK/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/sk-SK/core.properties b/chrome/locale/sk-SK/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/sk-SK/core.properties
rename to chrome/locale/sk-SK/core.properties
diff --git a/chrome/firetray.jar!/locale/sk-SK/mailOverlay.dtd b/chrome/locale/sk-SK/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/sk-SK/mailOverlay.dtd
rename to chrome/locale/sk-SK/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/sk-SK/options.dtd b/chrome/locale/sk-SK/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/sk-SK/options.dtd
rename to chrome/locale/sk-SK/options.dtd
diff --git a/chrome/firetray.jar!/locale/sl-SI/browserOverlay.dtd b/chrome/locale/sl-SI/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/sl-SI/browserOverlay.dtd
rename to chrome/locale/sl-SI/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/sl-SI/core.properties b/chrome/locale/sl-SI/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/sl-SI/core.properties
rename to chrome/locale/sl-SI/core.properties
diff --git a/chrome/firetray.jar!/locale/sl-SI/mailOverlay.dtd b/chrome/locale/sl-SI/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/sl-SI/mailOverlay.dtd
rename to chrome/locale/sl-SI/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/sl-SI/options.dtd b/chrome/locale/sl-SI/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/sl-SI/options.dtd
rename to chrome/locale/sl-SI/options.dtd
diff --git a/chrome/firetray.jar!/locale/sv-SE/browserOverlay.dtd b/chrome/locale/sv-SE/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/sv-SE/browserOverlay.dtd
rename to chrome/locale/sv-SE/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/sv-SE/core.properties b/chrome/locale/sv-SE/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/sv-SE/core.properties
rename to chrome/locale/sv-SE/core.properties
diff --git a/chrome/firetray.jar!/locale/sv-SE/mailOverlay.dtd b/chrome/locale/sv-SE/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/sv-SE/mailOverlay.dtd
rename to chrome/locale/sv-SE/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/sv-SE/options.dtd b/chrome/locale/sv-SE/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/sv-SE/options.dtd
rename to chrome/locale/sv-SE/options.dtd
diff --git a/chrome/firetray.jar!/locale/tr-TR/browserOverlay.dtd b/chrome/locale/tr-TR/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/tr-TR/browserOverlay.dtd
rename to chrome/locale/tr-TR/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/tr-TR/core.properties b/chrome/locale/tr-TR/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/tr-TR/core.properties
rename to chrome/locale/tr-TR/core.properties
diff --git a/chrome/firetray.jar!/locale/tr-TR/mailOverlay.dtd b/chrome/locale/tr-TR/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/tr-TR/mailOverlay.dtd
rename to chrome/locale/tr-TR/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/tr-TR/options.dtd b/chrome/locale/tr-TR/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/tr-TR/options.dtd
rename to chrome/locale/tr-TR/options.dtd
diff --git a/chrome/firetray.jar!/locale/uk-UA/browserOverlay.dtd b/chrome/locale/uk-UA/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/uk-UA/browserOverlay.dtd
rename to chrome/locale/uk-UA/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/uk-UA/core.properties b/chrome/locale/uk-UA/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/uk-UA/core.properties
rename to chrome/locale/uk-UA/core.properties
diff --git a/chrome/firetray.jar!/locale/uk-UA/mailOverlay.dtd b/chrome/locale/uk-UA/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/uk-UA/mailOverlay.dtd
rename to chrome/locale/uk-UA/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/uk-UA/options.dtd b/chrome/locale/uk-UA/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/uk-UA/options.dtd
rename to chrome/locale/uk-UA/options.dtd
diff --git a/chrome/firetray.jar!/locale/zh-CN/browserOverlay.dtd b/chrome/locale/zh-CN/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/zh-CN/browserOverlay.dtd
rename to chrome/locale/zh-CN/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/zh-CN/core.properties b/chrome/locale/zh-CN/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/zh-CN/core.properties
rename to chrome/locale/zh-CN/core.properties
diff --git a/chrome/firetray.jar!/locale/zh-CN/mailOverlay.dtd b/chrome/locale/zh-CN/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/zh-CN/mailOverlay.dtd
rename to chrome/locale/zh-CN/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/zh-CN/options.dtd b/chrome/locale/zh-CN/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/zh-CN/options.dtd
rename to chrome/locale/zh-CN/options.dtd
diff --git a/chrome/firetray.jar!/locale/zh-TW/browserOverlay.dtd b/chrome/locale/zh-TW/browserOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/zh-TW/browserOverlay.dtd
rename to chrome/locale/zh-TW/browserOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/zh-TW/core.properties b/chrome/locale/zh-TW/core.properties
similarity index 100%
rename from chrome/firetray.jar!/locale/zh-TW/core.properties
rename to chrome/locale/zh-TW/core.properties
diff --git a/chrome/firetray.jar!/locale/zh-TW/mailOverlay.dtd b/chrome/locale/zh-TW/mailOverlay.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/zh-TW/mailOverlay.dtd
rename to chrome/locale/zh-TW/mailOverlay.dtd
diff --git a/chrome/firetray.jar!/locale/zh-TW/options.dtd b/chrome/locale/zh-TW/options.dtd
similarity index 100%
rename from chrome/firetray.jar!/locale/zh-TW/options.dtd
rename to chrome/locale/zh-TW/options.dtd
diff --git a/components/SConscript b/components/SConscript
new file mode 100644
index 0000000..f10b0f9
--- /dev/null
+++ b/components/SConscript
@@ -0,0 +1,107 @@
+import sys, os, string, re
+
+platform = sys.platform
+
+
+try:
+ FLAGS = os.environ['CXXFLAGS'];
+except:
+ FLAGS = '-O2';
+
+linking_options=' --libs ';
+try:
+ DYNAMIC_LINKING = os.environ['DYNAMIC_LINKING'];
+except:
+ linking_options=' --static '
+
+print "linking: " + linking_options
+
+FLAGS += ' -include xpcom-config.h -include mozilla-config.h'
+FLAGS += ' -fno-rtti -fno-exceptions -fshort-wchar'
+FLAGS += ' -Wall -Wconversion -Wpointer-arith -Wcast-align -Woverloaded-virtual -Wsynth -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor -Wno-long-long'
+FLAGS += ' -pedantic -pthread -pipe'
+
+try:
+ lib_arch = os.environ['LIB_ARCH'];
+except:
+ lib_arch = '';
+
+
+try:
+ gecko_bin = os.environ['GECKO_SDK_BIN'];
+ if gecko_bin[-1] != os.sep: gecko_bin += os.sep
+
+ gecko_include = os.environ['GECKO_SDK_INCLUDE'];
+ if gecko_include[-1] != os.sep: gecko_include += os.sep
+
+ gecko_idl = os.environ['GECKO_SDK_IDL'];
+ if gecko_idl[-1] != os.sep: gecko_idl += os.sep
+
+ gecko_lib = os.environ['GECKO_SDK_LIB'];
+ if gecko_lib[-1] != os.sep: gecko_lib += os.sep
+
+except:
+ try:
+ geckosdk = os.environ['GECKO_SDK']
+ print "Using GECKO_SDK=" + geckosdk
+ if geckosdk[-1] != os.sep: geckosdk += os.sep
+ gecko_bin = geckosdk + 'bin'
+ gecko_include = geckosdk + 'include'
+ gecko_idl = geckosdk + 'idl'
+ gecko_lib = geckosdk + 'lib'
+
+ except:
+ print "Please set environment variable GECKO_SDK first (or in alternative the variables GECKO_SDK_BIN, GECKO_SDK_INCLUDE, GECKO_SDK_IDL, GECKO_SDK_LIB)."
+ sys.exit(1)
+
+# Hack to detect Mozilla version
+version_re = re.compile('#define MOZILLA_VERSION "(.*?)"')
+xpcom_libs = ['xpcomglue_s']
+with open(gecko_include + os.sep + 'mozilla-config.h', 'r') as f:
+ for line in f:
+ version_match = version_re.match(line)
+ if version_match:
+ version = string.split(version_match.group(1), '.')
+ if int(version[0]) >= 2:
+ # OK, we're building with Mozilla 2.0
+ FLAGS += ' -DGECKO_2'
+ if 'GECKO_19_COMPAT' in os.environ:
+ FLAGS += ' -DMOZ_NO_MOZALLOC'
+ xpcom_libs = ['xpcomglue_s_nomozalloc']
+ else:
+ xpcom_libs.append('mozalloc')
+ break
+
+# Create two builders to create xpt and header files from idl.
+bxpt = Builder(action = 'xpidl -w -m typelib -Icomponents -I' + gecko_idl + ' -e $TARGET $SOURCE', suffix = '.xpt', src_suffix = '.idl')
+bhdr = Builder(action = 'xpidl -w -m header -Icomponents -I' + gecko_idl + ' -e $TARGET $SOURCE', suffix = '.h', src_suffix = '.idl')
+
+# Create environment object for build
+env = Environment(
+ CPPPATH = [gecko_include],
+ LIBPATH = [gecko_lib],
+ LIBS = xpcom_libs,
+ ENV = os.environ)
+env.AppendENVPath('PATH', gecko_bin)
+env.Append(BUILDERS = {'MozXPT' : bxpt, 'MozHeader' : bhdr })
+
+env.ParseConfig('pkg-config ' + linking_options + ' --cflags gtk+-2.0') # libnotify
+env.ParseConfig('pkg-config --cflags nspr')
+env.Append( CXXFLAGS = FLAGS )
+
+# Create headers and xpt files from idl
+xpts = [env.MozXPT('nsITray'), env.MozXPT('nsIFireTrayHandler')]
+headers = [env.MozHeader('nsITray')]
+
+parts = []
+parts.extend(['nsTray.cpp', 'nsTrayModule.cpp'])
+
+nptray_name = 'nptray' + lib_arch
+print "NPTRAY: " + nptray_name
+
+nptray = env.SharedLibrary(nptray_name, parts)
+
+r = env.Install('#dist/components', [nptray, xpts, 'nsFireTrayHandler.js'])
+
+Default([xpts, headers, nptray])
+Return('r')
diff --git a/components/debug.h b/components/debug.h
new file mode 100644
index 0000000..6d4cdf6
--- /dev/null
+++ b/components/debug.h
@@ -0,0 +1,39 @@
+#ifndef _DEBUG_H_
+#define _DEBUG_H_
+
+ #include <iostream>
+ using namespace std;
+
+ #define _SEPARATOR_ " ********************************************************************* "
+
+ #ifdef ENABLE_ERROR_MSG
+ #define ERRORMSG(str) {cerr << str << endl; cerr.flush();}
+ #else
+ #define ERRORMSG(str) {}
+ #endif
+
+ #ifdef DO_DEBUG
+ #define DEBUGSTR(str) {cerr << str << endl; cerr.flush();}
+ #else
+ #define DEBUGSTR(str) {}
+ #endif
+
+
+ #ifdef DO_DEBUG_FILTER
+ #define FDEBUGSTR(str) {cerr << str << endl; cerr.flush();}
+ #else
+ #define FDEBUGSTR(str) {}
+ #endif
+
+
+ #ifdef DO_DEBUG_CALLS
+ #define DEBUG_CALL(str) {cerr << str << endl; cerr.flush();}
+ #else
+ #define DEBUG_CALL(str) {}
+ #endif
+
+ #define CAPTURE_ERRORS() gdk_error_trap_push ();
+ #define RELEASE_CAPTURE(msg) { gdk_flush (); if (gdk_error_trap_pop ()) ERRORMSG(msg); }
+ #define RELEASE_CAPTURE_RETURN(msg,val) { gdk_flush (); if (gdk_error_trap_pop ()) { ERRORMSG(msg); return val; } }
+
+#endif
diff --git a/components/keysyms.h b/components/keysyms.h
new file mode 100644
index 0000000..856543d
--- /dev/null
+++ b/components/keysyms.h
@@ -0,0 +1,171 @@
+#ifndef KEYSYM_TOOLS
+#define KEYSYM_TOOLS
+
+#include <X11/XF86keysym.h>
+
+#include "debug.h"
+
+#define GET_KEYSIM_FROM_STRING(key,retkey) { if(!strcmp(string,key)) return retkey; }
+
+KeySym getKeySymFromString(const char *string)
+{
+ DEBUGSTR("gKSFS ["<<string<<"]");
+
+ GET_KEYSIM_FROM_STRING("XF86MonBrightnessUp",XF86XK_MonBrightnessUp)
+ GET_KEYSIM_FROM_STRING("XF86MonBrightnessDown",XF86XK_MonBrightnessDown)
+ GET_KEYSIM_FROM_STRING("XF86KbdLightOnOff",XF86XK_KbdLightOnOff)
+ GET_KEYSIM_FROM_STRING("XF86KbdBrightnessUp",XF86XK_KbdBrightnessUp)
+ GET_KEYSIM_FROM_STRING("XF86KbdBrightnessDown",XF86XK_KbdBrightnessDown)
+ GET_KEYSIM_FROM_STRING("XF86Standby",XF86XK_Standby)
+ GET_KEYSIM_FROM_STRING("XF86AudioLowerVolume",XF86XK_AudioLowerVolume)
+ GET_KEYSIM_FROM_STRING("XF86AudioMute",XF86XK_AudioMute)
+ GET_KEYSIM_FROM_STRING("XF86AudioRaiseVolume",XF86XK_AudioRaiseVolume)
+ GET_KEYSIM_FROM_STRING("XF86AudioPlay",XF86XK_AudioPlay)
+ GET_KEYSIM_FROM_STRING("XF86AudioStop",XF86XK_AudioStop)
+ GET_KEYSIM_FROM_STRING("XF86AudioPrev",XF86XK_AudioPrev)
+ GET_KEYSIM_FROM_STRING("XF86AudioNext",XF86XK_AudioNext)
+ GET_KEYSIM_FROM_STRING("XF86HomePage",XF86XK_HomePage)
+ GET_KEYSIM_FROM_STRING("XF86Mail",XF86XK_Mail)
+ GET_KEYSIM_FROM_STRING("XF86Start",XF86XK_Start)
+ GET_KEYSIM_FROM_STRING("XF86Search",XF86XK_Search)
+ GET_KEYSIM_FROM_STRING("XF86AudioRecord",XF86XK_AudioRecord)
+ GET_KEYSIM_FROM_STRING("XF86Calculator",XF86XK_Calculator)
+ GET_KEYSIM_FROM_STRING("XF86Memo",XF86XK_Memo)
+ GET_KEYSIM_FROM_STRING("XF86ToDoList",XF86XK_ToDoList)
+ GET_KEYSIM_FROM_STRING("XF86Calendar",XF86XK_Calendar)
+ GET_KEYSIM_FROM_STRING("XF86PowerDown",XF86XK_PowerDown)
+ GET_KEYSIM_FROM_STRING("XF86ContrastAdjust",XF86XK_ContrastAdjust)
+ GET_KEYSIM_FROM_STRING("XF86RockerUp",XF86XK_RockerUp)
+ GET_KEYSIM_FROM_STRING("XF86RockerDown",XF86XK_RockerDown)
+ GET_KEYSIM_FROM_STRING("XF86RockerEnter",XF86XK_RockerEnter)
+ GET_KEYSIM_FROM_STRING("XF86Back",XF86XK_Back)
+ GET_KEYSIM_FROM_STRING("XF86Forward",XF86XK_Forward)
+ GET_KEYSIM_FROM_STRING("XF86Stop",XF86XK_Stop)
+ GET_KEYSIM_FROM_STRING("XF86Refresh",XF86XK_Refresh)
+ GET_KEYSIM_FROM_STRING("XF86PowerOff",XF86XK_PowerOff)
+ GET_KEYSIM_FROM_STRING("XF86WakeUp",XF86XK_WakeUp)
+ GET_KEYSIM_FROM_STRING("XF86Eject",XF86XK_Eject)
+ GET_KEYSIM_FROM_STRING("XF86ScreenSaver",XF86XK_ScreenSaver)
+ GET_KEYSIM_FROM_STRING("XF86WWW",XF86XK_WWW)
+ GET_KEYSIM_FROM_STRING("XF86Sleep",XF86XK_Sleep)
+ GET_KEYSIM_FROM_STRING("XF86Favorites",XF86XK_Favorites)
+ GET_KEYSIM_FROM_STRING("XF86AudioPause",XF86XK_AudioPause)
+ GET_KEYSIM_FROM_STRING("XF86AudioMedia",XF86XK_AudioMedia)
+ GET_KEYSIM_FROM_STRING("XF86MyComputer",XF86XK_MyComputer)
+ GET_KEYSIM_FROM_STRING("XF86VendorHome",XF86XK_VendorHome)
+ GET_KEYSIM_FROM_STRING("XF86LightBulb",XF86XK_LightBulb)
+ GET_KEYSIM_FROM_STRING("XF86Shop",XF86XK_Shop)
+ GET_KEYSIM_FROM_STRING("XF86History",XF86XK_History)
+ GET_KEYSIM_FROM_STRING("XF86OpenURL",XF86XK_OpenURL)
+ GET_KEYSIM_FROM_STRING("XF86AddFavorite",XF86XK_AddFavorite)
+ GET_KEYSIM_FROM_STRING("XF86HotLinks",XF86XK_HotLinks)
+ GET_KEYSIM_FROM_STRING("XF86BrightnessAdjust",XF86XK_BrightnessAdjust)
+ GET_KEYSIM_FROM_STRING("XF86Finance",XF86XK_Finance)
+ GET_KEYSIM_FROM_STRING("XF86Community",XF86XK_Community)
+ GET_KEYSIM_FROM_STRING("XF86AudioRewind",XF86XK_AudioRewind)
+#ifdef XF86XK_XF86BackForward
+ GET_KEYSIM_FROM_STRING("XF86XF86BackForward",XF86XK_XF86BackForward)
+#endif
+ GET_KEYSIM_FROM_STRING("XF86Launch0",XF86XK_Launch0)
+ GET_KEYSIM_FROM_STRING("XF86Launch1",XF86XK_Launch1)
+ GET_KEYSIM_FROM_STRING("XF86Launch2",XF86XK_Launch2)
+ GET_KEYSIM_FROM_STRING("XF86Launch3",XF86XK_Launch3)
+ GET_KEYSIM_FROM_STRING("XF86Launch4",XF86XK_Launch4)
+ GET_KEYSIM_FROM_STRING("XF86Launch5",XF86XK_Launch5)
+ GET_KEYSIM_FROM_STRING("XF86Launch6",XF86XK_Launch6)
+ GET_KEYSIM_FROM_STRING("XF86Launch7",XF86XK_Launch7)
+ GET_KEYSIM_FROM_STRING("XF86Launch8",XF86XK_Launch8)
+ GET_KEYSIM_FROM_STRING("XF86Launch9",XF86XK_Launch9)
+ GET_KEYSIM_FROM_STRING("XF86LaunchA",XF86XK_LaunchA)
+ GET_KEYSIM_FROM_STRING("XF86LaunchB",XF86XK_LaunchB)
+ GET_KEYSIM_FROM_STRING("XF86LaunchC",XF86XK_LaunchC)
+ GET_KEYSIM_FROM_STRING("XF86LaunchD",XF86XK_LaunchD)
+ GET_KEYSIM_FROM_STRING("XF86LaunchE",XF86XK_LaunchE)
+ GET_KEYSIM_FROM_STRING("XF86LaunchF",XF86XK_LaunchF)
+ GET_KEYSIM_FROM_STRING("XF86ApplicationLeft",XF86XK_ApplicationLeft)
+ GET_KEYSIM_FROM_STRING("XF86ApplicationRight",XF86XK_ApplicationRight)
+ GET_KEYSIM_FROM_STRING("XF86Book",XF86XK_Book)
+ GET_KEYSIM_FROM_STRING("XF86CD",XF86XK_CD)
+ GET_KEYSIM_FROM_STRING("XF86Calculater",XF86XK_Calculater)
+ GET_KEYSIM_FROM_STRING("XF86Clear",XF86XK_Clear)
+ GET_KEYSIM_FROM_STRING("XF86Close",XF86XK_Close)
+ GET_KEYSIM_FROM_STRING("XF86Copy",XF86XK_Copy)
+ GET_KEYSIM_FROM_STRING("XF86Cut",XF86XK_Cut)
+ GET_KEYSIM_FROM_STRING("XF86Display",XF86XK_Display)
+ GET_KEYSIM_FROM_STRING("XF86DOS",XF86XK_DOS)
+ GET_KEYSIM_FROM_STRING("XF86Documents",XF86XK_Documents)
+ GET_KEYSIM_FROM_STRING("XF86Excel",XF86XK_Excel)
+ GET_KEYSIM_FROM_STRING("XF86Explorer",XF86XK_Explorer)
+ GET_KEYSIM_FROM_STRING("XF86Game",XF86XK_Game)
+ GET_KEYSIM_FROM_STRING("XF86Go",XF86XK_Go)
+ GET_KEYSIM_FROM_STRING("XF86iTouch",XF86XK_iTouch)
+ GET_KEYSIM_FROM_STRING("XF86LogOff",XF86XK_LogOff)
+ GET_KEYSIM_FROM_STRING("XF86Market",XF86XK_Market)
+ GET_KEYSIM_FROM_STRING("XF86Meeting",XF86XK_Meeting)
+ GET_KEYSIM_FROM_STRING("XF86MenuKB",XF86XK_MenuKB)
+ GET_KEYSIM_FROM_STRING("XF86MenuPB",XF86XK_MenuPB)
+ GET_KEYSIM_FROM_STRING("XF86MySites",XF86XK_MySites)
+ GET_KEYSIM_FROM_STRING("XF86New",XF86XK_New)
+ GET_KEYSIM_FROM_STRING("XF86News",XF86XK_News)
+ GET_KEYSIM_FROM_STRING("XF86OfficeHome",XF86XK_OfficeHome)
+ GET_KEYSIM_FROM_STRING("XF86Open",XF86XK_Open)
+ GET_KEYSIM_FROM_STRING("XF86Option",XF86XK_Option)
+ GET_KEYSIM_FROM_STRING("XF86Paste",XF86XK_Paste)
+ GET_KEYSIM_FROM_STRING("XF86Phone",XF86XK_Phone)
+ GET_KEYSIM_FROM_STRING("XF86Q",XF86XK_Q)
+ GET_KEYSIM_FROM_STRING("XF86Reply",XF86XK_Reply)
+ GET_KEYSIM_FROM_STRING("XF86Reload",XF86XK_Reload)
+ GET_KEYSIM_FROM_STRING("XF86RotateWindows",XF86XK_RotateWindows)
+ GET_KEYSIM_FROM_STRING("XF86RotationPB",XF86XK_RotationPB)
+ GET_KEYSIM_FROM_STRING("XF86RotationKB",XF86XK_RotationKB)
+ GET_KEYSIM_FROM_STRING("XF86Save",XF86XK_Save)
+ GET_KEYSIM_FROM_STRING("XF86ScrollUp",XF86XK_ScrollUp)
+ GET_KEYSIM_FROM_STRING("XF86ScrollDown",XF86XK_ScrollDown)
+ GET_KEYSIM_FROM_STRING("XF86ScrollClick",XF86XK_ScrollClick)
+ GET_KEYSIM_FROM_STRING("XF86Send",XF86XK_Send)
+ GET_KEYSIM_FROM_STRING("XF86Spell",XF86XK_Spell)
+ GET_KEYSIM_FROM_STRING("XF86SplitScreen",XF86XK_SplitScreen)
+ GET_KEYSIM_FROM_STRING("XF86Support",XF86XK_Support)
+ GET_KEYSIM_FROM_STRING("XF86TaskPane",XF86XK_TaskPane)
+ GET_KEYSIM_FROM_STRING("XF86Terminal",XF86XK_Terminal)
+ GET_KEYSIM_FROM_STRING("XF86Tools",XF86XK_Tools)
+ GET_KEYSIM_FROM_STRING("XF86Travel",XF86XK_Travel)
+ GET_KEYSIM_FROM_STRING("XF86UserPB",XF86XK_UserPB)
+ GET_KEYSIM_FROM_STRING("XF86User1KB",XF86XK_User1KB)
+ GET_KEYSIM_FROM_STRING("XF86User2KB",XF86XK_User2KB)
+ GET_KEYSIM_FROM_STRING("XF86Video",XF86XK_Video)
+ GET_KEYSIM_FROM_STRING("XF86WheelButton",XF86XK_WheelButton)
+ GET_KEYSIM_FROM_STRING("XF86Word",XF86XK_Word)
+ GET_KEYSIM_FROM_STRING("XF86Xfer",XF86XK_Xfer)
+ GET_KEYSIM_FROM_STRING("XF86ZoomIn",XF86XK_ZoomIn)
+ GET_KEYSIM_FROM_STRING("XF86ZoomOut",XF86XK_ZoomOut)
+ GET_KEYSIM_FROM_STRING("XF86Away",XF86XK_Away)
+ GET_KEYSIM_FROM_STRING("XF86Messenger",XF86XK_Messenger)
+ GET_KEYSIM_FROM_STRING("XF86WebCam",XF86XK_WebCam)
+ GET_KEYSIM_FROM_STRING("XF86MailForward",XF86XK_MailForward)
+ GET_KEYSIM_FROM_STRING("XF86Pictures",XF86XK_Pictures)
+ GET_KEYSIM_FROM_STRING("XF86Music",XF86XK_Music)
+ GET_KEYSIM_FROM_STRING("XF86Switch",XF86XK_Switch_VT_1)
+ GET_KEYSIM_FROM_STRING("XF86Switch",XF86XK_Switch_VT_2)
+ GET_KEYSIM_FROM_STRING("XF86Switch",XF86XK_Switch_VT_3)
+ GET_KEYSIM_FROM_STRING("XF86Switch",XF86XK_Switch_VT_4)
+ GET_KEYSIM_FROM_STRING("XF86Switch",XF86XK_Switch_VT_5)
+ GET_KEYSIM_FROM_STRING("XF86Switch",XF86XK_Switch_VT_6)
+ GET_KEYSIM_FROM_STRING("XF86Switch",XF86XK_Switch_VT_7)
+ GET_KEYSIM_FROM_STRING("XF86Switch",XF86XK_Switch_VT_8)
+ GET_KEYSIM_FROM_STRING("XF86Switch",XF86XK_Switch_VT_9)
+ GET_KEYSIM_FROM_STRING("XF86Switch",XF86XK_Switch_VT_10)
+ GET_KEYSIM_FROM_STRING("XF86Switch",XF86XK_Switch_VT_11)
+ GET_KEYSIM_FROM_STRING("XF86Switch",XF86XK_Switch_VT_12)
+ GET_KEYSIM_FROM_STRING("XF86Ungrab",XF86XK_Ungrab)
+ GET_KEYSIM_FROM_STRING("XF86ClearGrab",XF86XK_ClearGrab)
+ GET_KEYSIM_FROM_STRING("XF86Next",XF86XK_Next_VMode)
+ GET_KEYSIM_FROM_STRING("XF86Prev",XF86XK_Prev_VMode)
+
+
+ DEBUGSTR("NO MATCH!")
+ return NoSymbol;
+}
+
+
+#endif
diff --git a/components/libnptray_gecko7_i686.so b/components/libnptray_gecko7_i686.so
deleted file mode 100755
index 72ff634..0000000
Binary files a/components/libnptray_gecko7_i686.so and /dev/null differ
diff --git a/components/libnptray_gecko7_x86_64.so b/components/libnptray_gecko7_x86_64.so
deleted file mode 100755
index d57c56f..0000000
Binary files a/components/libnptray_gecko7_x86_64.so and /dev/null differ
diff --git a/components/libnptray_gecko8_i686.so b/components/libnptray_gecko8_i686.so
deleted file mode 100755
index 4f00bea..0000000
Binary files a/components/libnptray_gecko8_i686.so and /dev/null differ
diff --git a/components/libnptray_gecko8_x86_64.so b/components/libnptray_gecko8_x86_64.so
deleted file mode 100755
index 0a995ff..0000000
Binary files a/components/libnptray_gecko8_x86_64.so and /dev/null differ
diff --git a/components/nsIBaseWindow.h b/components/nsIBaseWindow.h
new file mode 100644
index 0000000..d2597f9
--- /dev/null
+++ b/components/nsIBaseWindow.h
@@ -0,0 +1,368 @@
+/*
+ * DO NOT EDIT. THIS FILE IS GENERATED FROM /builds/tinderbox/XR-Trunk/Linux_2.6.18-8.el5_Depend/mozilla/widget/public/nsIBaseWindow.idl
+ */
+
+#ifndef __gen_nsIBaseWindow_h__
+#define __gen_nsIBaseWindow_h__
+
+
+#ifndef __gen_nsISupports_h__
+#include "nsISupports.h"
+#endif
+
+#ifndef __gen_nsrootidl_h__
+#include "nsrootidl.h"
+#endif
+
+/* For IDL files that don't want to include root IDL files. */
+#ifndef NS_NO_VTABLE
+#define NS_NO_VTABLE
+#endif
+class nsIWidget;
+typedef void * nativeWindow;
+
+
+/* starting interface: nsIBaseWindow */
+#define NS_IBASEWINDOW_IID_STR "046bc8a0-8015-11d3-af70-00a024ffc08c"
+
+#define NS_IBASEWINDOW_IID \
+ {0x046bc8a0, 0x8015, 0x11d3, \
+ { 0xaf, 0x70, 0x00, 0xa0, 0x24, 0xff, 0xc0, 0x8c }}
+
+/**
+ * The nsIBaseWindow describes a generic window and basic operations that
+ * can be performed on it. This is not to be a complete windowing interface
+ * but rather a common set that nearly all windowed objects support.
+ */
+class NS_NO_VTABLE nsIBaseWindow : public nsISupports {
+ public:
+
+ NS_DECLARE_STATIC_IID_ACCESSOR(NS_IBASEWINDOW_IID)
+
+ /* [noscript] void initWindow (in nativeWindow parentNativeWindow, in nsIWidget parentWidget, in long x, in long y, in long cx, in long cy); */
+ NS_IMETHOD InitWindow(nativeWindow parentNativeWindow, nsIWidget * parentWidget, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy) = 0;
+
+ /* void create (); */
+ NS_IMETHOD Create(void) = 0;
+
+ /* void destroy (); */
+ NS_IMETHOD Destroy(void) = 0;
+
+ /* void setPosition (in long x, in long y); */
+ NS_IMETHOD SetPosition(PRInt32 x, PRInt32 y) = 0;
+
+ /* void getPosition (out long x, out long y); */
+ NS_IMETHOD GetPosition(PRInt32 *x, PRInt32 *y) = 0;
+
+ /* void setSize (in long cx, in long cy, in boolean fRepaint); */
+ NS_IMETHOD SetSize(PRInt32 cx, PRInt32 cy, PRBool fRepaint) = 0;
+
+ /* void getSize (out long cx, out long cy); */
+ NS_IMETHOD GetSize(PRInt32 *cx, PRInt32 *cy) = 0;
+
+ /* void setPositionAndSize (in long x, in long y, in long cx, in long cy, in boolean fRepaint); */
+ NS_IMETHOD SetPositionAndSize(PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy, PRBool fRepaint) = 0;
+
+ /* void getPositionAndSize (out long x, out long y, out long cx, out long cy); */
+ NS_IMETHOD GetPositionAndSize(PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy) = 0;
+
+ /**
+ * Tell the window to repaint itself
+ * @param aForce - if true, repaint immediately
+ * if false, the window may defer repainting as it sees fit.
+ */
+ /* void repaint (in boolean force); */
+ NS_IMETHOD Repaint(PRBool force) = 0;
+
+ /* [noscript] attribute nsIWidget parentWidget; */
+ NS_IMETHOD GetParentWidget(nsIWidget * *aParentWidget) = 0;
+ NS_IMETHOD SetParentWidget(nsIWidget * aParentWidget) = 0;
+
+ /* attribute nativeWindow parentNativeWindow; */
+ NS_IMETHOD GetParentNativeWindow(nativeWindow *aParentNativeWindow) = 0;
+ NS_IMETHOD SetParentNativeWindow(nativeWindow aParentNativeWindow) = 0;
+
+ /* attribute boolean visibility; */
+ NS_IMETHOD GetVisibility(PRBool *aVisibility) = 0;
+ NS_IMETHOD SetVisibility(PRBool aVisibility) = 0;
+
+ /* attribute boolean enabled; */
+ NS_IMETHOD GetEnabled(PRBool *aEnabled) = 0;
+ NS_IMETHOD SetEnabled(PRBool aEnabled) = 0;
+
+ /** set blurSuppression to true to suppress handling of blur events.
+ * set it false to re-enable them. query it to determine whether
+ * blur events are suppressed. The implementation should allow
+ * for blur events to be suppressed multiple times.
+ */
+ /* attribute boolean blurSuppression; */
+ NS_IMETHOD GetBlurSuppression(PRBool *aBlurSuppression) = 0;
+ NS_IMETHOD SetBlurSuppression(PRBool aBlurSuppression) = 0;
+
+ /* [noscript] readonly attribute nsIWidget mainWidget; */
+ NS_IMETHOD GetMainWidget(nsIWidget * *aMainWidget) = 0;
+
+ /**
+ * Give the window focus.
+ */
+ /* void setFocus (); */
+ NS_IMETHOD SetFocus(void) = 0;
+
+ /* attribute wstring title; */
+ NS_IMETHOD GetTitle(PRUnichar * *aTitle) = 0;
+ NS_IMETHOD SetTitle(const PRUnichar * aTitle) = 0;
+
+};
+
+ NS_DEFINE_STATIC_IID_ACCESSOR(nsIBaseWindow, NS_IBASEWINDOW_IID)
+
+/* Use this macro when declaring classes that implement this interface. */
+#define NS_DECL_NSIBASEWINDOW \
+ NS_IMETHOD InitWindow(nativeWindow parentNativeWindow, nsIWidget * parentWidget, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy); \
+ NS_IMETHOD Create(void); \
+ NS_IMETHOD Destroy(void); \
+ NS_IMETHOD SetPosition(PRInt32 x, PRInt32 y); \
+ NS_IMETHOD GetPosition(PRInt32 *x, PRInt32 *y); \
+ NS_IMETHOD SetSize(PRInt32 cx, PRInt32 cy, PRBool fRepaint); \
+ NS_IMETHOD GetSize(PRInt32 *cx, PRInt32 *cy); \
+ NS_IMETHOD SetPositionAndSize(PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy, PRBool fRepaint); \
+ NS_IMETHOD GetPositionAndSize(PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy); \
+ NS_IMETHOD Repaint(PRBool force); \
+ NS_IMETHOD GetParentWidget(nsIWidget * *aParentWidget); \
+ NS_IMETHOD SetParentWidget(nsIWidget * aParentWidget); \
+ NS_IMETHOD GetParentNativeWindow(nativeWindow *aParentNativeWindow); \
+ NS_IMETHOD SetParentNativeWindow(nativeWindow aParentNativeWindow); \
+ NS_IMETHOD GetVisibility(PRBool *aVisibility); \
+ NS_IMETHOD SetVisibility(PRBool aVisibility); \
+ NS_IMETHOD GetEnabled(PRBool *aEnabled); \
+ NS_IMETHOD SetEnabled(PRBool aEnabled); \
+ NS_IMETHOD GetBlurSuppression(PRBool *aBlurSuppression); \
+ NS_IMETHOD SetBlurSuppression(PRBool aBlurSuppression); \
+ NS_IMETHOD GetMainWidget(nsIWidget * *aMainWidget); \
+ NS_IMETHOD SetFocus(void); \
+ NS_IMETHOD GetTitle(PRUnichar * *aTitle); \
+ NS_IMETHOD SetTitle(const PRUnichar * aTitle);
+
+/* Use this macro to declare functions that forward the behavior of this interface to another object. */
+#define NS_FORWARD_NSIBASEWINDOW(_to) \
+ NS_IMETHOD InitWindow(nativeWindow parentNativeWindow, nsIWidget * parentWidget, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy) { return _to InitWindow(parentNativeWindow, parentWidget, x, y, cx, cy); } \
+ NS_IMETHOD Create(void) { return _to Create(); } \
+ NS_IMETHOD Destroy(void) { return _to Destroy(); } \
+ NS_IMETHOD SetPosition(PRInt32 x, PRInt32 y) { return _to SetPosition(x, y); } \
+ NS_IMETHOD GetPosition(PRInt32 *x, PRInt32 *y) { return _to GetPosition(x, y); } \
+ NS_IMETHOD SetSize(PRInt32 cx, PRInt32 cy, PRBool fRepaint) { return _to SetSize(cx, cy, fRepaint); } \
+ NS_IMETHOD GetSize(PRInt32 *cx, PRInt32 *cy) { return _to GetSize(cx, cy); } \
+ NS_IMETHOD SetPositionAndSize(PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy, PRBool fRepaint) { return _to SetPositionAndSize(x, y, cx, cy, fRepaint); } \
+ NS_IMETHOD GetPositionAndSize(PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy) { return _to GetPositionAndSize(x, y, cx, cy); } \
+ NS_IMETHOD Repaint(PRBool force) { return _to Repaint(force); } \
+ NS_IMETHOD GetParentWidget(nsIWidget * *aParentWidget) { return _to GetParentWidget(aParentWidget); } \
+ NS_IMETHOD SetParentWidget(nsIWidget * aParentWidget) { return _to SetParentWidget(aParentWidget); } \
+ NS_IMETHOD GetParentNativeWindow(nativeWindow *aParentNativeWindow) { return _to GetParentNativeWindow(aParentNativeWindow); } \
+ NS_IMETHOD SetParentNativeWindow(nativeWindow aParentNativeWindow) { return _to SetParentNativeWindow(aParentNativeWindow); } \
+ NS_IMETHOD GetVisibility(PRBool *aVisibility) { return _to GetVisibility(aVisibility); } \
+ NS_IMETHOD SetVisibility(PRBool aVisibility) { return _to SetVisibility(aVisibility); } \
+ NS_IMETHOD GetEnabled(PRBool *aEnabled) { return _to GetEnabled(aEnabled); } \
+ NS_IMETHOD SetEnabled(PRBool aEnabled) { return _to SetEnabled(aEnabled); } \
+ NS_IMETHOD GetBlurSuppression(PRBool *aBlurSuppression) { return _to GetBlurSuppression(aBlurSuppression); } \
+ NS_IMETHOD SetBlurSuppression(PRBool aBlurSuppression) { return _to SetBlurSuppression(aBlurSuppression); } \
+ NS_IMETHOD GetMainWidget(nsIWidget * *aMainWidget) { return _to GetMainWidget(aMainWidget); } \
+ NS_IMETHOD SetFocus(void) { return _to SetFocus(); } \
+ NS_IMETHOD GetTitle(PRUnichar * *aTitle) { return _to GetTitle(aTitle); } \
+ NS_IMETHOD SetTitle(const PRUnichar * aTitle) { return _to SetTitle(aTitle); }
+
+/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
+#define NS_FORWARD_SAFE_NSIBASEWINDOW(_to) \
+ NS_IMETHOD InitWindow(nativeWindow parentNativeWindow, nsIWidget * parentWidget, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy) { return !_to ? NS_ERROR_NULL_POINTER : _to->InitWindow(parentNativeWindow, parentWidget, x, y, cx, cy); } \
+ NS_IMETHOD Create(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Create(); } \
+ NS_IMETHOD Destroy(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Destroy(); } \
+ NS_IMETHOD SetPosition(PRInt32 x, PRInt32 y) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPosition(x, y); } \
+ NS_IMETHOD GetPosition(PRInt32 *x, PRInt32 *y) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPosition(x, y); } \
+ NS_IMETHOD SetSize(PRInt32 cx, PRInt32 cy, PRBool fRepaint) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSize(cx, cy, fRepaint); } \
+ NS_IMETHOD GetSize(PRInt32 *cx, PRInt32 *cy) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSize(cx, cy); } \
+ NS_IMETHOD SetPositionAndSize(PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy, PRBool fRepaint) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPositionAndSize(x, y, cx, cy, fRepaint); } \
+ NS_IMETHOD GetPositionAndSize(PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPositionAndSize(x, y, cx, cy); } \
+ NS_IMETHOD Repaint(PRBool force) { return !_to ? NS_ERROR_NULL_POINTER : _to->Repaint(force); } \
+ NS_IMETHOD GetParentWidget(nsIWidget * *aParentWidget) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParentWidget(aParentWidget); } \
+ NS_IMETHOD SetParentWidget(nsIWidget * aParentWidget) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetParentWidget(aParentWidget); } \
+ NS_IMETHOD GetParentNativeWindow(nativeWindow *aParentNativeWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetParentNativeWindow(aParentNativeWindow); } \
+ NS_IMETHOD SetParentNativeWindow(nativeWindow aParentNativeWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetParentNativeWindow(aParentNativeWindow); } \
+ NS_IMETHOD GetVisibility(PRBool *aVisibility) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetVisibility(aVisibility); } \
+ NS_IMETHOD SetVisibility(PRBool aVisibility) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetVisibility(aVisibility); } \
+ NS_IMETHOD GetEnabled(PRBool *aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnabled(aEnabled); } \
+ NS_IMETHOD SetEnabled(PRBool aEnabled) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEnabled(aEnabled); } \
+ NS_IMETHOD GetBlurSuppression(PRBool *aBlurSuppression) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetBlurSuppression(aBlurSuppression); } \
+ NS_IMETHOD SetBlurSuppression(PRBool aBlurSuppression) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetBlurSuppression(aBlurSuppression); } \
+ NS_IMETHOD GetMainWidget(nsIWidget * *aMainWidget) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMainWidget(aMainWidget); } \
+ NS_IMETHOD SetFocus(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFocus(); } \
+ NS_IMETHOD GetTitle(PRUnichar * *aTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTitle(aTitle); } \
+ NS_IMETHOD SetTitle(const PRUnichar * aTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTitle(aTitle); }
+
+#if 0
+/* Use the code below as a template for the implementation class for this interface. */
+
+/* Header file */
+class nsBaseWindow : public nsIBaseWindow
+{
+public:
+ NS_DECL_ISUPPORTS
+ NS_DECL_NSIBASEWINDOW
+
+ nsBaseWindow();
+
+private:
+ ~nsBaseWindow();
+
+protected:
+ /* additional members */
+};
+
+/* Implementation file */
+NS_IMPL_ISUPPORTS1(nsBaseWindow, nsIBaseWindow)
+
+nsBaseWindow::nsBaseWindow()
+{
+ /* member initializers and constructor code */
+}
+
+nsBaseWindow::~nsBaseWindow()
+{
+ /* destructor code */
+}
+
+/* [noscript] void initWindow (in nativeWindow parentNativeWindow, in nsIWidget parentWidget, in long x, in long y, in long cx, in long cy); */
+NS_IMETHODIMP nsBaseWindow::InitWindow(nativeWindow parentNativeWindow, nsIWidget * parentWidget, PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* void create (); */
+NS_IMETHODIMP nsBaseWindow::Create()
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* void destroy (); */
+NS_IMETHODIMP nsBaseWindow::Destroy()
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* void setPosition (in long x, in long y); */
+NS_IMETHODIMP nsBaseWindow::SetPosition(PRInt32 x, PRInt32 y)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* void getPosition (out long x, out long y); */
+NS_IMETHODIMP nsBaseWindow::GetPosition(PRInt32 *x, PRInt32 *y)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* void setSize (in long cx, in long cy, in boolean fRepaint); */
+NS_IMETHODIMP nsBaseWindow::SetSize(PRInt32 cx, PRInt32 cy, PRBool fRepaint)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* void getSize (out long cx, out long cy); */
+NS_IMETHODIMP nsBaseWindow::GetSize(PRInt32 *cx, PRInt32 *cy)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* void setPositionAndSize (in long x, in long y, in long cx, in long cy, in boolean fRepaint); */
+NS_IMETHODIMP nsBaseWindow::SetPositionAndSize(PRInt32 x, PRInt32 y, PRInt32 cx, PRInt32 cy, PRBool fRepaint)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* void getPositionAndSize (out long x, out long y, out long cx, out long cy); */
+NS_IMETHODIMP nsBaseWindow::GetPositionAndSize(PRInt32 *x, PRInt32 *y, PRInt32 *cx, PRInt32 *cy)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* void repaint (in boolean force); */
+NS_IMETHODIMP nsBaseWindow::Repaint(PRBool force)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* [noscript] attribute nsIWidget parentWidget; */
+NS_IMETHODIMP nsBaseWindow::GetParentWidget(nsIWidget * *aParentWidget)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+NS_IMETHODIMP nsBaseWindow::SetParentWidget(nsIWidget * aParentWidget)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* attribute nativeWindow parentNativeWindow; */
+NS_IMETHODIMP nsBaseWindow::GetParentNativeWindow(nativeWindow *aParentNativeWindow)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+NS_IMETHODIMP nsBaseWindow::SetParentNativeWindow(nativeWindow aParentNativeWindow)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* attribute boolean visibility; */
+NS_IMETHODIMP nsBaseWindow::GetVisibility(PRBool *aVisibility)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+NS_IMETHODIMP nsBaseWindow::SetVisibility(PRBool aVisibility)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* attribute boolean enabled; */
+NS_IMETHODIMP nsBaseWindow::GetEnabled(PRBool *aEnabled)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+NS_IMETHODIMP nsBaseWindow::SetEnabled(PRBool aEnabled)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* attribute boolean blurSuppression; */
+NS_IMETHODIMP nsBaseWindow::GetBlurSuppression(PRBool *aBlurSuppression)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+NS_IMETHODIMP nsBaseWindow::SetBlurSuppression(PRBool aBlurSuppression)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* [noscript] readonly attribute nsIWidget mainWidget; */
+NS_IMETHODIMP nsBaseWindow::GetMainWidget(nsIWidget * *aMainWidget)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* void setFocus (); */
+NS_IMETHODIMP nsBaseWindow::SetFocus()
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* attribute wstring title; */
+NS_IMETHODIMP nsBaseWindow::GetTitle(PRUnichar * *aTitle)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+NS_IMETHODIMP nsBaseWindow::SetTitle(const PRUnichar * aTitle)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* End of implementation class template. */
+#endif
+
+
+#endif /* __gen_nsIBaseWindow_h__ */
diff --git a/components/nsIFireTrayHandler.idl b/components/nsIFireTrayHandler.idl
new file mode 100644
index 0000000..8de8dd8
--- /dev/null
+++ b/components/nsIFireTrayHandler.idl
@@ -0,0 +1,12 @@
+#include "nsISupports.idl"
+
+interface nsIDOMWindow;
+
+[scriptable, uuid(f2f05844-d398-11df-9885-7d29dfd72085)]
+interface nsIFireTrayHandler : nsISupports
+{
+ void hideAll();
+ void hideWindow(in nsIDOMWindow window);
+ void setupWindow(in nsIDOMWindow window);
+};
+
diff --git a/components/nsIFireTrayHandler.xpt b/components/nsIFireTrayHandler.xpt
deleted file mode 100644
index 1f2ce11..0000000
Binary files a/components/nsIFireTrayHandler.xpt and /dev/null differ
diff --git a/components/nsITray.idl b/components/nsITray.idl
new file mode 100644
index 0000000..1bd0b7a
--- /dev/null
+++ b/components/nsITray.idl
@@ -0,0 +1,87 @@
+#include "nsISupports.idl"
+
+interface nsIBaseWindow;
+
+[scriptable, function, uuid(71ae41e0-517b-40d0-b05c-626d236fe52b)]
+interface nsITrayCallback : nsISupports
+{
+ // Javascript function call
+ boolean call();
+};
+
+[scriptable, function, uuid(cb451092-6269-11de-84bb-3bce55d89593)]
+interface nsIScrollCallback : nsISupports
+{
+ // Javascript function call
+ boolean call(in PRUint32 direction);
+};
+
+
+[scriptable, function, uuid(d22950aa-62a8-11de-b360-94c756d89593)]
+interface nsIKeySymCallback : nsISupports
+{
+ // Javascript function call
+ boolean call(in string keysym, in PRUint64 keycode);
+};
+
+
+[scriptable, uuid(bf249f85-20f2-49be-96f3-9681f3bb0334)]
+interface nsITray : nsISupports
+{
+ void showTray();
+ void hideTray();
+
+ //event callbacks
+ void trayActivateEvent(in nsITrayCallback aCallback);
+ void trayScrollEvent(in nsIScrollCallback aCallback);
+ void trayKeyEvent(in nsIKeySymCallback aCallback);
+
+ void hideWindow(in nsIBaseWindow aBaseWindow);
+ void restore(in PRUint32 aCount, [array, size_is(aCount)] in nsIBaseWindow aBaseWindows);
+ void restoreWindow(in nsIBaseWindow aBaseWindow);
+
+ PRUint64 getTrayMenu();
+
+ PRUint64 menuNew();
+ PRUint64 menuItemNew(in wstring label, in wstring img);
+ PRUint64 separatorMenuItemNew();
+
+ void menuItemUpdate(in PRUint64 item, in wstring label);
+ void menuAppend(in PRUint64 menu, in PRUint64 item, in nsITrayCallback aCallback);
+ void menuPrepend(in PRUint64 menu, in PRUint64 item, in nsITrayCallback aCallback);
+ void menuInsert(in PRUint64 menu, in PRUint64 item, in PRUint64 pos, in nsITrayCallback aCallback);
+ void menuSub(in PRUint64 item, in PRUint64 sub_menu);
+ void menuRemove(in PRUint64 menu, in PRUint64 item);
+ void menuRemoveAll(in PRUint64 menu);
+ PRUint64 menuLength(in PRUint64 menu);
+
+ void setDefaultXpmIcon(in PRUint32 app); //selects default (embedded) icons for the specified application
+
+ boolean setDefaultIcon(in string filename); //icon for normal usage
+ boolean setSpecialIcon(in string filename); //icon shown when text is displayed
+
+ void setIconText(in string text, in string color); //sets the icon text (used for mail count)
+
+ void setTrayTooltip(in wstring text); //sets the tray tooltip message
+ void setTrayIcon(in PRUint32 FLAG); //switch systrayicon checking the FLAG
+ /*void init_tooltip_image(); //prepare tooltip handlers to show image*/
+
+ void setCloseBlocking(in boolean val); //determine if we have to block window closing
+ void getCloseBlocking(out boolean val);
+
+ void setMinimizeBlocking(in boolean val); //determine if we have to hide to tray on window minimize
+ void getMinimizeBlocking(out boolean val);
+
+ void initNotification(in string appname); //init the notification system
+ void showANotification(in wstring title, in wstring info,in string image); //show a notification
+
+ boolean getFocusState(in nsIBaseWindow aBaseWindow);
+ void setWindowHandler(in nsIBaseWindow aBaseWindow);
+
+
+ // MULTIMEDIA KEYS HANDLING
+ boolean addHandledKey(in string key_string);
+ boolean addHandledKeyCode(in PRUint64 key_code);
+
+ string getKeycodeString(in PRUint64 key_code);
+};
diff --git a/components/nsITray.xpt b/components/nsITray.xpt
deleted file mode 100644
index c326643..0000000
Binary files a/components/nsITray.xpt and /dev/null differ
diff --git a/components/nsTray.cpp b/components/nsTray.cpp
new file mode 100644
index 0000000..5d515da
--- /dev/null
+++ b/components/nsTray.cpp
@@ -0,0 +1,1469 @@
+#include "nsTray.h"
+#include "options.h"
+#include "debug.h"
+
+//BUILT IN PIXMAPS
+#include "pixmaps/firefox.xpm"
+#include "pixmaps/thunderbird.xpm"
+#include "pixmaps/dove.xpm"
+#include "pixmaps/weasel.xpm"
+#include "pixmaps/icecat.xpm"
+#include "pixmaps/newmail.xpm"
+#include "pixmaps/seamonkey.xpm"
+#include "pixmaps/songbird.xpm"
+#include "pixmaps/songbirdegg.xpm"
+#include "pixmaps/sunbird.xpm"
+#include "pixmaps/chatzilla.xpm"
+
+#include "nsMemory.h"
+#include "nsIBaseWindow.h"
+
+#include <pango/pangoft2.h>
+#include <pango/pango-layout.h>
+#include <gdk/gdk.h>
+#include <gtk/gtksignal.h>
+#include <gdk/gdkx.h>
+
+
+#ifdef _KEYSYMS_
+ #include <gdk/gdkkeysyms.h>
+ #include "keysyms.h"
+ #include <X11/XF86keysym.h>
+#endif
+//// REMOVE NOTIFY #include <libnotify/notify.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+
+
+Atom delete_window = XInternAtom (GDK_DISPLAY(), "WM_DELETE_WINDOW", False);
+
+// Returns the lenght of a NULL-terminated UTF16 PRUnichar * string
+PRUint32 PRUstrlen(const PRUnichar *text) {
+ if(!text) return 0;
+ PRUint32 cnt=0;
+ while(*text != 0) {
+ cnt++;
+ text++;
+ }
+ return cnt;
+}
+
+void nsTray::activate(GtkStatusIcon* status_icon, gpointer user_data) {
+ PRBool ret = TRUE;
+ nsTray *data = static_cast<nsTray*>(user_data);
+
+ data->tray_callback->Call(&ret);
+}
+
+/*
+
+SCROLL DIRECTIONS:
+
+0 - UP
+1 - DOWN
+2 - LEFT
+3 - RIGHT
+
+*/
+
+gboolean nsTray::scroll(GtkStatusIcon *status_icon, GdkEventScroll *event, gpointer user_data)
+{
+ DEBUG_CALL("scroll")
+
+ if(!event || !user_data) return false;
+
+ PRBool ret = TRUE;
+ nsTray *data = static_cast<nsTray*>(user_data);
+
+ PRUint32 dir=0;
+
+ switch(event->direction)
+ {
+ case GDK_SCROLL_UP:
+ DEBUGSTR("SCROLL UP")
+ dir=0;
+ break;
+
+ case GDK_SCROLL_DOWN:
+ DEBUGSTR("SCROLL DOWN")
+ dir=1;
+ break;
+
+ case GDK_SCROLL_LEFT:
+ DEBUGSTR("SCROLL LEFT")
+ dir=2;
+ break;
+
+ case GDK_SCROLL_RIGHT:
+ DEBUGSTR("SCROLL RIGHT")
+ dir=3;
+ break;
+
+ default:
+ DEBUGSTR("SCROLL UNKNOWN")
+ return false;
+ break;
+ }
+
+ if(!data->scroll_callback) return true;
+
+ data->scroll_callback->Call(dir, &ret);
+
+ return true;
+
+}
+
+void nsTray::popup(GtkStatusIcon *status_icon, guint button, guint activate_time, gpointer user_data) {
+ DEBUG_CALL("popup")
+ nsTray *data = static_cast<nsTray*>(user_data);
+
+ if (data->pop_menu) {
+ gtk_widget_show_all(data->pop_menu);
+ gtk_menu_popup(GTK_MENU(data->pop_menu), NULL, NULL,
+ gtk_status_icon_position_menu, data->systray_icon, button, activate_time);
+ }
+}
+
+void nsTray::item_event(GtkWidget *widget, gpointer user_data) {
+ DEBUG_CALL("item_event")
+ PRBool ret = TRUE;
+ nsTray *data = static_cast<nsTray*>(user_data);
+
+ if(data->item_callback_list[(PRUint64)widget]) {
+ data->item_callback_list[(PRUint64)widget]->Call(&ret);
+ }
+}
+
+void nsTray::menu_remove_all_callback(GtkWidget *widget, gpointer user_data) {
+ DEBUG_CALL("menu_remove_all_callback")
+ nsTray *data = static_cast<nsTray*>(user_data);
+
+ if (GTK_IS_CONTAINER(widget)) {
+ gtk_container_foreach(GTK_CONTAINER(widget), (GtkCallback)(nsTray::menu_remove_all_callback), user_data);
+ }
+
+ gtk_widget_destroy(widget);
+ data->item_callback_list.erase((PRUint64)widget);
+}
+
+/* Implementation file */
+NS_IMPL_ISUPPORTS1(nsTray, nsITray)
+
+nsTray::nsTray() {
+ DEBUG_CALL("nsTray")
+
+ DEBUGSTR("CONSTRUCTOR!")
+
+ /* member initializers and constructor code */
+ block_close=false;
+ block_minimize=false;
+
+ systray_icon = NULL;
+ icon = NULL;
+ default_icon = NULL;
+ special_icon = NULL;
+ pop_menu = NULL;
+
+ tray_callback = NULL;
+ scroll_callback = NULL;
+ key_callback = NULL;
+
+ systray_icon = gtk_status_icon_new();
+
+ icon = gdk_pixbuf_new_from_xpm_data((const char**)firefox_xpm);
+
+ /* Connect signals */
+ g_signal_connect(G_OBJECT(this->systray_icon), "activate", G_CALLBACK(nsTray::activate), this);
+ g_signal_connect(G_OBJECT(this->systray_icon), "popup-menu", G_CALLBACK(nsTray::popup), this);
+ g_signal_connect(G_OBJECT(this->systray_icon), "scroll-event", G_CALLBACK(nsTray::scroll), this);
+
+ this->pop_menu = gtk_menu_new();
+
+}
+
+nsTray::~nsTray() {
+ DEBUG_CALL("~nsTray")
+ /* destructor code */ //TO_DO CHECK FOR MEMORY LEAKS...
+ this->systray_icon = NULL;
+ this->icon = NULL;
+ this->pop_menu = NULL;
+ this->tray_callback = NULL;
+}
+
+/* void showTray (); */
+NS_IMETHODIMP nsTray::ShowTray() {
+ DEBUG_CALL("showTray")
+
+
+ if (this->systray_icon) {
+
+ //
+ //gtk_status_icon_set_from_pixbuf(GTK_STATUS_ICON(this->systray_icon), GDK_PIXBUF(default_icon));
+// this->systray_icon=gtk_status_icon_new_from_pixbuf(GDK_PIXBUF(default_icon));
+ gtk_status_icon_set_visible(this->systray_icon, TRUE);
+ }
+
+ return NS_OK;
+}
+
+/* void hideTray (); */
+NS_IMETHODIMP nsTray::HideTray() {
+ DEBUG_CALL("hideTray")
+
+ gtk_status_icon_set_visible(this->systray_icon, FALSE);
+
+ return NS_OK;
+}
+
+/* void trayActivateEvent (in nsITrayCallback aCallback); */
+NS_IMETHODIMP nsTray::TrayActivateEvent(nsITrayCallback *aCallback) {
+ DEBUG_CALL("trayActivateEvent")
+ this->tray_callback = aCallback;
+ return NS_OK;
+}
+
+/* void trayScrollEvent (in nsIScrollCallback aCallback); */
+NS_IMETHODIMP nsTray::TrayScrollEvent(nsIScrollCallback *aCallback) {
+ DEBUG_CALL("trayScrollEvent")
+ this->scroll_callback = aCallback;
+ return NS_OK;
+}
+
+/* void trayKeyEvent (in nsIKeySymCallback aCallback); */
+NS_IMETHODIMP nsTray::TrayKeyEvent(nsIKeySymCallback *aCallback) {
+ DEBUG_CALL("trayKeyEvent")
+ this->key_callback = aCallback;
+ return NS_OK;
+}
+
+
+#ifdef DO_DEBUG
+ #define DEBUG_WINDOW(a,b) show_window_info(a,b);
+#else
+ #define DEBUG_WINDOW(a,b) ;
+#endif
+
+void show_window_info(char *desc,Window win)
+{
+
+ DEBUGSTR(_SEPARATOR_)
+ DEBUGSTR( "WIN: "<<desc<<" ("<< win<<")")
+
+ CAPTURE_ERRORS()
+
+ XWindowAttributes a;
+ if( XGetWindowAttributes(GDK_DISPLAY(), win, &a) )
+ {
+
+ DEBUGSTR( " X: "<<a.x<<" Y: "<<a.y)
+ DEBUGSTR( " Width: "<<a.width<<" Height: "<<a.height)
+ DEBUGSTR( " border_width: "<<a.border_width)
+ DEBUGSTR( " depth: "<< a.depth)
+// DEBUGSTR( " "Visual *visual; /* the associated visual structure */
+ DEBUGSTR( " root: "<<a.root)
+
+ DEBUGSTR( " bit_gravity: "<<a.bit_gravity)
+ DEBUGSTR( " win_gravity: "<<a.win_gravity)
+ DEBUGSTR( " backing_store: "<<a.backing_store)
+// DEBUGSTR( " "unsigned long backing_planes; /* planes to be preserved if possible */
+ // DEBUGSTR( " "unsigned long backing_pixel; /* value to be used when restoring planes */
+ DEBUGSTR( " save_under: "<<a.save_under)
+// DEBUGSTR( " "Colormap colormap; /* color map to be associated with window */
+ DEBUGSTR( " map_installed: "<<a.map_installed)
+ DEBUGSTR( " map_state: "<<a.map_state)
+ DEBUGSTR( " all_event_masks: "<<a.all_event_masks)
+ DEBUGSTR( " your_event_mask: "<<a.your_event_mask)
+ DEBUGSTR( " do_not_propagate_mask: "<<a.do_not_propagate_mask)
+ DEBUGSTR( " override_redirect: "<<a.override_redirect)
+ DEBUGSTR( " screen: "<<a.screen)
+
+
+ }
+
+ RELEASE_CAPTURE("Error getting window information")
+ DEBUGSTR(_SEPARATOR_)
+}
+
+int GetParent(Window win, Window *parent)
+{
+ DEBUG_CALL("getParent")
+
+ if(parent==NULL)return 0;
+
+ CAPTURE_ERRORS()
+
+ Window root;
+ Window *children;
+ unsigned int nchildren;
+ if(!XQueryTree(GDK_DISPLAY(), win, &root, parent, &children, &nchildren)) return 0;
+
+ if(children) XFree(children);
+
+ RELEASE_CAPTURE_RETURN("Error getting window parent",0)
+
+ return 1;
+}
+
+int GetRoot(Window win, Window *root)
+{
+ if(root==NULL)return 0;
+
+ int res=0;
+
+ CAPTURE_ERRORS()
+
+ XWindowAttributes a;
+ if( XGetWindowAttributes(GDK_DISPLAY(), win, &a) )
+ {
+ *root=a.root;
+ res=1;
+ }
+
+ RELEASE_CAPTURE_RETURN("Error getting window information", 0)
+ return res;
+}
+
+
+int GetToplevel(Window win, Window *res)
+{
+ DEBUG_CALL("getToplevel")
+
+ if(res==NULL)return 0;
+
+ Window root;
+ if(!GetRoot(win, &root)) { DEBUGSTR("Error getting window's root"); return 0; }
+
+ Window current=win;
+ Window parent=win;
+ int i=0;
+ while(parent!=root)
+ {
+ i++;
+ current=parent;
+ DEBUG_WINDOW("CURRENT",current);
+ if(!GetParent(current, &parent))
+ {
+ DEBUGSTR("Error getting parent for window "<<current)
+ return 0;
+ }
+ DEBUGSTR("CURRENT: "<<current<< " - PARENT: "<< parent << " - ROOT: "<<root)
+ }
+
+ *res=current;
+ return 1;
+}
+
+
+
+void EchoWinAttribs(Window win)
+{
+ CAPTURE_ERRORS()
+
+ XWindowAttributes attrib;
+ if( XGetWindowAttributes(GDK_DISPLAY(), win, &attrib) )
+ {
+ DEBUGSTR( "WIN: "<< win <<" POS: ("<< attrib.x << ","<< attrib.y << ") - SIZE: " << attrib.width << "x" << attrib.height)
+ }
+
+ RELEASE_CAPTURE("Error getting window information")
+}
+
+void ExploreTree(Window xwin)
+{
+ int ok=1;
+ while(ok)
+ {
+ EchoWinAttribs(xwin);
+ Window parent;
+ ok=GetParent(xwin, &parent);
+ xwin=parent;
+ }
+}
+
+/* void hideWindow (in nsIBaseWindow aBaseWindow); */
+NS_IMETHODIMP nsTray::HideWindow(nsIBaseWindow *aBaseWindow) {
+ DEBUG_CALL("hideWindow")
+
+ nsresult rv;
+
+ NS_ENSURE_ARG_POINTER(aBaseWindow);
+
+ nativeWindow aNativeWindow;
+ rv = aBaseWindow->GetParentNativeWindow(&aNativeWindow);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ CAPTURE_ERRORS()
+
+ GdkWindow *gdk_win=gdk_window_get_toplevel((GdkWindow*) aNativeWindow);
+
+ DEBUGSTR("HIDING")
+
+ #ifdef _REMEMBER_POSITION_
+
+ Window xwin=GDK_WINDOW_XID(gdk_win);
+
+ DEBUGSTR("HANDLER LIST COUNT " << handled_windows.size())
+
+ if(handled_windows.count(xwin)>0)
+ {
+ window_state* ws=handled_windows[xwin];
+
+ if(ws) {
+
+ gdk_window_get_root_origin(gdk_win, &ws->pos_x, &ws->pos_y);
+ ws->valid=true;
+ DEBUGSTR( "SAVING POSITION X: "<< ws->pos_x << " Y: "<< ws->pos_y )
+ }
+ }
+ #endif
+
+ gdk_window_hide(gdk_win);
+
+ RELEASE_CAPTURE("Error hiding window")
+
+ return NS_OK;
+}
+
+
+
+
+/* void restore (in PRUint32 aCount, [array, size_is (aCount)] in nsIBaseWindow aBaseWindows); */
+NS_IMETHODIMP nsTray::Restore(PRUint32 aCount, nsIBaseWindow **aBaseWindows) {
+ DEBUG_CALL("restore")
+
+ PRUint32 i;
+
+ NS_ENSURE_ARG(aCount);
+ NS_ENSURE_ARG_POINTER(aBaseWindows);
+
+ for (i = 0; i < aCount; ++i)
+ RestoreWindow(aBaseWindows[i]);
+
+ return NS_OK;
+}
+
+/* void restoreWindow (in nsIBaseWindow aBaseWindow); */
+NS_IMETHODIMP nsTray::RestoreWindow(nsIBaseWindow *aBaseWindow) {
+ DEBUG_CALL("restoreWindow")
+
+ nsresult rv;
+
+ NS_ENSURE_ARG_POINTER(aBaseWindow);
+
+ nativeWindow aNativeWindow;
+ rv = aBaseWindow->GetParentNativeWindow(&aNativeWindow);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ CAPTURE_ERRORS()
+
+ GdkWindow * tl_gdk=gdk_window_get_toplevel((GdkWindow*)aNativeWindow);
+
+ gdk_window_show(tl_gdk);
+
+ #ifdef _REMEMBER_POSITION_
+ //if possible restore window position
+ Window xwin=GDK_WINDOW_XID(tl_gdk);
+ if(handled_windows.count(xwin)>0)
+ {
+ window_state* ws=handled_windows[xwin];
+
+ if(ws && ws->valid) {
+ XMoveWindow(GDK_DISPLAY(), xwin, ws->pos_x, ws->pos_y);
+ DEBUGSTR( "RESTORING WINDOW STATE:")
+ DEBUGSTR( " X: "<< ws->pos_x << " Y: "<< ws->pos_y )
+ DEBUGSTR( " VALID: "<< ws->valid )
+ }
+
+ }
+ #endif
+
+ gdk_window_focus (tl_gdk, gtk_get_current_event_time ());
+
+ GdkWindowState s=gdk_window_get_state(tl_gdk);
+
+ if(s & GDK_WINDOW_STATE_ICONIFIED)
+ gdk_window_deiconify(tl_gdk);
+
+
+ RELEASE_CAPTURE("Error restoring window")
+
+ return NS_OK;
+}
+
+/* PRUint64 getTrayMenu (); */
+NS_IMETHODIMP nsTray::GetTrayMenu(PRUint64 *_retval) {
+ DEBUG_CALL("getTrayMenu")
+ *_retval = (PRUint64)this->pop_menu;
+
+ return NS_OK;
+}
+
+/* PRUint64 menuNew (in string label); */
+NS_IMETHODIMP nsTray::MenuNew(PRUint64 *_retval) {
+ DEBUG_CALL("menuNew")
+ GtkWidget *menu = gtk_menu_new();
+ *_retval = (PRUint64)menu;
+
+ return NS_OK;
+}
+
+gchar *convertUtf16ToUtf8(const PRUnichar *str)
+{
+ PRUint32 len=PRUstrlen(str);
+ gchar * utf8=g_utf16_to_utf8 ((const gunichar2 *)str, len, NULL, NULL, NULL);
+ return utf8;
+}
+
+
+/* PRUint64 menuItemNew (in wstring label, in wstring img); */
+NS_IMETHODIMP nsTray::MenuItemNew(const PRUnichar *label, const PRUnichar *img, PRUint64 *_retval) {
+ DEBUG_CALL("menuItemNew")
+
+ if(!img) DEBUGSTR("IMMG NULL")
+ else {
+ DEBUGSTR("IMMG NOT NULL:")
+ DEBUGSTR(img)
+ }
+
+ GtkWidget *item=NULL;
+
+ gchar * label_utf8=convertUtf16ToUtf8(label);
+
+ if(img && PRUstrlen(img)>0) //try to create menu item with stock image
+ {
+ gchar * img_utf8=convertUtf16ToUtf8(img);
+ item = gtk_image_menu_item_new_with_label (label_utf8);
+ gtk_image_menu_item_set_image((GtkImageMenuItem*)item, gtk_image_new_from_stock ( img_utf8 ,GTK_ICON_SIZE_MENU));
+ g_free(img_utf8);
+ }
+
+ if(!item) //if img not specified or img error just set menu item with label
+ {
+ item = gtk_menu_item_new_with_label(label_utf8);
+ }
+
+ g_free(label_utf8);
+
+ *_retval = (PRUint64)item;
+ return NS_OK;
+}
+
+/* PRUint64 separatorMenuItemNew (); */
+NS_IMETHODIMP nsTray::SeparatorMenuItemNew(PRUint64 *_retval) {
+ DEBUG_CALL("separatorMenuItemNew")
+ GtkWidget *item = gtk_separator_menu_item_new();
+ *_retval = (PRUint64)item;
+
+ return NS_OK;
+}
+
+/* void menuItemUpdate (in PRUint64 item, in wstring label); */
+NS_IMETHODIMP nsTray::MenuItemUpdate(PRUint64 item, const PRUnichar *label) {
+ DEBUG_CALL("MenuItemUpdate")
+ gchar * label_utf8=convertUtf16ToUtf8(label);
+#ifdef __GTK_SET_LABEL__
+ gtk_menu_item_set_label(GTK_MENU_ITEM(item),label_utf8);
+#endif
+ return NS_OK;
+}
+
+/*///ADDED FOR IMG MENU
+/ PRUint64 menu_item_new (in wstring label); /
+NS_IMETHODIMP nsTray::Menu_item_img_new(const PRUnichar *label, const PRUnichar *immg, PRUint64 *_retval) {
+ PRUint32 len=PRUstrlen(label);
+ gchar * utf8=g_utf16_to_utf8 ((const gunichar2 *)label, len, NULL, NULL, NULL);
+ len=PRUstrlen(immg);
+
+gchar * iconn=g_utf16_to_utf8 ((const gunichar2 *)immg, len, NULL, NULL, NULL);
+
+ gtk_image_menu_item_set_image((GtkImageMenuItem*)item, gtk_image_new_from_stock (iconn,GTK_ICON_SIZE_MENU));
+ *_retval = (PRUint64)item;
+ g_free(utf8);
+ g_free(iconn);
+ return NS_OK;
+}
+
+//////*/
+
+void nsTray::AddMenuItemCallback(PRUint64 item,nsITrayCallback *aCallback) {
+ DEBUG_CALL("AddMenuItemCallback")
+
+ nsCOMPtr<nsITrayCallback> item_callback = aCallback;
+ this->item_callback_list[item] = item_callback;
+ g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(nsTray::item_event), this);
+}
+
+void nsTray::RemoveMenuItemCallback(PRUint64 item) {
+ DEBUG_CALL("RemoveMenuItemCallback")
+ this->item_callback_list.erase(item);
+}
+
+/* void menuAppend (in PRUint64 menu_item); */
+NS_IMETHODIMP nsTray::MenuAppend(PRUint64 menu, PRUint64 item, nsITrayCallback *aCallback) {
+ DEBUG_CALL("menuAppend")
+
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), GTK_WIDGET(item));
+ AddMenuItemCallback(item,aCallback);
+
+ return NS_OK;
+}
+
+/* void menuPrepend (in PRUint64 item, in nsITrayCallback aCallback); */
+NS_IMETHODIMP nsTray::MenuPrepend(PRUint64 menu, PRUint64 item, nsITrayCallback *aCallback) {
+ DEBUG_CALL("menuPrepend")
+
+ gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), GTK_WIDGET(item));
+ AddMenuItemCallback(item,aCallback);
+
+ return NS_OK;
+}
+/* void menuInsert (in PRUint64 menu, in PRUint64 item, in PRUint64 pos, in nsITrayCallback aCallback); */
+NS_IMETHODIMP nsTray::MenuInsert(PRUint64 menu, PRUint64 item, PRUint64 pos, nsITrayCallback *aCallback) {
+ DEBUG_CALL("menuInsert")
+
+ gtk_menu_shell_insert(GTK_MENU_SHELL(menu), GTK_WIDGET(item), (gint)pos);
+ AddMenuItemCallback(item,aCallback);
+
+ return NS_OK;
+}
+
+/* void menuSub (in PRUint64 item, in PRUint64 sub_menu); */
+NS_IMETHODIMP nsTray::MenuSub(PRUint64 item, PRUint64 sub_menu) {
+ DEBUG_CALL("menuSub")
+
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), GTK_WIDGET(sub_menu));
+
+ return NS_OK;
+}
+
+/* void menuRemove (in PRUint64 menu, in PRUint64 item); */
+NS_IMETHODIMP nsTray::MenuRemove(PRUint64 menu, PRUint64 item) {
+ DEBUG_CALL("menuRemove")
+
+ gtk_container_remove(GTK_CONTAINER(menu), GTK_WIDGET(item));
+ RemoveMenuItemCallback(item);
+
+ return NS_OK;
+}
+
+/* void menuRemoveAll (in PRUint64 menu); */
+NS_IMETHODIMP nsTray::MenuRemoveAll(PRUint64 menu) {
+ DEBUG_CALL("menuRemoveAll")
+
+ gtk_container_foreach(GTK_CONTAINER(menu), (GtkCallback)(nsTray::menu_remove_all_callback), this);
+
+ return NS_OK;
+}
+
+/* void menuLength (in PRUint64 menu); */
+NS_IMETHODIMP nsTray::MenuLength(PRUint64 menu, PRUint64 *_retval) {
+ DEBUG_CALL("menuLength")
+
+ GList *list = gtk_container_get_children(GTK_CONTAINER(menu));
+ *_retval = g_list_length(list);
+
+ return NS_OK;
+}
+
+/* void setDefaultXpmIcon (in PRUint64 app); */
+NS_IMETHODIMP nsTray::SetDefaultXpmIcon(PRUint32 app)
+{
+ DEBUG_CALL("setDefaultXpmIcon")
+
+ if(this->icon) { g_object_unref(this->icon); this->icon=NULL;}
+ if(this->default_icon) { g_object_unref(this->default_icon); this->default_icon=NULL;}
+ if(this->special_icon) { g_object_unref(this->special_icon); this->special_icon=NULL;}
+
+ char **df_icon;
+ char **sp_icon;
+
+ /* APPS
+
+ 0 - Unknown (defaults to firefox)
+ 1 - Firefox
+ 2 - Thunderbird
+ 3 - Swiftdove
+ 4 - Swiftweasel
+ 5 - Icedove
+ 6 - iceweasel
+ 7 - icecat
+ 8 - songbird
+ 9 - sunbird
+ 10 - seamonkey
+
+ */
+
+ switch(app)
+ {
+ case 11: //chatzilla
+ df_icon=(char**)chatzilla_xpm;
+ sp_icon=(char**)newmail_xpm;
+ break;
+
+ case 10: //seamonkey
+ df_icon=(char**)seamonkey_xpm;
+ sp_icon=(char**)newmail_xpm;
+ break;
+ case 9: //sunbird
+ df_icon=(char**)sunbird_xpm;
+ sp_icon=(char**)sunbird_xpm;
+ break;
+ case 8: //songbird
+ df_icon=(char**)songbirdegg_xpm;
+ sp_icon=(char**)songbird_xpm;
+ break;
+ case 7: //icecat
+ df_icon=(char**)icecat_xpm;
+ sp_icon=(char**)newmail_xpm;
+ break;
+ case 6: //iceweasel
+ df_icon=(char**)weasel_xpm;
+ sp_icon=(char**)newmail_xpm;
+ break;
+ case 5: //swiftdove
+ df_icon=(char**)dove_xpm;
+ sp_icon=(char**)newmail_xpm;
+ break;
+ case 4: //swiftweasel
+ df_icon=(char**)weasel_xpm;
+ sp_icon=(char**)newmail_xpm;
+ break;
+ case 3: //swiftdove
+ df_icon=(char**)dove_xpm;
+ sp_icon=(char**)newmail_xpm;
+ break;
+ case 2: //thunderbird
+ df_icon=(char**)thunderbird_xpm;
+ sp_icon=(char**)newmail_xpm;
+ break;
+ case 1: //firefox
+ default:
+ df_icon=(char**)firefox_xpm;
+ sp_icon=(char**)firefox_xpm;
+ break;
+ }
+
+ this->default_icon = gdk_pixbuf_new_from_xpm_data((const char**)df_icon);
+ this->special_icon = gdk_pixbuf_new_from_xpm_data((const char**)sp_icon);
+
+ gtk_status_icon_set_from_pixbuf(GTK_STATUS_ICON(this->systray_icon), GDK_PIXBUF(this->default_icon));
+/*
+ gtk_status_icon_set_tooltip(this->systray_icon, text);
+ gtk_status_icon_set_visible(this->systray_icon, TRUE);*/
+
+ return NS_OK;
+}
+
+
+bool nsTray::SetIcon(const char *filename, GdkPixbuf *& icon)
+{
+ DEBUG_CALL("setIcon")
+ DEBUGSTR(filename);
+
+
+ GError * error = NULL;
+ GdkPixbuf *new_icon=gdk_pixbuf_new_from_file(filename, &error);
+ if(new_icon)
+ {
+ DEBUGSTR("OK!")
+
+ if(icon) {
+ g_object_unref(icon);
+ }
+ icon=new_icon;
+ }
+ else
+ {
+ DEBUGSTR("ERROR!")
+ return false;
+ }
+ return true;
+}
+
+
+ /* boolean setDefaultIcon (in string filename); */
+NS_IMETHODIMP nsTray::SetDefaultIcon(const char *filename, PRBool *_retval)
+{
+ DEBUG_CALL("setDefaultIcon")
+
+ *_retval=SetIcon(filename,this->default_icon);
+ gtk_status_icon_set_from_pixbuf(GTK_STATUS_ICON(this->systray_icon), GDK_PIXBUF(default_icon));
+
+ return NS_OK;
+}
+
+ /* boolean setSpecialIcon (in string filename); */
+NS_IMETHODIMP nsTray::SetSpecialIcon(const char *filename, PRBool *_retval)
+{
+ DEBUG_CALL("setSpecialIcon")
+
+ *_retval=SetIcon(filename,this->special_icon);
+ gtk_status_icon_set_from_pixbuf(GTK_STATUS_ICON(this->systray_icon), GDK_PIXBUF(special_icon));
+
+ return NS_OK;
+}
+
+
+#define MIN_FONT_SIZE 4
+
+GdkPixbuf *renderTextWithAlpha(int w, int h, gchar *text, const gchar *colorstr)
+{
+ GdkColormap* cmap=gdk_rgb_get_colormap();
+ int screen_depth=24;
+ if(cmap) screen_depth=cmap->visual->depth;
+
+ GdkColor fore = { 0, 0, 0, 0 };
+ GdkColor alpha = { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF};
+
+ if( gdk_color_parse (colorstr, &fore) ) DEBUGSTR("COLOR OK")
+ else DEBUGSTR("COLOR ERROR")
+
+ if(fore.red==alpha.red && fore.green==alpha.green && fore.blue==alpha.blue)
+ alpha.red=0; //make sure alpha is different from fore
+
+ gdk_colormap_alloc_color (cmap, &fore,true,true);
+ gdk_colormap_alloc_color (cmap, &alpha,true,true);
+
+
+ GdkPixmap *pm = gdk_pixmap_new (NULL, w, h, screen_depth);
+
+ GdkGC *gc = gdk_gc_new (pm);
+
+ gdk_gc_set_foreground(gc,&alpha);
+ gdk_draw_rectangle(pm,gc,true, 0, 0, w ,h );
+
+ GtkWidget *scratch = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_widget_realize (scratch);
+
+ PangoLayout *layout = gtk_widget_create_pango_layout (scratch, NULL);
+ gtk_widget_destroy (scratch);
+
+ PangoFontDescription *fnt = pango_font_description_from_string("Sans 18");
+
+ pango_font_description_set_weight (fnt,PANGO_WEIGHT_SEMIBOLD);
+ pango_layout_set_spacing (layout,0);
+
+ pango_layout_set_font_description (layout, fnt);
+
+ pango_layout_set_text (layout, text,-1);
+
+ int tw=0;
+ int th=0;
+ int sz;
+ int border=4;
+
+ pango_layout_get_pixel_size(layout, &tw, &th);
+
+ while( (tw>w - border || th > h - border)) //fit text to the icon by decreasing font size
+ {
+ sz=pango_font_description_get_size (fnt);
+
+ if(sz<MIN_FONT_SIZE) {
+ sz=MIN_FONT_SIZE;
+ break;
+ }
+ sz-=PANGO_SCALE;
+
+ pango_font_description_set_size (fnt,sz);
+ pango_layout_set_font_description (layout, fnt);
+ pango_layout_get_pixel_size(layout, &tw, &th);
+ }
+
+ //centers the text
+ int px, py;
+ px=(w-tw)/2;
+ py=(h-th)/2;
+
+
+ //paints the text
+ gdk_draw_layout_with_colors (pm, gc, px, py, layout, &fore,NULL);
+
+ GdkPixbuf *buf = gdk_pixbuf_get_from_drawable (NULL, pm, NULL, 0, 0, 0, 0, w, h);
+ g_object_unref (pm);
+
+ GdkPixbuf *alpha_buf = gdk_pixbuf_add_alpha (buf, TRUE, (guchar)alpha.red, (guchar)alpha.green, (guchar)alpha.blue);
+ g_object_unref (buf);
+
+ g_object_unref (layout);
+ pango_font_description_free (fnt);
+ g_object_unref (gc);
+
+ return alpha_buf;
+}
+
+bool hasPrintedChars(gchar *text) {
+ if(!text) return false;
+ while(*text)
+ {
+ if( !g_unichar_isspace(*text) ) return true;
+ text++;
+ }
+ return false;
+}
+
+GdkPixbuf *DrawText (GdkPixbuf *base, gchar *text, const gchar *colorstr)
+{
+ if(!base || !text) return NULL;
+
+
+ GdkPixbuf *dest=gdk_pixbuf_copy(base); //copy the icon content as background
+
+ int w=gdk_pixbuf_get_width(base);
+ int h=gdk_pixbuf_get_height(base);
+
+ if(hasPrintedChars(text)) {
+ //get the text rendered on a new pixbuf with alpha channel
+ GdkPixbuf *textbuf=renderTextWithAlpha(w, h, text, colorstr);
+
+ //merge the rendered text on top
+ gdk_pixbuf_composite (textbuf,dest,0,0,w,h,0,0,1,1,GDK_INTERP_NEAREST,255);
+
+ g_object_unref(textbuf);
+ }
+
+ return dest;
+}
+
+
+/* void setIconText (in string text, in string color); */
+NS_IMETHODIMP nsTray::SetIconText(const char *text, const char *color)
+{
+ DEBUG_CALL("setIconText")
+
+ if(strlen(text)>0 && special_icon)
+ {
+ GdkPixbuf *edit=DrawText (special_icon, (gchar *)text, color);
+
+ gtk_status_icon_set_from_pixbuf(GTK_STATUS_ICON(this->systray_icon), GDK_PIXBUF(edit));
+// gtk_status_icon_set_visible(this->systray_icon, TRUE);
+ //if(old) delete old;
+ }
+ else {
+ if(default_icon)
+ {
+ gtk_status_icon_set_from_pixbuf(GTK_STATUS_ICON(this->systray_icon), GDK_PIXBUF(default_icon));
+// gtk_status_icon_set_visible(this->systray_icon, TRUE);
+ }
+ }
+
+ return NS_OK;
+}
+
+ /* void setTrayTooltip (in wstring text); */
+NS_IMETHODIMP nsTray::SetTrayTooltip(const PRUnichar *text){
+ DEBUG_CALL("setTrayTooltip")
+
+ if(!text) return NS_OK;
+
+ PRUint64 len=PRUstrlen(text);
+ gchar * utf8=g_utf16_to_utf8 ((const gunichar2 *)text,len,NULL,NULL,NULL);
+
+ gtk_status_icon_set_tooltip(this->systray_icon, utf8);
+
+ g_free(utf8);
+
+ return NS_OK;
+}
+
+/* void setTrayIcon(in PRUint32 FLAG); */
+NS_IMETHODIMP nsTray::SetTrayIcon(PRUint32 FLAG) {
+ DEBUG_CALL("setTrayIcon")
+
+
+ if (!FLAG)
+ gtk_status_icon_set_from_pixbuf(GTK_STATUS_ICON(this->systray_icon), GDK_PIXBUF(default_icon));
+ else
+ gtk_status_icon_set_from_pixbuf(GTK_STATUS_ICON(this->systray_icon), GDK_PIXBUF(special_icon));
+
+ //gtk_status_icon_set_visible(this->systray_icon, TRUE);
+ return NS_OK;
+}
+
+
+/*
+NS_IMETHODIMP nsTray::Init_tooltip_image() {
+ GtkWidget * sysIW = GTK_WIDGET(this->systray_icon);
+ gtk_widget_set_has_tooltip(sysIW,TRUE);
+ GtkWidget *winTooltip = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ g_signal_connect(GTK_OBJECT(this->systray_icon), "query-tooltip",
+ G_CALLBACK(gtk_widget_set_tooltip_window),
+ (sysIW,
+ GTK_WINDOW(winTooltip)) );
+ return NS_OK;
+}
+*/
+
+/* void setCloseBlocking (in boolean block); */
+NS_IMETHODIMP nsTray::SetCloseBlocking(PRBool val)
+{
+ DEBUG_CALL("setCloseBlocking")
+ block_close=val;
+ return NS_OK;
+}
+
+/* void getCloseBlocking (out boolean block); */
+NS_IMETHODIMP nsTray::GetCloseBlocking(PRBool *val)
+{
+ DEBUG_CALL("getCloseBlocking")
+
+ if(val)*val=this->block_close;
+ return NS_OK;
+}
+
+/* void setMinimizeBlocking (in boolean val); */
+NS_IMETHODIMP nsTray::SetMinimizeBlocking(PRBool val)
+{
+ DEBUG_CALL("SetMinimizeBlocking")
+ block_minimize=val;
+ return NS_OK;
+}
+
+/* void getMinimizeBlocking (out boolean val); */
+NS_IMETHODIMP nsTray::GetMinimizeBlocking(PRBool *val)
+{
+ DEBUG_CALL("GetMinimizeBlocking")
+ if(val)*val=this->block_minimize;
+ return NS_OK;
+}
+
+
+
+/* void initNotification(in string appname); */
+NS_IMETHODIMP nsTray::InitNotification(const gchar * appName) {
+ DEBUG_CALL("initNotification")
+
+
+// REMOVE NOTIFY
+/* notify_init(appName);
+ sys_notification=notify_notification_new_with_status_icon(
+ "FireTray Notification",
+ NULL,
+ NULL,
+ this->systray_icon);
+
+ notify_notification_attach_to_status_icon(sys_notification,
+ this->systray_icon);
+ notify_notification_set_timeout(sys_notification,NS_NOTIFY_TIME);
+*/
+ return NS_OK;
+}
+
+/* void showANotification(in wstring title, in wstring info,in string image); */
+NS_IMETHODIMP nsTray::ShowANotification(const PRUnichar *title,const PRUnichar * info,const gchar *image) {
+ DEBUG_CALL("showANotification")
+
+ // REMOVE NOTIFY
+ /* PRUint64 len=PRUstrlen(title);
+ gchar * utf8_title =g_utf16_to_utf8 ((const gunichar2 *)title,len,NULL,NULL,NULL);
+
+ len=PRUstrlen(info);
+ gchar * utf8_info =g_utf16_to_utf8 ((const gunichar2 *)info,len,NULL,NULL,NULL);
+
+ notify_notification_update(this->sys_notification,
+ utf8_title,utf8_info,image);
+
+ if(!image)
+ notify_notification_set_icon_from_pixbuf(sys_notification,GDK_PIXBUF(this->special_icon));
+
+ notify_notification_show(sys_notification,NULL);
+
+ g_free(utf8_title);
+ g_free(utf8_info);*/
+ return NS_OK;
+}
+
+
+
+GtkWindow * get_gtkwindow_from_gdkwindow(GdkWindow *win)
+{
+ /* don't know if there's a better way ... */
+
+ GList* list=gtk_window_list_toplevels();
+
+ if(list) {
+ GList* pos=g_list_first(list);
+ while(pos!=NULL)
+ {
+
+ GtkWindow *w=(GtkWindow *)pos->data;
+
+ if(w) {
+
+ GdkWindow *gdw=((GtkWidget *)w)->window;
+
+ if(gdw==win)
+ { return w; }
+
+ }
+
+ pos=g_list_next(pos);
+
+ }
+ }
+
+ return NULL; // not found
+}
+
+
+
+void DebugATOM(char *msg, Atom atom)
+{
+ #ifdef DO_DEBUG
+
+ CAPTURE_ERRORS()
+
+ char *str=XGetAtomName(GDK_DISPLAY(), atom);
+ if(str)
+ DEBUGSTR(msg << " "<<str)
+
+ RELEASE_CAPTURE("BAD ATOM!")
+
+ #endif
+}
+
+
+#define WM_STATE_ELEMENTS 1
+
+unsigned long getWMState (Window w)
+{
+ DEBUG_CALL("getWMState")
+
+ unsigned long state=0;
+
+ Display *display=GDK_DISPLAY();
+ Atom property=XInternAtom(display, "WM_STATE", False);
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long bytes_after;
+ unsigned char *prop_value;
+
+ int res=XGetWindowProperty(display, w, property, 0L, WM_STATE_ELEMENTS, false, property,
+ &actual_type, &actual_format, &nitems, &bytes_after,
+ &prop_value);
+
+ if( (res==Success) && (actual_type==property) && (nitems==WM_STATE_ELEMENTS) )
+ {
+ if(prop_value) state=*prop_value;
+ }
+
+ if (prop_value)
+ {
+ XFree ((char *)prop_value);
+ prop_value = NULL;
+ }
+
+ return state;
+}
+
+bool isIconified(Window w)
+{
+ DEBUG_CALL("isIconified")
+ return (getWMState(w) == IconicState);
+}
+
+
+GdkFilterReturn key_filter_func(GdkXEvent *xevent, GdkEvent *event, gpointer data)
+{
+ if(!data || !xevent) return GDK_FILTER_CONTINUE;
+
+ XEvent *e=(XEvent *)xevent;
+
+ if(e->xany.type!=KeyPress) return GDK_FILTER_CONTINUE;
+
+ XKeyEvent *kev=(XKeyEvent *)e;
+ nsTray *tray = (nsTray *)data;
+ PRBool ret = TRUE;
+
+ DEBUGSTR("KEYPRESS EVENT: KEY="<<kev->keycode)
+
+ KeySym ks=XKeycodeToKeysym (GDK_DISPLAY (), (KeyCode)kev->keycode,0);
+ if(ks==NoSymbol) return GDK_FILTER_CONTINUE;
+ char *str=XKeysymToString(ks);
+ if(!str) str=(char *)"-";
+ if(tray->key_callback)tray->key_callback->Call(str, kev->keycode, &ret);
+
+ return GDK_FILTER_CONTINUE;
+}
+
+
+GdkFilterReturn filter_func(GdkXEvent *xevent, GdkEvent *event, gpointer data)
+{
+ if(!data || !xevent) return GDK_FILTER_CONTINUE;
+
+ XEvent *e=(XEvent *)xevent;
+ nsTray *tray = (nsTray *)data;
+
+ Window xwin=e->xany.window;
+ window_state *ws;
+
+ switch(e->xany.type)
+ {
+ case UnmapNotify:
+ if(isIconified(xwin))
+ {
+ FDEBUGSTR("Minimize-Event")
+ if(tray) tray->minimizeEvent();
+ }
+ else
+ FDEBUGSTR("Unmap-Notify")
+ break;
+
+ case ClientMessage:
+
+ if(e->xclient.data.l && tray)
+ {
+ if((Atom)e->xclient.data.l[0]==delete_window)
+ {
+ if(tray->closeEvent())
+ return GDK_FILTER_REMOVE;
+ }
+ }
+
+ break;
+
+ case VisibilityNotify:
+ FDEBUGSTR("VisibilityNotify-NOTIFY")
+
+ //update window visibility state
+ if(tray->handled_windows.count(xwin)>0)
+ {
+ ws=tray->handled_windows[xwin];
+ ws->visibility=e->xvisibility.state;
+ DEBUGSTR("WINDOW: "<<xwin<<" VISIBILITY CHANGED TO: " << ws->visibility);
+ //GdkWindow *win=gdk_window_lookup (xwin);
+ //if(win) gdk_window_get_position(win, &(ws->pos_x), &(ws->pos_y));
+
+ //FDEBUGSTR(" UPDATING WS_STATE:"<<e->xvisibility.state)
+ }
+
+ break;
+
+ default:
+ break;
+
+ }
+
+ return GDK_FILTER_CONTINUE;
+}
+
+
+
+
+void nsTray::minimizeEvent()
+{
+ DEBUG_CALL("minimizeEvent")
+
+ PRBool ret = TRUE;
+ if(block_minimize)
+ {
+ FDEBUGSTR("MINIMIZING TO TRAY")
+
+ if(tray_callback) tray_callback->Call(&ret);
+ else FDEBUGSTR("CALLBACK NOT DEFINED")
+ }
+}
+
+
+bool nsTray::closeEvent()
+{
+ DEBUG_CALL("closeEvent")
+
+ PRBool ret = TRUE;
+ if(block_close)
+ {
+ FDEBUGSTR("CLOSE BLOCKING")
+
+ if(tray_callback) tray_callback->Call(&ret);
+ else FDEBUGSTR("CALLBACK NOT DEFINED")
+
+ return true;
+ }
+
+ return false; //do not block closing
+}
+
+/* void setWindowHandler(in nsIBaseWindow aBaseWindow); */
+NS_IMETHODIMP nsTray::SetWindowHandler(nsIBaseWindow *aBaseWindow)
+{
+ DEBUG_CALL("setWindowHandler")
+
+ nsresult rv;
+
+ NS_ENSURE_ARG_POINTER(aBaseWindow);
+
+ nativeWindow aNativeWindow;
+ rv = aBaseWindow->GetParentNativeWindow(&aNativeWindow);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ CAPTURE_ERRORS()
+
+ GdkWindow *gdk_win=gdk_window_get_toplevel((GdkWindow*) aNativeWindow);
+
+ Window xwin=GDK_WINDOW_XID(gdk_win);
+
+ if(handled_windows.count(xwin)>0) FDEBUGSTR(">>ALREADY HANDLED")
+ else {
+ GdkEventMask m=(GdkEventMask)(GDK_VISIBILITY_NOTIFY_MASK | (long) gdk_window_get_events (gdk_win));
+
+ gdk_window_set_events (gdk_win, m);
+
+ window_state *ws=new window_state;
+ ws->visibility=VisibilityUnobscured;
+
+ handled_windows[xwin]=ws;
+ gdk_window_add_filter (gdk_win, filter_func, this);
+ }
+
+ RELEASE_CAPTURE("Error setting window handler")
+
+ return NS_OK;
+}
+
+
+
+/* boolean addHandledKeyCode (in PRUint64 key_code); */
+NS_IMETHODIMP nsTray::AddHandledKeyCode(PRUint64 key_code, PRBool *_retval) {
+ #ifdef _KEYSYMS_
+
+ CAPTURE_ERRORS()
+
+ KeyCode key=(KeyCode) key_code;
+
+ GdkDisplay *gdkdisplay=gdk_display_get_default();
+
+ gint nscr=gdk_display_get_n_screens(gdkdisplay);
+
+ for (int i=0; i<nscr; i++)
+ {
+ GdkScreen *screen=gdk_display_get_screen(gdkdisplay,i);
+ GdkWindow *rootwin=gdk_screen_get_root_window(screen);
+ XGrabKey( GDK_DISPLAY() , key, AnyModifier, GDK_WINDOW_XID(rootwin), true, GrabModeAsync, GrabModeAsync);
+ gdk_window_add_filter (rootwin, key_filter_func, this);
+ DEBUGSTR("ADDED KEY FILTER FOR KEY " << key_code)
+ }
+
+ RELEASE_CAPTURE("Unable to grab key "<< key_code)
+
+ #endif
+
+ return NS_OK;
+}
+
+/* boolean addHandledKey (in string key_string); */
+NS_IMETHODIMP nsTray::AddHandledKey(const char *key_string, PRBool *_retval) {
+ DEBUG_CALL("addHandledKey")
+
+#ifdef _KEYSYMS_
+ if(!key_string) return NS_OK;
+
+ CAPTURE_ERRORS();
+
+ DEBUGSTR("KEY STRING: "<< key_string)
+
+ KeySym ksym=getKeySymFromString(key_string); //XStringToKeysym
+ DEBUGSTR(ksym);
+
+ if(ksym==NoSymbol) RELEASE_CAPTURE_RETURN("NO_SYMBOL", NS_OK)
+
+ KeyCode key=XKeysymToKeycode(GDK_DISPLAY(), ksym);
+
+ if(!key) RELEASE_CAPTURE_RETURN("NOKEY_CODE",NS_OK)
+
+ PRBool ret=true;
+
+ RELEASE_CAPTURE("Couldn't get grab on key "<< key_string)
+
+ AddHandledKeyCode( (PRUint64)key ,&ret);
+#endif
+
+ return NS_OK;
+}
+
+/* string getKeycodeString (in PRUint64 key_code); */
+NS_IMETHODIMP nsTray::GetKeycodeString(PRUint64 key_code, char **_retval)
+{
+ DEBUG_CALL("getKeyCodeString")
+
+ DEBUGSTR("KEY: " << key_code)
+
+ char *key_string=NULL;
+ KeySym ks=XKeycodeToKeysym (GDK_DISPLAY (), (KeyCode)key_code,0);
+ if(ks==NoSymbol) key_string=(char*)"unknown";
+ key_string=XKeysymToString(ks);
+
+ DEBUGSTR("KEY: " << key_string)
+
+ if(!_retval) return NS_ERROR_NULL_POINTER;
+
+// *_retval = (char*) nsMemory::Clone(key_string, sizeof(char)*(strlen(key_string)+1));
+
+ char *tmp = (char*) nsMemory::Alloc(4);//nsMemory::Clone("pippo", 5);
+ if(!tmp) DEBUGSTR("CLONE FAILED!!!")
+
+ return *_retval ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
+}
+
+
+
+
+
+/* boolean getFocusState(in nsIBaseWindow aBaseWindow); */
+NS_IMETHODIMP nsTray::GetFocusState(nsIBaseWindow *aBaseWindow, PRBool *_retval)
+{
+ DEBUG_CALL("getFocusState")
+
+ *_retval=false;
+ nsresult rv;
+
+ NS_ENSURE_ARG_POINTER(aBaseWindow);
+
+ nativeWindow aNativeWindow;
+ rv = aBaseWindow->GetParentNativeWindow(&aNativeWindow);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ CAPTURE_ERRORS()
+
+ GdkWindow *gdk_win=gdk_window_get_toplevel((GdkWindow*) aNativeWindow);
+
+ //XWindowAttributes res;
+
+ Window xwin=GDK_WINDOW_XID(gdk_win);
+
+ int vst=-1;
+
+ window_state *ws=handled_windows[xwin];
+ if(ws)
+ { vst=ws->visibility; *_retval = ws->visibility == 0; DEBUGSTR(" GOT VIS.STATE")}
+ else
+ *_retval = TRUE;
+
+ DEBUGSTR("GET_FOCUS_STATE: xwin="<< xwin << " vstate: "<<vst)
+
+ if(*_retval)DEBUGSTR(" RETVAL: TRUE")
+ //else DEBUGSTR(" RETVAL: FALSE")
+
+
+
+// XGetWindowAttributes(GDK_DISPLAY(), xwin, &res);
+
+
+ //DEBUGSTR("MAP-STATE "<<res.map_state)
+
+
+ RELEASE_CAPTURE("Error getting window focus state")
+/*
+
+ GtkWidget *w=(GtkWidget *)get_gtkwindow_from_gdkwindow(gdk_win);
+
+ if(GTK_WIDGET_HAS_FOCUS(w)) *_retval=true;*/
+
+ return NS_OK;
+}
+
+
+
+
diff --git a/components/nsTray.h b/components/nsTray.h
new file mode 100644
index 0000000..b5e7611
--- /dev/null
+++ b/components/nsTray.h
@@ -0,0 +1,96 @@
+#ifndef _TRAY_H_
+#define _TRAY_H_
+
+#include <map>
+
+#include <gtk/gtk.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <pango/pango.h>
+#include <glib-object.h>
+#include <gtk/gtksignal.h>
+// REMOVE NOTIFY #include <libnotify/notify.h>
+#include <X11/Xlib.h>
+
+#include "nsITray.h"
+#include "nsCOMPtr.h"
+
+#define NS_ITRAY_CONTRACTID "@mozilla.org/FireTray;1"
+#define NS_ITRAY_CLASSNAME "System Tray for Firefox"
+#define NS_ITRAY_CID { 0xbf249f85, 0x20f2, 0x49be, { 0x96, 0xf3, 0x96, 0x81, 0xf3, 0xbb, 0x03, 0x34 } }
+#define NS_NOTIFY_TIME 2500
+
+//#define Point std::pair<gint,gint>
+
+struct window_state //keeps needed window information ...
+{
+
+ bool valid;
+
+ int visibility; // VisibilityUnobscured, VisibilityPartiallyObscured, or VisibilityFullyObscured.
+
+ int pos_x; //save the position of the window
+ int pos_y;
+
+ int width;
+ int height;
+
+ window_state()
+ {
+ valid=false;
+ }
+
+};
+
+/* Header file */
+class nsTray : public nsITray {
+public:
+ NS_DECL_ISUPPORTS
+ NS_DECL_NSITRAY
+
+ nsTray();
+
+ nsCOMPtr<nsITrayCallback> tray_callback;
+ nsCOMPtr<nsIScrollCallback> scroll_callback;
+ nsCOMPtr<nsIKeySymCallback> key_callback;
+
+
+ std::map <PRUint64, nsCOMPtr<nsITrayCallback> > item_callback_list;
+ std::map<Window,window_state *> handled_windows;
+
+ static void activate(GtkStatusIcon*, gpointer);
+ static gboolean scroll(GtkStatusIcon *status_icon, GdkEventScroll *event, gpointer user_data);
+ static void popup(GtkStatusIcon*, guint, guint, gpointer);
+ static void item_event(GtkWidget *, gpointer);
+ static void menu_remove_all_callback(GtkWidget *, gpointer);
+
+ void minimizeEvent();
+ bool closeEvent();
+
+private:
+
+ void AddMenuItemCallback(PRUint64 item,nsITrayCallback *aCallback);
+ void RemoveMenuItemCallback(PRUint64 item);
+ bool SetIcon(const char *filename, GdkPixbuf *& icon);
+ ~nsTray();
+
+ bool block_close;
+ bool block_minimize;
+
+ GtkStatusIcon *systray_icon;
+
+ GdkPixbuf *default_icon;
+ GdkPixbuf *special_icon;
+
+ GdkPixbuf *icon;
+
+ GtkWidget *pop_menu;
+ PangoLayout *layout;
+
+// REMOVE NOTIFY NotifyNotification *sys_notification;
+
+
+protected:
+ /* additional members */
+};
+
+#endif //_TRAY_H_
diff --git a/components/nsTrayModule.cpp b/components/nsTrayModule.cpp
new file mode 100644
index 0000000..359c0b6
--- /dev/null
+++ b/components/nsTrayModule.cpp
@@ -0,0 +1,53 @@
+#ifdef GECKO_2
+ #include "mozilla/ModuleUtils.h"
+#else // GECKO_2
+ #include "nsIGenericFactory.h"
+#endif // GECKO_2
+
+#include "nsTray.h"
+
+NS_GENERIC_FACTORY_CONSTRUCTOR(nsTray)
+
+#ifdef GECKO_2
+
+NS_DEFINE_NAMED_CID(NS_ITRAY_CID);
+
+static const mozilla::Module::CIDEntry kTrayCIDs[] = {
+ { &kNS_ITRAY_CID, false, NULL, nsTrayConstructor },
+ { NULL }
+};
+
+static const mozilla::Module::ContractIDEntry kTrayContracts[] = {
+ { NS_ITRAY_CONTRACTID, &kNS_ITRAY_CID },
+ { NULL }
+};
+
+static const mozilla::Module::CategoryEntry kTrayCategories[] = {
+ { NULL }
+};
+
+static const mozilla::Module kTrayModule = {
+ mozilla::Module::kVersion,
+ kTrayCIDs,
+ kTrayContracts,
+ kTrayCategories
+};
+
+NSMODULE_DEFN(nsTrayModule) = &kTrayModule;
+NS_IMPL_MOZILLA192_NSGETMODULE(&kTrayModule)
+
+#else // GECKO_2
+
+static nsModuleComponentInfo components[] =
+{
+ {
+ NS_ITRAY_CLASSNAME,
+ NS_ITRAY_CID,
+ NS_ITRAY_CONTRACTID,
+ nsTrayConstructor,
+ }
+};
+
+NS_IMPL_NSGETMODULE("nsTrayModule", components)
+
+#endif // GECKO_2
\ No newline at end of file
diff --git a/components/pixmaps/chatzilla.xpm b/components/pixmaps/chatzilla.xpm
new file mode 100644
index 0000000..86b3f38
--- /dev/null
+++ b/components/pixmaps/chatzilla.xpm
@@ -0,0 +1,207 @@
+/* XPM */
+static const char * chatzilla_xpm[] = {
+"64 64 140 2",
+" c None",
+". c #4C5864",
+"+ c #4A5763",
+"@ c #374552",
+"# c #3D4B57",
+"$ c #515D68",
+"% c #5B6771",
+"& c #5A6570",
+"* c #46535F",
+"= c #384653",
+"- c #6F7982",
+"; c #CBCFD2",
+"> c #EBECED",
+", c #F5F6F6",
+"' c #F4F5F6",
+") c #DDE0E2",
+"! c #949BA2",
+"~ c #69747E",
+"{ c #424F5B",
+"] c #CDD0D4",
+"^ c #FFFFFF",
+"/ c #E3E5E7",
+"( c #4E5A66",
+"_ c #43505C",
+": c #7B848D",
+"< c #FAFBFB",
+"[ c #FDFDFD",
+"} c #737D86",
+"| c #67717B",
+"1 c #FCFCFC",
+"2 c #FEFEFE",
+"3 c #868F96",
+"4 c #414E5B",
+"5 c #56626D",
+"6 c #44515E",
+"7 c #8E969D",
+"8 c #8C959C",
+"9 c #B3B8BD",
+"0 c #5B6670",
+"a c #4C5964",
+"b c #7E8790",
+"c c #B1B7BC",
+"d c #D9DBDE",
+"e c #DCDFE1",
+"f c #F0F1F2",
+"g c #D8DBDD",
+"h c #ADB2B8",
+"i c #59646F",
+"j c #3C4956",
+"k c #899299",
+"l c #394754",
+"m c #485460",
+"n c #4F5C67",
+"o c #D4D7DA",
+"p c #CED1D4",
+"q c #90979F",
+"r c #BBC0C4",
+"s c #646F79",
+"t c #E7E8EA",
+"u c #626D77",
+"v c #3B4956",
+"w c #838C94",
+"x c #ECEDEF",
+"y c #A0A7AD",
+"z c #E4E5E7",
+"A c #7A848C",
+"B c #959DA3",
+"C c #A9AFB4",
+"D c #F7F8F8",
+"E c #3F4C59",
+"F c #CACDD1",
+"G c #6B757F",
+"H c #A1A7AE",
+"I c #8F979E",
+"J c #68737D",
+"K c #525E69",
+"L c #EBEDEE",
+"M c #5A6671",
+"N c #E1E3E5",
+"O c #BCC0C5",
+"P c #505C68",
+"Q c #404D59",
+"R c #4A5762",
+"S c #525F6A",
+"T c #B9BEC3",
+"U c #DBDDE0",
+"V c #ADB3B8",
+"W c #F9F9FA",
+"X c #3A4855",
+"Y c #8C949B",
+"Z c #7F8890",
+"` c #3D4A57",
+" . c #6C7780",
+".. c #6E7881",
+"+. c #D2D5D8",
+"@. c #475460",
+"#. c #55616C",
+"$. c #DCDEE0",
+"%. c #C5C9CD",
+"&. c #BEC2C7",
+"*. c #828B93",
+"=. c #C3C7CB",
+"-. c #B0B5BA",
+";. c #58646E",
+">. c #818A92",
+",. c #899199",
+"'. c #6F7A83",
+"). c #EAEBED",
+"!. c #B5BABF",
+"~. c #66717B",
+"{. c #F2F3F3",
+"]. c #717B84",
+"^. c #DFE1E3",
+"/. c #8D959D",
+"(. c #69747D",
+"_. c #6D7781",
+":. c #535F6A",
+"<. c #AEB4B9",
+"[. c #878F97",
+"}. c #5D6973",
+"|. c #4B5763",
+"1. c #737C86",
+"2. c #EFF0F1",
+"3. c #57636E",
+"4. c #E5E7E9",
+"5. c #D9DCDE",
+"6. c #747E87",
+"7. c #B4BABF",
+"8. c #AFB5BA",
+"9. c #B8BDC1",
+"0. c #C9CDD0",
+"a. c #B8BDC2",
+"b. c #77818A",
+"c. c #9DA4AA",
+"d. c #CACED2",
+"e. c #44525D",
+"f. c #78828A",
+"g. c #848C94",
+"h. c #9FA5AC",
+"i. c #D3D6D9",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . + + + + + + + + + + + + + + + + + + + + + + ",
+" @ # $ % % % % % % % % % % % % % % % % % % % % % & * ",
+" = - ; > , , , , , , , , , , , , , , , , , , , , , ' ) ! = ~ ",
+" . { ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ( _ ",
+" @ : < ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ } @ ",
+" . { ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ( _ ",
+" + | @ : < ^ ^ ^ ^ ^ ^ ^ 1 , , , , , , , 2 ^ ^ ^ ^ ^ ^ ^ ^ ^ [ ! = 3 ",
+" 4 { 5 % % % & 6 @ @ _ . { ] ^ ^ ^ ^ ^ ^ ^ , 7 % % % % % % 8 , ^ ^ ^ ^ ^ ^ ^ ^ ^ 9 4 0 ",
+" . @ a b c d e f , , , ' g h b i j @ : < ^ ^ ^ ^ ^ ^ , k l m @ @ n o ^ ^ ^ ^ ^ ^ ^ ^ ^ p n * ",
+" ~ @ a q ) 2 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 2 f r s = + . { ] ^ ^ ^ ^ ^ ^ , k l 4 4 9 ^ ^ ^ ^ ^ ^ ^ ^ ^ t u v ",
+" + j w ) 2 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ x y 4 @ : < ^ ^ ^ ^ ^ z A l l B [ ^ ^ ^ ^ ^ ^ ^ ^ , w @ ",
+" 4 C D ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ [ C j @ E F ^ ^ ^ ^ ^ z G @ @ A , ^ ^ ^ ^ ^ ^ ^ ^ [ H l ",
+" @ I [ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ' J @ K L ^ ^ ^ ^ z G @ ~ = M N ^ ^ ^ ^ ^ ^ ^ ^ ^ O 4 P ",
+" @ u t ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ r j j r ^ ^ ^ z G @ ~ Q R F ^ ^ ^ ^ ^ ^ ^ ^ ^ o K Q ",
+" R ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ > S @ & T U T u @ E V 2 ^ ^ ^ ^ ^ ^ ^ ^ t J = ",
+" q 2 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ W , 1 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 2 : @ @ X 4 X @ = Y < ^ ^ ^ ^ ^ ^ ^ ^ , w @ ",
+" R ) ^ ^ ^ ^ ^ ^ ^ ^ ^ o Y G % Z z ^ ^ ^ ^ ^ ^ ^ ^ ^ 1 } ` @ .x ^ ^ ^ ^ ^ ^ ^ ^ [ H l .. ",
+" } 1 ^ ^ ^ ^ ^ ^ ^ [ 9 n @ ` m @ .x ^ ^ ^ ^ ^ ^ ^ ^ +. at . v #.$.^ ^ ^ ^ ^ ^ ^ ^ ^ %.6 P ",
+" @ H ^ ^ ^ ^ ^ ^ ^ ^ &.4 * = *.t ^ ^ ^ ^ ^ ^ N J . * 6 %.^ ^ ^ ^ ^ ^ ^ ^ ^ $.#.v ",
+" @ 9 ^ ^ ^ ^ ^ ^ ^ x s = @ u c d U =.-.k ;.@ 0 l H [ ^ ^ ^ ^ ^ ^ ^ ^ x .@ ",
+" X =.^ ^ ^ ^ ^ ^ ^ r = >. = 4 4 X @ @ @ w , ^ ^ ^ ^ ^ ^ ^ ^ D ,.= ",
+" 4 U ^ ^ ^ ^ ^ ^ ^ H @ @ J t ^ ^ ^ ^ ^ ^ ^ ^ [ C j ~ = 6 '.i ",
+" 4 d ^ ^ ^ ^ ^ ^ ^ B @ v n o ^ ^ ^ ^ ^ ^ ^ ^ ^ %.6 + l w g < ).! = ",
+" = r ^ ^ ^ ^ ^ ^ ^ !.@ 6 w ~. * 4 9 ^ ^ ^ ^ ^ ^ ^ ^ ^ N M v l k , ^ ^ ^ ).i ",
+" @ 9 ^ ^ ^ ^ ^ ^ ^ ) a . @ M %.[ ^ ^ {.B 4 + 0 l B [ ^ ^ ^ ^ ^ ^ ^ ^ {.].@ l k , ^ ^ ^ ^ < '. ",
+" @ B ^ ^ ^ ^ ^ ^ ^ 2 B = Q ;.^.^ ^ ^ ^ ^ [ !.{ ~ @ A , ^ ^ ^ ^ ^ ^ ^ ^ < /.l k , ^ ^ ^ ^ ^ g 6 ",
+" . (.D ^ ^ ^ ^ ^ ^ ^ x _.= ` :.: 0 X <.^ ^ ^ ^ ^ ^ ^ D .= @ M N ^ ^ ^ ^ ^ ^ ^ ^ 2 V E A , ^ ^ ^ ^ ^ < [.@ ",
+" { ] ^ ^ ^ ^ ^ ^ ^ ^ x B }.|.# { 1.2.^ ^ ^ ^ ^ ^ ^ ^ H @ 3.v R F ^ ^ ^ ^ ^ ^ ^ ^ ^ F R @ @ G z ^ ^ ^ ^ ^ ^ ] { Q ",
+" = : < ^ ^ ^ ^ ^ ^ ^ ^ 2 , 4.; r 5.' ^ ^ ^ ^ ^ ^ ^ ^ W _.@ @ E V 2 ^ ^ ^ ^ ^ ^ ^ ^ N M @ @ @ @ @ @ G z ^ ^ ^ ^ ^ ^ < : @ ",
+" 6.E 9 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / |.@ = Y < ^ ^ ^ ^ ^ ^ ^ ^ [ 7.w w w w w w I z ^ ^ ^ ^ ^ ^ ^ ] { Q ",
+" v n o ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 8.= @ 1.2.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ < : @ 7 ",
+" @ J z ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ o K @ = 9.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ] { Q ",
+" @ G z ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ N J @ v # 0.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ < : @ 7 ",
+" ..@ u r ' ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ D a.M @ b. @ c.2 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ d.{ e. ",
+" = j J r f 2 ^ ^ ^ ^ ^ ^ ^ ^ ^ D ] f.j v * @.g.-.9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 h.#.= ",
+" ` j i : B 9 !.i.U ; 9 -.Y (.{ @ * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ = ",
+" _ @ @ @ @ Q 4 # @ @ @ ` ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/components/pixmaps/dove.xpm b/components/pixmaps/dove.xpm
new file mode 100644
index 0000000..1258c9e
--- /dev/null
+++ b/components/pixmaps/dove.xpm
@@ -0,0 +1,1868 @@
+/* XPM */
+static const char * dove_xpm[] = {
+"63 64 1801 2",
+" c None",
+". c #92AFD8",
+"+ c #7298CD",
+"@ c #4375BC",
+"# c #2760B4",
+"$ c #225EB3",
+"% c #2F67B8",
+"& c #3D71BD",
+"* c #497AC1",
+"= c #5482C4",
+"- c #5C87C7",
+"; c #618AC9",
+"> c #648DCA",
+", c #668FCB",
+"' c #648ECA",
+") c #618BC9",
+"! c #5D88C7",
+"~ c #5683C5",
+"{ c #4C7CC2",
+"] c #4174BE",
+"^ c #326AB9",
+"/ c #245FB4",
+"( c #245EB1",
+"_ c #3D70BB",
+": c #6B93CB",
+"< c #9EB8DC",
+"[ c #82A4D1",
+"} c #5280C1",
+"| c #3067B6",
+"1 c #2560B4",
+"2 c #3067B8",
+"3 c #5280C4",
+"4 c #608BC9",
+"5 c #6B93CC",
+"6 c #749AD0",
+"7 c #7CA0D2",
+"8 c #82A3D4",
+"9 c #86A6D5",
+"0 c #88A8D6",
+"a c #89A9D7",
+"b c #8AAAD7",
+"c c #89A9D6",
+"d c #7EA1D1",
+"e c #7DA1D0",
+"f c #7BA0D0",
+"g c #6590C0",
+"h c #6690C3",
+"i c #638DC9",
+"j c #5582C5",
+"k c #4677C0",
+"l c #356BBA",
+"m c #2660B4",
+"n c #2E66B6",
+"o c #4879BD",
+"p c #7399CD",
+"q c #799DCC",
+"r c #4476BA",
+"s c #205BB0",
+"t c #245EB4",
+"u c #336AB9",
+"v c #4879C1",
+"w c #5B87C7",
+"x c #6A92CC",
+"y c #779CD1",
+"z c #82A4D5",
+"A c #8AAAD8",
+"B c #92B0DB",
+"C c #98B5DD",
+"D c #9CB8DE",
+"E c #9FB9DF",
+"F c #A1BCDF",
+"G c #A3BCE0",
+"H c #A2BBE0",
+"I c #90AFD7",
+"J c #B8CEE4",
+"K c #D9E5F1",
+"L c #B0C8DE",
+"M c #86A9CF",
+"N c #6B94B7",
+"O c #799DD1",
+"P c #6D95CD",
+"Q c #5F89C8",
+"R c #4A7BC1",
+"S c #386EBB",
+"T c #2761B4",
+"U c #225DB2",
+"V c #3B6FBA",
+"W c #628CC7",
+"X c #B3C9E4",
+"Y c #93B0D8",
+"Z c #376BB6",
+"` c #1754AE",
+" . c #1C59B1",
+".. c #356BBB",
+"+. c #5C88C7",
+"@. c #7DA0D3",
+"#. c #92B0DA",
+"$. c #9BB6DD",
+"%. c #A1BBE0",
+"&. c #A7BFE1",
+"*. c #ACC2E3",
+"=. c #AFC5E4",
+"-. c #B0C6E4",
+";. c #B2C8E5",
+">. c #B3C8E6",
+",. c #B3C7E5",
+"'. c #92AFD0",
+"). c #8EAFD0",
+"!. c #F1F5FA",
+"~. c #FDFDFE",
+"{. c #F2F6FA",
+"]. c #AEC7E1",
+"^. c #7097C3",
+"/. c #85A6D4",
+"(. c #7EA1D3",
+"_. c #6892C8",
+":. c #608BC8",
+"<. c #507EC3",
+"[. c #225EB4",
+"}. c #1654AF",
+"|. c #346AB8",
+"1. c #638DC8",
+"2. c #9CB7DC",
+"3. c #6B92C9",
+"4. c #2C64B6",
+"5. c #2660B5",
+"6. c #346ABA",
+"7. c #4275BF",
+"8. c #5684C6",
+"9. c #6991CC",
+"0. c #789CD1",
+"a. c #86A7D6",
+"b. c #91AFDB",
+"c. c #9AB6DE",
+"d. c #A9C0E2",
+"e. c #ADC3E3",
+"f. c #B2C7E5",
+"g. c #B6CAE6",
+"h. c #B8CCE7",
+"i. c #B9CDE7",
+"j. c #BBCDE8",
+"k. c #BBCEE8",
+"l. c #B8CCE4",
+"m. c #85A8C6",
+"n. c #BFD3E7",
+"o. c #FEFEFF",
+"p. c #FFFFFF",
+"q. c #FAFCFD",
+"r. c #B3C9E1",
+"s. c #7CA0CA",
+"t. c #749AC9",
+"u. c #7EA3C7",
+"v. c #769CCC",
+"w. c #6792C0",
+"x. c #5985C6",
+"y. c #4577C0",
+"z. c #2E67B8",
+"A. c #1453AE",
+"B. c #1553AD",
+"C. c #507FC1",
+"D. c #88A8D4",
+"E. c #3F72BC",
+"F. c #1553AE",
+"G. c #1B58B1",
+"H. c #3D72BD",
+"I. c #5E89C9",
+"J. c #7097CE",
+"K. c #7298CF",
+"L. c #7B9FD2",
+"M. c #88A8D7",
+"N. c #93B1DB",
+"O. c #9CB8DF",
+"P. c #A4BDE1",
+"Q. c #AAC1E3",
+"R. c #B0C5E4",
+"S. c #B3C8E5",
+"T. c #B7CBE7",
+"U. c #BACDE8",
+"V. c #BBCFE8",
+"W. c #BDD0E9",
+"X. c #BED0E9",
+"Y. c #BED1E9",
+"Z. c #AAC2DA",
+"`. c #7DA0C8",
+" + c #E4ECF6",
+".+ c #F6F9FC",
+"++ c #B6CCE3",
+"@+ c #6791C1",
+"#+ c #C9DAED",
+"$+ c #BBCFE4",
+"%+ c #82A6CC",
+"&+ c #6E95CD",
+"*+ c #5D89C8",
+"=+ c #3068B9",
+"-+ c #1957B0",
+";+ c #0E4EAB",
+">+ c #82A5D4",
+",+ c #789DCB",
+"'+ c #255FB1",
+")+ c #094AAA",
+"!+ c #1857B1",
+"~+ c #3067B9",
+"{+ c #497AC2",
+"]+ c #5E8AC9",
+"^+ c #7DA1D3",
+"/+ c #98B4DD",
+"(+ c #99B5DD",
+"_+ c #9DB8DF",
+":+ c #B5CAE6",
+"<+ c #BACEE8",
+"[+ c #BCCFE9",
+"}+ c #A4BED5",
+"|+ c #ACC4DE",
+"1+ c #F8FAFD",
+"2+ c #FBFCFE",
+"3+ c #AFC8E3",
+"4+ c #BDD2E8",
+"5+ c #CBDBED",
+"6+ c #658FBE",
+"7+ c #7097CF",
+"8+ c #346BBA",
+"9+ c #1E5AB2",
+"0+ c #0A4CAA",
+"a+ c #1C58AF",
+"b+ c #638EC9",
+"c+ c #6991CA",
+"d+ c #1B55AE",
+"e+ c #0648A9",
+"f+ c #1A57B1",
+"g+ c #3169BA",
+"h+ c #4679C1",
+"i+ c #6C95CD",
+"j+ c #7A9FD3",
+"k+ c #97B3DC",
+"l+ c #C3D4EB",
+"m+ c #D6E1F1",
+"n+ c #BDCEE9",
+"o+ c #A9C1E3",
+"p+ c #B3C9E5",
+"q+ c #B9CDE8",
+"r+ c #BACEE9",
+"s+ c #BBCEE9",
+"t+ c #BCCEE9",
+"u+ c #B1C7E2",
+"v+ c #92B0CD",
+"w+ c #DDE8F4",
+"x+ c #A9C4E2",
+"y+ c #EFF4FA",
+"z+ c #A4BFDF",
+"A+ c #779CCF",
+"B+ c #6F97CF",
+"C+ c #5C89C8",
+"D+ c #4A7BC2",
+"E+ c #1C58B2",
+"F+ c #084AAA",
+"G+ c #104FAB",
+"H+ c #5886C6",
+"I+ c #B4CAE6",
+"J+ c #5C89C9",
+"K+ c #1252AC",
+"L+ c #0548A9",
+"M+ c #1353AF",
+"N+ c #336ABB",
+"O+ c #4577C1",
+"P+ c #5684C7",
+"Q+ c #6992CD",
+"R+ c #779DD2",
+"S+ c #83A6D6",
+"T+ c #95B2DC",
+"U+ c #CDDAEE",
+"V+ c #F6F8FC",
+"W+ c #E3EBF6",
+"X+ c #B6CBE8",
+"Y+ c #ACC3E4",
+"Z+ c #AFC6E4",
+"`+ c #B1C8E5",
+" @ c #B4C9E6",
+".@ c #B6CBE6",
+"+@ c #B7CCE7",
+"@@ c #B6CCE7",
+"#@ c #B5C9E6",
+"$@ c #BCD0E8",
+"%@ c #D7E4F1",
+"&@ c #DAE6F2",
+"*@ c #D9E4F1",
+"=@ c #83A6D3",
+"-@ c #799ED2",
+";@ c #6992CC",
+">@ c #5886C7",
+",@ c #4779C1",
+"'@ c #2F67B9",
+")@ c #1756B0",
+"!@ c #0648A8",
+"~@ c #0D4DAA",
+"{@ c #5585C6",
+"]@ c #AFC7E5",
+"^@ c #638FCB",
+"/@ c #0D4DAB",
+"(@ c #0447A9",
+"_@ c #1252AF",
+":@ c #2761B7",
+"<@ c #4678C1",
+"[@ c #5583C6",
+"}@ c #628DCA",
+"|@ c #7399D0",
+"1@ c #7EA2D4",
+"2@ c #88A9D8",
+"3@ c #94B2DC",
+"4@ c #AFC5E5",
+"5@ c #DBE5F4",
+"6@ c #F3F7FB",
+"7@ c #D8E3F3",
+"8@ c #B4C9E7",
+"9@ c #ADC5E4",
+"0@ c #AEC5E5",
+"a@ c #AFC6E5",
+"b@ c #B0C7E5",
+"c@ c #B2C8E6",
+"d@ c #B1C7E5",
+"e@ c #B0C6E5",
+"f@ c #8BACD2",
+"g@ c #D4E2EF",
+"h@ c #FCFDFE",
+"i@ c #F9FBFD",
+"j@ c #98B4D7",
+"k@ c #7EA3D0",
+"l@ c #7BA1CF",
+"m@ c #628DC8",
+"n@ c #4175BF",
+"o@ c #2A64B7",
+"p@ c #1453AF",
+"q@ c #0447A8",
+"r@ c #084BAA",
+"s@ c #4E81C6",
+"t@ c #6F97D1",
+"u@ c #114FAD",
+"v@ c #0245A8",
+"w@ c #0E4EAE",
+"x@ c #215EB5",
+"y@ c #366EBC",
+"z@ c #5281C6",
+"A@ c #5F8BCA",
+"B@ c #6A93CE",
+"C@ c #82A5D6",
+"D@ c #8BABD9",
+"E@ c #A7BFE2",
+"F@ c #D3E0F1",
+"G@ c #EDF2F9",
+"H@ c #D0DDF0",
+"I@ c #AEC5E6",
+"J@ c #A8C1E4",
+"K@ c #A9C2E4",
+"L@ c #AAC2E4",
+"M@ c #ABC3E4",
+"N@ c #ACC3E3",
+"O@ c #ABC2E4",
+"P@ c #88AAC6",
+"Q@ c #92B2D4",
+"R@ c #F7F9FC",
+"S@ c #CDDCEE",
+"T@ c #A3BFDF",
+"U@ c #B3CAE0",
+"V@ c #5E8AB8",
+"W@ c #5F8AC9",
+"X@ c #4D7EC4",
+"Y@ c #396FBD",
+"Z@ c #255FB6",
+"`@ c #0F4FAD",
+" # c #0245A7",
+".# c #0247A9",
+"+# c #5084C8",
+"@# c #84A7DB",
+"## c #1C59B3",
+"$# c #084BAB",
+"%# c #1958B2",
+"&# c #2E67BA",
+"*# c #4075C0",
+"=# c #5986C8",
+"-# c #6590CC",
+";# c #6E96D0",
+"># c #7BA0D3",
+",# c #8EADDA",
+"'# c #A7C0E2",
+")# c #C0D1EA",
+"!# c #ADC4E5",
+"~# c #D4DFF1",
+"{# c #E7EEF7",
+"]# c #C3D3EC",
+"^# c #A7C0E3",
+"/# c #A4BEE2",
+"(# c #A4BFE3",
+"_# c #A5BFE3",
+":# c #A5BFE2",
+"<# c #A6BFE2",
+"[# c #A3BEE2",
+"}# c #7299B9",
+"|# c #D2E0F0",
+"1# c #DFE9F4",
+"2# c #A9C4E1",
+"3# c #E0EAF4",
+"4# c #7DA2D1",
+"5# c #648ECB",
+"6# c #4477C0",
+"7# c #326ABA",
+"8# c #1D5AB2",
+"9# c #0B4DAC",
+"0# c #0347A9",
+"a# c #0E51AF",
+"b# c #6D9AD3",
+"c# c #94B0DD",
+"d# c #2D67BB",
+"e# c #0346A8",
+"f# c #0548AA",
+"g# c #1152AF",
+"h# c #2461B7",
+"i# c #376EBD",
+"j# c #487AC2",
+"k# c #6A94CE",
+"l# c #7098D0",
+"m# c #7BA0D4",
+"n# c #83A6D5",
+"o# c #8DAED9",
+"p# c #A4BFE2",
+"q# c #B9CCE8",
+"r# c #A9C1E4",
+"s# c #D5E0F2",
+"t# c #E0E8F4",
+"u# c #A1BCE1",
+"v# c #9EBAE0",
+"w# c #9FBBE0",
+"x# c #9FBBE1",
+"y# c #A0BBE1",
+"z# c #90B1D4",
+"A# c #ADC6E1",
+"B# c #ACC7E2",
+"C# c #EDF3F9",
+"D# c #8DAECC",
+"E# c #5E8AC0",
+"F# c #5B8ABA",
+"G# c #4074BF",
+"H# c #3069B9",
+"I# c #1E5BB3",
+"J# c #1151AE",
+"K# c #0C4DAC",
+"L# c #2B68BB",
+"M# c #87ADDC",
+"N# c #96B7DA",
+"O# c #467DC5",
+"P# c #0549AB",
+"Q# c #0448AA",
+"R# c #0B4DAD",
+"S# c #1B59B3",
+"T# c #3F74C0",
+"U# c #4E7FC4",
+"V# c #608CCA",
+"W# c #6D96CF",
+"X# c #7199D1",
+"Y# c #7AA0D4",
+"Z# c #80A4D6",
+"`# c #87AAD8",
+" $ c #92B1DB",
+".$ c #97B4DE",
+"+$ c #95B2DD",
+"@$ c #92B2DC",
+"#$ c #94B3DD",
+"$$ c #A4BEE3",
+"%$ c #D2DEF1",
+"&$ c #98B7DF",
+"*$ c #99B7DF",
+"=$ c #99B6DF",
+"-$ c #98B6DF",
+";$ c #97B5DE",
+">$ c #91B1D9",
+",$ c #7DA2C2",
+"'$ c #E5EDF6",
+")$ c #C7D9EC",
+"!$ c #BED1E6",
+"~$ c #6C96CC",
+"{$ c #618DCB",
+"]$ c #5A88C9",
+"^$ c #5382C7",
+"/$ c #4C7CC3",
+"($ c #3F73BE",
+"_$ c #3168B9",
+":$ c #235EB4",
+"<$ c #1F5BB4",
+"[$ c #4E82C8",
+"}$ c #BCD0EB",
+"|$ c #7099D6",
+"1$ c #1254B2",
+"2$ c #0347AA",
+"3$ c #084AAC",
+"4$ c #1152B0",
+"5$ c #235FB6",
+"6$ c #356CBD",
+"7$ c #4478C2",
+"8$ c #5181C6",
+"9$ c #608CCB",
+"0$ c #6E96CF",
+"a$ c #7198D0",
+"b$ c #789ED3",
+"c$ c #7DA3D6",
+"d$ c #82A6D7",
+"e$ c #86A9D8",
+"f$ c #89ABD9",
+"g$ c #8BACD9",
+"h$ c #8CADDB",
+"i$ c #8EAEDB",
+"j$ c #91B0DC",
+"k$ c #AAC2E5",
+"l$ c #D2DEF0",
+"m$ c #BED0EA",
+"n$ c #92B2DD",
+"o$ c #92B1DD",
+"p$ c #91B1DC",
+"q$ c #8FAFDA",
+"r$ c #86A9C9",
+"s$ c #D0DEEE",
+"t$ c #F2F6FB",
+"u$ c #CEDDED",
+"v$ c #759DD0",
+"w$ c #6892CC",
+"x$ c #6892C9",
+"y$ c #6B94CE",
+"z$ c #658FCC",
+"A$ c #4073BD",
+"B$ c #336CBC",
+"C$ c #99BADF",
+"D$ c #2464BB",
+"E$ c #064AAC",
+"F$ c #0B4EAD",
+"G$ c #1757B2",
+"H$ c #2864B8",
+"I$ c #3971BF",
+"J$ c #467AC3",
+"K$ c #5383C7",
+"L$ c #5F8CCA",
+"M$ c #6F98D0",
+"N$ c #759DD3",
+"O$ c #7AA1D5",
+"P$ c #7EA3D6",
+"Q$ c #81A6D6",
+"R$ c #84A7D8",
+"S$ c #88ABD9",
+"T$ c #8AACDA",
+"U$ c #8EAFDC",
+"V$ c #ACC5E5",
+"W$ c #CDDBEE",
+"X$ c #8BAEDB",
+"Y$ c #8CAFDB",
+"Z$ c #8DAFDB",
+"`$ c #8CAEDB",
+" % c #8BADDA",
+".% c #8CADDA",
+"+% c #7FA3D2",
+"@% c #B4CAE1",
+"#% c #D5E2F0",
+"$% c #7DA2D3",
+"%% c #6F98CF",
+"&% c #799ED1",
+"*% c #83A6D7",
+"=% c #81A3D5",
+"-% c #7399CF",
+";% c #608AC8",
+">% c #346AB9",
+",% c #427DCB",
+"'% c #0649AA",
+")% c #094CAC",
+"!% c #1051AF",
+"~% c #1D5CB5",
+"{% c #2D68BB",
+"]% c #3C73BF",
+"^% c #487BC4",
+"/% c #5D8BCA",
+"(% c #6994CF",
+"_% c #6D97D0",
+":% c #7099D1",
+"<% c #79A0D4",
+"[% c #7CA2D6",
+"}% c #7EA4D6",
+"|% c #7FA5D7",
+"1% c #81A6D8",
+"2% c #82A7D8",
+"3% c #83A7D9",
+"4% c #84A8D9",
+"5% c #87ABDA",
+"6% c #B9CDE9",
+"7% c #8DAEDB",
+"8% c #89ACDA",
+"9% c #86AAD9",
+"0% c #85A9D9",
+"a% c #85A8D9",
+"b% c #A7C1E3",
+"c% c #769CC8",
+"d% c #759CC7",
+"e% c #83A6D4",
+"f% c #9BB7DF",
+"g% c #A8C0E3",
+"h% c #9BB6DE",
+"i% c #6D95CE",
+"j% c #4879C0",
+"k% c #76A5D3",
+"l% c #1257B5",
+"m% c #0447AA",
+"n% c #084AAB",
+"o% c #0B4EAE",
+"p% c #1454B1",
+"q% c #215FB7",
+"r% c #2F6ABC",
+"s% c #3D74C0",
+"t% c #5182C7",
+"u% c #5A89CA",
+"v% c #6591CD",
+"w% c #6C96D0",
+"x% c #6B96D0",
+"y% c #7099D2",
+"z% c #749CD2",
+"A% c #779FD4",
+"B% c #78A0D5",
+"C% c #7DA3D7",
+"D% c #7EA4D7",
+"E% c #7FA5D8",
+"F% c #ABC4E5",
+"G% c #A6C1E3",
+"H% c #8DAFDC",
+"I% c #91B2DD",
+"J% c #93B3DF",
+"K% c #94B3DE",
+"L% c #90B2DE",
+"M% c #8BAEDC",
+"N% c #86ABDA",
+"O% c #83A8D8",
+"P% c #80A6D8",
+"Q% c #7EA5D7",
+"R% c #95B5DC",
+"S% c #EEF4F9",
+"T% c #D9E5F2",
+"U% c #AEC8E3",
+"V% c #8CACD3",
+"W% c #B1C6E6",
+"X% c #DCE5F3",
+"Y% c #AEC4E4",
+"Z% c #4B82CE",
+"`% c #0649AB",
+" & c #074AAB",
+".& c #0A4BAC",
+"+& c #0F50AF",
+"@& c #1757B3",
+"#& c #2361B8",
+"$& c #316BBD",
+"%& c #3D74C1",
+"&& c #477BC4",
+"*& c #5082C7",
+"=& c #5888C9",
+"-& c #618ECC",
+";& c #6A94CF",
+">& c #6793CF",
+",& c #6B95D0",
+"'& c #6E98D1",
+")& c #719AD2",
+"!& c #729BD3",
+"~& c #759DD4",
+"{& c #769ED5",
+"]& c #779FD5",
+"^& c #77A0D5",
+"/& c #78A1D5",
+"(& c #7BA2D7",
+"_& c #7DA4D7",
+":& c #8BADDB",
+"<& c #BCD1EB",
+"[& c #A5C0E4",
+"}& c #9EBCE2",
+"|& c #A4BFE4",
+"1& c #94B5DF",
+"2& c #7AA2D6",
+"3& c #78A1D6",
+"4& c #759ED5",
+"5& c #85A9D6",
+"6& c #EAF1F8",
+"7& c #D8E4F1",
+"8& c #CFDEEF",
+"9& c #A6C0E1",
+"0& c #DFE8F5",
+"a& c #E9EFF8",
+"b& c #8FAEDA",
+"c& c #7499D0",
+"d& c #659ADB",
+"e& c #2263BC",
+"f& c #0A4CAC",
+"g& c #0D4EAE",
+"h& c #1A5AB5",
+"i& c #2563B9",
+"j& c #316CBE",
+"k& c #3C74C1",
+"l& c #457BC4",
+"m& c #4D80C6",
+"n& c #5486C8",
+"o& c #5B8ACB",
+"p& c #6591CE",
+"q& c #6490CE",
+"r& c #6592CF",
+"s& c #6894CF",
+"t& c #6B96D1",
+"u& c #6C97D1",
+"v& c #6D98D2",
+"w& c #6E99D3",
+"x& c #6F9AD3",
+"y& c #709AD4",
+"z& c #729CD4",
+"A& c #7DA5D7",
+"B& c #89ADDB",
+"C& c #ABC5E7",
+"D& c #C9D9EF",
+"E& c #BCCFEA",
+"F& c #BFD1EB",
+"G& c #BED1EB",
+"H& c #B7CDE9",
+"I& c #A8C3E5",
+"J& c #97B7E0",
+"K& c #88ACDB",
+"L& c #7BA3D7",
+"M& c #749FD5",
+"N& c #7CA3D7",
+"O& c #8DAEDC",
+"P& c #8EAFD8",
+"Q& c #E8EFF6",
+"R& c #EAF0F8",
+"S& c #A3BFE0",
+"T& c #BACCE8",
+"U& c #BFD0EA",
+"V& c #B6CAE7",
+"W& c #9EB9E0",
+"X& c #7A9ED3",
+"Y& c #5683C6",
+"Z& c #5C90D5",
+"`& c #0F51B1",
+" * c #094BAB",
+".* c #0C4DAD",
+"+* c #1354B2",
+"@* c #1C5CB6",
+"#* c #2764BA",
+"$* c #3B74C2",
+"%* c #4379C3",
+"&* c #4A7EC6",
+"** c #5183C8",
+"=* c #5687CA",
+"-* c #5F8ECD",
+";* c #618FCD",
+">* c #608FCD",
+",* c #6390CF",
+"'* c #6593D0",
+")* c #6694D0",
+"!* c #6895D0",
+"~* c #6996D1",
+"{* c #6A97D2",
+"]* c #6B97D2",
+"^* c #749ED4",
+"/* c #80A6D9",
+"(* c #93B4DF",
+"_* c #AEC7E7",
+":* c #D0DFF1",
+"<* c #D9E4F4",
+"[* c #D4E1F2",
+"}* c #D4E2F2",
+"|* c #CEDDF0",
+"1* c #A8C3E6",
+"2* c #9AB8E0",
+"3* c #97B6DF",
+"4* c #A0BDE2",
+"5* c #ACC5E6",
+"6* c #B4CAE8",
+"7* c #ADC5E5",
+"8* c #94B3DA",
+"9* c #E8EFF7",
+"0* c #97B6DC",
+"a* c #ADC4E4",
+"b* c #A1BBE1",
+"c* c #87A9D8",
+"d* c #8EB5E0",
+"e* c #3673C6",
+"f* c #094CAD",
+"g* c #0B4CAC",
+"h* c #0E4FAE",
+"i* c #1052B0",
+"j* c #1455B2",
+"k* c #1D5DB6",
+"l* c #306BBE",
+"m* c #3972C1",
+"n* c #4077C3",
+"o* c #467CC5",
+"p* c #4D81C7",
+"q* c #5184C9",
+"r* c #5989CB",
+"s* c #5C8CCC",
+"t* c #5E8DCE",
+"u* c #5F8FCE",
+"v* c #6190CE",
+"w* c #6291CF",
+"x* c #6492D1",
+"y* c #6594D1",
+"z* c #6794D1",
+"A* c #729DD4",
+"B* c #84A9DA",
+"C* c #9CBAE1",
+"D* c #BBD1EB",
+"E* c #D3E0F2",
+"F* c #E8EEF8",
+"G* c #E7EEF8",
+"H* c #E5EDF7",
+"I* c #DFE8F6",
+"J* c #D5E3F3",
+"K* c #C9D9EE",
+"L* c #BACEEA",
+"M* c #86ABDB",
+"N* c #739CD5",
+"O* c #6895D1",
+"P* c #80A6D5",
+"Q* c #EBF1F8",
+"R* c #E9F0F7",
+"S* c #8FB0D7",
+"T* c #86A8D8",
+"U* c #82A5D7",
+"V* c #7BA1D4",
+"W* c #4C7DC4",
+"X* c #346ABB",
+"Y* c #79A2DB",
+"Z* c #1B5DBA",
+"`* c #094AAC",
+" = c #1253B1",
+".= c #1657B2",
+"+= c #1E5EB7",
+"@= c #2765BA",
+"#= c #2F6ABD",
+"$= c #3770C0",
+"%= c #3E75C3",
+"&= c #4379C5",
+"*= c #487EC6",
+"== c #4C81C7",
+"-= c #5688C7",
+";= c #5B8BCC",
+">= c #5789CB",
+",= c #588ACC",
+"'= c #5B8CCD",
+")= c #5C8DCD",
+"!= c #5D8ECE",
+"~= c #5E8FCF",
+"{= c #5F90CF",
+"]= c #6191D0",
+"^= c #709CD5",
+"/= c #85ABDB",
+"(= c #A2BEE5",
+"_= c #C5D6EE",
+":= c #DAE6F4",
+"<= c #E5EDF8",
+"[= c #D0DEF1",
+"}= c #ADC6E7",
+"|= c #84AADB",
+"1= c #6C99D3",
+"2= c #6393D1",
+"3= c #6190D0",
+"4= c #6090CF",
+"5= c #8CB0DA",
+"6= c #F0F4FA",
+"7= c #C0D3E7",
+"8= c #6893C3",
+"9= c #5D8BCB",
+"0= c #5686C9",
+"a= c #487BC3",
+"b= c #336BBC",
+"c= c #235EB6",
+"d= c #558BD5",
+"e= c #0F52B2",
+"f= c #1455B1",
+"g= c #1859B4",
+"h= c #1F5FB8",
+"i= c #2E6ABD",
+"j= c #356FC0",
+"k= c #3A73C3",
+"l= c #3F77C4",
+"m= c #457BC5",
+"n= c #4C80C7",
+"o= c #5587CB",
+"p= c #5387CA",
+"q= c #5688CB",
+"r= c #578ACC",
+"s= c #578ACD",
+"t= c #598CCE",
+"u= c #5A8DCE",
+"v= c #5C8DCF",
+"w= c #6091D0",
+"x= c #6B99D4",
+"y= c #80A8D9",
+"z= c #A4C0E5",
+"A= c #D1DFF2",
+"B= c #F5F9FC",
+"C= c #EEF4FA",
+"D= c #DBE6F4",
+"E= c #C2D4ED",
+"F= c #A3BFE4",
+"G= c #82A8DA",
+"H= c #6B98D4",
+"I= c #5C8ECF",
+"J= c #6292D0",
+"K= c #B3CAE7",
+"L= c #8EAFD7",
+"M= c #5D8CCD",
+"N= c #447AC4",
+"O= c #4479C3",
+"P= c #4177C2",
+"Q= c #3A72C0",
+"R= c #306ABC",
+"S= c #1857B2",
+"T= c #3173C9",
+"U= c #0C4EAE",
+"V= c #0C4CAC",
+"W= c #1655AA",
+"X= c #2562A4",
+"Y= c #1557B2",
+"Z= c #2060B8",
+"`= c #2765BB",
+" - c #2D6ABD",
+".- c #336EC0",
+"+- c #3872C2",
+"@- c #3C75C4",
+"#- c #417AC5",
+"$- c #447CC6",
+"%- c #477EC7",
+"&- c #4E83C9",
+"*- c #5286CA",
+"=- c #4F84C9",
+"-- c #5185CA",
+";- c #5286CB",
+">- c #5387CC",
+",- c #5489CC",
+"'- c #568ACD",
+")- c #5689CD",
+"!- c #6C99D4",
+"~- c #A0BDE3",
+"{- c #CFDDF0",
+"]- c #E0E9F7",
+"^- c #E2ECF7",
+"/- c #ECF2F9",
+"(- c #F7F9FD",
+"_- c #EAF0F9",
+":- c #BED2EC",
+"<- c #9EBCE3",
+"[- c #7CA5D9",
+"}- c #6694D2",
+"|- c #5B8ECF",
+"1- c #588BCC",
+"2- c #79A0CD",
+"3- c #E1EBF5",
+"4- c #D4E1F0",
+"5- c #6D96C7",
+"6- c #6895CD",
+"7- c #6391C9",
+"8- c #3E75BF",
+"9- c #5A89C4",
+"0- c #5585C1",
+"a- c #2B67A5",
+"b- c #1D61BE",
+"c- c #0B4CAD",
+"d- c #0E4EAD",
+"e- c #5281B4",
+"f- c #81A5CB",
+"g- c #316AB9",
+"h- c #1B5CB6",
+"i- c #2162B9",
+"j- c #2867BC",
+"k- c #2E6CBE",
+"l- c #346FC0",
+"m- c #3771C2",
+"n- c #3A74C3",
+"o- c #3E77C5",
+"p- c #407AC6",
+"q- c #437CC7",
+"r- c #477FC8",
+"s- c #4E84CA",
+"t- c #4B82C9",
+"u- c #4D83CB",
+"v- c #4D84CB",
+"w- c #4F86CB",
+"x- c #548ACD",
+"y- c #6493D2",
+"z- c #8FB0DE",
+"A- c #BBCFEB",
+"B- c #B8CDEA",
+"C- c #A4C1E5",
+"D- c #B6CDEA",
+"E- c #CEDEF0",
+"F- c #DEE9F6",
+"G- c #E6EEF8",
+"H- c #ECF3F9",
+"I- c #C9DAEF",
+"J- c #AEC8E8",
+"K- c #90B3DF",
+"L- c #719DD5",
+"M- c #5E90D0",
+"N- c #568ACE",
+"O- c #5A8CCD",
+"P- c #B2C9E3",
+"Q- c #FEFFFF",
+"R- c #BED3E8",
+"S- c #ADC6E2",
+"T- c #5280B9",
+"U- c #8CAED5",
+"V- c #CADAEC",
+"W- c #CDDCEC",
+"X- c #7BA1C7",
+"Y- c #2B65AF",
+"Z- c #175AB9",
+"`- c #1B59A6",
+" ; c #9DB9D9",
+".; c #D3E0EE",
+"+; c #4D7FB9",
+"@; c #2160B7",
+"#; c #2665BB",
+"$; c #2D6ABE",
+"%; c #326EC0",
+"&; c #3772C2",
+"*; c #3973C3",
+"=; c #3A74C4",
+"-; c #3B76C4",
+";; c #3D77C5",
+">; c #3F79C6",
+",; c #417BC7",
+"'; c #4880C9",
+"); c #467EC9",
+"!; c #4981CA",
+"~; c #5388CC",
+"{; c #6D9BD4",
+"]; c #8EB2DE",
+"^; c #A5C1E5",
+"/; c #94B5E0",
+"(; c #6A99D5",
+"_; c #6091D2",
+":; c #79A3D8",
+"<; c #9FBFE4",
+"[; c #B8CEEB",
+"}; c #C8DAEF",
+"|; c #D0DFF2",
+"1; c #D3E1F2",
+"2; c #E0E9F6",
+"3; c #B9CFEB",
+"4; c #97B8E1",
+"5; c #7CA6DA",
+"6; c #6495D2",
+"7; c #558BCE",
+"8; c #5085C6",
+"9; c #7FA4CE",
+"0; c #8DAFD6",
+"a; c #CBDAEC",
+"b; c #DDE8F3",
+"c; c #CCDBEB",
+"d; c #4378BD",
+"e; c #1356B5",
+"f; c #0D4EAD",
+"g; c #4075AA",
+"h; c #D5E1EE",
+"i; c #ECF1F7",
+"j; c #799EC0",
+"k; c #2966B8",
+"l; c #2C69BD",
+"m; c #336FC0",
+"n; c #3973C2",
+"o; c #3C76C3",
+"p; c #3C77C4",
+"q; c #3D77C4",
+"r; c #3C77C5",
+"s; c #3B77C5",
+"t; c #3C78C6",
+"u; c #427CC8",
+"v; c #4F85CC",
+"w; c #709CD6",
+"x; c #8DB1DE",
+"y; c #94B6E0",
+"z; c #80A8DA",
+"A; c #6192D2",
+"B; c #4B84CC",
+"C; c #4C84CB",
+"D; c #588CCF",
+"E; c #6999D5",
+"F; c #84ABDC",
+"G; c #99B9E2",
+"H; c #A9C5E7",
+"I; c #B2CBE9",
+"J; c #B0C9E9",
+"K; c #BFD4ED",
+"L; c #BBD1EC",
+"M; c #80A8DB",
+"N; c #6898D4",
+"O; c #578DCF",
+"P; c #4E86CD",
+"Q; c #6896C9",
+"R; c #D1DFEE",
+"S; c #D7E4F2",
+"T; c #A4C0DF",
+"U; c #EAF1F7",
+"V; c #D2DFEE",
+"W; c #5382BB",
+"X; c #1254B3",
+"Y; c #608CC5",
+"Z; c #F6F8FB",
+"`; c #A0BAD9",
+" > c #3A74AD",
+".> c #467DC6",
+"+> c #497FC8",
+"@> c #487FC8",
+"#> c #457DC7",
+"$> c #3B77C6",
+"%> c #407BC7",
+"&> c #7FA6D9",
+"*> c #A7C3E6",
+"=> c #7BA5D9",
+"-> c #548BCF",
+";> c #4781CB",
+">> c #4580CB",
+",> c #4780CB",
+"'> c #4A83CB",
+")> c #5086CC",
+"!> c #598DD0",
+"~> c #79A3DA",
+"{> c #85ACDD",
+"]> c #8DB1DF",
+"^> c #8CB1DF",
+"/> c #8AAFDE",
+"(> c #B3CBEA",
+"_> c #81A9DC",
+":> c #588CD0",
+"<> c #4F87CD",
+"[> c #6092CF",
+"}> c #C1D4EA",
+"|> c #BDD1E8",
+"1> c #B5CDE5",
+"2> c #DEE8F3",
+"3> c #E7EEF6",
+"4> c #F0F4F9",
+"5> c #CBD9EA",
+"6> c #7299C6",
+"7> c #1153B2",
+"8> c #0F50AE",
+"9> c #6D96CA",
+"0> c #F9FAFC",
+"a> c #FEFEFE",
+"b> c #C5D6E9",
+"c> c #4378BC",
+"d> c #437AC4",
+"e> c #5486CA",
+"f> c #6391D0",
+"g> c #5B8CCE",
+"h> c #5085CA",
+"i> c #4B82CA",
+"j> c #8CB0DE",
+"k> c #C4D7EE",
+"l> c #D8E5F3",
+"m> c #5D91D1",
+"n> c #4581CA",
+"o> c #4480CB",
+"p> c #4681CB",
+"q> c #4881CB",
+"r> c #4A83CC",
+"s> c #4B84CD",
+"t> c #5087CE",
+"u> c #578DD0",
+"v> c #5F92D2",
+"w> c #6596D4",
+"x> c #6595D4",
+"y> c #84ABDD",
+"z> c #97B8E2",
+"A> c #5A8ED1",
+"B> c #5D90CF",
+"C> c #FAFBFD",
+"D> c #FDFEFE",
+"E> c #91B3D9",
+"F> c #C9DAEC",
+"G> c #EEF3F9",
+"H> c #F4F7FB",
+"I> c #A7C1DE",
+"J> c #C7D7EA",
+"K> c #1153B1",
+"L> c #6E97CA",
+"M> c #EEF3F8",
+"N> c #6790BF",
+"O> c #5586C9",
+"P> c #709AD2",
+"Q> c #84A9D9",
+"R> c #85A9DA",
+"S> c #7AA3D7",
+"T> c #7AA2D7",
+"U> c #91B3DE",
+"V> c #E3ECF7",
+"W> c #86ACDC",
+"X> c #5787BE",
+"Y> c #5F8FCA",
+"Z> c #6A97CF",
+"`> c #6C99D0",
+" , c #6291CB",
+"., c #4F82BE",
+"+, c #4A83C9",
+"@, c #4D85CE",
+"#, c #4F86CE",
+"$, c #5189CF",
+"%, c #548BD0",
+"&, c #578DD1",
+"*, c #598ED1",
+"=, c #578CD1",
+"-, c #6193D4",
+";, c #96B7E2",
+">, c #7CA5D7",
+",, c #B6CCE5",
+"', c #C2D6EA",
+"), c #95B6DA",
+"!, c #ECF2F8",
+"~, c #F5F8FB",
+"{, c #E9EFF7",
+"], c #C7D8EB",
+"^, c #2562B7",
+"/, c #5987C0",
+"(, c #7EA2CE",
+"_, c #8BADD4",
+":, c #6692CE",
+"<, c #8CAEDC",
+"[, c #AAC4E6",
+"}, c #B0C8E7",
+"|, c #B8CEEA",
+"1, c #D2E0F2",
+"2, c #ECF1F9",
+"3, c #B1CAE8",
+"4, c #6A9AD4",
+"5, c #6090C8",
+"6, c #A4BED9",
+"7, c #DDE6F1",
+"8, c #E3EBF4",
+"9, c #B7CBE1",
+"0, c #729BCA",
+"a, c #4A7FB8",
+"b, c #4F88CF",
+"c, c #5088CF",
+"d, c #5289D0",
+"e, c #538AD0",
+"f, c #548AD1",
+"g, c #729ED5",
+"h, c #B5CCE5",
+"i, c #FDFDFF",
+"j, c #D0DFEF",
+"k, c #C4D7EA",
+"l, c #CCDCED",
+"m, c #B0C8E3",
+"n, c #E2EAF4",
+"o, c #F8FAFC",
+"p, c #6490AE",
+"q, c #C8D8EA",
+"r, c #93B3D7",
+"s, c #F7F9FB",
+"t, c #BCCFE3",
+"u, c #618DB8",
+"v, c #A3BFE1",
+"w, c #CEDCF0",
+"x, c #D5E1F2",
+"y, c #E2EAF6",
+"z, c #DCE8F2",
+"A, c #9EBCE1",
+"B, c #578BCE",
+"C, c #6995CB",
+"D, c #CDDBEC",
+"E, c #99B6D5",
+"F, c #5788C1",
+"G, c #5289CE",
+"H, c #538BD0",
+"I, c #548CD1",
+"J, c #538BD1",
+"K, c #6495D0",
+"L, c #B5CBE4",
+"M, c #F8FBFD",
+"N, c #E0EAF5",
+"O, c #BCD1E8",
+"P, c #C6D8EB",
+"Q, c #E3EBF5",
+"R, c #FCFDFD",
+"S, c #6491AB",
+"T, c #DDE7F2",
+"U, c #B0C8E2",
+"V, c #E7EEF5",
+"W, c #7EA3CC",
+"X, c #A1BDDE",
+"Y, c #DEE8F5",
+"Z, c #E9F0F8",
+"`, c #EDF2FA",
+" ' c #99B9E1",
+".' c #628FC7",
+"+' c #BDD0E5",
+"@' c #EBF1F7",
+"#' c #92B0D0",
+"$' c #578DCD",
+"%' c #568ED1",
+"&' c #578ED1",
+"*' c #568DD2",
+"=' c #568ED2",
+"-' c #5D90CE",
+";' c #A8C2DF",
+">' c #FBFCFD",
+",' c #DDE7F3",
+"'' c #B4CCE5",
+")' c #B6CDE6",
+"!' c #CDDDEE",
+"~' c #D8E5F2",
+"{' c #E2ECF5",
+"]' c #61929E",
+"^' c #D4E1EF",
+"/' c #E6EDF6",
+"(' c #DCE7F2",
+"_' c #A6BFDD",
+":' c #90AFD8",
+"<' c #CADAEF",
+"[' c #B4CBE9",
+"}' c #6F9CD6",
+"|' c #588DCF",
+"1' c #97B5D6",
+"2' c #E2E5E9",
+"3' c #B4BDC7",
+"4' c #F5F7F9",
+"5' c #E7ECF1",
+"6' c #B4BBC3",
+"7' c #EFF0F1",
+"8' c #D6E2EF",
+"9' c #6591C4",
+"0' c #578FD3",
+"a' c #588FD3",
+"b' c #588FD4",
+"c' c #5B8ECC",
+"d' c #91B1D6",
+"e' c #DBE6F3",
+"f' c #C5D8EB",
+"g' c #C2D5EA",
+"h' c #EDF3F8",
+"i' c #E1EAF4",
+"j' c #3671BD",
+"k' c #C0D2E6",
+"l' c #D8E3F0",
+"m' c #6C98A9",
+"n' c #91B3DF",
+"o' c #729ED6",
+"p' c #6092D2",
+"q' c #5685BC",
+"r' c #D2DBE6",
+"s' c #878889",
+"t' c #566576",
+"u' c #778593",
+"v' c #F6F9FB",
+"w' c #7F878F",
+"x' c #54687E",
+"y' c #767878",
+"z' c #F8F9FB",
+"A' c #93B2D5",
+"B' c #5D93CF",
+"C' c #5A92D5",
+"D' c #5B92D5",
+"E' c #6194D1",
+"F' c #8DADD1",
+"G' c #E4ECF5",
+"H' c #D3E1F0",
+"I' c #F5F9FB",
+"J' c #2B69BA",
+"K' c #93B0D0",
+"L' c #F3F6FA",
+"M' c #A8C0DC",
+"N' c #6390C1",
+"O' c #719DD6",
+"P' c #5F91D1",
+"Q' c #568BCE",
+"R' c #7FA5D2",
+"S' c #F3F4F4",
+"T' c #929394",
+"U' c #373A3E",
+"V' c #708498",
+"W' c #EFF4F9",
+"X' c #75828F",
+"Y' c #40454A",
+"Z' c #949495",
+"`' c #A5C0DC",
+" ) c #6694B6",
+".) c #5D94D6",
+"+) c #5E95D7",
+"@) c #6795CC",
+"#) c #C2D4E9",
+"$) c #4074B7",
+"%) c #769CC6",
+"&) c #DCE6F1",
+"*) c #7CA2C8",
+"=) c #5A8DCF",
+"-) c #5389CD",
+";) c #4B82B9",
+">) c #98B7D5",
+",) c #EAEBEC",
+"') c #CCCED1",
+")) c #D7E1EC",
+"!) c #E7EBF0",
+"~) c #F1F4F7",
+"{) c #DCE3EA",
+"]) c #CED2D5",
+"^) c #ECEEEF",
+"/) c #BDD0E6",
+"() c #5685B9",
+"_) c #6097D7",
+":) c #689BD9",
+"<) c #91B1D5",
+"[) c #F1F6FA",
+"}) c #F0F5FA",
+"|) c #E7EFF7",
+"1) c #DCE7F3",
+"2) c #FCFCFD",
+"3) c #5987BA",
+"4) c #A7C2DF",
+"5) c #A1BEDD",
+"6) c #F7FAFC",
+"7) c #DCE5F1",
+"8) c #6692C8",
+"9) c #4C82C9",
+"0) c #4B83CC",
+"a) c #4C84CC",
+"b) c #497EBC",
+"c) c #B6CBE1",
+"d) c #EDF1F5",
+"e) c #A7B3BE",
+"f) c #71777A",
+"g) c #778085",
+"h) c #C5D0DB",
+"i) c #FAFCFC",
+"j) c #D3E0EF",
+"k) c #5887C1",
+"l) c #6A9DDA",
+"m) c #759DC7",
+"n) c #C9D9EC",
+"o) c #DBE5F0",
+"p) c #4F83A8",
+"q) c #AFC6DF",
+"r) c #BDD1E7",
+"s) c #D3E1EF",
+"t) c #BCCFE4",
+"u) c #6B96CA",
+"v) c #4982C9",
+"w) c #4883CC",
+"x) c #5386C4",
+"y) c #CDDBEB",
+"z) c #FBFCFC",
+"A) c #DBE0E6",
+"B) c #8F979D",
+"C) c #B7C0C7",
+"D) c #DFE9F3",
+"E) c #6996C9",
+"F) c #6EA0DC",
+"G) c #6F9ACC",
+"H) c #DBE6F2",
+"I) c #D5E2F1",
+"J) c #FAFBFC",
+"K) c #DBE5F1",
+"L) c #A4BDD5",
+"M) c #5D8AB7",
+"N) c #427AAA",
+"O) c #6D98CC",
+"P) c #759FCF",
+"Q) c #477FB4",
+"R) c #5285C3",
+"S) c #E8ECF0",
+"T) c #749ECF",
+"U) c #699DDB",
+"V) c #82A9D6",
+"W) c #F4F8FB",
+"X) c #C9D8EA",
+"Y) c #A4BDDA",
+"Z) c #6C98AD",
+"`) c #3971B3",
+" ! c #4079BD",
+".! c #9AB6D5",
+"+! c #90B1D3",
+"@! c #6F98C7",
+"#! c #BBCEE5",
+"$! c #8CAECD",
+"%! c #5F92C4",
+"&! c #89AFD9",
+"*! c #D7E3F1",
+"=! c #D6E3F1",
+"-! c #F3F7FA",
+";! c #C8D8E9",
+">! c #85A7D0",
+",! c #658FBF",
+"'! c #4B7FAD",
+")! c #4B7EB6",
+"!! c #4C84CE",
+"~! c #4A7DBF",
+"{! c #DEE8F4",
+"]! c #C3D6EB",
+"^! c #C1D3E7",
+"/! c #6794CA",
+"(! c #7DA5D2",
+"_! c #9CB7D2",
+":! c #3E76B8",
+"<! c #6792BE",
+"[! c #4B86D1",
+"}! c #2867BE",
+"|! c #769CCA",
+"1! c #C8D9EB",
+"2! c #EFF5F9",
+"3! c #C1D5EA",
+"4! c #9BB7D7",
+"5! c #739CC9",
+"6! c #E4EDF6",
+"7! c #99B6CF",
+"8! c #86A8D0",
+"9! c #4B89D4",
+"0! c #3D7AA4",
+"a! c #A4BEDB",
+"b! c #BAD0E6",
+"c! c #F8F9FC",
+"d! c #C0D4E9",
+"e! c #CFDEED",
+"f! c #95B3CC",
+"g! c #A4BDCD",
+"h! c #4C88AF",
+"i! c #4889A0",
+"j! c #86A9C8",
+"k! c #EBF2F8",
+"l! c #E5EDF5",
+"m! c #8BAEC4",
+"n! c #B9CBDC",
+"o! c #4982BB",
+"p! c #4384D3",
+"q! c #477DB8",
+"r! c #9BB7D6",
+"s! c #E9EFF6",
+"t! c #EDF2F8",
+"u! c #E6EEF6",
+"v! c #EFF3F8",
+"w! c #769FC3",
+"x! c #BFCFE1",
+"y! c #4B82C2",
+"z! c #4F8FDB",
+"A! c #3878C9",
+"B! c #457CB0",
+"C! c #7DA2C0",
+"D! c #C6D7E9",
+"E! c #F5F8FC",
+"F! c #C5D7EB",
+"G! c #638FC8",
+"H! c #6B9CD5",
+"I! c #609DE4",
+"J! c #4484D2",
+"K! c #3473C6",
+"L! c #2D6BBF",
+"M! c #4177A7",
+"N! c #6D96BD",
+"O! c #A4BFDD",
+"P! c #E2EBF5",
+"Q! c #DBE7F3",
+"R! c #CEDEEE",
+"S! c #D1E0EF",
+"T! c #DAE4F0",
+"U! c #5080BD",
+"V! c #6FA0BE",
+"W! c #69A3DD",
+"X! c #5190DB",
+"Y! c #417FCE",
+"Z! c #3572C4",
+"`! c #3671BC",
+" ~ c #6B96B2",
+".~ c #A9C1DE",
+"+~ c #F0F5F9",
+"@~ c #A9C2DB",
+"#~ c #76A8DD",
+"$~ c #5C9AE1",
+"%~ c #4B89D5",
+"&~ c #3D7BCB",
+"*~ c #AFC6E1",
+"=~ c #ECF1F8",
+"-~ c #E8F0F7",
+";~ c #E2EBF4",
+">~ c #DEE9F4",
+",~ c #D8E5F1",
+"'~ c #D4E2F0",
+")~ c #90B3D7",
+"!~ c #70A9E9",
+"~~ c #5796DF",
+"{~ c #4887D4",
+"]~ c #437FC8",
+"^~ c #96B5D1",
+"/~ c #E1EAF5",
+"(~ c #CEDEED",
+"_~ c #BFD2E7",
+":~ c #97B6D8",
+"<~ c #B9CFE7",
+"[~ c #8DB7E6",
+"}~ c #71A8E7",
+"|~ c #5494DC",
+"1~ c #4785CC",
+"2~ c #4C83B2",
+"3~ c #6B97CE",
+"4~ c #9BB7DA",
+"5~ c #AFC5E0",
+"6~ c #A3BDDA",
+"7~ c #8DACCF",
+"8~ c #739CC0",
+"9~ c #5786BD",
+"0~ c #6F97C5",
+"a~ c #CBDCED",
+"b~ c #BFD4E9",
+"c~ c #F9FBFC",
+"d~ c #98B4D5",
+"e~ c #D5E3F1",
+"f~ c #ADCFF3",
+"g~ c #63A0E4",
+"h~ c #5190DA",
+"i~ c #4583D0",
+"j~ c #3C7AC9",
+"k~ c #437AC3",
+"l~ c #4B80C5",
+"m~ c #487DC3",
+"n~ c #4379BF",
+"o~ c #437BBB",
+"p~ c #4C7FBF",
+"q~ c #A2BDDB",
+"r~ c #C8DAEC",
+"s~ c #FDFDFD",
+"t~ c #D3DFEE",
+"u~ c #A8C9E7",
+"v~ c #7CB1EC",
+"w~ c #609CE2",
+"x~ c #5290D9",
+"y~ c #4785D0",
+"z~ c #407CC9",
+"A~ c #3F79C7",
+"B~ c #407AC8",
+"C~ c #427BC8",
+"D~ c #5385C3",
+"E~ c #ABC4DF",
+"F~ c #EBF0F7",
+"G~ c #90AFD2",
+"H~ c #ADCBEA",
+"I~ c #74ACEA",
+"J~ c #5E9BE1",
+"K~ c #5490D9",
+"L~ c #4A87D1",
+"M~ c #437FCB",
+"N~ c #427EC9",
+"O~ c #447FCA",
+"P~ c #457FC9",
+"Q~ c #497FBF",
+"R~ c #6894BA",
+"S~ c #9CB9D9",
+"T~ c #A6C0DE",
+"U~ c #A2BEDC",
+"V~ c #9DB9DA",
+"W~ c #90B1D5",
+"X~ c #B9CDE2",
+"Y~ c #6DA8E9",
+"Z~ c #609BE0",
+"`~ c #5692D9",
+" { c #4D89D2",
+".{ c #4884CD",
+"+{ c #4982CB",
+"@{ c #4D85CC",
+"#{ c #4C84BD",
+"${ c #5588C8",
+"%{ c #749FD2",
+"&{ c #729ED2",
+"*{ c #568BCA",
+"={ c #558AC9",
+"-{ c #7AA1CF",
+";{ c #F3F6FB",
+">{ c #EAF0F7",
+",{ c #E3ECF5",
+"'{ c #D5E1EF",
+"){ c #C1D4E8",
+"!{ c #9AC3EF",
+"~{ c #6FA9E9",
+"{{ c #629DE1",
+"]{ c #5995DA",
+"^{ c #538ED4",
+"/{ c #4E88CF",
+"({ c #4E87CD",
+"_{ c #5088CE",
+":{ c #6F9ED7",
+"<{ c #6B9BD7",
+"[{ c #558DD1",
+"}{ c #528AD1",
+"|{ c #548CD2",
+"1{ c #5B8DB8",
+"2{ c #97B5D4",
+"3{ c #F4F7FA",
+"4{ c #84B7EE",
+"5{ c #71ABEA",
+"6{ c #66A0E3",
+"7{ c #5F9ADD",
+"8{ c #5B95D8",
+"9{ c #5B92D4",
+"0{ c #6396D5",
+"a{ c #6C9CD8",
+"b{ c #6094D4",
+"c{ c #558CD2",
+"d{ c #568ED3",
+"e{ c #578FD4",
+"f{ c #5890D5",
+"g{ c #5688BC",
+"h{ c #A1BCD8",
+"i{ c #F2F5FA",
+"j{ c #E7EFF6",
+"k{ c #D4E0EE",
+"l{ c #83B5EE",
+"m{ c #73ACEB",
+"n{ c #6BA4E4",
+"o{ c #6FA4E1",
+"p{ c #71A4DF",
+"q{ c #6B9EDB",
+"r{ c #5E94D6",
+"s{ c #5A91D5",
+"t{ c #5C94D7",
+"u{ c #5D94D7",
+"v{ c #5C94D5",
+"w{ c #618FC5",
+"x{ c #AAC2DC",
+"y{ c #CFDDED",
+"z{ c #BBD4F0",
+"A{ c #96C1F0",
+"B{ c #89BAEF",
+"C{ c #83B4EA",
+"D{ c #70A6E3",
+"E{ c #669EDE",
+"F{ c #6199DB",
+"G{ c #5E96D7",
+"H{ c #5D95D7",
+"I{ c #6097D8",
+"J{ c #6198D9",
+"K{ c #6298DA",
+"L{ c #6298D7",
+"M{ c #618FC4",
+"N{ c #A1BCD9",
+"O{ c #F5F8FA",
+"P{ c #D3E0F0",
+"Q{ c #BCCFE5",
+"R{ c #92BDE8",
+"S{ c #81B6EE",
+"T{ c #75ADE9",
+"U{ c #70A8E5",
+"V{ c #6DA4E2",
+"W{ c #6AA1E0",
+"X{ c #689FDE",
+"Y{ c #669DDC",
+"Z{ c #669CDC",
+"`{ c #6299D9",
+" ] c #6097D9",
+".] c #6DA2E0",
+"+] c #5C8AB5",
+"@] c #92B1D1",
+"#] c #D2DFED",
+"$] c #E0E9F4",
+"%] c #D8E4F2",
+"&] c #D2E0EF",
+"*] c #CFDEEE",
+"=] c #D2E1F0",
+"-] c #D4DFED",
+";] c #82ACC7",
+">] c #A5C8EA",
+",] c #89BAED",
+"'] c #77AEE8",
+")] c #74AAE6",
+"!] c #72A8E4",
+"~] c #71A6E3",
+"{] c #6DA3E0",
+"]] c #649BDA",
+"^] c #659BDB",
+"/] c #679DDC",
+"(] c #689EDD",
+"_] c #6A9FDE",
+":] c #6596CC",
+"<] c #7AA0BE",
+"[] c #84A7C8",
+"}] c #9EB9D6",
+"|] c #E4EDF5",
+"1] c #D1DFEF",
+"2] c #DFE8F3",
+"3] c #BFD1E6",
+"4] c #97B4D3",
+"5] c #86BAF0",
+"6] c #84B8EF",
+"7] c #7DB3EC",
+"8] c #7AB0EA",
+"9] c #79AFE8",
+"0] c #76ACE5",
+"a] c #6AA0DD",
+"b] c #6CA1DF",
+"c] c #70A4E0",
+"d] c #74A8E2",
+"e] c #77AAE3",
+"f] c #7AA7CC",
+"g] c #94B5C9",
+"h] c #9FC0E3",
+"i] c #7097BA",
+"j] c #88A8CF",
+"k] c #D6E2F0",
+"l] c #F1F5F9",
+"m] c #B6CCE4",
+"n] c #A0BBDA",
+" . + @ # $ % & * = - ; > , , ' ) ! ~ { ] ^ / ( _ : < ",
+" [ } | 1 2 ] 3 4 5 6 7 8 9 0 a b c d e f g h i j k l m n o p ",
+" q r s t u v w x y z A B C D E F G G H I J K L M N O P Q R S T U V W X ",
+" Y Z ` ...R +.P @.a #.$.%.&.*.=.-.;.>.>.,.'.).!.~.{.].^./.(._.:.<.S [.}.|.1. ",
+" 2.3.4.5.6.7.8.9.0.a.b.c.H d.e.f.g.h.i.j.k.k.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.A.B.C. ",
+" D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Y.Y.W.Z.`. +p.p..+++ at +#+$+%+&+*+* =+-+;+| >+ ",
+" ,+'+)+!+~+{+]+^+/+(+_+E P.Q.=.S.:+h.<+[+W.W.X.X.X.W.[+}+|+1+p.p.2+3+4+2+5+6+7+4 R 8+9+0+a+b+ ",
+" c+d+e+f+g+h+*+i+j+k+l+m+n+o+*.-.p+:+T.q+U.r+s+t+t+s+r+r+u+v+w+o.p.p.{.x+y+p.z+A+B+C+D+l E+F+G+H+I+ ",
+" J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+`+p+ @. at T.+@+ at h.h.+@+@@@.@#@$@.+p.p.o.%@&@p.*@=@-@;@>@,@'@)@!@~@{@]@ ",
+" ^@/@(@_@:@<@[@}@|@1 at 2@3 at 4@5 at 6@7 at 8@Y+9 at 0@a at b@`+c at c@c at c@c at c@`+d at e@f at g@p.p.p.h at i@p.6 at j@k at l@m@[@n at o@p at q@r at s@ ",
+" t at u@v at w@x at y@z at A@B at -@C at D@c.E at e@F at G@H at I@J at K@L at M@M at N@N at N@N at N@Y+M at O@L at P@Q at R@p.p.p.p.p.p.S at T@U at V@W at X@Y at Z@`@ #.#+# ",
+" @### #$#%#&#*#=#-#;#>#S+,#'#)#8@!#~#{#]#^#/#(#_#:#:#<#<#<#:#:#:#:#/#[#}#|#p.p.p.p.p.p.1#2#3#4#5#[@6#7#8#9#0#a#b# ",
+" c#d#e#f#g#h#i#j#]+k#l#m#n#o#p#q#M at O.r#s#t#8 at u#v#w#x#x#y#y#x#x#x#w#w#v#v#z#A#~.p.p.p.p.p..+B#C#D#E#F#X at G#H#I#J#K#L#M#",
+" N#O#P#Q#R#S#&#T#U#V#W#X#Y#Z#`# $.$+$@$#$$$%$H@^#&$*$*$*$*$*$*$*$*$*$=$-$;$>$,$'$p.p.p.p.p.p.)$i@!$~${$]$^$/$($_$:$<$[$",
+" }$|$1$2$3$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$i$j$k$l$m$*$n$n$n$n$n$n$n$n$n$n$o$p$q$r$s$p.p.p.p.p.p.t$o.u$v$w$x$y$y$z$x., at A$B$",
+" C$D$Q#E$F$G$H$I$J$K$L$W#M$N$O$P$Q$R$e$S$f$T$U$V$W$:#X$Y$Z$Z$Z$Z$Y$`$`$`$h$ %.%+%@%h at p.p.p.p.p.p.p.#%$%%%&%*%D at D@=%-%;%>%",
+" ,%P#'%)%!%~%{%]%^%K$/%(%_%:%N$<%[%}%|%1%2%3%4%5%K at 6%T$T$h$7%7%`$8%5%9%0%0%a%a%3%b%6 at p.p.p.p.p.p.p.&@c%d%e%f%g%e@*.h%i%j%",
+" k%l%m%n%o%p%q%r%s%^%t%u%v%w%x%y%z%A%B%O$[%C%D%|%E%0%F%G%H%I%J%K%L%M%N%O%P%E%|%Q%D%R%S%p.p.p.p.p.p.p.T%U%u$V%W%[+m+X%Y%z +.",
+" Z%`% &.&+&@&#&$&%&&&*&=&-&;&>&,&'&)&!&~&{&]&^&/&(&_&:&<&[&}&|&|&}&1&M%4%D%2&3&B%4&5&6&p.p.p.p.p.p.p.7&8&y+9&c@)#0&a& @b&c&",
+" d&e&'%f&g&4$h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&A&B&C&D&E&F&G&H&I&J&K&L&4&M&N&O&P&Q&p.p.p.p.p.p.p.R&C#6 at S&u#T&U&V&W&X&Y&",
+" Z&`& *.*+&+*@*#*j&$*%*&***=*-*;*>*,*'*)*!*~*{*]*w&^*/*(*_*:*<*[*}*|*<&1*2*3*4*5*6*7*8*9*p.p.p.p.p.p.p.p.p.!.0*y#a*b*c.c*z$O+",
+"d*e*f*g*h*i*j*k*#*l*m*n*o*p*q*r*-*s*t*u*v*w*x*y*z*{*A*B*C*D*E*F*G*H*I*J*:*K*L*4*M*N*O*P*Q*p.p.p.p.p.p.p.p.p.R*S*f%T*U*V*k#W*X*",
+"Y*Z*`*.*+& =.=+=@=#=$=%=&=*===-=;=>=,='=)=!=~={=]=y*^=/=(=_=:=y+i at .+y+<=[=}=|=1=2=3=4=5=6=p.p.p.p.p.p.p.p.p.7=8=(%9=9=0=a=b=c=",
+"d=e=.&h*g#f=g=h=@=i=j=k=l=m=*=n=o=o=p=q=r=s=t=u=v=w=x=y=z=A=G*B=p.2+C=D=E=F=G=H=w=I=J=K=q.p.p.p.p.p.p.p.p.i at L=M=N=O=P=Q=R=q%S=",
+"T=U=V=W=X=Y=h&Z=`= -.-+- at -#-$-%-&-*-=---;->-,-'-)-s=!-~-{-]-^-/-(-V+_-7@:-<-[-}-|-1-2-3-p.p.p.p.p.p.p.p.p.4-5-6-7-k&8-9-0-a-f=",
+"b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-t-u-v-w-x-y-z-A-B-C-D-E-F-G-H-H*I-J-K-L-M-N-O-P-h at p.p.p.p.p.p.p.p.Q-R-S-#+2#T-U-V-W-X-Y-",
+"Z-.*`- ;.;+;@;#;$;%;&;*;=;-;;;>;,;';';);!;~;{;];^;/;(;_;:;<;[;};|;1;2;3;4;5;6;7;8;9;6&p.p.p.p.p.p.p.p.p.p.p.p.p. +0;a;b;'$c;d;",
+"e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;s;t;u;';v;w;x;y;z;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;p.p.p.p.p.p.p.p.p.p.p.p.p.p.S;T;K 3-U;V;W;",
+"X;w at Y;Z;h@`; >j=l=.>+>@>#>p-t;$>%>N-&>1**>=>->;>>>,>'>)>!>E;~>{>]>^>/>(>_>:><>[>}>2+p.p.p.p.p.p.p.p.p.p.p.p.p.~.|>1>2>3>4>5>6>",
+"7>8>9>0>a>b>c>d>e>v*)*f>g>h>i>D;j>k>l>~-m>n>o>p>;>q>r>s>t>u>v>w>(;(;x>y>z>A>B>C-C>p.p.p.p.p.p.p.p.p.p.p.p.p.D>&@E>F>'$G>H>I>J>",
+"K>!%L>0>a>M>N>O>P>Q>M%R>S>T>U>:-V>I-W>X>Y>Z>`> ,.,+,s>@,#,$,%,&,*,*,=,-,;,>,,,R at p.p.p.p.o.p.p.p.p.p.p.p.p.Q-&@',),#%!,~,{,],0>",
+"^,/,(,0>a>a>_,:,<,[,},}=|,1,2,C#3,4,5,6,7,8,8,7,9,0,a,b,c,$,d,e,e,e,e,f,g,h,~,p.p.p.p.~.i,p.p.p.p.p.p.p.2+j,k,l,m,n,~,q.5+o,a>",
+"p,q,r,s,a>a>t,u,v,w,x,y,(-i at z,A,B,C,D,~.a>a>a>a>a>~,E,F,G,H,I,J,H,H,H,K,L,R at p.p.p.p.2+M,o.p.p.p.p.o.6 at N,O,P,T%Q,Q*~,R,3#R*a>a>",
+"S,T,U,Q&a>a>V,W,X,w,Y,Z,`,A= '6;.'+'R at a>a>a>a>a>a>~.@'#'$'%'&'*'='='-';'t$p.p.p.p.>'~,h at p.p.p.p.~.,''')'!'~'{'!,~,R,a>H>>'a>o,",
+"]'^'/'('a>a>s,_':'D&<':-['/;}'|'1'2'3'4'a>a>a>a>5'6'7'8'9'0'a'b'b'c'd'y+p.p.p.p.h at 4>C>p.p.p.p.p.o.!,e'f'g','h'.+h at a>a>a>a>a>i'",
+"j'k'~.R,a>a>a>l'm'z#(*n'W>o'p'q'r's't'u'a>a>a>v'w'x'y'z'A'B'C'D'E'F'G'p.p.p.p.q.!,.+p.p.p.p.p.p.p.p.p.h at R*H'I'a>a>a>a>a>a>a>R,",
+"J'K'L'a>a>a>a>o,M'N'L-O'H=P'Q'R'S'T'U'V'a>a>a>W'X'Y'Z'Z;`' ).)+)@)#)h at p.p.p.h@6&y+o.p.p.p.p.p.p.p.p.p.p.D>|#o,a>a>a>a>a>a>a>a>",
+"$)%)&)a>a>a>a>a>@'*)t==)D;-);)>)a>,)')))a>!)~)o,{)])^){./)()_):)<)[)p.p.p.p.})|)2+p.p.p.p.p.p.p.p.p.p.p.6&1)2)a>a>a>a>a>a>a>a>",
+"3)4)5)6)a>a>a>a>a>7)8)9)0)a)b)c)a>a>a>d)e)f)g)h)i)D>6)4>j)k)l)m)n)p.p.p.p.6)1#~,p.p.p.p.p.p.p.p.p.p.p.6@%@S%a>a>a>a>a>a>a>o,o)",
+"p)q)r)s)a>a>a>a>a>C>t)u)v)w)x)y)a>a>a>z)A)B)C)R,a>h@~,S%D)E)F)G).+p.p.p.p.9*H)i at p.p.p.p.p.p.p.p.p.p.})I)@'a>a>a>a>a>a>J)K)L)M)",
+"N)O)i'b;a>a>a>a>a>a>.+D,P)Q)R)5>a>a>a>a>a>S)4'a>a>h@~,S%Q,T)U)V)p.p.p.p.D>3#%@W)p.p.p.p.p.p.p.p.p./-I)W'a>a>a>a>a>G>X)Y)Z) ",
+"`) !.!s,a>a>a>a>a>~.i@~,D)+!@!#!a>a>a>a>a>a>a>a>a>h at I'4>3>$!%!&!p.p.p.p.>'1)*!.+p.p.p.p.p.p.~.M,=!=!-!a>a>a>>';!>!,!'! ",
+")!!!~!+'C>a>a>a>a>>'6)W)[)G>{!]!a>a>a>a>a>a>a>a>a>D>o,6 at G>^!/!(!o.p.p.p.o.{#G at p.p.p.p.q.C#9*1#j,4>a>a>a>a>a>o,_!:! ",
+"<![!}!|!1!C>a>a>~.i at .+{.2!!,9*3!a>a>a>a>a>a>a>a>a>a>>'R at 6@'$4!5!6=p.p.p.p.h at p.p.p.p.>'6!1#3-U;>'a>a>a>a>a>a>s,7! ",
+"8!9!0!a!b!4-R,D>>'c!H>!.C#6&3>d!C>a>a>a>a>a>a>a>a>a>a>2)i at v'@'e!8&p.p.p.p.o.p.a>a>a>~.R@>'a>a>a>a>a>a>a>a>a>Z;f! ",
+"g!h!i!j!M>H>~.h at 0>~,{.S%k!9*l!#%7&a>a>a>a>a>a>a>a>a>a>a>a>~.h at R,7&o.o.a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>-!m! ",
+"n!o!p!q!r!s!~.C>R at 6@})t!Z,u!Q,1#',a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>~.a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>v!w! ",
+"x!y!z!A!B!C!D!E!~,!.S%Q*Q&6!i'2>F!t!a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>i;G! ",
+" H!I!J!K!L!M!N!O!3>!,R*u!P!D)Q!R!S!~.a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>T!U! ",
+" V!W!X!Y!Z!`! ~.~l!6&3>G'3#,'&@S!)$+~a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>@~ ",
+" #~$~%~&~#-*~Q*=~-~'$;~>~H),~'~d!i'a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>h@ ",
+" )~!~~~{~]~^~*@'$u!/~T%(~_~:~S-!'<~R at a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>D>h@~.a>>'>'V; ",
+" [~}~|~1~2~3~4~5~6~7~8~9~0~a~!'b~H'a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>h at R,a>D>c~o,>'h at R@{.d~ ",
+" e~f~g~h~i~j~k~l~m~n~o~p~q~R!5+r~<~!,a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>s~h at a>a>~.o,v'a>>'H>H>q.Z;-!t~ ",
+" u~v~w~x~y~z~A~B~C~u;D~E~a~F>P,4+P,o,a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>a>q.R at R,a>>'6@})i)Z;C#W'~,G>F~G~ ",
+" H~I~J~K~L~M~N~O~P~Q~R~S~T~U~V~W~J>2)a>a>a>a>a>a>a>D>a>a>h at i@R,a>a>.+})~,D>0>t!Q*Z;6=9*Q*t!!.X~ ",
+" Y~Z~`~ {.{p>+{@{#{${%{&{*{={-{F~a>a>a>a>a>a>h at C>R,a>h@~,H>R,a>;{k!G at 2)~,u!u!W'>{,{G'Q*'{ ",
+" ){!{~{{{]{^{/{({_{&,:{<{[{}{|{1{2{s,a>D>h@~.a>>'W)3{>'a>L'!,L'~.{.u!'$3{})3-3#'$P!2>/'8' ",
+" 4{5{6{7{8{9{0{a{b{I,c{d{e{f{g{h{i{h at R@W)o,>'L't!G>C>~,u!u!H>{.3#1#j{@'H)&@H)&@'$k{ ",
+" l{m{n{o{p{q{r{d{a's{D't{u{v{w{x{v'0>!.G>6 at H>R*u!!,s,P!1#,{{.1)&@H)3-=!#%T%Q&y{ ",
+" z{A{B{C{D{E{F{G{H{+)I{J{J{K{L{M{N{O{R at G@9*!,|)i'3#>{6!&@T%P!Q!'~4-4-P{>~i;Q{ ",
+" R{S{T{U{V{W{X{Y{Z{`{ ]J{Y{.]+]@]#]L'W''$$]H)T%%]b;'~H'&]S!*]=]Q!l!-] ",
+" ;]>],]v~'])]!]~]{]]]^]/](]_]:]<][]}].;{.4>|]2>%@1]1]S!H'H)|]2]3]4] ",
+" 5]6]7]8]9]0]a]a]b]c]d]e]f]g]h]i]j].~k]Q*-!{.-!l]2>m]n] "};
diff --git a/components/pixmaps/icecat.xpm b/components/pixmaps/icecat.xpm
new file mode 100644
index 0000000..7ca63d3
--- /dev/null
+++ b/components/pixmaps/icecat.xpm
@@ -0,0 +1,2222 @@
+/* XPM */
+static const char * icecat_xpm[] = {
+"63 64 2155 2",
+" c None",
+". c #2871C0",
+"+ c #1F6ABB",
+"@ c #1764B7",
+"# c #0B5AAF",
+"$ c #0455AB",
+"% c #0958AE",
+"& c #1260B4",
+"* c #1C67B9",
+"= c #2069B9",
+"- c #286EBA",
+"; c #2C74C2",
+"> c #1C67B8",
+", c #0754A9",
+"' c #004EA4",
+") c #004EA3",
+"! c #004DA2",
+"~ c #0955A9",
+"{ c #1F66B5",
+"] c #3172B9",
+"^ c #276EBC",
+"/ c #0753A6",
+"( c #004CA0",
+"_ c #004C9F",
+": c #014EA1",
+"< c #024EA2",
+"[ c #004C9E",
+"} c #004B9E",
+"| c #004B9D",
+"1 c #004B9C",
+"2 c #0E57A7",
+"3 c #2F6EB2",
+"4 c #3378C2",
+"5 c #0A54A4",
+"6 c #004A9B",
+"7 c #004A9A",
+"8 c #0450A2",
+"9 c #227EE0",
+"0 c #2786EA",
+"a c #004999",
+"b c #004998",
+"c c #004898",
+"d c #004897",
+"e c #1359A6",
+"f c #2A69AF",
+"g c #1D62AE",
+"h c #004896",
+"i c #044E9E",
+"j c #014A98",
+"k c #004796",
+"l c #1669C1",
+"m c #004795",
+"n c #2580DF",
+"o c #3598FF",
+"p c #0E5CB0",
+"q c #004794",
+"r c #2884E5",
+"s c #0E5DB1",
+"t c #004694",
+"u c #004693",
+"v c #034B9A",
+"w c #004692",
+"x c #004592",
+"y c #064A96",
+"z c #2363A9",
+"A c #3799FF",
+"B c #4884C4",
+"C c #0E529E",
+"D c #024996",
+"E c #044B99",
+"F c #308CEC",
+"G c #014692",
+"H c #1D6FC7",
+"I c #004590",
+"J c #014693",
+"K c #115EB1",
+"L c #399AFF",
+"M c #2F8BEC",
+"N c #00448F",
+"O c #2A83E2",
+"P c #2E8AEB",
+"Q c #024793",
+"R c #014590",
+"S c #2B86E6",
+"T c #00438E",
+"U c #1260B3",
+"V c #1360B4",
+"W c #1563B7",
+"X c #044995",
+"Y c #00438D",
+"Z c #1767BC",
+"` c #00428C",
+" . c #0B4D95",
+".. c #356CA9",
+"+. c #4EA3FD",
+"@. c #2B7ED8",
+"#. c #447EBD",
+"$. c #488CD6",
+"%. c #074B95",
+"&. c #1D6CC1",
+"*. c #145FB0",
+"=. c #054A95",
+"-. c #3F9DFF",
+";. c #115AAA",
+">. c #2A7ED8",
+",. c #0B52A0",
+"'. c #115BAC",
+"). c #1662B4",
+"!. c #00428B",
+"~. c #2E86E2",
+"{. c #3E9DFF",
+"]. c #1C6ABE",
+"^. c #00418A",
+"/. c #3D9CFF",
+"(. c #318AE8",
+"_. c #074C97",
+":. c #3C9BFF",
+"<. c #1560B1",
+"[. c #2A80DC",
+"}. c #1460B1",
+"|. c #145CA9",
+"1. c #64ABF0",
+"2. c #1F5C9D",
+"3. c #6DA5D9",
+"4. c #356AA1",
+"5. c #396DA2",
+"6. c #7AA1C1",
+"7. c #9DC0DC",
+"8. c #87B6E2",
+"9. c #3999FD",
+"0. c #024289",
+"a. c #246CBB",
+"b. c #4997E9",
+"c. c #3674B9",
+"d. c #1962B1",
+"e. c #3286DD",
+"f. c #014189",
+"g. c #2674C8",
+"h. c #3285DD",
+"i. c #004087",
+"j. c #358AE3",
+"k. c #2A7BD0",
+"l. c #2776CB",
+"m. c #3A92ED",
+"n. c #04458C",
+"o. c #3B93EF",
+"p. c #2E81D8",
+"q. c #0D529D",
+"r. c #419BFA",
+"s. c #3E98F6",
+"t. c #024288",
+"u. c #1056A2",
+"v. c #429FFF",
+"w. c #145BA8",
+"x. c #419DFE",
+"y. c #297AD0",
+"z. c #419EFF",
+"A. c #3085DF",
+"B. c #1157A4",
+"C. c #82B3DF",
+"D. c #84A7C4",
+"E. c #6992B7",
+"F. c #B9D2DE",
+"G. c #B8D1DE",
+"H. c #B7D1DE",
+"I. c #B7D0DD",
+"J. c #83BAEC",
+"K. c #2C81DA",
+"L. c #05448A",
+"M. c #1963B3",
+"N. c #003D80",
+"O. c #06458B",
+"P. c #307BCC",
+"Q. c #5098E4",
+"R. c #59A5F6",
+"S. c #53A3F9",
+"T. c #50A2F9",
+"U. c #52A2F7",
+"V. c #3775BA",
+"W. c #0E5099",
+"X. c #195FAC",
+"Y. c #4499F3",
+"Z. c #3383D6",
+"`. c #3382D6",
+" + c #4AA2FD",
+".+ c #155AA4",
+"++ c #11559F",
+"@+ c #459BF6",
+"#+ c #1357A1",
+"$+ c #479FFA",
+"%+ c #307FD3",
+"&+ c #2069B8",
+"*+ c #49A2FF",
+"=+ c #2E7CCF",
+"-+ c #1F67B6",
+";+ c #48A2FF",
+">+ c #185DA9",
+",+ c #024084",
+"'+ c #459DF9",
+")+ c #2672C4",
+"!+ c #3B90E9",
+"~+ c #3A8FE8",
+"{+ c #47A1FF",
+"]+ c #368AE2",
+"^+ c #46A1FF",
+"/+ c #195FAB",
+"(+ c #93C2EB",
+"_+ c #4B77A4",
+":+ c #A3BFD3",
+"<+ c #BCD4E0",
+"[+ c #BBD3DF",
+"}+ c #BAD3DF",
+"|+ c #A8CBE4",
+"1+ c #47A1FE",
+"2+ c #54A6FA",
+"3+ c #2664A6",
+"4+ c #2876C8",
+"5+ c #439FFF",
+"6+ c #2A79CD",
+"7+ c #013C7D",
+"8+ c #00397A",
+"9+ c #09478B",
+"0+ c #1A62AF",
+"a+ c #226FC0",
+"b+ c #2370C1",
+"c+ c #1E68B7",
+"d+ c #1C65B3",
+"e+ c #2D80D7",
+"f+ c #409DFE",
+"g+ c #68B0FC",
+"h+ c #51A4FB",
+"i+ c #52A6FE",
+"j+ c #4798ED",
+"k+ c #2C75C3",
+"l+ c #52A7FF",
+"m+ c #51A6FF",
+"n+ c #4596EB",
+"o+ c #0D4B91",
+"p+ c #4CA1F9",
+"q+ c #185AA3",
+"r+ c #084689",
+"s+ c #3C8CDF",
+"t+ c #4EA4FD",
+"u+ c #4FA5FF",
+"v+ c #1E62AD",
+"w+ c #3481D2",
+"x+ c #4497ED",
+"y+ c #0B498D",
+"z+ c #3786D8",
+"A+ c #4EA5FF",
+"B+ c #3F90E6",
+"C+ c #327ECF",
+"D+ c #4DA4FF",
+"E+ c #4CA4FF",
+"F+ c #499FF8",
+"G+ c #4CA3FF",
+"H+ c #1E64AE",
+"I+ c #84BCF0",
+"J+ c #306092",
+"K+ c #BFD6E1",
+"L+ c #BFD5E1",
+"M+ c #BED5E1",
+"N+ c #BDD4E0",
+"O+ c #81BAF0",
+"P+ c #4AA3FF",
+"Q+ c #5EAAF7",
+"R+ c #18508E",
+"S+ c #48A0FC",
+"T+ c #3585D9",
+"U+ c #043D7D",
+"V+ c #003774",
+"W+ c #094384",
+"X+ c #236BB9",
+"Y+ c #3E94EE",
+"Z+ c #4EA2F9",
+"`+ c #5BABFF",
+" @ c #59AAFF",
+".@ c #51A0F3",
+"+@ c #58AAFF",
+"@@ c #57AAFF",
+"#@ c #2669B2",
+"$@ c #1E5FA5",
+"%@ c #51A2F6",
+"&@ c #18579C",
+"*@ c #0A4485",
+"=@ c #4B9BEF",
+"-@ c #56A9FF",
+";@ c #55A9FF",
+">@ c #4E9EF3",
+",@ c #19589D",
+"'@ c #4898EB",
+")@ c #4897EA",
+"!@ c #2265AD",
+"~@ c #54A8FF",
+"{@ c #4FA2F8",
+"]@ c #2A70BA",
+"^@ c #53A7FF",
+"/@ c #4EA1F7",
+"(@ c #2062AA",
+"_@ c #6CACEB",
+":@ c #4F78A0",
+"<@ c #C2D8E3",
+"[@ c #C2D7E2",
+"}@ c #C1D7E2",
+"|@ c #C0D6E2",
+"1@ c #62ADFA",
+"2@ c #50A6FF",
+"3@ c #5A9CDF",
+"4@ c #4C7DAF",
+"5@ c #4598EF",
+"6@ c #2D75C3",
+"7@ c #2E76C4",
+"8@ c #3D8DE1",
+"9@ c #4CA3FD",
+"0@ c #509CEB",
+"a@ c #28405A",
+"b@ c #64B0FF",
+"c@ c #60AEFF",
+"d@ c #5FAEFF",
+"e@ c #5FADFF",
+"f@ c #5EADFF",
+"g@ c #59A6F7",
+"h@ c #55A2F2",
+"i@ c #5DADFF",
+"j@ c #4B96E4",
+"k@ c #114B8B",
+"l@ c #438CD8",
+"m@ c #5CACFF",
+"n@ c #509DEE",
+"o@ c #2E70B7",
+"p@ c #165193",
+"q@ c #58A8FB",
+"r@ c #2A6CB3",
+"s@ c #5AABFF",
+"t@ c #4996E6",
+"u@ c #4D8AC9",
+"v@ c #8EABC3",
+"w@ c #C5D9E4",
+"x@ c #C4D9E4",
+"y@ c #C4D9E3",
+"z@ c #B3D1E7",
+"A@ c #57A9FF",
+"B@ c #6191C0",
+"C@ c #A7C1D3",
+"D@ c #64AFFB",
+"E@ c #55A8FF",
+"F@ c #53A8FF",
+"G@ c #5297DF",
+"H@ c #6EB4FE",
+"I@ c #68B2FF",
+"J@ c #67B2FF",
+"K@ c #69B2FD",
+"L@ c #81B9EB",
+"M@ c #8ABCE7",
+"N@ c #85BBEB",
+"O@ c #7EB9F0",
+"P@ c #7AB8F3",
+"Q@ c #79B8F4",
+"R@ c #7DB9F3",
+"S@ c #87BDEE",
+"T@ c #94C2EA",
+"U@ c #94C0E8",
+"V@ c #94BFE6",
+"W@ c #A2C9E7",
+"X@ c #A9CBE5",
+"Y@ c #A3C8E5",
+"Z@ c #7DBAF6",
+"`@ c #63AFFF",
+" # c #62AFFF",
+".# c #3575BA",
+"+# c #2A68AA",
+"@# c #468CD6",
+"## c #5FACFC",
+"$# c #3170B5",
+"%# c #4186D0",
+"&# c #3C7FC6",
+"*# c #557DA7",
+"=# c #C8DBE5",
+"-# c #C7DBE5",
+";# c #C6DBE5",
+"># c #98C6F0",
+",# c #71B5FA",
+"'# c #9CB7CB",
+")# c #89BFF2",
+"!# c #5BACFF",
+"~# c #59ABFF",
+"{# c #5DABFE",
+"]# c #233447",
+"^# c #70B6FF",
+"/# c #6FB6FF",
+"(# c #78B8F7",
+"_# c #99C1DB",
+":# c #A4C4D5",
+"<# c #A6C6D6",
+"[# c #A8C7D7",
+"}# c #AAC8D8",
+"|# c #ACCAD9",
+"1# c #A7C7DC",
+"2# c #809FBE",
+"3# c #4B6493",
+"4# c #1A2D6F",
+"5# c #02105D",
+"6# c #001164",
+"7# c #10297A",
+"8# c #4A69A5",
+"9# c #9DBCD9",
+"0# c #BDD5E2",
+"a# c #7BBAF9",
+"b# c #6AB3FF",
+"c# c #569BE3",
+"d# c #69B2FE",
+"e# c #5194DB",
+"f# c #2E69A8",
+"g# c #3674B6",
+"h# c #67B1FF",
+"i# c #3775B8",
+"j# c #669DD6",
+"k# c #809DB7",
+"l# c #CBDDE7",
+"m# c #CADDE7",
+"n# c #CADDE6",
+"o# c #C9DCE6",
+"p# c #85BEF7",
+"q# c #65B0FF",
+"r# c #AFD0EB",
+"s# c #C6DAE4",
+"t# c #ACCFEA",
+"u# c #61AFFF",
+"v# c #61AEFF",
+"w# c #4975A5",
+"x# c #79BAFE",
+"y# c #78BAFD",
+"z# c #8BBDE8",
+"A# c #A0C2D4",
+"B# c #A3C4D4",
+"C# c #A6C5D5",
+"D# c #8FB1CC",
+"E# c #465F8A",
+"F# c #0E1E59",
+"G# c #000D5A",
+"H# c #000F6C",
+"I# c #001076",
+"J# c #00137D",
+"K# c #001681",
+"L# c #001A84",
+"M# c #001D84",
+"N# c #052480",
+"O# c #6588BE",
+"P# c #B7D3E8",
+"Q# c #7BBBFC",
+"R# c #71B6FF",
+"S# c #3A74B3",
+"T# c #3973B2",
+"U# c #6FB5FF",
+"V# c #6EB5FF",
+"W# c #3670AE",
+"X# c #9CC2E5",
+"Y# c #C7D9E4",
+"Z# c #CEDFE8",
+"`# c #CDDFE8",
+" $ c #CCDEE7",
+".$ c #8AC1F7",
+"+$ c #97C7F4",
+"@$ c #C4DAE5",
+"#$ c #71B6FD",
+"$$ c #69B3FF",
+"%$ c #69B2FF",
+"&$ c #7FBEFE",
+"*$ c #97C0DD",
+"=$ c #A1C2D3",
+"-$ c #A5C5D5",
+";$ c #A7C7D6",
+">$ c #9FC0D6",
+",$ c #455F85",
+"'$ c #041249",
+")$ c #00105D",
+"!$ c #00126A",
+"~$ c #001371",
+"{$ c #001375",
+"]$ c #001479",
+"^$ c #00147D",
+"/$ c #001680",
+"($ c #001A83",
+"_$ c #001E87",
+":$ c #002189",
+"<$ c #012487",
+"[$ c #83A4D0",
+"}$ c #C5DAE6",
+"|$ c #AFD1EE",
+"1$ c #81BEFC",
+"2$ c #77BAFF",
+"3$ c #5894D4",
+"4$ c #6BACEF",
+"5$ c #386EA9",
+"6$ c #76B9FE",
+"7$ c #76B9FF",
+"8$ c #6CA6E1",
+"9$ c #CEE0EA",
+"0$ c #D1E1E9",
+"a$ c #D0E1E9",
+"b$ c #D0E0E9",
+"c$ c #CFE0E9",
+"d$ c #B1D3F0",
+"e$ c #CCDEE8",
+"f$ c #CBDEE7",
+"g$ c #8AC1F8",
+"h$ c #71B7FF",
+"i$ c #70B5FD",
+"j$ c #83BEFC",
+"k$ c #8EC1F0",
+"l$ c #A0C2D3",
+"m$ c #A2C3D4",
+"n$ c #A4C5D5",
+"o$ c #A7C6D6",
+"p$ c #8FAFC8",
+"q$ c #758597",
+"r$ c #011352",
+"s$ c #001561",
+"t$ c #001567",
+"u$ c #00166B",
+"v$ c #001670",
+"w$ c #001774",
+"x$ c #001778",
+"y$ c #00187C",
+"z$ c #001880",
+"A$ c #001A82",
+"B$ c #001D85",
+"C$ c #002088",
+"D$ c #002389",
+"E$ c #2148A0",
+"F$ c #C6DBE8",
+"G$ c #B3D4EF",
+"H$ c #7FBEFF",
+"I$ c #78B6F7",
+"J$ c #609AD7",
+"K$ c #4277B0",
+"L$ c #76B4F4",
+"M$ c #7EBDFF",
+"N$ c #7DBDFF",
+"O$ c #B4D5F2",
+"P$ c #D4E3EB",
+"Q$ c #D3E3EB",
+"R$ c #D3E2EA",
+"S$ c #D2E2EA",
+"T$ c #C1DAEE",
+"U$ c #AAD0F3",
+"V$ c #BFD9EA",
+"W$ c #78BAFF",
+"X$ c #6398D0",
+"Y$ c #8BC2FE",
+"Z$ c #9BC2DC",
+"`$ c #A1C3D3",
+" % c #82A2BC",
+".% c #919CA7",
+"+% c #6D80A5",
+"@% c #00175E",
+"#% c #001862",
+"$% c #001866",
+"%% c #00196B",
+"&% c #00196F",
+"*% c #001A74",
+"=% c #001A78",
+"-% c #001B7B",
+";% c #001B7E",
+">% c #001C81",
+",% c #002087",
+"'% c #002289",
+")% c #002489",
+"!% c #A3C0E0",
+"~% c #B0D3F2",
+"{% c #87C2FF",
+"]% c #70A8E3",
+"^% c #4273A8",
+"/% c #85C1FF",
+"(% c #A1CDF8",
+"_% c #D6E5EC",
+":% c #D7E5EC",
+"<% c #CEE1EE",
+"[% c #D6E4EC",
+"}% c #D5E4EC",
+"|% c #D5E4EB",
+"1% c #93C7FB",
+"2% c #82BFFF",
+"3% c #9ACAF9",
+"4% c #A8D0F4",
+"5% c #99C9F8",
+"6% c #80BEFF",
+"7% c #5782B0",
+"8% c #95C6F7",
+"9% c #7E9EB9",
+"0% c #939EAB",
+"a% c #899CBB",
+"b% c #001A59",
+"c% c #001A5D",
+"d% c #001B62",
+"e% c #001B65",
+"f% c #001C6A",
+"g% c #001D6E",
+"h% c #001D72",
+"i% c #001E76",
+"j% c #001E7A",
+"k% c #001F7D",
+"l% c #001F80",
+"m% c #001F82",
+"n% c #002085",
+"o% c #002287",
+"p% c #7192C8",
+"q% c #CADEEB",
+"r% c #95C8FD",
+"s% c #8FC6FF",
+"t% c #8EC6FF",
+"u% c #8DC5FE",
+"v% c #6DA0D6",
+"w% c #8EC5FF",
+"x% c #A8D1F8",
+"y% c #D7E5EE",
+"z% c #D9E7ED",
+"A% c #D8E6EE",
+"B% c #637C9F",
+"C% c #122A60",
+"D% c #7A97BE",
+"E% c #D8E6ED",
+"F% c #D7E5ED",
+"G% c #92C7FD",
+"H% c #8AC3FF",
+"I% c #89C3FF",
+"J% c #88C2FF",
+"K% c #86C1FF",
+"L% c #547AA3",
+"M% c #9EC6E5",
+"N% c #A1C3D4",
+"O% c #85A7C1",
+"P% c #8594A3",
+"Q% c #D0E2F4",
+"R% c #274376",
+"S% c #001C58",
+"T% c #001D5D",
+"U% c #001E61",
+"V% c #001E65",
+"W% c #001F69",
+"X% c #00206D",
+"Y% c #002071",
+"Z% c #002175",
+"`% c #002278",
+" & c #00227B",
+".& c #00227E",
+"+& c #002381",
+"@& c #002383",
+"#& c #002485",
+"$& c #002486",
+"%& c #3C63AE",
+"&& c #A3CFFB",
+"*& c #97CAFF",
+"=& c #B0D5F8",
+"-& c #B3D6F7",
+";& c #B7D8F7",
+">& c #CBE0F2",
+",& c #DBE8EE",
+"'& c #DCE8EF",
+")& c #87A0BC",
+"!& c #011952",
+"~& c #00206C",
+"{& c #0F3077",
+"]& c #B8CFE5",
+"^& c #DAE7EE",
+"/& c #C1DCF3",
+"(& c #92C7FF",
+"_& c #91C7FF",
+":& c #ADD3F6",
+"<& c #7FB0E4",
+"[& c #8DC3FB",
+"}& c #446383",
+"|& c #A0C3D6",
+"1& c #95B7CF",
+"2& c #6F8295",
+"3& c #C2D9EF",
+"4& c #D0E9FF",
+"5& c #395684",
+"6& c #001F57",
+"7& c #00205B",
+"8& c #00205F",
+"9& c #002164",
+"0& c #002268",
+"a& c #00236C",
+"b& c #00236F",
+"c& c #002473",
+"d& c #002577",
+"e& c #00257A",
+"f& c #00267C",
+"g& c #00267E",
+"h& c #002781",
+"i& c #002783",
+"j& c #002784",
+"k& c #0D368F",
+"l& c #9BCCFF",
+"m& c #9FCEFF",
+"n& c #ABD3FB",
+"o& c #D9E7EE",
+"p& c #DDE9EF",
+"q& c #DEE9EF",
+"r& c #DEEAF0",
+"s& c #DFEAF0",
+"t& c #B7CBDE",
+"u& c #0C2556",
+"v& c #00246E",
+"w& c #00236A",
+"x& c #274B87",
+"y& c #D9E7F0",
+"z& c #C1DCF5",
+"A& c #9BCCFE",
+"B& c #99CBFF",
+"C& c #98CBFF",
+"D& c #B7D7F5",
+"E& c #ABC6DE",
+"F& c #274972",
+"G& c #88B9EC",
+"H& c #96CAFF",
+"I& c #96C9FF",
+"J& c #94C8FF",
+"K& c #91BDE2",
+"L& c #A2C4D7",
+"M& c #637C95",
+"N& c #ADC7E0",
+"O& c #C6E3FE",
+"P& c #C8E4FF",
+"Q& c #2C4E7E",
+"R& c #002157",
+"S& c #00225B",
+"T& c #00235F",
+"U& c #002463",
+"V& c #002567",
+"W& c #00256A",
+"X& c #00266E",
+"Y& c #002771",
+"Z& c #002875",
+"`& c #002878",
+" * c #00297B",
+".* c #00297D",
+"+* c #002A7F",
+"@* c #002A81",
+"#* c #002A82",
+"$* c #012B82",
+"%* c #96C5F8",
+"&* c #A6D2FF",
+"** c #C5DFF5",
+"=* c #DFEBF0",
+"-* c #E0EBF1",
+";* c #E1EBF1",
+">* c #D1E1ED",
+",* c #29446D",
+"'* c #002467",
+")* c #002870",
+"!* c #00276D",
+"~* c #002669",
+"{* c #072E6D",
+"]* c #C7DBED",
+"^* c #D1E4F2",
+"/* c #A5D1FE",
+"(* c #A0CFFF",
+"_* c #BBDAF6",
+":* c #88A9CB",
+"<* c #5F86B2",
+"[* c #ADD3F9",
+"}* c #A6D1FB",
+"|* c #9FCEFE",
+"1* c #9ECDFF",
+"2* c #9DCDFF",
+"3* c #91C2F6",
+"4* c #93BEE0",
+"5* c #7696B2",
+"6* c #89A4BC",
+"7* c #BBDDFC",
+"8* c #BEE0FF",
+"9* c #BFE0FF",
+"0* c #264B79",
+"a* c #002457",
+"b* c #00255B",
+"c* c #00265E",
+"d* c #002662",
+"e* c #002766",
+"f* c #002869",
+"g* c #00296C",
+"h* c #002A70",
+"i* c #002B72",
+"j* c #002B76",
+"k* c #002C79",
+"l* c #002C7B",
+"m* c #002D7D",
+"n* c #002D7F",
+"o* c #002E80",
+"p* c #002D81",
+"q* c #89B6EA",
+"r* c #AFD6FF",
+"s* c #D8E7F1",
+"t* c #E0EBF0",
+"u* c #E1ECF1",
+"v* c #E2ECF1",
+"w* c #E3EDF2",
+"x* c #758CA7",
+"y* c #00235D",
+"z* c #002B71",
+"A* c #002A6F",
+"B* c #002A6C",
+"C* c #002968",
+"D* c #002865",
+"E* c #819FC2",
+"F* c #D4E5F2",
+"G* c #BFDCF8",
+"H* c #CBE1F2",
+"I* c #D0E2EE",
+"J* c #A6C9EC",
+"K* c #D1E1EA",
+"L* c #C8DEED",
+"M* c #BBD9F3",
+"N* c #8FBBE9",
+"O* c #31455B",
+"P* c #92BDE1",
+"Q* c #9ABDD4",
+"R* c #607A95",
+"S* c #A9CFF3",
+"T* c #B3DAFF",
+"U* c #B5DBFF",
+"V* c #A6CBF0",
+"W* c #103662",
+"X* c #002656",
+"Y* c #00275A",
+"Z* c #00285E",
+"`* c #002961",
+" = c #002A64",
+".= c #002B68",
+"+= c #002B6B",
+"@= c #002C6E",
+"#= c #002D71",
+"$= c #002E74",
+"%= c #002E76",
+"&= c #002F78",
+"*= c #00307B",
+"== c #00307D",
+"-= c #00317E",
+";= c #7CA8DD",
+">= c #BADBFD",
+",= c #E2ECF2",
+"'= c #E4EEF3",
+")= c #E5EEF3",
+"!= c #E6EFF3",
+"~= c #567193",
+"{= c #002B6A",
+"]= c #002E71",
+"^= c #002D6E",
+"/= c #002C6A",
+"(= c #002B67",
+"_= c #002B64",
+":= c #264F82",
+"<= c #D7E7F3",
+"[= c #D5E5F0",
+"}= c #D7E6EF",
+"|= c #CAE0F0",
+"1= c #AED6FF",
+"2= c #96BFEA",
+"3= c #6F91B0",
+"4= c #89ADD3",
+"5= c #A7D2FE",
+"6= c #A9D4FF",
+"7= c #ABD5FF",
+"8= c #89B2DE",
+"9= c #204873",
+"0= c #002855",
+"a= c #00295A",
+"b= c #002A5D",
+"c= c #002B60",
+"d= c #002C63",
+"e= c #002D67",
+"f= c #002E6A",
+"g= c #002F6D",
+"h= c #002F6F",
+"i= c #003072",
+"j= c #003175",
+"k= c #003277",
+"l= c #003278",
+"m= c #00337A",
+"n= c #00337C",
+"o= c #00337D",
+"p= c #729ED3",
+"q= c #BFDEFE",
+"r= c #E0EBF2",
+"s= c #E7EFF4",
+"t= c #E8F0F4",
+"u= c #3E5D83",
+"v= c #002F6C",
+"w= c #00306F",
+"x= c #002E69",
+"y= c #002E66",
+"z= c #002D63",
+"A= c #002B5E",
+"B= c #47719F",
+"C= c #C3DBF1",
+"D= c #DCEAF2",
+"E= c #D4E6F3",
+"F= c #C1DCF4",
+"G= c #B5D6F5",
+"H= c #C4DDF2",
+"I= c #D6E5EE",
+"J= c #D3E4F0",
+"K= c #B9DBFD",
+"L= c #B5DAFF",
+"M= c #A3C9F1",
+"N= c #2D3F52",
+"O= c #466D95",
+"P= c #7097C4",
+"Q= c #99C7F8",
+"R= c #A0CEFF",
+"S= c #A2CFFF",
+"T= c #A0CCFC",
+"U= c #163F69",
+"V= c #002A54",
+"W= c #002B58",
+"X= c #002C5C",
+"Y= c #002D5F",
+"Z= c #002E63",
+"`= c #002F66",
+" - c #003069",
+".- c #00316C",
+"+- c #00326E",
+"@- c #003270",
+"#- c #003372",
+"$- c #003475",
+"%- c #003476",
+"&- c #003578",
+"*- c #003579",
+"=- c #00367A",
+"-- c #6D99CC",
+";- c #C5E1FF",
+">- c #DBEAF6",
+",- c #E9F1F5",
+"'- c #EAF1F5",
+")- c #EAF1F6",
+"!- c #284B74",
+"~- c #00316B",
+"{- c #003068",
+"]- c #003065",
+"^- c #002F62",
+"/- c #002E5E",
+"(- c #002C5A",
+"_- c #0A3159",
+":- c #97B5D2",
+"<- c #D0E4F4",
+"[- c #CDE2F3",
+"}- c #C4DEF4",
+"|- c #CAE0F2",
+"1- c #DAE7EF",
+"2- c #CCE2F6",
+"3- c #BEDEFF",
+"4- c #BDDDFF",
+"5- c #82A3C6",
+"6- c #40658D",
+"7- c #8EC5FC",
+"8- c #92C8FF",
+"9- c #94C9FF",
+"0- c #97CBFF",
+"a- c #8EC0F3",
+"b- c #0A355C",
+"c- c #002C54",
+"d- c #002D58",
+"e- c #002E5C",
+"f- c #002F5F",
+"g- c #003168",
+"h- c #00326A",
+"i- c #00336D",
+"j- c #00346F",
+"k- c #003571",
+"l- c #003573",
+"m- c #003675",
+"n- c #003776",
+"o- c #003777",
+"p- c #003778",
+"q- c #6693C5",
+"r- c #CCE5FF",
+"s- c #DBEAF8",
+"t- c #E7F0F4",
+"u- c #E9F0F4",
+"v- c #EBF2F6",
+"w- c #ECF3F6",
+"x- c #E9F1F7",
+"y- c #1A4069",
+"z- c #00346C",
+"A- c #00336A",
+"B- c #003367",
+"C- c #003264",
+"D- c #003061",
+"E- c #002F5E",
+"F- c #002E5B",
+"G- c #0B365E",
+"H- c #4A77A2",
+"I- c #87A5C2",
+"J- c #B4CADE",
+"K- c #D5E6F2",
+"L- c #D7E7F4",
+"M- c #C1DEFC",
+"N- c #345074",
+"O- c #4D6D94",
+"P- c #2B3D50",
+"Q- c #507BAC",
+"R- c #6599D0",
+"S- c #89C2FF",
+"T- c #8BC3FF",
+"U- c #8DC4FF",
+"V- c #85BBF3",
+"W- c #19466F",
+"X- c #002D53",
+"Y- c #002E57",
+"Z- c #002F5B",
+"`- c #00305F",
+" ; c #003162",
+".; c #003469",
+"+; c #00356B",
+"@; c #00366E",
+"#; c #003670",
+"$; c #003772",
+"%; c #003873",
+"&; c #003974",
+"*; c #003975",
+"=; c #003976",
+"-; c #5B8CC1",
+";; c #D3E9FF",
+">; c #DDECFA",
+",; c #EAF2F5",
+"'; c #EDF3F7",
+"); c #EEF4F7",
+"!; c #EAF2F8",
+"~; c #173F67",
+"{; c #00366B",
+"]; c #003569",
+"^; c #003467",
+"/; c #003364",
+"(; c #003260",
+"_; c #00315E",
+":; c #00305A",
+"<; c #002F58",
+"[; c #0A3961",
+"}; c #002C4F",
+"|; c #002846",
+"1; c #00243F",
+"2; c #2A4F70",
+"3; c #5F80A2",
+"4; c #55789B",
+"5; c #557698",
+"6; c #2E4A67",
+"7; c #385E85",
+"8; c #254E7A",
+"9; c #002546",
+"0; c #2D5B89",
+"a; c #7BB6F5",
+"b; c #84C0FF",
+"c; c #71A9E3",
+"d; c #0A3861",
+"e; c #002F57",
+"f; c #00305B",
+"g; c #00315D",
+"h; c #003261",
+"i; c #003466",
+"j; c #00376C",
+"k; c #00386E",
+"l; c #003870",
+"m; c #003971",
+"n; c #003A73",
+"o; c #003A74",
+"p; c #0B457F",
+"q; c #90C2F6",
+"r; c #CAE3FE",
+"s; c #DFEEFB",
+"t; c #EBF2F5",
+"u; c #EFF5F7",
+"v; c #F0F5F8",
+"w; c #EEF4F9",
+"x; c #1D446C",
+"y; c #00376A",
+"z; c #003668",
+"A; c #003565",
+"B; c #003463",
+"C; c #003360",
+"D; c #00325D",
+"E; c #00315B",
+"F; c #003058",
+"G; c #002F54",
+"H; c #002D51",
+"I; c #002B4D",
+"J; c #00294B",
+"K; c #002746",
+"L; c #002544",
+"M; c #002442",
+"N; c #052644",
+"O; c #3C638B",
+"P; c #325881",
+"Q; c #042A4D",
+"R; c #002648",
+"S; c #00274A",
+"T; c #0B355C",
+"U; c #64A1DF",
+"V; c #7CBDFF",
+"W; c #7DBEFF",
+"X; c #7EBDFE",
+"Y; c #73B1EF",
+"Z; c #0D3E69",
+"`; c #083A68",
+" > c #003566",
+".> c #0C4176",
+"+> c #00396F",
+"@> c #003A70",
+"#> c #003A71",
+"$> c #003B72",
+"%> c #164F88",
+"&> c #8FC7FE",
+"*> c #B4D6FA",
+"=> c #E2F0FD",
+"-> c #EFF5F8",
+";> c #F1F6F8",
+">> c #F2F7F9",
+",> c #F3F7F9",
+"'> c #6288AE",
+")> c #437AAF",
+"!> c #023A6C",
+"~> c #003767",
+"{> c #003665",
+"]> c #003563",
+"^> c #003460",
+"/> c #00335E",
+"(> c #00315A",
+"_> c #003057",
+":> c #002F55",
+"<> c #002E53",
+"[> c #002B50",
+"}> c #002A4E",
+"|> c #00294C",
+"1> c #00284A",
+"2> c #002748",
+"3> c #012647",
+"4> c #2C5176",
+"5> c #173A5E",
+"6> c #002548",
+"7> c #00264A",
+"8> c #00274C",
+"9> c #00294E",
+"0> c #0D3A64",
+"a> c #4077B1",
+"b> c #5A96D7",
+"c> c #77B9FE",
+"d> c #5B96D5",
+"e> c #4C85C0",
+"f> c #093C69",
+"g> c #427CB6",
+"h> c #00386A",
+"i> c #00386B",
+"j> c #00396D",
+"k> c #003A6E",
+"l> c #003B71",
+"m> c #0A457C",
+"n> c #72ADE9",
+"o> c #88C4FF",
+"p> c #B3D7FC",
+"q> c #E6F2FF",
+"r> c #EDF4F7",
+"s> c #F4F8FA",
+"t> c #F5F8FA",
+"u> c #88A7C7",
+"v> c #7CB6EF",
+"w> c #043C6D",
+"x> c #00335D",
+"y> c #00325B",
+"z> c #003159",
+"A> c #002E56",
+"B> c #002D54",
+"C> c #002C52",
+"D> c #00284C",
+"E> c #00274B",
+"F> c #002649",
+"G> c #1F4368",
+"H> c #0A2C50",
+"I> c #00254B",
+"J> c #00264C",
+"K> c #00284E",
+"L> c #002950",
+"M> c #002A52",
+"N> c #002B54",
+"O> c #03305A",
+"P> c #356CA6",
+"Q> c #9EC9F8",
+"R> c #CAE2FC",
+"S> c #769BC3",
+"T> c #05355F",
+"U> c #003461",
+"V> c #4F8BC9",
+"W> c #0E467A",
+"X> c #0A4378",
+"Y> c #00396C",
+"Z> c #003B6F",
+"`> c #003B70",
+" , c #2E6AA4",
+"., c #80BFFF",
+"+, c #A9D1FB",
+"@, c #EBF5FF",
+"#, c #EEF5FB",
+"$, c #F5F9FA",
+"%, c #F6F9FB",
+"&, c #91ACC9",
+"*, c #71ABE7",
+"=, c #175084",
+"-, c #003867",
+";, c #003765",
+">, c #003663",
+",, c #003561",
+"', c #00335F",
+"), c #00315C",
+"!, c #002B52",
+"~, c #002A50",
+"{, c #00274D",
+"], c #00264B",
+"^, c #103257",
+"/, c #3C6691",
+"(, c #04274C",
+"_, c #00254C",
+":, c #00264E",
+"<, c #002850",
+"[, c #002952",
+"}, c #002B55",
+"|, c #002C57",
+"1, c #5F85AC",
+"2, c #F3F9FF",
+"3, c #F1F8FF",
+"4, c #9AB7D4",
+"5, c #05345E",
+"6, c #003564",
+"7, c #003666",
+"8, c #1A5289",
+"9, c #5594D7",
+"0, c #73B8FE",
+"a, c #4C8CCC",
+"b, c #064075",
+"c, c #1A568F",
+"d, c #19558E",
+"e, c #5190D0",
+"f, c #78BBFF",
+"g, c #83BDF9",
+"h, c #EFF7FF",
+"i, c #F0F7FF",
+"j, c #F2F7FB",
+"k, c #F7F9FB",
+"l, c #F8FAFC",
+"m, c #A3BBD4",
+"n, c #66A2DE",
+"o, c #3E7BB8",
+"p, c #003868",
+"q, c #003766",
+"r, c #003664",
+"s, c #003361",
+"t, c #00325F",
+"u, c #002F5A",
+"v, c #002C56",
+"w, c #00274E",
+"x, c #082A4F",
+"y, c #345B86",
+"z, c #02254C",
+"A, c #00254D",
+"B, c #00264F",
+"C, c #002751",
+"D, c #002953",
+"E, c #002A55",
+"F, c #002B57",
+"G, c #093664",
+"H, c #D5E6F7",
+"I, c #EEF6FF",
+"J, c #7395B7",
+"K, c #00315F",
+"L, c #003667",
+"M, c #003769",
+"N, c #2F6CA9",
+"O, c #5597DD",
+"P, c #589BE0",
+"Q, c #4D8FD2",
+"R, c #033E74",
+"S, c #2A69A5",
+"T, c #69AEF4",
+"U, c #72B8FF",
+"V, c #70B4FA",
+"W, c #DBECFE",
+"X, c #F5FAFF",
+"Y, c #F5F9FB",
+"Z, c #F9FBFC",
+"`, c #E0ECF8",
+" ' c #2A5A8A",
+".' c #0B4478",
+"+' c #003464",
+"@' c #003362",
+"#' c #00305D",
+"$' c #002D59",
+"%' c #002851",
+"&' c #00264D",
+"*' c #04274D",
+"=' c #3A6590",
+"-' c #2E5680",
+";' c #01244D",
+">' c #00244E",
+",' c #002550",
+"'' c #002752",
+")' c #002854",
+"!' c #002956",
+"~' c #3F6995",
+"{' c #D5E2EF",
+"]' c #E1EFFE",
+"^' c #27507A",
+"/' c #00366A",
+"(' c #00376B",
+"_' c #1F5A97",
+":' c #4789CE",
+"<' c #498AD0",
+"[' c #013A71",
+"}' c #013B72",
+"|' c #2B6AA9",
+"1' c #6DB4FF",
+"2' c #6DB4FE",
+"3' c #B6D7FA",
+"4' c #F9FCFF",
+"5' c #F8FBFE",
+"6' c #F7FAFB",
+"7' c #FAFCFD",
+"8' c #608FC1",
+"9' c #5293D9",
+"0' c #083F75",
+"a' c #003669",
+"b' c #003365",
+"c' c #003263",
+"d' c #003161",
+"e' c #003060",
+"f' c #002D5A",
+"g' c #002A56",
+"h' c #002650",
+"i' c #00254E",
+"j' c #02254D",
+"k' c #345D88",
+"l' c #2B537E",
+"m' c #00234D",
+"n' c #002652",
+"o' c #002754",
+"p' c #002A58",
+"q' c #7495B9",
+"r' c #A3B5CB",
+"s' c #8AA1BC",
+"t' c #E8F3FF",
+"u' c #97B4D1",
+"v' c #00356A",
+"w' c #09417A",
+"x' c #579CE9",
+"y' c #5EA4F4",
+"z' c #5095E0",
+"A' c #5195E1",
+"B' c #68AFFF",
+"C' c #68B0FF",
+"D' c #71B0F5",
+"E' c #EDF5FE",
+"F' c #FDFEFF",
+"G' c #FBFCFD",
+"H' c #FCFDFE",
+"I' c #7EA1C8",
+"J' c #60A4F1",
+"K' c #5BA1F0",
+"L' c #003266",
+"M' c #003164",
+"N' c #003062",
+"O' c #002F60",
+"P' c #002D5C",
+"Q' c #002A59",
+"R' c #01244E",
+"S' c #315A85",
+"T' c #2A527F",
+"U' c #00224E",
+"V' c #00244F",
+"W' c #002451",
+"X' c #002653",
+"Y' c #002655",
+"Z' c #002857",
+"`' c #002958",
+" ) c #8EABCB",
+".) c #EDF6FF",
+"+) c #C3D1E1",
+"@) c #103461",
+"#) c #7C95B2",
+"$) c #DCEDFE",
+"%) c #1C446F",
+"&) c #003369",
+"*) c #0C437F",
+"=) c #5FA9FE",
+"-) c #61ABFF",
+";) c #62ACFF",
+">) c #63ACFF",
+",) c #63ADFF",
+"') c #62ABFC",
+")) c #85B8F1",
+"!) c #FAFCFF",
+"~) c #FFFFFF",
+"{) c #FEFEFF",
+"]) c #C2D6EA",
+"^) c #5291D8",
+"/) c #5FA9FD",
+"() c #03376D",
+"_) c #003268",
+":) c #003064",
+"<) c #002E60",
+"[) c #002D5E",
+"}) c #002C5D",
+"|) c #002A5B",
+"1) c #002959",
+"2) c #002755",
+"3) c #002551",
+"4) c #002450",
+"5) c #01244F",
+"6) c #2F5885",
+"7) c #2A5381",
+"8) c #00234E",
+"9) c #00234F",
+"0) c #002553",
+"a) c #002859",
+"b) c #8BA9CA",
+"c) c #ECF5FF",
+"d) c #A2B3C7",
+"e) c #12355E",
+"f) c #002654",
+"g) c #7D96B3",
+"h) c #E3F1FF",
+"i) c #E2F0FF",
+"j) c #6A8AAE",
+"k) c #002F63",
+"l) c #00336C",
+"m) c #2A6AB2",
+"n) c #55A0F7",
+"o) c #5BA7FF",
+"p) c #5BA8FF",
+"q) c #5CA8FF",
+"r) c #5CA9FF",
+"s) c #5DA9FF",
+"t) c #5BA5F8",
+"u) c #98C3F2",
+"v) c #FEFFFF",
+"w) c #FBFDFD",
+"x) c #FCFDFD",
+"y) c #8EB3DE",
+"z) c #4D93E3",
+"A) c #003269",
+"B) c #003066",
+"C) c #002F64",
+"D) c #002E62",
+"E) c #002D60",
+"F) c #002C5F",
+"G) c #002B5D",
+"H) c #002552",
+"I) c #305A88",
+"J) c #2E5886",
+"K) c #00224F",
+"L) c #002250",
+"M) c #002554",
+"N) c #002858",
+"O) c #375C88",
+"P) c #1F3D5F",
+"Q) c #00234A",
+"R) c #1D3E64",
+"S) c #98ADC5",
+"T) c #E3F0FF",
+"U) c #E1F0FF",
+"V) c #DFEFFF",
+"W) c #BAD3EF",
+"X) c #042C5A",
+"Y) c #00326B",
+"Z) c #2362A9",
+"`) c #0D4583",
+" ! c #4996ED",
+".! c #54A5FF",
+"+! c #55A6FF",
+"@! c #4995E9",
+"#! c #519FF6",
+"$! c #56A7FF",
+"%! c #53A0F4",
+"&! c #D9EAFD",
+"*! c #FEFEFE",
+"=! c #CEDEF0",
+"-! c #3774B8",
+";! c #002F65",
+">! c #002D61",
+",! c #002C60",
+"'! c #002A5C",
+")! c #002756",
+"!! c #002452",
+"~! c #002350",
+"{! c #022450",
+"]! c #335F8D",
+"^! c #325E8E",
+"/! c #012350",
+"(! c #002351",
+"_! c #002757",
+":! c #1E4777",
+"<! c #0B294D",
+"[! c #768DA6",
+"}! c #DDEAF9",
+"|! c #DDEEFF",
+"1! c #D9ECFF",
+"2! c #375C86",
+"3! c #003067",
+"4! c #043873",
+"5! c #4A9EF9",
+"6! c #4DA3FF",
+"7! c #4EA4FF",
+"8! c #1E5FA6",
+"9! c #073F7C",
+"0! c #3985D6",
+"a! c #4FA4FF",
+"b! c #D6E9FE",
+"c! c #FAFCFC",
+"d! c #F2F8FD",
+"e! c #2F6096",
+"f! c #002E64",
+"g! c #002D62",
+"h! c #002C61",
+"i! c #002B5F",
+"j! c #00295B",
+"k! c #002453",
+"l! c #032551",
+"m! c #396797",
+"n! c #3A6999",
+"o! c #032552",
+"p! c #002150",
+"q! c #002251",
+"r! c #002352",
+"s! c #002555",
+"t! c #163F71",
+"u! c #C8D9EB",
+"v! c #E5F2FF",
+"w! c #DFEEFF",
+"x! c #C7DAEE",
+"y! c #A5BCD7",
+"z! c #D8EBFF",
+"A! c #8BAACC",
+"B! c #003169",
+"C! c #2166B0",
+"D! c #47A2FF",
+"E! c #2C77C7",
+"F! c #063D7B",
+"G! c #00336E",
+"H! c #013671",
+"I! c #388ADF",
+"J! c #47A2FE",
+"K! c #B3D6FB",
+"L! c #F8FAFB",
+"M! c #F8FBFC",
+"N! c #6B87A7",
+"O! c #002A5E",
+"P! c #00295C",
+"Q! c #002759",
+"R! c #002556",
+"S! c #072956",
+"T! c #082B59",
+"U! c #00214F",
+"V! c #002252",
+"W! c #002353",
+"X! c #002454",
+"Y! c #012758",
+"Z! c #B8D2ED",
+"`! c #E1EFFF",
+" ~ c #DEEEFF",
+".~ c #A1B7D0",
+"+~ c #173C68",
+"@~ c #40638C",
+"#~ c #D5EAFF",
+"$~ c #CBE4FE",
+"%~ c #1B416D",
+"&~ c #002F68",
+"*~ c #043772",
+"=~ c #2B7DD1",
+"-~ c #3E9FFE",
+";~ c #3794EE",
+">~ c #2878CA",
+",~ c #00326C",
+"'~ c #216CBA",
+")~ c #3FA1FF",
+"!~ c #5AA9F5",
+"~~ c #F4F9FF",
+"{~ c #B8CADC",
+"]~ c #00285B",
+"^~ c #002758",
+"/~ c #002657",
+"(~ c #0E3160",
+"_~ c #143969",
+":~ c #00204E",
+"<~ c #002253",
+"[~ c #002354",
+"}~ c #7898BE",
+"|~ c #DFEEFE",
+"1~ c #B3C6DB",
+"2~ c #4B698A",
+"3~ c #012652",
+"4~ c #0A305D",
+"5~ c #7996B7",
+"6~ c #D1E7FF",
+"7~ c #7799BF",
+"8~ c #002D66",
+"9~ c #002E67",
+"0~ c #083E7D",
+"a~ c #073C7A",
+"b~ c #073C7B",
+"c~ c #00306A",
+"d~ c #1A64AF",
+"e~ c #38A1FF",
+"f~ c #379EFC",
+"g~ c #5CA5E9",
+"h~ c #EBF4FD",
+"i~ c #D4E3F2",
+"j~ c #012149",
+"k~ c #002B61",
+"l~ c #002A5F",
+"m~ c #00295E",
+"n~ c #002658",
+"o~ c #002557",
+"p~ c #002455",
+"q~ c #00214E",
+"r~ c #1C4474",
+"s~ c #254F81",
+"t~ c #00204D",
+"u~ c #002151",
+"v~ c #22497A",
+"w~ c #102E51",
+"x~ c #002147",
+"y~ c #00234C",
+"z~ c #466689",
+"A~ c #BCD3EB",
+"B~ c #CEE6FF",
+"C~ c #C4E0FE",
+"D~ c #1F4472",
+"E~ c #002D65",
+"F~ c #053A79",
+"G~ c #309DFF",
+"H~ c #2F9BFB",
+"I~ c #6FB2F1",
+"J~ c #EFF5F9",
+"K~ c #39597F",
+"L~ c #00285C",
+"M~ c #00295D",
+"N~ c #002659",
+"O~ c #2A5688",
+"P~ c #336396",
+"Q~ c #022150",
+"R~ c #001F4D",
+"S~ c #002050",
+"T~ c #06295A",
+"U~ c #1A3D66",
+"V~ c #234163",
+"W~ c #9CB4CE",
+"X~ c #D5E9FF",
+"Y~ c #D2E8FF",
+"Z~ c #D0E7FF",
+"`~ c #C9E3FD",
+" { c #C9E4FF",
+".{ c #90B3DA",
+"+{ c #032959",
+"@{ c #002B62",
+"#{ c #002B63",
+"${ c #002C65",
+"%{ c #1768BB",
+"&{ c #2999FF",
+"*{ c #2998FF",
+"={ c #2A95F8",
+"-{ c #C9E2FB",
+";{ c #F0F6F8",
+">{ c #B0C4D9",
+",{ c #012450",
+"'{ c #002558",
+"){ c #002355",
+"!{ c #00204F",
+"~{ c #042553",
+"{{ c #396B9F",
+"]{ c #0B2E5E",
+"^{ c #001E4C",
+"/{ c #002051",
+"({ c #002152",
+"_{ c #50739D",
+":{ c #D2E6FB",
+"<{ c #CDE5FF",
+"[{ c #8BA9CB",
+"}{ c #29507E",
+"|{ c #C0DCFA",
+"1{ c #C3E1FF",
+"2{ c #5A80AC",
+"3{ c #002960",
+"4{ c #002A61",
+"5{ c #084083",
+"6{ c #1A75D3",
+"7{ c #1E84E9",
+"8{ c #176BC4",
+"9{ c #0B4A91",
+"0{ c #6F96C2",
+"a{ c #ECF3F7",
+"b{ c #2E4E75",
+"c{ c #002456",
+"d{ c #001F4E",
+"e{ c #001F4C",
+"f{ c #113667",
+"g{ c #224D81",
+"h{ c #001E4B",
+"i{ c #001E4D",
+"j{ c #1C4072",
+"k{ c #CCE5FE",
+"l{ c #BFD6F0",
+"m{ c #6887A8",
+"n{ c #284B75",
+"o{ c #012959",
+"p{ c #446995",
+"q{ c #AECDEE",
+"r{ c #C1DFFF",
+"s{ c #BADBFE",
+"t{ c #385D8B",
+"u{ c #00285F",
+"v{ c #00285D",
+"w{ c #0B3367",
+"x{ c #CDDCED",
+"y{ c #D8E5F0",
+"z{ c #163154",
+"A{ c #002254",
+"B{ c #094490",
+"C{ c #08428E",
+"D{ c #083F89",
+"E{ c #02265C",
+"F{ c #011F4C",
+"G{ c #36659C",
+"H{ c #396BA1",
+"I{ c #042453",
+"J{ c #001F50",
+"K{ c #7E9FC7",
+"L{ c #6D88A7",
+"M{ c #0B2D53",
+"N{ c #0E335E",
+"O{ c #8AA9CC",
+"P{ c #C3E0FF",
+"Q{ c #BBDCFF",
+"R{ c #AED3FA",
+"S{ c #264A78",
+"T{ c #002559",
+"U{ c #00265B",
+"V{ c #00265C",
+"W{ c #00265A",
+"X{ c #2C4F7E",
+"Y{ c #5C789C",
+"Z{ c #D6E6F5",
+"`{ c #DFEBF4",
+" ] c #586F8B",
+".] c #001D47",
+"+] c #002255",
+"@] c #012253",
+"#] c #137BF6",
+"$] c #147FFF",
+"%] c #073E89",
+"&] c #072858",
+"*] c #61A1E6",
+"=] c #1A4376",
+"-] c #001F4F",
+";] c #153868",
+">] c #0C2E54",
+",] c #002148",
+"'] c #1C3E66",
+")] c #A7C5E5",
+"!] c #C0DFFF",
+"~] c #B5D7FA",
+"{] c #739AC5",
+"]] c #B6DAFF",
+"^] c #A3CAF4",
+"/] c #204372",
+"(] c #00255A",
+"_] c #002459",
+":] c #002458",
+"<] c #002357",
+"[] c #082755",
+"}] c #1A3963",
+"|] c #001C46",
+"1] c #043479",
+"2] c #107BFF",
+"3] c #0F7AFF",
+"4] c #033070",
+"5] c #2B588F",
+"6] c #376AA1",
+"7] c #001D4B",
+"8] c #224877",
+"9] c #254569",
+"0] c #B3D0EE",
+"a] c #C2E0FF",
+"b] c #A8CAEF",
+"c] c #2C5686",
+"d] c #5C86B5",
+"e] c #B1D7FF",
+"f] c #9BC5F2",
+"g] c #1E4473",
+"h] c #00275B",
+"i] c #00275C",
+"j] c #0C6ADC",
+"k] c #0D78FF",
+"l] c #095DCC",
+"m] c #5796DB",
+"n] c #3C5B7D",
+"o] c #1E4A7F",
+"p] c #001D4A",
+"q] c #0B3366",
+"r] c #9DC0E6",
+"s] c #AFCFF2",
+"t] c #5276A0",
+"u] c #0B3464",
+"v] c #608AB9",
+"w] c #ADD5FF",
+"x] c #ABD4FF",
+"y] c #99C6F5",
+"z] c #254E7F",
+"A] c #002C62",
+"B] c #002A60",
+"C] c #00285A",
+"D] c #023370",
+"E] c #0C7DFB",
+"F] c #0974FF",
+"G] c #043B8B",
+"H] c #2F5F98",
+"I] c #62AFFE",
+"J] c #3A597A",
+"K] c #0B2E5F",
+"L] c #001C49",
+"M] c #002F67",
+"N] c #305E91",
+"O] c #86A7CB",
+"P] c #113560",
+"Q] c #517BAA",
+"R] c #A8D3FF",
+"S] c #A0CDFB",
+"T] c #9BCAFB",
+"U] c #346295",
+"V] c #00336B",
+"W] c #086ECC",
+"X] c #097AFF",
+"Y] c #0771FF",
+"Z] c #076DF8",
+"`] c #103C79",
+" ^ c #5EA2EB",
+".^ c #5DACFF",
+"+^ c #314964",
+"@^ c #2F629B",
+"#^ c #03214F",
+"$^ c #001C48",
+"%^ c #003871",
+"&^ c #003972",
+"*^ c #4070A3",
+"=^ c #042750",
+"-^ c #052C5C",
+";^ c #628AB7",
+">^ c #AAD4FF",
+",^ c #9AC7F5",
+"'^ c #598ABE",
+")^ c #4E81B6",
+"!^ c #033B72",
+"~^ c #003C77",
+"{^ c #003C78",
+"]^ c #003C76",
+"^^ c #003B76",
+"/^ c #003A75",
+"(^ c #003973",
+"_^ c #02498A",
+":^ c #0981DC",
+"<^ c #0B91FF",
+"[^ c #056EFF",
+"}^ c #085FD9",
+"|^ c #4A85C5",
+"1^ c #5EACFE",
+"2^ c #214F88",
+"3^ c #011D4B",
+"4^ c #001B49",
+"5^ c #004483",
+"6^ c #014380",
+"7^ c #255689",
+"8^ c #01254E",
+"9^ c #123763",
+"0^ c #88AFD9",
+"a^ c #A7D2FF",
+"b^ c #97C4F3",
+"c^ c #26578D",
+"d^ c #5586BB",
+"e^ c #9CCDFF",
+"f^ c #9ACBFF",
+"g^ c #6DA4DC",
+"h^ c #13518A",
+"i^ c #004683",
+"j^ c #004785",
+"k^ c #004685",
+"l^ c #004584",
+"m^ c #014D8F",
+"n^ c #0676C3",
+"o^ c #0363AB",
+"p^ c #046AB3",
+"q^ c #0675C3",
+"r^ c #0AA5FF",
+"s^ c #0578FF",
+"t^ c #036AFF",
+"u^ c #0461E8",
+"v^ c #356FB7",
+"w^ c #5FADFE",
+"x^ c #589FE8",
+"y^ c #19437A",
+"z^ c #011B48",
+"A^ c #001C4A",
+"B^ c #005093",
+"C^ c #045090",
+"D^ c #2F6397",
+"E^ c #9AC1EB",
+"F^ c #ACD5FF",
+"G^ c #AAD3FF",
+"H^ c #729FCF",
+"I^ c #124076",
+"J^ c #0A3B72",
+"K^ c #8EBFF2",
+"L^ c #88BCF4",
+"M^ c #86BEF9",
+"N^ c #3F7EB9",
+"O^ c #054F8E",
+"P^ c #004F92",
+"Q^ c #01589E",
+"R^ c #016AB3",
+"S^ c #028CD3",
+"T^ c #05B4FF",
+"U^ c #0491FF",
+"V^ c #0167FF",
+"W^ c #0266FD",
+"X^ c #2B6ECA",
+"Y^ c #5FABFA",
+"Z^ c #497FB9",
+"`^ c #153E74",
+" / c #001B48",
+"./ c #00589C",
+"+/ c #005EA5",
+"@/ c #045DA0",
+"#/ c #66A2D9",
+"$/ c #A9D3FF",
+"%/ c #8AB4E2",
+"&/ c #305B8B",
+"*/ c #033066",
+"=/ c #6C9CD0",
+"-/ c #76ABE3",
+";/ c #588EC9",
+">/ c #8CC4FF",
+",/ c #75B2F0",
+"'/ c #337DBC",
+")/ c #045C9F",
+"!/ c #005EA4",
+"~/ c #00AAE8",
+"{/ c #00C5FF",
+"]/ c #00AAFF",
+"^/ c #0067FF",
+"// c #0165FE",
+"(/ c #327BE4",
+"_/ c #5EAAFB",
+":/ c #324E6C",
+"</ c #163F76",
+"[/ c #011B47",
+"}/ c #0065AE",
+"|/ c #006BB7",
+"1/ c #0167B0",
+"2/ c #3A80BC",
+"3/ c #0C3565",
+"4/ c #5786BA",
+"5/ c #93C8FE",
+"6/ c #245A95",
+"7/ c #447BB7",
+"8/ c #8BC4FF",
+"9/ c #85C0FE",
+"0/ c #7FBCFB",
+"a/ c #81BFFF",
+"b/ c #72B3F4",
+"c/ c #408ED0",
+"d/ c #1270B6",
+"e/ c #0069B3",
+"f/ c #006BB6",
+"g/ c #006CB7",
+"h/ c #00D1FD",
+"i/ c #00D8FF",
+"j/ c #00BDFF",
+"k/ c #006BFE",
+"l/ c #186CEB",
+"m/ c #4D95ED",
+"n/ c #5194DA",
+"o/ c #1C4982",
+"p/ c #021C49",
+"q/ c #0078C8",
+"r/ c #0074C3",
+"s/ c #1971B4",
+"t/ c #18497D",
+"u/ c #3B689B",
+"v/ c #98CAFF",
+"w/ c #93C8FF",
+"x/ c #5A8EC7",
+"y/ c #1D5492",
+"z/ c #83BDFA",
+"A/ c #83C0FF",
+"B/ c #3473B7",
+"C/ c #7DBCFE",
+"D/ c #7BBCFF",
+"E/ c #79BAFF",
+"F/ c #77B9FF",
+"G/ c #62AAEF",
+"H/ c #4396DD",
+"I/ c #2D95D9",
+"J/ c #1FD5F7",
+"K/ c #18D9F8",
+"L/ c #1AD9F9",
+"M/ c #24CAFA",
+"N/ c #3790FB",
+"O/ c #52A0FC",
+"P/ c #60ADFE",
+"Q/ c #54A7FE",
+"R/ c #2E4967",
+"S/ c #275A95",
+"T/ c #052354",
+"U/ c #0064AC",
+"V/ c #0087DB",
+"W/ c #0086D9",
+"X/ c #0A7FC9",
+"Y/ c #57A2DE",
+"Z/ c #93C7FE",
+"`/ c #7CB1EA",
+" ( c #083B73",
+".( c #003674",
+"+( c #5F9AD8",
+"@( c #125196",
+"#( c #3575BB",
+"$( c #73B8FF",
+"%( c #66AEF8",
+"&( c #6BB3FE",
+"*( c #52A4F9",
+"=( c #4599F1",
+"-( c #4577AB",
+";( c #376FAC",
+">( c #123970",
+",( c #011A47",
+"'( c #00437E",
+")( c #0086DA",
+"!( c #0093EC",
+"~( c #0093EB",
+"{( c #008DE1",
+"]( c #1E8CD4",
+"^( c #68ADEA",
+"/( c #205189",
+"(( c #00316A",
+"_( c #00346E",
+":( c #023874",
+"<( c #75B1F1",
+"[( c #1B5A9E",
+"}( c #004188",
+"|( c #4183CB",
+"1( c #559EEB",
+"2( c #105CAF",
+"3( c #418DDE",
+"4( c #57A8FC",
+"5( c #0762C4",
+"6( c #0360C5",
+"7( c #469CF5",
+"8( c #4D89C8",
+"9( c #2A5D99",
+"0( c #0B2D60",
+"a( c #011E4C",
+"b( c #005393",
+"c( c #008FE1",
+"d( c #00A0F4",
+"e( c #009FF3",
+"f( c #0095E3",
+"g( c #1889CB",
+"h( c #1F66A0",
+"i( c #0E437D",
+"j( c #2C64A1",
+"k( c #7ABBFF",
+"l( c #135196",
+"m( c #004086",
+"n( c #04468F",
+"o( c #6CB2FB",
+"p( c #6DB5FF",
+"q( c #6BB4FF",
+"r( c #115EB0",
+"s( c #004FA4",
+"t( c #2776CA",
+"u( c #1770D0",
+"v( c #005CC1",
+"w( c #0B68CD",
+"x( c #2F89E8",
+"y( c #357ECC",
+"z( c #295C98",
+"A( c #0E3267",
+"B( c #021D4B",
+"C( c #004379",
+"D( c #0077B8",
+"E( c #00A2EB",
+"F( c #00ADF8",
+"G( c #00ACF6",
+"H( c #00A2E9",
+"I( c #1094D3",
+"J( c #3A97D3",
+"K( c #6BB0F0",
+"L( c #5A9ADF",
+"M( c #003D81",
+"N( c #003F85",
+"O( c #0A4C94",
+"P( c #6BB3FF",
+"Q( c #66B1FF",
+"R( c #327ED0",
+"S( c #0051A7",
+"T( c #3E8EE3",
+"U( c #1D75D4",
+"V( c #005CC0",
+"W( c #326AA8",
+"X( c #1F4C85",
+"Y( c #031E4B",
+"Z( c #005089",
+"`( c #0069A6",
+" _ c #007CBC",
+"._ c #0087CA",
+"+_ c #0178B5",
+"@_ c #166CA1",
+"#_ c #24578B",
+"$_ c #1C4F8A",
+"%_ c #104D92",
+"&_ c #014188",
+"*_ c #539AE5",
+"=_ c #65B1FF",
+"-_ c #63B0FF",
+";_ c #3480D2",
+">_ c #004EA2",
+",_ c #0050A5",
+"'_ c #0759B0",
+")_ c #4FA1F6",
+"!_ c #5CAAFC",
+"~_ c #5498DF",
+"{_ c #3771B1",
+"]_ c #2B5F9C",
+"^_ c #22508A",
+"/_ c #163F77",
+"(_ c #0F3369",
+"__ c #0B2C61",
+":_ c #0A295D",
+"<_ c #0A2A5E",
+"[_ c #103368",
+"}_ c #173D71",
+"|_ c #2A5587",
+"1_ c #376698",
+"2_ c #2F5F92",
+"3_ c #558AC1",
+"4_ c #578EC9",
+"5_ c #558ECA",
+"6_ c #0C4889",
+"7_ c #013E7F",
+"8_ c #003E80",
+"9_ c #003D7D",
+"0_ c #174576",
+" . + @ # $ % & * = - ",
+" ; > , ' ' ) ) ) ) ) ) ) ! ! ! ~ { ] ",
+" ^ / ( ( _ _ : < _ [ } } } | | | | | 1 1 2 3 ",
+" 4 5 6 6 6 7 8 7 9 0 7 a a a a a b b b b c d d d e f ",
+" g d h i h j k l m n o p q q r s t u v u u u w w w x w y z A B ",
+" C D x E F G H I H J K L M G N O P Q R S T U V W X Y Z U ` ` ... +.o @.#. ",
+" $.%.Y &.*.=.-.;.>.,.'.).!.~.{.].^.&./.(._.:.<.:.[.:.}.|.1.2.3.4.5.6.7.8.:.9.%.0.a.b. ",
+" c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.v.w.x.y.z.A.z.B.C.D.E.F.G.G.H.I.J.-.K.L.M.N.O.P.Q. R.S.T.U.",
+" V.W.X.Y.Z.`. +.+++ at +#+$+%+&+*+=+-+;+>+,+'+;+)+!+~+{+]+^+/+(+_+:+<+[+[+}+|+1+2+3+4+5+6+7+8+9+0+a+b+c+d+e+f+z.v.",
+" g+h+i+j+k+l+m+m+n+o+p+q+r+s+t+u+u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+M+N+O+P+Q+R+S+*+*+T+U+V+V+V+W+X+Y+^+^+^+Z+",
+" `+ @ @ @. at +@+ at +@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@^@^@/@(@_@:@<@[@}@}@|@1 at 2@3 at 4@u+u+A+A+5 at 6@7 at 8@9 at D+D+E+E+0@a@",
+" b at c@c at c@c at d@e at e@f at f@g at h@i at i@j at k@l at m@m at n@o@`+p at q@q at r@s@ @ @t at r@u at v@w at x@x at y@z at A@- at B@C at D@E at E@E@~@~@~@~@F@^@^@^@G@ ",
+" H at I@J at K@L at M@N at O@P at Q@R at S@T at U@V at W@X at Y@Z@`@ #.# #+#@###$#c at c@c@%#&#*#w@=#-#-#;#>#i@,#'#<@)#m@!#`+`+`+s at s@s at s@~#{#]# ",
+" ^#/#(#_#:#<#[#}#|#1#2#3#4#5#6#7#8#9#0#a#b#c#d#e#f#I at g#J at J@h#i#j#k#l#l#m#n#o#p#q#r#s#w at t#`@`@ # # #u#v#v#c at c@w# ",
+" x#y#z#A#B#C#[#}#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#R#^#S#/#T#/#U#V#W#X#Y#Z#Z#`#`# $.$+$n#o#-#@$#$$$$$$$%$I at I@I at I@%$ ",
+" &$*$=$B#-$;$>$,$'$)$!$~${$]$^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$7$8$9$0$0$0$a$b$c$d$e$ $f$n#o#g$h$R#R#^#^#/#/#/#i$ ",
+" j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$ $G$H$I$J$K$L$M$N$O$P$P$P$Q$Q$R$S$T$U$c$Z#`#V$1$W$W$W$2$2$2$7$7$X$ ",
+" Y$Z$`$B#<# %.%+%@%#%$%%%&%*%=%-%;%>%M#,%'%)%!%Z#~%{%{%]%^%j$/%(%_%:%:%_%<%[%}%|%1%2%3%4%5%2%6%6%6%H$H$H$H$M$M$7% ",
+" 8%l$m$-$9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%)%p%q%r%s%t%u%v%w%x%y%z%z%A%B%C%D%E%F%G%H%I%I%I%I%J%J%J%{%{%{%K%K%K%L% ",
+" M%N%:#O%P%Q%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&*&=&-&;&>&,&,&'&'&)&!&~&{&]&^&/&(&_&_&_&:&<&[&s%s%s%t%w%w%w%}& ",
+" |&m$1&2&3&4&5&6&7&8&9&0&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&,&'&p&q&r&s&t&u&a&v&w&x&y&'&z&A&B&C&D&E&F&G&*&*&H&H&I&J& ",
+" K&`$L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&`& *.*+*@*#*$*%*&***'&p&r&=*-*;*>*,*'*)*!*~*{*]*r&p&^*/*(*_*}%:*<*[*}*|*1*2*3* ",
+" 4*m$5*6*7*8*9*0*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*s&t*u*v*w*w*x*y*z*A*B*C*D*E*;*t*r&F*G*H*E%I*J*K*L*M*&*N*O* ",
+" P*Q*R*S*T*U*V*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=-=;=>==*;*,=w*'=)=!=~={=]=^=/=(=_=:=<=v*;*r&[=}=^&E%[%|=r*1=2= ",
+" 3=4=5=6=7=8=9=0=a=b=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=w*'=!=s=t=t=u=v=w=v=x=y=z=A=B=C=D=E=F=G=H=I=J=K=L=M=N= ",
+" O=P=Q=1*R=S=T=U=V=W=X=Y=Z=`= -.-+- at -#-$-%-&-*-=---;->-)=s=t=,-'-)-!-.-+-~-{-]-^-/-(-_-:-<-[-}-|-1-2-3-4-5- ",
+" 6-7-8-9-H&0-a-b-c-d-e-f-^-]-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-'-v-w-x-y-z-z-A-B-C-D-E-F-d-G-H-I-J-K-L-M-N-O-P- ",
+" Q-R-S-T-U-w%V-W-X-Y-Z-`- ;C-B-.;+;@;#;$;%;&;*;=;-;;;>;,-,;w-';);!;~;+;{;];^;/;(;_;:;<;[;};|;1;2;3;4;5;6; ",
+" 7;8;9;0;a;b;/%{%c;d;e;f;g;h;/;i;];{;j;k;l;m;n;o;p;q;r;s;t;w-);u;v;w;x;y;y;z;A;B;C;D;E;F;G;H;};I;J;K;L;M;N;O; ",
+" P;Q;R;S;T;U;V;W;X;Y;Z;E;`;C;B; >.>y;j;k;+>@>#>$>%>&>*>=>w-);->;>>>,>'>)>!>~>{>]>^>/>(>_>:><>H;[>}>|>1>2>3>4> ",
+" 5>6>7>8>9>0>a>b>c>W$d>e>f>^>]>{>g>h>i>j>k>@>l>m>n>o>p>q>r>->;>>>s>t>u>v>w>~>{>]>^>x>y>z>F;A>B>C>[>}>D>E>F>G> ",
+" H>I>J>K>L>M>N>O>P>Q>R>S>T>U>]>{>V>W>X>Y>k>Z>`> ,6%.,+,@,#,;>>>s>$,%,&,*,=,-,;,>,,,',D;),:;<;A>c-!,~,K>{,],^, ",
+"/,(,_,:,<,[,V=},|,1,2,2,3,4,5,6,7,8,9,0,a,b,Z>c,d,e,f,g,h,i,j,s>$,k,l,m,n,o,p,q,r,]>s,t,g;f;u,d-v,N>M><,w,J>x, ",
+"y,z,A,B,C,D,E,F,G,H,2,3,i,I,J,K,L,M,N,O,P,Q,Z>R,S,T,U,V,W,X,X,Y,%,l,Z,`, '.'M,L, >+'@'h;K,#'F-$'|,},D,%'B,&'*'=' ",
+"-';'>',''')'!'W=~'2,3,i,I,{']'^'^;/'('_':'<'['}'|'1'1'2'3'4'4'5'6'Z,7'7'8'9'0'a'^;b'c'd'e'E-e-f'W=g')'''h'i'j'k' ",
+"l'm'>','n'o'!'p'q'3,i,I,r's't'u'e-v'{;w'x'y'z'A'B'C'C'C'D'E'F'F'Z,Z,G'H'I'J'K'];B-L'M'N'O'/-P'(-Q'!')''','>'R'S' ",
+"T'U'V'W'X'Y'Z'`' )h,.)+)@)#)q>$)%)&)z-*)=)-)-);););)>),)')))!)~){)Z,G'H'])^)/)()_)L':)^-<)[)})|)1)Z'2)X'3)4)5)6) ",
+"7)8)9)3)0)Y'Z'a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)s)s)s)t)u)v)~)w)7'x)H'y)z)A)g-B)C)D)E)F)G)|)1)Z'2)X'H)4)5)I) ",
+"J)K)L)W'H)M)X*N)O)P)Q)R)S)T)U)V)W)X)Y)Z)`) !.!+!+!+!@!#!$!$!%!&!~)*!Z,7'G'=!-!g-B);!k)>!,!A='!a=N))!f)0)!!~!{!]! ",
+"^!/!L)(!!!0)Y'_!:!<![!}!h)U)V)|!1!2!3!Y)4!5!6!7!7!7!8!9!0!a!+.b!~)*!l,Z,c!d!e!`=;!f!g!h!i!b=j!a)_!2)M)k!(!L)l!m! ",
+"n!o!p!q!r!k!s!X*t!u!v!T)U)w!x!y!z!A!'!B!~-C!^+^+D!E!F!G!H!I!J!K!~)~)6'L!l,M!N!F)f!z=h!F)O!P!a=Q!_!R!M)k!(!K)S! ",
+" T!U!q!V!W!X!R!Y!Z!i)`! ~.~+~@~#~$~%~y=&~*~=~-~;~>~.-,~,~'~)~!~~~~)l,%,%,%,{~0)d=h!i!O!P!]~Q!^~/~s!X!r!L)U!(~ ",
+" _~:~p!q!<~[~X!R!}~|~1~2~3~4~5~;;6~7~P!8~9~&~0~a~b~ - -c~d~e~f~g~h~7's>s>t>i~j~k~l~m~P!]~Q!n~o~p~X!r!L)U!q~r~ ",
+" s~t~:~p!u~W![~p~v~w~x~y~z~A~;;6~B~C~D~d=E~8~8~y=9~9~9~9~F~G~G~H~I~H'>>>>>>J~K~L~M~L~Y*N~n~o~p~[~r!q!p!U!q~O~ ",
+" P~Q~R~:~S~u~<~W!T~U~V~W~X~Y~Z~B~`~ {.{+{@{#{_=_=${${${${%{&{&{*{={-{,>v;;{v;>{,{]~Y*N~'{R!){W!V!q!p!!{:~~{{{ ",
+" ]{^{R~!{S~/{({<~_{:{X~Y~Z~<{[{}{|{1{2{N~3{`*4{4{@{@{@{5{6{7{8{9{0{%,);););a{b{'{'{a*c{){W!q!p!p!!{d{e{f{ ",
+" g{h{^{i{d{!{/{({j{k{Y~l{m{n{o{p{q{r{s{t{Y*Z*Z*Z*u{u{u{u{Z*Z*Z*v{w{x{);w-w-y{z{c{a*){A{V!u~p!B{C{D{E{F{G{ ",
+" H{I{^{^{i{i{d{J{S~K{L{M{>'N{O{P{r{3-Q{R{S{T{U{U{U{V{V{V{U{U{U{W{W{X{Y{Z{`{ ].]+]A{<~u~S~!{@]#]$]$]%]&]*] ",
+" =]h{h{^{i{i{d{-];]>],]'])]P{!]3-~]{]]]^]/]a*T{T{(](](](]_]_]_]:]<]A{[]}]|]({({u~u~S~!{d{1]2]2]3]4]5]q# ",
+" 6]I{7]7]R~q!V!<~<~8]9]0]a]!]3-b]c]f!d]e]f]g]h]v{v{v{v{v{i]i]i]U{U{W{(]'{o~c{c{p~[~W!V!V!j]k]k]l]&]m]c at n] ",
+" o]7]p]h{Y*]~L~L~q]r]a]!]s]t]u]i!g!v]w]x]y]z]k~d=d=d=d=d=d=A]A]k~c=B]B]l~l~b=P!j!j!C]D]E]F]F]G]H]I]i at J] ",
+" K]L]L]]~]-B)B)M]N]s{O]P]f)a)b=Q]w]x]R]S]T]U]g-l)l)l)l)l)V]V]V]V]h-h-B!g-g-B)]-]-g-W]X]Y]Z]`] ^.^m at +^ ",
+" @^#^$^:~%^&^&^&^%^*^=^V'0)-^;^w]>^R],^'^R=A&)^!^~^{^~^~^~^~^]^]^^^/^o;(^&^&^(^_^:^<^[^[^}^|^.^s at 1^ ",
+" 2^3^4^g-5^5^5^5^6^7^8^9^0^w]>^a^b^c^d^e^f^*&g^h^i^j^k^k^l^l^5^5^m^n^5^o^p^q^r^r^s^t^u^v^w^s at +@x^ ",
+" y^z^A^l^B^B^B^B^C^D^E^F^G^a^H^I^J^K^f^*&L^(&M^N^O^P^B^B^B^B^B^Q^R^S^T^T^T^T^U^V^W^X^Y^~#@@;@Z^ ",
+" `^ /W!./+/+/+/+/@/#/$/%/&/,!*/=/B&*&-/;/t%>/I%,/'/)/!/+/+/+/+/~/{/{/{/{/]/^///(/_/~#A at E@E@:/ ",
+" </[/j!}/|/|/|/|/1/2/3/a=A=4/B&H&5/6/7/8/I%9/0/a/b/c/d/e/f/g/h/i/i/i/j/k/l/m/.^ @A at E@l+n/ ",
+" o/p/Y*|/q/q/q/q/r/s/t/u/v/I&w/x/k-y/z/K%A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/`+ @-@~@l+Q/R/ ",
+" S/T/S~U/V/V/V/V/W/X/Y/Z/w/`/ (j-.(+(A/6%@(#(W$7$$(h$%(&($$J at q# #d at .^*(=(-@~@l+2 at -( ",
+" ;(>(,('()(!(!(!(~({(](^(/(((_(:(<(6%N$[(}(|($(^#V#1(2(3(`@ #d at .^4(5(6(7(m+2 at 8( ",
+" 9(0(a(b(c(d(d(d(e(f(g(h(i(j(6%N$k(l(m(n(o(p(q(I at r(s(t(e at m@s at +@u(v(w(x(y( ",
+" z(A(B(C(D(E(F(F(G(H(I(J(K(k(L(M(N(O(p(P(I at Q(R() S(T(s at +@;@U(V(v(a ",
+" W(X(0(Y(C-Z(`( _._._+_ at _#_$_%_&_*_I@=_-_;_>_,_'_)_!_~_d.I ",
+" {_]_^_/_(___:_<___[_}_|_1_2_3_4_5_6_7_8_9_0_ "};
diff --git a/components/pixmaps/newmail.xpm b/components/pixmaps/newmail.xpm
new file mode 100644
index 0000000..281c47c
--- /dev/null
+++ b/components/pixmaps/newmail.xpm
@@ -0,0 +1,390 @@
+/* XPM */
+static const char * newmail_xpm[] = {
+"32 32 355 2",
+" c None",
+". c #868686",
+"+ c #282828",
+"@ c #E4E5E4",
+"# c #E6E6E6",
+"$ c #E8E8E8",
+"% c #E7E8E7",
+"& c #E6E7E6",
+"* c #E3E3E2",
+"= c #E0E0E0",
+"- c #DEDDDE",
+"; c #DBDBDB",
+"> c #D8D7D8",
+", c #D5D5D5",
+"' c #D2D2D2",
+") c #D0CFCF",
+"! c #CCCCCC",
+"~ c #C9C9C9",
+"{ c #C6C6C6",
+"] c #C4C4C4",
+"^ c #C1C1C0",
+"/ c #BDBDBD",
+"( c #BABBBA",
+"_ c #B7B7B8",
+": c #B5B4B4",
+"< c #B1B1B2",
+"[ c #AEAFAE",
+"} c #E4E4E3",
+"| c #E8E9E9",
+"1 c #EAEAEB",
+"2 c #EBEBEB",
+"3 c #EAEBEA",
+"4 c #E9E9E9",
+"5 c #E7E7E7",
+"6 c #E4E4E4",
+"7 c #E2E1E1",
+"8 c #DFDEDF",
+"9 c #DCDBDC",
+"0 c #D9D9D9",
+"a c #D6D6D6",
+"b c #D3D3D3",
+"c c #D0D0D0",
+"d c #CDCDCD",
+"e c #CACACA",
+"f c #C7C7C6",
+"g c #BEBEBE",
+"h c #BBBABB",
+"i c #B8B8B8",
+"j c #B5B5B5",
+"k c #B2B2B2",
+"l c #AFAFAE",
+"m c #ABACAC",
+"n c #E5E5E5",
+"o c #EAEBEB",
+"p c #EDEDED",
+"q c #EEEEEE",
+"r c #EDEEED",
+"s c #E6E5E5",
+"t c #E0E0DF",
+"u c #DCDDDD",
+"v c #D9D9DA",
+"w c #D7D7D7",
+"x c #D4D3D4",
+"y c #D1D0D0",
+"z c #CBCACB",
+"A c #C7C8C7",
+"B c #C1C1C1",
+"C c #BBBBBB",
+"D c #AFAFAF",
+"E c #ACACAC",
+"F c #E5E6E6",
+"G c #ECECEC",
+"H c #EEEFEF",
+"I c #F1F1F1",
+"J c #EFEFEF",
+"K c #EAE9EA",
+"L c #E3E3E3",
+"M c #DDDDDD",
+"N c #DADADA",
+"O c #D7D6D7",
+"P c #D3D4D4",
+"Q c #D1D1D1",
+"R c #CECDCE",
+"S c #CBCBCB",
+"T c #C7C7C7",
+"U c #C1C2C1",
+"V c #B9B8B8",
+"W c #EBECEB",
+"X c #F0F0F0",
+"Y c #EEEFEE",
+"Z c #ECEBEC",
+"` c #DAD9D9",
+" . c #D4D4D4",
+".. c #D0D1D1",
+"+. c #CDCDCE",
+"@. c #C7C7C8",
+"#. c #C4C5C5",
+"$. c #C1C1C2",
+"%. c #BEBEBF",
+"&. c #B8B9B8",
+"*. c #B3B2B2",
+"=. c #EAEAEA",
+"-. c #EBEBEA",
+";. c #E8E7E8",
+">. c #E3E2E2",
+",. c #DFDFDF",
+"'. c #DCDDDC",
+"). c #D0D0D1",
+"!. c #CBCBCA",
+"~. c #BFBEBE",
+"{. c #E5E6E5",
+"]. c #EAEAE9",
+"^. c #E9EAE9",
+"/. c #E6E5E6",
+"(. c #E1E1E0",
+"_. c #DEDEDE",
+":. c #DBDCDB",
+"<. c #D8D9D8",
+"[. c #D2D3D2",
+"}. c #CCCDCD",
+"|. c #C9C9CA",
+"1. c #C4C3C4",
+"2. c #BDBEBE",
+"3. c #BABBBB",
+"4. c #B4B4B4",
+"5. c #B1B2B2",
+"6. c #AFAEAE",
+"7. c #ACABAC",
+"8. c #E1E1E1",
+"9. c #E5E5E6",
+"0. c #E3E3E4",
+"a. c #E2E2E1",
+"b. c #DFE0DF",
+"c. c #DDDCDC",
+"d. c #D5D4D5",
+"e. c #D2D2D1",
+"f. c #CFCFCF",
+"g. c #C3C3C3",
+"h. c #C0C0C1",
+"i. c #B7B7B7",
+"j. c #B1B1B1",
+"k. c #ABABAB",
+"l. c #DEDFDF",
+"m. c #E0E1E1",
+"n. c #E2E2E2",
+"o. c #E3E4E4",
+"p. c #D9D8D9",
+"q. c #D5D6D6",
+"r. c #D3D4D3",
+"s. c #CACBCB",
+"t. c #C8C8C8",
+"u. c #C5C6C5",
+"v. c #C3C2C2",
+"w. c #C0BFBF",
+"x. c #BDBCBC",
+"y. c #B9B9BA",
+"z. c #B6B7B6",
+"A. c #B3B4B3",
+"B. c #B0B0B0",
+"C. c #AEADAD",
+"D. c #AAAAAB",
+"E. c #DEDEDF",
+"F. c #E0E1E0",
+"G. c #E0E0E1",
+"H. c #DEDFDE",
+"I. c #D6D7D6",
+"J. c #D2D1D2",
+"K. c #CAC9CA",
+"L. c #B6B6B6",
+"M. c #B3B3B3",
+"N. c #B0AFB0",
+"O. c #ACADAD",
+"P. c #AAAAAA",
+"Q. c #DBDBDC",
+"R. c #DCDCDC",
+"S. c #DEDDDD",
+"T. c #DCDCDD",
+"U. c #DBDADB",
+"V. c #D9D8D8",
+"W. c #D7D7D6",
+"X. c #D0CFD0",
+"Y. c #CECECE",
+"Z. c #C8C8C9",
+"`. c #C0C0C0",
+" + c #B5B5B4",
+".+ c #A9A9A9",
+"++ c #D7D7D8",
+"@+ c #DBDBDA",
+"#+ c #DADAD9",
+"$+ c #D9D9D8",
+"%+ c #D4D5D5",
+"&+ c #D3D2D2",
+"*+ c #CBCCCC",
+"=+ c #C6C7C6",
+"-+ c #C2C1C1",
+";+ c #BFBFBF",
+">+ c #BCBCBC",
+",+ c #B4B3B4",
+"'+ c #B0B1B1",
+")+ c #AEAEAE",
+"!+ c #A8A8A8",
+"~+ c #D6D5D6",
+"{+ c #D7D6D6",
+"]+ c #D7D8D7",
+"^+ c #D6D7D7",
+"/+ c #CAC9C9",
+"(+ c #C5C5C5",
+"_+ c #C2C3C2",
+":+ c #BBBBBA",
+"<+ c #B2B3B3",
+"[+ c #B0AFAF",
+"}+ c #ADADAD",
+"|+ c #A7A7A7",
+"1+ c #D4D5D4",
+"2+ c #D4D4D5",
+"3+ c #CDCECD",
+"4+ c #CACAC9",
+"5+ c #C8C7C7",
+"6+ c #C6C5C5",
+"7+ c #C3C3C4",
+"8+ c #BCBBBC",
+"9+ c #B9B9B9",
+"0+ c #B6B6B7",
+"a+ c #B4B4B3",
+"b+ c #AEAEAF",
+"c+ c #A9A9A8",
+"d+ c #A6A6A6",
+"e+ c #D1D1D0",
+"f+ c #D2D1D1",
+"g+ c #CCCDCC",
+"h+ c #BAB9BA",
+"i+ c #B7B8B8",
+"j+ c #A8A7A8",
+"k+ c #A5A5A5",
+"l+ c #CECECD",
+"m+ c #CDCCCC",
+"n+ c #CCCBCB",
+"o+ c #C8C9C9",
+"p+ c #BABABA",
+"q+ c #B1B0B1",
+"r+ c #ACABAB",
+"s+ c #A3A3A3",
+"t+ c #C8C9C8",
+"u+ c #C6C5C6",
+"v+ c #BCBDBD",
+"w+ c #BABABB",
+"x+ c #B8B9B9",
+"y+ c #B3B4B4",
+"z+ c #B2B2B1",
+"A+ c #ACACAD",
+"B+ c #AAAAA9",
+"C+ c #A8A7A7",
+"D+ c #A4A4A5",
+"E+ c #A2A2A2",
+"F+ c #C8C8C7",
+"G+ c #C7C6C6",
+"H+ c #C5C6C6",
+"I+ c #C2C2C2",
+"J+ c #BFBEBF",
+"K+ c #BCBCBD",
+"L+ c #ABAAAB",
+"M+ c #A8A8A9",
+"N+ c #A6A5A6",
+"O+ c #A1A1A1",
+"P+ c #C4C4C5",
+"Q+ c #C4C5C4",
+"R+ c #C5C4C5",
+"S+ c #C1C0C0",
+"T+ c #BFBFBE",
+"U+ c #BBBBBC",
+"V+ c #ADAEAD",
+"W+ c #A9A8A9",
+"X+ c #A7A6A7",
+"Y+ c #A4A4A4",
+"Z+ c #9F9F9F",
+"`+ c #C0C1C1",
+" @ c #C1C2C2",
+".@ c #C1C0C1",
+"+@ c #B9BAB9",
+"@@ c #B7B8B7",
+"#@ c #B5B5B6",
+"$@ c #B1B2B1",
+"%@ c #AFB0AF",
+"&@ c #AEAEAD",
+"*@ c #ACACAB",
+"=@ c #A0A0A0",
+"-@ c #9D9D9D",
+";@ c #BEBFBF",
+">@ c #ADAEAE",
+",@ c #ABACAB",
+"'@ c #A3A2A3",
+")@ c #A1A0A0",
+"!@ c #9D9E9D",
+"~@ c #9B9B9B",
+"{@ c #BCBBBB",
+"]@ c #BABAB9",
+"^@ c #B8B8B7",
+"/@ c #B6B5B6",
+"(@ c #AAA9AA",
+"_@ c #A7A8A7",
+":@ c #A2A3A3",
+"<@ c #A1A1A0",
+"[@ c #9E9E9E",
+"}@ c #9C9C9C",
+"|@ c #9A9999",
+"1@ c #B8B8B9",
+"2@ c #B8B7B8",
+"3@ c #9E9F9F",
+"4@ c #9A9A9A",
+"5@ c #989898",
+"6@ c #B5B6B5",
+"7@ c #B5B6B6",
+"8@ c #B6B6B5",
+"9@ c #B2B1B1",
+"0@ c #AFAEAF",
+"a@ c #A4A5A5",
+"b@ c #9D9C9C",
+"c@ c #969695",
+"d@ c #B2B3B2",
+"e@ c #B2B2B3",
+"f@ c #B2B1B2",
+"g@ c #ABABAA",
+"h@ c #A6A6A5",
+"i@ c #A2A2A3",
+"j@ c #969696",
+"k@ c #939394",
+"l@ c #B0B0AF",
+"m@ c #ADADAC",
+"n@ c #A9AAA9",
+"o@ c #A4A4A3",
+"p@ c #A1A1A2",
+"q@ c #9FA09F",
+"r@ c #949494",
+"s@ c #929192",
+"t@ c #ADACAC",
+"u@ c #ACADAC",
+"v@ c #ADACAD",
+"w@ c #ABAAAA",
+"x@ c #A8A8A7",
+"y@ c #A0A0A1",
+"z@ c #9C9B9C",
+"A@ c #99999A",
+"B@ c #949493",
+"C@ c #919292",
+"D@ c #909090",
+"E@ c #A9A9AA",
+"F@ c #A7A7A8",
+"G@ c #A7A6A6",
+"H@ c #A5A4A5",
+"I@ c #9A9A9B",
+"J@ c #999999",
+"K@ c #959596",
+"L@ c #939393",
+"M@ c #919291",
+"N@ c #8F8F8F",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + ",
+". + @ @ # $ $ % & @ * = - ; > , ' ) ! ~ { ] ^ / ( _ : < [ . . + ",
+". + } & | 1 2 3 4 5 6 7 8 9 0 a b c d e f ] ^ g h i j k l m . + ",
+". + n $ o p q r 2 $ s * t u v w x y d z A ] B g C i j k D E . + ",
+". + F | G H I J G K # L = M N O P Q R S T ] U g C V j k D E . + ",
+". + s $ W q X Y Z 4 F L = M ` O ...+.e @.#.$.%.C &.j *.D E . + ",
+". + @ % =.G p G -.;.n >.,.'.0 a b ).d !.T ] B ~.C i j k l E . + ",
+". + L {.% 4 ].^.$ /.L (._.:.<., [.) }.|.f 1.^ 2.3.i 4.5.6.7.. + ",
+". + 8.L n # 5 & 9.0.a.b.c.N w d.e.f.! ~ { g.h./ ( i.4.j.6.k.. + ",
+". + l.m.n.L o.o.>.8.b.M ; p.q.r.c +.s.t.u.v.w.x.y.z.A.B.C.D.. + ",
+". + c.E.t = F.G.= H.u ; 0 I. .J.f.! K.T ] B %.C V L.M.N.O.P.. + ",
+". + N Q.R.S.- M T.R.U.V.W., [.X.Y.S Z.{ g.`./ ( i +k D E .+. + ",
+". + ++V.` N @+N #+$+++a %+&+c Y.*+~ =+] -+;+>+y.z.,+'+)+k.!+. + ",
+". + , ~+{+]+]+w ^+a , r.' c Y.! /+ at .(+_+`./ :+i j <+[+}+P.|+. + ",
+". + J.b .%+1+2+r.b ' y ) 3+*+4+5+6+7+^ g 8+9+0+a+j.b+7.c+d+. + ",
+". + f.c e+Q Q f+e+c f.Y.g+S ~ T (+7+B ;+/ h+i+j k B.}+D.j+k+. + ",
+". + ! d +.Y.Y.Y.l+d m+n+e o+T (+g.B ;+/ p+i L.M.q+)+r+.+d+s+. + ",
+". + ~ e !.S S n+s.e /+t+T u+] _+h.;+v+w+x+L.y+z+D A+B+C+D+E+. + ",
+". + =+T t.t.t.t.F+T G+H+] g.I+`.J+K+:+9+L.4.< N.}+L+M+N+s+O+. + ",
+". + g.P+(+#.(+(+Q+R+] _+U S+T+/ U+p+&.0+4.k B.V+k.W+X+Y+O+Z+. + ",
+". + `+B $.I+I+I+B @.@`.%.g >+C +@@@#@4.$@%@&@*@P.|+k+E+=@- at . + ",
+". + / g ~.;@;+;+;+g g / >+:+y.V i.j M.$@B.>@, at .+|+k+'@)@!@~@. + ",
+". + h C U+{@>+>+8+C w+]@9+^@i./@4.k j.D }+k.(@_ at k+:@<@[@}@|@. + ",
+". + ^@i 1 at x+9+9+x+i 2 at i.L.j y+<+< B.)+E L+W+|+k+s+O+3@}@4 at 5@. + ",
+". + +j 6 at L.7@/@8 at j : 4.A.*.9 at B.0@V+m P.!+d+a at E+)@[@b at 4@5 at c@. + ",
+". + 9 at k *.k M.d at e@k f at j.B.[+)+C.*@g at .+|+h at Y+i@=@[@}@4 at 5@j at k@. + ",
+". + 0 at D N.N.l@[+D D D )+V+m at k.k.n@j+X+k+o at p@q@[@}@4 at 5@j at r@s at . + ",
+". + k.E A+t at u@m at v@E E k.w at n@M+x at X+k+o@E+y at Z+-@z at A@5 at j@B at C@D at . + ",
+". + . .+.+.+P.E at .+.+.+!+F at G@N+H at s+s+O+Z+[@}@I at J@5 at K@L at M@N at . . + ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + ",
+" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "};
diff --git a/components/pixmaps/weasel.xpm b/components/pixmaps/weasel.xpm
new file mode 100644
index 0000000..f0b1b87
--- /dev/null
+++ b/components/pixmaps/weasel.xpm
@@ -0,0 +1,1974 @@
+/* XPM */
+static const char * weasel_xpm[] = {
+"63 64 1907 2",
+" c None",
+". c #7C9AC3",
+"+ c #AFC3DB",
+"@ c #E2E8F1",
+"# c #D8E1ED",
+"$ c #A3B9D5",
+"% c #7E9CC5",
+"& c #89A7CB",
+"* c #84A3C7",
+"= c #B2C5DC",
+"- c #5C81B5",
+"; c #8CA8CB",
+"> c #EBF0F6",
+", c #F9FAFC",
+"' c #F4F8FB",
+") c #F8FAFC",
+"! c #F7F9FB",
+"~ c #B0C3DB",
+"{ c #5F84B6",
+"] c #A5BBD6",
+"^ c #B6C8DE",
+"/ c #EAEFF5",
+"( c #E9EFF6",
+"_ c #B8CADF",
+": c #92ACCE",
+"< c #ADC1DA",
+"[ c #5B82B6",
+"} c #6A8BBC",
+"| c #8AA2C7",
+"1 c #D3DEEB",
+"2 c #F4F7FB",
+"3 c #E7EEF7",
+"4 c #E5EDF6",
+"5 c #F7F9FC",
+"6 c #F6F9FB",
+"7 c #DEE6F0",
+"8 c #FCFCFE",
+"9 c #F7FAFC",
+"0 c #EFF4F9",
+"a c #FAFCFE",
+"b c #FEFEFF",
+"c c #FBFCFD",
+"d c #F6F8FB",
+"e c #CFDAE9",
+"f c #90ABCD",
+"g c #5981B4",
+"h c #8BA5C9",
+"i c #EAF1F8",
+"j c #EBF1F8",
+"k c #F6F9FC",
+"l c #FFFFFF",
+"m c #FEFEFE",
+"n c #F5F8FC",
+"o c #EBF2F9",
+"p c #F9FBFD",
+"q c #FAFBFD",
+"r c #CBD8E8",
+"s c #CEDAE9",
+"t c #7190BC",
+"u c #688BBA",
+"v c #809EC7",
+"w c #A2B7D4",
+"x c #ABBFD9",
+"y c #D6DFEC",
+"z c #EDF2F9",
+"A c #FCFDFE",
+"B c #CCDDEE",
+"C c #E8F0F7",
+"D c #7193BD",
+"E c #88A4CA",
+"F c #98B0D0",
+"G c #9BB3D1",
+"H c #99B0D1",
+"I c #95AFD0",
+"J c #97B0D0",
+"K c #9AB3D1",
+"L c #C7D4E5",
+"M c #DEE5F0",
+"N c #F9FBFC",
+"O c #F0F5FA",
+"P c #FBFCFE",
+"Q c #E3ECF5",
+"R c #D2E0F0",
+"S c #FBFDFE",
+"T c #FDFEFE",
+"U c #7D9DC4",
+"V c #88A3C6",
+"W c #A1B8D5",
+"X c #B6C7DE",
+"Y c #AEC1DA",
+"Z c #83A0C6",
+"` c #9DB4D3",
+" . c #D4DEEB",
+".. c #F1F5F8",
+"+. c #F5F8FA",
+"@. c #F8FAFB",
+"#. c #FAFBFC",
+"$. c #FBFBFD",
+"%. c #FCFCFD",
+"&. c #FDFDFE",
+"*. c #F8FBFD",
+"=. c #F1F6FA",
+"-. c #F8FAFD",
+";. c #E9F0F7",
+">. c #F2F6F9",
+",. c #F0F4F8",
+"'. c #D0DBE9",
+"). c #7696C1",
+"!. c #809DC5",
+"~. c #FCFDFD",
+"{. c #FAFCFD",
+"]. c #F1F6FB",
+"^. c #DFE9F4",
+"/. c #E8EFF7",
+"(. c #EDF3F8",
+"_. c #B8C9DE",
+":. c #89A4C8",
+"<. c #D1DCEA",
+"[. c #E1EAF5",
+"}. c #ECF2F9",
+"|. c #E0EAF4",
+"1. c #F1F5FA",
+"2. c #E3E9F2",
+"3. c #86A2C9",
+"4. c #E4EAF2",
+"5. c #E3E3E3",
+"6. c #8A8C8E",
+"7. c #727E8B",
+"8. c #DEE4EB",
+"9. c #E3ECF6",
+"0. c #E7EFF7",
+"a. c #E5EBF3",
+"b. c #7595C2",
+"c. c #E4EAF3",
+"d. c #F5F8FB",
+"e. c #F0F4F9",
+"f. c #EAF1F7",
+"g. c #E5EDF5",
+"h. c #E1EAF4",
+"i. c #DFE9F3",
+"j. c #DEE8F2",
+"k. c #DEE7F2",
+"l. c #DEE7F3",
+"m. c #DDE7F2",
+"n. c #E7EEF6",
+"o. c #EAF0F8",
+"p. c #EFF4FA",
+"q. c #595959",
+"r. c #5F5F5F",
+"s. c #8C8C8D",
+"t. c #5D6A77",
+"u. c #FEFFFF",
+"v. c #DBE4EF",
+"w. c #CBD7E7",
+"x. c #F3F7FB",
+"y. c #ECF2F8",
+"z. c #E4ECF4",
+"A. c #CCD9E7",
+"B. c #97B3D9",
+"C. c #91AFD8",
+"D. c #7C9CCA",
+"E. c #3D71BD",
+"F. c #4577C0",
+"G. c #4979C1",
+"H. c #4A7AC1",
+"I. c #5A83BF",
+"J. c #7597C6",
+"K. c #83A3D0",
+"L. c #8EADD8",
+"M. c #B7CAE2",
+"N. c #414141",
+"O. c #0B0B0B",
+"P. c #080808",
+"Q. c #304256",
+"R. c #EFF3F8",
+"S. c #B7C8DE",
+"T. c #90ABCC",
+"U. c #F2F6FA",
+"V. c #E9F0F6",
+"W. c #CCD9E9",
+"X. c #93B0D6",
+"Y. c #4476BF",
+"Z. c #5381C3",
+"`. c #5482C4",
+" + c #618CC9",
+".+ c #6E95CE",
+"++ c #779CD1",
+"@+ c #7DA0D3",
+"#+ c #80A2D4",
+"$+ c #81A3D4",
+"%+ c #7C9FD2",
+"&+ c #759AD0",
+"*+ c #6B93CC",
+"=+ c #5D89C8",
+"-+ c #6F95CC",
+";+ c #C1C1C1",
+">+ c #767676",
+",+ c #4E5258",
+"'+ c #6286AE",
+")+ c #7F8C99",
+"!+ c #697078",
+"~+ c #95999D",
+"{+ c #F7F8F9",
+"]+ c #E4EBF3",
+"^+ c #86A2C7",
+"/+ c #CAD7E7",
+"(+ c #EDF2F8",
+"_+ c #CAD8E8",
+":+ c #85A3CD",
+"<+ c #4E7DC0",
+"[+ c #4779C1",
+"}+ c #608BC9",
+"|+ c #749AD0",
+"1+ c #83A5D5",
+"2+ c #8FAED9",
+"3+ c #98B4DC",
+"4+ c #9EB9DF",
+"5+ c #A2BCE0",
+"6+ c #A4BEE1",
+"7+ c #A6BEE1",
+"8+ c #A4BDE1",
+"9+ c #A1BBDF",
+"0+ c #9CB7DE",
+"a+ c #95B2DC",
+"b+ c #8BABD8",
+"c+ c #91AFDA",
+"d+ c #F1F1F1",
+"e+ c #EBEEF1",
+"f+ c #D4E1F0",
+"g+ c #8BA2BA",
+"h+ c #1F2429",
+"i+ c #6D6D6D",
+"j+ c #545454",
+"k+ c #C7C7C7",
+"l+ c #F6F8FA",
+"m+ c #9CB3D3",
+"n+ c #7D9BC4",
+"o+ c #E2E9F2",
+"p+ c #8EABD2",
+"q+ c #4676BB",
+"r+ c #4376BF",
+"s+ c #5E89C8",
+"t+ c #7399D0",
+"u+ c #86A7D6",
+"v+ c #94B1DB",
+"w+ c #9FB9DF",
+"x+ c #A7BFE2",
+"y+ c #AEC4E3",
+"z+ c #B2C7E5",
+"A+ c #B5CAE6",
+"B+ c #B7CBE7",
+"C+ c #B6CAE6",
+"D+ c #B4C9E6",
+"E+ c #B1C6E5",
+"F+ c #ACC2E3",
+"G+ c #A5BDE0",
+"H+ c #A6BEE0",
+"I+ c #E9EEF5",
+"J+ c #6D8DAF",
+"K+ c #161A1E",
+"L+ c #111111",
+"M+ c #0D0D0D",
+"N+ c #C5C5C5",
+"O+ c #A4BAD5",
+"P+ c #ADC0DA",
+"Q+ c #CBD7E6",
+"R+ c #4E79B7",
+"S+ c #4B7BC2",
+"T+ c #668FCB",
+"U+ c #6C94CD",
+"V+ c #7DA1D3",
+"W+ c #8EADD9",
+"X+ c #9BB7DE",
+"Y+ c #ADC3E3",
+"Z+ c #B3C8E5",
+"`+ c #B7CCE7",
+" @ c #BACEE8",
+".@ c #BDCFE9",
+"+@ c #BED0E9",
+"@@ c #BDD0E9",
+"#@ c #BCCFE9",
+"$@ c #BACDE8",
+"%@ c #B1C6E4",
+"&@ c #A6BDDD",
+"*@ c #C3D0DF",
+"=@ c #E4EDF6",
+"-@ c #E3EBF4",
+";@ c #A8AAAD",
+">@ c #7E7E7E",
+",@ c #8C8C8C",
+"'@ c #FDFDFD",
+")@ c #F2F5F9",
+"!@ c #91ABCE",
+"~@ c #C8D6E6",
+"{@ c #CED9E9",
+"]@ c #2F66B3",
+"^@ c #356BBC",
+"/@ c #5382C5",
+"(@ c #769BD1",
+"_@ c #98B4DD",
+":@ c #A2BBE0",
+"<@ c #A3BDE1",
+"[@ c #A5BEE1",
+"}@ c #B6CBE7",
+"|@ c #B9CDE8",
+"1@ c #BED1E9",
+"2@ c #BBCEE8",
+"3@ c #B8CCE8",
+"4@ c #B5C9E6",
+"5@ c #A7BEDE",
+"6@ c #A7B8D0",
+"7@ c #E4ECF6",
+"8@ c #D7E4F1",
+"9@ c #DFEAF4",
+"0@ c #7C9AC4",
+"a@ c #E0E8F1",
+"b@ c #F4F7FA",
+"c@ c #AEC2DC",
+"d@ c #346CBB",
+"e@ c #4F7FC4",
+"f@ c #6992CD",
+"g@ c #99B5DD",
+"h@ c #DBE4F3",
+"i@ c #DCE6F3",
+"j@ c #AEC5E5",
+"k@ c #AEC4E4",
+"l@ c #B1C8E5",
+"m@ c #B4CAE6",
+"n@ c #B8CCE7",
+"o@ c #B9CEE8",
+"p@ c #B6CAE7",
+"q@ c #B3C9E6",
+"r@ c #B0C6E5",
+"s@ c #DBE6F3",
+"t@ c #D8E4F2",
+"u@ c #809CC6",
+"v@ c #7697C1",
+"w@ c #F2F5F8",
+"x@ c #F3F6F9",
+"y@ c #9AAFCC",
+"z@ c #4C7DC3",
+"A@ c #618CCA",
+"B@ c #769CD2",
+"C@ c #85A7D7",
+"D@ c #96B3DD",
+"E@ c #C7D6ED",
+"F@ c #F0F4FA",
+"G@ c #CFDCEF",
+"H@ c #ADC5E5",
+"I@ c #AEC5E4",
+"J@ c #AFC6E5",
+"K@ c #B1C7E5",
+"L@ c #B2C8E5",
+"M@ c #AFC5E4",
+"N@ c #ADC3E4",
+"O@ c #A9C1E3",
+"P@ c #AFC3DD",
+"Q@ c #DBE6F1",
+"R@ c #D2E0EF",
+"S@ c #C8D9EC",
+"T@ c #E0EAF5",
+"U@ c #EBF1F7",
+"V@ c #8FA8CC",
+"W@ c #7293C0",
+"X@ c #91A6C3",
+"Y@ c #5B88C8",
+"Z@ c #6B94CE",
+"`@ c #7CA1D4",
+" # c #89AAD8",
+".# c #9CB8DE",
+"+# c #ADC4E4",
+"@# c #C3D4EC",
+"## c #ECF1F9",
+"$# c #BFCFEA",
+"%# c #A7BDE2",
+"&# c #A8C0E4",
+"*# c #AAC2E4",
+"=# c #ABC3E4",
+"-# c #ABC3E3",
+";# c #A9C2E4",
+"># c #A8C1E4",
+",# c #A7C0E3",
+"'# c #A4BEE2",
+")# c #93AFD5",
+"!# c #C2D0E2",
+"~# c #D9E5F2",
+"{# c #D8E4F1",
+"]# c #ECECEC",
+"^# c #EBEBEB",
+"/# c #F7F7F7",
+"(# c #DEE8F4",
+"_# c #A3B8D6",
+":# c #7E9DC5",
+"<# c #8BA0BD",
+"[# c #658FCC",
+"}# c #7098D0",
+"|# c #7EA2D4",
+"1# c #8BACD9",
+"2# c #C1D2EA",
+"3# c #A3BDE2",
+"4# c #BFD1EB",
+"5# c #E4EBF6",
+"6# c #B4C7E6",
+"7# c #9FB7DF",
+"8# c #A0B8E0",
+"9# c #A2BDE1",
+"0# c #A2BEE2",
+"a# c #A2BDE2",
+"b# c #A1BDE1",
+"c# c #A1BCE1",
+"d# c #A0BCE1",
+"e# c #9FBBE1",
+"f# c #9DB9E0",
+"g# c #9AB7DF",
+"h# c #97B0D3",
+"i# c #D6E0EC",
+"j# c #404040",
+"k# c #555555",
+"l# c #696969",
+"m# c #BEBEBE",
+"n# c #E6EEF6",
+"o# c #C5D7EB",
+"p# c #DAE6F2",
+"q# c #D6E4F1",
+"r# c #DDE8F3",
+"s# c #E6EDF6",
+"t# c #BCCCE1",
+"u# c #7398C6",
+"v# c #F1F4F8",
+"w# c #8EA3BF",
+"x# c #6993CE",
+"y# c #719AD1",
+"z# c #7DA2D5",
+"A# c #86A9D8",
+"B# c #94B3DD",
+"C# c #94B2DD",
+"D# c #96B4DD",
+"E# c #C0D1EB",
+"F# c #D2DDF0",
+"G# c #A4BDE2",
+"H# c #99B7E0",
+"I# c #9AB8E0",
+"J# c #99B7DF",
+"K# c #98B6DF",
+"L# c #97B5DE",
+"M# c #95B4DE",
+"N# c #93B2DD",
+"O# c #90B0DC",
+"P# c #B3C7E1",
+"Q# c #CACACA",
+"R# c #202020",
+"S# c #808080",
+"T# c #797979",
+"U# c #333333",
+"V# c #ABABAB",
+"W# c #F2F6FB",
+"X# c #CFDFEF",
+"Y# c #D6E3F1",
+"Z# c #CDDAE9",
+"`# c #94AECF",
+" $ c #2F6ABF",
+".$ c #5D86BE",
+"+$ c #F0F3F8",
+"@$ c #8FA4BF",
+"#$ c #7199D0",
+"$$ c #79A0D4",
+"%$ c #80A5D7",
+"&$ c #85A8D8",
+"*$ c #89ABD9",
+"=$ c #8BADDA",
+"-$ c #8DADDB",
+";$ c #95B3DD",
+">$ c #C0D2EB",
+",$ c #BED0EA",
+"'$ c #94B4DE",
+")$ c #90B1DC",
+"!$ c #91B1DC",
+"~$ c #8EAFDC",
+"{$ c #8DAEDB",
+"]$ c #8CADDA",
+"^$ c #84A4D1",
+"/$ c #BAC8DA",
+"($ c #F6F7F7",
+"_$ c #585858",
+":$ c #161616",
+"<$ c #101010",
+"[$ c #565656",
+"}$ c #E4E4E4",
+"|$ c #C6D5E9",
+"1$ c #799BCA",
+"2$ c #7397CB",
+"3$ c #5889CE",
+"4$ c #0A4DAD",
+"5$ c #EFF2F7",
+"6$ c #98ACC5",
+"7$ c #6792CD",
+"8$ c #6F98D0",
+"9$ c #749DD3",
+"0$ c #7BA2D5",
+"a$ c #7EA4D6",
+"b$ c #81A6D7",
+"c$ c #84A8D8",
+"d$ c #85A9D9",
+"e$ c #87AADA",
+"f$ c #92B2DD",
+"g$ c #BACEE9",
+"h$ c #9EBAE0",
+"i$ c #8AADDA",
+"j$ c #8CAEDB",
+"k$ c #8CADDB",
+"l$ c #89ACDA",
+"m$ c #88ABDA",
+"n$ c #87AAD9",
+"o$ c #82A6D7",
+"p$ c #7FA4D6",
+"q$ c #7EA0CE",
+"r$ c #B3C2D6",
+"s$ c #E6E7E9",
+"t$ c #A2A2A2",
+"u$ c #AFAFAF",
+"v$ c #D0DAE7",
+"w$ c #A0B6D3",
+"x$ c #7B9ECF",
+"y$ c #4274BE",
+"z$ c #2C67BB",
+"A$ c #1F5FB9",
+"B$ c #0648AA",
+"C$ c #3F72BB",
+"D$ c #EEF2F7",
+"E$ c #A3B6CE",
+"F$ c #628FCC",
+"G$ c #6C96D0",
+"H$ c #6E98D1",
+"I$ c #749CD3",
+"J$ c #779FD4",
+"K$ c #7AA1D5",
+"L$ c #7CA3D6",
+"M$ c #7DA4D7",
+"N$ c #7FA5D7",
+"O$ c #80A6D7",
+"P$ c #8EB0DC",
+"Q$ c #AEC6E6",
+"R$ c #91B2DD",
+"S$ c #92B3DE",
+"T$ c #90B2DD",
+"U$ c #8BAEDB",
+"V$ c #85AAD9",
+"W$ c #81A6D8",
+"X$ c #80A5D8",
+"Y$ c #7EA5D7",
+"Z$ c #7DA3D7",
+"`$ c #7CA2D6",
+" % c #7AA0D5",
+".% c #789FD4",
+"+% c #6C86B8",
+"@% c #839AB9",
+"#% c #ADBBCE",
+"$% c #B8C5D6",
+"%% c #B0BFD5",
+"&% c #B7C8DF",
+"*% c #BDCCE2",
+"=% c #CAD8ED",
+"-% c #8FADDA",
+";% c #5B87C7",
+">% c #2962B6",
+",% c #094BAD",
+"'% c #094BAC",
+")% c #356BBB",
+"!% c #B1C3DA",
+"~% c #5C8BCA",
+"{% c #6893CF",
+"]% c #6793D0",
+"^% c #6C96D1",
+"/% c #6F99D2",
+"(% c #719BD3",
+"_% c #749DD4",
+":% c #759DD5",
+"<% c #769FD5",
+"[% c #79A1D6",
+"}% c #7EA5D8",
+"|% c #9FBCE2",
+"1% c #B3CAE9",
+"2% c #A6C1E5",
+"3% c #ABC4E6",
+"4% c #A6C0E4",
+"5% c #99B8E0",
+"6% c #89ADDC",
+"7% c #7EA4D7",
+"8% c #77A0D6",
+"9% c #759FD5",
+"0% c #78A0D6",
+"a% c #7EA3D7",
+"b% c #88AADA",
+"c% c #9EBAE1",
+"d% c #A2BCE2",
+"e% c #7797C2",
+"f% c #7091C0",
+"g% c #9AB5DB",
+"h% c #D6E1F1",
+"i% c #D4DFF1",
+"j% c #9BB6DE",
+"k% c #7297CF",
+"l% c #4374BE",
+"m% c #2864BA",
+"n% c #2565BE",
+"o% c #084AAB",
+"p% c #0C4DAD",
+"q% c #356CBB",
+"r% c #B9CBE3",
+"s% c #5687CA",
+"t% c #6290CE",
+"u% c #618FCE",
+"v% c #6492CF",
+"w% c #6894D0",
+"x% c #6995D1",
+"y% c #6C97D2",
+"z% c #6C98D3",
+"A% c #6E99D3",
+"B% c #739CD5",
+"C% c #81A7D9",
+"D% c #97B7E0",
+"E% c #CBDBF0",
+"F% c #CAD9EF",
+"G% c #CBDAEF",
+"H% c #C5D6ED",
+"I% c #B2C9E8",
+"J% c #95B5DF",
+"K% c #83A8D9",
+"L% c #8BAEDC",
+"M% c #9EBCE2",
+"N% c #9AB8DF",
+"O% c #86A9DA",
+"P% c #749CD4",
+"Q% c #6793CF",
+"R% c #608FCD",
+"S% c #608DCD",
+"T% c #628FCD",
+"U% c #6C97D0",
+"V% c #B0C6E6",
+"W% c #A1BBE0",
+"X% c #7FA2D5",
+"Y% c #4F7EC4",
+"Z% c #2660B5",
+"`% c #1D5AB2",
+" & c #6494D4",
+".& c #6D9DDB",
+"+& c #0F52B2",
+"@& c #0A4BAC",
+"#& c #0F50AF",
+"$& c #326ABB",
+"%& c #E9EFF5",
+"&& c #E3EAF2",
+"*& c #ADC2DF",
+"=& c #5082C8",
+"-& c #5A8ACB",
+";& c #5D8DCC",
+">& c #5D8DCD",
+",& c #6090CE",
+"'& c #6291CF",
+")& c #6492D0",
+"!& c #6594D1",
+"~& c #6895D1",
+"{& c #709BD4",
+"]& c #86ABDB",
+"^& c #A9C4E5",
+"/& c #E8EFF9",
+"(& c #E5EDF7",
+"_& c #DFE9F5",
+":& c #D4E2F3",
+"<& c #CBDBEF",
+"[& c #B8CDEA",
+"}& c #9CBAE1",
+"|& c #80A6D9",
+"1& c #6D98D2",
+"2& c #6291D0",
+"3& c #6190CF",
+"4& c #5F8ECE",
+"5& c #608ECE",
+"6& c #608FCE",
+"7& c #5989CB",
+"8& c #5586C9",
+"9& c #5C8CCC",
+"0& c #8FAFDB",
+"a& c #83A6D7",
+"b& c #789ED3",
+"c& c #5A88C9",
+"d& c #366DBC",
+"e& c #1856B1",
+"f& c #0748A9",
+"g& c #2C6ABE",
+"h& c #407DCC",
+"i& c #094CAC",
+"j& c #1052B0",
+"k& c #2F68B9",
+"l& c #D2DCEA",
+"m& c #DCE4EF",
+"n& c #BAC9DE",
+"o& c #6D96CC",
+"p& c #5084C8",
+"q& c #598ACC",
+"r& c #5689CB",
+"s& c #598BCC",
+"t& c #5B8CCD",
+"u& c #5D8ECE",
+"v& c #5E8FCF",
+"w& c #6191D0",
+"x& c #6C99D3",
+"y& c #89AEDC",
+"z& c #B1C9E9",
+"A& c #D7E3F3",
+"B& c #F4F7FC",
+"C& c #F1F5FB",
+"D& c #DFE9F6",
+"E& c #BDD1EB",
+"F& c #88ADDC",
+"G& c #6B98D3",
+"H& c #5F90CF",
+"I& c #5C8DCE",
+"J& c #5A8CCD",
+"K& c #5D8ECD",
+"L& c #5587CA",
+"M& c #4F83C8",
+"N& c #4C80C7",
+"O& c #769ED4",
+"P& c #5787C9",
+"Q& c #5686C9",
+"R& c #4B7EC5",
+"S& c #366EBD",
+"T& c #215DB5",
+"U& c #1150AE",
+"V& c #0647A9",
+"W& c #0D4FB0",
+"X& c #6597D8",
+"Y& c #2C6DC3",
+"Z& c #0A4BAB",
+"`& c #0F4FAE",
+" * c #1253B0",
+".* c #2763B7",
+"+* c #B1C4DE",
+"@* c #BBCBE0",
+"#* c #729BD1",
+"$* c #497FC7",
+"%* c #5387CB",
+"&* c #5084C9",
+"** c #5286CA",
+"=* c #5488CC",
+"-* c #5689CD",
+";* c #578BCD",
+">* c #5A8CCE",
+",* c #6897D3",
+"'* c #91B3DF",
+")* c #C9D8EF",
+"!* c #E7EEF8",
+"~* c #EEF3FA",
+"{* c #D8E3F4",
+"]* c #82A8DA",
+"^* c #6694D2",
+"/* c #5B8DCE",
+"(* c #588BCE",
+"_* c #578ACD",
+":* c #5688CC",
+"<* c #598BCD",
+"[* c #578ACC",
+"}* c #4C81C8",
+"|* c #487EC7",
+"1* c #7CA3D7",
+"2* c #447BC5",
+"3* c #3B74C1",
+"4* c #3771BF",
+"5* c #2D69BC",
+"6* c #205FB7",
+"7* c #1656B2",
+"8* c #0E4FAD",
+"9* c #0749AA",
+"0* c #0749AB",
+"a* c #4E84D0",
+"b* c #7DA4DE",
+"c* c #185BB9",
+"d* c #0C4CAC",
+"e* c #1151AE",
+"f* c #1556B2",
+"g* c #1A5BB5",
+"h* c #8FADD7",
+"i* c #EDF0F6",
+"j* c #C2D1E3",
+"k* c #B9C9DF",
+"l* c #719AD2",
+"m* c #437CC7",
+"n* c #4A81C9",
+"o* c #4D83C9",
+"p* c #4C83CA",
+"q* c #4D84CB",
+"r* c #4F86CB",
+"s* c #588CCE",
+"t* c #759FD7",
+"u* c #9FBCE3",
+"v* c #B3CBEA",
+"w* c #C9DBEF",
+"x* c #E1EAF6",
+"y* c #E9F0F8",
+"z* c #C9DAEF",
+"A* c #A2BFE4",
+"B* c #75A0D7",
+"C* c #5D8FCF",
+"D* c #5489CD",
+"E* c #5187CC",
+"F* c #5185CC",
+"G* c #5287CC",
+"H* c #4B82CA",
+"I* c #4980C8",
+"J* c #457DC7",
+"K* c #447BC6",
+"L* c #3570C1",
+"M* c #306DBF",
+"N* c #2A68BC",
+"O* c #2261B8",
+"P* c #1355B1",
+"Q* c #0E4FAE",
+"R* c #0B4BAB",
+"S* c #3572C7",
+"T* c #6597DA",
+"U* c #1255B4",
+"V* c #1252AF",
+"W* c #1758B3",
+"X* c #1E5FB7",
+"Y* c #7CA0CF",
+"Z* c #C9D6E6",
+"`* c #E1E8F1",
+" = c #B5C6DD",
+".= c #B3C5DB",
+"+= c #6B95CE",
+"@= c #3E78C6",
+"#= c #407BC7",
+"$= c #457EC8",
+"%= c #76A1D7",
+"&= c #9CBBE2",
+"*= c #8CB0DE",
+"== c #6494D3",
+"-= c #6293D2",
+";= c #85ACDD",
+">= c #ACC6E8",
+",= c #C5D7EF",
+"'= c #D5E2F3",
+")= c #B5CCEA",
+"!= c #6394D2",
+"~= c #5389CD",
+"{= c #4D85CC",
+"]= c #5487CD",
+"^= c #4C84CB",
+"/= c #4780C9",
+"(= c #578ACE",
+"_= c #9CBAE2",
+":= c #437CC8",
+"<= c #3471C2",
+"[= c #316EC0",
+"}= c #2765BB",
+"|= c #2061B9",
+"1= c #1A5BB6",
+"2= c #1556B3",
+"3= c #1151AF",
+"4= c #114FAD",
+"5= c #0648A9",
+"6= c #1C60BD",
+"7= c #92B3E5",
+"8= c #5990D7",
+"9= c #1152B1",
+"0= c #1050AE",
+"a= c #1353B0",
+"b= c #1B5AB4",
+"c= c #2663BA",
+"d= c #3B73C1",
+"e= c #BACBDF",
+"f= c #AFC2DB",
+"g= c #A7BBD5",
+"h= c #5184C6",
+"i= c #3A77C6",
+"j= c #3F7AC7",
+"k= c #5E90D0",
+"l= c #87ACDC",
+"m= c #9BBBE2",
+"n= c #77A2D8",
+"o= c #4E86CC",
+"p= c #4580CA",
+"q= c #4A82CB",
+"r= c #5389CE",
+"s= c #6596D3",
+"t= c #7DA7DB",
+"u= c #92B5E1",
+"v= c #98B9E2",
+"w= c #9CBCE3",
+"x= c #AFC8E9",
+"y= c #6796D4",
+"z= c #5289CD",
+"A= c #4A83CB",
+"B= c #4C84CC",
+"C= c #5087CD",
+"D= c #4881CA",
+"E= c #447EC9",
+"F= c #417DC8",
+"G= c #3D79C7",
+"H= c #578BCE",
+"I= c #9FBDE3",
+"J= c #3471C3",
+"K= c #316FC2",
+"L= c #2E6CBF",
+"M= c #2968BD",
+"N= c #2665BC",
+"O= c #2162BA",
+"P= c #1C5DB7",
+"Q= c #1859B4",
+"R= c #0F4EAD",
+"S= c #0848AA",
+"T= c #1458B7",
+"U= c #75A6E1",
+"V= c #4683D2",
+"W= c #1052B1",
+"X= c #1251AF",
+"Y= c #1655B1",
+"Z= c #205FB6",
+"`= c #2F6ABC",
+" - c #437AC4",
+".- c #88A9D7",
+"+- c #B3C7E3",
+"@- c #99B6DB",
+"#- c #5F8FCD",
+"$- c #5A8DCF",
+"%- c #CCDCF0",
+"&- c #9BBAE2",
+"*- c #588ED0",
+"=- c #4580CB",
+"-- c #4681CB",
+";- c #4881CB",
+">- c #4982CB",
+",- c #4C85CD",
+"'- c #538ACF",
+")- c #5E92D2",
+"!- c #6998D5",
+"~- c #6C9AD6",
+"{- c #91B4E1",
+"]- c #77A1D9",
+"^- c #4F86CD",
+"/- c #5188CE",
+"(- c #4983CC",
+"_- c #4A81CB",
+":- c #4880CB",
+"<- c #407CC8",
+"[- c #588CCF",
+"}- c #5086CC",
+"|- c #3775C5",
+"1- c #3674C4",
+"2- c #3271C2",
+"3- c #2E6DC0",
+"4- c #2A69BE",
+"5- c #2766BD",
+"6- c #2263BA",
+"7- c #1F5FB8",
+"8- c #205EB7",
+"9- c #0E4EAC",
+"0- c #0A4AAA",
+"a- c #1154B4",
+"b- c #669BDD",
+"c- c #3D7CCD",
+"d- c #1152B0",
+"e- c #1352AF",
+"f- c #1957B2",
+"g- c #2562B8",
+"h- c #3971C0",
+"i- c #82A7D9",
+"j- c #97B6DF",
+"k- c #91B2DE",
+"l- c #8FB1DD",
+"m- c #A8C2E5",
+"n- c #CDDDF0",
+"o- c #5188CD",
+"p- c #4781CB",
+"q- c #4882CC",
+"r- c #4A83CC",
+"s- c #4B84CD",
+"t- c #4E86CE",
+"u- c #5087CF",
+"v- c #538AD0",
+"w- c #568CD0",
+"x- c #578CD0",
+"y- c #568BD0",
+"z- c #5E92D3",
+"A- c #A0BEE5",
+"B- c #558AD0",
+"C- c #4B84CC",
+"D- c #4C81CB",
+"E- c #5A8ED1",
+"F- c #5B90D0",
+"G- c #3C78C7",
+"H- c #3876C5",
+"I- c #3573C3",
+"J- c #2D6CC0",
+"K- c #2B6ABE",
+"L- c #5D8CCC",
+"M- c #2461B8",
+"N- c #1555B0",
+"O- c #104FAD",
+"P- c #1053B3",
+"Q- c #538DDA",
+"R- c #3A7BCE",
+"S- c #1253B1",
+"T- c #1454B0",
+"U- c #1B59B2",
+"V- c #2964B8",
+"W- c #4177C2",
+"X- c #ABC4E5",
+"Y- c #C8D9EE",
+"Z- c #D1DFF1",
+"`- c #EBF1F9",
+" ; c #BED2EC",
+".; c #5F91D1",
+"+; c #5088CE",
+"@; c #4D86CD",
+"#; c #4F87CF",
+"$; c #5088CF",
+"%; c #5189D0",
+"&; c #528AD0",
+"*; c #538BD0",
+"=; c #558CD1",
+"-; c #548BD0",
+";; c #8DB2E0",
+">; c #81AADD",
+",; c #588ED2",
+"'; c #578DD1",
+"); c #4E87CE",
+"!; c #5D91D2",
+"~; c #A2BFE5",
+"{; c #6394D3",
+"]; c #427EC9",
+"^; c #3F7AC8",
+"/; c #3370C2",
+"(; c #5085CA",
+"_; c #608ECD",
+":; c #215FB7",
+"<; c #4D89D8",
+"[; c #3B7DD0",
+"}; c #1355B2",
+"|; c #1555B1",
+"1; c #1C5AB3",
+"2; c #2A65B9",
+"3; c #4478C2",
+"4; c #729BD3",
+"5; c #B3C9E8",
+"6; c #DAE5F4",
+"7; c #E9EFF8",
+"8; c #AFC8E8",
+"9; c #4981CB",
+"0; c #5289CF",
+"a; c #729FD8",
+"b; c #5C8FD2",
+"c; c #528AD1",
+"d; c #538BD1",
+"e; c #548CD1",
+"f; c #558CD2",
+"g; c #568ED2",
+"h; c #578ED2",
+"i; c #6295D5",
+"j; c #6D9DD8",
+"k; c #AEC9EA",
+"l; c #75A2DB",
+"m; c #72A0D9",
+"n; c #6A99D7",
+"o; c #6799D6",
+"p; c #B0C8E8",
+"q; c #6797D5",
+"r; c #4681CC",
+"s; c #447FCA",
+"t; c #3D7AC8",
+"u; c #3976C6",
+"v; c #3A76C5",
+"w; c #719CD4",
+"x; c #2665BB",
+"y; c #1D5CB6",
+"z; c #1250AE",
+"A; c #0E4DAC",
+"B; c #4E8BD8",
+"C; c #3F81D2",
+"D; c #1658B4",
+"E; c #1756B2",
+"F; c #1D5AB4",
+"G; c #2963B8",
+"H; c #3E74C1",
+"I; c #6792CF",
+"J; c #ACC5E5",
+"K; c #BACEEA",
+"L; c #AAC4E6",
+"M; c #95B6E0",
+"N; c #719ED6",
+"O; c #568BCF",
+"P; c #4B83CC",
+"Q; c #4A84CC",
+"R; c #558BCF",
+"S; c #79A4DB",
+"T; c #6798D6",
+"U; c #558DD2",
+"V; c #588FD3",
+"W; c #588FD4",
+"X; c #5990D4",
+"Y; c #5A91D5",
+"Z; c #6497D7",
+"`; c #6C9DD9",
+" > c #78A5DC",
+".> c #B1CAEA",
+"+> c #B7CEEC",
+"@> c #A3C1E7",
+"#> c #9DBDE5",
+"$> c #C4D7EF",
+"%> c #5188CF",
+"&> c #4D85CD",
+"*> c #437FCA",
+"=> c #4780CA",
+"-> c #5B8DCF",
+";> c #5589CC",
+">> c #3874C3",
+",> c #2A68BE",
+"'> c #2563BA",
+")> c #1E5CB5",
+"!> c #1351AE",
+"~> c #1659B7",
+"{> c #4D8CD9",
+"]> c #4585D5",
+"^> c #195BB7",
+"/> c #1858B3",
+"(> c #2661B8",
+"_> c #4277C3",
+":> c #7CA2D7",
+"<> c #7BA4D8",
+"[> c #7BA4D9",
+"}> c #6F9CD5",
+"|> c #5D90D1",
+"1> c #4D86CE",
+"2> c #5189CF",
+"3> c #5D92D3",
+"4> c #6A9BD7",
+"5> c #5A92D5",
+"6> c #5B92D5",
+"7> c #5C93D6",
+"8> c #5D94D6",
+"9> c #6699D8",
+"0> c #699CD9",
+"a> c #74A3DC",
+"b> c #96BAE5",
+"c> c #C0D5EF",
+"d> c #E3ECF7",
+"e> c #D8E4F4",
+"f> c #DFEAF6",
+"g> c #AAC5E9",
+"h> c #719ED9",
+"i> c #5B90D2",
+"j> c #4D85CE",
+"k> c #4782CC",
+"l> c #437DC9",
+"m> c #3774C5",
+"n> c #2B69BE",
+"o> c #1F5CB5",
+"p> c #1956B1",
+"q> c #1451AF",
+"r> c #1D60BB",
+"s> c #4F8DDB",
+"t> c #4C8BD9",
+"u> c #1E60BA",
+"v> c #1958B3",
+"w> c #1C5AB4",
+"x> c #376DBD",
+"y> c #618DCC",
+"z> c #4C7FC7",
+"A> c #4B80C8",
+"B> c #5588C9",
+"C> c #4D7DBF",
+"D> c #4D7AB4",
+"E> c #4A76B4",
+"F> c #4A7DC4",
+"G> c #6699D7",
+"H> c #5F94D5",
+"I> c #5C93D5",
+"J> c #5E95D7",
+"K> c #6096D7",
+"L> c #6A9CDA",
+"M> c #679AD9",
+"N> c #699CDA",
+"O> c #81ACDF",
+"P> c #ABC7EA",
+"Q> c #D6E4F5",
+"R> c #F2F6FC",
+"S> c #F4F5FC",
+"T> c #E0EAF7",
+"U> c #B5CDEC",
+"V> c #81ABDE",
+"W> c #6195D5",
+"X> c #548BD1",
+"Y> c #5189CE",
+"Z> c #4983CB",
+"`> c #417DC9",
+" , c #3C79C7",
+"., c #3875C5",
+"+, c #326FC2",
+"@, c #2562B9",
+"#, c #1F5BB5",
+"$, c #1A56B1",
+"%, c #1453AF",
+"&, c #3370C4",
+"*, c #5A97E1",
+"=, c #5592DD",
+"-, c #2466BF",
+";, c #1A59B4",
+">, c #2E67BA",
+",, c #5382C6",
+"', c #346CBE",
+"), c #336CBF",
+"!, c #3C75C4",
+"~, c #447CC7",
+"{, c #4979B8",
+"], c #5680B5",
+"^, c #4774AD",
+"/, c #4F7AB0",
+"(, c #5B82B5",
+"_, c #5583BF",
+":, c #5C90D1",
+"<, c #5F95D6",
+"[, c #6398D8",
+"}, c #6197D8",
+"|, c #6399D9",
+"1, c #6B9EDB",
+"2, c #6B9DDB",
+"3, c #659AD9",
+"4, c #6D9FDB",
+"5, c #85B0E2",
+"6, c #AFCAEB",
+"7, c #DFEAF7",
+"8, c #F9FAFD",
+"9, c #BAD1ED",
+"0, c #84ABDF",
+"a, c #5C91D3",
+"b, c #5A8FD2",
+"c, c #4B85CD",
+"d, c #4782CB",
+"e, c #3976C5",
+"f, c #3270C2",
+"g, c #2B68BD",
+"h, c #2561B8",
+"i, c #205BB4",
+"j, c #1654B0",
+"k, c #235EB6",
+"l, c #437FCD",
+"m, c #66A0E4",
+"n, c #5E9AE1",
+"o, c #2D6FC6",
+"p, c #4A7CC4",
+"q, c #2A64B9",
+"r, c #2762B8",
+"s, c #2E68BC",
+"t, c #346FC1",
+"u, c #3A71BD",
+"v, c #4E78B1",
+"w, c #406EA9",
+"x, c #3F6DA9",
+"y, c #4B77AE",
+"z, c #5881B4",
+"A, c #658ABA",
+"B, c #7596C1",
+"C, c #7A9BC5",
+"D, c #6B9AD3",
+"E, c #6698D6",
+"F, c #6599D9",
+"G, c #6398D9",
+"H, c #659ADA",
+"I, c #6DA0DC",
+"J, c #6C9FDC",
+"K, c #669CDB",
+"L, c #689CDB",
+"M, c #6EA0DD",
+"N, c #7FABE1",
+"O, c #B1CBED",
+"P, c #E7EFF9",
+"Q, c #E2EBF8",
+"R, c #EAF0FA",
+"S, c #D3E1F4",
+"T, c #83ADE0",
+"U, c #6B9DD9",
+"V, c #5E94D4",
+"W, c #558DD1",
+"X, c #5089D0",
+"Y, c #4480CB",
+"Z, c #3F7BC8",
+"`, c #326EC1",
+" ' c #2B67BC",
+".' c #2560B8",
+"+' c #1B57B2",
+"@' c #1D59B3",
+"#' c #356DBE",
+"$' c #4C88D4",
+"%' c #7BABE8",
+"&' c #70A6E7",
+"*' c #3A7CCF",
+"=' c #4379C4",
+"-' c #2964B9",
+";' c #235FB7",
+">' c #2B66BB",
+",' c #316CBF",
+"'' c #3768B9",
+")' c #537BB3",
+"!' c #4572AC",
+"~' c #4773AC",
+"{' c #527CB2",
+"]' c #5F86B7",
+"^' c #6C8FBD",
+"/' c #7999C3",
+"(' c #86A4C9",
+"_' c #9BB3D3",
+":' c #8EADD4",
+"<' c #739DD6",
+"[' c #689BDB",
+"}' c #6EA2DD",
+"|' c #6EA1DD",
+"1' c #699EDD",
+"2' c #6A9FDD",
+"3' c #6B9EDD",
+"4' c #90B6E5",
+"5' c #CEDFF4",
+"6' c #ADC9EB",
+"7' c #BCD4EF",
+"8' c #C7DAF2",
+"9' c #C7DBF2",
+"0' c #94B7E4",
+"a' c #77A6DE",
+"b' c #6297D7",
+"c' c #5A92D4",
+"d' c #568FD3",
+"e' c #528BD1",
+"f' c #4E88CF",
+"g' c #4581CB",
+"h' c #407BC8",
+"i' c #3975C4",
+"j' c #326DC0",
+"k' c #2560B7",
+"l' c #205CB4",
+"m' c #1D58B2",
+"n' c #2F67BA",
+"o' c #4078C4",
+"p' c #5491DB",
+"q' c #92BAED",
+"r' c #5592DB",
+"s' c #3772C3",
+"t' c #2161B8",
+"u' c #2762B9",
+"v' c #306ABD",
+"w' c #3671C1",
+"x' c #4876B1",
+"y' c #4F79B0",
+"z' c #5C84B6",
+"A' c #688DBB",
+"B' c #7496C0",
+"C' c #88A5CA",
+"D' c #95AFCF",
+"E' c #A4BAD6",
+"F' c #BDCDE1",
+"G' c #B5C7DE",
+"H' c #95B6DE",
+"I' c #79A8DE",
+"J' c #6EA2DF",
+"K' c #6DA2DF",
+"L' c #6AA1DF",
+"M' c #8FB9E7",
+"N' c #B5D0EF",
+"O' c #7AACE3",
+"P' c #8BB5E5",
+"Q' c #9ABEE8",
+"R' c #B6D0EE",
+"S' c #7EAAE1",
+"T' c #699DDA",
+"U' c #6097D7",
+"V' c #5C94D6",
+"W' c #5991D4",
+"X' c #558ED2",
+"Y' c #518AD0",
+"Z' c #4C85CE",
+"`' c #3873C3",
+" ) c #306BBE",
+".) c #2A65BA",
+"+) c #2560B6",
+"@) c #2760B6",
+"#) c #3D72BF",
+"$) c #609BE1",
+"%) c #AACDEF",
+"&) c #69A1E4",
+"*) c #3374C7",
+"=) c #2363BA",
+"-) c #2C66BB",
+";) c #4B75B4",
+">) c #5B83B6",
+",) c #5D84B7",
+"') c #678BBB",
+")) c #7294C0",
+"!) c #819FC6",
+"~) c #A7BCD7",
+"{) c #B4C6DD",
+"]) c #D3DDEB",
+"^) c #C4D4E7",
+"/) c #9CBCE1",
+"() c #71A4E0",
+"_) c #98BDEA",
+":) c #A7C7EC",
+"<) c #79A9E1",
+"[) c #7CACE3",
+"}) c #7CACE2",
+"|) c #7AAAE2",
+"1) c #76A8E1",
+"2) c #8DB6E5",
+"3) c #8DB4E4",
+"4) c #659BDA",
+"5) c #6298D9",
+"6) c #5F96D7",
+"7) c #5B93D5",
+"8) c #578FD3",
+"9) c #3C77C6",
+"0) c #2F69BD",
+"a) c #245FB6",
+"b) c #225DB5",
+"c) c #396EBD",
+"d) c #4479C3",
+"e) c #558DD4",
+"f) c #76AAE7",
+"g) c #7AADE8",
+"h) c #4081D1",
+"i) c #2868BE",
+"j) c #2764BA",
+"k) c #2A65BB",
+"l) c #2C67BC",
+"m) c #306ABE",
+"n) c #346FC0",
+"o) c #4573BE",
+"p) c #6488BA",
+"q) c #698DBC",
+"r) c #7E9EC5",
+"s) c #A3B9D6",
+"t) c #B2C4DC",
+"u) c #C1D0E3",
+"v) c #D4DEEC",
+"w) c #E8EDF4",
+"x) c #D1DEED",
+"y) c #A7C2E2",
+"z) c #A9C9EC",
+"A) c #7CADE4",
+"B) c #76AAE2",
+"C) c #74A8E1",
+"D) c #72A6E0",
+"E) c #72A5E0",
+"F) c #70A4E0",
+"G) c #73A6E0",
+"H) c #A3C3EA",
+"I) c #649ADA",
+"J) c #6198D8",
+"K) c #427CC8",
+"L) c #3B75C4",
+"M) c #346EC0",
+"N) c #2963B9",
+"O) c #255FB7",
+"P) c #2D65B9",
+"Q) c #4578C2",
+"R) c #4E83CA",
+"S) c #649ADE",
+"T) c #94B9E6",
+"U) c #94BDED",
+"V) c #4F90DC",
+"W) c #3373C7",
+"X) c #2966BC",
+"Y) c #2B68BC",
+"Z) c #2E69BD",
+"`) c #4377C5",
+" ! c #668AC2",
+".! c #7395C0",
+"+! c #7D9DC5",
+"@! c #9EB6D4",
+"#! c #ACC0DA",
+"$! c #BFCFE2",
+"%! c #CDD9E8",
+"&! c #E8EDF5",
+"*! c #F8F9FB",
+"=! c #C6DAEF",
+"-! c #8AB5E4",
+";! c #78ABE3",
+">! c #76AAE3",
+",! c #75A9E3",
+"'! c #74A7E2",
+")! c #72A6E1",
+"!! c #6FA4E0",
+"~! c #99BFE8",
+"{! c #77A8E0",
+"]! c #659BDB",
+"^! c #6198D9",
+"/! c #3F79C7",
+"(! c #3973C3",
+"_! c #336DBF",
+":! c #2A64BA",
+"<! c #2863B9",
+"[! c #4075C1",
+"}! c #5384C9",
+"|! c #6C9BD8",
+"1! c #7AACE8",
+"2! c #90B1D7",
+"3! c #B4CCF3",
+"4! c #68A2E6",
+"5! c #4282D1",
+"6! c #2E6CC1",
+"7! c #2C69BE",
+"8! c #2F6ABE",
+"9! c #316BBE",
+"0! c #356EC0",
+"a! c #3872C2",
+"b! c #3F76C4",
+"c! c #5B85BB",
+"d! c #89A5CA",
+"e! c #9DB5D3",
+"f! c #BACAE0",
+"g! c #CAD6E7",
+"h! c #D7E0ED",
+"i! c #ECF0F6",
+"j! c #F4F6FA",
+"k! c #BCD3EC",
+"l! c #77ABE5",
+"m! c #76AAE4",
+"n! c #74A8E3",
+"o! c #71A6E1",
+"p! c #93BAE6",
+"q! c #6097D8",
+"r! c #5991D5",
+"s! c #437CC9",
+"t! c #3D77C6",
+"u! c #3772C2",
+"v! c #346EBF",
+"w! c #336CBD",
+"x! c #2E67BB",
+"y! c #3970BF",
+"z! c #6791CE",
+"A! c #72A3E0",
+"B! c #7FB1EB",
+"C! c #99B3D4",
+"D! c #8BB7EB",
+"E! c #5694DD",
+"F! c #3E7CCC",
+"G! c #326FC1",
+"H! c #346EC1",
+"I! c #366FC1",
+"J! c #3871C2",
+"K! c #3C75C3",
+"L! c #4179C6",
+"M! c #467EC8",
+"N! c #6791C8",
+"O! c #D0DBEA",
+"P! c #D6E0ED",
+"Q! c #F5F7FA",
+"R! c #ACCAEC",
+"S! c #7CAEE5",
+"T! c #6FA4DF",
+"U! c #9CBFE9",
+"V! c #669BDA",
+"W! c #5E94D6",
+"X! c #568DD3",
+"Y! c #467FCA",
+"Z! c #447CC8",
+"`! c #4179C7",
+" ~ c #3E75C4",
+".~ c #326BBD",
+"+~ c #5B88CA",
+"@~ c #7EA2D5",
+"#~ c #6B97D1",
+"$~ c #6497D8",
+"%~ c #6EA4E5",
+"&~ c #87ACDA",
+"*~ c #E6EDF4",
+"=~ c #B0C9EB",
+"-~ c #6BA5E7",
+";~ c #4C8BD7",
+">~ c #3A78C9",
+",~ c #3470C2",
+"'~ c #3A73C3",
+")~ c #3F78C6",
+"!~ c #427BC8",
+"~~ c #477FC9",
+"{~ c #7FA0CB",
+"]~ c #B6C7DD",
+"^~ c #E5ECF3",
+"/~ c #F1F5F9",
+"(~ c #A5C5E8",
+"_~ c #78A8E0",
+":~ c #70A3DE",
+"<~ c #92B9E5",
+"[~ c #7CA8DE",
+"}~ c #6698D7",
+"|~ c #5D91D3",
+"1~ c #548ACF",
+"2~ c #4D83CB",
+"3~ c #437AC8",
+"4~ c #467BC6",
+"5~ c #6792CE",
+"6~ c #7A9FD5",
+"7~ c #6591CE",
+"8~ c #5A8ACC",
+"9~ c #6193D4",
+"0~ c #6FA3E1",
+"a~ c #81B0EC",
+"b~ c #D5E1F1",
+"c~ c #F2F5FA",
+"d~ c #88B7EC",
+"e~ c #5D9BE1",
+"f~ c #4887D3",
+"g~ c #3A77C7",
+"h~ c #3773C4",
+"i~ c #3A74C4",
+"j~ c #3D76C5",
+"k~ c #4079C7",
+"l~ c #4F85CB",
+"m~ c #8AAAD3",
+"n~ c #C8D6E7",
+"o~ c #D9E6F5",
+"p~ c #97BBE6",
+"q~ c #A3C2E7",
+"r~ c #85ACDE",
+"s~ c #729ED8",
+"t~ c #5A8CD0",
+"u~ c #4C82CA",
+"v~ c #5A8BCE",
+"w~ c #769ED6",
+"x~ c #7AA0D6",
+"y~ c #5888CB",
+"z~ c #497DC6",
+"A~ c #598ACB",
+"B~ c #6293D3",
+"C~ c #6FA1DE",
+"D~ c #78ABE9",
+"E~ c #99B9E5",
+"F~ c #D1DDEC",
+"G~ c #77AEEB",
+"H~ c #5996DE",
+"I~ c #4886D2",
+"J~ c #3D79C8",
+"K~ c #457EC9",
+"L~ c #4E85CD",
+"M~ c #80A7D9",
+"N~ c #D9E2EF",
+"O~ c #DEE9F5",
+"P~ c #B9CDE6",
+"Q~ c #A4C1E5",
+"R~ c #8FB3E0",
+"S~ c #84ABDC",
+"T~ c #8CAFDE",
+"U~ c #7EA4D9",
+"V~ c #5889CD",
+"W~ c #3C74C3",
+"X~ c #467CC6",
+"Y~ c #5D8CCD",
+"Z~ c #70A0DD",
+"`~ c #8DB7E9",
+" { c #DAE6F3",
+".{ c #9BBFEB",
+"+{ c #6EA9E9",
+"@{ c #5896DD",
+"#{ c #4A87D2",
+"${ c #417DCA",
+"%{ c #417CC8",
+"&{ c #437DC8",
+"*{ c #447EC8",
+"={ c #4A82CA",
+"-{ c #6D9CD7",
+";{ c #96B7DE",
+">{ c #DCE5EF",
+",{ c #D8E2EF",
+"'{ c #B5CAE4",
+"){ c #A1BEE3",
+"!{ c #6493D2",
+"~{ c #3D77C5",
+"{{ c #4D82C9",
+"]{ c #5F8FCE",
+"^{ c #6595D3",
+"/{ c #71A1DC",
+"({ c #7CACE6",
+"_{ c #85B6EC",
+":{ c #C1D5EB",
+"<{ c #D4E1EE",
+"[{ c #88B5E8",
+"}{ c #6CA7E9",
+"|{ c #5B97DD",
+"1{ c #4E8BD3",
+"2{ c #4781CA",
+"3{ c #4B83CB",
+"4{ c #5087CE",
+"5{ c #75A1D9",
+"6{ c #699BD7",
+"7{ c #548DD2",
+"8{ c #C0D3E9",
+"9{ c #FDFEFF",
+"0{ c #97B6DE",
+"a{ c #4C82CB",
+"b{ c #588ACE",
+"c{ c #6493D1",
+"d{ c #73A2DD",
+"e{ c #7EAEE6",
+"f{ c #8FBCEE",
+"g{ c #C9DBEE",
+"h{ c #BACCE2",
+"i{ c #81B0E8",
+"j{ c #6EA8E8",
+"k{ c #5F9ADE",
+"l{ c #5590D6",
+"m{ c #5F92D3",
+"n{ c #6F9ED7",
+"o{ c #568DD1",
+"p{ c #558DD3",
+"q{ c #5890D5",
+"r{ c #5D95D7",
+"s{ c #85AEE0",
+"t{ c #DEE6EF",
+"u{ c #F3F6FB",
+"v{ c #C1D2E7",
+"w{ c #9FBDE2",
+"x{ c #9EBFE6",
+"y{ c #A4C5EB",
+"z{ c #C0D2E7",
+"A{ c #DDE8F4",
+"B{ c #E1EBF5",
+"C{ c #7FAEE7",
+"D{ c #71A9E9",
+"E{ c #659FE1",
+"F{ c #659CDC",
+"G{ c #6497D6",
+"H{ c #5A92D6",
+"I{ c #5C93D7",
+"J{ c #5D95D8",
+"K{ c #6098DA",
+"L{ c #6FA1DB",
+"M{ c #B0C9E7",
+"N{ c #ECF1F7",
+"O{ c #F3F7FA",
+"P{ c #E7EFF6",
+"Q{ c #E2EBF5",
+"R{ c #D9E4F2",
+"S{ c #C6D2E8",
+"T{ c #82B5ED",
+"U{ c #7BAEE7",
+"V{ c #6BA2E0",
+"W{ c #6299D9",
+"X{ c #6399DA",
+"Y{ c #649BDB",
+"Z{ c #669EDE",
+"`{ c #6EA3DF",
+" ] c #86B0E0",
+".] c #C9D7E7",
+"+] c #EDF3F9",
+"@] c #EBF2F8",
+"#] c #E6EEF7",
+"$] c #E0E9F4",
+"%] c #DCE7F3",
+"&] c #D5E2F0",
+"*] c #C3CFE4",
+"=] c #87B1E5",
+"-] c #7EB4ED",
+";] c #74ABE8",
+">] c #6EA5E3",
+",] c #689FDE",
+"'] c #689EDD",
+")] c #699FDD",
+"!] c #6CA1DE",
+"~] c #71A5E1",
+"{] c #76A9E4",
+"]] c #7BADE5",
+"^] c #8DB9E9",
+"/] c #A9CAEF",
+"(] c #C4DCF4",
+"_] c #C5D7EC",
+":] c #C4D3E4",
+"<] c #EEF3F9",
+"[] c #DEE9F4",
+"}] c #DDE7F3",
+"|] c #DBE6F2",
+"1] c #D8E5F2",
+"2] c #D0DEEE",
+"3] c #A4BBD9",
+"4] c #85B8EF",
+"5] c #7DB2EC",
+"6] c #78AEE8",
+"7] c #76ACE6",
+"8] c #75ABE4",
+"9] c #7AACE4",
+"0] c #A1C5EC",
+"a] c #CEE2F6",
+"b] c #DEEBF9",
+"c] c #E8F2FB",
+"d] c #D2E5F8",
+"e] c #ACD0F3",
+"f] c #94C2F1",
+"g] c #89BCEF",
+"h] c #8BB3DE",
+"i] c #B4D1EF",
+"j] c #D1DCE9",
+"k] c #DBE7F2",
+"l] c #D9E5F1",
+"m] c #D3E1F0",
+"n] c #BBCCE3",
+"o] c #A1B4CD",
+"p] c #7695C9",
+"q] c #86B4E7",
+"r] c #88BBF1",
+"s] c #85B8EE",
+"t] c #88BAED",
+"u] c #90BEED",
+"v] c #9DC6EF",
+"w] c #D3E5F8",
+"x] c #DEECFA",
+"y] c #C5DEF7",
+"z] c #A6CDF3",
+"A] c #96C4F2",
+"B] c #96C7F4",
+"C] c #99C9F6",
+"D] c #9BCAF7",
+"E] c #9BCBF7",
+"F] c #99CAF6",
+"G] c #98C8F4",
+"H] c #98C7F3",
+"I] c #B7D3ED",
+"J] c #C5DCF3",
+"K] c #C8D8EB",
+"L] c #D5E2F1",
+"M] c #CDDDED",
+"N] c #B8CCE3",
+"O] c #ABBEDC",
+"P] c #90ACCF",
+"Q] c #85A6D6",
+"R] c #9AC2ED",
+"S] c #9DC8F4",
+"T] c #90C0F0",
+"U] c #99C5F1",
+"V] c #9BC7F1",
+"W] c #97C6F2",
+"X] c #9AC9F3",
+"Y] c #9FCDF5",
+"Z] c #A4D2F8",
+"`] c #A9D6FB",
+" ^ c #ACD9FC",
+".^ c #AEDAFD",
+"+^ c #AAD7FB",
+"@^ c #A6D3F9",
+"#^ c #A5D1F7",
+"$^ c #A5D0F5",
+"%^ c #A3CDF4",
+"&^ c #A2CAF0",
+"*^ c #A3CAF0",
+"=^ c #A2CAF1",
+"-^ c #A2CAF2",
+";^ c #9CC6F1",
+">^ c #90B7E5",
+",^ c #85A0CE",
+"'^ c #7F97C9",
+")^ c #89AEDD",
+"!^ c #92BDEC",
+"~^ c #97C5F3",
+"{^ c #97C7F4",
+"]^ c #99C9F4",
+"^^ c #9DCBF4",
+"/^ c #A1CFF6",
+"(^ c #A6D2F7",
+"_^ c #ABD7F9",
+":^ c #B1DBFC",
+"<^ c #B6DFFE",
+"[^ c #B8E0FE",
+"}^ c #B3DDFD",
+"|^ c #ADD8FA",
+"1^ c #A9D4F8",
+"2^ c #A9D3F7",
+"3^ c #A6D0F5",
+"4^ c #A4CEF5",
+"5^ c #A3CDF5",
+"6^ c #9FCBF4",
+"7^ c #9BC7F2",
+"8^ c #93B9E8",
+"9^ c #82A5D8",
+"0^ c #7691C3",
+"a^ c #98C3EE",
+"b^ c #9FCCF4",
+"c^ c #A3D0F8",
+"d^ c #A8D4F8",
+"e^ c #ABD6F9",
+"f^ c #AFD9FA",
+"g^ c #B2DBFB",
+"h^ c #B3DCFB",
+"i^ c #B0DAFA",
+"j^ c #ACD7F9",
+"k^ c #A7D3F8",
+"l^ c #A7D2F7",
+"m^ c #A7D1F7",
+"n^ c #A2CDF4",
+"o^ c #9AC3EE",
+"p^ c #90B4E3",
+"q^ c #8AA9D8",
+"r^ c #A7D0F6",
+"s^ c #A9D0F6",
+"t^ c #ACD3F6",
+"u^ c #ACD3F5",
+"v^ c #AACFF6",
+"w^ c #A9D1F5",
+"x^ c #A7CFF3",
+"y^ c #A4CAF0",
+"z^ c #9FC7EE",
+"A^ c #9ABEE6",
+"B^ c #92B1DD",
+" . + @ # $ % & * = - ",
+" ; > , ' ) ! ~ { ] ^ / ( _ : < [ } ",
+" | 1 2 3 4 5 2 6 7 8 9 0 a b c d e f g ",
+" h d i j k l m l l b n o p l l l l q r s ",
+" t u v w x y ) z p l l l l l A i B C l l l l l l l = D ",
+" E F G H I J K ~ L M d m m m m N O l l l l l l P Q R 0 l l l l l S T c U V W X Y ",
+" Z ` ...+. at .#.$.%.&.m m m m m m m m m &.*.l l l l l l l T =.' l l l T p -.;.P >.,.5 N c '.). ",
+" !.~ / ~.m m m m m m m m m m m m m m m m m m m l l l l l l l {.].P l l l &.^./.) m l ' p =.(., _. ",
+" :.<.&.m m m m m m m m m m m m m m m m m m m m l l l &.O 2 l l l l l l q T [.4 }.A l l l l ) |.1.2. ",
+" 3.4.m m m m m m m m m T A c p ) ) 5 5 9 ) , q ~.l l l 5.6.7.8.l l l &.2 9./.0.i A l l l l l A j z a. ",
+" b.c.m m m m m m m %.p d.e.f.g.h.i.j.k.l.m.h.n.o.p.l l l q.r.s.t.c l l A /./.Q 2 u.l l l l l l l 1.O v. ",
+" w.m m m m m ~.p x.y.z.A.B.C.D.E.F.G.H.G.I.J.K.L.M.m l l N.O.P.Q.R.l l b 2 9 {.T 1.o.*.l l l l &.0 5 S. ",
+" T.#.m m m &.p U.V.W.X.Y.Z.`. +.+++ at +#+$+#+%+&+*+=+-+A A l ;+>+,+'+0 l l l b l > )+!+~+{+u.l l l S 5 ]+^+ ",
+" /+m m m A 6 (+_+:+<+[+}+|+1+2+3+4+5+6+7+8+9+0+a+b+c+5 O p l d+e+f+A l l l l A g+h+i+j+k+l l l l m l+m+ ",
+" n+#.m m A d.o+p+q+r+s+t+u+v+w+x+y+z+A+B+B+C+D+E+F+G+H+I+j p l l l l l l l l l Q J+K+L+M+N+l l l l ) O+ ",
+" P+m m T d.Q+R+S+T+U+V+W+X+7+Y+Z+`+ @. at +@+@@@#@$@C+%@&@*@=@y.S l l l l l l l l p -@;@>@,@'@l l l )@!@ ",
+" ~@m m ! {@]@^@/@(@_@:@<@[@Y+z+}@|@#@@@+ at 1@@@@@2 at 3@4 at 5@6 at 7@8 at 9@P l l l l l l l l l l l l l u.m e 0@ ",
+" a at m m b at c@d at e@f@@+g at h@i at j@k at l@m at B+n@|@|@o@|@|@`+p at q@r at y+s@t@|.p.a l l l l l l l l l l P x.S # u@ ",
+" v at w@m m x at y@z at A@B at C@D at E@F at G@H at I@J at K@L at q@D+D+D+q at L@r at M@N at O@P at Q@R at S@T at l l l l l l l b c c O z U at V@ ",
+" W@'@m m x at X@Y at Z@`@ #.#+#@###$#%#&#*#=#-#F+F+-#-#*#;#>#,#'#)#!#~#{#x@]#^#/#l l A 9 q (#=@Q f._# ",
+" :#m m m )@<#[#}#|#1#=#2#3#4#5#6#7#8#9#0#0#0#0#a#b#c#d#e#f#g#h#i#' ;+j#k#l#m#'@n#o#p#q#r#s#t# ",
+" u#m m m v#w#x#y#z#A#B#g#C#D#E#F#G#H#I#I#I#I#I#I#H#J#K#L#M#N#O#P#) Q#R#S#T#U#V#W#X#Y#^.Z#`# ",
+" $.$m m m +$@$x##$$$%$&$*$=$-$;$>$,$'$)$!$!$!$)$)$)$O#O#~${$]$*$^$/$($_$:$<$[$}$) ^.|$1$2$ ",
+" 3$4$.$m m m 5$6$7$8$9$0$a$b$c$d$e$f$g$h$i$j$j$k$i$l$m$m$m$n$d$c$o$p$q$r$s$t$u$]#N v$w$x$y$z$ ",
+" A$B$C$&.m m D$E$F$G$H$I$J$K$L$M$N$O$P$Q$P$R$S$T$U$V$W$X$N$Y$Z$`$ %.%.%+%@%#%$%%%&%*%=%-%;%>% ",
+" ,%'%)%c m m > !%~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%4%5%6%7%8%9%0%a%b%;$c%d%f#N#e%f%g%3 at h%i%j%k%l%m% ",
+" n%o%p%q%+.m m I+r%s%t%u%v%w%x%y%z%A%B%C%D%E%F%G%H%I%J%K%L%M%=#*#N%O%P%Q%R%S%T%U%n$V%V%W%X%Y%Z%`% & ",
+" .&+&@&#&$&%&m m &&*&=&-&;&>&,&'&)&!&~&{&]&^&E%/&(&_&:&<&[&}&|&1&)&2&3&4&5&6&7&8&9&k$0&a&b&c&d&e&f&g& ",
+" h&i&p%j&k&l&m m m&n&o&p&q&r&s&t&u&v&w&x&y&z&A&B&P C&D&E&F&G&w&H&v&I&J&K&>&L&M&N&O& %P&Q&R&S&T&U&V&W&X& ",
+" Y&Z&`& *.*+*~.m <.@*#*$*%*&***=*-*;*>*,*'*)*!*B&a ~*{*1%]*^*/*(*_*:*<*[*&*}*|*y%1*2*3*4*5*6*7*8*9*0*a* ",
+" b*c*d*e*f*g*h*i*%.j*k*l*m*n*o*p*q*r*s*t*u*z&v*w*x*y*3 z*A*B*C*D*E*F*_*G*H*I*J*w&L%K*L*M*N*O*g*P*Q*R*f&S* ",
+" T*U*8*V*W*X*Y*Z*`* =.=+=@=#=n*$=r*%=&=*===-=;=>=,=E%'=)=;=!=~={={=]=^=/=$=#=(=_=:=<=[=g&}=|=1=2=3=4=5=6=7= ",
+" 8=9=0=a=b=c=d=e=f=!%g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z=A=B=C=D=E=F=G=H=I=:=J=K=L=M=N=O=P=Q=e&R=S=T=U= ",
+" V=W=X=Y=Z=`= -.-+- at -#-H*$-I=%-&-*-=---;->-,-'-)-!-~-!-{-]-,-^-/-(-_-:-<-[-&=}-|-1-2-3-4-5-6-7-8-Y=9-0-a-b- ",
+" c-d-e-f-g-h--&i-j-k-l-m-A&n-n=o-p-q-r-s-,-t-u-v-w-x-y-z-A-B-w-t-C-r-D-E-w=F-G=G-H-I-K=J-K-}*L-M-N-O-R*P-Q- ",
+" R-S-T-U-V-W-H$X-Y-Z-`-C& ;.;p=C-+;,-@;#;$;%;%;&;*;=;-;-;;;>;,;';-;);!;~;{;];F=^;G-|-/;/;(;d$_;:;Y=U&d*P-<; ",
+" [;};|;1;2;3;4;5;6;7;(&8;!=9;;-0;a;b;$;%;c;d;e;f;g;g;h;i;j;k;l;m;n;o;p;q;r;p-s;F=t;u;v;=*w;|*x;y;e&z;A;U*B; ",
+" C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;d;U;g;V;W;X;X;Y;Z;`; >.>+>@>#>$>]-%>&>(-p-*><-=>->;>>>,>'>)>e&!>R=~>{> ",
+" ]>^>/>F;(>_>a%:><>[>}>|>+;s-1>2>3>4>V;W;X;5>6>7>8>9>0>a>b>c>d>e>f>g>h>i>$;j>(-k>C=C=l>m>K=n>'>o>p>q>O-r>s> ",
+" t>u>v>w>x>y>z>A>-*[-B>C>D>E>F>%>h;G>H>6>I>8>J>K>L>M>N>O>P>Q>R>S>T>U>V>W>X>$;2>Y>Z>`> ,.,+,n>@,#,$,%,e-&,*, ",
+" =,-,;,>,,,',),!,~,{,],^,/,(,[ _,:,<,[,<,K>},|,1,2,3,4,5,6,7,8,p 7,9,0,G>a,b,-;c,d,*>^;e,f,g,h,i,$,j,k,l,m, ",
+" n,o,g-p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,g>T,U,V,W,X,1>(-Y,Z,e,`, '.'i,+'@'#'$'%' ",
+" &'*'='-';'r,>',''')'!'~'{']'^'/'('_':'<'['}'|'1'2'2'3'4'5'6'7'8'9'0'a'b'c'd'e'f'c,g'h'i'j'>'k'l'm'n'o'p'q' ",
+" r's't'M-u'>'v'w'x'y'{'z'A'B'C'D'E'F'G'H'I'J'J'K'L'M'N'O'P'Q'Q'R'S'T'U'V'W'X'Y'Z'=-j=`' ).)+)i,@)#)q=$)%) ",
+" &)*)=)@,-'-)v'L*;)>),)')))!): ~){)F' .])^)/)I'()_):)<)[)})|)1)2)3)4)5)6)7)8)Y'c,s;9)L*0)q,a)b)c)d)e)f) ",
+" g)h)i)j)k)l)m)n)o)p)q)))r); s)t)u)e v)]+I+w)x)y)z)A)B)C)D)E)F)G)H)K,I)J)V'8)X,(-K)L)M)s,N)O)P)Q)R)S)T) ",
+" U)V)W)X)Y)Z)m)n)`) !.!+!; @!#!$!%!v.&&&!v#! ~.*!=!-!;!>!,!'!)!!!~!{!]!^!7>U;);=>/!(!_!s,:!<![!}!|!1!2! ",
+" 3!4!5!6!7!8!9!0!a!b!c!d!e!~ f!g!h!&&i!)@! c l l m j!k!O'l!m!n!o![)p!4)q!r!&;A=s!t!u!v!w!x!y!z!t*A!B!C! ",
+" D!E!F!G!H!I!J!K!L!M!N!e!$!O!P!`*> )@5 c b l l l l m Q!R!S!,!)!T!U!V!W!X!t-Y!Z!`! ~M).~+~@~#~$~%~&~*~ ",
+" =~-~;~>~,~u!'~!,)~!~~~{~]~# ^~> /~! c m l l l l l l l ~.4 (~_~:~<~[~}~|~1~2~3~!,4~5~6~7~8~9~0~a~b~c~ ",
+" d~e~f~g~h~i~L)j~k~E=l~m~n~I+)@! c m l l l l l l l l l l #.o~p~b>q~r~s~t~u~v~w~x~y~z~A~B~C~D~E~(+F~ ",
+" G~H~I~J~9)@=k~!~K~L~t-M~N~b at c m l l l l l l l l l l l l l c O~P~Q~R~S~T~U~V~W~X~Y~==Z~1!`~ {y. ",
+" .{+{@{#{${%{&{*{={P;Z'-{;{>{A l l l l l l l l l l l l l l m T $.,{'{){!{!~~{{{]{^{/{({_{:{;.<{ ",
+" [{}{|{1{k>2{3{B=4{5{6{7{b,8{~.l l l l l l l l l l u.9{&.A {.p *.k ,{0{a{b{c{!-d{e{f{g{4 Q h{ ",
+" i{j{k{l{X,Y>m{n{o{e'p{q{r{s{t{l l l l l l b m &.A c q ) 5 d.u{U.1.(.[.v{w{x{y{z{A{B{T at x) ",
+" C{D{E{F{0>G{g;8)X;H{I{J{K{L{M{N{u.b m &.A P {.p ) 5 d.O{1.0 z i y*P{4 7 at Q{h.^.(#r#R{S{ ",
+" e{T{U{V{K{r{J>q!W{X{Y{Z{L'`{ ].]+$c 8 q k k n ' x.1.0 +]@];.#]=@B{$]^.r#%]p#~#&]*] ",
+" =]-];]>]V{,]'])]!]~]{]]]^]/](]_]:]( d.) n =.<]j i ;.0.4 Q |.[]}]|]p#1]8 at Y#2]3] ",
+" :>4]5]6]7]8]>!9]0]a]b]c]d]e]f]g]h]i]j];.i i o.n#B{(#r#k]p#l]8 at Y#&]m]R at n]o] ",
+" p]q]r]s]t]u]v]w]x]y]z]A]B]C]D]E]F]G]H]I]J]K]{# {~#{#Y#L]f+R M]N]O]P] ",
+" Q]R]S]A]T]U]V]W]X]Y]Z]`] ^.^+^@^#^$^%^&^*^=^-^z];^>^,^ ",
+" '^)^!^~^{^]^^^/^(^_^:^<^[^}^|^1^2^3^4^5^6^7^8^9^0^ ",
+" a^b^c^#^d^e^f^g^h^i^j^k^l^m^n^o^p^q^ ",
+" r^s^t^u^v^w^x^y^z^A^B^ "};
diff --git a/defaults/preferences/prefs.js b/defaults/preferences/prefs.js
index 1eebd0a..052009e 100644
--- a/defaults/preferences/prefs.js
+++ b/defaults/preferences/prefs.js
@@ -6,7 +6,7 @@ pref("extensions.firetray.start_minimized", false);
pref("extensions.firetray.confirm_exit", true);
pref("extensions.firetray.restore_to_next_unread", false);
-pref("extensions.firetray.mail_count_type", 1);
+pref("extensions.firetray.mail_count_type", 0);
pref("extensions.firetray.show_mail_count", true);
pref("extensions.firetray.dont_count_spam", true);
diff --git a/generate_install_rdf.sh b/generate_install_rdf.sh
new file mode 100755
index 0000000..8266d09
--- /dev/null
+++ b/generate_install_rdf.sh
@@ -0,0 +1,204 @@
+#!/bin/bash
+
+VERSION="0.3.1"
+EXTENSION_ID="{9533f794-00b4-4354-aa15-c2bbda6989f8}"
+EXTENSION_NAME="FireTray"
+HOMEPAGE="http://code.google.com/p/firetray/"
+OPTIONS="chrome://firetray/content/options.xul"
+ICON="chrome://firetray/content/icon.png"
+CREATOR="Hua Luo, Francesco Solero"
+DESCRIPTION="A system tray extension for linux"
+IFS=""
+
+APP_SEPARATOR=';'
+
+#SUPPORTED APPS:
+# "name;id;min.ver;max.ver"
+SUPPORTED_APPS=( \
+"Mozilla Firefox;{ec8030f7-c20a-464f-9b0e-13a3a9e97384};3.0;5.*" \
+"Mozilla Thunderbird;{3550f703-e582-4d05-9a08-453d09bdfdc6};3.0;5.*" \
+"Songbird;songbird at songbirdnest.com;0.8;1.8.0" \
+"SeaMonkey;{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a};2.0a1;2.0.* " \
+"Sunbird;{718e30fb-e89b-41dd-9da7-e25a45638b28};1.0b1;1.0pre" \
+"ChatZilla;{59c81df5-4b7a-477b-912d-4e0fdf64e5f2};0.8;0.9.*" \
+)
+
+DEVELOPERS=( "Jared Forsyth" "Glen Winters" )
+
+CONTRIBUTORS=( \
+"Simone 'Underpass' " \
+"Diego Rodriguez" \
+"Dave Bartlett" \
+"Bertolotti Pierre" \
+"Ziyuan Yao" \
+"+Hard -Soft" \
+"SparkyBluefang" \
+"Corossig" \
+"Hicham.Haouari" \
+"Jreybert" \
+"aedrin" \
+)
+
+TRANSLATORS=( \
+"Lachezar [bg-BG]" \
+"SoftcatalàAljullu,ellibre [ca-AD]" \
+"Sam [cz-CZ]" \
+"bricks [de-DE]" \
+"profediego [es-AR]" \
+"chuzo [es-ES]" \
+"GµårÐïåñ [fa-IR]" \
+"BatBat,Jojaba,nico at nc [fr-FR]" \
+"Simone 'Underpass' [it-IT]" \
+"drry [ja-JP]" \
+"renegade06 [mk-MK]" \
+"markh [nl-NL]" \
+"Wacław Jacek [pl-PL]" \
+"Alberto Eidh [pt-BR]" \
+"Quicksilver tears [ru-RU]" \
+"lukas_sk [sk-SK]" \
+"miles [sl-SL]" \
+"Lakrits [sv-SE]" \
+"efecan [tr-TR]" \
+"Sappa [uk-UA]" \
+"xmoke [zh-CN]" \
+)
+
+svn info > /dev/null 2> /dev/null
+NOT_SVN=$?
+
+SVN_REV=svn-r`svnversion .`
+
+if [ $NOT_SVN -ne 0 ]
+then
+ SVN_REV="src-build"
+fi
+
+EXTENSION_VERSION=$VERSION-$SVN_REV #unofficial build
+if [ ${#OFFICIAL_AMO_RELEASE} -gt 0 ]
+then
+ EXTENSION_VERSION=$VERSION #amo build
+else
+ if [ ${#OTHER_DISTRIBUTION_NAME} -gt 0 ]
+ then
+ EXTENSION_VERSION=$VERSION-$OTHER_DISTRIBUTION_NAME #other official build
+ fi
+fi
+
+
+
+add_field() # add_field (val, tagname)
+{
+ if [ -z "$1" ]
+ then
+ return
+ else
+ VAL=$1
+ fi
+
+ if [ -z "$2" ]
+ then
+ OPEN_TAG=''
+ CLOSE_TAG=''
+ else
+ OPEN_TAG="<$2>"
+ CLOSE_TAG="</$2>"
+ fi
+
+ echo $3$OPEN_TAG$VAL$CLOSE_TAG
+}
+
+extension_info_head()
+{
+ echo " <em:id>$EXTENSION_ID</em:id>"
+ echo " <em:version>$EXTENSION_VERSION</em:version>"
+ echo " <em:type>2</em:type>"
+ echo " <em:unpack>true</em:unpack>"
+ echo
+
+
+ echo " <!-- Front End MetaData -->"
+ echo " <em:name>$EXTENSION_NAME</em:name>"
+ echo " <em:description>$DESCRIPTION</em:description>"
+ echo " <em:creator>$CREATOR</em:creator>"
+ echo
+
+
+ echo " <em:homepageURL>$HOMEPAGE</em:homepageURL>"
+ echo " <em:optionsURL>$OPTIONS</em:optionsURL>"
+ echo " <em:iconURL>$ICON</em:iconURL>"
+ echo
+
+
+}
+
+supported_apps()
+{
+ echo
+ echo ' <!-- Target Application this extension can install into, '
+ echo ' with minimum and maximum supported versions. --> '
+
+ for l in ${SUPPORTED_APPS[@]}
+ do
+ OLD_IFS=$IFS
+ IFS=$APP_SEPARATOR
+ APP=( $l )
+ echo
+ echo " <!-- ${APP[0]} -->"
+ echo " <em:targetApplication>"
+ echo " <Description>"
+ echo " <em:id>${APP[1]}</em:id>"
+ echo " <em:minVersion>${APP[2]}</em:minVersion>"
+ echo " <em:maxVersion>${APP[3]}</em:maxVersion>"
+ echo " </Description>"
+ echo " </em:targetApplication>"
+ IFS=$OLD_IFS
+ done
+}
+
+developers()
+{
+ echo
+ for l in ${DEVELOPERS[@]}
+ do
+ add_field $l "em:developer" " "
+ done
+}
+
+contributors()
+{
+ echo
+ for l in ${CONTRIBUTORS[@]}
+ do
+ add_field $l "em:contributor" " "
+ done
+}
+
+translators()
+{
+ echo
+ for l in ${TRANSLATORS[@]}
+ do
+ add_field $l "em:translator" " "
+ done
+}
+
+
+
+echo '<?xml version="1.0"?>'
+echo
+echo '<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'
+echo ' xmlns:em="http://www.mozilla.org/2004/em-rdf#">'
+echo ' <Description about="urn:mozilla:install-manifest">'
+
+extension_info_head
+supported_apps
+developers
+contributors
+translators
+echo
+echo ' </Description>'
+echo '</RDF>'
+
+unset IFS
+
+
diff --git a/install.rdf b/install.rdf
deleted file mode 100644
index ffe0759..0000000
--- a/install.rdf
+++ /dev/null
@@ -1,116 +0,0 @@
-<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em="http://www.mozilla.org/2004/em-rdf#">
- <Description about="urn:mozilla:install-manifest">
- <em:id>{9533f794-00b4-4354-aa15-c2bbda6989f8}</em:id>
- <em:version>0.3.4</em:version>
- <em:type>2</em:type>
- <em:unpack>true</em:unpack>
-
- <!-- Front End MetaData -->
- <em:name>FireTray</em:name>
- <em:description>A system tray extension for linux</em:description>
- <em:creator>Hua Luo, Francesco Solero</em:creator>
-
- <em:homepageURL>http://code.google.com/p/firetray/</em:homepageURL>
- <em:optionsURL>chrome://firetray/content/options.xul</em:optionsURL>
- <em:iconURL>chrome://firetray/content/icon.png</em:iconURL>
-
-
- <!-- Target Application this extension can install into,
- with minimum and maximum supported versions. -->
-
- <!-- Mozilla Firefox -->
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>7.0</em:minVersion>
- <em:maxVersion>8.*</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <!-- Mozilla Thunderbird -->
- <em:targetApplication>
- <Description>
- <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
- <em:minVersion>7.0</em:minVersion>
- <em:maxVersion>8.*</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <!-- Songbird -->
- <em:targetApplication>
- <Description>
- <em:id>songbird at songbirdnest.com</em:id>
- <em:minVersion>0.8</em:minVersion>
- <em:maxVersion>1.8.0</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <!-- SeaMonkey -->
- <em:targetApplication>
- <Description>
- <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
- <em:minVersion>2.0a1</em:minVersion>
- <em:maxVersion>2.0.*</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <!-- Sunbird -->
- <em:targetApplication>
- <Description>
- <em:id>{718e30fb-e89b-41dd-9da7-e25a45638b28}</em:id>
- <em:minVersion>1.0b1</em:minVersion>
- <em:maxVersion>1.0pre</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <!-- ChatZilla -->
- <em:targetApplication>
- <Description>
- <em:id>{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}</em:id>
- <em:minVersion>0.8</em:minVersion>
- <em:maxVersion>0.9.*</em:maxVersion>
- </Description>
- </em:targetApplication>
-
- <em:developer>Jared Forsyth</em:developer>
- <em:developer>Glen Winters</em:developer>
-
- <em:contributor>Simone 'Underpass' </em:contributor>
- <em:contributor>Diego Rodriguez</em:contributor>
- <em:contributor>Dave Bartlett</em:contributor>
- <em:contributor>Bertolotti Pierre</em:contributor>
- <em:contributor>Ziyuan Yao</em:contributor>
- <em:contributor>+Hard -Soft</em:contributor>
- <em:contributor>SparkyBluefang</em:contributor>
- <em:contributor>Corossig</em:contributor>
- <em:contributor>Hicham.Haouari</em:contributor>
- <em:contributor>Jreybert</em:contributor>
- <em:contributor>aedrin</em:contributor>
-
- <em:translator>Lachezar [bg-BG]</em:translator>
- <em:translator>SoftcatalàAljullu,ellibre [ca-AD]</em:translator>
- <em:translator>Sam [cz-CZ]</em:translator>
- <em:translator>bricks [de-DE]</em:translator>
- <em:translator>profediego [es-AR]</em:translator>
- <em:translator>chuzo [es-ES]</em:translator>
- <em:translator>GµårÐïåñ [fa-IR]</em:translator>
- <em:translator>BatBat,Jojaba,nico at nc [fr-FR]</em:translator>
- <em:translator>Simone 'Underpass' [it-IT]</em:translator>
- <em:translator>drry [ja-JP]</em:translator>
- <em:translator>renegade06 [mk-MK]</em:translator>
- <em:translator>markh [nl-NL]</em:translator>
- <em:translator>Wacław Jacek [pl-PL]</em:translator>
- <em:translator>Alberto Eidh [pt-BR]</em:translator>
- <em:translator>Quicksilver tears [ru-RU]</em:translator>
- <em:translator>lukas_sk [sk-SK]</em:translator>
- <em:translator>miles [sl-SL]</em:translator>
- <em:translator>Lakrits [sv-SE]</em:translator>
- <em:translator>efecan [tr-TR]</em:translator>
- <em:translator>Sappa [uk-UA]</em:translator>
- <em:translator>xmoke [zh-CN]</em:translator>
-
- </Description>
-</RDF>
diff --git a/makefile.example b/makefile.example
new file mode 100644
index 0000000..e94be03
--- /dev/null
+++ b/makefile.example
@@ -0,0 +1,6 @@
+#example of a simple makefile used to build a deb package using checkinstall
+
+install:
+ ./build.sh --dynamic-linking --output-dir=/usr/lib/firefox-addons/extensions
+
+
--
system tray extension for thunderbird/firefox alike apps
More information about the Pkg-mozext-commits
mailing list