--- lcms-1.19.dfsg.orig/include/icc34.h
+++ lcms-1.19.dfsg/include/icc34.h
@@ -212,9 +212,9 @@
 
 #if defined(__sun) || defined(__hpux) || defined (__MINGW) || defined(__MINGW32__)
 
-#if defined (__MINGW) || defined(__MINGW32__)
-#include <stdint.h>
-#endif
+#if defined (__MINGW) || defined(__MINGW32__)
+#include <stdint.h>
+#endif
 
 
 typedef uint8_t   icUInt8Number;
--- lcms-1.19.dfsg.orig/python/lcms_wrap.cxx
+++ lcms-1.19.dfsg/python/lcms_wrap.cxx
@@ -1,6 +1,6 @@
 /* ----------------------------------------------------------------------------
  * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 1.3.36
+ * Version 2.0.4
  * 
  * This file is not intended to be easily readable and contains a number of 
  * coding conventions designed to improve portability and efficiency. Do not make
@@ -11,19 +11,23 @@
 #define SWIGPYTHON
 #define SWIG_PYTHON_DIRECTOR_NO_VTABLE
 
+
 #ifdef __cplusplus
+/* SwigValueWrapper is described in swig.swg */
 template<typename T> class SwigValueWrapper {
-    T *tt;
+  struct SwigMovePointer {
+    T *ptr;
+    SwigMovePointer(T *p) : ptr(p) { }
+    ~SwigMovePointer() { delete ptr; }
+    SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; }
+  } pointer;
+  SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
+  SwigValueWrapper(const SwigValueWrapper<T>& rhs);
 public:
-    SwigValueWrapper() : tt(0) { }
-    SwigValueWrapper(const SwigValueWrapper<T>& rhs) : tt(new T(*rhs.tt)) { }
-    SwigValueWrapper(const T& t) : tt(new T(t)) { }
-    ~SwigValueWrapper() { delete tt; } 
-    SwigValueWrapper& operator=(const T& t) { delete tt; tt = new T(t); return *this; }
-    operator T&() const { return *tt; }
-    T *operator&() { return tt; }
-private:
-    SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
+  SwigValueWrapper() : pointer(0) { }
+  SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; }
+  operator T&() const { return *pointer.ptr; }
+  T *operator&() { return pointer.ptr; }
 };
 
 template <typename T> T SwigValueInit() {
@@ -147,7 +151,7 @@
 /* -----------------------------------------------------------------------------
  * swigrun.swg
  *
- * This file contains generic CAPI SWIG runtime support for pointer
+ * This file contains generic C API SWIG runtime support for pointer
  * type checking.
  * ----------------------------------------------------------------------------- */
 
@@ -166,11 +170,11 @@
 
 /*
   You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
-  creating a static or dynamic library from the swig runtime code.
-  In 99.9% of the cases, swig just needs to declare them as 'static'.
+  creating a static or dynamic library from the SWIG runtime code.
+  In 99.9% of the cases, SWIG just needs to declare them as 'static'.
   
-  But only do this if is strictly necessary, ie, if you have problems
-  with your compiler or so.
+  But only do this if strictly necessary, ie, if you have problems
+  with your compiler or suchlike.
 */
 
 #ifndef SWIGRUNTIME
@@ -197,14 +201,14 @@
 /* 
    Flags/methods for returning states.
    
-   The swig conversion methods, as ConvertPtr, return and integer 
+   The SWIG conversion methods, as ConvertPtr, return an integer 
    that tells if the conversion was successful or not. And if not,
    an error code can be returned (see swigerrors.swg for the codes).
    
    Use the following macros/flags to set or process the returning
    states.
    
-   In old swig versions, you usually write code as:
+   In old versions of SWIG, code such as the following was usually written:
 
      if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
        // success code
@@ -212,7 +216,7 @@
        //fail code
      }
 
-   Now you can be more explicit as:
+   Now you can be more explicit:
 
     int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
     if (SWIG_IsOK(res)) {
@@ -221,7 +225,7 @@
       // fail code
     }
 
-   that seems to be the same, but now you can also do
+   which is the same really, but now you can also do
 
     Type *ptr;
     int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
@@ -239,7 +243,7 @@
     
    I.e., now SWIG_ConvertPtr can return new objects and you can
    identify the case and take care of the deallocation. Of course that
-   requires also to SWIG_ConvertPtr to return new result values, as
+   also requires SWIG_ConvertPtr to return new result values, such as
 
       int SWIG_ConvertPtr(obj, ptr,...) {         
         if (<obj is ok>) {			       
@@ -257,7 +261,7 @@
 
    Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
    more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
-   swig errors code.
+   SWIG errors code.
 
    Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
    allows to return the 'cast rank', for example, if you have this
@@ -271,9 +275,8 @@
       fooi(1)   // cast rank '0'
 
    just use the SWIG_AddCast()/SWIG_CheckState()
+*/
 
-
- */
 #define SWIG_OK                    (0) 
 #define SWIG_ERROR                 (-1)
 #define SWIG_IsOK(r)               (r >= 0)
@@ -298,7 +301,6 @@
 #define SWIG_DelTmpMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
 #define SWIG_IsTmpObj(r)           (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))
 
-
 /* Cast-Rank Mode */
 #if defined(SWIG_CASTRANK_MODE)
 #  ifndef SWIG_TypeRank
@@ -321,8 +323,6 @@
 #endif
 
 
-
-
 #include <string.h>
 
 #ifdef __cplusplus
@@ -419,40 +419,58 @@
 }
 
 
-/* think of this as a c++ template<> or a scheme macro */
-#define SWIG_TypeCheck_Template(comparison, ty)         \
-  if (ty) {                                             \
-    swig_cast_info *iter = ty->cast;                    \
-    while (iter) {                                      \
-      if (comparison) {                                 \
-        if (iter == ty->cast) return iter;              \
-        /* Move iter to the top of the linked list */   \
-        iter->prev->next = iter->next;                  \
-        if (iter->next)                                 \
-          iter->next->prev = iter->prev;                \
-        iter->next = ty->cast;                          \
-        iter->prev = 0;                                 \
-        if (ty->cast) ty->cast->prev = iter;            \
-        ty->cast = iter;                                \
-        return iter;                                    \
-      }                                                 \
-      iter = iter->next;                                \
-    }                                                   \
-  }                                                     \
-  return 0
-
 /*
   Check the typename
 */
 SWIGRUNTIME swig_cast_info *
 SWIG_TypeCheck(const char *c, swig_type_info *ty) {
-  SWIG_TypeCheck_Template(strcmp(iter->type->name, c) == 0, ty);
+  if (ty) {
+    swig_cast_info *iter = ty->cast;
+    while (iter) {
+      if (strcmp(iter->type->name, c) == 0) {
+        if (iter == ty->cast)
+          return iter;
+        /* Move iter to the top of the linked list */
+        iter->prev->next = iter->next;
+        if (iter->next)
+          iter->next->prev = iter->prev;
+        iter->next = ty->cast;
+        iter->prev = 0;
+        if (ty->cast) ty->cast->prev = iter;
+        ty->cast = iter;
+        return iter;
+      }
+      iter = iter->next;
+    }
+  }
+  return 0;
 }
 
-/* Same as previous function, except strcmp is replaced with a pointer comparison */
+/* 
+  Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
+*/
 SWIGRUNTIME swig_cast_info *
-SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *into) {
-  SWIG_TypeCheck_Template(iter->type == from, into);
+SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) {
+  if (ty) {
+    swig_cast_info *iter = ty->cast;
+    while (iter) {
+      if (iter->type == from) {
+        if (iter == ty->cast)
+          return iter;
+        /* Move iter to the top of the linked list */
+        iter->prev->next = iter->next;
+        if (iter->next)
+          iter->next->prev = iter->prev;
+        iter->next = ty->cast;
+        iter->prev = 0;
+        if (ty->cast) ty->cast->prev = iter;
+        ty->cast = iter;
+        return iter;
+      }
+      iter = iter->next;
+    }
+  }
+  return 0;
 }
 
 /*
@@ -731,6 +749,75 @@
 
 
 
+/* Compatibility macros for Python 3 */
+#if PY_VERSION_HEX >= 0x03000000
+
+#define PyClass_Check(obj) PyObject_IsInstance(obj, (PyObject *)&PyType_Type)
+#define PyInt_Check(x) PyLong_Check(x)
+#define PyInt_AsLong(x) PyLong_AsLong(x)
+#define PyInt_FromLong(x) PyLong_FromLong(x)
+#define PyString_Check(name) PyBytes_Check(name)
+#define PyString_FromString(x) PyUnicode_FromString(x)
+#define PyString_Format(fmt, args)  PyUnicode_Format(fmt, args)
+#define PyString_AsString(str) PyBytes_AsString(str)
+#define PyString_Size(str) PyBytes_Size(str)	
+#define PyString_InternFromString(key) PyUnicode_InternFromString(key)
+#define Py_TPFLAGS_HAVE_CLASS Py_TPFLAGS_BASETYPE
+#define PyString_AS_STRING(x) PyUnicode_AS_STRING(x)
+#define _PyLong_FromSsize_t(x) PyLong_FromSsize_t(x)
+
+#endif
+
+#ifndef Py_TYPE
+#  define Py_TYPE(op) ((op)->ob_type)
+#endif
+
+/* SWIG APIs for compatibility of both Python 2 & 3 */
+
+#if PY_VERSION_HEX >= 0x03000000
+#  define SWIG_Python_str_FromFormat PyUnicode_FromFormat
+#else
+#  define SWIG_Python_str_FromFormat PyString_FromFormat
+#endif
+
+
+/* Warning: This function will allocate a new string in Python 3,
+ * so please call SWIG_Python_str_DelForPy3(x) to free the space.
+ */
+SWIGINTERN char*
+SWIG_Python_str_AsChar(PyObject *str)
+{
+#if PY_VERSION_HEX >= 0x03000000
+  char *cstr;
+  char *newstr;
+  Py_ssize_t len;
+  str = PyUnicode_AsUTF8String(str);
+  PyBytes_AsStringAndSize(str, &cstr, &len);
+  newstr = (char *) malloc(len+1);
+  memcpy(newstr, cstr, len+1);
+  Py_XDECREF(str);
+  return newstr;
+#else
+  return PyString_AsString(str);
+#endif
+}
+
+#if PY_VERSION_HEX >= 0x03000000
+#  define SWIG_Python_str_DelForPy3(x) free( (void*) (x) )
+#else
+#  define SWIG_Python_str_DelForPy3(x) 
+#endif
+
+
+SWIGINTERN PyObject*
+SWIG_Python_str_FromChar(const char *c)
+{
+#if PY_VERSION_HEX >= 0x03000000
+  return PyUnicode_FromString(c); 
+#else
+  return PyString_FromString(c);
+#endif
+}
 
 /* Add PyOS_snprintf for old Pythons */
 #if PY_VERSION_HEX < 0x02020000
@@ -777,6 +864,7 @@
 #  define PyObject_GenericGetAttr 0
 # endif
 #endif
+
 /* Py_NotImplemented is defined in 2.1 and up. */
 #if PY_VERSION_HEX < 0x02010000
 # ifndef Py_NotImplemented
@@ -784,7 +872,6 @@
 # endif
 #endif
 
-
 /* A crude PyString_AsStringAndSize implementation for old Pythons */
 #if PY_VERSION_HEX < 0x02010000
 # ifndef PyString_AsStringAndSize
@@ -799,7 +886,6 @@
 # endif
 #endif
 
-
 /* PyBool_FromLong for old Pythons */
 #if PY_VERSION_HEX < 0x02030000
 static
@@ -818,6 +904,63 @@
 typedef int Py_ssize_t;
 # define PY_SSIZE_T_MAX INT_MAX
 # define PY_SSIZE_T_MIN INT_MIN
+typedef inquiry lenfunc;
+typedef intargfunc ssizeargfunc;
+typedef intintargfunc ssizessizeargfunc;
+typedef intobjargproc ssizeobjargproc;
+typedef intintobjargproc ssizessizeobjargproc;
+typedef getreadbufferproc readbufferproc;
+typedef getwritebufferproc writebufferproc;
+typedef getsegcountproc segcountproc;
+typedef getcharbufferproc charbufferproc;
+static long PyNumber_AsSsize_t (PyObject *x, void *SWIGUNUSEDPARM(exc))
+{
+  long result = 0;
+  PyObject *i = PyNumber_Int(x);
+  if (i) {
+    result = PyInt_AsLong(i);
+    Py_DECREF(i);
+  }
+  return result;
+}
+#endif
+
+#if PY_VERSION_HEX < 0x02040000
+#define Py_VISIT(op)				\
+  do { 						\
+    if (op) {					\
+      int vret = visit((op), arg);		\
+      if (vret)					\
+        return vret;				\
+    }						\
+  } while (0)
+#endif
+
+#if PY_VERSION_HEX < 0x02030000
+typedef struct {
+  PyTypeObject type;
+  PyNumberMethods as_number;
+  PyMappingMethods as_mapping;
+  PySequenceMethods as_sequence;
+  PyBufferProcs as_buffer;
+  PyObject *name, *slots;
+} PyHeapTypeObject;
+#endif
+
+#if PY_VERSION_HEX < 0x02030000
+typedef destructor freefunc;
+#endif
+
+#if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6) || \
+     (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION > 0) || \
+     (PY_MAJOR_VERSION > 3))
+# define SWIGPY_USE_CAPSULE
+# define SWIGPY_CAPSULE_NAME ((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME)
+#endif
+
+#if PY_VERSION_HEX < 0x03020000
+#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
+#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
 #endif
 
 /* -----------------------------------------------------------------------------
@@ -877,10 +1020,13 @@
 
   if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback);
   if (value) {
+    char *tmp;
     PyObject *old_str = PyObject_Str(value);
     PyErr_Clear();
     Py_XINCREF(type);
-    PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
+
+    PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg);
+    SWIG_Python_str_DelForPy3(tmp);
     Py_DECREF(old_str);
     Py_DECREF(value);
   } else {
@@ -888,8 +1034,6 @@
   }
 }
 
-
-
 #if defined(SWIG_PYTHON_NO_THREADS)
 #  if defined(SWIG_PYTHON_THREADS)
 #    undef SWIG_PYTHON_THREADS
@@ -963,9 +1107,6 @@
 
 #ifdef __cplusplus
 extern "C" {
-#if 0
-} /* cc-mode */
-#endif
 #endif
 
 /* -----------------------------------------------------------------------------
@@ -986,18 +1127,29 @@
   swig_type_info **ptype;
 } swig_const_info;
 
-#ifdef __cplusplus
-#if 0
-{ /* cc-mode */
+
+/* -----------------------------------------------------------------------------
+ * Wrapper of PyInstanceMethod_New() used in Python 3
+ * It is exported to the generated module, used for -fastproxy
+ * ----------------------------------------------------------------------------- */
+#if PY_VERSION_HEX >= 0x03000000
+SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func)
+{
+  return PyInstanceMethod_New(func);
+}
+#else
+SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *SWIGUNUSEDPARM(func))
+{
+  return NULL;
+}
 #endif
+
+#ifdef __cplusplus
 }
 #endif
 
 
 /* -----------------------------------------------------------------------------
- * See the LICENSE file for information on copyright, usage and redistribution
- * of SWIG, and the README file for authors - http://www.swig.org/release.html.
- *
  * pyrun.swg
  *
  * This file contains the runtime support for Python modules
@@ -1012,7 +1164,15 @@
 #define SWIG_Python_ConvertPtr(obj, pptr, type, flags)  SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0)
 #define SWIG_ConvertPtr(obj, pptr, type, flags)         SWIG_Python_ConvertPtr(obj, pptr, type, flags)
 #define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own)  SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own)
-#define SWIG_NewPointerObj(ptr, type, flags)            SWIG_Python_NewPointerObj(ptr, type, flags)
+
+#ifdef SWIGPYTHON_BUILTIN
+#define SWIG_NewPointerObj(ptr, type, flags)            SWIG_Python_NewPointerObj(self, ptr, type, flags)
+#else
+#define SWIG_NewPointerObj(ptr, type, flags)            SWIG_Python_NewPointerObj(NULL, ptr, type, flags)
+#endif
+
+#define SWIG_InternalNewPointerObj(ptr, type, flags)	SWIG_Python_NewPointerObj(NULL, ptr, type, flags)
+
 #define SWIG_CheckImplicit(ty)                          SWIG_Python_CheckImplicit(ty) 
 #define SWIG_AcquirePtr(ptr, src)                       SWIG_Python_AcquirePtr(ptr, src)
 #define swig_owntype                                    int
@@ -1027,7 +1187,7 @@
 
 /* for C or C++ function pointers */
 #define SWIG_ConvertFunctionPtr(obj, pptr, type)        SWIG_Python_ConvertFunctionPtr(obj, pptr, type)
-#define SWIG_NewFunctionPtrObj(ptr, type)               SWIG_Python_NewPointerObj(ptr, type, 0)
+#define SWIG_NewFunctionPtrObj(ptr, type)               SWIG_Python_NewPointerObj(NULL, ptr, type, 0)
 
 /* for C++ member pointers, ie, member methods */
 #define SWIG_ConvertMember(obj, ptr, sz, ty)            SWIG_Python_ConvertPacked(obj, ptr, sz, ty)
@@ -1038,7 +1198,7 @@
 
 #define SWIG_GetModule(clientdata)                      SWIG_Python_GetModule()
 #define SWIG_SetModule(clientdata, pointer)             SWIG_Python_SetModule(pointer)
-#define SWIG_NewClientData(obj)                         PySwigClientData_New(obj)
+#define SWIG_NewClientData(obj)                         SwigPyClientData_New(obj)
 
 #define SWIG_SetErrorObj                                SWIG_Python_SetErrorObj                            
 #define SWIG_SetErrorMsg                        	SWIG_Python_SetErrorMsg				   
@@ -1070,12 +1230,33 @@
 
 /* Set a constant value */
 
+#if defined(SWIGPYTHON_BUILTIN)
+
+SWIGINTERN void
+SwigPyBuiltin_AddPublicSymbol(PyObject *seq, const char *key) {
+  PyObject *s = PyString_InternFromString(key);
+  PyList_Append(seq, s);
+  Py_DECREF(s);
+}
+
+SWIGINTERN void
+SWIG_Python_SetConstant(PyObject *d, PyObject *public_interface, const char *name, PyObject *obj) {   
+  PyDict_SetItemString(d, (char *)name, obj);
+  Py_DECREF(obj);
+  if (public_interface)
+    SwigPyBuiltin_AddPublicSymbol(public_interface, name);
+}
+
+#else
+
 SWIGINTERN void
 SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) {   
-  PyDict_SetItemString(d, (char*) name, obj);
+  PyDict_SetItemString(d, (char *)name, obj);
   Py_DECREF(obj);                            
 }
 
+#endif
+
 /* Append a value to the result obj */
 
 SWIGINTERN PyObject*
@@ -1136,6 +1317,14 @@
     }
   }  
   if (!PyTuple_Check(args)) {
+    if (min <= 1 && max >= 1) {
+      register int i;
+      objs[0] = args;
+      for (i = 1; i < max; ++i) {
+	objs[i] = 0;
+      }
+      return 2;
+    }
     PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple");
     return 0;
   } else {
@@ -1188,11 +1377,11 @@
 
 #define SWIG_POINTER_IMPLICIT_CONV  (SWIG_POINTER_DISOWN   << 1)
 
+#define SWIG_BUILTIN_TP_INIT	    (SWIG_POINTER_OWN << 2)
+#define SWIG_BUILTIN_INIT	    (SWIG_BUILTIN_TP_INIT | SWIG_POINTER_OWN)
+
 #ifdef __cplusplus
 extern "C" {
-#if 0
-} /* cc-mode */
-#endif
 #endif
 
 /*  How to access Py_None */
@@ -1234,7 +1423,7 @@
   return none;
 }
 
-/* PySwigClientData */
+/* SwigPyClientData */
 
 typedef struct {
   PyObject *klass;
@@ -1243,30 +1432,31 @@
   PyObject *destroy;
   int delargs;
   int implicitconv;
-} PySwigClientData;
+  PyTypeObject *pytype;
+} SwigPyClientData;
 
 SWIGRUNTIMEINLINE int 
 SWIG_Python_CheckImplicit(swig_type_info *ty)
 {
-  PySwigClientData *data = (PySwigClientData *)ty->clientdata;
+  SwigPyClientData *data = (SwigPyClientData *)ty->clientdata;
   return data ? data->implicitconv : 0;
 }
 
 SWIGRUNTIMEINLINE PyObject *
 SWIG_Python_ExceptionType(swig_type_info *desc) {
-  PySwigClientData *data = desc ? (PySwigClientData *) desc->clientdata : 0;
+  SwigPyClientData *data = desc ? (SwigPyClientData *) desc->clientdata : 0;
   PyObject *klass = data ? data->klass : 0;
   return (klass ? klass : PyExc_RuntimeError);
 }
 
 
-SWIGRUNTIME PySwigClientData * 
-PySwigClientData_New(PyObject* obj)
+SWIGRUNTIME SwigPyClientData * 
+SwigPyClientData_New(PyObject* obj)
 {
   if (!obj) {
     return 0;
   } else {
-    PySwigClientData *data = (PySwigClientData *)malloc(sizeof(PySwigClientData));
+    SwigPyClientData *data = (SwigPyClientData *)malloc(sizeof(SwigPyClientData));
     /* the klass element */
     data->klass = obj;
     Py_INCREF(data->klass);
@@ -1309,19 +1499,19 @@
       data->delargs = 0;
     }
     data->implicitconv = 0;
+    data->pytype = 0;
     return data;
   }
 }
 
 SWIGRUNTIME void 
-PySwigClientData_Del(PySwigClientData* data)
-{
+SwigPyClientData_Del(SwigPyClientData *data) {
   Py_XDECREF(data->newraw);
   Py_XDECREF(data->newargs);
   Py_XDECREF(data->destroy);
 }
 
-/* =============== PySwigObject =====================*/
+/* =============== SwigPyObject =====================*/
 
 typedef struct {
   PyObject_HEAD
@@ -1329,24 +1519,31 @@
   swig_type_info *ty;
   int own;
   PyObject *next;
-} PySwigObject;
+#ifdef SWIGPYTHON_BUILTIN
+  PyObject *dict;
+#endif
+} SwigPyObject;
 
 SWIGRUNTIME PyObject *
-PySwigObject_long(PySwigObject *v)
+SwigPyObject_long(SwigPyObject *v)
 {
   return PyLong_FromVoidPtr(v->ptr);
 }
 
 SWIGRUNTIME PyObject *
-PySwigObject_format(const char* fmt, PySwigObject *v)
+SwigPyObject_format(const char* fmt, SwigPyObject *v)
 {
   PyObject *res = NULL;
   PyObject *args = PyTuple_New(1);
   if (args) {
-    if (PyTuple_SetItem(args, 0, PySwigObject_long(v)) == 0) {
-      PyObject *ofmt = PyString_FromString(fmt);
+    if (PyTuple_SetItem(args, 0, SwigPyObject_long(v)) == 0) {
+      PyObject *ofmt = SWIG_Python_str_FromChar(fmt);
       if (ofmt) {
+#if PY_VERSION_HEX >= 0x03000000
+	res = PyUnicode_Format(ofmt,args);
+#else
 	res = PyString_Format(ofmt,args);
+#endif
 	Py_DECREF(ofmt);
       }
       Py_DECREF(args);
@@ -1356,49 +1553,57 @@
 }
 
 SWIGRUNTIME PyObject *
-PySwigObject_oct(PySwigObject *v)
+SwigPyObject_oct(SwigPyObject *v)
 {
-  return PySwigObject_format("%o",v);
+  return SwigPyObject_format("%o",v);
 }
 
 SWIGRUNTIME PyObject *
-PySwigObject_hex(PySwigObject *v)
+SwigPyObject_hex(SwigPyObject *v)
 {
-  return PySwigObject_format("%x",v);
+  return SwigPyObject_format("%x",v);
 }
 
 SWIGRUNTIME PyObject *
 #ifdef METH_NOARGS
-PySwigObject_repr(PySwigObject *v)
+SwigPyObject_repr(SwigPyObject *v)
 #else
-PySwigObject_repr(PySwigObject *v, PyObject *args)
+SwigPyObject_repr(SwigPyObject *v, PyObject *args)
 #endif
 {
   const char *name = SWIG_TypePrettyName(v->ty);
-  PyObject *hex = PySwigObject_hex(v);    
-  PyObject *repr = PyString_FromFormat("<Swig Object of type '%s' at 0x%s>", name, PyString_AsString(hex));
-  Py_DECREF(hex);
+  PyObject *repr = SWIG_Python_str_FromFormat("<Swig Object of type '%s' at %p>", name, (void *)v);
   if (v->next) {
-#ifdef METH_NOARGS
-    PyObject *nrep = PySwigObject_repr((PySwigObject *)v->next);
-#else
-    PyObject *nrep = PySwigObject_repr((PySwigObject *)v->next, args);
-#endif
+# ifdef METH_NOARGS
+    PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next);
+# else
+    PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args);
+# endif
+# if PY_VERSION_HEX >= 0x03000000
+    PyObject *joined = PyUnicode_Concat(repr, nrep);
+    Py_DecRef(repr);
+    Py_DecRef(nrep);
+    repr = joined;
+# else
     PyString_ConcatAndDel(&repr,nrep);
+# endif
   }
   return repr;  
 }
 
 SWIGRUNTIME int
-PySwigObject_print(PySwigObject *v, FILE *fp, int SWIGUNUSEDPARM(flags))
+SwigPyObject_print(SwigPyObject *v, FILE *fp, int SWIGUNUSEDPARM(flags))
 {
+  char *str;
 #ifdef METH_NOARGS
-  PyObject *repr = PySwigObject_repr(v);
+  PyObject *repr = SwigPyObject_repr(v);
 #else
-  PyObject *repr = PySwigObject_repr(v, NULL);
+  PyObject *repr = SwigPyObject_repr(v, NULL);
 #endif
   if (repr) {
-    fputs(PyString_AsString(repr), fp);
+    str = SWIG_Python_str_AsChar(repr); 
+    fputs(str, fp);
+    SWIG_Python_str_DelForPy3(str);
     Py_DECREF(repr);
     return 0; 
   } else {
@@ -1407,53 +1612,87 @@
 }
 
 SWIGRUNTIME PyObject *
-PySwigObject_str(PySwigObject *v)
+SwigPyObject_str(SwigPyObject *v)
 {
   char result[SWIG_BUFFER_SIZE];
   return SWIG_PackVoidPtr(result, v->ptr, v->ty->name, sizeof(result)) ?
-    PyString_FromString(result) : 0;
+    SWIG_Python_str_FromChar(result) : 0;
 }
 
 SWIGRUNTIME int
-PySwigObject_compare(PySwigObject *v, PySwigObject *w)
+SwigPyObject_compare(SwigPyObject *v, SwigPyObject *w)
 {
   void *i = v->ptr;
   void *j = w->ptr;
   return (i < j) ? -1 : ((i > j) ? 1 : 0);
 }
 
-SWIGRUNTIME PyTypeObject* _PySwigObject_type(void);
+/* Added for Python 3.x, would it also be useful for Python 2.x? */
+SWIGRUNTIME PyObject*
+SwigPyObject_richcompare(SwigPyObject *v, SwigPyObject *w, int op)
+{
+  PyObject* res;
+  if( op != Py_EQ && op != Py_NE ) {
+    Py_INCREF(Py_NotImplemented);
+    return Py_NotImplemented;
+  }
+  res = PyBool_FromLong( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) ? 1 : 0);
+  return res;  
+}
+
 
+SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void);
+
+#ifdef SWIGPYTHON_BUILTIN
+static swig_type_info *SwigPyObject_stype = 0;
 SWIGRUNTIME PyTypeObject*
