[Libreoffice-commits] core.git: configure.ac download.lst external/libetonyek writerperfect/qa

David Tardon dtardon at redhat.com
Wed Nov 18 10:52:12 PST 2015


 configure.ac                                                                        |    2 
 dev/null                                                                            |binary
 download.lst                                                                        |    4 
 external/libetonyek/0001-add-missing-include.patch.1                                |   25 
 external/libetonyek/0001-std-containers-of-incomplete-types-are-not-allowed.patch.1 |   58 
 external/libetonyek/0001-try-to-fix-build-on-Windows.patch.1                        |   45 
 external/libetonyek/ExternalProject_libetonyek.mk                                   |    3 
 external/libetonyek/Library_etonyek.mk                                              |   19 
 external/libetonyek/UnpackedTarball_libetonyek.mk                                   |    4 
 external/libetonyek/assert.patch                                                    |   11 
 external/libetonyek/inc/IWORKToken.inc                                              | 1016 ++++++++++
 external/libetonyek/inc/KEY1Token.inc                                               |  540 +++++
 external/libetonyek/inc/KEY2Token.inc                                               |  224 ++
 external/libetonyek/inc/NUM1Token.inc                                               |  147 +
 external/libetonyek/inc/PAG1Token.inc                                               |  180 +
 external/libetonyek/win_build.patch.1                                               |    2 
 writerperfect/qa/unit/data/impress/libetonyek/pass/v6.zip                           |binary
 17 files changed, 2189 insertions(+), 91 deletions(-)

New commits:
commit c0e04644a1703f4c6529e88b7c208126d2a2b1ec
Author: David Tardon <dtardon at redhat.com>
Date:   Tue Nov 17 22:02:45 2015 +0100

    upload libetonyek 0.1.4
    
    Change-Id: I21eb802e65c7054cfbf73a90c0d63a007829ebcf

diff --git a/configure.ac b/configure.ac
index b87fe11..f142a57 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7709,7 +7709,7 @@ libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1 >= 0.1.1])
 dnl ===================================================================
 dnl Check for system libetonyek
 dnl ===================================================================
-libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1 >= 0.1.2])
+libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1 >= 0.1.4])
 
 dnl ===================================================================
 dnl Check for system libfreehand
diff --git a/download.lst b/download.lst
index 8bf98e7..4b12005 100755
--- a/download.lst
+++ b/download.lst
@@ -27,8 +27,8 @@ export DBGHELP_DLL := 13fbc2e8b37ddf28181dd6d8081c2b8e-dbghelp.dll
 export EBOOK_MD5SUM := 6b48eda57914e6343efebc9381027b78
 export EBOOK_TARBALL := libe-book-0.1.2.tar.bz2
 export EPM_TARBALL := 3ade8cfe7e59ca8e65052644fed9fca4-epm-3.7.tar.gz
-export ETONYEK_MD5SUM := e5947373dd7834f27e93f1636faa419f
-export ETONYEK_VERSION_MICRO := 3
+export ETONYEK_MD5SUM := b542e4d3072e89d0c627956d6747e1d2
+export ETONYEK_VERSION_MICRO := 4
 export ETONYEK_TARBALL := libetonyek-0.1.$(ETONYEK_VERSION_MICRO).tar.bz2
 export EXPAT_TARBALL := dd7dab7a5fea97d2a6a43f511449b7cd-expat-2.1.0.tar.gz
 export FIREBIRD_MD5SUM := 7a17ec9889424b98baa29e001a054434
diff --git a/external/libetonyek/0001-add-missing-include.patch.1 b/external/libetonyek/0001-add-missing-include.patch.1
deleted file mode 100644
index 9c80674..0000000
--- a/external/libetonyek/0001-add-missing-include.patch.1
+++ /dev/null
@@ -1,25 +0,0 @@
-From 00f7e36ce2a3996ebef672561014ab101eee7f3a Mon Sep 17 00:00:00 2001
-From: David Tardon <dtardon at redhat.com>
-Date: Thu, 25 Jun 2015 12:00:49 +0200
-Subject: [PATCH] add missing include
-
-Change-Id: I8bfcacb064b3d0f9d7d5db9d2f32108b0ceea792
----
- src/lib/IWORKTypes_fwd.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/lib/IWORKTypes_fwd.h b/src/lib/IWORKTypes_fwd.h
-index f7a4fb2..1096df8 100644
---- a/src/lib/IWORKTypes_fwd.h
-+++ b/src/lib/IWORKTypes_fwd.h
-@@ -9,6 +9,7 @@
- #ifndef IWORKTYPES_FWD_H_INCLUDED
- #define IWORKTYPES_FWD_H_INCLUDED
- 
-+#include <deque>
- #include <string>
- 
- #include <boost/shared_ptr.hpp>
--- 
-2.4.2
-
diff --git a/external/libetonyek/0001-std-containers-of-incomplete-types-are-not-allowed.patch.1 b/external/libetonyek/0001-std-containers-of-incomplete-types-are-not-allowed.patch.1
new file mode 100644
index 0000000..f758370
--- /dev/null
+++ b/external/libetonyek/0001-std-containers-of-incomplete-types-are-not-allowed.patch.1
@@ -0,0 +1,58 @@
+From 0beaf8ae8d9fc9049ac684ca169295357275eb85 Mon Sep 17 00:00:00 2001
+From: David Tardon <dtardon at redhat.com>
+Date: Wed, 18 Nov 2015 13:19:17 +0100
+Subject: [PATCH] std containers of incomplete types are not allowed
+
+Change-Id: Icd916b4b0e2e2ae87014b6b53dbba5e56aa43846
+---
+ configure.ac       |  1 +
+ src/lib/IWAField.h | 11 +++++++----
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/src/lib/IWAField.h b/src/lib/IWAField.h
+index 3566513..46c2e4c 100644
+--- a/src/lib/IWAField.h
++++ b/src/lib/IWAField.h
+@@ -13,6 +13,7 @@
+ #include <deque>
+ #include <stdexcept>
+ 
++#include <boost/container/deque.hpp>
+ #include <boost/optional.hpp>
+ #include <boost/shared_ptr.hpp>
+ 
+@@ -71,7 +72,7 @@ namespace detail
+ template<IWAField::Tag TagV, typename ValueT, typename Reader>
+ class IWAFieldImpl : public IWAField
+ {
+-  typedef std::deque<ValueT> container_type;
++  typedef boost::container::deque<ValueT> container_type;
+ 
+ public:
+   typedef ValueT value_type;
+@@ -143,9 +144,11 @@ public:
+ 
+   // conversions
+ 
+-  const std::deque<value_type> &repeated() const
++  // TODO: remove this or replace direct use of std::deque by a typedef
++  const std::deque<value_type> repeated() const
+   {
+-    return m_values;
++    const std::deque<value_type> values(m_values.begin(), m_values.end());
++    return values;
+   }
+ 
+   const boost::optional<value_type> optional() const
+@@ -166,7 +169,7 @@ public:
+   }
+ 
+ private:
+-  std::deque<ValueT> m_values;
++  container_type m_values;
+ };
+ 
+ }
+-- 
+2.5.0
+
diff --git a/external/libetonyek/0001-try-to-fix-build-on-Windows.patch.1 b/external/libetonyek/0001-try-to-fix-build-on-Windows.patch.1
deleted file mode 100644
index 0338ac1..0000000
--- a/external/libetonyek/0001-try-to-fix-build-on-Windows.patch.1
+++ /dev/null
@@ -1,45 +0,0 @@
-From f7ca931e581f2d63f73bcd324da50f5ee3ae1f59 Mon Sep 17 00:00:00 2001
-From: David Tardon <dtardon at redhat.com>
-Date: Thu, 25 Jun 2015 18:09:17 +0200
-Subject: [PATCH] try to fix build on Windows
-
-Change-Id: Iff2aa943aef9c23c60e400f092f884fc00de4ccf
----
- src/lib/IWORKPath.cpp | 14 +-------------
- 1 file changed, 1 insertion(+), 13 deletions(-)
-
-diff --git a/src/lib/IWORKPath.cpp b/src/lib/IWORKPath.cpp
-index 0600106..cb33097 100644
---- a/src/lib/IWORKPath.cpp
-+++ b/src/lib/IWORKPath.cpp
-@@ -266,18 +266,6 @@ void CurveTo::write(RVNGPropertyList &element) const
- 
- }
- 
--namespace
--{
--
--void doAppendCurveTo(IWORKPath *const path, const std::vector<double> &points)
--{
--  assert(path);
--  assert(points.size() == 6);
--  path->appendCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);
--}
--
--}
--
- IWORKPath::Element::~Element()
- {
- }
-@@ -301,7 +289,7 @@ IWORKPath::IWORKPath(const std::string &path)
- 
-   const qi::rule<string::const_iterator, ascii::space_type> rule =
-     +(
--      ('C' >> qi::repeat(6)[double_])[bind(&doAppendCurveTo, this, qi::_1)]
-+      ('C' >> double_ >> double_ >> double_ >> double_ >> double_ >> double_)[bind(&IWORKPath::appendCurveTo, this, qi::_1, qi::_2, qi::_3, qi::_4, qi::_5, qi::_6)]
-       | ('M' >> double_ >> double_)[bind(&IWORKPath::appendMoveTo, this, qi::_1, qi::_2)]
-       | ('L' >> double_ >> double_)[bind(&IWORKPath::appendLineTo, this, qi::_1, qi::_2)]
-       | qi::char_('Z')[bind(&IWORKPath::appendClose, this)]
--- 
-2.4.2
-
diff --git a/external/libetonyek/ExternalProject_libetonyek.mk b/external/libetonyek/ExternalProject_libetonyek.mk
index 2f128d6..d296a1e 100644
--- a/external/libetonyek/ExternalProject_libetonyek.mk
+++ b/external/libetonyek/ExternalProject_libetonyek.mk
@@ -36,15 +36,18 @@ $(call gb_ExternalProject_get_state_target,libetonyek,build) :
 			) \
 			--without-docs \
 			$(if $(ENABLE_DEBUG),--enable-debug,--disable-debug) \