-PySwigObject_type(void) {
-  static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigObject_type();
+SwigPyObject_type(void) {
+    SwigPyClientData *cd;
+    assert(SwigPyObject_stype);
+    cd = (SwigPyClientData*) SwigPyObject_stype->clientdata;
+    assert(cd);
+    assert(cd->pytype);
+    return cd->pytype;
+}
+#else
+SWIGRUNTIME PyTypeObject*
+SwigPyObject_type(void) {
+  static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyObject_TypeOnce();
   return type;
 }
+#endif
 
 SWIGRUNTIMEINLINE int
-PySwigObject_Check(PyObject *op) {
-  return ((op)->ob_type == PySwigObject_type())
-    || (strcmp((op)->ob_type->tp_name,"PySwigObject") == 0);
+SwigPyObject_Check(PyObject *op) {
+#ifdef SWIGPYTHON_BUILTIN
+  PyTypeObject *target_tp = SwigPyObject_type();
+  if (PyType_IsSubtype(op->ob_type, target_tp))
+    return 1;
+  return (strcmp(op->ob_type->tp_name, "SwigPyObject") == 0);
+#else
+  return (Py_TYPE(op) == SwigPyObject_type())
+    || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0);
+#endif
 }
 
 SWIGRUNTIME PyObject *
-PySwigObject_New(void *ptr, swig_type_info *ty, int own);
+SwigPyObject_New(void *ptr, swig_type_info *ty, int own);
 
 SWIGRUNTIME void
-PySwigObject_dealloc(PyObject *v)
+SwigPyObject_dealloc(PyObject *v)
 {
-  PySwigObject *sobj = (PySwigObject *) v;
+  SwigPyObject *sobj = (SwigPyObject *) v;
   PyObject *next = sobj->next;
   if (sobj->own == SWIG_POINTER_OWN) {
     swig_type_info *ty = sobj->ty;
-    PySwigClientData *data = ty ? (PySwigClientData *) ty->clientdata : 0;
+    SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
     PyObject *destroy = data ? data->destroy : 0;
     if (destroy) {
       /* destroy is always a VARARGS method */
       PyObject *res;
       if (data->delargs) {
-	/* we need to create a temporal object to carry the destroy operation */
-	PyObject *tmp = PySwigObject_New(sobj->ptr, ty, 0);
+	/* we need to create a temporary object to carry the destroy operation */
+	PyObject *tmp = SwigPyObject_New(sobj->ptr, ty, 0);
 	res = SWIG_Python_CallFunctor(destroy, tmp);
 	Py_DECREF(tmp);
       } else {
@@ -1475,15 +1714,15 @@
 }
 
 SWIGRUNTIME PyObject* 
-PySwigObject_append(PyObject* v, PyObject* next)
+SwigPyObject_append(PyObject* v, PyObject* next)
 {
-  PySwigObject *sobj = (PySwigObject *) v;
+  SwigPyObject *sobj = (SwigPyObject *) v;
 #ifndef METH_O
   PyObject *tmp = 0;
   if (!PyArg_ParseTuple(next,(char *)"O:append", &tmp)) return NULL;
   next = tmp;
 #endif
-  if (!PySwigObject_Check(next)) {
+  if (!SwigPyObject_Check(next)) {
     return NULL;
   }
   sobj->next = next;
@@ -1493,12 +1732,12 @@
 
 SWIGRUNTIME PyObject* 
 #ifdef METH_NOARGS
-PySwigObject_next(PyObject* v)
+SwigPyObject_next(PyObject* v)
 #else
-PySwigObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
+SwigPyObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
 #endif
 {
-  PySwigObject *sobj = (PySwigObject *) v;
+  SwigPyObject *sobj = (SwigPyObject *) v;
   if (sobj->next) {    
     Py_INCREF(sobj->next);
     return sobj->next;
@@ -1509,30 +1748,30 @@
 
 SWIGINTERN PyObject*
 #ifdef METH_NOARGS
-PySwigObject_disown(PyObject *v)
+SwigPyObject_disown(PyObject *v)
 #else
-PySwigObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
+SwigPyObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
 #endif
 {
-  PySwigObject *sobj = (PySwigObject *)v;
+  SwigPyObject *sobj = (SwigPyObject *)v;
   sobj->own = 0;
   return SWIG_Py_Void();
 }
 
 SWIGINTERN PyObject*
 #ifdef METH_NOARGS
-PySwigObject_acquire(PyObject *v)
+SwigPyObject_acquire(PyObject *v)
 #else
-PySwigObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
+SwigPyObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
 #endif
 {
-  PySwigObject *sobj = (PySwigObject *)v;
+  SwigPyObject *sobj = (SwigPyObject *)v;
   sobj->own = SWIG_POINTER_OWN;
   return SWIG_Py_Void();
 }
 
 SWIGINTERN PyObject*
-PySwigObject_own(PyObject *v, PyObject *args)
+SwigPyObject_own(PyObject *v, PyObject *args)
 {
   PyObject *val = 0;
 #if (PY_VERSION_HEX < 0x02020000)
@@ -1545,20 +1784,20 @@
     } 
   else
     {
-      PySwigObject *sobj = (PySwigObject *)v;
+      SwigPyObject *sobj = (SwigPyObject *)v;
       PyObject *obj = PyBool_FromLong(sobj->own);
       if (val) {
 #ifdef METH_NOARGS
 	if (PyObject_IsTrue(val)) {
-	  PySwigObject_acquire(v);
+	  SwigPyObject_acquire(v);
 	} else {
-	  PySwigObject_disown(v);
+	  SwigPyObject_disown(v);
 	}
 #else
 	if (PyObject_IsTrue(val)) {
-	  PySwigObject_acquire(v,args);
+	  SwigPyObject_acquire(v,args);
 	} else {
-	  PySwigObject_disown(v,args);
+	  SwigPyObject_disown(v,args);
 	}
 #endif
       } 
@@ -1569,44 +1808,47 @@
 #ifdef METH_O
 static PyMethodDef
 swigobject_methods[] = {
-  {(char *)"disown",  (PyCFunction)PySwigObject_disown,  METH_NOARGS,  (char *)"releases ownership of the pointer"},
-  {(char *)"acquire", (PyCFunction)PySwigObject_acquire, METH_NOARGS,  (char *)"aquires ownership of the pointer"},
-  {(char *)"own",     (PyCFunction)PySwigObject_own,     METH_VARARGS, (char *)"returns/sets ownership of the pointer"},
-  {(char *)"append",  (PyCFunction)PySwigObject_append,  METH_O,       (char *)"appends another 'this' object"},
-  {(char *)"next",    (PyCFunction)PySwigObject_next,    METH_NOARGS,  (char *)"returns the next 'this' object"},
-  {(char *)"__repr__",(PyCFunction)PySwigObject_repr,    METH_NOARGS,  (char *)"returns object representation"},
+  {(char *)"disown",  (PyCFunction)SwigPyObject_disown,  METH_NOARGS,  (char *)"releases ownership of the pointer"},
+  {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_NOARGS,  (char *)"aquires ownership of the pointer"},
+  {(char *)"own",     (PyCFunction)SwigPyObject_own,     METH_VARARGS, (char *)"returns/sets ownership of the pointer"},
+  {(char *)"append",  (PyCFunction)SwigPyObject_append,  METH_O,       (char *)"appends another 'this' object"},
+  {(char *)"next",    (PyCFunction)SwigPyObject_next,    METH_NOARGS,  (char *)"returns the next 'this' object"},
+  {(char *)"__repr__",(PyCFunction)SwigPyObject_repr,    METH_NOARGS,  (char *)"returns object representation"},
   {0, 0, 0, 0}  
 };
 #else
 static PyMethodDef
 swigobject_methods[] = {
-  {(char *)"disown",  (PyCFunction)PySwigObject_disown,  METH_VARARGS,  (char *)"releases ownership of the pointer"},
-  {(char *)"acquire", (PyCFunction)PySwigObject_acquire, METH_VARARGS,  (char *)"aquires ownership of the pointer"},
-  {(char *)"own",     (PyCFunction)PySwigObject_own,     METH_VARARGS,  (char *)"returns/sets ownership of the pointer"},
-  {(char *)"append",  (PyCFunction)PySwigObject_append,  METH_VARARGS,  (char *)"appends another 'this' object"},
-  {(char *)"next",    (PyCFunction)PySwigObject_next,    METH_VARARGS,  (char *)"returns the next 'this' object"},
-  {(char *)"__repr__",(PyCFunction)PySwigObject_repr,   METH_VARARGS,  (char *)"returns object representation"},
+  {(char *)"disown",  (PyCFunction)SwigPyObject_disown,  METH_VARARGS,  (char *)"releases ownership of the pointer"},
+  {(char *)"acquire", (PyCFunction)SwigPyObject_acquire, METH_VARARGS,  (char *)"aquires ownership of the pointer"},
+  {(char *)"own",     (PyCFunction)SwigPyObject_own,     METH_VARARGS,  (char *)"returns/sets ownership of the pointer"},
+  {(char *)"append",  (PyCFunction)SwigPyObject_append,  METH_VARARGS,  (char *)"appends another 'this' object"},
+  {(char *)"next",    (PyCFunction)SwigPyObject_next,    METH_VARARGS,  (char *)"returns the next 'this' object"},
+  {(char *)"__repr__",(PyCFunction)SwigPyObject_repr,   METH_VARARGS,  (char *)"returns object representation"},
   {0, 0, 0, 0}  
 };
 #endif
 
 #if PY_VERSION_HEX < 0x02020000
 SWIGINTERN PyObject *
-PySwigObject_getattr(PySwigObject *sobj,char *name)
+SwigPyObject_getattr(SwigPyObject *sobj,char *name)
 {
   return Py_FindMethod(swigobject_methods, (PyObject *)sobj, name);
 }
 #endif
 
 SWIGRUNTIME PyTypeObject*
-_PySwigObject_type(void) {
+SwigPyObject_TypeOnce(void) {
   static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer";
-  
-  static PyNumberMethods PySwigObject_as_number = {
+
+  static PyNumberMethods SwigPyObject_as_number = {
     (binaryfunc)0, /*nb_add*/
     (binaryfunc)0, /*nb_subtract*/
     (binaryfunc)0, /*nb_multiply*/
+    /* nb_divide removed in Python 3 */
+#if PY_VERSION_HEX < 0x03000000
     (binaryfunc)0, /*nb_divide*/
+#endif
     (binaryfunc)0, /*nb_remainder*/
     (binaryfunc)0, /*nb_divmod*/
     (ternaryfunc)0,/*nb_power*/
@@ -1620,13 +1862,23 @@
     0,		   /*nb_and*/
     0,		   /*nb_xor*/
     0,		   /*nb_or*/
-    (coercion)0,   /*nb_coerce*/
-    (unaryfunc)PySwigObject_long, /*nb_int*/
-    (unaryfunc)PySwigObject_long, /*nb_long*/
+#if PY_VERSION_HEX < 0x03000000
+    0,   /*nb_coerce*/
+#endif
+    (unaryfunc)SwigPyObject_long, /*nb_int*/
+#if PY_VERSION_HEX < 0x03000000
+    (unaryfunc)SwigPyObject_long, /*nb_long*/
+#else
+    0, /*nb_reserved*/
+#endif
     (unaryfunc)0,                 /*nb_float*/
-    (unaryfunc)PySwigObject_oct,  /*nb_oct*/
-    (unaryfunc)PySwigObject_hex,  /*nb_hex*/
-#if PY_VERSION_HEX >= 0x02050000 /* 2.5.0 */
+#if PY_VERSION_HEX < 0x03000000
+    (unaryfunc)SwigPyObject_oct,  /*nb_oct*/
+    (unaryfunc)SwigPyObject_hex,  /*nb_hex*/
+#endif
+#if PY_VERSION_HEX >= 0x03000000 /* 3.0 */
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index, nb_inplace_divide removed */
+#elif PY_VERSION_HEX >= 0x02050000 /* 2.5.0 */
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */
 #elif PY_VERSION_HEX >= 0x02020000 /* 2.2.0 */
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */
@@ -1635,81 +1887,97 @@
 #endif
   };
 
-  static PyTypeObject pyswigobject_type;  
+  static PyTypeObject swigpyobject_type;
   static int type_init = 0;
   if (!type_init) {
-    const PyTypeObject tmp
-      = {
-	PyObject_HEAD_INIT(NULL)
-	0,				    /* ob_size */
-	(char *)"PySwigObject",		    /* tp_name */
-	sizeof(PySwigObject),		    /* tp_basicsize */
-	0,			            /* tp_itemsize */
-	(destructor)PySwigObject_dealloc,   /* tp_dealloc */
-	(printfunc)PySwigObject_print,	    /* tp_print */
+    const PyTypeObject tmp = {
+      /* PyObject header changed in Python 3 */
+#if PY_VERSION_HEX >= 0x03000000
+      PyVarObject_HEAD_INIT(NULL, 0)
+#else
+      PyObject_HEAD_INIT(NULL)
+      0,                                    /* ob_size */
+#endif
+      (char *)"SwigPyObject",               /* tp_name */
+      sizeof(SwigPyObject),                 /* tp_basicsize */
+      0,                                    /* tp_itemsize */
+      (destructor)SwigPyObject_dealloc,     /* tp_dealloc */
+      (printfunc)SwigPyObject_print,        /* tp_print */
 #if PY_VERSION_HEX < 0x02020000
-	(getattrfunc)PySwigObject_getattr,  /* tp_getattr */ 
+      (getattrfunc)SwigPyObject_getattr,    /* tp_getattr */
+#else
+      (getattrfunc)0,                       /* tp_getattr */
+#endif
+      (setattrfunc)0,                       /* tp_setattr */
+#if PY_VERSION_HEX >= 0x03000000
+    0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
 #else
-	(getattrfunc)0,			    /* tp_getattr */ 
+      (cmpfunc)SwigPyObject_compare,        /* tp_compare */
 #endif
-	(setattrfunc)0,			    /* tp_setattr */ 
-	(cmpfunc)PySwigObject_compare,	    /* tp_compare */ 
-	(reprfunc)PySwigObject_repr,	    /* tp_repr */    
-	&PySwigObject_as_number,	    /* tp_as_number */
-	0,				    /* tp_as_sequence */
-	0,				    /* tp_as_mapping */
-	(hashfunc)0,			    /* tp_hash */
-	(ternaryfunc)0,			    /* tp_call */
-	(reprfunc)PySwigObject_str,	    /* tp_str */
-	PyObject_GenericGetAttr,            /* tp_getattro */
-	0,				    /* tp_setattro */
-	0,		                    /* tp_as_buffer */
-	Py_TPFLAGS_DEFAULT,	            /* tp_flags */
-	swigobject_doc, 	            /* tp_doc */        
-	0,                                  /* tp_traverse */
-	0,                                  /* tp_clear */
-	0,                                  /* tp_richcompare */
-	0,                                  /* tp_weaklistoffset */
+      (reprfunc)SwigPyObject_repr,          /* tp_repr */
+      &SwigPyObject_as_number,              /* tp_as_number */
+      0,                                    /* tp_as_sequence */
+      0,                                    /* tp_as_mapping */
+      (hashfunc)0,                          /* tp_hash */
+      (ternaryfunc)0,                       /* tp_call */
+      (reprfunc)SwigPyObject_str,           /* tp_str */
+      PyObject_GenericGetAttr,              /* tp_getattro */
+      0,                                    /* tp_setattro */
+      0,                                    /* tp_as_buffer */
+      Py_TPFLAGS_DEFAULT,                   /* tp_flags */
+      swigobject_doc,                       /* tp_doc */
+      0,                                    /* tp_traverse */
+      0,                                    /* tp_clear */
+      (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */
+      0,                                    /* tp_weaklistoffset */
 #if PY_VERSION_HEX >= 0x02020000
-	0,                                  /* tp_iter */
-	0,                                  /* tp_iternext */
-	swigobject_methods,		    /* tp_methods */ 
-	0,			            /* tp_members */
-	0,				    /* tp_getset */	    	
-	0,			            /* tp_base */	        
-	0,				    /* tp_dict */	    	
-	0,				    /* tp_descr_get */  	
-	0,				    /* tp_descr_set */  	
-	0,				    /* tp_dictoffset */ 	
-	0,				    /* tp_init */	    	
-	0,				    /* tp_alloc */	    	
-	0,			            /* tp_new */	    	
-	0,	                            /* tp_free */	   
-        0,                                  /* tp_is_gc */  
-	0,				    /* tp_bases */   
-	0,				    /* tp_mro */
-	0,				    /* tp_cache */   
- 	0,				    /* tp_subclasses */
-	0,				    /* tp_weaklist */
+      0,                                    /* tp_iter */
+      0,                                    /* tp_iternext */
+      swigobject_methods,                   /* tp_methods */
+      0,                                    /* tp_members */
+      0,                                    /* tp_getset */
+      0,                                    /* tp_base */
+      0,                                    /* tp_dict */
+      0,                                    /* tp_descr_get */
+      0,                                    /* tp_descr_set */
+      0,                                    /* tp_dictoffset */
+      0,                                    /* tp_init */
+      0,                                    /* tp_alloc */
+      0,                                    /* tp_new */
+      0,                                    /* tp_free */
+      0,                                    /* tp_is_gc */
+      0,                                    /* tp_bases */
+      0,                                    /* tp_mro */
+      0,                                    /* tp_cache */
+      0,                                    /* tp_subclasses */
+      0,                                    /* tp_weaklist */
 #endif
 #if PY_VERSION_HEX >= 0x02030000
-	0,                                  /* tp_del */
+      0,                                    /* tp_del */
+#endif
+#if PY_VERSION_HEX >= 0x02060000
+      0,                                    /* tp_version */
 #endif
 #ifdef COUNT_ALLOCS
-	0,0,0,0                             /* tp_alloc -> tp_next */
+      0,0,0,0                               /* tp_alloc -> tp_next */
 #endif
-      };
-    pyswigobject_type = tmp;
-    pyswigobject_type.ob_type = &PyType_Type;
+    };
+    swigpyobject_type = tmp;
     type_init = 1;
+#if PY_VERSION_HEX < 0x02020000
+    swigpyobject_type.ob_type = &PyType_Type;
+#else
+    if (PyType_Ready(&swigpyobject_type) < 0)
+      return NULL;
+#endif
   }
-  return &pyswigobject_type;
+  return &swigpyobject_type;
 }
 
 SWIGRUNTIME PyObject *
-PySwigObject_New(void *ptr, swig_type_info *ty, int own)
+SwigPyObject_New(void *ptr, swig_type_info *ty, int own)
 {
-  PySwigObject *sobj = PyObject_NEW(PySwigObject, PySwigObject_type());
+  SwigPyObject *sobj = PyObject_NEW(SwigPyObject, SwigPyObject_type());
   if (sobj) {
     sobj->ptr  = ptr;
     sobj->ty   = ty;
@@ -1728,10 +1996,10 @@
   void *pack;
   swig_type_info *ty;
   size_t size;
-} PySwigPacked;
+} SwigPyPacked;
 
 SWIGRUNTIME int
-PySwigPacked_print(PySwigPacked *v, FILE *fp, int SWIGUNUSEDPARM(flags))
+SwigPyPacked_print(SwigPyPacked *v, FILE *fp, int SWIGUNUSEDPARM(flags))
 {
   char result[SWIG_BUFFER_SIZE];
   fputs("<Swig Packed ", fp); 
@@ -1745,29 +2013,29 @@
 }
   
 SWIGRUNTIME PyObject *
-PySwigPacked_repr(PySwigPacked *v)
+SwigPyPacked_repr(SwigPyPacked *v)
 {
   char result[SWIG_BUFFER_SIZE];
   if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
-    return PyString_FromFormat("<Swig Packed at %s%s>", result, v->ty->name);
+    return SWIG_Python_str_FromFormat("<Swig Packed at %s%s>", result, v->ty->name);
   } else {
-    return PyString_FromFormat("<Swig Packed %s>", v->ty->name);
+    return SWIG_Python_str_FromFormat("<Swig Packed %s>", v->ty->name);
   }  
 }
 
 SWIGRUNTIME PyObject *
-PySwigPacked_str(PySwigPacked *v)
+SwigPyPacked_str(SwigPyPacked *v)
 {
   char result[SWIG_BUFFER_SIZE];
   if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
-    return PyString_FromFormat("%s%s", result, v->ty->name);
+    return SWIG_Python_str_FromFormat("%s%s", result, v->ty->name);
   } else {
-    return PyString_FromString(v->ty->name);
+    return SWIG_Python_str_FromChar(v->ty->name);
   }  
 }
 
 SWIGRUNTIME int
-PySwigPacked_compare(PySwigPacked *v, PySwigPacked *w)
+SwigPyPacked_compare(SwigPyPacked *v, SwigPyPacked *w)
 {
   size_t i = v->size;
   size_t j = w->size;
@@ -1775,104 +2043,120 @@
   return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
 }
 
-SWIGRUNTIME PyTypeObject* _PySwigPacked_type(void);
+SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void);
 
 SWIGRUNTIME PyTypeObject*
-PySwigPacked_type(void) {
-  static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigPacked_type();
+SwigPyPacked_type(void) {
+  static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyPacked_TypeOnce();
   return type;
 }
 
 SWIGRUNTIMEINLINE int
-PySwigPacked_Check(PyObject *op) {
-  return ((op)->ob_type == _PySwigPacked_type()) 
-    || (strcmp((op)->ob_type->tp_name,"PySwigPacked") == 0);
+SwigPyPacked_Check(PyObject *op) {
+  return ((op)->ob_type == SwigPyPacked_TypeOnce()) 
+    || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0);
 }
 
 SWIGRUNTIME void
-PySwigPacked_dealloc(PyObject *v)
+SwigPyPacked_dealloc(PyObject *v)
 {
-  if (PySwigPacked_Check(v)) {
-    PySwigPacked *sobj = (PySwigPacked *) v;
+  if (SwigPyPacked_Check(v)) {
+    SwigPyPacked *sobj = (SwigPyPacked *) v;
     free(sobj->pack);
   }
   PyObject_DEL(v);
 }
 
 SWIGRUNTIME PyTypeObject*
-_PySwigPacked_type(void) {
+SwigPyPacked_TypeOnce(void) {
   static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer";
-  static PyTypeObject pyswigpacked_type;
-  static int type_init = 0;  
+  static PyTypeObject swigpypacked_type;
+  static int type_init = 0;
   if (!type_init) {
-    const PyTypeObject tmp
-      = {
-	PyObject_HEAD_INIT(NULL)
-	0,				    /* ob_size */	
-	(char *)"PySwigPacked",		    /* tp_name */	
-	sizeof(PySwigPacked),		    /* tp_basicsize */	
-	0,				    /* tp_itemsize */	
-	(destructor)PySwigPacked_dealloc,   /* tp_dealloc */	
-	(printfunc)PySwigPacked_print,	    /* tp_print */   	
-	(getattrfunc)0,			    /* tp_getattr */ 	
-	(setattrfunc)0,			    /* tp_setattr */ 	
-	(cmpfunc)PySwigPacked_compare,	    /* tp_compare */ 	
-	(reprfunc)PySwigPacked_repr,	    /* tp_repr */    	
-	0,	                            /* tp_as_number */	
-	0,				    /* tp_as_sequence */
-	0,				    /* tp_as_mapping */	
-	(hashfunc)0,			    /* tp_hash */	
-	(ternaryfunc)0,			    /* tp_call */	
-	(reprfunc)PySwigPacked_str,	    /* tp_str */	
-	PyObject_GenericGetAttr,            /* tp_getattro */
-	0,				    /* tp_setattro */
-	0,		                    /* tp_as_buffer */
-	Py_TPFLAGS_DEFAULT,	            /* tp_flags */
-	swigpacked_doc, 	            /* tp_doc */
-	0,                                  /* tp_traverse */
-	0,                                  /* tp_clear */
-	0,                                  /* tp_richcompare */
-	0,                                  /* tp_weaklistoffset */
+    const PyTypeObject tmp = {
+      /* PyObject header changed in Python 3 */
+#if PY_VERSION_HEX>=0x03000000
+      PyVarObject_HEAD_INIT(NULL, 0)
+#else
+      PyObject_HEAD_INIT(NULL)
+      0,                                    /* ob_size */
+#endif
+      (char *)"SwigPyPacked",               /* tp_name */
+      sizeof(SwigPyPacked),                 /* tp_basicsize */
+      0,                                    /* tp_itemsize */
+      (destructor)SwigPyPacked_dealloc,     /* tp_dealloc */
+      (printfunc)SwigPyPacked_print,        /* tp_print */
+      (getattrfunc)0,                       /* tp_getattr */
+      (setattrfunc)0,                       /* tp_setattr */
+#if PY_VERSION_HEX>=0x03000000
+      0, /* tp_reserved in 3.0.1 */
+#else
+      (cmpfunc)SwigPyPacked_compare,        /* tp_compare */
+#endif
+      (reprfunc)SwigPyPacked_repr,          /* tp_repr */
+      0,                                    /* tp_as_number */
+      0,                                    /* tp_as_sequence */
+      0,                                    /* tp_as_mapping */
+      (hashfunc)0,                          /* tp_hash */
+      (ternaryfunc)0,                       /* tp_call */
+      (reprfunc)SwigPyPacked_str,           /* tp_str */
+      PyObject_GenericGetAttr,              /* tp_getattro */
+      0,                                    /* tp_setattro */
+      0,                                    /* tp_as_buffer */
+      Py_TPFLAGS_DEFAULT,                   /* tp_flags */
+      swigpacked_doc,                       /* tp_doc */
+      0,                                    /* tp_traverse */
+      0,                                    /* tp_clear */
+      0,                                    /* tp_richcompare */
+      0,                                    /* tp_weaklistoffset */
 #if PY_VERSION_HEX >= 0x02020000
-	0,                                  /* tp_iter */
-	0,                                  /* tp_iternext */
-	0,		                    /* tp_methods */ 
-	0,			            /* tp_members */
-	0,				    /* tp_getset */	    	
-	0,			            /* tp_base */	        
-	0,				    /* tp_dict */	    	
-	0,				    /* tp_descr_get */  	
-	0,				    /* tp_descr_set */  	
-	0,				    /* tp_dictoffset */ 	
-	0,				    /* tp_init */	    	
-	0,				    /* tp_alloc */	    	
-	0,			            /* tp_new */	    	
-	0, 	                            /* tp_free */	   
-        0,                                  /* tp_is_gc */  
-	0,				    /* tp_bases */   
-	0,				    /* tp_mro */
-	0,				    /* tp_cache */   
- 	0,				    /* tp_subclasses */
-	0,				    /* tp_weaklist */
+      0,                                    /* tp_iter */
+      0,                                    /* tp_iternext */
+      0,                                    /* tp_methods */
+      0,                                    /* tp_members */
+      0,                                    /* tp_getset */
+      0,                                    /* tp_base */
+      0,                                    /* tp_dict */
+      0,                                    /* tp_descr_get */
+      0,                                    /* tp_descr_set */
+      0,                                    /* tp_dictoffset */
+      0,                                    /* tp_init */
+      0,                                    /* tp_alloc */
+      0,                                    /* tp_new */
+      0,                                    /* tp_free */
+      0,                                    /* tp_is_gc */
+      0,                                    /* tp_bases */
+      0,                                    /* tp_mro */
+      0,                                    /* tp_cache */
+      0,                                    /* tp_subclasses */
+      0,                                    /* tp_weaklist */
 #endif
 #if PY_VERSION_HEX >= 0x02030000
-	0,                                  /* tp_del */
+      0,                                    /* tp_del */
+#endif
+#if PY_VERSION_HEX >= 0x02060000
+      0,                                    /* tp_version */
 #endif
 #ifdef COUNT_ALLOCS
-	0,0,0,0                             /* tp_alloc -> tp_next */
+      0,0,0,0                               /* tp_alloc -> tp_next */
 #endif
-      };
-    pyswigpacked_type = tmp;
-    pyswigpacked_type.ob_type = &PyType_Type;
+    };
+    swigpypacked_type = tmp;
     type_init = 1;
+#if PY_VERSION_HEX < 0x02020000
+    swigpypacked_type.ob_type = &PyType_Type;
+#else
+    if (PyType_Ready(&swigpypacked_type) < 0)
+      return NULL;
+#endif
   }
-  return &pyswigpacked_type;
+  return &swigpypacked_type;
 }
 
 SWIGRUNTIME PyObject *
-PySwigPacked_New(void *ptr, size_t size, swig_type_info *ty)
+SwigPyPacked_New(void *ptr, size_t size, swig_type_info *ty)
 {
-  PySwigPacked *sobj = PyObject_NEW(PySwigPacked, PySwigPacked_type());
+  SwigPyPacked *sobj = PyObject_NEW(SwigPyPacked, SwigPyPacked_type());
   if (sobj) {
     void *pack = malloc(size);
     if (pack) {
@@ -1889,10 +2173,10 @@
 }
 
 SWIGRUNTIME swig_type_info *
-PySwigPacked_UnpackData(PyObject *obj, void *ptr, size_t size)
+SwigPyPacked_UnpackData(PyObject *obj, void *ptr, size_t size)
 {
-  if (PySwigPacked_Check(obj)) {
-    PySwigPacked *sobj = (PySwigPacked *)obj;
+  if (SwigPyPacked_Check(obj)) {
+    SwigPyPacked *sobj = (SwigPyPacked *)obj;
     if (sobj->size != size) return 0;
     memcpy(ptr, sobj->pack, size);
     return sobj->ty;
@@ -1908,65 +2192,88 @@
 SWIGRUNTIMEINLINE PyObject *
 _SWIG_This(void)
 {
-  return PyString_FromString("this");
+    return SWIG_Python_str_FromChar("this");
 }
 
+static PyObject *swig_this = NULL;
+
 SWIGRUNTIME PyObject *
 SWIG_This(void)
 {
-  static PyObject *SWIG_STATIC_POINTER(swig_this) = _SWIG_This();
+  if (swig_this == NULL)
+    swig_this = _SWIG_This();
   return swig_this;
 }
 
 /* #define SWIG_PYTHON_SLOW_GETSET_THIS */
 
-SWIGRUNTIME PySwigObject *
+/* TODO: I don't know how to implement the fast getset in Python 3 right now */
+#if PY_VERSION_HEX>=0x03000000
+#define SWIG_PYTHON_SLOW_GETSET_THIS 
+#endif
+
+SWIGRUNTIME SwigPyObject *
 SWIG_Python_GetSwigThis(PyObject *pyobj) 
 {
-  if (PySwigObject_Check(pyobj)) {
-    return (PySwigObject *) pyobj;
-  } else {
-    PyObject *obj = 0;
+  PyObject *obj;
+
+  if (SwigPyObject_Check(pyobj))
+    return (SwigPyObject *) pyobj;
+
+#ifdef SWIGPYTHON_BUILTIN
+  (void)obj;
+# ifdef PyWeakref_CheckProxy
+  if (PyWeakref_CheckProxy(pyobj)) {
+    pyobj = PyWeakref_GET_OBJECT(pyobj);
+    if (pyobj && SwigPyObject_Check(pyobj))
+      return (SwigPyObject*) pyobj;
+  }
+# endif
+  return NULL;
+#else
+
+  obj = 0;
+
 #if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000))
-    if (PyInstance_Check(pyobj)) {
-      obj = _PyInstance_Lookup(pyobj, SWIG_This());      
+  if (PyInstance_Check(pyobj)) {
+    obj = _PyInstance_Lookup(pyobj, SWIG_This());      
+  } else {
+    PyObject **dictptr = _PyObject_GetDictPtr(pyobj);
+    if (dictptr != NULL) {
+      PyObject *dict = *dictptr;
+      obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0;
     } else {
-      PyObject **dictptr = _PyObject_GetDictPtr(pyobj);
-      if (dictptr != NULL) {
-	PyObject *dict = *dictptr;
-	obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0;
-      } else {
 #ifdef PyWeakref_CheckProxy
-	if (PyWeakref_CheckProxy(pyobj)) {
-	  PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);
-	  return wobj ? SWIG_Python_GetSwigThis(wobj) : 0;
-	}
+      if (PyWeakref_CheckProxy(pyobj)) {
+	PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);
+	return wobj ? SWIG_Python_GetSwigThis(wobj) : 0;
+      }
 #endif
-	obj = PyObject_GetAttr(pyobj,SWIG_This());
-	if (obj) {
-	  Py_DECREF(obj);
-	} else {
-	  if (PyErr_Occurred()) PyErr_Clear();
-	  return 0;
-	}
+      obj = PyObject_GetAttr(pyobj,SWIG_This());
+      if (obj) {
+	Py_DECREF(obj);
+      } else {
+	if (PyErr_Occurred()) PyErr_Clear();
+	return 0;
       }
     }
+  }
 #else
-    obj = PyObject_GetAttr(pyobj,SWIG_This());
-    if (obj) {
-      Py_DECREF(obj);
-    } else {
-      if (PyErr_Occurred()) PyErr_Clear();
-      return 0;
-    }
+  obj = PyObject_GetAttr(pyobj,SWIG_This());
+  if (obj) {
+    Py_DECREF(obj);
+  } else {
+    if (PyErr_Occurred()) PyErr_Clear();
+    return 0;
+  }
 #endif
-    if (obj && !PySwigObject_Check(obj)) {
-      /* a PyObject is called 'this', try to get the 'real this'
-	 PySwigObject from it */ 
-      return SWIG_Python_GetSwigThis(obj);
-    }
-    return (PySwigObject *)obj;
+  if (obj && !SwigPyObject_Check(obj)) {
+    /* a PyObject is called 'this', try to get the 'real this'
+       SwigPyObject from it */ 
+    return SWIG_Python_GetSwigThis(obj);
   }
+  return (SwigPyObject *)obj;
+#endif
 }
 
 /* Acquire a pointer value */
@@ -1974,7 +2281,7 @@
 SWIGRUNTIME int
 SWIG_Python_AcquirePtr(PyObject *obj, int own) {
   if (own == SWIG_POINTER_OWN) {
-    PySwigObject *sobj = SWIG_Python_GetSwigThis(obj);
+    SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj);
     if (sobj) {
       int oldown = sobj->own;
       sobj->own = own;
@@ -1988,91 +2295,97 @@
 
 SWIGRUNTIME int
 SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) {
-  if (!obj) return SWIG_ERROR;
+  int res;
+  SwigPyObject *sobj;
+
+  if (!obj)
+    return SWIG_ERROR;
   if (obj == Py_None) {
-    if (ptr) *ptr = 0;
+    if (ptr)
+      *ptr = 0;
     return SWIG_OK;
-  } else {
-    PySwigObject *sobj = SWIG_Python_GetSwigThis(obj);
-    if (own)
-      *own = 0;
-    while (sobj) {
-      void *vptr = sobj->ptr;
-      if (ty) {
-	swig_type_info *to = sobj->ty;
-	if (to == ty) {
-	  /* no type cast needed */
-	  if (ptr) *ptr = vptr;
-	  break;
-	} else {
-	  swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
-	  if (!tc) {
-	    sobj = (PySwigObject *)sobj->next;
-	  } else {
-	    if (ptr) {
-              int newmemory = 0;
-              *ptr = SWIG_TypeCast(tc,vptr,&newmemory);
-              if (newmemory == SWIG_CAST_NEW_MEMORY) {
-                assert(own);
-                if (own)
-                  *own = *own | SWIG_CAST_NEW_MEMORY;
-              }
-            }
-	    break;
-	  }
-	}
+  }
+
+  res = SWIG_ERROR;
+
+  sobj = SWIG_Python_GetSwigThis(obj);
+  if (own)
+    *own = 0;
+  while (sobj) {
+    void *vptr = sobj->ptr;
+    if (ty) {
+      swig_type_info *to = sobj->ty;
+      if (to == ty) {
+        /* no type cast needed */
+        if (ptr) *ptr = vptr;
+        break;
       } else {
-	if (ptr) *ptr = vptr;
-	break;
-      }
-    }
-    if (sobj) {
-      if (own)
-        *own = *own | sobj->own;
-      if (flags & SWIG_POINTER_DISOWN) {
-	sobj->own = 0;
+        swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
+        if (!tc) {
+          sobj = (SwigPyObject *)sobj->next;
+        } else {
+          if (ptr) {
+            int newmemory = 0;
+            *ptr = SWIG_TypeCast(tc,vptr,&newmemory);
+            if (newmemory == SWIG_CAST_NEW_MEMORY) {
+              assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */
+              if (own)
+                *own = *own | SWIG_CAST_NEW_MEMORY;
+            }
+          }
+          break;
+        }
       }
-      return SWIG_OK;
     } else {
-      int res = SWIG_ERROR;
-      if (flags & SWIG_POINTER_IMPLICIT_CONV) {
-	PySwigClientData *data = ty ? (PySwigClientData *) ty->clientdata : 0;
-	if (data && !data->implicitconv) {
-	  PyObject *klass = data->klass;
-	  if (klass) {
-	    PyObject *impconv;
-	    data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
-	    impconv = SWIG_Python_CallFunctor(klass, obj);
-	    data->implicitconv = 0;
-	    if (PyErr_Occurred()) {
-	      PyErr_Clear();
-	      impconv = 0;
-	    }
-	    if (impconv) {
-	      PySwigObject *iobj = SWIG_Python_GetSwigThis(impconv);
-	      if (iobj) {
-		void *vptr;
-		res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0);
-		if (SWIG_IsOK(res)) {
-		  if (ptr) {
-		    *ptr = vptr;
-		    /* transfer the ownership to 'ptr' */
-		    iobj->own = 0;
-		    res = SWIG_AddCast(res);
-		    res = SWIG_AddNewMask(res);
-		  } else {
-		    res = SWIG_AddCast(res);		    
-		  }
-		}
-	      }
-	      Py_DECREF(impconv);
-	    }
-	  }
-	}
+      if (ptr) *ptr = vptr;
+      break;
+    }
+  }
+  if (sobj) {
+    if (own)
+      *own = *own | sobj->own;
+    if (flags & SWIG_POINTER_DISOWN) {
+      sobj->own = 0;
+    }
+    res = SWIG_OK;
+  } else {
+    if (flags & SWIG_POINTER_IMPLICIT_CONV) {
+      SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
+      if (data && !data->implicitconv) {
+        PyObject *klass = data->klass;
+        if (klass) {
+          PyObject *impconv;
+          data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
+          impconv = SWIG_Python_CallFunctor(klass, obj);
+          data->implicitconv = 0;
+          if (PyErr_Occurred()) {
+            PyErr_Clear();
+            impconv = 0;
+          }
+          if (impconv) {
+            SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv);
+            if (iobj) {
+              void *vptr;
+              res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0);
+              if (SWIG_IsOK(res)) {
+                if (ptr) {
+                  *ptr = vptr;
+                  /* transfer the ownership to 'ptr' */
+                  iobj->own = 0;
+                  res = SWIG_AddCast(res);
+                  res = SWIG_AddNewMask(res);
+                } else {
+                  res = SWIG_AddCast(res);		    
+                }
+              }
+            }
+            Py_DECREF(impconv);
+          }
+        }
       }
-      return res;
     }
   }
+  return res;
 }
 
 /* Convert a function ptr value */
@@ -2087,10 +2400,10 @@
     /* here we get the method pointer for callbacks */
     const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
     const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0;
-    if (desc) {
+    if (desc)
       desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0;
-      if (!desc) return SWIG_ERROR;
-    }
+    if (!desc) 
+      return SWIG_ERROR;
     if (ty) {
       swig_cast_info *tc = SWIG_TypeCheck(desc,ty);
       if (tc) {
@@ -2111,7 +2424,7 @@
 
 SWIGRUNTIME int
 SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) {
-  swig_type_info *to = PySwigPacked_UnpackData(obj, ptr, sz);
+  swig_type_info *to = SwigPyPacked_UnpackData(obj, ptr, sz);
   if (!to) return SWIG_ERROR;
   if (ty) {
     if (to != ty) {
@@ -2128,12 +2441,12 @@
  * ----------------------------------------------------------------------------- */
 
 /*
-  Create a new instance object, whitout calling __init__, and set the
+  Create a new instance object, without calling __init__, and set the
   'this' attribute.
 */
 
 SWIGRUNTIME PyObject* 
-SWIG_Python_NewShadowInstance(PySwigClientData *data, PyObject *swig_this)
+SWIG_Python_NewShadowInstance(SwigPyClientData *data, PyObject *swig_this)
 {
 #if (PY_VERSION_HEX >= 0x02020000)
   PyObject *inst = 0;
@@ -2157,10 +2470,16 @@
 #endif
     }
   } else {
+#if PY_VERSION_HEX >= 0x03000000
+    inst = PyBaseObject_Type.tp_new((PyTypeObject*) data->newargs, Py_None, Py_None);
+    PyObject_SetAttr(inst, SWIG_This(), swig_this);
+    Py_TYPE(inst)->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG;
+#else
     PyObject *dict = PyDict_New();
     PyDict_SetItem(dict, SWIG_This(), swig_this);
     inst = PyInstance_NewRaw(data->newargs, dict);
     Py_DECREF(dict);
+#endif
   }
   return inst;
 #else
@@ -2223,9 +2542,9 @@
   if (!SWIG_Python_UnpackTuple(args,(char*)"swiginit", 2, 2, obj)) {
     return NULL;
   } else {
-    PySwigObject *sthis = SWIG_Python_GetSwigThis(obj[0]);
+    SwigPyObject *sthis = SWIG_Python_GetSwigThis(obj[0]);
     if (sthis) {
-      PySwigObject_append((PyObject*) sthis, obj[1]);
+      SwigPyObject_append((PyObject*) sthis, obj[1]);
     } else {
       SWIG_Python_SetSwigThis(obj[0], obj[1]);
     }
@@ -2236,29 +2555,61 @@
 /* Create a new pointer object */
 
 SWIGRUNTIME PyObject *
-SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int flags) {
-  if (!ptr) {
+SWIG_Python_NewPointerObj(PyObject *self, void *ptr, swig_type_info *type, int flags) {
+  SwigPyClientData *clientdata;
+  PyObject * robj;
+  int own;
+
+  if (!ptr)
     return SWIG_Py_Void();
-  } else {
-    int own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0;
-    PyObject *robj = PySwigObject_New(ptr, type, own);
-    PySwigClientData *clientdata = type ? (PySwigClientData *)(type->clientdata) : 0;
-    if (clientdata && !(flags & SWIG_POINTER_NOSHADOW)) {
-      PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj);
-      if (inst) {
-	Py_DECREF(robj);
-	robj = inst;
-      }
+
+  clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0;
+  own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0;
+  if (clientdata && clientdata->pytype) {
+    SwigPyObject *newobj;
+    if (flags & SWIG_BUILTIN_TP_INIT) {
+      newobj = (SwigPyObject*) self;
+      if (newobj->ptr) {
+        PyObject *next_self = clientdata->pytype->tp_alloc(clientdata->pytype, 0);
+        while (newobj->next)
+	  newobj = (SwigPyObject *) newobj->next;
+        newobj->next = next_self;
+        newobj = (SwigPyObject *)next_self;
+      }
+    } else {
+      newobj = PyObject_New(SwigPyObject, clientdata->pytype);
+    }
+    if (newobj) {
+      newobj->ptr = ptr;
+      newobj->ty = type;
+      newobj->own = own;
+      newobj->next = 0;
+#ifdef SWIGPYTHON_BUILTIN
+      newobj->dict = 0;
+#endif
+      return (PyObject*) newobj;
     }
-    return robj;
+    return SWIG_Py_Void();
   }
+
+  assert(!(flags & SWIG_BUILTIN_TP_INIT));
+
+  robj = SwigPyObject_New(ptr, type, own);
+  if (clientdata && !(flags & SWIG_POINTER_NOSHADOW)) {
+    PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj);
+    if (inst) {
+      Py_DECREF(robj);
+      robj = inst;
+    }
+  }
+  return robj;
 }
 
 /* Create a new packed object */
 
 SWIGRUNTIMEINLINE PyObject *
 SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) {
-  return ptr ? PySwigPacked_New((void *) ptr, sz, type) : SWIG_Py_Void();
+  return ptr ? SwigPyPacked_New((void *) ptr, sz, type) : SWIG_Py_Void();
 }
 
 /* -----------------------------------------------------------------------------*
@@ -2277,8 +2628,12 @@
 #ifdef SWIG_LINK_RUNTIME
     type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
 #else
+# ifdef SWIGPY_USE_CAPSULE
+    type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0);
+# else
     type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
 				    (char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
+# endif
     if (PyErr_Occurred()) {
       PyErr_Clear();
       type_pointer = (void *)0;
@@ -2321,33 +2676,54 @@
 #endif
 
 SWIGRUNTIME void
+#ifdef SWIGPY_USE_CAPSULE
+SWIG_Python_DestroyModule(PyObject *obj)
+#else
 SWIG_Python_DestroyModule(void *vptr)
+#endif
 {
+#ifdef SWIGPY_USE_CAPSULE
+  swig_module_info *swig_module = (swig_module_info *) PyCapsule_GetPointer(obj, SWIGPY_CAPSULE_NAME);
+#else
   swig_module_info *swig_module = (swig_module_info *) vptr;
+#endif
   swig_type_info **types = swig_module->types;
   size_t i;
   for (i =0; i < swig_module->size; ++i) {
     swig_type_info *ty = types[i];
     if (ty->owndata) {
-      PySwigClientData *data = (PySwigClientData *) ty->clientdata;
-      if (data) PySwigClientData_Del(data);
+      SwigPyClientData *data = (SwigPyClientData *) ty->clientdata;
+      if (data) SwigPyClientData_Del(data);
     }
   }
   Py_DECREF(SWIG_This());
+  swig_this = NULL;
 }
 
 SWIGRUNTIME void
 SWIG_Python_SetModule(swig_module_info *swig_module) {
-  static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} };/* Sentinel */
-
-  PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
-				   swig_empty_runtime_method_table);
+#if PY_VERSION_HEX >= 0x03000000
+ /* Add a dummy module object into sys.modules */
+  PyObject *module = PyImport_AddModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION);
+#else
+  static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */
+  PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table);
+#endif
+#ifdef SWIGPY_USE_CAPSULE
+  PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule);
+  if (pointer && module) {
+    PyModule_AddObject(module, (char*)"type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer);
+  } else {
+    Py_XDECREF(pointer);
+  }
+#else
   PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule);
   if (pointer && module) {
     PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer);
   } else {
     Py_XDECREF(pointer);
   }
+#endif
 }
 
 /* The python cached type query */
@@ -2361,16 +2737,24 @@
 SWIG_Python_TypeQuery(const char *type)
 {
   PyObject *cache = SWIG_Python_TypeCache();
-  PyObject *key = PyString_FromString(type); 
+  PyObject *key = SWIG_Python_str_FromChar(type); 
   PyObject *obj = PyDict_GetItem(cache, key);
   swig_type_info *descriptor;
   if (obj) {
+#ifdef SWIGPY_USE_CAPSULE
+    descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, NULL);
+#else
     descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj);
+#endif
   } else {
     swig_module_info *swig_module = SWIG_Python_GetModule();
     descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type);
     if (descriptor) {
+#ifdef SWIGPY_USE_CAPSULE
+      obj = PyCapsule_New((void*) descriptor, NULL, NULL);
+#else
       obj = PyCObject_FromVoidPtr(descriptor, NULL);
+#endif
       PyDict_SetItem(cache, key, obj);
       Py_DECREF(obj);
     }
@@ -2388,21 +2772,23 @@
 
 SWIGRUNTIME int
 SWIG_Python_AddErrMesg(const char* mesg, int infront)
-{
+{  
   if (PyErr_Occurred()) {
     PyObject *type = 0;
     PyObject *value = 0;
     PyObject *traceback = 0;
     PyErr_Fetch(&type, &value, &traceback);
     if (value) {
+      char *tmp;
       PyObject *old_str = PyObject_Str(value);
       Py_XINCREF(type);
       PyErr_Clear();
       if (infront) {
-	PyErr_Format(type, "%s %s", mesg, PyString_AsString(old_str));
+	PyErr_Format(type, "%s %s", mesg, tmp = SWIG_Python_str_AsChar(old_str));
       } else {
-	PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
+	PyErr_Format(type, "%s %s", tmp = SWIG_Python_str_AsChar(old_str), mesg);
       }
+      SWIG_Python_str_DelForPy3(tmp);
       Py_DECREF(old_str);
     }
     return 1;
@@ -2425,9 +2811,9 @@
 }
 
 SWIGRUNTIMEINLINE const char *
-PySwigObject_GetDesc(PyObject *self)
+SwigPyObject_GetDesc(PyObject *self)
 {
-  PySwigObject *v = (PySwigObject *)self;
+  SwigPyObject *v = (SwigPyObject *)self;
   swig_type_info *ty = v ? v->ty : 0;
   return ty ? ty->str : (char*)"";
 }
@@ -2437,10 +2823,10 @@
 {
   if (type) {
 #if defined(SWIG_COBJECT_TYPES)
-    if (obj && PySwigObject_Check(obj)) {
-      const char *otype = (const char *) PySwigObject_GetDesc(obj);
+    if (obj && SwigPyObject_Check(obj)) {
+      const char *otype = (const char *) SwigPyObject_GetDesc(obj);
       if (otype) {
-	PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'PySwigObject(%s)' is received",
+	PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'SwigPyObject(%s)' is received",
 		     type, otype);
 	return;
       }
@@ -2450,10 +2836,11 @@
       const char *otype = (obj ? obj->ob_type->tp_name : 0); 
       if (otype) {
 	PyObject *str = PyObject_Str(obj);
-	const char *cstr = str ? PyString_AsString(str) : 0;
+	const char *cstr = str ? SWIG_Python_str_AsChar(str) : 0;
 	if (cstr) {
 	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received",
 		       type, otype, cstr);
+          SWIG_Python_str_DelForPy3(cstr);
 	} else {
 	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received",
 		       type, otype);
@@ -2471,23 +2858,74 @@
 
 /* Convert a pointer value, signal an exception on a type mismatch */
 SWIGRUNTIME void *
-SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) {
+SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int SWIGUNUSEDPARM(argnum), int flags) {
   void *result;
   if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
     PyErr_Clear();
-    if (flags & SWIG_POINTER_EXCEPTION) {
+#if SWIG_POINTER_EXCEPTION
+    if (flags) {
       SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
       SWIG_Python_ArgFail(argnum);
     }
+#endif
   }
   return result;
 }
 
+SWIGRUNTIME int
+SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) {
+  PyTypeObject *tp = obj->ob_type;
+  PyObject *descr;
+  PyObject *encoded_name;
+  descrsetfunc f;
+  int res;
 
-#ifdef __cplusplus
-#if 0
-{ /* cc-mode */
+#ifdef Py_USING_UNICODE
+  if (PyString_Check(name)) {
+    name = PyUnicode_Decode(PyString_AsString(name), PyString_Size(name), NULL, NULL);
+    if (!name)
+      return -1;
+  } else if (!PyUnicode_Check(name))
+#else
+  if (!PyString_Check(name))
 #endif
+  {
+    PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", name->ob_type->tp_name);
+    return -1;
+  } else {
+    Py_INCREF(name);
+  }
+
+  if (!tp->tp_dict) {
+    if (PyType_Ready(tp) < 0)
+      goto done;
+  }
+
+  res = -1;
+  descr = _PyType_Lookup(tp, name);
+  f = NULL;
+  if (descr != NULL)
+    f = descr->ob_type->tp_descr_set;
+  if (!f) {
+    if (PyString_Check(name)) {
+      encoded_name = name;
+      Py_INCREF(name);
+    } else {
+      encoded_name = PyUnicode_AsUTF8String(name);
+    }
+    PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name));
+    Py_DECREF(encoded_name);
+  } else {
+    res = f(descr, obj, value);
+  }
+  
+  done:
+  Py_DECREF(name);
+  return res;
+}
+
+
+#ifdef __cplusplus
 }
 #endif
 
@@ -2598,11 +3036,16 @@
 /*-----------------------------------------------
               @(target):= _lcms.so
   ------------------------------------------------*/
-#define SWIG_init    init_lcms
+#if PY_VERSION_HEX >= 0x03000000
+#  define SWIG_init    PyInit__lcms
+
+#else
+#  define SWIG_init    init_lcms
 
+#endif
 #define SWIG_name    "_lcms"
 
-#define SWIGVERSION 0x010336 
+#define SWIGVERSION 0x020004 
 #define SWIG_VERSION SWIGVERSION
 
 
@@ -2614,28 +3057,28 @@
 
 
 namespace swig {
-  class PyObject_ptr {
+  class SwigPtr_PyObject {
   protected:
     PyObject *_obj;
 
   public:
-    PyObject_ptr() :_obj(0)
+    SwigPtr_PyObject() :_obj(0)
     {
     }
 
-    PyObject_ptr(const PyObject_ptr& item) : _obj(item._obj)
+    SwigPtr_PyObject(const SwigPtr_PyObject& item) : _obj(item._obj)
     {
       Py_XINCREF(_obj);      
     }
     
-    PyObject_ptr(PyObject *obj, bool initial_ref = true) :_obj(obj)
+    SwigPtr_PyObject(PyObject *obj, bool initial_ref = true) :_obj(obj)
     {
       if (initial_ref) {
         Py_XINCREF(_obj);
       }
     }
     
-    PyObject_ptr & operator=(const PyObject_ptr& item) 
+    SwigPtr_PyObject & operator=(const SwigPtr_PyObject& item) 
     {
       Py_XINCREF(item._obj);
       Py_XDECREF(_obj);
@@ -2643,7 +3086,7 @@
       return *this;      
     }
     
-    ~PyObject_ptr() 
+    ~SwigPtr_PyObject() 
     {
       Py_XDECREF(_obj);
     }
@@ -2662,10 +3105,10 @@
 
 
 namespace swig {
-  struct PyObject_var : PyObject_ptr {
-    PyObject_var(PyObject* obj = 0) : PyObject_ptr(obj, false) { }
+  struct SwigVar_PyObject : SwigPtr_PyObject {
+    SwigVar_PyObject(PyObject* obj = 0) : SwigPtr_PyObject(obj, false) { }
     
-    PyObject_var & operator = (PyObject* obj)
+    SwigVar_PyObject & operator = (PyObject* obj)
     {
       Py_XDECREF(_obj);
       _obj = obj;
@@ -2749,9 +3192,13 @@
     if (size > INT_MAX) {
       swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
       return pchar_descriptor ? 
-	SWIG_NewPointerObj(const_cast< char * >(carray), pchar_descriptor, 0) : SWIG_Py_Void();
+	SWIG_InternalNewPointerObj(const_cast< char * >(carray), pchar_descriptor, 0) : SWIG_Py_Void();
     } else {
+#if PY_VERSION_HEX >= 0x03000000
+      return PyUnicode_FromStringAndSize(carray, static_cast< int >(size));
+#else
       return PyString_FromStringAndSize(carray, static_cast< int >(size));
+#endif
     }
   } else {
     return SWIG_Py_Void();
@@ -2956,10 +3403,28 @@
 SWIGINTERN int
 SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
 {
-  if (PyString_Check(obj)) {
+#if PY_VERSION_HEX>=0x03000000
+  if (PyUnicode_Check(obj))
+#else  
+  if (PyString_Check(obj))
+#endif
+  {
     char *cstr; Py_ssize_t len;
+#if PY_VERSION_HEX>=0x03000000
+    if (!alloc && cptr) {
+        /* We can't allow converting without allocation, since the internal
+           representation of string in Python 3 is UCS-2/UCS-4 but we require
+           a UTF-8 representation.
+           TODO(bhy) More detailed explanation */
+        return SWIG_RuntimeError;
+    }
+    obj = PyUnicode_AsUTF8String(obj);
+    PyBytes_AsStringAndSize(obj, &cstr, &len);
+    if(alloc) *alloc = SWIG_NEWOBJ;
+#else
     PyString_AsStringAndSize(obj, &cstr, &len);
-    if (cptr)  {
+#endif
+    if (cptr) {
       if (alloc) {
 	/* 
 	   In python the user should not be able to modify the inner
@@ -2984,10 +3449,16 @@
 	  *alloc = SWIG_OLDOBJ;
 	}
       } else {
-	*cptr = PyString_AsString(obj);
+        #if PY_VERSION_HEX>=0x03000000
+        assert(0); /* Should never reach here in Python 3 */
+        #endif
+	*cptr = SWIG_Python_str_AsChar(obj);
       }
     }
     if (psize) *psize = len + 1;
+#if PY_VERSION_HEX>=0x03000000
+    Py_XDECREF(obj);
+#endif
     return SWIG_OK;
   } else {
     swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
@@ -4011,8 +4482,8 @@
   int ii;
   
   if (!PyTuple_Check(args)) SWIG_fail;
-  argc = (int)PyObject_Length(args);
-  for (ii = 0; (ii < argc) && (ii < 1); ii++) {
+  argc = args ? (int)PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 1) && (ii < argc); ii++) {
     argv[ii] = PyTuple_GET_ITEM(args,ii);
   }
   if (argc == 0) {
@@ -4028,11 +4499,11 @@
   }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_IT8'.\n"
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_IT8'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    IT8(char const *)\n"
-    "    IT8()\n");
-  return NULL;
+    "    IT8::IT8(char const *)\n"
+    "    IT8::IT8()\n");
+  return 0;
 }
 
 
@@ -4401,8 +4872,8 @@
   int ii;
   
   if (!PyTuple_Check(args)) SWIG_fail;
-  argc = (int)PyObject_Length(args);
-  for (ii = 0; (ii < argc) && (ii < 3); ii++) {
+  argc = args ? (int)PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 3) && (ii < argc); ii++) {
     argv[ii] = PyTuple_GET_ITEM(args,ii);
   }
   if (argc == 3) {
@@ -4443,11 +4914,11 @@
   }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'IT8_setProperty'.\n"
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IT8_setProperty'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    setProperty(IT8 *,char const *,char const *)\n"
-    "    setProperty(IT8 *,char const *,double)\n");
-  return NULL;
+    "    IT8::setProperty(char const *,char const *)\n"
+    "    IT8::setProperty(char const *,double)\n");
+  return 0;
 }
 
 
@@ -4730,8 +5201,8 @@
   int ii;
   
   if (!PyTuple_Check(args)) SWIG_fail;
-  argc = (int)PyObject_Length(args);
-  for (ii = 0; (ii < argc) && (ii < 3); ii++) {
+  argc = args ? (int)PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 3) && (ii < argc); ii++) {
     argv[ii] = PyTuple_GET_ITEM(args,ii);
   }
   if (argc == 3) {
@@ -4774,11 +5245,11 @@
   }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'IT8_getData'.\n"
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IT8_getData'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    getData(IT8 *,int,int)\n"
-    "    getData(IT8 *,char const *,char const *)\n");
-  return NULL;
+    "    IT8::getData(int,int)\n"
+    "    IT8::getData(char const *,char const *)\n");
+  return 0;
 }
 
 
@@ -4884,8 +5355,8 @@
   int ii;
   
   if (!PyTuple_Check(args)) SWIG_fail;
-  argc = (int)PyObject_Length(args);
-  for (ii = 0; (ii < argc) && (ii < 3); ii++) {
+  argc = args ? (int)PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 3) && (ii < argc); ii++) {
     argv[ii] = PyTuple_GET_ITEM(args,ii);
   }
   if (argc == 3) {
@@ -4928,11 +5399,11 @@
   }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'IT8_getDataAsDbl'.\n"
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IT8_getDataAsDbl'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    getDataAsDbl(IT8 *,int,int)\n"
-    "    getDataAsDbl(IT8 *,char const *,char const *)\n");
-  return NULL;
+    "    IT8::getDataAsDbl(int,int)\n"
+    "    IT8::getDataAsDbl(char const *,char const *)\n");
+  return 0;
 }
 
 
@@ -5176,8 +5647,8 @@
   int ii;
   
   if (!PyTuple_Check(args)) SWIG_fail;
-  argc = (int)PyObject_Length(args);
-  for (ii = 0; (ii < argc) && (ii < 4); ii++) {
+  argc = args ? (int)PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 4) && (ii < argc); ii++) {
     argv[ii] = PyTuple_GET_ITEM(args,ii);
   }
   if (argc == 4) {
@@ -5278,13 +5749,13 @@
   }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'IT8_setData'.\n"
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IT8_setData'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    setData(IT8 *,int,int,char const *)\n"
-    "    setData(IT8 *,int,int,double)\n"
-    "    setData(IT8 *,char const *,char const *,char const *)\n"
-    "    setData(IT8 *,char const *,char const *,double)\n");
-  return NULL;
+    "    IT8::setData(int,int,char const *)\n"
+    "    IT8::setData(int,int,double)\n"
+    "    IT8::setData(char const *,char const *,char const *)\n"
+    "    IT8::setData(char const *,char const *,double)\n");
+  return 0;
 }
 
 
@@ -5624,8 +6095,8 @@
   int ii;
   
   if (!PyTuple_Check(args)) SWIG_fail;
-  argc = (int)PyObject_Length(args);
-  for (ii = 0; (ii < argc) && (ii < 4); ii++) {
+  argc = args ? (int)PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 4) && (ii < argc); ii++) {
     argv[ii] = PyTuple_GET_ITEM(args,ii);
   }
   if (argc == 2) {
@@ -5681,12 +6152,12 @@
   }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'IT8_setTableByLabel'.\n"
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'IT8_setTableByLabel'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    setTableByLabel(IT8 *,char const *,char const *,char const *)\n"
-    "    setTableByLabel(IT8 *,char const *,char const *)\n"
-    "    setTableByLabel(IT8 *,char const *)\n");
-  return NULL;
+    "    IT8::setTableByLabel(char const *,char const *,char const *)\n"
+    "    IT8::setTableByLabel(char const *,char const *)\n"
+    "    IT8::setTableByLabel(char const *)\n");
+  return 0;
 }
 
 
@@ -7750,8 +8221,8 @@
   int ii;
   
   if (!PyTuple_Check(args)) SWIG_fail;
-  argc = (int)PyObject_Length(args);
-  for (ii = 0; (ii < argc) && (ii < 2); ii++) {
+  argc = args ? (int)PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 2) && (ii < argc); ii++) {
     argv[ii] = PyTuple_GET_ITEM(args,ii);
   }
   if (argc == 1) {
@@ -7782,11 +8253,11 @@
   }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_GAMMATABLE'.\n"
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_GAMMATABLE'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    GAMMATABLE(double,int)\n"
-    "    GAMMATABLE(double)\n");
-  return NULL;
+    "    GAMMATABLE::GAMMATABLE(double,int)\n"
+    "    GAMMATABLE::GAMMATABLE(double)\n");
+  return 0;
 }
 
 