+			--disable-tests \
 			--disable-werror \
 			--disable-weffc \
 			--without-tools \
+			--with-mdds=0.x \
 			$(if $(filter WNT,$(OS_FOR_BUILD)),MKDIR_P="$(shell cygpath -m /usr/bin/mkdir) -p") \
 			$(if $(verbose),--disable-silent-rules,--enable-silent-rules) \
 			$(if $(filter LINUX,$(OS)), \
 				'LDFLAGS=-Wl$(COMMA)-z$(COMMA)origin \
 					-Wl$(COMMA)-rpath$(COMMA)\$$$$ORIGIN') \
 			CPPFLAGS="$(CPPFLAGS) $(if $(SYSTEM_BOOST),$(BOOST_CPPFLAGS),-I$(call gb_UnpackedTarball_get_dir,boost))" \
+			CXXFLAGS="$(CXXFLAGS) $(CXXFLAGS_CXX11)" \
 			XML_CFLAGS="$(LIBXML_CFLAGS)" \
 			XML_LIBS="$(LIBXML_LIBS)" \
 			$(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \
diff --git a/external/libetonyek/Library_etonyek.mk b/external/libetonyek/Library_etonyek.mk
index 5b559f1..12568c2 100644
--- a/external/libetonyek/Library_etonyek.mk
+++ b/external/libetonyek/Library_etonyek.mk
@@ -26,6 +26,7 @@ $(eval $(call gb_Library_set_include,etonyek,\
 	-I$(call gb_UnpackedTarball_get_dir,libetonyek)/inc \
 	-I$(call gb_UnpackedTarball_get_dir,libetonyek)/src/lib \
 	-I$(call gb_UnpackedTarball_get_dir,libetonyek)/src/lib/contexts \
+	-I$(SRCDIR)/external/libetonyek/inc \
 	$$(INCLUDE) \
 ))
 
@@ -40,7 +41,13 @@ $(eval $(call gb_Library_set_generated_cxx_suffix,etonyek,cpp))
 
 $(eval $(call gb_Library_add_generated_exception_objects,etonyek,\
 	UnpackedTarball/libetonyek/src/lib/EtonyekDocument \
+	UnpackedTarball/libetonyek/src/lib/IWAField \
+	UnpackedTarball/libetonyek/src/lib/IWAMessage \
+	UnpackedTarball/libetonyek/src/lib/IWAParser \
+	UnpackedTarball/libetonyek/src/lib/IWAReader \
+	UnpackedTarball/libetonyek/src/lib/IWASnappyStream \
 	UnpackedTarball/libetonyek/src/lib/IWORKChainedTokenizer \
+	UnpackedTarball/libetonyek/src/lib/IWORKChart \
 	UnpackedTarball/libetonyek/src/lib/IWORKCollector \
 	UnpackedTarball/libetonyek/src/lib/IWORKDictionary \
 	UnpackedTarball/libetonyek/src/lib/IWORKDiscardContext \
@@ -73,32 +80,38 @@ $(eval $(call gb_Library_add_generated_exception_objects,etonyek,\
 	UnpackedTarball/libetonyek/src/lib/IWORKZlibStream \
 	UnpackedTarball/libetonyek/src/lib/KEY1Parser \
 	UnpackedTarball/libetonyek/src/lib/KEY1Token \
+	UnpackedTarball/libetonyek/src/lib/KEY2Dictionary \
 	UnpackedTarball/libetonyek/src/lib/KEY2Parser \
 	UnpackedTarball/libetonyek/src/lib/KEY2ParserState \
 	UnpackedTarball/libetonyek/src/lib/KEY2Token \
+	UnpackedTarball/libetonyek/src/lib/KEY6Parser \
 	UnpackedTarball/libetonyek/src/lib/KEYCollector \
-	UnpackedTarball/libetonyek/src/lib/KEYDictionary \
 	UnpackedTarball/libetonyek/src/lib/KEYTypes \
+	UnpackedTarball/libetonyek/src/lib/NUM1Dictionary \
 	UnpackedTarball/libetonyek/src/lib/NUM1Parser \
 	UnpackedTarball/libetonyek/src/lib/NUM1ParserState \
 	UnpackedTarball/libetonyek/src/lib/NUM1Token \
 	UnpackedTarball/libetonyek/src/lib/NUMCollector \
-	UnpackedTarball/libetonyek/src/lib/NUMDictionary \
+	UnpackedTarball/libetonyek/src/lib/PAG1Dictionary \
 	UnpackedTarball/libetonyek/src/lib/PAG1Parser \
 	UnpackedTarball/libetonyek/src/lib/PAG1ParserState \
 	UnpackedTarball/libetonyek/src/lib/PAG1Token \
 	UnpackedTarball/libetonyek/src/lib/PAGCollector \
-	UnpackedTarball/libetonyek/src/lib/PAGDictionary \
 	UnpackedTarball/libetonyek/src/lib/PAGProperties \
 	UnpackedTarball/libetonyek/src/lib/PAGTypes \
 	UnpackedTarball/libetonyek/src/lib/contexts/IWORKBezierElement \
 	UnpackedTarball/libetonyek/src/lib/contexts/IWORKBrContext \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKChartInfoElement \
 	UnpackedTarball/libetonyek/src/lib/contexts/IWORKColorElement \
 	UnpackedTarball/libetonyek/src/lib/contexts/IWORKDataElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKFoElement \
 	UnpackedTarball/libetonyek/src/lib/contexts/IWORKGeometryElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKGroupElement \
 	UnpackedTarball/libetonyek/src/lib/contexts/IWORKHeaderFooterContext \
 	UnpackedTarball/libetonyek/src/lib/contexts/IWORKImageContext \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKImageElement \
 	UnpackedTarball/libetonyek/src/lib/contexts/IWORKLayoutElement \
+	UnpackedTarball/libetonyek/src/lib/contexts/IWORKLineElement \
 	UnpackedTarball/libetonyek/src/lib/contexts/IWORKLinkElement \
 	UnpackedTarball/libetonyek/src/lib/contexts/IWORKMediaElement \
 	UnpackedTarball/libetonyek/src/lib/contexts/IWORKMetadataElement \
diff --git a/external/libetonyek/UnpackedTarball_libetonyek.mk b/external/libetonyek/UnpackedTarball_libetonyek.mk
index 88cfda3..cdb0d0c 100644
--- a/external/libetonyek/UnpackedTarball_libetonyek.mk
+++ b/external/libetonyek/UnpackedTarball_libetonyek.mk
@@ -14,12 +14,10 @@ $(eval $(call gb_UnpackedTarball_set_tarball,libetonyek,$(ETONYEK_TARBALL)))
 $(eval $(call gb_UnpackedTarball_set_patchlevel,libetonyek,0))
 
 $(eval $(call gb_UnpackedTarball_add_patches,libetonyek,\
-	external/libetonyek/assert.patch \
 	external/libetonyek/win_build.patch.1 \
 	external/libetonyek/ubsan.patch \
 	external/libetonyek/rpath.patch \
-	external/libetonyek/0001-add-missing-include.patch.1 \
-	external/libetonyek/0001-try-to-fix-build-on-Windows.patch.1 \
+	external/libetonyek/0001-std-containers-of-incomplete-types-are-not-allowed.patch.1 \
 ))
 
 ifneq ($(OS),MACOSX)
diff --git a/external/libetonyek/assert.patch b/external/libetonyek/assert.patch
deleted file mode 100644
index 6620f18..0000000
--- a/external/libetonyek/assert.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/lib/EtonyekDocument.cpp
-+++ src/lib/EtonyekDocument.cpp
-@@ -179,7 +181,7 @@
-     info.input->seek(0, RVNG_SEEK_SET);
-   }
- 
--  assert(isGzipped == false);
-+  assert(bool(!isGzipped));
- 
-   return probeXMLImpl(info.input, probe, type, info);
- }
diff --git a/external/libetonyek/inc/IWORKToken.inc b/external/libetonyek/inc/IWORKToken.inc
new file mode 100644
index 0000000..545abb0
--- /dev/null
+++ b/external/libetonyek/inc/IWORKToken.inc
@@ -0,0 +1,1016 @@
+/* C++ code produced by gperf version 3.0.4 */
+/* Command-line: gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ IWORKToken.gperf  */
+/* Computed positions: -k'1,3,5-6,8,22,$' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf at gnu.org>."
+#endif
+
+#line 10 "IWORKToken.gperf"
+
+#if defined __GNUC__
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+using namespace IWORKToken;
+#line 18 "IWORKToken.gperf"
+struct Token
+{
+  const char *name;
+  int id;
+};
+#include <string.h>
+/* maximum key range = 1049, duplicates = 0 */
+
+class Perfect_Hash
+{
+private:
+  static inline unsigned int hash (const char *str, unsigned int len);
+public:
+  static const struct Token *in_word_set (const char *str, unsigned int len);
+};
+
+inline unsigned int
+Perfect_Hash::hash (register const char *str, register unsigned int len)
+{
+  static const unsigned short asso_values[] =
+    {
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050,   35, 1050,    0,    5,    0,
+         0,   25,   15,    5,   15,   15,   35,   10,    0, 1050,
+      1050, 1050, 1050, 1050, 1050,    5,   35,    0,    5, 1050,
+         0, 1050, 1050,   30,    0, 1050,   35,    0,   10, 1050,
+        10, 1050,    0,   65,   25, 1050, 1050,    0,   15,   10,
+      1050, 1050, 1050, 1050, 1050, 1050,    5,   10,   50,   60,
+        40,    0,  180,    5,  250,  245,   20,   15,  100,   65,
+        25,   50,  120,  250,    5,   10,    0,  115,  115,   55,
+       195,  120,  270, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+      1050, 1050, 1050, 1050, 1050, 1050, 1050
+    };
+  register int hval = len;
+
+  switch (hval)
+    {
+      default:
+        hval += asso_values[(unsigned char)str[21]];
+      /*FALLTHROUGH*/
+      case 21:
+      case 20:
+      case 19:
+      case 18:
+      case 17:
+      case 16:
+      case 15:
+      case 14:
+      case 13:
+      case 12:
+      case 11:
+      case 10:
+      case 9:
+      case 8:
+        hval += asso_values[(unsigned char)str[7]];
+      /*FALLTHROUGH*/
+      case 7:
+      case 6:
+        hval += asso_values[(unsigned char)str[5]];
+      /*FALLTHROUGH*/
+      case 5:
+        hval += asso_values[(unsigned char)str[4]];
+      /*FALLTHROUGH*/
+      case 4:
+      case 3:
+        hval += asso_values[(unsigned char)str[2]];
+      /*FALLTHROUGH*/
+      case 2:
+      case 1:
+        hval += asso_values[(unsigned char)str[0]+1];
+        break;
+    }
+  return hval + asso_values[(unsigned char)str[len - 1]];
+}
+
+const struct Token *
+Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 290,
+      MIN_WORD_LENGTH = 1,
+      MAX_WORD_LENGTH = 41,
+      MIN_HASH_VALUE = 1,
+      MAX_HASH_VALUE = 1049
+    };
+
+  static const struct Token wordlist[] =
+    {
+      {(char*)0},
+#line 26 "IWORKToken.gperf"
+      {"1",_1},
+#line 256 "IWORKToken.gperf"
+      {"st",st},
+      {(char*)0}, {(char*)0},
+#line 33 "IWORKToken.gperf"
+      {"IDREF",IDREF},
+#line 25 "IWORKToken.gperf"
+      {"0",_0},
+#line 32 "IWORKToken.gperf"
+      {"ID",ID},
+#line 113 "IWORKToken.gperf"
+      {"fmt",fmt},
+      {(char*)0}, {(char*)0},
+#line 241 "IWORKToken.gperf"
+      {"s",s},
+#line 237 "IWORKToken.gperf"
+      {"rt",rt},
+      {(char*)0},
+#line 91 "IWORKToken.gperf"
+      {"data",data},
+#line 250 "IWORKToken.gperf"
+      {"shape",shape},
+#line 232 "IWORKToken.gperf"
+      {"r",r},
+#line 139 "IWORKToken.gperf"
+      {"fs",fs},
+      {(char*)0},
+#line 263 "IWORKToken.gperf"
+      {"star",star},
+#line 234 "IWORKToken.gperf"
+      {"right",right},
+      {(char*)0}, {(char*)0},
+#line 249 "IWORKToken.gperf"
+      {"sfa",sfa},
+      {(char*)0},
+#line 162 "IWORKToken.gperf"
+      {"ident",ident},
+#line 269 "IWORKToken.gperf"
+      {"stroke",stroke},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 259 "IWORKToken.gperf"
+      {"spaceAfter",spaceAfter},
+#line 126 "IWORKToken.gperf"
+      {"format-type",format_type},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 163 "IWORKToken.gperf"
+      {"image",image},
+#line 242 "IWORKToken.gperf"
+      {"scalar",scalar},
+#line 236 "IWORKToken.gperf"
+      {"rn",rn},
+      {(char*)0},
+#line 262 "IWORKToken.gperf"
+      {"span",span},
+#line 195 "IWORKToken.gperf"
+      {"miter",miter},
+#line 90 "IWORKToken.gperf"
+      {"d",d},
+#line 89 "IWORKToken.gperf"
+      {"ct",ct},
+      {(char*)0}, {(char*)0},
+#line 112 "IWORKToken.gperf"
+      {"firstPageMaster",firstPageMaster},
+#line 268 "IWORKToken.gperf"
+      {"string",string},
+      {(char*)0},
+#line 127 "IWORKToken.gperf"
+      {"format-string",format_string},
+#line 191 "IWORKToken.gperf"
+      {"mark",mark},
+#line 31 "IWORKToken.gperf"
+      {"1414088262",_1414088262},
+#line 252 "IWORKToken.gperf"
+      {"shearYAngle",shearYAngle},
+#line 258 "IWORKToken.gperf"
+      {"so",so},
+#line 41 "IWORKToken.gperf"
+      {"amt",amt},
+      {(char*)0},
+#line 28 "IWORKToken.gperf"
+      {"1299148630",_1299148630},
+#line 251 "IWORKToken.gperf"
+      {"shearXAngle",shearXAngle},
+#line 114 "IWORKToken.gperf"
+      {"fo",fo},
+#line 116 "IWORKToken.gperf"
+      {"fontName",fontName},
+      {(char*)0},
+#line 42 "IWORKToken.gperf"
+      {"angle",angle},
+#line 38 "IWORKToken.gperf"
+      {"a",a},
+#line 161 "IWORKToken.gperf"
+      {"id",id},
+      {(char*)0},
+#line 57 "IWORKToken.gperf"
+      {"butt",butt},
+#line 29 "IWORKToken.gperf"
+      {"1346651680",_1346651680},
+#line 130 "IWORKToken.gperf"
+      {"format-negative-style",format_negative_style},
+      {(char*)0}, {(char*)0},
+#line 196 "IWORKToken.gperf"
+      {"mode",mode},
+#line 27 "IWORKToken.gperf"
+      {"1246774599",_1246774599},
+#line 118 "IWORKToken.gperf"
+      {"footer",footer},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 94 "IWORKToken.gperf"
+      {"datasource",datasource},
+#line 199 "IWORKToken.gperf"
+      {"n",n},
+#line 119 "IWORKToken.gperf"
+      {"footers",footers},
+      {(char*)0},
+#line 239 "IWORKToken.gperf"
+      {"rows",rows},
+      {(char*)0},
+#line 124 "IWORKToken.gperf"
+      {"format-base",format_base},
+#line 87 "IWORKToken.gperf"
+      {"cornerRadius",cornerRadius},
+      {(char*)0},
+#line 99 "IWORKToken.gperf"
+      {"drawable-shape",drawable_shape},
+#line 111 "IWORKToken.gperf"
+      {"firstLineIndent",firstLineIndent},
+#line 164 "IWORKToken.gperf"
+      {"image-media",image_media},
+      {(char*)0}, {(char*)0},
+#line 98 "IWORKToken.gperf"
+      {"drawables",drawables},
+#line 192 "IWORKToken.gperf"
+      {"media",media},
+#line 128 "IWORKToken.gperf"
+      {"format-decimal-places",format_decimal_places},
+#line 64 "IWORKToken.gperf"
+      {"cb",cb},
+      {(char*)0},
+#line 183 "IWORKToken.gperf"
+      {"line",line},
+#line 30 "IWORKToken.gperf"
+      {"1347307366",_1347307366},
+#line 235 "IWORKToken.gperf"
+      {"rightIndent",rightIndent},
+#line 86 "IWORKToken.gperf"
+      {"content",content},
+#line 125 "IWORKToken.gperf"
+      {"format-base-places",format_base_places},
+#line 88 "IWORKToken.gperf"
+      {"crbr",crbr},
+#line 129 "IWORKToken.gperf"
+      {"format-currency-code",format_currency_code},
+#line 131 "IWORKToken.gperf"
+      {"format-show-thousands-separator",format_show_thousands_separator},
+#line 255 "IWORKToken.gperf"
+      {"sl",sl},
+#line 194 "IWORKToken.gperf"
+      {"metadata",metadata},
+      {(char*)0},
+#line 74 "IWORKToken.gperf"
+      {"chart-name",chart_name},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 186 "IWORKToken.gperf"
+      {"link",link},
+#line 107 "IWORKToken.gperf"
+      {"false",false_},
+#line 49 "IWORKToken.gperf"
+      {"b",b},
+#line 136 "IWORKToken.gperf"
+      {"frame-w",frame_w},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 276 "IWORKToken.gperf"
+      {"t",t},
+#line 100 "IWORKToken.gperf"
+      {"du",du},
+      {(char*)0},
+#line 200 "IWORKToken.gperf"
+      {"name",name},
+#line 293 "IWORKToken.gperf"
+      {"title",title},
+      {(char*)0},
+#line 48 "IWORKToken.gperf"
+      {"authors",authors},
+      {(char*)0},
+#line 189 "IWORKToken.gperf"
+      {"lnbr",lnbr},
+#line 270 "IWORKToken.gperf"
+      {"style",style},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 202 "IWORKToken.gperf"
+      {"number",number},
+      {(char*)0}, {(char*)0},
+#line 68 "IWORKToken.gperf"
+      {"characterstyle",characterstyle},
+      {(char*)0}, {(char*)0},
+#line 81 "IWORKToken.gperf"
+      {"comment",comment},
+#line 120 "IWORKToken.gperf"
+      {"footnote",footnote},
+      {(char*)0},
+#line 273 "IWORKToken.gperf"
+      {"stylesheet",stylesheet},
+#line 201 "IWORKToken.gperf"
+      {"naturalSize",naturalSize},
+      {(char*)0}, {(char*)0},
+#line 115 "IWORKToken.gperf"
+      {"fontColor",fontColor},
+#line 122 "IWORKToken.gperf"
+      {"footnotebr",footnotebr},
+#line 272 "IWORKToken.gperf"
+      {"styles",styles},
+      {(char*)0}, {(char*)0},
+#line 123 "IWORKToken.gperf"
+      {"footnotes",footnotes},
+      {(char*)0},
+#line 275 "IWORKToken.gperf"
+      {"superscript",superscript},
+      {(char*)0},
+#line 73 "IWORKToken.gperf"
+      {"chart-model-object",chart_model_object},
+      {(char*)0},
+#line 77 "IWORKToken.gperf"
+      {"color",color},
+#line 96 "IWORKToken.gperf"
+      {"displayname",displayname},
+      {(char*)0},
+#line 121 "IWORKToken.gperf"
+      {"footnote-mark",footnote_mark},
+      {(char*)0},
+#line 71 "IWORKToken.gperf"
+      {"chart-row_names",chart_row_names},
+      {(char*)0}, {(char*)0},
+#line 70 "IWORKToken.gperf"
+      {"chart-column_names",chart_column_names},
+#line 110 "IWORKToken.gperf"
+      {"filtered-image",filtered_image},
+      {(char*)0}, {(char*)0},
+#line 165 "IWORKToken.gperf"
+      {"intratopicbr",intratopicbr},
+      {(char*)0},
+#line 171 "IWORKToken.gperf"
+      {"kind",kind},
+#line 72 "IWORKToken.gperf"
+      {"chart-info",chart_info},
+#line 302 "IWORKToken.gperf"
+      {"v",v},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 138 "IWORKToken.gperf"
+      {"frame-y",frame_y},
+      {(char*)0},
+#line 278 "IWORKToken.gperf"
+      {"tabs",tabs},
+      {(char*)0}, {(char*)0},
+#line 248 "IWORKToken.gperf"
+      {"sf",sf},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 106 "IWORKToken.gperf"
+      {"f",f},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 59 "IWORKToken.gperf"
+      {"calc-engine",calc_engine},
+#line 305 "IWORKToken.gperf"
+      {"vector-style",vector_style},
+#line 206 "IWORKToken.gperf"
+      {"oddPageMaster",oddPageMaster},
+#line 187 "IWORKToken.gperf"
+      {"liststyle",liststyle},
+      {(char*)0},
+#line 197 "IWORKToken.gperf"
+      {"movie-media",movie_media},
+#line 133 "IWORKToken.gperf"
+      {"format-use-accounting-style",format_use_accounting_style},
+#line 109 "IWORKToken.gperf"
+      {"filtered",filtered},
+      {(char*)0},
+#line 173 "IWORKToken.gperf"
+      {"layer",layer},
+#line 58 "IWORKToken.gperf"
+      {"cached-data",cached_data},
+      {(char*)0},
+#line 240 "IWORKToken.gperf"
+      {"row-label-formulas",row_label_formulas},
+#line 55 "IWORKToken.gperf"
+      {"bold",bold},
+      {(char*)0}, {(char*)0},
+#line 37 "IWORKToken.gperf"
+      {"SFTStrokeProperty", SFTStrokeProperty},
+      {(char*)0},
+#line 108 "IWORKToken.gperf"
+      {"fill",fill},
+      {(char*)0},
+#line 190 "IWORKToken.gperf"
+      {"locked",locked},
+#line 103 "IWORKToken.gperf"
+      {"element",element},
+      {(char*)0}, {(char*)0},
+#line 75 "IWORKToken.gperf"
+      {"chart-type",chart_type},
+#line 175 "IWORKToken.gperf"
+      {"layers",layers},
+#line 193 "IWORKToken.gperf"
+      {"menu-choices",menu_choices},
+#line 277 "IWORKToken.gperf"
+      {"tab",tab},
+#line 105 "IWORKToken.gperf"
+      {"evenPageMaster",evenPageMaster},
+      {(char*)0},
+#line 97 "IWORKToken.gperf"
+      {"double",double_},
+      {(char*)0},
+#line 172 "IWORKToken.gperf"
+      {"language",language},
+#line 65 "IWORKToken.gperf"
+      {"cell-date",cell_date},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 63 "IWORKToken.gperf"
+      {"category-title",category_title},
+      {(char*)0},
+#line 95 "IWORKToken.gperf"
+      {"date-format",date_format},
+      {(char*)0}, {(char*)0},
+#line 297 "IWORKToken.gperf"
+      {"true",true_},
+      {(char*)0},
+#line 260 "IWORKToken.gperf"
+      {"spaceBefore",spaceBefore},
+#line 204 "IWORKToken.gperf"
+      {"numrows", numrows},
+      {(char*)0},
+#line 298 "IWORKToken.gperf"
+      {"type",type},
+#line 247 "IWORKToken.gperf"
+      {"self-contained-movie",self_contained_movie},
+      {(char*)0}, {(char*)0},
+#line 92 "IWORKToken.gperf"
+      {"data-formulas",data_formulas},
+      {(char*)0}, {(char*)0},
+#line 56 "IWORKToken.gperf"
+      {"bottom",bottom},
+#line 79 "IWORKToken.gperf"
+      {"columns",columns},
+      {(char*)0},
+#line 180 "IWORKToken.gperf"
+      {"left",left},
+      {(char*)0},
+#line 309 "IWORKToken.gperf"
+      {"w",w},
+#line 137 "IWORKToken.gperf"
+      {"frame-x",frame_x},
+#line 238 "IWORKToken.gperf"
+      {"row-span",row_span},
+      {(char*)0}, {(char*)0},
+#line 140 "IWORKToken.gperf"
+      {"g",g},
+      {(char*)0},
+#line 303 "IWORKToken.gperf"
+      {"val",val},
+#line 35 "IWORKToken.gperf"
+      {"SFTCellStylePropertyDateTimeFormat",SFTCellStylePropertyDateTimeFormat},
+      {(char*)0},
+#line 78 "IWORKToken.gperf"
+      {"column",column},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 151 "IWORKToken.gperf"
+      {"header",header},
+      {(char*)0},
+#line 227 "IWORKToken.gperf"
+      {"pos",pos},
+#line 253 "IWORKToken.gperf"
+      {"size",size},
+      {(char*)0},
+#line 264 "IWORKToken.gperf"
+      {"start-index",start_index},
+#line 152 "IWORKToken.gperf"
+      {"headers",headers},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 203 "IWORKToken.gperf"
+      {"numcols", numcols},
+#line 61 "IWORKToken.gperf"
+      {"cap",cap},
+      {(char*)0}, {(char*)0},
+#line 43 "IWORKToken.gperf"
+      {"anon-styles",anon_styles},
+#line 221 "IWORKToken.gperf"
+      {"pattern",pattern},
+      {(char*)0},
+#line 167 "IWORKToken.gperf"
+      {"join",join},
+#line 101 "IWORKToken.gperf"
+      {"duration-format",duration_format},
+#line 257 "IWORKToken.gperf"
+      {"slide-style",slide_style},
+#line 261 "IWORKToken.gperf"
+      {"spacing",spacing},
+      {(char*)0},
+#line 299 "IWORKToken.gperf"
+      {"underline",underline},
+      {(char*)0},
+#line 185 "IWORKToken.gperf"
+      {"linespacing",linespacing},
+#line 44 "IWORKToken.gperf"
+      {"aspectRatioLocked",aspectRatioLocked},
+      {(char*)0},
+#line 150 "IWORKToken.gperf"
+      {"head",head},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 170 "IWORKToken.gperf"
+      {"keywords",keywords},
+#line 271 "IWORKToken.gperf"
+      {"style-run",style_run},
+      {(char*)0},
+#line 176 "IWORKToken.gperf"
+      {"layout",layout},
+#line 135 "IWORKToken.gperf"
+      {"frame-h",frame_h},
+      {(char*)0}, {(char*)0},
+#line 181 "IWORKToken.gperf"
+      {"leftIndent",leftIndent},
+#line 178 "IWORKToken.gperf"
+      {"layoutstyle",layoutstyle},
+      {(char*)0},
+#line 205 "IWORKToken.gperf"
+      {"number-format",number_format},
+#line 289 "IWORKToken.gperf"
+      {"text",text},
+#line 66 "IWORKToken.gperf"
+      {"cell-style",cell_style},
+#line 312 "IWORKToken.gperf"
+      {"x",x},
+#line 224 "IWORKToken.gperf"
+      {"pm",pm},
+#line 69 "IWORKToken.gperf"
+      {"characterstyle-ref",characterstyle_ref},
+      {(char*)0},
+#line 211 "IWORKToken.gperf"
+      {"pageBreakBefore",pageBreakBefore},
+      {(char*)0}, {(char*)0},
+#line 283 "IWORKToken.gperf"
+      {"tabular-style",tabular_style},
+#line 274 "IWORKToken.gperf"
+      {"stylesheet-ref",stylesheet_ref},
+      {(char*)0}, {(char*)0},
+#line 182 "IWORKToken.gperf"
+      {"leveled",leveled},
+#line 76 "IWORKToken.gperf"
+      {"col-span",col_span},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 177 "IWORKToken.gperf"
+      {"layoutMargins",layoutMargins},
+#line 85 "IWORKToken.gperf"
+      {"container-hint",container_hint},
+      {(char*)0},
+#line 160 "IWORKToken.gperf"
+      {"http://developer.apple.com/namespaces/sfa",NS_URI_SFA},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 280 "IWORKToken.gperf"
+      {"tabstop",tabstop},
+#line 198 "IWORKToken.gperf"
+      {"mutable-array",mutable_array},
+      {(char*)0},
+#line 212 "IWORKToken.gperf"
+      {"pagemaster",pagemaster},
+#line 51 "IWORKToken.gperf"
+      {"bezier",bezier},
+      {(char*)0},
+#line 117 "IWORKToken.gperf"
+      {"fontSize",fontSize},
+      {(char*)0},
+#line 39 "IWORKToken.gperf"
+      {"align",align},
+#line 184 "IWORKToken.gperf"
+      {"lineSpacing",lineSpacing},
+      {(char*)0}, {(char*)0},
+#line 132 "IWORKToken.gperf"
+      {"format-fraction-accuracy",format_fraction_accuracy},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 295 "IWORKToken.gperf"
+      {"top",top},
+      {(char*)0}, {(char*)0},
+#line 80 "IWORKToken.gperf"
+      {"column-label-formulas",column_label_formulas},
+#line 34 "IWORKToken.gperf"
+      {"SFTCellStylePropertyNumberFormat",SFTCellStylePropertyNumberFormat},
+#line 233 "IWORKToken.gperf"
+      {"relative",relative},
+#line 36 "IWORKToken.gperf"
+      {"SFTCellStylePropertyDurationFormat",SFTCellStylePropertyDurationFormat},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 45 "IWORKToken.gperf"
+      {"attachment",attachment},
+#line 209 "IWORKToken.gperf"
+      {"p",p},
+#line 281 "IWORKToken.gperf"
+      {"tabular-info",tabular_info},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 306 "IWORKToken.gperf"
+      {"vector-style-ref",vector_style_ref},
+#line 245 "IWORKToken.gperf"
+      {"sectionstyle",sectionstyle},
+#line 188 "IWORKToken.gperf"
+      {"liststyle-ref",liststyle_ref},
+#line 134 "IWORKToken.gperf"
+      {"formula-chart-model",formula_chart_model},
+      {(char*)0},
+#line 47 "IWORKToken.gperf"
+      {"attachments",attachments},
+#line 285 "IWORKToken.gperf"
+      {"tailAtCenter",tailAtCenter},
+#line 155 "IWORKToken.gperf"
+      {"hfs-type",hfs_type},
+#line 24 "IWORKToken.gperf"
+      {"__multilingual",__multilingual},
+#line 82 "IWORKToken.gperf"
+      {"connection-line",connection_line},
+#line 84 "IWORKToken.gperf"
+      {"connection-style",connection_style},
+#line 244 "IWORKToken.gperf"
+      {"section",section},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 313 "IWORKToken.gperf"
+      {"y",y},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 267 "IWORKToken.gperf"
+      {"strikethru",strikethru},
+      {(char*)0},
+#line 208 "IWORKToken.gperf"
+      {"outline",outline},
+      {(char*)0},
+#line 216 "IWORKToken.gperf"
+      {"paragraphstyle",paragraphstyle},
+#line 215 "IWORKToken.gperf"
+      {"paragraphStroke",paragraphStroke},
+#line 166 "IWORKToken.gperf"
+      {"italic",italic},
+#line 168 "IWORKToken.gperf"
+      {"keepLinesTogether",keepLinesTogether},
+#line 296 "IWORKToken.gperf"
+      {"tracking",tracking},
+#line 213 "IWORKToken.gperf"
+      {"paragraphBorderType",paragraphBorderType},
+      {(char*)0},
+#line 243 "IWORKToken.gperf"
+      {"scalar-path",scalar_path},
+      {(char*)0},
+#line 93 "IWORKToken.gperf"
+      {"data-ref",data_ref},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 174 "IWORKToken.gperf"
+      {"layer-ref",layer_ref},
+      {(char*)0},
+#line 266 "IWORKToken.gperf"
+      {"sticky-note",sticky_note},
+#line 292 "IWORKToken.gperf"
+      {"text-storage",text_storage},
+      {(char*)0},
+#line 40 "IWORKToken.gperf"
+      {"alignment",alignment},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 282 "IWORKToken.gperf"
+      {"tabular-model",tabular_model},
+#line 290 "IWORKToken.gperf"
+      {"textBackground",textBackground},
+      {(char*)0},
+#line 254 "IWORKToken.gperf"
+      {"sizesLocked",sizesLocked},
+#line 310 "IWORKToken.gperf"
+      {"widowControl",widowControl},
+#line 50 "IWORKToken.gperf"
+      {"baselineShift",baselineShift},
+#line 158 "IWORKToken.gperf"
+      {"href",href},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 207 "IWORKToken.gperf"
+      {"other-datas",other_datas},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 304 "IWORKToken.gperf"
+      {"value-title",value_title},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 300 "IWORKToken.gperf"
+      {"unfiltered",unfiltered},
+#line 294 "IWORKToken.gperf"
+      {"title-placeholder-ref",title_placeholder_ref},
+      {(char*)0}, {(char*)0},
+#line 62 "IWORKToken.gperf"
+      {"capitalization",capitalization},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 284 "IWORKToken.gperf"
+      {"tail",tail},
+#line 54 "IWORKToken.gperf"
+      {"body-placeholder-ref",body_placeholder_ref},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 219 "IWORKToken.gperf"
+      {"parent-ref",parent_ref},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 231 "IWORKToken.gperf"
+      {"proxy-master-layer",proxy_master_layer},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0},
+#line 179 "IWORKToken.gperf"
+      {"layoutstyle-ref",layoutstyle_ref},
+#line 149 "IWORKToken.gperf"
+      {"h",h},
+      {(char*)0},
+#line 214 "IWORKToken.gperf"
+      {"paragraphFill",paragraphFill},
+#line 67 "IWORKToken.gperf"
+      {"cell-style-ref",cell_style_ref},
+#line 225 "IWORKToken.gperf"
+      {"point",point},
+      {(char*)0}, {(char*)0},
+#line 104 "IWORKToken.gperf"
+      {"equal-columns",equal_columns},
+#line 220 "IWORKToken.gperf"
+      {"path",path},
+#line 159 "IWORKToken.gperf"
+      {"http://developer.apple.com/namespaces/sf",NS_URI_SF},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 53 "IWORKToken.gperf"
+      {"bezier-ref",bezier_ref},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0},
+#line 218 "IWORKToken.gperf"
+      {"parent-ident",parent_ident},
+      {(char*)0},
+#line 144 "IWORKToken.gperf"
+      {"grid",grid},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 148 "IWORKToken.gperf"
+      {"group",group},
+      {(char*)0}, {(char*)0},
+#line 141 "IWORKToken.gperf"
+      {"geometry",geometry},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 46 "IWORKToken.gperf"
+      {"attachment-ref",attachment_ref},
+      {(char*)0}, {(char*)0},
+#line 229 "IWORKToken.gperf"
+      {"property-map",property_map},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 246 "IWORKToken.gperf"
+      {"sectionstyle_ref",sectionstyle_ref},
+      {(char*)0},
+#line 228 "IWORKToken.gperf"
+      {"position",position},
+#line 291 "IWORKToken.gperf"
+      {"text-body",text_body},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 60 "IWORKToken.gperf"
+      {"callout2-path",callout2_path},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 210 "IWORKToken.gperf"
+      {"padding",padding},
+#line 279 "IWORKToken.gperf"
+      {"tabs-ref",tabs_ref},
+      {(char*)0},
+#line 265 "IWORKToken.gperf"
+      {"stop-index",stop_index},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 217 "IWORKToken.gperf"
+      {"paragraphstyle-ref",paragraphstyle_ref},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0},
+#line 301 "IWORKToken.gperf"
+      {"unfiltered-ref",unfiltered_ref},
+      {(char*)0}, {(char*)0},
+#line 307 "IWORKToken.gperf"
+      {"verticalFlip",verticalFlip},
+      {(char*)0},
+#line 308 "IWORKToken.gperf"
+      {"vertical-gridline-styles",vertical_gridline_styles,},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0},
+#line 157 "IWORKToken.gperf"
+      {"horizontal-gridline-styles",horizontal_gridline_styles},
+#line 169 "IWORKToken.gperf"
+      {"keepWithNext",keepWithNext},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0},
+#line 153 "IWORKToken.gperf"
+      {"headline-style",headline_style},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 222 "IWORKToken.gperf"
+      {"placeholder-style",placeholder_style},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 83 "IWORKToken.gperf"
+      {"connection-path",connection_path},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 146 "IWORKToken.gperf"
+      {"grid-row",grid_row},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 288 "IWORKToken.gperf"
+      {"tailSize",tailSize},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 287 "IWORKToken.gperf"
+      {"tailPositionY",tailPositionY},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 286 "IWORKToken.gperf"
+      {"tailPositionX",tailPositionX},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0},
+#line 156 "IWORKToken.gperf"
+      {"horizontalFlip",horizontalFlip},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 52 "IWORKToken.gperf"
+      {"bezier-path",bezier_path},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 145 "IWORKToken.gperf"
+      {"grid-column",grid_column},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 311 "IWORKToken.gperf"
+      {"width",width},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 154 "IWORKToken.gperf"
+      {"height",height},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 102 "IWORKToken.gperf"
+      {"editable-bezier-path",editable_bezier_path},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 230 "IWORKToken.gperf"
+      {"proxied-cell-ref",proxied_cell_ref},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 226 "IWORKToken.gperf"
+      {"point-path",point_path},
+      {(char*)0}, {(char*)0},
+#line 142 "IWORKToken.gperf"
+      {"graphic-style",graphic_style},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 223 "IWORKToken.gperf"
+      {"placeholder-style-ref",placeholder_style_ref},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 143 "IWORKToken.gperf"
+      {"graphic-style-ref",graphic_style_ref},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 147 "IWORKToken.gperf"
+      {"gridline-index",gridline_index,}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].name;
+
+          if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
+#line 314 "IWORKToken.gperf"
+
diff --git a/external/libetonyek/inc/KEY1Token.inc b/external/libetonyek/inc/KEY1Token.inc
new file mode 100644
index 0000000..debfac3
--- /dev/null
+++ b/external/libetonyek/inc/KEY1Token.inc
@@ -0,0 +1,540 @@
+/* C++ code produced by gperf version 3.0.4 */
+/* Command-line: gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ KEY1Token.gperf  */
+/* Computed positions: -k'1,3,6,9,14' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf at gnu.org>."
+#endif
+
+#line 10 "KEY1Token.gperf"
+
+#if defined __GNUC__
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+using namespace KEY1Token;
+#line 18 "KEY1Token.gperf"
+struct Token
+{
+  const char *name;
+  int id;
+};
+#include <string.h>
+/* maximum key range = 368, duplicates = 0 */
+
+class Perfect_Hash
+{
+private:
+  static inline unsigned int hash (const char *str, unsigned int len);
+public:
+  static const struct Token *in_word_set (const char *str, unsigned int len);
+};
+
+inline unsigned int
+Perfect_Hash::hash (register const char *str, register unsigned int len)
+{
+  static const unsigned short asso_values[] =
+    {
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371,  85, 115, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371,   0,   0,   5,  15,
+        0,   0,   0, 371, 371, 371, 371, 371,  15,  30,
+       50, 371,   5,   5,   0, 371,  25, 371, 371, 371,
+      371, 371, 371, 371, 371,  10, 371,   0,  25, 110,
+       10,  10,  10,  20,  75,  60, 105,   0,  15,   5,
+        0,  85,  50,  15,  80,   5,  10,  40,  35,  85,
+      371,  65,   0,  40, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
+      371, 371, 371, 371, 371, 371, 371
+    };
+  register int hval = len;
+
+  switch (hval)
+    {
+      default:
+        hval += asso_values[(unsigned char)str[13]];
+      /*FALLTHROUGH*/
+      case 13:
+      case 12:
+      case 11:
+      case 10:
+      case 9:
+        hval += asso_values[(unsigned char)str[8]];
+      /*FALLTHROUGH*/
+      case 8:
+      case 7:
+      case 6:
+        hval += asso_values[(unsigned char)str[5]];
+      /*FALLTHROUGH*/
+      case 5:
+      case 4:
+      case 3:
+        hval += asso_values[(unsigned char)str[2]+1];
+      /*FALLTHROUGH*/
+      case 2:
+      case 1:
+        hval += asso_values[(unsigned char)str[0]];
+        break;
+    }
+  return hval;
+}
+
+const struct Token *
+Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 149,
+      MIN_WORD_LENGTH = 2,
+      MAX_WORD_LENGTH = 35,
+      MIN_HASH_VALUE = 3,
+      MAX_HASH_VALUE = 370
+    };
+
+  static const struct Token wordlist[] =
+    {
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 79 "KEY1Token.gperf"
+      {"key",key},
+#line 101 "KEY1Token.gperf"
+      {"name",name},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 103 "KEY1Token.gperf"
+      {"null",null},
+#line 29 "KEY1Token.gperf"
+      {"array",array},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 30 "KEY1Token.gperf"
+      {"axes",axes},
+#line 126 "KEY1Token.gperf"
+      {"serie",serie},
+#line 145 "KEY1Token.gperf"
+      {"styles",styles},
+      {(char*)0}, {(char*)0},
+#line 58 "KEY1Token.gperf"
+      {"file",file},
+#line 140 "KEY1Token.gperf"
+      {"steps",steps},
+#line 127 "KEY1Token.gperf"
+      {"series",series},
+      {(char*)0}, {(char*)0},
+#line 53 "KEY1Token.gperf"
+      {"dict",dict},
+#line 151 "KEY1Token.gperf"
+      {"theme",theme},
+#line 146 "KEY1Token.gperf"
+      {"symbol",symbol},
+      {(char*)0}, {(char*)0},
+#line 162 "KEY1Token.gperf"
+      {"type",type},
+#line 157 "KEY1Token.gperf"
+      {"time-stamp",time_stamp},
+      {(char*)0},
+#line 54 "KEY1Token.gperf"
+      {"display-name",display_name},
+#line 94 "KEY1Token.gperf"
+      {"majorTickPositions",majorTickPositions},
+      {(char*)0},
+#line 130 "KEY1Token.gperf"
+      {"shape",shape},
+#line 141 "KEY1Token.gperf"
+      {"string",string},
+#line 138 "KEY1Token.gperf"
+      {"spacing",spacing},
+      {(char*)0},
+#line 33 "KEY1Token.gperf"
+      {"body",body},
+      {(char*)0},
+#line 93 "KEY1Token.gperf"
+      {"locked",locked},
+#line 143 "KEY1Token.gperf"
+      {"stroke-style",stroke_style},
+      {(char*)0},
+#line 61 "KEY1Token.gperf"
+      {"fill-type",fill_type},
+#line 60 "KEY1Token.gperf"
+      {"fill-style",fill_style},
+#line 35 "KEY1Token.gperf"
+      {"bullet",bullet},
+#line 38 "KEY1Token.gperf"
+      {"bullets",bullets},
+      {(char*)0},
+#line 133 "KEY1Token.gperf"
+      {"size",size},
+#line 45 "KEY1Token.gperf"
+      {"dash-style",dash_style},
+      {(char*)0},
+#line 92 "KEY1Token.gperf"
+      {"lock-aspect-ratio",lock_aspect_ratio},
+#line 99 "KEY1Token.gperf"
+      {"metadata",metadata},
+#line 46 "KEY1Token.gperf"
+      {"data",data},
+#line 158 "KEY1Token.gperf"
+      {"title",title},
+      {(char*)0},
+#line 102 "KEY1Token.gperf"
+      {"natural-size",natural_size},
+#line 37 "KEY1Token.gperf"
+      {"bullet-indentation",bullet_indentation},
+#line 147 "KEY1Token.gperf"
+      {"symbolFillMode",symbolFillMode},
+#line 83 "KEY1Token.gperf"
+      {"layerElementsForShadowing",layerElementsForShadowing},
+      {(char*)0},
+#line 71 "KEY1Token.gperf"
+      {"id",id},
+#line 66 "KEY1Token.gperf"
+      {"gradient",gradient},
+#line 160 "KEY1Token.gperf"
+      {"transformation",transformation},
+#line 154 "KEY1Token.gperf"
+      {"tickLabelsAngle",tickLabelsAngle},
+#line 164 "KEY1Token.gperf"
+      {"userMaximum",userMaximum},
+#line 171 "KEY1Token.gperf"
+      {"visible",visible},
+      {(char*)0},
+#line 152 "KEY1Token.gperf"
+      {"thumbnail",thumbnail},
+#line 153 "KEY1Token.gperf"
+      {"thumbnails",thumbnails},
+      {(char*)0},
+#line 52 "KEY1Token.gperf"
+      {"DefaultLegendSize",DefaultLegendSize},
+#line 132 "KEY1Token.gperf"
+      {"showZero",showZero},
+#line 55 "KEY1Token.gperf"
+      {"drawables",drawables},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 166 "KEY1Token.gperf"
+      {"useUserMaximum",useUserMaximum},
+#line 26 "KEY1Token.gperf"
+      {"angle",angle},
+      {(char*)0},
+#line 117 "KEY1Token.gperf"
+      {"presentation",presentation},
+#line 56 "KEY1Token.gperf"
+      {"duration",duration},
+#line 51 "KEY1Token.gperf"
+      {"DefaultLegendRelativePosition",DefaultLegendRelativePosition},
+      {(char*)0},
+#line 104 "KEY1Token.gperf"
+      {"number",number},
+      {(char*)0}, {(char*)0},
+#line 39 "KEY1Token.gperf"
+      {"byte-size",byte_size},
+#line 73 "KEY1Token.gperf"
+      {"image",image},
+      {(char*)0},
+#line 144 "KEY1Token.gperf"
+      {"stroke-width",stroke_width},
+#line 91 "KEY1Token.gperf"
+      {"location",location},
+#line 124 "KEY1Token.gperf"
+      {"rect",rect},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 63 "KEY1Token.gperf"
+      {"font",font},
+#line 172 "KEY1Token.gperf"
+      {"width",width},
+#line 123 "KEY1Token.gperf"
+      {"radius",radius},
+      {(char*)0}, {(char*)0},
+#line 86 "KEY1Token.gperf"
+      {"line",line},
+#line 85 "KEY1Token.gperf"
+      {"level",level},
+#line 84 "KEY1Token.gperf"
+      {"legend",legend},
+      {(char*)0}, {(char*)0},
+#line 31 "KEY1Token.gperf"
+      {"axis",axis},
+      {(char*)0},
+#line 76 "KEY1Token.gperf"
+      {"interBarGap",interBarGap},
+#line 156 "KEY1Token.gperf"
+      {"tickLabelsVisible",tickLabelsVisible},
+      {(char*)0},
+#line 64 "KEY1Token.gperf"
+      {"font-name",font_name},
+#line 135 "KEY1Token.gperf"
+      {"slide",slide},
+      {(char*)0},
+#line 142 "KEY1Token.gperf"
+      {"stroke-color",stroke_color},
+#line 100 "KEY1Token.gperf"
+      {"minorTickPositions",minorTickPositions},
+#line 65 "KEY1Token.gperf"
+      {"font-size",font_size},
+#line 43 "KEY1Token.gperf"
+      {"color",color},
+#line 106 "KEY1Token.gperf"
+      {"offset",offset},
+#line 96 "KEY1Token.gperf"
+      {"master-slide",master_slide},
+#line 98 "KEY1Token.gperf"
+      {"master-slides",master_slides},
+#line 25 "KEY1Token.gperf"
+      {"altLineVisible",altLineVisible},
+#line 170 "KEY1Token.gperf"
+      {"visibility",visibility},
+#line 165 "KEY1Token.gperf"
+      {"userMinimum",userMinimum},
+#line 107 "KEY1Token.gperf"
+      {"opacity",opacity},
+      {(char*)0},
+#line 125 "KEY1Token.gperf"
+      {"reference",reference},
+#line 69 "KEY1Token.gperf"
+      {"guide",guide},
+      {(char*)0},
+#line 168 "KEY1Token.gperf"
+      {"version",version},
+      {(char*)0},
+#line 119 "KEY1Token.gperf"
+      {"prototype-data",prototype_data},
+      {(char*)0},
+#line 70 "KEY1Token.gperf"
+      {"guides",guides},
+#line 129 "KEY1Token.gperf"
+      {"shadow-style",shadow_style},
+      {(char*)0},
+#line 167 "KEY1Token.gperf"
+      {"useUserMinimum",useUserMinimum},
+      {(char*)0},
+#line 139 "KEY1Token.gperf"
+      {"start-color",start_color},
+#line 36 "KEY1Token.gperf"
+      {"bullet-characters",bullet_characters},
+#line 131 "KEY1Token.gperf"
+      {"showGrid",showGrid},
+#line 148 "KEY1Token.gperf"
+      {"tab-stops",tab_stops},
+      {(char*)0}, {(char*)0},
+#line 159 "KEY1Token.gperf"
+      {"titleVisible",titleVisible},
+      {(char*)0},
+#line 105 "KEY1Token.gperf"
+      {"numberOfPoints",numberOfPoints},
+#line 41 "KEY1Token.gperf"
+      {"chartFrame",chartFrame},
+#line 32 "KEY1Token.gperf"
+      {"background-fill-style",background_fill_style},
+#line 118 "KEY1Token.gperf"
+      {"prototype-bullets",prototype_bullets},
+#line 34 "KEY1Token.gperf"
+      {"buildChunkingStyle",buildChunkingStyle},
+#line 134 "KEY1Token.gperf"
+      {"size-technique",size_technique},
+#line 89 "KEY1Token.gperf"
+      {"line-tail-style",line_tail_style},
+#line 121 "KEY1Token.gperf"
+      {"prototype-plugin",prototype_plugin},
+#line 122 "KEY1Token.gperf"
+      {"prototype-plugins",prototype_plugins},
+      {(char*)0},
+#line 50 "KEY1Token.gperf"
+      {"dataFormatterSuffix",dataFormatterSuffix},
+      {(char*)0},
+#line 109 "KEY1Token.gperf"
+      {"page-number",page_number},
+#line 155 "KEY1Token.gperf"
+      {"tickLabelsOpacity",tickLabelsOpacity},
+#line 163 "KEY1Token.gperf"
+      {"ui-state",ui_state},
+#line 67 "KEY1Token.gperf"
+      {"gradient-angle",gradient_angle},
+      {(char*)0},
+#line 95 "KEY1Token.gperf"
+      {"marker-type",marker_type},
+#line 150 "KEY1Token.gperf"
+      {"textbox",textbox},
+      {(char*)0},
+#line 24 "KEY1Token.gperf"
+      {"altLineOpacity",altLineOpacity},
+#line 47 "KEY1Token.gperf"
+      {"dataFormatterHasThousandsSeparators",dataFormatterHasThousandsSeparators},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 114 "KEY1Token.gperf"
+      {"pieSliceOffset",pieSliceOffset},
+      {(char*)0}, {(char*)0},
+#line 113 "KEY1Token.gperf"
+      {"pattern",pattern},
+      {(char*)0},
+#line 48 "KEY1Token.gperf"
+      {"dataFormatterNumberOfDecimals",dataFormatterNumberOfDecimals},
+#line 149 "KEY1Token.gperf"
+      {"text-attributes",text_attributes},
+#line 75 "KEY1Token.gperf"
+      {"image-scale",image_scale},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 97 "KEY1Token.gperf"
+      {"master-slide-id",master_slide_id},
+      {(char*)0},
+#line 116 "KEY1Token.gperf"
+      {"point_at_top",point_at_top},
+      {(char*)0}, {(char*)0},
+#line 74 "KEY1Token.gperf"
+      {"image-data",image_data},
+#line 72 "KEY1Token.gperf"
+      {"id-ref",id_ref},
+#line 115 "KEY1Token.gperf"
+      {"pieSlicePercentVisible",pieSlicePercentVisible},
+      {(char*)0},
+#line 57 "KEY1Token.gperf"
+      {"end-color",end_color},
+#line 128 "KEY1Token.gperf"
+      {"seriesDirection",seriesDirection},
+#line 90 "KEY1Token.gperf"
+      {"lineVisible",lineVisible},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 27 "KEY1Token.gperf"
+      {"application-name",application_name},
+#line 44 "KEY1Token.gperf"
+      {"content",content},
+      {(char*)0},
+#line 49 "KEY1Token.gperf"
+      {"dataFormatterPrefix",dataFormatterPrefix},
+#line 137 "KEY1Token.gperf"
+      {"slide-size",slide_size},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 78 "KEY1Token.gperf"
+      {"is-filled",is_filled},
+#line 136 "KEY1Token.gperf"
+      {"slide-list",slide_list},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 28 "KEY1Token.gperf"
+      {"application-version",application_version},
+#line 87 "KEY1Token.gperf"
+      {"line-head-style",line_head_style},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 59 "KEY1Token.gperf"
+      {"fill-color",fill_color},
+#line 88 "KEY1Token.gperf"
+      {"lineOpacity",lineOpacity},
+#line 82 "KEY1Token.gperf"
+      {"labelVisible",labelVisible},
+      {(char*)0},
+#line 120 "KEY1Token.gperf"
+      {"prototype-drawables",prototype_drawables},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 77 "KEY1Token.gperf"
+      {"interSeriesGap",interSeriesGap},
+      {(char*)0},
+#line 62 "KEY1Token.gperf"
+      {"floating-content",floating_content},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 112 "KEY1Token.gperf"
+      {"paragraph-head-indent",paragraph_head_indent},
+#line 111 "KEY1Token.gperf"
+      {"paragraph-first-line-indent",paragraph_first_line_indent},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 68 "KEY1Token.gperf"
+      {"gridOpacity",gridOpacity},
+      {(char*)0},
+#line 81 "KEY1Token.gperf"
+      {"labelPosition",labelPosition},
+#line 110 "KEY1Token.gperf"
+      {"paragraph-alignment",paragraph_alignment},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 169 "KEY1Token.gperf"
+      {"vertical-alignment",vertical_alignment},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 161 "KEY1Token.gperf"
+      {"transition-style",transition_style},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 108 "KEY1Token.gperf"
+      {"orientation",orientation},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 80 "KEY1Token.gperf"
+      {"labelOpacity",labelOpacity},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 40 "KEY1Token.gperf"
+      {"character-bullet-style",character_bullet_style},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 42 "KEY1Token.gperf"
+      {"chart-prototype",chart_prototype}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].name;
+
+          if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
+#line 173 "KEY1Token.gperf"
+
diff --git a/external/libetonyek/inc/KEY2Token.inc b/external/libetonyek/inc/KEY2Token.inc
new file mode 100644
index 0000000..fc904b2
--- /dev/null
+++ b/external/libetonyek/inc/KEY2Token.inc
@@ -0,0 +1,224 @@
+/* C++ code produced by gperf version 3.0.4 */
+/* Command-line: gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ KEY2Token.gperf  */
+/* Computed positions: -k'1,4-5' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf at gnu.org>."
+#endif
+
+#line 10 "KEY2Token.gperf"
+
+#if defined __GNUC__
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+using namespace KEY2Token;
+#line 18 "KEY2Token.gperf"
+struct Token
+{
+  const char *name;
+  int id;
+};
+#include <string.h>
+/* maximum key range = 71, duplicates = 0 */
+
+class Perfect_Hash
+{
+private:
+  static inline unsigned int hash (const char *str, unsigned int len);
+public:
+  static const struct Token *in_word_set (const char *str, unsigned int len);
+};
+
+inline unsigned int
+Perfect_Hash::hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72,  5, 72, 72,  5, 10,
+      15, 72, 20, 15, 72, 15,  0,  0,  0, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72,  0,  0, 10,
+      25,  5, 72, 72,  0,  0, 72, 15,  0, 10,
+      20,  0, 25, 72, 72,  0,  0, 72,  5,  0,
+      72,  0, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+      72, 72, 72, 72, 72, 72
+    };
+  register int hval = len;
+
+  switch (hval)
+    {
+      default:
+        hval += asso_values[(unsigned char)str[4]];
+      /*FALLTHROUGH*/
+      case 4:
+        hval += asso_values[(unsigned char)str[3]];
+      /*FALLTHROUGH*/
+      case 3:
+      case 2:
+      case 1:
+        hval += asso_values[(unsigned char)str[0]];
+        break;
+    }
+  return hval;
+}
+
+const struct Token *
+Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 33,
+      MIN_WORD_LENGTH = 1,
+      MAX_WORD_LENGTH = 46,
+      MIN_HASH_VALUE = 1,
+      MAX_HASH_VALUE = 71
+    };
+
+  static const struct Token wordlist[] =
+    {
+      {(char*)0},
+#line 35 "KEY2Token.gperf"
+      {"i",i},
+      {(char*)0}, {(char*)0},
+#line 51 "KEY2Token.gperf"
+      {"text",text},
+      {(char*)0}, {(char*)0},
+#line 29 "KEY2Token.gperf"
+      {"authors",authors},
+      {(char*)0},
+#line 44 "KEY2Token.gperf"
+      {"size",size},
+#line 54 "KEY2Token.gperf"
+      {"title",title},
+#line 31 "KEY2Token.gperf"
+      {"c",c},
+#line 56 "KEY2Token.gperf"
+      {"version",version},
+      {(char*)0}, {(char*)0},
+#line 50 "KEY2Token.gperf"
+      {"stylesheet",stylesheet},
+#line 28 "KEY2Token.gperf"
+      {"92008102400",VERSION_STR_5},
+      {(char*)0},
+#line 36 "KEY2Token.gperf"
+      {"key",key},
+      {(char*)0},
+#line 52 "KEY2Token.gperf"
+      {"theme",theme},
+#line 30 "KEY2Token.gperf"
+      {"body-placeholder",body_placeholder},
+#line 55 "KEY2Token.gperf"
+      {"title-placeholder",title_placeholder},
+#line 37 "KEY2Token.gperf"
+      {"keywords",keywords},
+      {(char*)0},
+#line 53 "KEY2Token.gperf"
+      {"theme-list",theme_list},
+#line 49 "KEY2Token.gperf"
+      {"string",string},
+#line 38 "KEY2Token.gperf"
+      {"master-slide",master_slide},
+#line 39 "KEY2Token.gperf"
+      {"master-slides",master_slides},
+      {(char*)0},
+#line 41 "KEY2Token.gperf"
+      {"notes",notes},
+      {(char*)0},
+#line 32 "KEY2Token.gperf"
+      {"comment",comment},
+      {(char*)0},
+#line 42 "KEY2Token.gperf"
+      {"page",page},
+#line 45 "KEY2Token.gperf"
+      {"slide",slide},
+#line 47 "KEY2Token.gperf"
+      {"sticky-note",sticky_note},
+#line 48 "KEY2Token.gperf"
+      {"sticky-notes",sticky_notes},
+      {(char*)0}, {(char*)0},
+#line 46 "KEY2Token.gperf"
+      {"slide-list",slide_list},
+      {(char*)0},
+#line 43 "KEY2Token.gperf"
+      {"presentation",presentation},
+#line 40 "KEY2Token.gperf"
+      {"metadata",metadata},
+      {(char*)0},
+#line 25 "KEY2Token.gperf"
+      {"2005092101",COMPATIBLE_VERSION_STR_3,},
+#line 27 "KEY2Token.gperf"
+      {"72007061400",VERSION_STR_4},
+#line 33 "KEY2Token.gperf"
+      {"headlineParagraphStyle",headlineParagraphStyle},
+      {(char*)0}, {(char*)0},
+#line 26 "KEY2Token.gperf"
+      {"2005112100",VERSION_STR_3},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 24 "KEY2Token.gperf"
+      {"2004102100",VERSION_STR_2},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 34 "KEY2Token.gperf"
+      {"http://developer.apple.com/namespaces/keynote2",NS_URI_KEY}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].name;
+
+          if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
+#line 57 "KEY2Token.gperf"
+
diff --git a/external/libetonyek/inc/NUM1Token.inc b/external/libetonyek/inc/NUM1Token.inc
new file mode 100644
index 0000000..e12dec2
--- /dev/null
+++ b/external/libetonyek/inc/NUM1Token.inc
@@ -0,0 +1,147 @@
+/* C++ code produced by gperf version 3.0.4 */
+/* Command-line: gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ NUM1Token.gperf  */
+/* Computed positions: -k'1' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf at gnu.org>."
+#endif
+
+#line 10 "NUM1Token.gperf"
+
+#if defined __GNUC__
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+using namespace NUM1Token;
+#line 18 "NUM1Token.gperf"
+struct Token
+{
+  const char *name;
+  int id;
+};
+#include <string.h>
+/* maximum key range = 34, duplicates = 0 */
+
+class Perfect_Hash
+{
+private:
+  static inline unsigned int hash (const char *str, unsigned int len);
+public:
+  static const struct Token *in_word_set (const char *str, unsigned int len);
+};
+
+inline unsigned int
+Perfect_Hash::hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41,  0, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+       0, 41, 41, 41,  0, 41, 41, 41, 41, 41,
+      41, 41,  5, 41, 41,  0, 41, 41,  0,  0,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41
+    };
+  return len + asso_values[(unsigned char)str[0]];
+}
+
+const struct Token *
+Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 8,
+      MIN_WORD_LENGTH = 7,
+      MAX_WORD_LENGTH = 40,
+      MIN_HASH_VALUE = 7,
+      MAX_HASH_VALUE = 40
+    };
+
+  static const struct Token wordlist[] =
+    {
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0},
+#line 31 "NUM1Token.gperf"
+      {"version",version},
+#line 26 "NUM1Token.gperf"
+      {"document",document},
+#line 29 "NUM1Token.gperf"
+      {"workspace",workspace},
+#line 28 "NUM1Token.gperf"
+      {"stylesheet",stylesheet},
+#line 24 "NUM1Token.gperf"
+      {"92008102400",VERSION_STR_2},
+      {(char*)0}, {(char*)0},
+#line 27 "NUM1Token.gperf"
+      {"page-info",page_info},
+#line 30 "NUM1Token.gperf"
+      {"workspace-array",workspace_array},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 25 "NUM1Token.gperf"
+      {"http://developer.apple.com/namespaces/ls",NS_URI_LS}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].name;
+
+          if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
+#line 32 "NUM1Token.gperf"
+
diff --git a/external/libetonyek/inc/PAG1Token.inc b/external/libetonyek/inc/PAG1Token.inc
new file mode 100644
index 0000000..a2e12b6
--- /dev/null
+++ b/external/libetonyek/inc/PAG1Token.inc
@@ -0,0 +1,180 @@
+/* C++ code produced by gperf version 3.0.4 */
+/* Command-line: gperf --compare-strncmp --enum --null-strings --readonly-tables --language C++ PAG1Token.gperf  */
+/* Computed positions: -k'1' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf at gnu.org>."
+#endif
+
+#line 10 "PAG1Token.gperf"
+
+#if defined __GNUC__
+#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+#endif
+
+using namespace PAG1Token;
+#line 18 "PAG1Token.gperf"
+struct Token
+{
+  const char *name;
+  int id;
+};
+#include <string.h>
+/* maximum key range = 37, duplicates = 0 */
+
+class Perfect_Hash
+{
+private:
+  static inline unsigned int hash (const char *str, unsigned int len);
+public:
+  static const struct Token *in_word_set (const char *str, unsigned int len);
+};
+
+inline unsigned int
+Perfect_Hash::hash (register const char *str, register unsigned int len)
+{
+  static const unsigned char asso_values[] =
+    {
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 20, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41,  0, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 13, 30,
+      10, 41,  5, 41,  0, 41, 41,  5, 15, 41,
+      20, 41,  0, 41,  0,  5,  5, 41,  0, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+      41, 41, 41, 41, 41, 41
+    };
+  return len + asso_values[(unsigned char)str[0]];
+}
+
+const struct Token *
+Perfect_Hash::in_word_set (register const char *str, register unsigned int len)
+{
+  enum
+    {
+      TOTAL_KEYWORDS = 25,
+      MIN_WORD_LENGTH = 4,
+      MAX_WORD_LENGTH = 40,
+      MIN_HASH_VALUE = 4,
+      MAX_HASH_VALUE = 40
+    };
+
+  static const struct Token wordlist[] =
+    {
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+#line 40 "PAG1Token.gperf"
+      {"page",page},
+#line 44 "PAG1Token.gperf"
+      {"rpage",rpage},
+#line 33 "PAG1Token.gperf"
+      {"header",header},
+#line 48 "PAG1Token.gperf"
+      {"version",version},
+      {(char*)0},
+#line 42 "PAG1Token.gperf"
+      {"prototype",prototype},
+#line 41 "PAG1Token.gperf"
+      {"page-group",page_group},
+#line 31 "PAG1Token.gperf"
+      {"footer",footer},
+#line 47 "PAG1Token.gperf"
+      {"textbox",textbox},
+#line 32 "PAG1Token.gperf"
+      {"footnote",footnote},
+#line 28 "PAG1Token.gperf"
+      {"date",date},
+#line 46 "PAG1Token.gperf"
+      {"stylesheet",stylesheet},
+#line 43 "PAG1Token.gperf"
+      {"publication-info",publication_info},
+#line 26 "PAG1Token.gperf"
+      {"body",body},
+#line 29 "PAG1Token.gperf"
+      {"document",document},
+#line 30 "PAG1Token.gperf"
+      {"drawables",drawables},
+      {(char*)0},
+#line 37 "PAG1Token.gperf"
+      {"layout",layout},
+#line 25 "PAG1Token.gperf"
+      {"SLCreationDateProperty",SLCreationDateProperty},
+#line 45 "PAG1Token.gperf"
+      {"section-prototypes",section_prototypes},
+#line 38 "PAG1Token.gperf"
+      {"note",note},
+      {(char*)0},
+#line 39 "PAG1Token.gperf"
+      {"number",number},
+      {(char*)0}, {(char*)0},
+#line 35 "PAG1Token.gperf"
+      {"kSFWPFootnoteGapProperty",kSFWPFootnoteGapProperty},
+#line 36 "PAG1Token.gperf"
+      {"kSFWPFootnoteKindProperty",kSFWPFootnoteKindProperty},
+#line 24 "PAG1Token.gperf"
+      {"92008102400",VERSION_STR_4},
+      {(char*)0}, {(char*)0},
+#line 27 "PAG1Token.gperf"
+      {"cell",cell},
+      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
+      {(char*)0},
+#line 34 "PAG1Token.gperf"
+      {"http://developer.apple.com/namespaces/sl",NS_URI_SL}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register int key = hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= 0)
+        {
+          register const char *s = wordlist[key].name;
+
+          if (s && *str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+            return &wordlist[key];
+        }
+    }
+  return 0;
+}
+#line 49 "PAG1Token.gperf"
+
diff --git a/external/libetonyek/win_build.patch.1 b/external/libetonyek/win_build.patch.1
index 261167b..a357737 100644
--- a/external/libetonyek/win_build.patch.1
+++ b/external/libetonyek/win_build.patch.1
@@ -10,4 +10,4 @@ Fix the windows build - fix libtool
 +    mkdir -p $f_ex_an_ar_dir/contexts
      func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
  		   'stat=$?; rm -f "$lockfile"; exit $stat'
-     if test "$lock_old_archive_extraction" = yes; then
+     if test yes = "$lock_old_archive_extraction"; then
diff --git a/writerperfect/qa/unit/data/impress/libetonyek/fail/.gitignore b/writerperfect/qa/unit/data/impress/libetonyek/fail/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/writerperfect/qa/unit/data/impress/libetonyek/fail/v6.zip b/writerperfect/qa/unit/data/impress/libetonyek/pass/v6.zip
similarity index 100%
rename from writerperfect/qa/unit/data/impress/libetonyek/fail/v6.zip
rename to writerperfect/qa/unit/data/impress/libetonyek/pass/v6.zip


More information about the Libreoffice-commits mailing list