@@ -8121,8 +8592,8 @@
   int ii;
   
   if (!PyTuple_Check(args)) SWIG_fail;
-  argc = (int)PyObject_Length(args);
-  for (ii = 0; (ii < argc) && (ii < 3); ii++) {
+  argc = args ? (int)PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 3) && (ii < argc); ii++) {
     argv[ii] = PyTuple_GET_ITEM(args,ii);
   }
   if (argc == 0) {
@@ -8178,13 +8649,13 @@
   }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_VEC3'.\n"
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_VEC3'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    VEC3(double,double,double)\n"
-    "    VEC3(double,double)\n"
-    "    VEC3(double)\n"
-    "    VEC3()\n");
-  return NULL;
+    "    VEC3::VEC3(double,double,double)\n"
+    "    VEC3::VEC3(double,double)\n"
+    "    VEC3::VEC3(double)\n"
+    "    VEC3::VEC3()\n");
+  return 0;
 }
 
 
@@ -8726,8 +9197,8 @@
   int ii;
   
   if (!PyTuple_Check(args)) SWIG_fail;
-  argc = (int)PyObject_Length(args);
-  for (ii = 0; (ii < argc) && (ii < 3); ii++) {
+  argc = args ? (int)PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 3) && (ii < argc); ii++) {
     argv[ii] = PyTuple_GET_ITEM(args,ii);
   }
   if (argc == 0) {
@@ -8783,13 +9254,13 @@
   }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_cmsCIEXYZ'.\n"
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_cmsCIEXYZ'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    cmsCIEXYZ(double,double,double)\n"
-    "    cmsCIEXYZ(double,double)\n"
-    "    cmsCIEXYZ(double)\n"
-    "    cmsCIEXYZ()\n");
-  return NULL;
+    "    cmsCIEXYZ::cmsCIEXYZ(double,double,double)\n"
+    "    cmsCIEXYZ::cmsCIEXYZ(double,double)\n"
+    "    cmsCIEXYZ::cmsCIEXYZ(double)\n"
+    "    cmsCIEXYZ::cmsCIEXYZ()\n");
+  return 0;
 }
 
 
@@ -9141,8 +9612,8 @@
   int ii;
   
   if (!PyTuple_Check(args)) SWIG_fail;
-  argc = (int)PyObject_Length(args);
-  for (ii = 0; (ii < argc) && (ii < 3); ii++) {
+  argc = args ? (int)PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 3) && (ii < argc); ii++) {
     argv[ii] = PyTuple_GET_ITEM(args,ii);
   }
   if (argc == 0) {
@@ -9198,13 +9669,13 @@
   }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_cmsCIExyY'.\n"
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_cmsCIExyY'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    cmsCIExyY(double,double,double)\n"
-    "    cmsCIExyY(double,double)\n"
-    "    cmsCIExyY(double)\n"
-    "    cmsCIExyY()\n");
-  return NULL;
+    "    cmsCIExyY::cmsCIExyY(double,double,double)\n"
+    "    cmsCIExyY::cmsCIExyY(double,double)\n"
+    "    cmsCIExyY::cmsCIExyY(double)\n"
+    "    cmsCIExyY::cmsCIExyY()\n");
+  return 0;
 }
 
 
@@ -9556,8 +10027,8 @@
   int ii;
   
   if (!PyTuple_Check(args)) SWIG_fail;
-  argc = (int)PyObject_Length(args);
-  for (ii = 0; (ii < argc) && (ii < 3); ii++) {
+  argc = args ? (int)PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 3) && (ii < argc); ii++) {
     argv[ii] = PyTuple_GET_ITEM(args,ii);
   }
   if (argc == 0) {
@@ -9613,13 +10084,13 @@
   }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_cmsCIELab'.\n"
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_cmsCIELab'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    cmsCIELab(double,double,double)\n"
-    "    cmsCIELab(double,double)\n"
-    "    cmsCIELab(double)\n"
-    "    cmsCIELab()\n");
-  return NULL;
+    "    cmsCIELab::cmsCIELab(double,double,double)\n"
+    "    cmsCIELab::cmsCIELab(double,double)\n"
+    "    cmsCIELab::cmsCIELab(double)\n"
+    "    cmsCIELab::cmsCIELab()\n");
+  return 0;
 }
 
 
@@ -10007,8 +10478,8 @@
   int ii;
   
   if (!PyTuple_Check(args)) SWIG_fail;
-  argc = (int)PyObject_Length(args);
-  for (ii = 0; (ii < argc) && (ii < 3); ii++) {
+  argc = args ? (int)PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 3) && (ii < argc); ii++) {
     argv[ii] = PyTuple_GET_ITEM(args,ii);
   }
   if (argc == 0) {
@@ -10064,13 +10535,13 @@
   }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_cmsCIELCh'.\n"
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_cmsCIELCh'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    cmsCIELCh(double,double,double)\n"
-    "    cmsCIELCh(double,double)\n"
-    "    cmsCIELCh(double)\n"
-    "    cmsCIELCh()\n");
-  return NULL;
+    "    cmsCIELCh::cmsCIELCh(double,double,double)\n"
+    "    cmsCIELCh::cmsCIELCh(double,double)\n"
+    "    cmsCIELCh::cmsCIELCh(double)\n"
+    "    cmsCIELCh::cmsCIELCh()\n");
+  return 0;
 }
 
 
@@ -10422,8 +10893,8 @@
   int ii;
   
   if (!PyTuple_Check(args)) SWIG_fail;
-  argc = (int)PyObject_Length(args);
-  for (ii = 0; (ii < argc) && (ii < 3); ii++) {
+  argc = args ? (int)PyObject_Length(args) : 0;
+  for (ii = 0; (ii < 3) && (ii < argc); ii++) {
     argv[ii] = PyTuple_GET_ITEM(args,ii);
   }
   if (argc == 0) {
@@ -10479,13 +10950,13 @@
   }
   
 fail:
-  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_cmsJCh'.\n"
+  SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number or type of arguments for overloaded function 'new_cmsJCh'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    cmsJCh(double,double,double)\n"
-    "    cmsJCh(double,double)\n"
-    "    cmsJCh(double)\n"
-    "    cmsJCh()\n");
-  return NULL;
+    "    cmsJCh::cmsJCh(double,double,double)\n"
+    "    cmsJCh::cmsJCh(double,double)\n"
+    "    cmsJCh::cmsJCh(double)\n"
+    "    cmsJCh::cmsJCh()\n");
+  return 0;
 }
 
 
@@ -32009,6 +32480,7 @@
 }
 
 static PyMethodDef SwigMethods[] = {
+	 { (char *)"SWIG_PyInstanceMethod_New", (PyCFunction)SWIG_PyInstanceMethod_New, METH_O, NULL},
 	 { (char *)"COLORW_w_set", _wrap_COLORW_w_set, METH_VARARGS, NULL},
 	 { (char *)"COLORW_w_get", _wrap_COLORW_w_get, METH_VARARGS, NULL},
 	 { (char *)"new_COLORW", _wrap_new_COLORW, METH_VARARGS, NULL},
@@ -33474,26 +33946,58 @@
   
   SWIGINTERN PyObject *
   swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) {
+#if PY_VERSION_HEX >= 0x03000000
+    return PyUnicode_InternFromString("<Swig global variables>");
+#else
     return PyString_FromString("<Swig global variables>");
+#endif
   }
   
   SWIGINTERN PyObject *
   swig_varlink_str(swig_varlinkobject *v) {
+#if PY_VERSION_HEX >= 0x03000000
+    PyObject *str = PyUnicode_InternFromString("(");
+    PyObject *tail;
+    PyObject *joined;
+    swig_globalvar *var;
+    for (var = v->vars; var; var=var->next) {
+      tail = PyUnicode_FromString(var->name);
+      joined = PyUnicode_Concat(str, tail);
+      Py_DecRef(str);
+      Py_DecRef(tail);
+      str = joined;
+      if (var->next) {
+        tail = PyUnicode_InternFromString(", ");
+        joined = PyUnicode_Concat(str, tail);
+        Py_DecRef(str);
+        Py_DecRef(tail);
+        str = joined;
+      }
+    }
+    tail = PyUnicode_InternFromString(")");
+    joined = PyUnicode_Concat(str, tail);
+    Py_DecRef(str);
+    Py_DecRef(tail);
+    str = joined;
+#else
     PyObject *str = PyString_FromString("(");
-    swig_globalvar  *var;
+    swig_globalvar *var;
     for (var = v->vars; var; var=var->next) {
       PyString_ConcatAndDel(&str,PyString_FromString(var->name));
       if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", "));
     }
     PyString_ConcatAndDel(&str,PyString_FromString(")"));
+#endif
     return str;
   }
   
   SWIGINTERN int
   swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) {
+    char *tmp;
     PyObject *str = swig_varlink_str(v);
     fprintf(fp,"Swig global variables ");
-    fprintf(fp,"%s\n", PyString_AsString(str));
+    fprintf(fp,"%s\n", tmp = SWIG_Python_str_AsChar(str));
+    SWIG_Python_str_DelForPy3(tmp);
     Py_DECREF(str);
     return 0;
   }
@@ -33547,19 +34051,23 @@
   swig_varlink_type(void) {
     static char varlink__doc__[] = "Swig var link object";
     static PyTypeObject varlink_type;
-    static int type_init = 0;  
+    static int type_init = 0;
     if (!type_init) {
-      const PyTypeObject tmp
-      = {
+      const PyTypeObject tmp = {
+        /* PyObject header changed in Python 3 */
+#if PY_VERSION_HEX >= 0x03000000
+        PyVarObject_HEAD_INIT(NULL, 0)
+#else
         PyObject_HEAD_INIT(NULL)
-        0,                                  /* Number of items in variable part (ob_size) */
-        (char *)"swigvarlink",              /* Type name (tp_name) */
-        sizeof(swig_varlinkobject),         /* Basic size (tp_basicsize) */
-        0,                                  /* Itemsize (tp_itemsize) */
-        (destructor) swig_varlink_dealloc,   /* Deallocator (tp_dealloc) */ 
-        (printfunc) swig_varlink_print,     /* Print (tp_print) */
-        (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
-        (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
+        0,                                  /* ob_size */
+#endif
+        (char *)"swigvarlink",              /* tp_name */
+        sizeof(swig_varlinkobject),         /* tp_basicsize */
+        0,                                  /* tp_itemsize */
+        (destructor) swig_varlink_dealloc,  /* tp_dealloc */
+        (printfunc) swig_varlink_print,     /* tp_print */
+        (getattrfunc) swig_varlink_getattr, /* tp_getattr */
+        (setattrfunc) swig_varlink_setattr, /* tp_setattr */
         0,                                  /* tp_compare */
         (reprfunc) swig_varlink_repr,       /* tp_repr */
         0,                                  /* tp_as_number */
@@ -33567,7 +34075,7 @@
         0,                                  /* tp_as_mapping */
         0,                                  /* tp_hash */
         0,                                  /* tp_call */
-        (reprfunc)swig_varlink_str,        /* tp_str */
+        (reprfunc) swig_varlink_str,        /* tp_str */
         0,                                  /* tp_getattro */
         0,                                  /* tp_setattro */
         0,                                  /* tp_as_buffer */
@@ -33583,13 +34091,21 @@
 #if PY_VERSION_HEX >= 0x02030000
         0,                                  /* tp_del */
 #endif
+#if PY_VERSION_HEX >= 0x02060000
+        0,                                  /* tp_version */
+#endif
 #ifdef COUNT_ALLOCS
         0,0,0,0                             /* tp_alloc -> tp_next */
 #endif
       };
       varlink_type = tmp;
-      varlink_type.ob_type = &PyType_Type;
       type_init = 1;
+#if PY_VERSION_HEX < 0x02020000
+      varlink_type.ob_type = &PyType_Type;
+#else
+      if (PyType_Ready(&varlink_type) < 0)
+      return NULL;
+#endif
     }
     return &varlink_type;
   }
@@ -33640,7 +34156,7 @@
     for (i = 0; constants[i].type; ++i) {
       switch(constants[i].type) {
       case SWIG_PY_POINTER:
-        obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
+        obj = SWIG_InternalNewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
         break;
       case SWIG_PY_BINARY:
         obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
@@ -33680,15 +34196,15 @@
           }
         }
         if (ci) {
-          size_t shift = (ci->ptype) - types;
-          swig_type_info *ty = types_initial[shift];
-          size_t ldoc = (c - methods[i].ml_doc);
-          size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
-          char *ndoc = (char*)malloc(ldoc + lptr + 10);
-          if (ndoc) {
-            char *buff = ndoc;
-            void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
-            if (ptr) {
+          void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
+          if (ptr) {
+            size_t shift = (ci->ptype) - types;
+            swig_type_info *ty = types_initial[shift];
+            size_t ldoc = (c - methods[i].ml_doc);
+            size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
+            char *ndoc = (char*)malloc(ldoc + lptr + 10);
+            if (ndoc) {
+              char *buff = ndoc;
               strncpy(buff, methods[i].ml_doc, ldoc);
               buff += ldoc;
               strncpy(buff, "swig_ptr: ", 10);
@@ -33713,18 +34229,130 @@
 #ifdef __cplusplus
 extern "C"
 #endif
-SWIGEXPORT void SWIG_init(void) {
-  PyObject *m, *d;
+
+SWIGEXPORT 
+#if PY_VERSION_HEX >= 0x03000000
+PyObject*
+#else
+void
+#endif
+SWIG_init(void) {
+  PyObject *m, *d, *md;
+#if PY_VERSION_HEX >= 0x03000000
+  static struct PyModuleDef SWIG_module = {
+# if PY_VERSION_HEX >= 0x03020000
+    PyModuleDef_HEAD_INIT,
+# else
+    {
+      PyObject_HEAD_INIT(NULL)
+      NULL, /* m_init */
+      0,    /* m_index */
+      NULL, /* m_copy */
+    },
+# endif
+    (char *) SWIG_name,
+    NULL,
+    -1,
+    SwigMethods,
+    NULL,
+    NULL,
+    NULL,
+    NULL
+  };
+#endif
+  
+#if defined(SWIGPYTHON_BUILTIN)
+  static SwigPyClientData SwigPyObject_clientdata = {
+    0, 0, 0, 0, 0, 0, 0
+  };
+  static PyGetSetDef this_getset_def = {
+    (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL
+  };
+  static SwigPyGetSet thisown_getset_closure = {
+    (PyCFunction) SwigPyObject_own,
+    (PyCFunction) SwigPyObject_own
+  };
+  static PyGetSetDef thisown_getset_def = {
+    (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure
+  };
+  PyObject *metatype_args;
+  PyTypeObject *builtin_pytype;
+  int builtin_base_count;
+  swig_type_info *builtin_basetype;
+  PyObject *tuple;
+  PyGetSetDescrObject *static_getset;
+  PyTypeObject *metatype;
+  SwigPyClientData *cd;
+  PyObject *public_interface, *public_symbol;
+  PyObject *this_descr;
+  PyObject *thisown_descr;
+  int i;
+  
+  (void)builtin_pytype;
+  (void)builtin_base_count;
+  (void)builtin_basetype;
+  (void)tuple;
+  (void)static_getset;
+  
+  /* metatype is used to implement static member variables. */
+  metatype_args = Py_BuildValue("(s(O){})", "SwigPyObjectType", &PyType_Type);
+  assert(metatype_args);
+  metatype = (PyTypeObject *) PyType_Type.tp_call((PyObject *) &PyType_Type, metatype_args, NULL);
+  assert(metatype);
+  Py_DECREF(metatype_args);
+  metatype->tp_setattro = (setattrofunc) &SwigPyObjectType_setattro;
+  assert(PyType_Ready(metatype) >= 0);
+#endif
   
   /* Fix SwigMethods to carry the callback ptrs when needed */
   SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial);
   
+#if PY_VERSION_HEX >= 0x03000000
+  m = PyModule_Create(&SWIG_module);
+#else
   m = Py_InitModule((char *) SWIG_name, SwigMethods);
-  d = PyModule_GetDict(m);
+#endif
+  md = d = PyModule_GetDict(m);
   
   SWIG_InitializeModule(0);
-  SWIG_InstallConstants(d,swig_const_table);
   
+#ifdef SWIGPYTHON_BUILTIN
+  SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject");
+  assert(SwigPyObject_stype);
+  cd = (SwigPyClientData*) SwigPyObject_stype->clientdata;
+  if (!cd) {
+    SwigPyObject_stype->clientdata = &SwigPyObject_clientdata;
+    SwigPyObject_clientdata.pytype = SwigPyObject_TypeOnce();
+  } else if (SwigPyObject_TypeOnce()->tp_basicsize != cd->pytype->tp_basicsize) {
+    PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules.");
+# if PY_VERSION_HEX >= 0x03000000
+    return NULL;
+# else
+    return;
+# endif
+  }
+  
+  /* All objects have a 'this' attribute */
+  this_descr = PyDescr_NewGetSet(SwigPyObject_type(), &this_getset_def);
+  (void)this_descr;
+  
+  /* All objects have a 'thisown' attribute */
+  thisown_descr = PyDescr_NewGetSet(SwigPyObject_type(), &thisown_getset_def);
+  (void)thisown_descr;
+  
+  public_interface = PyList_New(0);
+  public_symbol = 0;
+  (void)public_symbol;
+  
+  PyDict_SetItemString(md, "__all__", public_interface);
+  Py_DECREF(public_interface);
+  for (i = 0; SwigMethods[i].ml_name != NULL; ++i)
+  SwigPyBuiltin_AddPublicSymbol(public_interface, SwigMethods[i].ml_name);
+  for (i = 0; swig_const_table[i].name != 0; ++i)
+  SwigPyBuiltin_AddPublicSymbol(public_interface, swig_const_table[i].name);
+#endif
+  
+  SWIG_InstallConstants(d,swig_const_table);
   
   
   
@@ -33734,7 +34362,7 @@
   
   
   SWIG_Python_SetConstant(d, "NON_WINDOWS",SWIG_From_int(static_cast< int >(1)));
-  SWIG_Python_SetConstant(d, "LCMS_VERSION",SWIG_From_int(static_cast< int >(118)));
+  SWIG_Python_SetConstant(d, "LCMS_VERSION",SWIG_From_int(static_cast< int >(119)));
   SWIG_Python_SetConstant(d, "MAXCHANNELS",SWIG_From_int(static_cast< int >(16)));
   SWIG_Python_SetConstant(d, "PT_ANY",SWIG_From_int(static_cast< int >(0)));
   SWIG_Python_SetConstant(d, "PT_GRAY",SWIG_From_int(static_cast< int >(3)));
@@ -33966,5 +34594,10 @@
   SWIG_Python_SetConstant(d, "XYZRel",SWIG_From_int(static_cast< int >(0)));
   SWIG_Python_SetConstant(d, "LabRel",SWIG_From_int(static_cast< int >(1)));
   SWIG_Python_SetConstant(d, "LCMS_BPFLAGS_D50_ADAPTED",SWIG_From_int(static_cast< int >(0x0001)));
+#if PY_VERSION_HEX >= 0x03000000
+  return m;
+#else
+  return;
+#endif
 }
 
--- lcms-1.19.dfsg.orig/python/lcms.py
+++ lcms-1.19.dfsg/python/lcms.py
@@ -1,12 +1,33 @@
 # This file was automatically generated by SWIG (http://www.swig.org).
-# Version 1.3.36
+# Version 2.0.4
 #
-# Don't modify this file, modify the SWIG interface instead.
-# This file is compatible with both classic and new-style classes.
+# Do not make changes to this file unless you know what you are doing--modify
+# the SWIG interface file instead.
+
+
 
-import _lcms
-import new
-new_instancemethod = new.instancemethod
+from sys import version_info
+if version_info >= (2,6,0):
+    def swig_import_helper():
+        from os.path import dirname
+        import imp
+        fp = None
+        try:
+            fp, pathname, description = imp.find_module('_lcms', [dirname(__file__)])
+        except ImportError:
+            import _lcms
+            return _lcms
+        if fp is not None:
+            try:
+                _mod = imp.load_module('_lcms', fp, pathname, description)
+            finally:
+                fp.close()
+            return _mod
+    _lcms = swig_import_helper()
+    del swig_import_helper
+else:
+    import _lcms
+del version_info
 try:
     _swig_property = property
 except NameError:
@@ -14,12 +35,12 @@
 def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
     if (name == "thisown"): return self.this.own(value)
     if (name == "this"):
-        if type(value).__name__ == 'PySwigObject':
+        if type(value).__name__ == 'SwigPyObject':
             self.__dict__[name] = value
             return
     method = class_type.__swig_setmethods__.get(name,None)
     if method: return method(self,value)
-    if (not static) or hasattr(self,name):
+    if (not static):
         self.__dict__[name] = value
     else:
         raise AttributeError("You cannot add attributes to %s" % self)
@@ -31,21 +52,19 @@
     if (name == "thisown"): return self.this.own()
     method = class_type.__swig_getmethods__.get(name,None)
     if method: return method(self)
-    raise AttributeError,name
+    raise AttributeError(name)
 
 def _swig_repr(self):
     try: strthis = "proxy of " + self.this.__repr__()
     except: strthis = ""
     return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
 
-import types
 try:
-    _object = types.ObjectType
+    _object = object
     _newclass = 1
 except AttributeError:
     class _object : pass
     _newclass = 0
-del types
 
 
 class COLORW(_object):
@@ -56,13 +75,13 @@
     __swig_setmethods__["w"] = _lcms.COLORW_w_set
     __swig_getmethods__["w"] = _lcms.COLORW_w_get
     if _newclass:w = _swig_property(_lcms.COLORW_w_get, _lcms.COLORW_w_set)
-    def __init__(self, *args): 
-        this = _lcms.new_COLORW(*args)
+    def __init__(self): 
+        this = _lcms.new_COLORW()
         try: self.this.append(this)
         except: self.this = this
-    def __repr__(*args): return _lcms.COLORW___repr__(*args)
-    def __getitem__(*args): return _lcms.COLORW___getitem__(*args)
-    def __setitem__(*args): return _lcms.COLORW___setitem__(*args)
+    def __repr__(self): return _lcms.COLORW___repr__(self)
+    def __getitem__(self, *args): return _lcms.COLORW___getitem__(self, *args)
+    def __setitem__(self, *args): return _lcms.COLORW___setitem__(self, *args)
     __swig_destroy__ = _lcms.delete_COLORW
     __del__ = lambda self : None;
 COLORW_swigregister = _lcms.COLORW_swigregister
@@ -76,15 +95,15 @@
     __swig_setmethods__["b"] = _lcms.COLORB_b_set
     __swig_getmethods__["b"] = _lcms.COLORB_b_get
     if _newclass:b = _swig_property(_lcms.COLORB_b_get, _lcms.COLORB_b_set)
-    def __init__(self, *args): 
-        this = _lcms.new_COLORB(*args)
+    def __init__(self): 
+        this = _lcms.new_COLORB()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_COLORB
     __del__ = lambda self : None;
-    def __repr__(*args): return _lcms.COLORB___repr__(*args)
-    def __getitem__(*args): return _lcms.COLORB___getitem__(*args)
-    def __setitem__(*args): return _lcms.COLORB___setitem__(*args)
+    def __repr__(self): return _lcms.COLORB___repr__(self)
+    def __getitem__(self, *args): return _lcms.COLORB___getitem__(self, *args)
+    def __setitem__(self, *args): return _lcms.COLORB___setitem__(self, *args)
 COLORB_swigregister = _lcms.COLORB_swigregister
 COLORB_swigregister(COLORB)
 
@@ -102,29 +121,29 @@
         except: self.this = this
     __swig_destroy__ = _lcms.delete_IT8
     __del__ = lambda self : None;
-    def __repr__(*args): return _lcms.IT8___repr__(*args)
-    def saveToFile(*args): return _lcms.IT8_saveToFile(*args)
-    def tableCount(*args): return _lcms.IT8_tableCount(*args)
-    def setTable(*args): return _lcms.IT8_setTable(*args)
-    def getSheetType(*args): return _lcms.IT8_getSheetType(*args)
-    def setSheetType(*args): return _lcms.IT8_setSheetType(*args)
-    def addComment(*args): return _lcms.IT8_addComment(*args)
-    def setProperty(*args): return _lcms.IT8_setProperty(*args)
-    def setPropertyAsHex(*args): return _lcms.IT8_setPropertyAsHex(*args)
-    def setPropertyUncooked(*args): return _lcms.IT8_setPropertyUncooked(*args)
-    def getProperty(*args): return _lcms.IT8_getProperty(*args)
-    def getPropertyAsDbl(*args): return _lcms.IT8_getPropertyAsDbl(*args)
-    def getData(*args): return _lcms.IT8_getData(*args)
-    def getDataAsDbl(*args): return _lcms.IT8_getDataAsDbl(*args)
-    def setData(*args): return _lcms.IT8_setData(*args)
-    def setDataFormat(*args): return _lcms.IT8_setDataFormat(*args)
-    def getPatchName(*args): return _lcms.IT8_getPatchName(*args)
-    def getDataFormat(*args): return _lcms.IT8_getDataFormat(*args)
-    def enumDataFormat(*args): return _lcms.IT8_enumDataFormat(*args)
-    def enumProperties(*args): return _lcms.IT8_enumProperties(*args)
-    def setTableByLabel(*args): return _lcms.IT8_setTableByLabel(*args)
-    def getRow(*args): return _lcms.IT8_getRow(*args)
-    def getCol(*args): return _lcms.IT8_getCol(*args)
+    def __repr__(self): return _lcms.IT8___repr__(self)
+    def saveToFile(self, *args): return _lcms.IT8_saveToFile(self, *args)
+    def tableCount(self): return _lcms.IT8_tableCount(self)
+    def setTable(self, *args): return _lcms.IT8_setTable(self, *args)
+    def getSheetType(self): return _lcms.IT8_getSheetType(self)
+    def setSheetType(self, *args): return _lcms.IT8_setSheetType(self, *args)
+    def addComment(self, *args): return _lcms.IT8_addComment(self, *args)
+    def setProperty(self, *args): return _lcms.IT8_setProperty(self, *args)
+    def setPropertyAsHex(self, *args): return _lcms.IT8_setPropertyAsHex(self, *args)
+    def setPropertyUncooked(self, *args): return _lcms.IT8_setPropertyUncooked(self, *args)
+    def getProperty(self, *args): return _lcms.IT8_getProperty(self, *args)
+    def getPropertyAsDbl(self, *args): return _lcms.IT8_getPropertyAsDbl(self, *args)
+    def getData(self, *args): return _lcms.IT8_getData(self, *args)
+    def getDataAsDbl(self, *args): return _lcms.IT8_getDataAsDbl(self, *args)
+    def setData(self, *args): return _lcms.IT8_setData(self, *args)
+    def setDataFormat(self, *args): return _lcms.IT8_setDataFormat(self, *args)
+    def getPatchName(self, *args): return _lcms.IT8_getPatchName(self, *args)
+    def getDataFormat(self, *args): return _lcms.IT8_getDataFormat(self, *args)
+    def enumDataFormat(self): return _lcms.IT8_enumDataFormat(self)
+    def enumProperties(self): return _lcms.IT8_enumProperties(self)
+    def setTableByLabel(self, *args): return _lcms.IT8_setTableByLabel(self, *args)
+    def getRow(self, *args): return _lcms.IT8_getRow(self, *args)
+    def getCol(self, *args): return _lcms.IT8_getCol(self, *args)
 IT8_swigregister = _lcms.IT8_swigregister
 IT8_swigregister(IT8)
 
@@ -151,8 +170,8 @@
     __swig_setmethods__["pad3"] = _lcms.icCLutStruct_pad3_set
     __swig_getmethods__["pad3"] = _lcms.icCLutStruct_pad3_get
     if _newclass:pad3 = _swig_property(_lcms.icCLutStruct_pad3_get, _lcms.icCLutStruct_pad3_set)
-    def __init__(self, *args): 
-        this = _lcms.new_icCLutStruct(*args)
+    def __init__(self): 
+        this = _lcms.new_icCLutStruct()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_icCLutStruct
@@ -193,8 +212,8 @@
     __swig_setmethods__["offsetA"] = _lcms.icLutAtoB_offsetA_set
     __swig_getmethods__["offsetA"] = _lcms.icLutAtoB_offsetA_get
     if _newclass:offsetA = _swig_property(_lcms.icLutAtoB_offsetA_get, _lcms.icLutAtoB_offsetA_set)
-    def __init__(self, *args): 
-        this = _lcms.new_icLutAtoB(*args)
+    def __init__(self): 
+        this = _lcms.new_icLutAtoB()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_icLutAtoB
@@ -235,8 +254,8 @@
     __swig_setmethods__["offsetA"] = _lcms.icLutBtoA_offsetA_set
     __swig_getmethods__["offsetA"] = _lcms.icLutBtoA_offsetA_get
     if _newclass:offsetA = _swig_property(_lcms.icLutBtoA_offsetA_get, _lcms.icLutBtoA_offsetA_set)
-    def __init__(self, *args): 
-        this = _lcms.new_icLutBtoA(*args)
+    def __init__(self): 
+        this = _lcms.new_icLutBtoA()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_icLutBtoA
@@ -418,8 +437,8 @@
     __swig_setmethods__["Params"] = _lcms.LCMSGAMMAPARAMS_Params_set
     __swig_getmethods__["Params"] = _lcms.LCMSGAMMAPARAMS_Params_get
     if _newclass:Params = _swig_property(_lcms.LCMSGAMMAPARAMS_Params_get, _lcms.LCMSGAMMAPARAMS_Params_set)
-    def __init__(self, *args): 
-        this = _lcms.new_LCMSGAMMAPARAMS(*args)
+    def __init__(self): 
+        this = _lcms.new_LCMSGAMMAPARAMS()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_LCMSGAMMAPARAMS
@@ -447,9 +466,9 @@
         except: self.this = this
     __swig_destroy__ = _lcms.delete_GAMMATABLE
     __del__ = lambda self : None;
-    def __repr__(*args): return _lcms.GAMMATABLE___repr__(*args)
-    def __getitem__(*args): return _lcms.GAMMATABLE___getitem__(*args)
-    def __setitem__(*args): return _lcms.GAMMATABLE___setitem__(*args)
+    def __repr__(self): return _lcms.GAMMATABLE___repr__(self)
+    def __getitem__(self, *args): return _lcms.GAMMATABLE___getitem__(self, *args)
+    def __setitem__(self, *args): return _lcms.GAMMATABLE___setitem__(self, *args)
 GAMMATABLE_swigregister = _lcms.GAMMATABLE_swigregister
 GAMMATABLE_swigregister(GAMMATABLE)
 
@@ -461,15 +480,15 @@
     __swig_setmethods__["n"] = _lcms.VEC3_n_set
     __swig_getmethods__["n"] = _lcms.VEC3_n_get
     if _newclass:n = _swig_property(_lcms.VEC3_n_get, _lcms.VEC3_n_set)
-    def __init__(self, *args): 
-        this = _lcms.new_VEC3(*args)
+    def __init__(self, vx = 0, vy = 0, vz = 0): 
+        this = _lcms.new_VEC3(vx, vy, vz)
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_VEC3
     __del__ = lambda self : None;
-    def __getitem__(*args): return _lcms.VEC3___getitem__(*args)
-    def __setitem__(*args): return _lcms.VEC3___setitem__(*args)
-    def __repr__(*args): return _lcms.VEC3___repr__(*args)
+    def __getitem__(self, *args): return _lcms.VEC3___getitem__(self, *args)
+    def __setitem__(self, *args): return _lcms.VEC3___setitem__(self, *args)
+    def __repr__(self): return _lcms.VEC3___repr__(self)
 VEC3_swigregister = _lcms.VEC3_swigregister
 VEC3_swigregister(VEC3)
 
@@ -482,8 +501,8 @@
     __swig_setmethods__["v"] = _lcms.MAT3_v_set
     __swig_getmethods__["v"] = _lcms.MAT3_v_get
     if _newclass:v = _swig_property(_lcms.MAT3_v_get, _lcms.MAT3_v_set)
-    def __init__(self, *args): 
-        this = _lcms.new_MAT3(*args)
+    def __init__(self): 
+        this = _lcms.new_MAT3()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_MAT3
@@ -505,13 +524,13 @@
     __swig_setmethods__["Z"] = _lcms.cmsCIEXYZ_Z_set
     __swig_getmethods__["Z"] = _lcms.cmsCIEXYZ_Z_get
     if _newclass:Z = _swig_property(_lcms.cmsCIEXYZ_Z_get, _lcms.cmsCIEXYZ_Z_set)
-    def __init__(self, *args): 
-        this = _lcms.new_cmsCIEXYZ(*args)
+    def __init__(self, x = 0, y = 0, z = 0): 
+        this = _lcms.new_cmsCIEXYZ(x, y, z)
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_cmsCIEXYZ
     __del__ = lambda self : None;
-    def __repr__(*args): return _lcms.cmsCIEXYZ___repr__(*args)
+    def __repr__(self): return _lcms.cmsCIEXYZ___repr__(self)
 cmsCIEXYZ_swigregister = _lcms.cmsCIEXYZ_swigregister
 cmsCIEXYZ_swigregister(cmsCIEXYZ)
 
@@ -529,13 +548,13 @@
     __swig_setmethods__["Y"] = _lcms.cmsCIExyY_Y_set
     __swig_getmethods__["Y"] = _lcms.cmsCIExyY_Y_get
     if _newclass:Y = _swig_property(_lcms.cmsCIExyY_Y_get, _lcms.cmsCIExyY_Y_set)
-    def __init__(self, *args): 
-        this = _lcms.new_cmsCIExyY(*args)
+    def __init__(self, x = 0, y = 0, Y = 0): 
+        this = _lcms.new_cmsCIExyY(x, y, Y)
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_cmsCIExyY
     __del__ = lambda self : None;
-    def __repr__(*args): return _lcms.cmsCIExyY___repr__(*args)
+    def __repr__(self): return _lcms.cmsCIExyY___repr__(self)
 cmsCIExyY_swigregister = _lcms.cmsCIExyY_swigregister
 cmsCIExyY_swigregister(cmsCIExyY)
 
@@ -553,14 +572,14 @@
     __swig_setmethods__["b"] = _lcms.cmsCIELab_b_set
     __swig_getmethods__["b"] = _lcms.cmsCIELab_b_get
     if _newclass:b = _swig_property(_lcms.cmsCIELab_b_get, _lcms.cmsCIELab_b_set)
-    def __init__(self, *args): 
-        this = _lcms.new_cmsCIELab(*args)
+    def __init__(self, L = 0, a = 0, b = 0): 
+        this = _lcms.new_cmsCIELab(L, a, b)
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_cmsCIELab
     __del__ = lambda self : None;
-    def __repr__(*args): return _lcms.cmsCIELab___repr__(*args)
-    def __cmp__(*args): return _lcms.cmsCIELab___cmp__(*args)
+    def __repr__(self): return _lcms.cmsCIELab___repr__(self)
+    def __cmp__(self, *args): return _lcms.cmsCIELab___cmp__(self, *args)
 cmsCIELab_swigregister = _lcms.cmsCIELab_swigregister
 cmsCIELab_swigregister(cmsCIELab)
 
@@ -578,13 +597,13 @@
     __swig_setmethods__["h"] = _lcms.cmsCIELCh_h_set
     __swig_getmethods__["h"] = _lcms.cmsCIELCh_h_get
     if _newclass:h = _swig_property(_lcms.cmsCIELCh_h_get, _lcms.cmsCIELCh_h_set)
-    def __init__(self, *args): 
-        this = _lcms.new_cmsCIELCh(*args)
+    def __init__(self, L = 0, C = 0, h = 0): 
+        this = _lcms.new_cmsCIELCh(L, C, h)
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_cmsCIELCh
     __del__ = lambda self : None;
-    def __repr__(*args): return _lcms.cmsCIELCh___repr__(*args)
+    def __repr__(self): return _lcms.cmsCIELCh___repr__(self)
 cmsCIELCh_swigregister = _lcms.cmsCIELCh_swigregister
 cmsCIELCh_swigregister(cmsCIELCh)
 
@@ -602,13 +621,13 @@
     __swig_setmethods__["h"] = _lcms.cmsJCh_h_set
     __swig_getmethods__["h"] = _lcms.cmsJCh_h_get
     if _newclass:h = _swig_property(_lcms.cmsJCh_h_get, _lcms.cmsJCh_h_set)
-    def __init__(self, *args): 
-        this = _lcms.new_cmsJCh(*args)
+    def __init__(self, J = 0, C = 0, h = 0): 
+        this = _lcms.new_cmsJCh(J, C, h)
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_cmsJCh
     __del__ = lambda self : None;
-    def __repr__(*args): return _lcms.cmsJCh___repr__(*args)
+    def __repr__(self): return _lcms.cmsJCh___repr__(self)
 cmsJCh_swigregister = _lcms.cmsJCh_swigregister
 cmsJCh_swigregister(cmsJCh)
 
@@ -632,7 +651,7 @@
         except: self.this = this
     __swig_destroy__ = _lcms.delete_cmsCIEXYZTRIPLE
     __del__ = lambda self : None;
-    def __repr__(*args): return _lcms.cmsCIEXYZTRIPLE___repr__(*args)
+    def __repr__(self): return _lcms.cmsCIEXYZTRIPLE___repr__(self)
 cmsCIEXYZTRIPLE_swigregister = _lcms.cmsCIEXYZTRIPLE_swigregister
 cmsCIEXYZTRIPLE_swigregister(cmsCIEXYZTRIPLE)
 
@@ -656,7 +675,7 @@
         except: self.this = this
     __swig_destroy__ = _lcms.delete_cmsCIExyYTRIPLE
     __del__ = lambda self : None;
-    def __repr__(*args): return _lcms.cmsCIExyYTRIPLE___repr__(*args)
+    def __repr__(self): return _lcms.cmsCIExyYTRIPLE___repr__(self)
 cmsCIExyYTRIPLE_swigregister = _lcms.cmsCIExyYTRIPLE_swigregister
 cmsCIExyYTRIPLE_swigregister(cmsCIExyYTRIPLE)
 
@@ -666,35 +685,125 @@
 PERCEPTUAL_BLACK_X = _lcms.PERCEPTUAL_BLACK_X
 PERCEPTUAL_BLACK_Y = _lcms.PERCEPTUAL_BLACK_Y
 PERCEPTUAL_BLACK_Z = _lcms.PERCEPTUAL_BLACK_Z
+
+def cmsD50_XYZ():
+  return _lcms.cmsD50_XYZ()
 cmsD50_XYZ = _lcms.cmsD50_XYZ
+
+def cmsD50_xyY():
+  return _lcms.cmsD50_xyY()
 cmsD50_xyY = _lcms.cmsD50_xyY
+
+def cmsOpenProfileFromFile(*args):
+  return _lcms.cmsOpenProfileFromFile(*args)
 cmsOpenProfileFromFile = _lcms.cmsOpenProfileFromFile
+
+def cmsOpenProfileFromMem(*args):
+  return _lcms.cmsOpenProfileFromMem(*args)
 cmsOpenProfileFromMem = _lcms.cmsOpenProfileFromMem
+
+def cmsCloseProfile(*args):
+  return _lcms.cmsCloseProfile(*args)
 cmsCloseProfile = _lcms.cmsCloseProfile
+
+def cmsCreateRGBProfile(*args):
+  return _lcms.cmsCreateRGBProfile(*args)
 cmsCreateRGBProfile = _lcms.cmsCreateRGBProfile
+
+def cmsCreateGrayProfile(*args):
+  return _lcms.cmsCreateGrayProfile(*args)
 cmsCreateGrayProfile = _lcms.cmsCreateGrayProfile
+
+def cmsCreateLinearizationDeviceLink(*args):
+  return _lcms.cmsCreateLinearizationDeviceLink(*args)
 cmsCreateLinearizationDeviceLink = _lcms.cmsCreateLinearizationDeviceLink
+
+def cmsCreateInkLimitingDeviceLink(*args):
+  return _lcms.cmsCreateInkLimitingDeviceLink(*args)
 cmsCreateInkLimitingDeviceLink = _lcms.cmsCreateInkLimitingDeviceLink
+
+def cmsCreateLabProfile(*args):
+  return _lcms.cmsCreateLabProfile(*args)
 cmsCreateLabProfile = _lcms.cmsCreateLabProfile
+
+def cmsCreateLab4Profile(*args):
+  return _lcms.cmsCreateLab4Profile(*args)
 cmsCreateLab4Profile = _lcms.cmsCreateLab4Profile
+
+def cmsCreateXYZProfile():
+  return _lcms.cmsCreateXYZProfile()
 cmsCreateXYZProfile = _lcms.cmsCreateXYZProfile
+
+def cmsCreate_sRGBProfile():
+  return _lcms.cmsCreate_sRGBProfile()
 cmsCreate_sRGBProfile = _lcms.cmsCreate_sRGBProfile
+
+def cmsCreateBCHSWabstractProfile(*args):
+  return _lcms.cmsCreateBCHSWabstractProfile(*args)
 cmsCreateBCHSWabstractProfile = _lcms.cmsCreateBCHSWabstractProfile
+
+def cmsCreateNULLProfile():
+  return _lcms.cmsCreateNULLProfile()
 cmsCreateNULLProfile = _lcms.cmsCreateNULLProfile
+
+def cmsXYZ2xyY(*args):
+  return _lcms.cmsXYZ2xyY(*args)
 cmsXYZ2xyY = _lcms.cmsXYZ2xyY
+
+def cmsxyY2XYZ(*args):
+  return _lcms.cmsxyY2XYZ(*args)
 cmsxyY2XYZ = _lcms.cmsxyY2XYZ
+
+def cmsXYZ2Lab(*args):
+  return _lcms.cmsXYZ2Lab(*args)
 cmsXYZ2Lab = _lcms.cmsXYZ2Lab
+
+def cmsLab2XYZ(*args):
+  return _lcms.cmsLab2XYZ(*args)
 cmsLab2XYZ = _lcms.cmsLab2XYZ
+
+def cmsLab2LCh(*args):
+  return _lcms.cmsLab2LCh(*args)
 cmsLab2LCh = _lcms.cmsLab2LCh
+
+def cmsLCh2Lab(*args):
+  return _lcms.cmsLCh2Lab(*args)
 cmsLCh2Lab = _lcms.cmsLCh2Lab
+
+def cmsDeltaE(*args):
+  return _lcms.cmsDeltaE(*args)
 cmsDeltaE = _lcms.cmsDeltaE
+
+def cmsCIE94DeltaE(*args):
+  return _lcms.cmsCIE94DeltaE(*args)
 cmsCIE94DeltaE = _lcms.cmsCIE94DeltaE
+
+def cmsBFDdeltaE(*args):
+  return _lcms.cmsBFDdeltaE(*args)
 cmsBFDdeltaE = _lcms.cmsBFDdeltaE
+
+def cmsCMCdeltaE(*args):
+  return _lcms.cmsCMCdeltaE(*args)
 cmsCMCdeltaE = _lcms.cmsCMCdeltaE
+
+def cmsCIE2000DeltaE(*args):
+  return _lcms.cmsCIE2000DeltaE(*args)
 cmsCIE2000DeltaE = _lcms.cmsCIE2000DeltaE
+
+def cmsClampLab(*args):
+  return _lcms.cmsClampLab(*args)
 cmsClampLab = _lcms.cmsClampLab
+
+def cmsWhitePointFromTemp(*args):
+  return _lcms.cmsWhitePointFromTemp(*args)
 cmsWhitePointFromTemp = _lcms.cmsWhitePointFromTemp
+
+def cmsAdaptToIlluminant(*args):
+  return _lcms.cmsAdaptToIlluminant(*args)
 cmsAdaptToIlluminant = _lcms.cmsAdaptToIlluminant
+
+def cmsBuildRGB2XYZtransferMatrix(*args):
+  return _lcms.cmsBuildRGB2XYZtransferMatrix(*args)
 cmsBuildRGB2XYZtransferMatrix = _lcms.cmsBuildRGB2XYZtransferMatrix
 AVG_SURROUND_4 = _lcms.AVG_SURROUND_4
 AVG_SURROUND = _lcms.AVG_SURROUND
@@ -729,52 +838,181 @@
         except: self.this = this
     __swig_destroy__ = _lcms.delete_cmsViewingConditions
     __del__ = lambda self : None;
-    def __repr__(*args): return _lcms.cmsViewingConditions___repr__(*args)
+    def __repr__(self): return _lcms.cmsViewingConditions___repr__(self)
 cmsViewingConditions_swigregister = _lcms.cmsViewingConditions_swigregister
 cmsViewingConditions_swigregister(cmsViewingConditions)
 
+
+def cmsCIECAM97sInit(*args):
+  return _lcms.cmsCIECAM97sInit(*args)
 cmsCIECAM97sInit = _lcms.cmsCIECAM97sInit
+
+def cmsCIECAM97sDone(*args):
+  return _lcms.cmsCIECAM97sDone(*args)
 cmsCIECAM97sDone = _lcms.cmsCIECAM97sDone
+
+def cmsCIECAM97sForward(*args):
+  return _lcms.cmsCIECAM97sForward(*args)
 cmsCIECAM97sForward = _lcms.cmsCIECAM97sForward
+
+def cmsCIECAM97sReverse(*args):
+  return _lcms.cmsCIECAM97sReverse(*args)
 cmsCIECAM97sReverse = _lcms.cmsCIECAM97sReverse
+
+def cmsCIECAM02Init(*args):
+  return _lcms.cmsCIECAM02Init(*args)
 cmsCIECAM02Init = _lcms.cmsCIECAM02Init
+
+def cmsCIECAM02Done(*args):
+  return _lcms.cmsCIECAM02Done(*args)
 cmsCIECAM02Done = _lcms.cmsCIECAM02Done
+
+def cmsCIECAM02Forward(*args):
+  return _lcms.cmsCIECAM02Forward(*args)
 cmsCIECAM02Forward = _lcms.cmsCIECAM02Forward
+
+def cmsCIECAM02Reverse(*args):
+  return _lcms.cmsCIECAM02Reverse(*args)
 cmsCIECAM02Reverse = _lcms.cmsCIECAM02Reverse
+
+def cmsBuildGamma(*args):
+  return _lcms.cmsBuildGamma(*args)
 cmsBuildGamma = _lcms.cmsBuildGamma
+
+def cmsBuildParametricGamma(*args):
+  return _lcms.cmsBuildParametricGamma(*args)
 cmsBuildParametricGamma = _lcms.cmsBuildParametricGamma
+
+def cmsAllocGamma(*args):
+  return _lcms.cmsAllocGamma(*args)
 cmsAllocGamma = _lcms.cmsAllocGamma
+
+def cmsFreeGamma(*args):
+  return _lcms.cmsFreeGamma(*args)
 cmsFreeGamma = _lcms.cmsFreeGamma
+
+def cmsFreeGammaTriple(*args):
+  return _lcms.cmsFreeGammaTriple(*args)
 cmsFreeGammaTriple = _lcms.cmsFreeGammaTriple
+
+def cmsDupGamma(*args):
+  return _lcms.cmsDupGamma(*args)
 cmsDupGamma = _lcms.cmsDupGamma
+
+def cmsReverseGamma(*args):
+  return _lcms.cmsReverseGamma(*args)
 cmsReverseGamma = _lcms.cmsReverseGamma
+
+def cmsJoinGamma(*args):
+  return _lcms.cmsJoinGamma(*args)
 cmsJoinGamma = _lcms.cmsJoinGamma
+
+def cmsJoinGammaEx(*args):
+  return _lcms.cmsJoinGammaEx(*args)
 cmsJoinGammaEx = _lcms.cmsJoinGammaEx
+
+def cmsSmoothGamma(*args):
+  return _lcms.cmsSmoothGamma(*args)
 cmsSmoothGamma = _lcms.cmsSmoothGamma
+
+def cmsEstimateGamma(*args):
+  return _lcms.cmsEstimateGamma(*args)
 cmsEstimateGamma = _lcms.cmsEstimateGamma
+
+def cmsEstimateGammaEx(*args):
+  return _lcms.cmsEstimateGammaEx(*args)
 cmsEstimateGammaEx = _lcms.cmsEstimateGammaEx
+
+def cmsReadICCGamma(*args):
+  return _lcms.cmsReadICCGamma(*args)
 cmsReadICCGamma = _lcms.cmsReadICCGamma
+
+def cmsReadICCGammaReversed(*args):
+  return _lcms.cmsReadICCGammaReversed(*args)
 cmsReadICCGammaReversed = _lcms.cmsReadICCGammaReversed
+
+def cmsTakeMediaWhitePoint(*args):
+  return _lcms.cmsTakeMediaWhitePoint(*args)
 cmsTakeMediaWhitePoint = _lcms.cmsTakeMediaWhitePoint
+
+def cmsTakeMediaBlackPoint(*args):
+  return _lcms.cmsTakeMediaBlackPoint(*args)
 cmsTakeMediaBlackPoint = _lcms.cmsTakeMediaBlackPoint
+
+def cmsTakeIluminant(*args):
+  return _lcms.cmsTakeIluminant(*args)
 cmsTakeIluminant = _lcms.cmsTakeIluminant
+
+def cmsTakeColorants(*args):
+  return _lcms.cmsTakeColorants(*args)
 cmsTakeColorants = _lcms.cmsTakeColorants
+
+def cmsTakeHeaderFlags(*args):
+  return _lcms.cmsTakeHeaderFlags(*args)
 cmsTakeHeaderFlags = _lcms.cmsTakeHeaderFlags
+
+def cmsTakeHeaderAttributes(*args):
+  return _lcms.cmsTakeHeaderAttributes(*args)
 cmsTakeHeaderAttributes = _lcms.cmsTakeHeaderAttributes
+
+def cmsSetLanguage(*args):
+  return _lcms.cmsSetLanguage(*args)
 cmsSetLanguage = _lcms.cmsSetLanguage
+
+def cmsTakeProductName(*args):
+  return _lcms.cmsTakeProductName(*args)
 cmsTakeProductName = _lcms.cmsTakeProductName
+
+def cmsTakeProductDesc(*args):
+  return _lcms.cmsTakeProductDesc(*args)
 cmsTakeProductDesc = _lcms.cmsTakeProductDesc
+
+def cmsTakeProductInfo(*args):
+  return _lcms.cmsTakeProductInfo(*args)
 cmsTakeProductInfo = _lcms.cmsTakeProductInfo
+
+def cmsTakeManufacturer(*args):
+  return _lcms.cmsTakeManufacturer(*args)
 cmsTakeManufacturer = _lcms.cmsTakeManufacturer
+
+def cmsTakeModel(*args):
+  return _lcms.cmsTakeModel(*args)
 cmsTakeModel = _lcms.cmsTakeModel
+
+def cmsTakeCopyright(*args):
+  return _lcms.cmsTakeCopyright(*args)
 cmsTakeCopyright = _lcms.cmsTakeCopyright
+
+def cmsTakeProfileID(*args):
+  return _lcms.cmsTakeProfileID(*args)
 cmsTakeProfileID = _lcms.cmsTakeProfileID
+
+def cmsTakeCreationDateTime(*args):
+  return _lcms.cmsTakeCreationDateTime(*args)
 cmsTakeCreationDateTime = _lcms.cmsTakeCreationDateTime
+
+def cmsTakeCalibrationDateTime(*args):
+  return _lcms.cmsTakeCalibrationDateTime(*args)
 cmsTakeCalibrationDateTime = _lcms.cmsTakeCalibrationDateTime
+
+def cmsIsTag(*args):
+  return _lcms.cmsIsTag(*args)
 cmsIsTag = _lcms.cmsIsTag
+
+def cmsTakeRenderingIntent(*args):
+  return _lcms.cmsTakeRenderingIntent(*args)
 cmsTakeRenderingIntent = _lcms.cmsTakeRenderingIntent
+
+def cmsTakeCharTargetData(*args):
+  return _lcms.cmsTakeCharTargetData(*args)
 cmsTakeCharTargetData = _lcms.cmsTakeCharTargetData
+
+def cmsReadICCTextEx(*args):
+  return _lcms.cmsReadICCTextEx(*args)
 cmsReadICCTextEx = _lcms.cmsReadICCTextEx
+
+def cmsReadICCText(*args):
+  return _lcms.cmsReadICCText(*args)
 cmsReadICCText = _lcms.cmsReadICCText
 LCMS_DESC_MAX = _lcms.LCMS_DESC_MAX
 class cmsPSEQDESC(_object):
@@ -801,8 +1039,8 @@
     __swig_setmethods__["Model"] = _lcms.cmsPSEQDESC_Model_set
     __swig_getmethods__["Model"] = _lcms.cmsPSEQDESC_Model_get
     if _newclass:Model = _swig_property(_lcms.cmsPSEQDESC_Model_get, _lcms.cmsPSEQDESC_Model_set)
-    def __init__(self, *args): 
-        this = _lcms.new_cmsPSEQDESC(*args)
+    def __init__(self): 
+        this = _lcms.new_cmsPSEQDESC()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_cmsPSEQDESC
@@ -822,8 +1060,8 @@
     __swig_setmethods__["seq"] = _lcms.cmsSEQ_seq_set
     __swig_getmethods__["seq"] = _lcms.cmsSEQ_seq_get
     if _newclass:seq = _swig_property(_lcms.cmsSEQ_seq_get, _lcms.cmsSEQ_seq_set)
-    def __init__(self, *args): 
-        this = _lcms.new_cmsSEQ(*args)
+    def __init__(self): 
+        this = _lcms.new_cmsSEQ()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_cmsSEQ
@@ -831,29 +1069,92 @@
 cmsSEQ_swigregister = _lcms.cmsSEQ_swigregister
 cmsSEQ_swigregister(cmsSEQ)
 
+
+def cmsReadProfileSequenceDescription(*args):
+  return _lcms.cmsReadProfileSequenceDescription(*args)
 cmsReadProfileSequenceDescription = _lcms.cmsReadProfileSequenceDescription
+
+def cmsFreeProfileSequenceDescription(*args):
+  return _lcms.cmsFreeProfileSequenceDescription(*args)
 cmsFreeProfileSequenceDescription = _lcms.cmsFreeProfileSequenceDescription
+
+def _cmsICCcolorSpace(*args):
+  return _lcms._cmsICCcolorSpace(*args)
 _cmsICCcolorSpace = _lcms._cmsICCcolorSpace
+
+def _cmsLCMScolorSpace(*args):
+  return _lcms._cmsLCMScolorSpace(*args)
 _cmsLCMScolorSpace = _lcms._cmsLCMScolorSpace
+
+def _cmsChannelsOf(*args):
+  return _lcms._cmsChannelsOf(*args)
 _cmsChannelsOf = _lcms._cmsChannelsOf
+
+def _cmsIsMatrixShaper(*args):
+  return _lcms._cmsIsMatrixShaper(*args)
 _cmsIsMatrixShaper = _lcms._cmsIsMatrixShaper
 LCMS_USED_AS_INPUT = _lcms.LCMS_USED_AS_INPUT
 LCMS_USED_AS_OUTPUT = _lcms.LCMS_USED_AS_OUTPUT
 LCMS_USED_AS_PROOF = _lcms.LCMS_USED_AS_PROOF
+
+def cmsIsIntentSupported(*args):
+  return _lcms.cmsIsIntentSupported(*args)
 cmsIsIntentSupported = _lcms.cmsIsIntentSupported
+
+def cmsGetPCS(*args):
+  return _lcms.cmsGetPCS(*args)
 cmsGetPCS = _lcms.cmsGetPCS
+
+def cmsGetColorSpace(*args):
+  return _lcms.cmsGetColorSpace(*args)
 cmsGetColorSpace = _lcms.cmsGetColorSpace
+
+def cmsGetDeviceClass(*args):
+  return _lcms.cmsGetDeviceClass(*args)
 cmsGetDeviceClass = _lcms.cmsGetDeviceClass
+
+def cmsGetProfileICCversion(*args):
+  return _lcms.cmsGetProfileICCversion(*args)
 cmsGetProfileICCversion = _lcms.cmsGetProfileICCversion
+
+def cmsSetProfileICCversion(*args):
+  return _lcms.cmsSetProfileICCversion(*args)
 cmsSetProfileICCversion = _lcms.cmsSetProfileICCversion
+
+def cmsGetTagCount(*args):
+  return _lcms.cmsGetTagCount(*args)
 cmsGetTagCount = _lcms.cmsGetTagCount
+
+def cmsGetTagSignature(*args):
+  return _lcms.cmsGetTagSignature(*args)
 cmsGetTagSignature = _lcms.cmsGetTagSignature
+
+def cmsSetDeviceClass(*args):
+  return _lcms.cmsSetDeviceClass(*args)
 cmsSetDeviceClass = _lcms.cmsSetDeviceClass
+
+def cmsSetColorSpace(*args):
+  return _lcms.cmsSetColorSpace(*args)
 cmsSetColorSpace = _lcms.cmsSetColorSpace
+
+def cmsSetPCS(*args):
+  return _lcms.cmsSetPCS(*args)
 cmsSetPCS = _lcms.cmsSetPCS
+
+def cmsSetRenderingIntent(*args):
+  return _lcms.cmsSetRenderingIntent(*args)
 cmsSetRenderingIntent = _lcms.cmsSetRenderingIntent
+
+def cmsSetHeaderFlags(*args):
+  return _lcms.cmsSetHeaderFlags(*args)
 cmsSetHeaderFlags = _lcms.cmsSetHeaderFlags
+
+def cmsSetHeaderAttributes(*args):
+  return _lcms.cmsSetHeaderAttributes(*args)
 cmsSetHeaderAttributes = _lcms.cmsSetHeaderAttributes
+
+def cmsSetProfileID(*args):
+  return _lcms.cmsSetProfileID(*args)
 cmsSetProfileID = _lcms.cmsSetProfileID
 INTENT_PERCEPTUAL = _lcms.INTENT_PERCEPTUAL
 INTENT_RELATIVE_COLORIMETRIC = _lcms.INTENT_RELATIVE_COLORIMETRIC
@@ -876,17 +1177,47 @@
 cmsFLAGS_SOFTPROOFING = _lcms.cmsFLAGS_SOFTPROOFING
 cmsFLAGS_PRESERVEBLACK = _lcms.cmsFLAGS_PRESERVEBLACK
 cmsFLAGS_NODEFAULTRESOURCEDEF = _lcms.cmsFLAGS_NODEFAULTRESOURCEDEF
+
+def cmsCreateTransform(*args):
+  return _lcms.cmsCreateTransform(*args)
 cmsCreateTransform = _lcms.cmsCreateTransform
+
+def cmsCreateProofingTransform(*args):
+  return _lcms.cmsCreateProofingTransform(*args)
 cmsCreateProofingTransform = _lcms.cmsCreateProofingTransform
+
+def cmsCreateMultiprofileTransform(*args):
+  return _lcms.cmsCreateMultiprofileTransform(*args)
 cmsCreateMultiprofileTransform = _lcms.cmsCreateMultiprofileTransform
+
+def cmsDeleteTransform(*args):
+  return _lcms.cmsDeleteTransform(*args)
 cmsDeleteTransform = _lcms.cmsDeleteTransform
+
+def cmsDoTransform(*args):
+  return _lcms.cmsDoTransform(*args)
 cmsDoTransform = _lcms.cmsDoTransform
+
+def cmsChangeBuffersFormat(*args):
+  return _lcms.cmsChangeBuffersFormat(*args)
 cmsChangeBuffersFormat = _lcms.cmsChangeBuffersFormat
+
+def cmsSetAlarmCodes(*args):
+  return _lcms.cmsSetAlarmCodes(*args)
 cmsSetAlarmCodes = _lcms.cmsSetAlarmCodes
+
+def cmsGetAlarmCodes(*args):
+  return _lcms.cmsGetAlarmCodes(*args)
 cmsGetAlarmCodes = _lcms.cmsGetAlarmCodes
+
+def cmsSetAdaptationState(*args):
+  return _lcms.cmsSetAdaptationState(*args)
 cmsSetAdaptationState = _lcms.cmsSetAdaptationState
 LCMS_PRESERVE_PURE_K = _lcms.LCMS_PRESERVE_PURE_K
 LCMS_PRESERVE_K_PLANE = _lcms.LCMS_PRESERVE_K_PLANE
+
+def cmsSetCMYKPreservationStrategy(*args):
+  return _lcms.cmsSetCMYKPreservationStrategy(*args)
 cmsSetCMYKPreservationStrategy = _lcms.cmsSetCMYKPreservationStrategy
 class cmsNAMEDCOLOR(_object):
     __swig_setmethods__ = {}
@@ -903,8 +1234,8 @@
     __swig_setmethods__["DeviceColorant"] = _lcms.cmsNAMEDCOLOR_DeviceColorant_set
     __swig_getmethods__["DeviceColorant"] = _lcms.cmsNAMEDCOLOR_DeviceColorant_get
     if _newclass:DeviceColorant = _swig_property(_lcms.cmsNAMEDCOLOR_DeviceColorant_get, _lcms.cmsNAMEDCOLOR_DeviceColorant_set)
-    def __init__(self, *args): 
-        this = _lcms.new_cmsNAMEDCOLOR(*args)
+    def __init__(self): 
+        this = _lcms.new_cmsNAMEDCOLOR()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_cmsNAMEDCOLOR
@@ -936,8 +1267,8 @@
     __swig_setmethods__["List"] = _lcms.cmsNAMEDCOLORLIST_List_set
     __swig_getmethods__["List"] = _lcms.cmsNAMEDCOLORLIST_List_get
     if _newclass:List = _swig_property(_lcms.cmsNAMEDCOLORLIST_List_get, _lcms.cmsNAMEDCOLORLIST_List_set)
-    def __init__(self, *args): 
-        this = _lcms.new_cmsNAMEDCOLORLIST(*args)
+    def __init__(self): 
+        this = _lcms.new_cmsNAMEDCOLORLIST()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_cmsNAMEDCOLORLIST
@@ -945,98 +1276,356 @@
 cmsNAMEDCOLORLIST_swigregister = _lcms.cmsNAMEDCOLORLIST_swigregister
 cmsNAMEDCOLORLIST_swigregister(cmsNAMEDCOLORLIST)
 
+
+def cmsNamedColorCount(*args):
+  return _lcms.cmsNamedColorCount(*args)
 cmsNamedColorCount = _lcms.cmsNamedColorCount
+
+def cmsNamedColorInfo(*args):
+  return _lcms.cmsNamedColorInfo(*args)
 cmsNamedColorInfo = _lcms.cmsNamedColorInfo
+
+def cmsNamedColorIndex(*args):
+  return _lcms.cmsNamedColorIndex(*args)
 cmsNamedColorIndex = _lcms.cmsNamedColorIndex
+
+def cmsReadColorantTable(*args):
+  return _lcms.cmsReadColorantTable(*args)
 cmsReadColorantTable = _lcms.cmsReadColorantTable
+
+def cmsAddTag(*args):
+  return _lcms.cmsAddTag(*args)
 cmsAddTag = _lcms.cmsAddTag
+
+def cmsTransform2DeviceLink(*args):
+  return _lcms.cmsTransform2DeviceLink(*args)
 cmsTransform2DeviceLink = _lcms.cmsTransform2DeviceLink
+
+def _cmsSetLUTdepth(*args):
+  return _lcms._cmsSetLUTdepth(*args)
 _cmsSetLUTdepth = _lcms._cmsSetLUTdepth
+
+def cmsSaveProfile(*args):
+  return _lcms.cmsSaveProfile(*args)
 cmsSaveProfile = _lcms.cmsSaveProfile
+
+def _cmsSaveProfileToMem(*args):
+  return _lcms._cmsSaveProfileToMem(*args)
 _cmsSaveProfileToMem = _lcms._cmsSaveProfileToMem
+
+def cmsGetPostScriptCSA(*args):
+  return _lcms.cmsGetPostScriptCSA(*args)
 cmsGetPostScriptCSA = _lcms.cmsGetPostScriptCSA
+
+def cmsGetPostScriptCRD(*args):
+  return _lcms.cmsGetPostScriptCRD(*args)
 cmsGetPostScriptCRD = _lcms.cmsGetPostScriptCRD
+
+def cmsGetPostScriptCRDEx(*args):
+  return _lcms.cmsGetPostScriptCRDEx(*args)
 cmsGetPostScriptCRDEx = _lcms.cmsGetPostScriptCRDEx
 LCMS_ERROR_ABORT = _lcms.LCMS_ERROR_ABORT
 LCMS_ERROR_SHOW = _lcms.LCMS_ERROR_SHOW
 LCMS_ERROR_IGNORE = _lcms.LCMS_ERROR_IGNORE
+
+def cmsErrorAction(*args):
+  return _lcms.cmsErrorAction(*args)
 cmsErrorAction = _lcms.cmsErrorAction
 LCMS_ERRC_WARNING = _lcms.LCMS_ERRC_WARNING
 LCMS_ERRC_RECOVERABLE = _lcms.LCMS_ERRC_RECOVERABLE
 LCMS_ERRC_ABORTED = _lcms.LCMS_ERRC_ABORTED
+
+def cmsSetErrorHandler(*args):
+  return _lcms.cmsSetErrorHandler(*args)
 cmsSetErrorHandler = _lcms.cmsSetErrorHandler
+
+def cmsAllocLUT():
+  return _lcms.cmsAllocLUT()
 cmsAllocLUT = _lcms.cmsAllocLUT
+
+def cmsAllocLinearTable(*args):
+  return _lcms.cmsAllocLinearTable(*args)
 cmsAllocLinearTable = _lcms.cmsAllocLinearTable
+
+def cmsAlloc3DGrid(*args):
+  return _lcms.cmsAlloc3DGrid(*args)
 cmsAlloc3DGrid = _lcms.cmsAlloc3DGrid
+
+def cmsSetMatrixLUT(*args):
+  return _lcms.cmsSetMatrixLUT(*args)
 cmsSetMatrixLUT = _lcms.cmsSetMatrixLUT
+
+def cmsSetMatrixLUT4(*args):
+  return _lcms.cmsSetMatrixLUT4(*args)
 cmsSetMatrixLUT4 = _lcms.cmsSetMatrixLUT4
+
+def cmsFreeLUT(*args):
+  return _lcms.cmsFreeLUT(*args)
 cmsFreeLUT = _lcms.cmsFreeLUT
+
+def cmsEvalLUT(*args):
+  return _lcms.cmsEvalLUT(*args)
 cmsEvalLUT = _lcms.cmsEvalLUT
+
+def cmsEvalLUTreverse(*args):
+  return _lcms.cmsEvalLUTreverse(*args)
 cmsEvalLUTreverse = _lcms.cmsEvalLUTreverse
+
+def cmsReadICCLut(*args):
+  return _lcms.cmsReadICCLut(*args)
 cmsReadICCLut = _lcms.cmsReadICCLut
+
+def cmsDupLUT(*args):
+  return _lcms.cmsDupLUT(*args)
 cmsDupLUT = _lcms.cmsDupLUT
 SAMPLER_INSPECT = _lcms.SAMPLER_INSPECT
+
+def cmsSample3DGrid(*args):
+  return _lcms.cmsSample3DGrid(*args)
 cmsSample3DGrid = _lcms.cmsSample3DGrid
+
+def cmsSetUserFormatters(*args):
+  return _lcms.cmsSetUserFormatters(*args)
 cmsSetUserFormatters = _lcms.cmsSetUserFormatters
+
+def cmsGetUserFormatters(*args):
+  return _lcms.cmsGetUserFormatters(*args)
 cmsGetUserFormatters = _lcms.cmsGetUserFormatters
+
+def cmsIT8Alloc():
+  return _lcms.cmsIT8Alloc()
 cmsIT8Alloc = _lcms.cmsIT8Alloc
+
+def cmsIT8Free(*args):
+  return _lcms.cmsIT8Free(*args)
 cmsIT8Free = _lcms.cmsIT8Free
+
+def cmsIT8TableCount(*args):
+  return _lcms.cmsIT8TableCount(*args)
 cmsIT8TableCount = _lcms.cmsIT8TableCount
+
+def cmsIT8SetTable(*args):
+  return _lcms.cmsIT8SetTable(*args)
 cmsIT8SetTable = _lcms.cmsIT8SetTable
+
+def cmsIT8LoadFromFile(*args):
+  return _lcms.cmsIT8LoadFromFile(*args)
 cmsIT8LoadFromFile = _lcms.cmsIT8LoadFromFile
+
+def cmsIT8LoadFromMem(*args):
+  return _lcms.cmsIT8LoadFromMem(*args)
 cmsIT8LoadFromMem = _lcms.cmsIT8LoadFromMem
+
+def cmsIT8SaveToFile(*args):
+  return _lcms.cmsIT8SaveToFile(*args)
 cmsIT8SaveToFile = _lcms.cmsIT8SaveToFile
+
+def cmsIT8SaveToMem(*args):
+  return _lcms.cmsIT8SaveToMem(*args)
 cmsIT8SaveToMem = _lcms.cmsIT8SaveToMem
+
+def cmsIT8GetSheetType(*args):
+  return _lcms.cmsIT8GetSheetType(*args)
 cmsIT8GetSheetType = _lcms.cmsIT8GetSheetType
+
+def cmsIT8SetSheetType(*args):
+  return _lcms.cmsIT8SetSheetType(*args)
 cmsIT8SetSheetType = _lcms.cmsIT8SetSheetType
+
+def cmsIT8SetComment(*args):
+  return _lcms.cmsIT8SetComment(*args)
 cmsIT8SetComment = _lcms.cmsIT8SetComment
+
+def cmsIT8SetPropertyStr(*args):
+  return _lcms.cmsIT8SetPropertyStr(*args)
 cmsIT8SetPropertyStr = _lcms.cmsIT8SetPropertyStr
+
+def cmsIT8SetPropertyDbl(*args):
+  return _lcms.cmsIT8SetPropertyDbl(*args)
 cmsIT8SetPropertyDbl = _lcms.cmsIT8SetPropertyDbl
+
+def cmsIT8SetPropertyHex(*args):
+  return _lcms.cmsIT8SetPropertyHex(*args)
 cmsIT8SetPropertyHex = _lcms.cmsIT8SetPropertyHex
+
+def cmsIT8SetPropertyMulti(*args):
+  return _lcms.cmsIT8SetPropertyMulti(*args)
 cmsIT8SetPropertyMulti = _lcms.cmsIT8SetPropertyMulti
+
+def cmsIT8SetPropertyUncooked(*args):
+  return _lcms.cmsIT8SetPropertyUncooked(*args)
 cmsIT8SetPropertyUncooked = _lcms.cmsIT8SetPropertyUncooked
+
+def cmsIT8GetProperty(*args):
+  return _lcms.cmsIT8GetProperty(*args)
 cmsIT8GetProperty = _lcms.cmsIT8GetProperty
+
+def cmsIT8GetPropertyDbl(*args):
+  return _lcms.cmsIT8GetPropertyDbl(*args)
 cmsIT8GetPropertyDbl = _lcms.cmsIT8GetPropertyDbl
+
+def cmsIT8GetPropertyMulti(*args):
+  return _lcms.cmsIT8GetPropertyMulti(*args)
 cmsIT8GetPropertyMulti = _lcms.cmsIT8GetPropertyMulti
+
+def cmsIT8EnumProperties(*args):
+  return _lcms.cmsIT8EnumProperties(*args)
 cmsIT8EnumProperties = _lcms.cmsIT8EnumProperties
+
+def cmsIT8EnumPropertyMulti(*args):
+  return _lcms.cmsIT8EnumPropertyMulti(*args)
 cmsIT8EnumPropertyMulti = _lcms.cmsIT8EnumPropertyMulti
+
+def cmsIT8GetDataRowCol(*args):
+  return _lcms.cmsIT8GetDataRowCol(*args)
 cmsIT8GetDataRowCol = _lcms.cmsIT8GetDataRowCol
+
+def cmsIT8GetDataRowColDbl(*args):
+  return _lcms.cmsIT8GetDataRowColDbl(*args)
 cmsIT8GetDataRowColDbl = _lcms.cmsIT8GetDataRowColDbl
+
+def cmsIT8SetDataRowCol(*args):
+  return _lcms.cmsIT8SetDataRowCol(*args)
 cmsIT8SetDataRowCol = _lcms.cmsIT8SetDataRowCol
+
+def cmsIT8SetDataRowColDbl(*args):
+  return _lcms.cmsIT8SetDataRowColDbl(*args)
 cmsIT8SetDataRowColDbl = _lcms.cmsIT8SetDataRowColDbl
+
+def cmsIT8GetData(*args):
+  return _lcms.cmsIT8GetData(*args)
 cmsIT8GetData = _lcms.cmsIT8GetData
+
+def cmsIT8GetDataDbl(*args):
+  return _lcms.cmsIT8GetDataDbl(*args)
 cmsIT8GetDataDbl = _lcms.cmsIT8GetDataDbl
+
+def cmsIT8SetData(*args):
+  return _lcms.cmsIT8SetData(*args)
 cmsIT8SetData = _lcms.cmsIT8SetData
+
+def cmsIT8SetDataDbl(*args):
+  return _lcms.cmsIT8SetDataDbl(*args)
 cmsIT8SetDataDbl = _lcms.cmsIT8SetDataDbl
+
+def cmsIT8GetDataFormat(*args):
+  return _lcms.cmsIT8GetDataFormat(*args)
 cmsIT8GetDataFormat = _lcms.cmsIT8GetDataFormat
+
+def cmsIT8SetDataFormat(*args):
+  return _lcms.cmsIT8SetDataFormat(*args)
 cmsIT8SetDataFormat = _lcms.cmsIT8SetDataFormat
+
+def cmsIT8EnumDataFormat(*args):
+  return _lcms.cmsIT8EnumDataFormat(*args)
 cmsIT8EnumDataFormat = _lcms.cmsIT8EnumDataFormat
+
+def cmsIT8GetPatchName(*args):
+  return _lcms.cmsIT8GetPatchName(*args)
 cmsIT8GetPatchName = _lcms.cmsIT8GetPatchName
+
+def cmsIT8GetPatchByName(*args):
+  return _lcms.cmsIT8GetPatchByName(*args)
 cmsIT8GetPatchByName = _lcms.cmsIT8GetPatchByName
+
+def cmsIT8SetTableByLabel(*args):
+  return _lcms.cmsIT8SetTableByLabel(*args)
 cmsIT8SetTableByLabel = _lcms.cmsIT8SetTableByLabel
+
+def cmsIT8SetIndexColumn(*args):
+  return _lcms.cmsIT8SetIndexColumn(*args)
 cmsIT8SetIndexColumn = _lcms.cmsIT8SetIndexColumn
+
+def cmsIT8DefineDblFormat(*args):
+  return _lcms.cmsIT8DefineDblFormat(*args)
 cmsIT8DefineDblFormat = _lcms.cmsIT8DefineDblFormat
+
+def cmsLabEncoded2Float(*args):
+  return _lcms.cmsLabEncoded2Float(*args)
 cmsLabEncoded2Float = _lcms.cmsLabEncoded2Float
+
+def cmsLabEncoded2Float4(*args):
+  return _lcms.cmsLabEncoded2Float4(*args)
 cmsLabEncoded2Float4 = _lcms.cmsLabEncoded2Float4
+
+def cmsFloat2LabEncoded(*args):
+  return _lcms.cmsFloat2LabEncoded(*args)
 cmsFloat2LabEncoded = _lcms.cmsFloat2LabEncoded
+
+def cmsFloat2LabEncoded4(*args):
+  return _lcms.cmsFloat2LabEncoded4(*args)
 cmsFloat2LabEncoded4 = _lcms.cmsFloat2LabEncoded4
+
+def cmsXYZEncoded2Float(*args):
+  return _lcms.cmsXYZEncoded2Float(*args)
 cmsXYZEncoded2Float = _lcms.cmsXYZEncoded2Float
+
+def cmsFloat2XYZEncoded(*args):
+  return _lcms.cmsFloat2XYZEncoded(*args)
 cmsFloat2XYZEncoded = _lcms.cmsFloat2XYZEncoded
+
+def _cmsAddTextTag(*args):
+  return _lcms._cmsAddTextTag(*args)
 _cmsAddTextTag = _lcms._cmsAddTextTag
+
+def _cmsAddXYZTag(*args):
+  return _lcms._cmsAddXYZTag(*args)
 _cmsAddXYZTag = _lcms._cmsAddXYZTag
+
+def _cmsAddLUTTag(*args):
+  return _lcms._cmsAddLUTTag(*args)
 _cmsAddLUTTag = _lcms._cmsAddLUTTag
+
+def _cmsAddGammaTag(*args):
+  return _lcms._cmsAddGammaTag(*args)
 _cmsAddGammaTag = _lcms._cmsAddGammaTag
+
+def _cmsAddChromaticityTag(*args):
+  return _lcms._cmsAddChromaticityTag(*args)
 _cmsAddChromaticityTag = _lcms._cmsAddChromaticityTag
+
+def _cmsAddSequenceDescriptionTag(*args):
+  return _lcms._cmsAddSequenceDescriptionTag(*args)
 _cmsAddSequenceDescriptionTag = _lcms._cmsAddSequenceDescriptionTag
+
+def _cmsAddNamedColorTag(*args):
+  return _lcms._cmsAddNamedColorTag(*args)
 _cmsAddNamedColorTag = _lcms._cmsAddNamedColorTag
+
+def _cmsAddDateTimeTag(*args):
+  return _lcms._cmsAddDateTimeTag(*args)
 _cmsAddDateTimeTag = _lcms._cmsAddDateTimeTag
+
+def _cmsAddColorantTableTag(*args):
+  return _lcms._cmsAddColorantTableTag(*args)
 _cmsAddColorantTableTag = _lcms._cmsAddColorantTableTag
+
+def _cmsAddChromaticAdaptationTag(*args):
+  return _lcms._cmsAddChromaticAdaptationTag(*args)
 _cmsAddChromaticAdaptationTag = _lcms._cmsAddChromaticAdaptationTag
+
+def _cmsQuickFloor(*args):
+  return _lcms._cmsQuickFloor(*args)
 _cmsQuickFloor = _lcms._cmsQuickFloor
+
+def _cmsClampWord(*args):
+  return _lcms._cmsClampWord(*args)
 _cmsClampWord = _lcms._cmsClampWord
+
+def _cmsMalloc(*args):
+  return _lcms._cmsMalloc(*args)
 _cmsMalloc = _lcms._cmsMalloc
+
+def _cmsCalloc(*args):
+  return _lcms._cmsCalloc(*args)
 _cmsCalloc = _lcms._cmsCalloc
+
+def _cmsFree(*args):
+  return _lcms._cmsFree(*args)
 _cmsFree = _lcms._cmsFree
+
+def cmsSignalError(*args):
+  return _lcms.cmsSignalError(*args)
 cmsSignalError = _lcms.cmsSignalError
 class _cmsTestAlign16(_object):
     __swig_setmethods__ = {}
@@ -1050,8 +1639,8 @@
     __swig_setmethods__["b"] = _lcms._cmsTestAlign16_b_set
     __swig_getmethods__["b"] = _lcms._cmsTestAlign16_b_get
     if _newclass:b = _swig_property(_lcms._cmsTestAlign16_b_get, _lcms._cmsTestAlign16_b_set)
-    def __init__(self, *args): 
-        this = _lcms.new__cmsTestAlign16(*args)
+    def __init__(self): 
+        this = _lcms.new__cmsTestAlign16()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete__cmsTestAlign16
@@ -1071,8 +1660,8 @@
     __swig_setmethods__["b"] = _lcms._cmsTestAlign8_b_set
     __swig_getmethods__["b"] = _lcms._cmsTestAlign8_b_get
     if _newclass:b = _swig_property(_lcms._cmsTestAlign8_b_get, _lcms._cmsTestAlign8_b_set)
-    def __init__(self, *args): 
-        this = _lcms.new__cmsTestAlign8(*args)
+    def __init__(self): 
+        this = _lcms.new__cmsTestAlign8()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete__cmsTestAlign8
@@ -1080,11 +1669,29 @@
 _cmsTestAlign8_swigregister = _lcms._cmsTestAlign8_swigregister
 _cmsTestAlign8_swigregister(_cmsTestAlign8)
 
+
+def FixedMul(*args):
+  return _lcms.FixedMul(*args)
 FixedMul = _lcms.FixedMul
+
+def FixedSquare(*args):
+  return _lcms.FixedSquare(*args)
 FixedSquare = _lcms.FixedSquare
+
+def ToFixedDomain(*args):
+  return _lcms.ToFixedDomain(*args)
 ToFixedDomain = _lcms.ToFixedDomain
+
+def FromFixedDomain(*args):
+  return _lcms.FromFixedDomain(*args)
 FromFixedDomain = _lcms.FromFixedDomain
+
+def FixedLERP(*args):
+  return _lcms.FixedLERP(*args)
 FixedLERP = _lcms.FixedLERP
+
+def FixedScale(*args):
+  return _lcms.FixedScale(*args)
 FixedScale = _lcms.FixedScale
 VX = _lcms.VX
 VY = _lcms.VY
@@ -1098,8 +1705,8 @@
     __swig_setmethods__["n"] = _lcms.WVEC3_n_set
     __swig_getmethods__["n"] = _lcms.WVEC3_n_get
     if _newclass:n = _swig_property(_lcms.WVEC3_n_get, _lcms.WVEC3_n_set)
-    def __init__(self, *args): 
-        this = _lcms.new_WVEC3(*args)
+    def __init__(self): 
+        this = _lcms.new_WVEC3()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_WVEC3
@@ -1116,8 +1723,8 @@
     __swig_setmethods__["v"] = _lcms.WMAT3_v_set
     __swig_getmethods__["v"] = _lcms.WMAT3_v_get
     if _newclass:v = _swig_property(_lcms.WMAT3_v_get, _lcms.WMAT3_v_set)
-    def __init__(self, *args): 
-        this = _lcms.new_WMAT3(*args)
+    def __init__(self): 
+        this = _lcms.new_WMAT3()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_WMAT3
@@ -1125,35 +1732,125 @@
 WMAT3_swigregister = _lcms.WMAT3_swigregister
 WMAT3_swigregister(WMAT3)
 
+
+def VEC3init(*args):
+  return _lcms.VEC3init(*args)
 VEC3init = _lcms.VEC3init
+
+def VEC3initF(*args):
+  return _lcms.VEC3initF(*args)
 VEC3initF = _lcms.VEC3initF
+
+def VEC3toFix(*args):
+  return _lcms.VEC3toFix(*args)
 VEC3toFix = _lcms.VEC3toFix
+
+def VEC3fromFix(*args):
+  return _lcms.VEC3fromFix(*args)
 VEC3fromFix = _lcms.VEC3fromFix
+
+def VEC3scaleFix(*args):
+  return _lcms.VEC3scaleFix(*args)
 VEC3scaleFix = _lcms.VEC3scaleFix
+
+def VEC3swap(*args):
+  return _lcms.VEC3swap(*args)
 VEC3swap = _lcms.VEC3swap
+
+def VEC3divK(*args):
+  return _lcms.VEC3divK(*args)
 VEC3divK = _lcms.VEC3divK
+
+def VEC3perK(*args):
+  return _lcms.VEC3perK(*args)
 VEC3perK = _lcms.VEC3perK
+
+def VEC3minus(*args):
+  return _lcms.VEC3minus(*args)
 VEC3minus = _lcms.VEC3minus
+
+def VEC3perComp(*args):
+  return _lcms.VEC3perComp(*args)
 VEC3perComp = _lcms.VEC3perComp
+
+def VEC3equal(*args):
+  return _lcms.VEC3equal(*args)
 VEC3equal = _lcms.VEC3equal
+
+def VEC3equalF(*args):
+  return _lcms.VEC3equalF(*args)
 VEC3equalF = _lcms.VEC3equalF
+
+def VEC3scaleAndCut(*args):
+  return _lcms.VEC3scaleAndCut(*args)
 VEC3scaleAndCut = _lcms.VEC3scaleAndCut
+
+def VEC3cross(*args):
+  return _lcms.VEC3cross(*args)
 VEC3cross = _lcms.VEC3cross
+
+def VEC3saturate(*args):
+  return _lcms.VEC3saturate(*args)
 VEC3saturate = _lcms.VEC3saturate
+
+def VEC3distance(*args):
+  return _lcms.VEC3distance(*args)
 VEC3distance = _lcms.VEC3distance
+
+def VEC3length(*args):
+  return _lcms.VEC3length(*args)
 VEC3length = _lcms.VEC3length
+
+def MAT3identity(*args):
+  return _lcms.MAT3identity(*args)
 MAT3identity = _lcms.MAT3identity
+
+def MAT3per(*args):
+  return _lcms.MAT3per(*args)
 MAT3per = _lcms.MAT3per
+
+def MAT3perK(*args):
+  return _lcms.MAT3perK(*args)
 MAT3perK = _lcms.MAT3perK
+
+def MAT3inverse(*args):
+  return _lcms.MAT3inverse(*args)
 MAT3inverse = _lcms.MAT3inverse
+
+def MAT3solve(*args):
+  return _lcms.MAT3solve(*args)
 MAT3solve = _lcms.MAT3solve
+
+def MAT3det(*args):
+  return _lcms.MAT3det(*args)
 MAT3det = _lcms.MAT3det
+
+def MAT3eval(*args):
+  return _lcms.MAT3eval(*args)
 MAT3eval = _lcms.MAT3eval
+
+def MAT3toFix(*args):
+  return _lcms.MAT3toFix(*args)
 MAT3toFix = _lcms.MAT3toFix
+
+def MAT3fromFix(*args):
+  return _lcms.MAT3fromFix(*args)
 MAT3fromFix = _lcms.MAT3fromFix
+
+def MAT3evalW(*args):
+  return _lcms.MAT3evalW(*args)
 MAT3evalW = _lcms.MAT3evalW
+
+def MAT3isIdentity(*args):
+  return _lcms.MAT3isIdentity(*args)
 MAT3isIdentity = _lcms.MAT3isIdentity
+
+def MAT3scaleAndCut(*args):
+  return _lcms.MAT3scaleAndCut(*args)
 MAT3scaleAndCut = _lcms.MAT3scaleAndCut
+
+def cmsIsLinear(*args):
+  return _lcms.cmsIsLinear(*args)
 cmsIsLinear = _lcms.cmsIsLinear
 class L8PARAMS(_object):
     __swig_setmethods__ = {}
@@ -1179,8 +1876,8 @@
     __swig_setmethods__["rz"] = _lcms.L8PARAMS_rz_set
     __swig_getmethods__["rz"] = _lcms.L8PARAMS_rz_get
     if _newclass:rz = _swig_property(_lcms.L8PARAMS_rz_get, _lcms.L8PARAMS_rz_set)
-    def __init__(self, *args): 
-        this = _lcms.new_L8PARAMS(*args)
+    def __init__(self): 
+        this = _lcms.new_L8PARAMS()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_L8PARAMS
@@ -1236,8 +1933,8 @@
     __swig_setmethods__["p8"] = _lcms.L16PARAMS_p8_set
     __swig_getmethods__["p8"] = _lcms.L16PARAMS_p8_get
     if _newclass:p8 = _swig_property(_lcms.L16PARAMS_p8_get, _lcms.L16PARAMS_p8_set)
-    def __init__(self, *args): 
-        this = _lcms.new_L16PARAMS(*args)
+    def __init__(self): 
+        this = _lcms.new_L16PARAMS()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_L16PARAMS
@@ -1245,14 +1942,41 @@
 L16PARAMS_swigregister = _lcms.L16PARAMS_swigregister
 L16PARAMS_swigregister(L16PARAMS)
 
+
+def cmsCalcL16Params(*args):
+  return _lcms.cmsCalcL16Params(*args)
 cmsCalcL16Params = _lcms.cmsCalcL16Params
+
+def cmsCalcCLUT16Params(*args):
+  return _lcms.cmsCalcCLUT16Params(*args)
 cmsCalcCLUT16Params = _lcms.cmsCalcCLUT16Params
+
+def cmsCalcCLUT16ParamsEx(*args):
+  return _lcms.cmsCalcCLUT16ParamsEx(*args)
 cmsCalcCLUT16ParamsEx = _lcms.cmsCalcCLUT16ParamsEx
+
+def cmsLinearInterpLUT16(*args):
+  return _lcms.cmsLinearInterpLUT16(*args)
 cmsLinearInterpLUT16 = _lcms.cmsLinearInterpLUT16
+
+def cmsLinearInterpFixed(*args):
+  return _lcms.cmsLinearInterpFixed(*args)
 cmsLinearInterpFixed = _lcms.cmsLinearInterpFixed
+
+def cmsReverseLinearInterpLUT16(*args):
+  return _lcms.cmsReverseLinearInterpLUT16(*args)
 cmsReverseLinearInterpLUT16 = _lcms.cmsReverseLinearInterpLUT16
+
+def cmsTrilinearInterp16(*args):
+  return _lcms.cmsTrilinearInterp16(*args)
 cmsTrilinearInterp16 = _lcms.cmsTrilinearInterp16
+
+def cmsTetrahedralInterp16(*args):
+  return _lcms.cmsTetrahedralInterp16(*args)
 cmsTetrahedralInterp16 = _lcms.cmsTetrahedralInterp16
+
+def cmsTetrahedralInterp8(*args):
+  return _lcms.cmsTetrahedralInterp8(*args)
 cmsTetrahedralInterp8 = _lcms.cmsTetrahedralInterp8
 LUT_HASMATRIX = _lcms.LUT_HASMATRIX
 LUT_HASTL1 = _lcms.LUT_HASTL1
@@ -1353,8 +2077,8 @@
     __swig_setmethods__["LCurvesSeed"] = _lcms._lcms_LUT_struc_LCurvesSeed_set
     __swig_getmethods__["LCurvesSeed"] = _lcms._lcms_LUT_struc_LCurvesSeed_get
     if _newclass:LCurvesSeed = _swig_property(_lcms._lcms_LUT_struc_LCurvesSeed_get, _lcms._lcms_LUT_struc_LCurvesSeed_set)
-    def __init__(self, *args): 
-        this = _lcms.new__lcms_LUT_struc(*args)
+    def __init__(self): 
+        this = _lcms.new__lcms_LUT_struc()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete__lcms_LUT_struc
@@ -1362,17 +2086,53 @@
 _lcms_LUT_struc_swigregister = _lcms._lcms_LUT_struc_swigregister
 _lcms_LUT_struc_swigregister(_lcms_LUT_struc)
 
+
+def _cmsSmoothEndpoints(*args):
+  return _lcms._cmsSmoothEndpoints(*args)
 _cmsSmoothEndpoints = _lcms._cmsSmoothEndpoints
+
+def _cmsCrc32OfGammaTable(*args):
+  return _lcms._cmsCrc32OfGammaTable(*args)
 _cmsCrc32OfGammaTable = _lcms._cmsCrc32OfGammaTable
+
+def cmsAllocSampledCurve(*args):
+  return _lcms.cmsAllocSampledCurve(*args)
 cmsAllocSampledCurve = _lcms.cmsAllocSampledCurve
+
+def cmsFreeSampledCurve(*args):
+  return _lcms.cmsFreeSampledCurve(*args)
 cmsFreeSampledCurve = _lcms.cmsFreeSampledCurve
+
+def cmsDupSampledCurve(*args):
+  return _lcms.cmsDupSampledCurve(*args)
 cmsDupSampledCurve = _lcms.cmsDupSampledCurve
+
+def cmsConvertGammaToSampledCurve(*args):
+  return _lcms.cmsConvertGammaToSampledCurve(*args)
 cmsConvertGammaToSampledCurve = _lcms.cmsConvertGammaToSampledCurve
+
+def cmsConvertSampledCurveToGamma(*args):
+  return _lcms.cmsConvertSampledCurveToGamma(*args)
 cmsConvertSampledCurveToGamma = _lcms.cmsConvertSampledCurveToGamma
+
+def cmsEndpointsOfSampledCurve(*args):
+  return _lcms.cmsEndpointsOfSampledCurve(*args)
 cmsEndpointsOfSampledCurve = _lcms.cmsEndpointsOfSampledCurve
+
+def cmsClampSampledCurve(*args):
+  return _lcms.cmsClampSampledCurve(*args)
 cmsClampSampledCurve = _lcms.cmsClampSampledCurve
+
+def cmsSmoothSampledCurve(*args):
+  return _lcms.cmsSmoothSampledCurve(*args)
 cmsSmoothSampledCurve = _lcms.cmsSmoothSampledCurve
+
+def cmsRescaleSampledCurve(*args):
+  return _lcms.cmsRescaleSampledCurve(*args)
 cmsRescaleSampledCurve = _lcms.cmsRescaleSampledCurve
+
+def cmsJoinSampledCurves(*args):
+  return _lcms.cmsJoinSampledCurves(*args)
 cmsJoinSampledCurves = _lcms.cmsJoinSampledCurves
 MATSHAPER_HASMATRIX = _lcms.MATSHAPER_HASMATRIX
 MATSHAPER_HASSHAPER = _lcms.MATSHAPER_HASSHAPER
@@ -1404,8 +2164,8 @@
     __swig_setmethods__["L2"] = _lcms.MATSHAPER_L2_set
     __swig_getmethods__["L2"] = _lcms.MATSHAPER_L2_get
     if _newclass:L2 = _swig_property(_lcms.MATSHAPER_L2_get, _lcms.MATSHAPER_L2_set)
-    def __init__(self, *args): 
-        this = _lcms.new_MATSHAPER(*args)
+    def __init__(self): 
+        this = _lcms.new_MATSHAPER()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_MATSHAPER
@@ -1413,24 +2173,81 @@
 MATSHAPER_swigregister = _lcms.MATSHAPER_swigregister
 MATSHAPER_swigregister(MATSHAPER)
 
+
+def cmsAllocMatShaper(*args):
+  return _lcms.cmsAllocMatShaper(*args)
 cmsAllocMatShaper = _lcms.cmsAllocMatShaper
+
+def cmsAllocMatShaper2(*args):
+  return _lcms.cmsAllocMatShaper2(*args)
 cmsAllocMatShaper2 = _lcms.cmsAllocMatShaper2
+
+def cmsFreeMatShaper(*args):
+  return _lcms.cmsFreeMatShaper(*args)
 cmsFreeMatShaper = _lcms.cmsFreeMatShaper
+
+def cmsEvalMatShaper(*args):
+  return _lcms.cmsEvalMatShaper(*args)
 cmsEvalMatShaper = _lcms.cmsEvalMatShaper
+
+def cmsReadICCMatrixRGB2XYZ(*args):
+  return _lcms.cmsReadICCMatrixRGB2XYZ(*args)
 cmsReadICCMatrixRGB2XYZ = _lcms.cmsReadICCMatrixRGB2XYZ
+
+def cmsBuildInputMatrixShaper(*args):
+  return _lcms.cmsBuildInputMatrixShaper(*args)
 cmsBuildInputMatrixShaper = _lcms.cmsBuildInputMatrixShaper
+
+def cmsBuildOutputMatrixShaper(*args):
+  return _lcms.cmsBuildOutputMatrixShaper(*args)
 cmsBuildOutputMatrixShaper = _lcms.cmsBuildOutputMatrixShaper
+
+def cmsAdaptationMatrix(*args):
+  return _lcms.cmsAdaptationMatrix(*args)
 cmsAdaptationMatrix = _lcms.cmsAdaptationMatrix
+
+def cmsAdaptMatrixToD50(*args):
+  return _lcms.cmsAdaptMatrixToD50(*args)
 cmsAdaptMatrixToD50 = _lcms.cmsAdaptMatrixToD50
+
+def cmsAdaptMatrixFromD50(*args):
+  return _lcms.cmsAdaptMatrixFromD50(*args)
 cmsAdaptMatrixFromD50 = _lcms.cmsAdaptMatrixFromD50
+
+def cmsReadChromaticAdaptationMatrix(*args):
+  return _lcms.cmsReadChromaticAdaptationMatrix(*args)
 cmsReadChromaticAdaptationMatrix = _lcms.cmsReadChromaticAdaptationMatrix
+
+def cmsXYZ2LabEncoded(*args):
+  return _lcms.cmsXYZ2LabEncoded(*args)
 cmsXYZ2LabEncoded = _lcms.cmsXYZ2LabEncoded
+
+def cmsLab2XYZEncoded(*args):
+  return _lcms.cmsLab2XYZEncoded(*args)
 cmsLab2XYZEncoded = _lcms.cmsLab2XYZEncoded
+
+def _cmsIdentifyWhitePoint(*args):
+  return _lcms._cmsIdentifyWhitePoint(*args)
 _cmsIdentifyWhitePoint = _lcms._cmsIdentifyWhitePoint
+
+def _cmsQuantizeVal(*args):
+  return _lcms._cmsQuantizeVal(*args)
 _cmsQuantizeVal = _lcms._cmsQuantizeVal
+
+def cmsAllocNamedColorList(*args):
+  return _lcms.cmsAllocNamedColorList(*args)
 cmsAllocNamedColorList = _lcms.cmsAllocNamedColorList
+
+def cmsReadICCnamedColorList(*args):
+  return _lcms.cmsReadICCnamedColorList(*args)
 cmsReadICCnamedColorList = _lcms.cmsReadICCnamedColorList
+
+def cmsFreeNamedColorList(*args):
+  return _lcms.cmsFreeNamedColorList(*args)
 cmsFreeNamedColorList = _lcms.cmsFreeNamedColorList
+
+def cmsAppendNamedColor(*args):
+  return _lcms.cmsAppendNamedColor(*args)
 cmsAppendNamedColor = _lcms.cmsAppendNamedColor
 MAX_TABLE_TAG = _lcms.MAX_TABLE_TAG
 class LCMSICCPROFILE(_object):
@@ -1523,8 +2340,8 @@
     __swig_setmethods__["UsedSpace"] = _lcms.LCMSICCPROFILE_UsedSpace_set
     __swig_getmethods__["UsedSpace"] = _lcms.LCMSICCPROFILE_UsedSpace_get
     if _newclass:UsedSpace = _swig_property(_lcms.LCMSICCPROFILE_UsedSpace_get, _lcms.LCMSICCPROFILE_UsedSpace_set)
-    def __init__(self, *args): 
-        this = _lcms.new_LCMSICCPROFILE(*args)
+    def __init__(self): 
+        this = _lcms.new_LCMSICCPROFILE()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete_LCMSICCPROFILE
@@ -1532,12 +2349,33 @@
 LCMSICCPROFILE_swigregister = _lcms.LCMSICCPROFILE_swigregister
 LCMSICCPROFILE_swigregister(LCMSICCPROFILE)
 
+
+def _cmsCreateProfilePlaceholder():
+  return _lcms._cmsCreateProfilePlaceholder()
 _cmsCreateProfilePlaceholder = _lcms._cmsCreateProfilePlaceholder
+
+def _cmsSearchTag(*args):
+  return _lcms._cmsSearchTag(*args)
 _cmsSearchTag = _lcms._cmsSearchTag
+
+def _cmsInitTag(*args):
+  return _lcms._cmsInitTag(*args)
 _cmsInitTag = _lcms._cmsInitTag
+
+def _cmsCreateProfileFromFilePlaceholder(*args):
+  return _lcms._cmsCreateProfileFromFilePlaceholder(*args)
 _cmsCreateProfileFromFilePlaceholder = _lcms._cmsCreateProfileFromFilePlaceholder
+
+def _cmsCreateProfileFromMemPlaceholder(*args):
+  return _lcms._cmsCreateProfileFromMemPlaceholder(*args)
 _cmsCreateProfileFromMemPlaceholder = _lcms._cmsCreateProfileFromMemPlaceholder
+
+def _cmsSetSaveToDisk(*args):
+  return _lcms._cmsSetSaveToDisk(*args)
 _cmsSetSaveToDisk = _lcms._cmsSetSaveToDisk
+
+def _cmsSetSaveToMemory(*args):
+  return _lcms._cmsSetSaveToMemory(*args)
 _cmsSetSaveToMemory = _lcms._cmsSetSaveToMemory
 class _cmsTRANSFORM(_object):
     __swig_setmethods__ = {}
@@ -1674,8 +2512,8 @@
     __swig_setmethods__["rwlock"] = _lcms._cmsTRANSFORM_rwlock_set
     __swig_getmethods__["rwlock"] = _lcms._cmsTRANSFORM_rwlock_get
     if _newclass:rwlock = _swig_property(_lcms._cmsTRANSFORM_rwlock_get, _lcms._cmsTRANSFORM_rwlock_set)
-    def __init__(self, *args): 
-        this = _lcms.new__cmsTRANSFORM(*args)
+    def __init__(self): 
+        this = _lcms.new__cmsTRANSFORM()
         try: self.this.append(this)
         except: self.this = this
     __swig_destroy__ = _lcms.delete__cmsTRANSFORM
@@ -1683,27 +2521,84 @@
 _cmsTRANSFORM_swigregister = _lcms._cmsTRANSFORM_swigregister
 _cmsTRANSFORM_swigregister(_cmsTRANSFORM)
 
+
+def _cmsIdentifyInputFormat(*args):
+  return _lcms._cmsIdentifyInputFormat(*args)
 _cmsIdentifyInputFormat = _lcms._cmsIdentifyInputFormat
+
+def _cmsIdentifyOutputFormat(*args):
+  return _lcms._cmsIdentifyOutputFormat(*args)
 _cmsIdentifyOutputFormat = _lcms._cmsIdentifyOutputFormat
 XYZRel = _lcms.XYZRel
 LabRel = _lcms.LabRel
+
+def cmsChooseCnvrt(*args):
+  return _lcms.cmsChooseCnvrt(*args)
 cmsChooseCnvrt = _lcms.cmsChooseCnvrt
+
+def _cmsEndPointsBySpace(*args):
+  return _lcms._cmsEndPointsBySpace(*args)
 _cmsEndPointsBySpace = _lcms._cmsEndPointsBySpace
+
+def _cmsWhiteBySpace(*args):
+  return _lcms._cmsWhiteBySpace(*args)
 _cmsWhiteBySpace = _lcms._cmsWhiteBySpace
+
+def Clamp_L(*args):
+  return _lcms.Clamp_L(*args)
 Clamp_L = _lcms.Clamp_L
+
+def Clamp_ab(*args):
+  return _lcms.Clamp_ab(*args)
 Clamp_ab = _lcms.Clamp_ab
 LCMS_BPFLAGS_D50_ADAPTED = _lcms.LCMS_BPFLAGS_D50_ADAPTED
+
+def cmsDetectBlackPoint(*args):
+  return _lcms.cmsDetectBlackPoint(*args)
 cmsDetectBlackPoint = _lcms.cmsDetectBlackPoint
+
+def _cmsReasonableGridpointsByColorspace(*args):
+  return _lcms._cmsReasonableGridpointsByColorspace(*args)
 _cmsReasonableGridpointsByColorspace = _lcms._cmsReasonableGridpointsByColorspace
+
+def _cmsPrecalculateDeviceLink(*args):
+  return _lcms._cmsPrecalculateDeviceLink(*args)
 _cmsPrecalculateDeviceLink = _lcms._cmsPrecalculateDeviceLink
+
+def _cmsPrecalculateBlackPreservingDeviceLink(*args):
+  return _lcms._cmsPrecalculateBlackPreservingDeviceLink(*args)
 _cmsPrecalculateBlackPreservingDeviceLink = _lcms._cmsPrecalculateBlackPreservingDeviceLink
+
+def _cmsPrecalculateGamutCheck(*args):
+  return _lcms._cmsPrecalculateGamutCheck(*args)
 _cmsPrecalculateGamutCheck = _lcms._cmsPrecalculateGamutCheck
+
+def _cmsFixWhiteMisalignment(*args):
+  return _lcms._cmsFixWhiteMisalignment(*args)
 _cmsFixWhiteMisalignment = _lcms._cmsFixWhiteMisalignment
+
+def _cmsBlessLUT8(*args):
+  return _lcms._cmsBlessLUT8(*args)
 _cmsBlessLUT8 = _lcms._cmsBlessLUT8
+
+def _cmsComputeGamutLUT(*args):
+  return _lcms._cmsComputeGamutLUT(*args)
 _cmsComputeGamutLUT = _lcms._cmsComputeGamutLUT
+
+def _cmsComputeSoftProofLUT(*args):
+  return _lcms._cmsComputeSoftProofLUT(*args)
 _cmsComputeSoftProofLUT = _lcms._cmsComputeSoftProofLUT
+
+def _cmsComputePrelinearizationTablesFromXFORM(*args):
+  return _lcms._cmsComputePrelinearizationTablesFromXFORM(*args)
 _cmsComputePrelinearizationTablesFromXFORM = _lcms._cmsComputePrelinearizationTablesFromXFORM
+
+def _cmsBuildKToneCurve(*args):
+  return _lcms._cmsBuildKToneCurve(*args)
 _cmsBuildKToneCurve = _lcms._cmsBuildKToneCurve
+
+def _cmsValidateLUT(*args):
+  return _lcms._cmsValidateLUT(*args)
 _cmsValidateLUT = _lcms._cmsValidateLUT
 class icTagSignature(_object):
     __swig_setmethods__ = {}
@@ -1735,5 +2630,6 @@
 StrPointer_swigregister = _lcms.StrPointer_swigregister
 StrPointer_swigregister(StrPointer)
 
+# This file is compatible with both classic and new-style classes.
 
 
--- lcms-1.19.dfsg.orig/debian/liblcms1-dev.docs
+++ lcms-1.19.dfsg/debian/liblcms1-dev.docs
@@ -0,0 +1,2 @@
+doc/LCMSAPI.TXT
+doc/TUTORIAL.TXT
--- lcms-1.19.dfsg.orig/debian/rules
+++ lcms-1.19.dfsg/debian/rules
@@ -0,0 +1,83 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+
+ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
+ifeq ($(ARCH),alpha)
+  export CFLAGS="-O0 -mieee -fPIC -I../include -fno-exceptions -fomit-frame-pointer -Wall"
+else
+  export CFLAGS="-O2 -fPIC -I../include -fno-exceptions -fomit-frame-pointer -Wall"
+endif
+
+PYVER=`pyversions -d`
+
+build: build-stamp
+build-stamp:
+	dh_testdir
+ifeq ($(ARCH),alpha)
+	echo "#define USE_BIG_ENDIAN" >include/lcms-endian.h
+endif
+ifeq ($(ARCH),hppa)
+	echo "#define USE_BIG_ENDIAN" >include/lcms-endian.h
+endif
+ifeq ($(ARCH),sparc)
+	echo "#define USE_BIG_ENDIAN" >include/lcms-endian.h
+endif
+ifeq ($(ARCH),sparc64)
+	echo "#define USE_BIG_ENDIAN" >include/lcms-endian.h
+endif
+ifeq ($(ARCH),powerpc)
+	echo "#define USE_BIG_ENDIAN" >include/lcms-endian.h
+endif
+	./configure $(shell dpkg-buildflags --export=configure) --prefix=/usr --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) --with-python
+	cd python && ./swig_lcms && cd ..
+	make
+	touch build-stamp
+
+clean: 
+	dh_testdir
+	rm -f build-stamp configure-stamp
+	[ ! -f Makefile ] || $(MAKE) distclean
+	echo "#undef USE_BIG_ENDIAN" >include/lcms-endian.h
+	rm -f include/lcms-endian.h
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+	make DESTDIR=`pwd`/debian/tmp install
+	rm -f `pwd`/debian/tmp/usr/lib/python*/*-packages/*.a \
+	`pwd`/debian/tmp/usr/lib/python*/*-packages/*.la
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+	dh_testdir
+	dh_testroot
+	dh_install
+	dh_installman
+	dh_installdocs
+	dh_installchangelogs
+	dh_strip
+	dh_compress
+	dh_fixperms
+	dh_makeshlibs -V
+	dh_perl
+	dh_python2 --no-guessing-versions
+	dh_installdeb
+	dh_shlibdeps
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
--- lcms-1.19.dfsg.orig/debian/control
+++ lcms-1.19.dfsg/debian/control
@@ -0,0 +1,56 @@
+Source: lcms
+Section: libs
+Priority: optional
+Maintainer: Oleksandr Moskalenko <malex@debian.org>
+Build-Depends: debhelper (>> 8.1.3), libtiff4-dev, libjpeg-dev, zlib1g-dev, python-all-dev (>= 2.3.5-11), swig
+Standards-Version: 3.9.2
+Vcs-Svn: svn://svn.debian.org/svn/collab-maint/deb-maint/lcms/trunk/
+Vcs-Browser: http://svn.debian.org/wsvn/collab-maint/deb-maint/lcms/trunk/?op=log
+
+Package: liblcms1
+Architecture: any
+Multi-Arch: same
+Section: libs
+Replaces: liblcms
+Provides: liblcms
+Conflicts: liblcms
+Suggests: liblcms-utils
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}
+Description: Little CMS color management library
+ lcms is a standalone CMM engine, which deals with the color management.
+ LittleCMS implements a fast transformation between ICC profiles. The
+ intention of it is to be portable across several platforms.
+
+Package: liblcms-utils
+Architecture: any
+Section: utils
+Depends: ${shlibs:Depends}
+Description: Little CMS color management library utilities
+ lcms is a standalone CMM engine, which deals with the color management.
+ LittleCMS implements a fast transformation between ICC profiles. The
+ intention of it is to be portable across several platforms. This package
+ contains additional utilities(jpegicc and tifficc) which comes with lcms.
+
+Package: liblcms1-dev
+Architecture: any
+Multi-Arch: same
+Section: libdevel
+Replaces: liblcms-dev
+Provides: liblcms-dev
+Conflicts: liblcms-dev
+Depends: liblcms1 (= ${binary:Version})
+Description: Litle CMS color management library development headers
+ Development headers for Little CMS color management library.
+ lcms is a standalone CMM engine, which deals with the color management.
+ LittleCMS implements a fast transformation between ICC profiles. The
+ intention of it is to be portable across several platforms.
+
+Package: python-liblcms
+Priority: optional
+Section: python
+Architecture: any
+Depends: liblcms1 (= ${binary:Version}), ${shlibs:Depends}, ${python:Depends}
+Description: Python bindings for Little CMS color management library
+ LittleCMS color management library Python bindings have been produced
+ with SWIG and allow access to liblcms1 functions from Python code.
--- lcms-1.19.dfsg.orig/debian/liblcms-utils.manpages
+++ lcms-1.19.dfsg/debian/liblcms-utils.manpages
@@ -0,0 +1,7 @@
+debian/man/jpegicc.1
+debian/man/tifficc.1
+debian/man/tiffdiff.1
+debian/man/icc2ps.1
+debian/man/icclink.1
+debian/man/icctrans.1
+debian/man/wtpt.1
--- lcms-1.19.dfsg.orig/debian/changelog
+++ lcms-1.19.dfsg/debian/changelog
@@ -0,0 +1,405 @@
+lcms (1.19.dfsg-1.2) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Fix "static library in /usr/share": 
+    debian/rules: re-enable removal of .a and .la files from the
+    python-liblcms packages (they get installed to dist-packages instead of
+    site-packages now).
+    (Closes: #684019)
+  * Fix "Please enabled hardened build flags":
+    debian/rules: apply updated patch from Moritz Muehlenhoff: use
+    dpkg-buildflags to get all *FLAGS.
+    (Release goal, closes: #654821)
+  * debian/liblcms1-dev.install: don't install not-dependend-on .la file
+    anymore.
+    (Release goal)
+
+ -- gregor herrmann <gregoa@debian.org>  Sun, 26 Aug 2012 16:37:14 +0200
+
+lcms (1.19.dfsg-1.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Apply Multi-Arch patch.  Closes: #637732.
+
+ -- Mark Hymers <mhy@debian.org>  Sun, 13 May 2012 17:05:05 +0000
+
+lcms (1.19.dfsg-1) unstable; urgency=low
+
+  * Upstream legacy update to 1.19 (Closes: #593314).
+  * debian/rules:
+    - Updated the binary package descriptions (Closes: #608007).
+    - Switched rules from py_support to py_support2.
+    - Removed patching rules.
+  * debian/control:
+    - Change build-depends on libjpeg62-dev to libjpeg-dev (Closes: #634136).
+    - Removed deprecated python-support package from build depends.;
+    - Updated standards version to 3.9.2.
+    - Removed a depends on dpatch.
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Mon, 18 Jul 2011 17:26:55 -0500
+
+lcms (1.18.dfsg-1.2) unstable; urgency=low
+
+  * Non-maintainer upload
+  * Fix silly copy&paste error (Really Closes: #560993)
+
+ -- Moritz Muehlenhoff <jmm@debian.org>  Wed, 06 Jan 2010 22:06:15 +0100
+
+lcms (1.18.dfsg-1.1) unstable; urgency=low
+
+  * Non-maintainer upload
+  * Fix CVE-2009-0793 (Closes: #530785)
+  * Fix detection of sparc64, patch by Aurelien Jarno (Closes: #560993)
+
+ -- Moritz Muehlenhoff <jmm@debian.org>  Sat, 26 Dec 2009 16:46:23 +0100
+
+lcms (1.18.dfsg-1) unstable; urgency=low
+
+  * New upstream release. It includes correct fixes for the security problems
+    fixed in 1.17.dfsg-2.
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Fri, 03 Apr 2009 08:50:38 -0600
+
+lcms (1.17.dfsg-2) unstable; urgency=low
+
+  [Steffen Joeris <white@debian.org>]
+  * Include upstream fixes for integer overflows, possible memory leaks and a
+    buffer overflow. Fixes: CVE-2009-0723 CVE-2009-0581 CVE-2009-0733.
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Thu, 12 Mar 2009 10:38:30 -0600
+
+lcms (1.17.dfsg-1) unstable; urgency=low
+
+  * Removed Adobe sRGB profiles from the testdbed and python/testbed
+    directories (Closes: #491995).
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Thu, 24 Jul 2008 14:29:36 -0600
+
+lcms (1.17-2) unstable; urgency=medium
+
+  * debian/rules: Added a rule to regenerate lcms_wrap.cxx with swig to
+    prevent FTBFS on 64-bit arches.
+  * debian/control: Added a build-depends on swig.
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Mon, 21 Jul 2008 13:07:24 -0600
+
+lcms (1.17-1) unstable; urgency=low
+
+  * New upstream maintenance release (Closes: #490412).
+  * debian/control: Updated Standards-Version to 3.8.0.
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Sat, 12 Jul 2008 13:05:36 -0600
+
+lcms (1.16-10) unstable; urgency=high
+
+  * debian/tmp/usr/lib/*.so usr/lib/ got lost from liblcms1-dev.install at
+    some point of making 1.16-9. Add it back (Closes: #477035).
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Sun, 20 Apr 2008 12:31:46 -0600
+
+lcms (1.16-9) unstable; urgency=high
+
+  [Oleksandr Moskalenko <malex@debian.org>]
+  * debian/changelog: Used urgency=high due to python2.5 transition.
+  * debian/control:
+    - Removed Shiju p. Nair from maintainers.
+    - Removed XS- prefix from  Vcs-Svn and Vcs-Browser.
+    - Updated Standards-Version to 3.7.3.
+    - Changed deprecated ${Source-Version} substvar to ${source:Version} per
+      lintian warning.
+    - Added Depends on ${shlibs:Depends} for liblcms1-dev and python-liblcms
+      per lintian error.
+    - Changed python-liblcms section from "graphics" to "python" per lintian
+      warning.
+    - Changed source:Version to binary:Version for liblcms1-dev and
+      python-liblcms to make the package safely binnmuable.
+    - Changed description of python-liblcms per lintian spelling warning.
+  * debian/man/*: fixed the .p tag in all affected files to .TP tag per
+    lintian warnings.
+  * Removed NEWS.Debian and its entry from liblcms1.docs (Closes: #459284).
+  * Removed README.Debian as we don't put anything into __init__py now.
+  * Regenerated swig files by running python/swig_lcms (Closes: #475919).
+  [Thomas Viehmann <tv@beamnet.de>]
+  * Used the tmp directory instead of ${package} for package building i.e
+    debian/liblcms1.install should use the new path (Closes: #476331).
+  * Removed debian/liblcms1-dev.install so as to not install python
+    version-specific .a/.la files into /usr/lib. (Closes: #476329).
+  * Modified debian/rules, debian/python-liblcms.dirs,
+    debian/python-liblcms.install to cleanly build and install python-liblcms
+    for all python versions (Closes: #476330). Also emptied
+    debian/__init__.py.
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Wed, 16 Apr 2008 12:52:55 -0600
+
+lcms (1.16-8) unstable; urgency=low
+
+  * debian/__init__.py: Import lcms module into the current namespace to allow
+    for "import lcms" instead of "from lcms import lcms".
+  * debian/NEWS.Debian and debian/README.Debian: Add a note about the above
+    change.
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Fri, 04 Jan 2008 16:36:46 -0700
+
+lcms (1.16-7) unstable; urgency=low
+
+  * debian/rules: Updated python version detection to use "pyversions -d"
+    (Closes: #436541).
+  * python: Ran swig_lcms to regenerate swig interface files (Closes: #436540).
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Thu, 15 Nov 2007 12:20:01 -0700
+
+lcms (1.16-6) unstable; urgency=low
+
+  * Trigger a new build on mipsel to try getting liblcms1 into testing.
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Thu, 12 Jul 2007 17:40:40 -0600
+
+lcms (1.16-5) unstable; urgency=low
+
+  * Upload into unstable since it's through the NEW queue.
+  * debian/control: Added XS-Vcs-Svn and XS-Vcs-Browser headers.
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Mon, 07 May 2007 16:10:00 -0600
+
+lcms (1.16-4) experimental; urgency=low
+
+  * Second attempt to get the python-liblcms through NEW with an experimental
+    package.
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Fri, 13 Apr 2007 11:07:54 -0600
+
+lcms (1.16-3) unstable; urgency=low
+
+  * Revert liblcms1-dev file location from /usr/include/liblcms1 to
+    /usr/include before people start complaining about FTBFS bugs in other
+    packages. Temporarily remove python-liblcms to avoid NEW queue.
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Thu, 12 Apr 2007 16:48:49 -0600
+
+lcms (1.16-2) experimental; urgency=low
+
+  * Upload to experimental as the python extension support I added could be
+    buggy.
+  * debian/compat: Bumped compatibility level up to 5.
+  * debian/control: Bumped debhelper dependency to 5.0.38.
+  * Package python bindings as python-liblcms (Closes: #293433, #313221).
+    - debian/control:
+      + Add a section for python-liblcms.
+      + Add build-depends on python-all-dev (>= 2.3.5-11) and
+        python-support (>= 0.5.3).
+      + Add depends on ${python:Depends} and dpatch.
+    - debian/rules:
+      + Add "--with-python" key to make for building extensions.
+      + Add rules to move extensions files from liblcms1-dev tree to
+        liblcms-python.
+      + Add a dh_pysupport call.
+    - Added python-liblcms.dirs.
+    - Added python-liblcms.install.
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Wed, 11 Apr 2007 13:31:39 -0600
+
+lcms (1.16-1) unstable; urgency=low
+
+  * New upstream release (Closes: #418454).
+  * debian/shlibs: Bump shlibs to current version (Closes: #418453).
+  * Updated libtool scripts (Closes: #342689).
+  * debian/control:
+    - Add myself to uploaders per advice from Tony Mancill
+      <tmancill@debian.org> as Shiju could be MIA.
+    - Update Standards-Version to 3.7.2.
+  * Rename docs to liblcms1.docs and move API docs and tutorial to
+    liblcms1-dev.docs (Closes: #313220).
+  * debian/copyright: Updated the copyright file.
+  * debian/compat: Set the compatibility level to 4 in this file.
+  * Move all package.files files to package.install files.
+  * debian/rules: Replace the old dh_movefiles with dh_install rules.
+
+ -- Oleksandr Moskalenko <malex@debian.org>  Mon, 09 Apr 2007 15:36:43 -0600
+
+lcms (1.15-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Shiju p. Nair <shiju.p@gmail.com>  Mon, 27 Mar 2006 23:03:55 +0300
+
+lcms (1.13-1) unstable; urgency=low
+
+  * New upstream release. (Closes: #270842, #232666, #263411)
+  * Created Manpages for utilities in the liblcms-utils. (Closes: #244999)
+
+ -- Shiju p. Nair <shiju.p@gmail.com>  Thu, 30 Sep 2004 09:34:23 +0300
+
+lcms (1.12-2.1) unstable; urgency=medium
+
+  * NMU
+  * Rebuild against libtiff4. (Closes: #262843)
+  * Update config.sub/config.guess. (Closes: #257225)
+  * run "-$(MAKE) distclean" instead of "-make -C . clean" on debian/rules
+    clean for privacy reasons.
+
+ -- Andreas Metzler <ametzler@debian.org>  Wed,  4 Aug 2004 09:51:47 +0200
+
+lcms (1.12-2) unstable; urgency=low
+
+  * New upstrem release.
+  * Changed copyright to MIT(from LGPL)
+  * Fixes incorrect section in debian/control. (Closes: #229046)
+  * Updates -dev package description to follow Debian policy. (Closes:
+    #209717) 
+
+ -- Shiju P. Nair <shiju.p@gmail.com>  Mon,  9 Feb 2004 23:55:38 +0300
+
+lcms (1.12-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Shiju P. Nair <shiju.p@gmail.com>  Mon,  9 Feb 2004 23:35:20 +0300
+
+lcms (1.10-1.2) unstable; urgency=medium
+
+  * NMU.
+  * Fix build problem on alpha by making my_output_message() more
+    valid ANSI C. (Closes: #228640)
+
+ -- Petter Reinholdtsen <pere@debian.org>  Wed, 21 Jan 2004 19:37:51 +0100
+
+lcms (1.10-1.1) unstable; urgency=medium
+
+  * NMU
+  * Applied fixes by Santiago Vila for build dependencies and errors that were
+    being ignored silently. (Closes: #217086)
+
+ -- J.H.M. Dassen (Ray) <jdassen@debian.org>  Sun, 21 Dec 2003 12:59:21 +0100
+
+lcms (1.10-1) unstable; urgency=low
+
+  * New upstream release
+  * New lcms utility package (closes: #131314)
+
+ -- Shiju p. Nair <shiju@infovillage.net>  Fri, 11 Jul 2003 17:43:40 +0300
+
+lcms (1.09-4) unstable; urgency=low
+
+  * New Maintainer (closes: #168566) 
+
+ -- Shiju p. Nair <shiju@infovillage.net>  Sat,  8 Feb 2003 14:40:44 +0300
+
+lcms (1.09-3) unstable; urgency=low
+
+  * Orphaned.
+
+ -- Luis Arocha <data@debian.org>  Sun, 29 Dec 2002 20:38:50 +0000
+
+lcms (1.09-2) unstable; urgency=low
+
+  * Solved bug with optimizacion -O4 (closes: #162760).
+  * Solved (hopely) bug with hppa compilation (closes: #162712).
+
+ -- Luis Arocha <data@debian.org>  Sun, 29 Sep 2002 19:15:43 +0100
+
+lcms (1.09-1) unstable; urgency=low
+
+  * New upstream version (closes: #161954).
+
+ -- Luis Arocha <data@debian.org>  Mon, 23 Sep 2002 17:07:01 +0100
+
+lcms (1.08-5) unstable; urgency=low
+
+  * Added Conflicts and Provides fields to control file.
+    (closes: #152493).
+
+ -- Luis Arocha <data@debian.org>  Sun, 14 Jul 2002 10:10:57 +0100
+
+lcms (1.08-4) unstable; urgency=low
+
+  * Changed description (closes: #130441).
+  * Changed package name from liblcms to liblcms1 (closes: #143527).
+
+ -- Luis Arocha <data@debian.org>  Mon,  3 Jun 2002 18:14:16 +0100
+
+lcms (1.08-3) unstable; urgency=low
+
+  * Yes. Now Maintainer changed.
+
+ -- Luis Arocha <data@debian.org>  Fri,  4 Jan 2002 23:09:48 +0000
+
+lcms (1.08-2) unstable; urgency=low
+
+  * New Maintainer (closes: #127701).
+
+ -- Luis Arocha <data@debian.org>  Fri,  4 Jan 2002 19:27:53 +0000
+
+lcms (1.08-1) unstable; urgency=low
+
+  * New upstream version
+  * More lintian cleanup
+  * Remove alpha g++ build crap as we don't need it anymore however make
+    sure we don't use -O2 and that we do use -mieee
+  * Use upstream build process...however use so's and make it work properly
+  * Add Big Endian support...wonder how bad this is going to break
+
+ -- Ivan E. Moore II <rkrusty@debian.org>  Fri, 23 Nov 2001 20:45:00 -0700
+
+lcms (1.07-5) unstable; urgency=low
+ 
+  * don't use gcc3 for alpha and don't use optimization 
+  * up shlibs version due to alpha changes
+  * lintian cleanup
+ 
+ -- Ivan E. Moore II <rkrusty@debian.org>  Mon, 03 Sep 2001 12:25:00 -0700
+
+lcms (1.07-4) unstable; urgency=low
+ 
+  * use gcc3 for alpha
+
+ -- Ivan E. Moore II <rkrusty@debian.org>  Sat, 07 Jul 2001 02:12:00 -0700
+
+lcms (1.07-3) unstable; urgency=low
+ 
+  * Allow for the build process to crap out if an error occurs. (Closes: #98045)
+ 
+ -- Ivan E. Moore II <rkrusty@debian.org>  Wed, 23 May 2001 01:20:00 -0700
+
+lcms (1.07-2) unstable; urgency=low
+ 
+  * More build cleanup
+  * Update Build-Depends
+ 
+ -- Ivan E. Moore II <rkrusty@debian.org>  Mon, 30 Apr 2001 03:30:00 -0700
+
+lcms (1.07-1) unstable; urgency=low
+ 
+  * New upstream version
+ 
+ -- Ivan E. Moore II <rkrusty@debian.org>  Fri, 09 Feb 2001 04:30:00 -0700
+
+lcms (1.06-5) unstable; urgency=low
+ 
+  * Fixing shlibs since we want to make sure people use the fixed version
+ 
+ -- Ivan E. Moore II <rkrusty@debian.org>  Tue, 16 Jan 2001 10:00:00 -0700
+
+lcms (1.06-4) unstable; urgency=low
+ 
+  * Fixing namespace pollution (Closes: #77494)
+ 
+ -- Ivan E. Moore II <rkrusty@debian.org>  Mon, 20 Nov 2000 02:05:00 -0700
+
+lcms (1.06-3) unstable; urgency=low
+ 
+  * More dependency tweaks
+  * fixing shlibs file
+ 
+ -- Ivan E. Moore II <rkrusty@debian.org>  Sat, 18 Nov 2000 20:27:00 -0700
+
+lcms (1.06-2) unstable; urgency=low
+ 
+  * Minor work on versioning
+ 
+ -- Ivan E. Moore II <rkrusty@debian.org>  Wed,  8 Nov 2000 17:15:00 -0700
+
+lcms (1.06-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Ivan E. Moore II <rkrusty@debian.org>  Sat,  4 Nov 2000 23:18:51 -0700
--- lcms-1.19.dfsg.orig/debian/liblcms-utils.install
+++ lcms-1.19.dfsg/debian/liblcms-utils.install
@@ -0,0 +1 @@
+debian/tmp/usr/bin/* usr/bin/
--- lcms-1.19.dfsg.orig/debian/compat
+++ lcms-1.19.dfsg/debian/compat
@@ -0,0 +1 @@
+5
--- lcms-1.19.dfsg.orig/debian/shlibs
+++ lcms-1.19.dfsg/debian/shlibs
@@ -0,0 +1 @@
+liblcms 1 liblcms1 (>= 1.15-1)
--- lcms-1.19.dfsg.orig/debian/liblcms1.install
+++ lcms-1.19.dfsg/debian/liblcms1.install
@@ -0,0 +1 @@
+debian/tmp/usr/lib/*/liblcms.so.*
--- lcms-1.19.dfsg.orig/debian/liblcms1.dirs
+++ lcms-1.19.dfsg/debian/liblcms1.dirs
@@ -0,0 +1 @@
+usr/lib
--- lcms-1.19.dfsg.orig/debian/copyright
+++ lcms-1.19.dfsg/debian/copyright
@@ -0,0 +1,36 @@
+This package was debianized by Ivan E. Moore II <rkrusty@debian.org> on
+Sat,  4 Nov 2000 23:18:51 -0700.
+Current Maintainer: Shiju p. Nair <shiju.p@gmail.com>.
+Co-maintaner since 2007-04-09: Oleksandr Moskalenko <malex@debian.org>
+
+It was downloaded from http://www.littlecms.com/
+
+Copyright (C) 1998-2006 Marti Maria
+
+Upstream:
+
+ info@littlecms.com
+
+License:
+
+ The lcms library is distributed under
+
+ MIT PUBLIC LICENSE
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so, subject
+ to the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--- lcms-1.19.dfsg.orig/debian/python-liblcms.install
+++ lcms-1.19.dfsg/debian/python-liblcms.install
@@ -0,0 +1 @@
+debian/tmp/usr/lib/python* /usr/lib/
--- lcms-1.19.dfsg.orig/debian/liblcms1-dev.install
+++ lcms-1.19.dfsg/debian/liblcms1-dev.install
@@ -0,0 +1,4 @@
+debian/tmp/usr/include/* usr/include/
+debian/tmp/usr/lib/*/*.a
+debian/tmp/usr/lib/*/*.so
+debian/tmp/usr/lib/*/pkgconfig
--- lcms-1.19.dfsg.orig/debian/liblcms1.docs
+++ lcms-1.19.dfsg/debian/liblcms1.docs
@@ -0,0 +1,2 @@
+NEWS
+README.1ST
--- lcms-1.19.dfsg.orig/debian/liblcms1-dev.dirs
+++ lcms-1.19.dfsg/debian/liblcms1-dev.dirs
@@ -0,0 +1,2 @@
+usr/lib
+usr/include
--- lcms-1.19.dfsg.orig/debian/__init__.py
+++ lcms-1.19.dfsg/debian/__init__.py
@@ -0,0 +1,3 @@
+"""This file is used to make it possible to import lcms python extensions as
+'import lcms'
+"""
--- lcms-1.19.dfsg.orig/debian/man/jpegicc.1
+++ lcms-1.19.dfsg/debian/man/jpegicc.1
@@ -0,0 +1,80 @@
+.\"Shiju P. Nair September 30, 2004
+.TH JPEGICC 1 "September 30, 2004"
+.SH NAME
+jpegicc - little cms ICC profile applier for JPEG.
+.SH SYNOPSIS
+.B jpegicc
+.RI [ options ] " input.jpg output.jpg"
+.SH DESCRIPTION
+lcms is a standalone CMM engine, which deals with the color management.
+It implements a fast transformation between ICC profiles.
+.B jpegicc 
+is little cms ICC profile applier for JPEG.
+.SH OPTIONS
+.TP
+.B \-b 
+Black point compensation.
+.TP 
+.B \-c <0,1,2,3>
+Precalculates transform. (0=Off, 1=Normal, 2=Hi-res, 3=LoRes) [defaults to 1]
+.TP
+.B \-g
+Marks out-of-gamut colors on softproof.
+.TP
+.B \-h <0,1,2>
+Show summary of options and examples.
+.TP
+.BI \-i\  profile
+Input profile (defaults to sRGB).
+.TP
+.B \-m <0,1,2,3>
+SoftProof intent.
+.TP
+.B \-n
+Ignore embedded profile.
+.TP
+.BI \-p\  profile
+Soft proof profile
+.TP
+.BI \-o\  profile
+.TP
+Output profile (defaults to sRGB).
+.TP
+.B \-q <0..100>
+Output JPEG quality.
+.TP
+.B \-t <0,1,2,3>
+Intent (0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute).
+.TP
+.B \-v
+Verbose.
+.SH EXAMPLES
+.nf
+To color correct from scanner to sRGB:
+	jpegicc -iscanner.icm in.jpg out.jpg
+	
+To convert from monitor1 to monitor2:
+	jpegicc -imon1.icm -omon2.icm in.jpg out.jpg
+
+To make a CMYK separation:
+	jpegicc -oprinter.icm inrgb.jpg outcmyk.jpg
+
+To recover sRGB from a CMYK separation:
+	jpegicc -iprinter.icm incmyk.jpg outrgb.jpg
+
+To convert from CIELab ITU/Fax JPEG to sRGB
+	jpegicc -iitufax.icm in.jpg out.jpg
+.fi	
+.SH NOTES
+For suggestions, comments, bug reports etc. send mail to
+info@littlecms.com.
+.SH SEE ALSO
+.BR tifficc (1),
+.BR tiffdiff (1),
+.BR icc2ps (1),
+.BR icclink (1),
+.BR icctrans (1),
+.BR wtpt (1)
+.SH AUTHOR
+This manual page was written by Shiju p. Nair <shiju.p@gmail.com>,
+for the Debian project.
--- lcms-1.19.dfsg.orig/debian/man/icclink.1
+++ lcms-1.19.dfsg/debian/man/icclink.1
@@ -0,0 +1,91 @@
+.\"Shiju P. Nair September 30, 2004
+.TH ICCLINK 1 "September 30, 2004"
+.SH NAME
+icclink - little cms device link generator.
+.SH SYNOPSIS
+.B icclink
+.RI [ options ] " <profiles>"
+.SH DESCRIPTION
+lcms is a standalone CMM engine, which deals with the color management.
+It implements a fast transformation between ICC profiles.
+.B icclink 
+is little cms device link generator.
+.P
+Links two or more profiles into a single devicelink profile.
+Colorspaces must be paired except Lab/XYZ, that can be interchanged.
+.SH OPTIONS
+.TP
+.B \-8
+Creates 8-bit devicelink.
+.TP
+.B \-b 
+Black point compensation.
+.TP
+.B \-c <0,1,2,3>
+Precission (0=LowRes, 1=Normal, 2=Hi-res). [defaults to 1]
+.TP
+.BI \-d\  description
+Description text (quotes can be used).
+.TP
+.B \-h <0,1,2,3>
+Show summary of options and examples.
+.TP
+.BI \-i\  profile
+Input profile (defaults to sRGB).
+.TP
+.B -k <0..400> 
+Ink-limiting in % (CMYK only)
+.TP
+.BI \-o\  profile
+Output devicelink profile. [defaults to 'devicelink.icm']
+.TP
+.B \-t <0,1,2,3>
+Intent (0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute).
+.TP
+.B \-x 
+Creatively, guess deviceclass of resulting profile.
+.TP
+.nf
+Built-in profiles:
+	*Lab  -- D50-based CIEL*a*b (PCS)
+	*XYZ  -- CIE XYZ (PCS)
+	*sRGB -- sRGB color space
+	*Gray22- Monochrome of Gamma 2.2
+	*Lin2222- CMYK linearization of gamma 2.2 on each channel
+.fi					
+.SH EXAMPLES
+.nf
+To create 'devicelink.icm' from a.icc to b.icc:
+	icclink a.icc b.icc
+
+To create 'out.icc' from sRGB to cmyk.icc:
+	icclink -o out.icc *sRGB cmyk.icc
+
+To create a sRGB input profile working in Lab:
+	icclink -x -o sRGBLab.icc *sRGB *Lab
+
+To create a XYZ -> sRGB output profile:
+	icclink -x -o sRGBLab.icc *XYZ *sRGB
+
+To create a abstract profile doing softproof for cmyk.icc:
+	icclink -t1 -x -o softproof.icc *Lab cmyk.icc cmyk.icc *Lab
+
+To create a 'grayer' sRGB input profile:
+	icclink -x -o grayer.icc *sRGB gray.icc gray.icc *Lab
+
+To embed ink limiting into a cmyk output profile:
+	icclink -x -o cmyklimited.icc -k 250 cmyk.icc *Lab
+.fi
+.SH NOTES
+For suggestions, comments, bug reports etc. send mail to
+info@littlecms.com.
+.SH SEE ALSO
+.BR jpegicc (1),
+.BR tifficc (1),
+.BR tiffdiff (1),
+.BR icc2ps (1),
+.BR icctrans (1),
+.BR wtpt (1)
+.SH AUTHOR
+This manual page was written by Shiju p. Nair <shiju.p@gmail.com>,
+for the Debian project.
--- lcms-1.19.dfsg.orig/debian/man/tifficc.1
+++ lcms-1.19.dfsg/debian/man/tifficc.1
@@ -0,0 +1,97 @@
+.\"Shiju P. Nair September 30, 2004
+.TH TIFFICC 1 "September 30, 2004"
+.SH NAME 
+tifficc - little cms ICC profile applier for TIFF.
+.SH SYNOPSIS
+.B tifficc
+.RI [ options ] " input.tif output.tif"
+.SH DESCRIPTION
+lcms is a standalone CMM engine, which deals with the color management.
+It implements a fast transformation between ICC profiles.
+.B tifficc 
+is little cms ICC profile applier for TIFF.
+.SH OPTIONS
+.TP
+.B \-a
+Handle channels > 4 as alpha.
+.TP
+.B \-b 
+Black point compensation.
+.TP
+.B \-c <0,1,2,3>
+Precalculates transform. (0=Off, 1=Normal, 2=Hi-res, 3=LoRes) [defaults to 1]
+.TP
+.B \-e
+Embed destination profile.
+.TP
+.B \-g
+Marks out-of-gamut colors on softproof.
+.TP
+.B \-h <0,1,2>
+Show summary of options and examples.
+.TP
+.BI \-i\  profile
+Input profile (defaults to sRGB).
+.TP
+.B -k <0..400> 
+Ink-limiting in % (CMYK only).
+.TP
+.B \-l
+Transform by device-link profile.
+.TP
+.B \-m <0,1,2,3>
+SoftProof intent.
+.TP
+.B \-n
+Ignore embedded profile on input.
+.TP
+.BI \-p\  profile
+Soft proof profile.
+.TP
+.BI \-o\  profile
+.TP
+Output profile (defaults to sRGB).
+.TP
+.B \-q <0..100>
+Output JPEG quality.
+.TP
+.B \-t <0,1,2,3>
+Intent (0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute).
+.TP
+.B \-v
+Verbose.
+.TP
+.B \-w
+Wide output (generates 16 bps tiff).
+.TP
+You can also use '*Lab' and '*XYZ' as predefined, built-in profiles for CIE L*a*b* and XYZ color spaces.
+.SH EXAMPLES
+.nf
+To color correct from scanner to sRGB:
+	tifficc -iscanner.icm in.tif out.tif
+
+To convert from monitor1 to monitor2:
+	tifficc -imon1.icm -omon2.icm in.tif out.tif
+	
+To make a CMYK separation:
+	tifficc -oprinter.icm inrgb.tif outcmyk.tif
+	
+To recover sRGB from a CMYK separation:
+	tifficc -iprinter.icm incmyk.tif outrgb.tif
+
+To convert from CIELab TIFF to sRGB
+	tifficc -iTiffLab8Spac.icm in.tif out.tif
+.fi				
+.SH NOTES
+For suggestions, comments, bug reports etc. send mail to
+info@littlecms.com.
+.SH SEE ALSO
+.BR tiffdiff (1),
+.BR jpegicc (1),
+.BR icc2ps (1),
+.BR icclink (1),
+.BR icctrans (1),
+.BR wtpt (1)
+.SH AUTHOR
+This manual page was written by Shiju p. Nair <shiju.p@gmail.com>,
+for the Debian project.
--- lcms-1.19.dfsg.orig/debian/man/tiffdiff.1
+++ lcms-1.19.dfsg/debian/man/tiffdiff.1
@@ -0,0 +1,39 @@
+.\"Shiju P. Nair September 30, 2004
+.TH TIFFDIFF 1 "March 25, 2006"
+.SH NAME 
+tiffdiff - Little cms TIFF compare utility.
+.SH SYNOPSIS
+.B tiffdiff
+.RI [ flags ] " input.tif output.tif"
+.SH DESCRIPTION
+lcms is a standalone CMM engine, which deals with the color management.
+It implements a fast transformation between ICC profiles.
+.B tiffdiff
+is Little cms TIFF compare utility.
+.SH OPTIONS
+.TP
+.B \-o<tiff>
+Output TIFF file.
+.TP
+.B \-g<CGATS>
+Output results in CGATS file.
+.TP
+.B \-v
+Verbose (show warnings).
+.TP
+.B \-h
+Help.
+.fi				
+.SH NOTES
+For suggestions, comments, bug reports etc. send mail to
+info@littlecms.com.
+.SH SEE ALSO
+.BR jpegicc (1),
+.BR tifficc (1),
+.BR icc2ps (1),
+.BR icclink (1),
+.BR icctrans (1),
+.BR wtpt (1)
+.SH AUTHOR
+This manual page was written by Shiju p. Nair <shiju.p@gmail.com>,
+for the Debian project.
--- lcms-1.19.dfsg.orig/debian/man/wtpt.1
+++ lcms-1.19.dfsg/debian/man/wtpt.1
@@ -0,0 +1,29 @@
+.\"Shiju P. Nair September 30, 2004
+.TH WTPT 1 "September 30, 2004"
+.SH NAME 
+wtpt - Show media white of profiles, identifying black body locus.
+.SH SYNOPSIS
+.B wtpt
+.RI [ profile ]
+.SH DESCRIPTION
+lcms is a standalone CMM engine, which deals with the color management.
+It implements a fast transformation between ICC profiles.
+.B wtpt 
+shows media white of profiles, identifying black body locus.
+.P
+If no parameters are given, then this program will
+ask for XYZ value of media white. If parameter given, it must be
+the profile to inspect.
+.SH NOTES
+For suggestions, comments, bug reports etc. send mail to
+info@littlecms.com
+.SH SEE ALSO
+.BR jpegicc (1),
+.BR tifficc (1),
+.BR tiffdiff (1),
+.BR icc2ps (1),
+.BR icclink (1),
+.BR icctrans (1)
+.SH AUTHOR
+This manual page was written by Shiju p. Nair <shiju.p@gmail.com>,
+for the Debian project.
--- lcms-1.19.dfsg.orig/debian/man/icc2ps.1
+++ lcms-1.19.dfsg/debian/man/icc2ps.1
@@ -0,0 +1,42 @@
+.\"Shiju P. Nair September 30, 2004
+.TH ICC2PS 1 "September 30, 2004"
+.SH NAME
+icc2ps - little cms PostScript converter.
+.SH SYNOPSIS
+.B icc2ps
+.RI [ options ]
+.SH DESCRIPTION
+lcms is a standalone CMM engine, which deals with the color management.
+It implements a fast transformation between ICC profiles.
+.B icc2ps 
+is little cms PostScript converter.
+.SH OPTIONS
+.TP
+.B \-b 
+Black point compensation (CRD only).
+.TP
+.BI \-i\  profile
+Input profile: Generates Color Space Array (CSA).
+.TP
+.BI \-o\  profile
+.TP
+Output profile: Generates Color Rendering Dictionary(CRD).
+.TP
+.B \-t <0,1,2,3>
+Intent (0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute).
+.TP
+.B \-u 
+Do NOT generate resource name on CRD.
+.SH NOTES
+For suggestions, comments, bug reports etc. send mail to
+info@littlecms.com.
+.SH SEE ALSO
+.BR jpegicc (1),
+.BR tifficc (1),
+.BR tiffdiff (1),
+.BR icclink (1),
+.BR icctrans (1),
+.BR wtpt (1)
+.SH AUTHOR
+This manual page was written by Shiju p. Nair <shiju.p@gmail.com>,
+for the Debian project.
--- lcms-1.19.dfsg.orig/debian/man/icctrans.1
+++ lcms-1.19.dfsg/debian/man/icctrans.1
@@ -0,0 +1,62 @@
+.\"Shiju P. Nair September 30, 2004
+.TH ICCTRANS 1 "September 30, 2004"
+.SH NAME
+icctrans - little cms ColorSpace conversion calculator.
+.SH SYNOPSIS
+.B icctrans
+.RI [ options ]
+.SH DESCRIPTION
+lcms is a standalone CMM engine, which deals with the color management.
+It implements a fast transformation between ICC profiles.
+.B icctrans 
+is lcms ColorSpace conversion calculator.
+.SH OPTIONS
+.TP
+.B \-%
+use percent % of ink.
+.TP
+.B \-b 
+Black point compensation.
+.TP
+.B \-c <0,1,2,3>
+Precalculates transform. (0=Off, 1=Normal, 2=Hi-res, 3=LoRes) [defaults to 1]
+.TP
+.BI \-i\  profile
+Input profile (defaults to sRGB).
+.TP
+.B \-l
+Transform by device-link profile.
+.TP
+.B \-n
+Terse output, intended for pipe usage.
+.TP
+.BI \-o\  profile
+.TP
+Output profile (defaults to sRGB).
+.TP
+.B \-t <0,1,2,3>
+Intent (0=Perceptual, 1=Colorimetric, 2=Saturation, 3=Absolute).
+.TP
+.B \-v
+Verbose.
+.TP
+.B \-w
+Use 16 bits.
+.TP
+.B \-x
+Hexadecimal.
+.TP
+You can use '*Lab' and '*xyz' as built-in profiles.
+.SH NOTES
+For suggestions, comments, bug reports etc. send mail to
+info@littlecms.com.
+.SH SEE ALSO
+.BR jpegicc (1),
+.BR tifficc (1),
+.BR tiffdiff (1),
+.BR icc2ps (1),
+.BR icclink (1),
+.BR wtpt (1)
+.SH AUTHOR
+This manual page was written by Shiju p. Nair <shiju.p@gmail.com>,
+for the Debian project.
