/* unit.c generated by valac 0.34.4, the Vala compiler
 * generated from unit.vala, do not modify */

/*
 * Copyright (C) 2008-2012 Robert Ancell.
 *
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
 * license.
 */

#include <glib.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <glib/gi18n-lib.h>


#define TYPE_UNIT_MANAGER (unit_manager_get_type ())
#define UNIT_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_UNIT_MANAGER, UnitManager))
#define UNIT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_UNIT_MANAGER, UnitManagerClass))
#define IS_UNIT_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_UNIT_MANAGER))
#define IS_UNIT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_UNIT_MANAGER))
#define UNIT_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_UNIT_MANAGER, UnitManagerClass))

typedef struct _UnitManager UnitManager;
typedef struct _UnitManagerClass UnitManagerClass;
typedef struct _UnitManagerPrivate UnitManagerPrivate;

#define TYPE_UNIT_CATEGORY (unit_category_get_type ())
#define UNIT_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_UNIT_CATEGORY, UnitCategory))
#define UNIT_CATEGORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_UNIT_CATEGORY, UnitCategoryClass))
#define IS_UNIT_CATEGORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_UNIT_CATEGORY))
#define IS_UNIT_CATEGORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_UNIT_CATEGORY))
#define UNIT_CATEGORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_UNIT_CATEGORY, UnitCategoryClass))

typedef struct _UnitCategory UnitCategory;
typedef struct _UnitCategoryClass UnitCategoryClass;
#define __g_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (var), NULL)))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define TYPE_UNIT (unit_get_type ())
#define UNIT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_UNIT, Unit))
#define UNIT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_UNIT, UnitClass))
#define IS_UNIT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_UNIT))
#define IS_UNIT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_UNIT))
#define UNIT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_UNIT, UnitClass))

typedef struct _Unit Unit;
typedef struct _UnitClass UnitClass;

#define TYPE_CURRENCY (currency_get_type ())
#define CURRENCY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CURRENCY, Currency))
#define CURRENCY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CURRENCY, CurrencyClass))
#define IS_CURRENCY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CURRENCY))
#define IS_CURRENCY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CURRENCY))
#define CURRENCY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CURRENCY, CurrencyClass))

typedef struct _Currency Currency;
typedef struct _CurrencyClass CurrencyClass;

#define TYPE_CURRENCY_MANAGER (currency_manager_get_type ())
#define CURRENCY_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CURRENCY_MANAGER, CurrencyManager))
#define CURRENCY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CURRENCY_MANAGER, CurrencyManagerClass))
#define IS_CURRENCY_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CURRENCY_MANAGER))
#define IS_CURRENCY_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CURRENCY_MANAGER))
#define CURRENCY_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CURRENCY_MANAGER, CurrencyManagerClass))

typedef struct _CurrencyManager CurrencyManager;
typedef struct _CurrencyManagerClass CurrencyManagerClass;
#define _g_free0(var) (var = (g_free (var), NULL))

#define TYPE_NUMBER (number_get_type ())
#define NUMBER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_NUMBER, Number))
#define NUMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_NUMBER, NumberClass))
#define IS_NUMBER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_NUMBER))
#define IS_NUMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_NUMBER))
#define NUMBER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_NUMBER, NumberClass))

typedef struct _Number Number;
typedef struct _NumberClass NumberClass;
typedef struct _UnitCategoryPrivate UnitCategoryPrivate;
typedef struct _UnitPrivate UnitPrivate;

#define TYPE_SERIALIZER (serializer_get_type ())
#define SERIALIZER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SERIALIZER, Serializer))
#define SERIALIZER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SERIALIZER, SerializerClass))
#define IS_SERIALIZER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SERIALIZER))
#define IS_SERIALIZER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SERIALIZER))
#define SERIALIZER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SERIALIZER, SerializerClass))

typedef struct _Serializer Serializer;
typedef struct _SerializerClass SerializerClass;
#define __g_list_free__g_free0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_free0_ (var), NULL)))

#define TYPE_DISPLAY_FORMAT (display_format_get_type ())

#define TYPE_EQUATION (equation_get_type ())
#define EQUATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EQUATION, Equation))
#define EQUATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EQUATION, EquationClass))
#define IS_EQUATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EQUATION))
#define IS_EQUATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EQUATION))
#define EQUATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EQUATION, EquationClass))

typedef struct _Equation Equation;
typedef struct _EquationClass EquationClass;

#define TYPE_UNIT_SOLVE_EQUATION (unit_solve_equation_get_type ())
#define UNIT_SOLVE_EQUATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_UNIT_SOLVE_EQUATION, UnitSolveEquation))
#define UNIT_SOLVE_EQUATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_UNIT_SOLVE_EQUATION, UnitSolveEquationClass))
#define IS_UNIT_SOLVE_EQUATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_UNIT_SOLVE_EQUATION))
#define IS_UNIT_SOLVE_EQUATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_UNIT_SOLVE_EQUATION))
#define UNIT_SOLVE_EQUATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_UNIT_SOLVE_EQUATION, UnitSolveEquationClass))

typedef struct _UnitSolveEquation UnitSolveEquation;
typedef struct _UnitSolveEquationClass UnitSolveEquationClass;
typedef struct _EquationPrivate EquationPrivate;

#define TYPE_ANGLE_UNIT (angle_unit_get_type ())

#define TYPE_ERROR_CODE (error_code_get_type ())
typedef struct _UnitSolveEquationPrivate UnitSolveEquationPrivate;

struct _UnitManager {
	GObject parent_instance;
	UnitManagerPrivate * priv;
};

struct _UnitManagerClass {
	GObjectClass parent_class;
};

struct _UnitManagerPrivate {
	GList* categories;
};

struct _UnitCategory {
	GObject parent_instance;
	UnitCategoryPrivate * priv;
};

struct _UnitCategoryClass {
	GObjectClass parent_class;
};

struct _UnitCategoryPrivate {
	GList* units;
	gchar* _name;
	gchar* _display_name;
};

struct _Unit {
	GObject parent_instance;
	UnitPrivate * priv;
};

struct _UnitClass {
	GObjectClass parent_class;
};

struct _UnitPrivate {
	gchar* _name;
	gchar* _display_name;
	gchar* _format;
	GList* _symbols;
	gchar* from_function;
	gchar* to_function;
	Serializer* serializer;
};

typedef enum  {
	DISPLAY_FORMAT_AUTOMATIC,
	DISPLAY_FORMAT_FIXED,
	DISPLAY_FORMAT_SCIENTIFIC,
	DISPLAY_FORMAT_ENGINEERING
} DisplayFormat;

typedef enum  {
	ANGLE_UNIT_RADIANS,
	ANGLE_UNIT_DEGREES,
	ANGLE_UNIT_GRADIANS
} AngleUnit;

struct _Equation {
	GObject parent_instance;
	EquationPrivate * priv;
	gint base;
	gint wordlen;
	AngleUnit angle_units;
};

struct _EquationClass {
	GObjectClass parent_class;
	gboolean (*variable_is_defined) (Equation* self, const gchar* name);
	Number* (*get_variable) (Equation* self, const gchar* name);
	void (*set_variable) (Equation* self, const gchar* name, Number* x);
	gboolean (*function_is_defined) (Equation* self, const gchar* name);
	Number* (*convert) (Equation* self, Number* x, const gchar* x_units, const gchar* z_units);
};

typedef enum  {
	ERROR_CODE_NONE,
	ERROR_CODE_INVALID,
	ERROR_CODE_OVERFLOW,
	ERROR_CODE_UNKNOWN_VARIABLE,
	ERROR_CODE_UNKNOWN_FUNCTION,
	ERROR_CODE_UNKNOWN_CONVERSION,
	ERROR_CODE_MP
} ErrorCode;

struct _UnitSolveEquation {
	Equation parent_instance;
	UnitSolveEquationPrivate * priv;
};

struct _UnitSolveEquationClass {
	EquationClass parent_class;
};

struct _UnitSolveEquationPrivate {
	Number* x;
};


extern UnitManager* default_unit_manager;
UnitManager* default_unit_manager = NULL;
static gpointer unit_manager_parent_class = NULL;
static gpointer unit_category_parent_class = NULL;
static gpointer unit_parent_class = NULL;
static gpointer unit_solve_equation_parent_class = NULL;

GType unit_manager_get_type (void) G_GNUC_CONST;
GType unit_category_get_type (void) G_GNUC_CONST;
#define UNIT_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_UNIT_MANAGER, UnitManagerPrivate))
enum  {
	UNIT_MANAGER_DUMMY_PROPERTY
};
static void _g_object_unref0_ (gpointer var);
static void _g_list_free__g_object_unref0_ (GList* self);
UnitManager* unit_manager_new (void);
UnitManager* unit_manager_construct (GType object_type);
UnitManager* unit_manager_get_default (void);
UnitCategory* unit_manager_add_category (UnitManager* self, const gchar* name, const gchar* display_name);
GType unit_get_type (void) G_GNUC_CONST;
void unit_category_add_unit (UnitCategory* self, Unit* unit);
Unit* unit_new (const gchar* name, const gchar* display_name, const gchar* format, const gchar* from_function, const gchar* to_function, const gchar* symbols);
Unit* unit_construct (GType object_type, const gchar* name, const gchar* display_name, const gchar* format, const gchar* from_function, const gchar* to_function, const gchar* symbols);
GType currency_get_type (void) G_GNUC_CONST;
GType currency_manager_get_type (void) G_GNUC_CONST;
CurrencyManager* currency_manager_get_default (void);
GList* currency_manager_get_currencies (CurrencyManager* self);
static gint __lambda9_ (Currency* a, Currency* b);
gchar* currency_get_display_name (Currency* self);
static gint ___lambda9__gcompare_func (gconstpointer a, gconstpointer b);
gchar* currency_get_symbol (Currency* self);
gchar* currency_get_name (Currency* self);
UnitCategory* unit_category_new (const gchar* name, const gchar* display_name);
UnitCategory* unit_category_construct (GType object_type, const gchar* name, const gchar* display_name);
GList* unit_manager_get_categories (UnitManager* self);
UnitCategory* unit_manager_get_category (UnitManager* self, const gchar* category);
gchar* unit_category_get_name (UnitCategory* self);
Unit* unit_manager_get_unit_by_name (UnitManager* self, const gchar* name);
Unit* unit_category_get_unit_by_name (UnitCategory* self, const gchar* name, gboolean case_sensitive);
Unit* unit_manager_get_unit_by_symbol (UnitManager* self, const gchar* symbol);
Unit* unit_category_get_unit_by_symbol (UnitCategory* self, const gchar* symbol, gboolean case_sensitive);
GType number_get_type (void) G_GNUC_CONST;
Number* unit_manager_convert_by_symbol (UnitManager* self, Number* x, const gchar* x_symbol, const gchar* z_symbol);
Number* unit_category_convert (UnitCategory* self, Number* x, Unit* x_units, Unit* z_units);
static void unit_manager_finalize (GObject* obj);
#define UNIT_CATEGORY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_UNIT_CATEGORY, UnitCategoryPrivate))
enum  {
	UNIT_CATEGORY_DUMMY_PROPERTY,
	UNIT_CATEGORY_NAME,
	UNIT_CATEGORY_DISPLAY_NAME
};
gchar* unit_get_name (Unit* self);
gboolean unit_matches_symbol (Unit* self, const gchar* symbol, gboolean case_sensitive);
GList* unit_category_get_units (UnitCategory* self);
Number* unit_convert_from (Unit* self, Number* x);
Number* unit_convert_to (Unit* self, Number* x);
gchar* unit_category_get_display_name (UnitCategory* self);
static void unit_category_finalize (GObject* obj);
static void _vala_unit_category_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
GType serializer_get_type (void) G_GNUC_CONST;
#define UNIT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_UNIT, UnitPrivate))
enum  {
	UNIT_DUMMY_PROPERTY,
	UNIT_NAME,
	UNIT_DISPLAY_NAME
};
static void _g_free0_ (gpointer var);
static void _g_list_free__g_free0_ (GList* self);
GType display_format_get_type (void) G_GNUC_CONST;
Serializer* serializer_new (DisplayFormat format, gint number_base, gint trailing_digits);
Serializer* serializer_construct (GType object_type, DisplayFormat format, gint number_base, gint trailing_digits);
void serializer_set_leading_digits (Serializer* self, gint leading_digits);
GList* unit_get_symbols (Unit* self);
static Number* unit_solve_function (Unit* self, const gchar* function, Number* x);
Number* currency_manager_get_value (CurrencyManager* self, const gchar* currency);
Number* number_divide (Number* self, Number* y);
Number* number_multiply (Number* self, Number* y);
gchar* unit_format (Unit* self, Number* x);
gchar* serializer_to_string (Serializer* self, Number* x);
GType equation_get_type (void) G_GNUC_CONST;
GType unit_solve_equation_get_type (void) G_GNUC_CONST;
UnitSolveEquation* unit_solve_equation_new (const gchar* function, Number* x);
UnitSolveEquation* unit_solve_equation_construct (GType object_type, const gchar* function, Number* x);
GType angle_unit_get_type (void) G_GNUC_CONST;
GType error_code_get_type (void) G_GNUC_CONST;
Number* equation_parse (Equation* self, guint* representation_base, ErrorCode* error_code, gchar** error_token, guint** error_start, guint** error_end);
gchar* unit_get_display_name (Unit* self);
static void unit_finalize (GObject* obj);
static void _vala_unit_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
#define UNIT_SOLVE_EQUATION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_UNIT_SOLVE_EQUATION, UnitSolveEquationPrivate))
enum  {
	UNIT_SOLVE_EQUATION_DUMMY_PROPERTY
};
Equation* equation_new (const gchar* expression);
Equation* equation_construct (GType object_type, const gchar* expression);
static gboolean unit_solve_equation_real_variable_is_defined (Equation* base, const gchar* name);
static Number* unit_solve_equation_real_get_variable (Equation* base, const gchar* name);
static void unit_solve_equation_finalize (GObject* obj);
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
static gint _vala_array_length (gpointer array);


static void _g_object_unref0_ (gpointer var) {
	(var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
}


static void _g_list_free__g_object_unref0_ (GList* self) {
	g_list_foreach (self, (GFunc) _g_object_unref0_, NULL);
	g_list_free (self);
}


UnitManager* unit_manager_construct (GType object_type) {
	UnitManager * self = NULL;
	self = (UnitManager*) g_object_new (object_type, NULL);
	__g_list_free__g_object_unref0_0 (self->priv->categories);
	self->priv->categories = NULL;
	return self;
}


UnitManager* unit_manager_new (void) {
	return unit_manager_construct (TYPE_UNIT_MANAGER);
}


static gpointer _g_object_ref0 (gpointer self) {
	return self ? g_object_ref (self) : NULL;
}


static gint __lambda9_ (Currency* a, Currency* b) {
	gint result = 0;
	Currency* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	Currency* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	gint _tmp8_ = 0;
	gint _tmp9_ = 0;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	_tmp0_ = a;
	_tmp1_ = currency_get_display_name (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = _tmp2_;
	_tmp4_ = b;
	_tmp5_ = currency_get_display_name (_tmp4_);
	_tmp6_ = _tmp5_;
	_tmp7_ = _tmp6_;
	_tmp8_ = g_utf8_collate (_tmp3_, _tmp7_);
	_tmp9_ = _tmp8_;
	_g_free0 (_tmp7_);
	_g_free0 (_tmp3_);
	result = _tmp9_;
	return result;
}


static gint ___lambda9__gcompare_func (gconstpointer a, gconstpointer b) {
	gint result;
	result = __lambda9_ ((Currency*) a, (Currency*) b);
	return result;
}


UnitManager* unit_manager_get_default (void) {
	UnitManager* result = NULL;
	UnitManager* _tmp0_ = NULL;
	UnitManager* _tmp3_ = NULL;
	UnitCategory* angle_category = NULL;
	UnitManager* _tmp4_ = NULL;
	const gchar* _tmp5_ = NULL;
	UnitCategory* _tmp6_ = NULL;
	UnitCategory* length_category = NULL;
	UnitManager* _tmp7_ = NULL;
	const gchar* _tmp8_ = NULL;
	UnitCategory* _tmp9_ = NULL;
	UnitCategory* area_category = NULL;
	UnitManager* _tmp10_ = NULL;
	const gchar* _tmp11_ = NULL;
	UnitCategory* _tmp12_ = NULL;
	UnitCategory* volume_category = NULL;
	UnitManager* _tmp13_ = NULL;
	const gchar* _tmp14_ = NULL;
	UnitCategory* _tmp15_ = NULL;
	UnitCategory* weight_category = NULL;
	UnitManager* _tmp16_ = NULL;
	const gchar* _tmp17_ = NULL;
	UnitCategory* _tmp18_ = NULL;
	UnitCategory* duration_category = NULL;
	UnitManager* _tmp19_ = NULL;
	const gchar* _tmp20_ = NULL;
	UnitCategory* _tmp21_ = NULL;
	UnitCategory* temperature_category = NULL;
	UnitManager* _tmp22_ = NULL;
	const gchar* _tmp23_ = NULL;
	UnitCategory* _tmp24_ = NULL;
	UnitCategory* digitalstorage_category = NULL;
	UnitManager* _tmp25_ = NULL;
	const gchar* _tmp26_ = NULL;
	UnitCategory* _tmp27_ = NULL;
	UnitCategory* _tmp28_ = NULL;
	const gchar* _tmp29_ = NULL;
	const gchar* _tmp30_ = NULL;
	const gchar* _tmp31_ = NULL;
	Unit* _tmp32_ = NULL;
	Unit* _tmp33_ = NULL;
	UnitCategory* _tmp34_ = NULL;
	const gchar* _tmp35_ = NULL;
	const gchar* _tmp36_ = NULL;
	const gchar* _tmp37_ = NULL;
	Unit* _tmp38_ = NULL;
	Unit* _tmp39_ = NULL;
	UnitCategory* _tmp40_ = NULL;
	const gchar* _tmp41_ = NULL;
	const gchar* _tmp42_ = NULL;
	const gchar* _tmp43_ = NULL;
	Unit* _tmp44_ = NULL;
	Unit* _tmp45_ = NULL;
	UnitCategory* _tmp46_ = NULL;
	const gchar* _tmp47_ = NULL;
	const gchar* _tmp48_ = NULL;
	const gchar* _tmp49_ = NULL;
	Unit* _tmp50_ = NULL;
	Unit* _tmp51_ = NULL;
	UnitCategory* _tmp52_ = NULL;
	const gchar* _tmp53_ = NULL;
	const gchar* _tmp54_ = NULL;
	const gchar* _tmp55_ = NULL;
	Unit* _tmp56_ = NULL;
	Unit* _tmp57_ = NULL;
	UnitCategory* _tmp58_ = NULL;
	const gchar* _tmp59_ = NULL;
	const gchar* _tmp60_ = NULL;
	const gchar* _tmp61_ = NULL;
	Unit* _tmp62_ = NULL;
	Unit* _tmp63_ = NULL;
	UnitCategory* _tmp64_ = NULL;
	const gchar* _tmp65_ = NULL;
	const gchar* _tmp66_ = NULL;
	const gchar* _tmp67_ = NULL;
	Unit* _tmp68_ = NULL;
	Unit* _tmp69_ = NULL;
	UnitCategory* _tmp70_ = NULL;
	const gchar* _tmp71_ = NULL;
	const gchar* _tmp72_ = NULL;
	const gchar* _tmp73_ = NULL;
	Unit* _tmp74_ = NULL;
	Unit* _tmp75_ = NULL;
	UnitCategory* _tmp76_ = NULL;
	const gchar* _tmp77_ = NULL;
	const gchar* _tmp78_ = NULL;
	const gchar* _tmp79_ = NULL;
	Unit* _tmp80_ = NULL;
	Unit* _tmp81_ = NULL;
	UnitCategory* _tmp82_ = NULL;
	const gchar* _tmp83_ = NULL;
	const gchar* _tmp84_ = NULL;
	const gchar* _tmp85_ = NULL;
	Unit* _tmp86_ = NULL;
	Unit* _tmp87_ = NULL;
	UnitCategory* _tmp88_ = NULL;
	const gchar* _tmp89_ = NULL;
	const gchar* _tmp90_ = NULL;
	const gchar* _tmp91_ = NULL;
	Unit* _tmp92_ = NULL;
	Unit* _tmp93_ = NULL;
	UnitCategory* _tmp94_ = NULL;
	const gchar* _tmp95_ = NULL;
	const gchar* _tmp96_ = NULL;
	const gchar* _tmp97_ = NULL;
	Unit* _tmp98_ = NULL;
	Unit* _tmp99_ = NULL;
	UnitCategory* _tmp100_ = NULL;
	const gchar* _tmp101_ = NULL;
	const gchar* _tmp102_ = NULL;
	const gchar* _tmp103_ = NULL;
	Unit* _tmp104_ = NULL;
	Unit* _tmp105_ = NULL;
	UnitCategory* _tmp106_ = NULL;
	const gchar* _tmp107_ = NULL;
	const gchar* _tmp108_ = NULL;
	const gchar* _tmp109_ = NULL;
	Unit* _tmp110_ = NULL;
	Unit* _tmp111_ = NULL;
	UnitCategory* _tmp112_ = NULL;
	const gchar* _tmp113_ = NULL;
	const gchar* _tmp114_ = NULL;
	const gchar* _tmp115_ = NULL;
	Unit* _tmp116_ = NULL;
	Unit* _tmp117_ = NULL;
	UnitCategory* _tmp118_ = NULL;
	const gchar* _tmp119_ = NULL;
	const gchar* _tmp120_ = NULL;
	const gchar* _tmp121_ = NULL;
	Unit* _tmp122_ = NULL;
	Unit* _tmp123_ = NULL;
	UnitCategory* _tmp124_ = NULL;
	const gchar* _tmp125_ = NULL;
	const gchar* _tmp126_ = NULL;
	const gchar* _tmp127_ = NULL;
	Unit* _tmp128_ = NULL;
	Unit* _tmp129_ = NULL;
	UnitCategory* _tmp130_ = NULL;
	const gchar* _tmp131_ = NULL;
	const gchar* _tmp132_ = NULL;
	const gchar* _tmp133_ = NULL;
	Unit* _tmp134_ = NULL;
	Unit* _tmp135_ = NULL;
	UnitCategory* _tmp136_ = NULL;
	const gchar* _tmp137_ = NULL;
	const gchar* _tmp138_ = NULL;
	const gchar* _tmp139_ = NULL;
	Unit* _tmp140_ = NULL;
	Unit* _tmp141_ = NULL;
	UnitCategory* _tmp142_ = NULL;
	const gchar* _tmp143_ = NULL;
	const gchar* _tmp144_ = NULL;
	const gchar* _tmp145_ = NULL;
	Unit* _tmp146_ = NULL;
	Unit* _tmp147_ = NULL;
	UnitCategory* _tmp148_ = NULL;
	const gchar* _tmp149_ = NULL;
	const gchar* _tmp150_ = NULL;
	const gchar* _tmp151_ = NULL;
	Unit* _tmp152_ = NULL;
	Unit* _tmp153_ = NULL;
	UnitCategory* _tmp154_ = NULL;
	const gchar* _tmp155_ = NULL;
	const gchar* _tmp156_ = NULL;
	const gchar* _tmp157_ = NULL;
	Unit* _tmp158_ = NULL;
	Unit* _tmp159_ = NULL;
	UnitCategory* _tmp160_ = NULL;
	const gchar* _tmp161_ = NULL;
	const gchar* _tmp162_ = NULL;
	const gchar* _tmp163_ = NULL;
	Unit* _tmp164_ = NULL;
	Unit* _tmp165_ = NULL;
	UnitCategory* _tmp166_ = NULL;
	const gchar* _tmp167_ = NULL;
	const gchar* _tmp168_ = NULL;
	const gchar* _tmp169_ = NULL;
	Unit* _tmp170_ = NULL;
	Unit* _tmp171_ = NULL;
	UnitCategory* _tmp172_ = NULL;
	const gchar* _tmp173_ = NULL;
	const gchar* _tmp174_ = NULL;
	const gchar* _tmp175_ = NULL;
	Unit* _tmp176_ = NULL;
	Unit* _tmp177_ = NULL;
	UnitCategory* _tmp178_ = NULL;
	const gchar* _tmp179_ = NULL;
	const gchar* _tmp180_ = NULL;
	const gchar* _tmp181_ = NULL;
	Unit* _tmp182_ = NULL;
	Unit* _tmp183_ = NULL;
	UnitCategory* _tmp184_ = NULL;
	const gchar* _tmp185_ = NULL;
	const gchar* _tmp186_ = NULL;
	const gchar* _tmp187_ = NULL;
	Unit* _tmp188_ = NULL;
	Unit* _tmp189_ = NULL;
	UnitCategory* _tmp190_ = NULL;
	const gchar* _tmp191_ = NULL;
	const gchar* _tmp192_ = NULL;
	const gchar* _tmp193_ = NULL;
	Unit* _tmp194_ = NULL;
	Unit* _tmp195_ = NULL;
	UnitCategory* _tmp196_ = NULL;
	const gchar* _tmp197_ = NULL;
	const gchar* _tmp198_ = NULL;
	const gchar* _tmp199_ = NULL;
	Unit* _tmp200_ = NULL;
	Unit* _tmp201_ = NULL;
	UnitCategory* _tmp202_ = NULL;
	const gchar* _tmp203_ = NULL;
	const gchar* _tmp204_ = NULL;
	const gchar* _tmp205_ = NULL;
	Unit* _tmp206_ = NULL;
	Unit* _tmp207_ = NULL;
	UnitCategory* _tmp208_ = NULL;
	const gchar* _tmp209_ = NULL;
	const gchar* _tmp210_ = NULL;
	const gchar* _tmp211_ = NULL;
	Unit* _tmp212_ = NULL;
	Unit* _tmp213_ = NULL;
	UnitCategory* _tmp214_ = NULL;
	const gchar* _tmp215_ = NULL;
	const gchar* _tmp216_ = NULL;
	const gchar* _tmp217_ = NULL;
	Unit* _tmp218_ = NULL;
	Unit* _tmp219_ = NULL;
	UnitCategory* _tmp220_ = NULL;
	const gchar* _tmp221_ = NULL;
	const gchar* _tmp222_ = NULL;
	const gchar* _tmp223_ = NULL;
	Unit* _tmp224_ = NULL;
	Unit* _tmp225_ = NULL;
	UnitCategory* _tmp226_ = NULL;
	const gchar* _tmp227_ = NULL;
	const gchar* _tmp228_ = NULL;
	const gchar* _tmp229_ = NULL;
	Unit* _tmp230_ = NULL;
	Unit* _tmp231_ = NULL;
	UnitCategory* _tmp232_ = NULL;
	const gchar* _tmp233_ = NULL;
	const gchar* _tmp234_ = NULL;
	const gchar* _tmp235_ = NULL;
	Unit* _tmp236_ = NULL;
	Unit* _tmp237_ = NULL;
	UnitCategory* _tmp238_ = NULL;
	const gchar* _tmp239_ = NULL;
	const gchar* _tmp240_ = NULL;
	const gchar* _tmp241_ = NULL;
	Unit* _tmp242_ = NULL;
	Unit* _tmp243_ = NULL;
	UnitCategory* _tmp244_ = NULL;
	const gchar* _tmp245_ = NULL;
	const gchar* _tmp246_ = NULL;
	const gchar* _tmp247_ = NULL;
	Unit* _tmp248_ = NULL;
	Unit* _tmp249_ = NULL;
	UnitCategory* _tmp250_ = NULL;
	const gchar* _tmp251_ = NULL;
	const gchar* _tmp252_ = NULL;
	const gchar* _tmp253_ = NULL;
	Unit* _tmp254_ = NULL;
	Unit* _tmp255_ = NULL;
	UnitCategory* _tmp256_ = NULL;
	const gchar* _tmp257_ = NULL;
	const gchar* _tmp258_ = NULL;
	const gchar* _tmp259_ = NULL;
	Unit* _tmp260_ = NULL;
	Unit* _tmp261_ = NULL;
	UnitCategory* _tmp262_ = NULL;
	const gchar* _tmp263_ = NULL;
	const gchar* _tmp264_ = NULL;
	const gchar* _tmp265_ = NULL;
	Unit* _tmp266_ = NULL;
	Unit* _tmp267_ = NULL;
	UnitCategory* _tmp268_ = NULL;
	const gchar* _tmp269_ = NULL;
	const gchar* _tmp270_ = NULL;
	const gchar* _tmp271_ = NULL;
	Unit* _tmp272_ = NULL;
	Unit* _tmp273_ = NULL;
	UnitCategory* _tmp274_ = NULL;
	const gchar* _tmp275_ = NULL;
	const gchar* _tmp276_ = NULL;
	const gchar* _tmp277_ = NULL;
	Unit* _tmp278_ = NULL;
	Unit* _tmp279_ = NULL;
	UnitCategory* _tmp280_ = NULL;
	const gchar* _tmp281_ = NULL;
	const gchar* _tmp282_ = NULL;
	const gchar* _tmp283_ = NULL;
	Unit* _tmp284_ = NULL;
	Unit* _tmp285_ = NULL;
	UnitCategory* _tmp286_ = NULL;
	const gchar* _tmp287_ = NULL;
	const gchar* _tmp288_ = NULL;
	const gchar* _tmp289_ = NULL;
	Unit* _tmp290_ = NULL;
	Unit* _tmp291_ = NULL;
	UnitCategory* _tmp292_ = NULL;
	const gchar* _tmp293_ = NULL;
	const gchar* _tmp294_ = NULL;
	const gchar* _tmp295_ = NULL;
	Unit* _tmp296_ = NULL;
	Unit* _tmp297_ = NULL;
	UnitCategory* _tmp298_ = NULL;
	const gchar* _tmp299_ = NULL;
	const gchar* _tmp300_ = NULL;
	const gchar* _tmp301_ = NULL;
	Unit* _tmp302_ = NULL;
	Unit* _tmp303_ = NULL;
	UnitCategory* _tmp304_ = NULL;
	const gchar* _tmp305_ = NULL;
	const gchar* _tmp306_ = NULL;
	const gchar* _tmp307_ = NULL;
	Unit* _tmp308_ = NULL;
	Unit* _tmp309_ = NULL;
	UnitCategory* _tmp310_ = NULL;
	const gchar* _tmp311_ = NULL;
	const gchar* _tmp312_ = NULL;
	const gchar* _tmp313_ = NULL;
	Unit* _tmp314_ = NULL;
	Unit* _tmp315_ = NULL;
	UnitCategory* _tmp316_ = NULL;
	const gchar* _tmp317_ = NULL;
	const gchar* _tmp318_ = NULL;
	const gchar* _tmp319_ = NULL;
	Unit* _tmp320_ = NULL;
	Unit* _tmp321_ = NULL;
	UnitCategory* _tmp322_ = NULL;
	const gchar* _tmp323_ = NULL;
	const gchar* _tmp324_ = NULL;
	const gchar* _tmp325_ = NULL;
	Unit* _tmp326_ = NULL;
	Unit* _tmp327_ = NULL;
	UnitCategory* _tmp328_ = NULL;
	const gchar* _tmp329_ = NULL;
	const gchar* _tmp330_ = NULL;
	const gchar* _tmp331_ = NULL;
	Unit* _tmp332_ = NULL;
	Unit* _tmp333_ = NULL;
	UnitCategory* _tmp334_ = NULL;
	const gchar* _tmp335_ = NULL;
	const gchar* _tmp336_ = NULL;
	const gchar* _tmp337_ = NULL;
	Unit* _tmp338_ = NULL;
	Unit* _tmp339_ = NULL;
	UnitCategory* _tmp340_ = NULL;
	const gchar* _tmp341_ = NULL;
	const gchar* _tmp342_ = NULL;
	const gchar* _tmp343_ = NULL;
	Unit* _tmp344_ = NULL;
	Unit* _tmp345_ = NULL;
	UnitCategory* _tmp346_ = NULL;
	const gchar* _tmp347_ = NULL;
	const gchar* _tmp348_ = NULL;
	const gchar* _tmp349_ = NULL;
	Unit* _tmp350_ = NULL;
	Unit* _tmp351_ = NULL;
	UnitCategory* _tmp352_ = NULL;
	const gchar* _tmp353_ = NULL;
	const gchar* _tmp354_ = NULL;
	const gchar* _tmp355_ = NULL;
	Unit* _tmp356_ = NULL;
	Unit* _tmp357_ = NULL;
	UnitCategory* _tmp358_ = NULL;
	const gchar* _tmp359_ = NULL;
	const gchar* _tmp360_ = NULL;
	const gchar* _tmp361_ = NULL;
	Unit* _tmp362_ = NULL;
	Unit* _tmp363_ = NULL;
	UnitCategory* _tmp364_ = NULL;
	const gchar* _tmp365_ = NULL;
	const gchar* _tmp366_ = NULL;
	const gchar* _tmp367_ = NULL;
	Unit* _tmp368_ = NULL;
	Unit* _tmp369_ = NULL;
	UnitCategory* _tmp370_ = NULL;
	const gchar* _tmp371_ = NULL;
	const gchar* _tmp372_ = NULL;
	const gchar* _tmp373_ = NULL;
	Unit* _tmp374_ = NULL;
	Unit* _tmp375_ = NULL;
	UnitCategory* _tmp376_ = NULL;
	const gchar* _tmp377_ = NULL;
	const gchar* _tmp378_ = NULL;
	const gchar* _tmp379_ = NULL;
	Unit* _tmp380_ = NULL;
	Unit* _tmp381_ = NULL;
	UnitCategory* _tmp382_ = NULL;
	const gchar* _tmp383_ = NULL;
	const gchar* _tmp384_ = NULL;
	const gchar* _tmp385_ = NULL;
	Unit* _tmp386_ = NULL;
	Unit* _tmp387_ = NULL;
	UnitCategory* _tmp388_ = NULL;
	const gchar* _tmp389_ = NULL;
	const gchar* _tmp390_ = NULL;
	const gchar* _tmp391_ = NULL;
	Unit* _tmp392_ = NULL;
	Unit* _tmp393_ = NULL;
	UnitCategory* _tmp394_ = NULL;
	const gchar* _tmp395_ = NULL;
	const gchar* _tmp396_ = NULL;
	const gchar* _tmp397_ = NULL;
	Unit* _tmp398_ = NULL;
	Unit* _tmp399_ = NULL;
	UnitCategory* _tmp400_ = NULL;
	const gchar* _tmp401_ = NULL;
	const gchar* _tmp402_ = NULL;
	const gchar* _tmp403_ = NULL;
	Unit* _tmp404_ = NULL;
	Unit* _tmp405_ = NULL;
	UnitCategory* _tmp406_ = NULL;
	const gchar* _tmp407_ = NULL;
	const gchar* _tmp408_ = NULL;
	const gchar* _tmp409_ = NULL;
	Unit* _tmp410_ = NULL;
	Unit* _tmp411_ = NULL;
	UnitCategory* _tmp412_ = NULL;
	const gchar* _tmp413_ = NULL;
	const gchar* _tmp414_ = NULL;
	const gchar* _tmp415_ = NULL;
	Unit* _tmp416_ = NULL;
	Unit* _tmp417_ = NULL;
	UnitCategory* _tmp418_ = NULL;
	const gchar* _tmp419_ = NULL;
	const gchar* _tmp420_ = NULL;
	const gchar* _tmp421_ = NULL;
	Unit* _tmp422_ = NULL;
	Unit* _tmp423_ = NULL;
	UnitCategory* _tmp424_ = NULL;
	const gchar* _tmp425_ = NULL;
	const gchar* _tmp426_ = NULL;
	const gchar* _tmp427_ = NULL;
	Unit* _tmp428_ = NULL;
	Unit* _tmp429_ = NULL;
	UnitCategory* _tmp430_ = NULL;
	const gchar* _tmp431_ = NULL;
	const gchar* _tmp432_ = NULL;
	const gchar* _tmp433_ = NULL;
	Unit* _tmp434_ = NULL;
	Unit* _tmp435_ = NULL;
	UnitCategory* _tmp436_ = NULL;
	const gchar* _tmp437_ = NULL;
	const gchar* _tmp438_ = NULL;
	const gchar* _tmp439_ = NULL;
	Unit* _tmp440_ = NULL;
	Unit* _tmp441_ = NULL;
	UnitCategory* _tmp442_ = NULL;
	const gchar* _tmp443_ = NULL;
	const gchar* _tmp444_ = NULL;
	const gchar* _tmp445_ = NULL;
	Unit* _tmp446_ = NULL;
	Unit* _tmp447_ = NULL;
	UnitCategory* _tmp448_ = NULL;
	const gchar* _tmp449_ = NULL;
	const gchar* _tmp450_ = NULL;
	const gchar* _tmp451_ = NULL;
	Unit* _tmp452_ = NULL;
	Unit* _tmp453_ = NULL;
	UnitCategory* _tmp454_ = NULL;
	const gchar* _tmp455_ = NULL;
	const gchar* _tmp456_ = NULL;
	const gchar* _tmp457_ = NULL;
	Unit* _tmp458_ = NULL;
	Unit* _tmp459_ = NULL;
	UnitCategory* _tmp460_ = NULL;
	const gchar* _tmp461_ = NULL;
	const gchar* _tmp462_ = NULL;
	const gchar* _tmp463_ = NULL;
	Unit* _tmp464_ = NULL;
	Unit* _tmp465_ = NULL;
	UnitCategory* _tmp466_ = NULL;
	const gchar* _tmp467_ = NULL;
	const gchar* _tmp468_ = NULL;
	const gchar* _tmp469_ = NULL;
	Unit* _tmp470_ = NULL;
	Unit* _tmp471_ = NULL;
	UnitCategory* _tmp472_ = NULL;
	const gchar* _tmp473_ = NULL;
	const gchar* _tmp474_ = NULL;
	const gchar* _tmp475_ = NULL;
	Unit* _tmp476_ = NULL;
	Unit* _tmp477_ = NULL;
	UnitCategory* _tmp478_ = NULL;
	const gchar* _tmp479_ = NULL;
	const gchar* _tmp480_ = NULL;
	const gchar* _tmp481_ = NULL;
	Unit* _tmp482_ = NULL;
	Unit* _tmp483_ = NULL;
	UnitCategory* _tmp484_ = NULL;
	const gchar* _tmp485_ = NULL;
	const gchar* _tmp486_ = NULL;
	const gchar* _tmp487_ = NULL;
	Unit* _tmp488_ = NULL;
	Unit* _tmp489_ = NULL;
	UnitCategory* _tmp490_ = NULL;
	const gchar* _tmp491_ = NULL;
	const gchar* _tmp492_ = NULL;
	const gchar* _tmp493_ = NULL;
	Unit* _tmp494_ = NULL;
	Unit* _tmp495_ = NULL;
	UnitCategory* _tmp496_ = NULL;
	const gchar* _tmp497_ = NULL;
	const gchar* _tmp498_ = NULL;
	const gchar* _tmp499_ = NULL;
	Unit* _tmp500_ = NULL;
	Unit* _tmp501_ = NULL;
	UnitCategory* _tmp502_ = NULL;
	const gchar* _tmp503_ = NULL;
	const gchar* _tmp504_ = NULL;
	const gchar* _tmp505_ = NULL;
	Unit* _tmp506_ = NULL;
	Unit* _tmp507_ = NULL;
	UnitCategory* _tmp508_ = NULL;
	const gchar* _tmp509_ = NULL;
	const gchar* _tmp510_ = NULL;
	const gchar* _tmp511_ = NULL;
	Unit* _tmp512_ = NULL;
	Unit* _tmp513_ = NULL;
	UnitCategory* _tmp514_ = NULL;
	const gchar* _tmp515_ = NULL;
	const gchar* _tmp516_ = NULL;
	const gchar* _tmp517_ = NULL;
	Unit* _tmp518_ = NULL;
	Unit* _tmp519_ = NULL;
	UnitCategory* currency_category = NULL;
	UnitManager* _tmp520_ = NULL;
	const gchar* _tmp521_ = NULL;
	UnitCategory* _tmp522_ = NULL;
	GList* currencies = NULL;
	CurrencyManager* _tmp523_ = NULL;
	CurrencyManager* _tmp524_ = NULL;
	GList* _tmp525_ = NULL;
	GList* _tmp526_ = NULL;
	GList* _tmp527_ = NULL;
	UnitManager* _tmp553_ = NULL;
	UnitManager* _tmp554_ = NULL;
	_tmp0_ = default_unit_manager;
	if (_tmp0_ != NULL) {
		UnitManager* _tmp1_ = NULL;
		UnitManager* _tmp2_ = NULL;
		_tmp1_ = default_unit_manager;
		_tmp2_ = _g_object_ref0 (_tmp1_);
		result = _tmp2_;
		return result;
	}
	_tmp3_ = unit_manager_new ();
	_g_object_unref0 (default_unit_manager);
	default_unit_manager = _tmp3_;
	_tmp4_ = default_unit_manager;
	_tmp5_ = _ ("Angle");
	_tmp6_ = unit_manager_add_category (_tmp4_, "angle", _tmp5_);
	angle_category = _tmp6_;
	_tmp7_ = default_unit_manager;
	_tmp8_ = _ ("Length");
	_tmp9_ = unit_manager_add_category (_tmp7_, "length", _tmp8_);
	length_category = _tmp9_;
	_tmp10_ = default_unit_manager;
	_tmp11_ = _ ("Area");
	_tmp12_ = unit_manager_add_category (_tmp10_, "area", _tmp11_);
	area_category = _tmp12_;
	_tmp13_ = default_unit_manager;
	_tmp14_ = _ ("Volume");
	_tmp15_ = unit_manager_add_category (_tmp13_, "volume", _tmp14_);
	volume_category = _tmp15_;
	_tmp16_ = default_unit_manager;
	_tmp17_ = _ ("Weight");
	_tmp18_ = unit_manager_add_category (_tmp16_, "weight", _tmp17_);
	weight_category = _tmp18_;
	_tmp19_ = default_unit_manager;
	_tmp20_ = _ ("Duration");
	_tmp21_ = unit_manager_add_category (_tmp19_, "duration", _tmp20_);
	duration_category = _tmp21_;
	_tmp22_ = default_unit_manager;
	_tmp23_ = _ ("Temperature");
	_tmp24_ = unit_manager_add_category (_tmp22_, "temperature", _tmp23_);
	temperature_category = _tmp24_;
	_tmp25_ = default_unit_manager;
	_tmp26_ = _ ("Digital Storage");
	_tmp27_ = unit_manager_add_category (_tmp25_, "digitalstorage", _tmp26_);
	digitalstorage_category = _tmp27_;
	_tmp28_ = angle_category;
	_tmp29_ = _ ("Degrees");
	_tmp30_ = g_dpgettext2 (NULL, "unit-format", "%s degrees");
	_tmp31_ = g_dpgettext2 (NULL, "unit-symbols", "degree,degrees,deg");
	_tmp32_ = unit_new ("degree", _tmp29_, _tmp30_, "π*x/180", "180x/π", _tmp31_);
	_tmp33_ = _tmp32_;
	unit_category_add_unit (_tmp28_, _tmp33_);
	_g_object_unref0 (_tmp33_);
	_tmp34_ = angle_category;
	_tmp35_ = _ ("Radians");
	_tmp36_ = g_dpgettext2 (NULL, "unit-format", "%s radians");
	_tmp37_ = g_dpgettext2 (NULL, "unit-symbols", "radian,radians,rad");
	_tmp38_ = unit_new ("radian", _tmp35_, _tmp36_, "x", "x", _tmp37_);
	_tmp39_ = _tmp38_;
	unit_category_add_unit (_tmp34_, _tmp39_);
	_g_object_unref0 (_tmp39_);
	_tmp40_ = angle_category;
	_tmp41_ = _ ("Gradians");
	_tmp42_ = g_dpgettext2 (NULL, "unit-format", "%s gradians");
	_tmp43_ = g_dpgettext2 (NULL, "unit-symbols", "gradian,gradians,grad");
	_tmp44_ = unit_new ("gradian", _tmp41_, _tmp42_, "π*x/200", "200x/π", _tmp43_);
	_tmp45_ = _tmp44_;
	unit_category_add_unit (_tmp40_, _tmp45_);
	_g_object_unref0 (_tmp45_);
	_tmp46_ = length_category;
	_tmp47_ = _ ("Parsecs");
	_tmp48_ = g_dpgettext2 (NULL, "unit-format", "%s pc");
	_tmp49_ = g_dpgettext2 (NULL, "unit-symbols", "parsec,parsecs,pc");
	_tmp50_ = unit_new ("parsec", _tmp47_, _tmp48_, "30857000000000000x", "x/30857000000000000", _tmp49_);
	_tmp51_ = _tmp50_;
	unit_category_add_unit (_tmp46_, _tmp51_);
	_g_object_unref0 (_tmp51_);
	_tmp52_ = length_category;
	_tmp53_ = _ ("Light Years");
	_tmp54_ = g_dpgettext2 (NULL, "unit-format", "%s ly");
	_tmp55_ = g_dpgettext2 (NULL, "unit-symbols", "lightyear,lightyears,ly");
	_tmp56_ = unit_new ("lightyear", _tmp53_, _tmp54_, "9460730472580800x", "x/9460730472580800", _tmp55_);
	_tmp57_ = _tmp56_;
	unit_category_add_unit (_tmp52_, _tmp57_);
	_g_object_unref0 (_tmp57_);
	_tmp58_ = length_category;
	_tmp59_ = _ ("Astronomical Units");
	_tmp60_ = g_dpgettext2 (NULL, "unit-format", "%s au");
	_tmp61_ = g_dpgettext2 (NULL, "unit-symbols", "au");
	_tmp62_ = unit_new ("astronomical-unit", _tmp59_, _tmp60_, "149597870691x", "x/149597870691", _tmp61_);
	_tmp63_ = _tmp62_;
	unit_category_add_unit (_tmp58_, _tmp63_);
	_g_object_unref0 (_tmp63_);
	_tmp64_ = length_category;
	_tmp65_ = _ ("Nautical Miles");
	_tmp66_ = g_dpgettext2 (NULL, "unit-format", "%s nmi");
	_tmp67_ = g_dpgettext2 (NULL, "unit-symbols", "nmi");
	_tmp68_ = unit_new ("nautical-mile", _tmp65_, _tmp66_, "1852x", "x/1852", _tmp67_);
	_tmp69_ = _tmp68_;
	unit_category_add_unit (_tmp64_, _tmp69_);
	_g_object_unref0 (_tmp69_);
	_tmp70_ = length_category;
	_tmp71_ = _ ("Miles");
	_tmp72_ = g_dpgettext2 (NULL, "unit-format", "%s mi");
	_tmp73_ = g_dpgettext2 (NULL, "unit-symbols", "mile,miles,mi");
	_tmp74_ = unit_new ("mile", _tmp71_, _tmp72_, "1609.344x", "x/1609.344", _tmp73_);
	_tmp75_ = _tmp74_;
	unit_category_add_unit (_tmp70_, _tmp75_);
	_g_object_unref0 (_tmp75_);
	_tmp76_ = length_category;
	_tmp77_ = _ ("Kilometers");
	_tmp78_ = g_dpgettext2 (NULL, "unit-format", "%s km");
	_tmp79_ = g_dpgettext2 (NULL, "unit-symbols", "kilometer,kilometers,km,kms");
	_tmp80_ = unit_new ("kilometer", _tmp77_, _tmp78_, "1000x", "x/1000", _tmp79_);
	_tmp81_ = _tmp80_;
	unit_category_add_unit (_tmp76_, _tmp81_);
	_g_object_unref0 (_tmp81_);
	_tmp82_ = length_category;
	_tmp83_ = _ ("Cables");
	_tmp84_ = g_dpgettext2 (NULL, "unit-format", "%s cb");
	_tmp85_ = g_dpgettext2 (NULL, "unit-symbols", "cable,cables,cb");
	_tmp86_ = unit_new ("cable", _tmp83_, _tmp84_, "219.456x", "x/219.456", _tmp85_);
	_tmp87_ = _tmp86_;
	unit_category_add_unit (_tmp82_, _tmp87_);
	_g_object_unref0 (_tmp87_);
	_tmp88_ = length_category;
	_tmp89_ = _ ("Fathoms");
	_tmp90_ = g_dpgettext2 (NULL, "unit-format", "%s ftm");
	_tmp91_ = g_dpgettext2 (NULL, "unit-symbols", "fathom,fathoms,ftm");
	_tmp92_ = unit_new ("fathom", _tmp89_, _tmp90_, "1.8288x", "x/1.8288", _tmp91_);
	_tmp93_ = _tmp92_;
	unit_category_add_unit (_tmp88_, _tmp93_);
	_g_object_unref0 (_tmp93_);
	_tmp94_ = length_category;
	_tmp95_ = _ ("Meters");
	_tmp96_ = g_dpgettext2 (NULL, "unit-format", "%s m");
	_tmp97_ = g_dpgettext2 (NULL, "unit-symbols", "meter,meters,m");
	_tmp98_ = unit_new ("meter", _tmp95_, _tmp96_, "x", "x", _tmp97_);
	_tmp99_ = _tmp98_;
	unit_category_add_unit (_tmp94_, _tmp99_);
	_g_object_unref0 (_tmp99_);
	_tmp100_ = length_category;
	_tmp101_ = _ ("Yards");
	_tmp102_ = g_dpgettext2 (NULL, "unit-format", "%s yd");
	_tmp103_ = g_dpgettext2 (NULL, "unit-symbols", "yard,yards,yd");
	_tmp104_ = unit_new ("yard", _tmp101_, _tmp102_, "0.9144x", "x/0.9144", _tmp103_);
	_tmp105_ = _tmp104_;
	unit_category_add_unit (_tmp100_, _tmp105_);
	_g_object_unref0 (_tmp105_);
	_tmp106_ = length_category;
	_tmp107_ = _ ("Feet");
	_tmp108_ = g_dpgettext2 (NULL, "unit-format", "%s ft");
	_tmp109_ = g_dpgettext2 (NULL, "unit-symbols", "foot,feet,ft");
	_tmp110_ = unit_new ("foot", _tmp107_, _tmp108_, "0.3048x", "x/0.3048", _tmp109_);
	_tmp111_ = _tmp110_;
	unit_category_add_unit (_tmp106_, _tmp111_);
	_g_object_unref0 (_tmp111_);
	_tmp112_ = length_category;
	_tmp113_ = _ ("Inches");
	_tmp114_ = g_dpgettext2 (NULL, "unit-format", "%s in");
	_tmp115_ = g_dpgettext2 (NULL, "unit-symbols", "inch,inches,in");
	_tmp116_ = unit_new ("inch", _tmp113_, _tmp114_, "0.0254x", "x/0.0254", _tmp115_);
	_tmp117_ = _tmp116_;
	unit_category_add_unit (_tmp112_, _tmp117_);
	_g_object_unref0 (_tmp117_);
	_tmp118_ = length_category;
	_tmp119_ = _ ("Centimeters");
	_tmp120_ = g_dpgettext2 (NULL, "unit-format", "%s cm");
	_tmp121_ = g_dpgettext2 (NULL, "unit-symbols", "centimeter,centimeters,cm,cms");
	_tmp122_ = unit_new ("centimeter", _tmp119_, _tmp120_, "x/100", "100x", _tmp121_);
	_tmp123_ = _tmp122_;
	unit_category_add_unit (_tmp118_, _tmp123_);
	_g_object_unref0 (_tmp123_);
	_tmp124_ = length_category;
	_tmp125_ = _ ("Millimeters");
	_tmp126_ = g_dpgettext2 (NULL, "unit-format", "%s mm");
	_tmp127_ = g_dpgettext2 (NULL, "unit-symbols", "millimeter,millimeters,mm");
	_tmp128_ = unit_new ("millimeter", _tmp125_, _tmp126_, "x/1000", "1000x", _tmp127_);
	_tmp129_ = _tmp128_;
	unit_category_add_unit (_tmp124_, _tmp129_);
	_g_object_unref0 (_tmp129_);
	_tmp130_ = length_category;
	_tmp131_ = _ ("Micrometers");
	_tmp132_ = g_dpgettext2 (NULL, "unit-format", "%s μm");
	_tmp133_ = g_dpgettext2 (NULL, "unit-symbols", "micrometer,micrometers,um");
	_tmp134_ = unit_new ("micrometer", _tmp131_, _tmp132_, "x/1000000", "1000000x", _tmp133_);
	_tmp135_ = _tmp134_;
	unit_category_add_unit (_tmp130_, _tmp135_);
	_g_object_unref0 (_tmp135_);
	_tmp136_ = length_category;
	_tmp137_ = _ ("Nanometers");
	_tmp138_ = g_dpgettext2 (NULL, "unit-format", "%s nm");
	_tmp139_ = g_dpgettext2 (NULL, "unit-symbols", "nanometer,nanometers,nm");
	_tmp140_ = unit_new ("nanometer", _tmp137_, _tmp138_, "x/1000000000", "1000000000x", _tmp139_);
	_tmp141_ = _tmp140_;
	unit_category_add_unit (_tmp136_, _tmp141_);
	_g_object_unref0 (_tmp141_);
	_tmp142_ = area_category;
	_tmp143_ = _ ("Hectares");
	_tmp144_ = g_dpgettext2 (NULL, "unit-format", "%s ha");
	_tmp145_ = g_dpgettext2 (NULL, "unit-symbols", "hectare,hectares,ha");
	_tmp146_ = unit_new ("hectare", _tmp143_, _tmp144_, "10000x", "x/10000", _tmp145_);
	_tmp147_ = _tmp146_;
	unit_category_add_unit (_tmp142_, _tmp147_);
	_g_object_unref0 (_tmp147_);
	_tmp148_ = area_category;
	_tmp149_ = _ ("Acres");
	_tmp150_ = g_dpgettext2 (NULL, "unit-format", "%s acres");
	_tmp151_ = g_dpgettext2 (NULL, "unit-symbols", "acre,acres");
	_tmp152_ = unit_new ("acre", _tmp149_, _tmp150_, "4046.8564224x", "x/4046.8564224", _tmp151_);
	_tmp153_ = _tmp152_;
	unit_category_add_unit (_tmp148_, _tmp153_);
	_g_object_unref0 (_tmp153_);
	_tmp154_ = area_category;
	_tmp155_ = _ ("Square Meters");
	_tmp156_ = g_dpgettext2 (NULL, "unit-format", "%s m²");
	_tmp157_ = g_dpgettext2 (NULL, "unit-symbols", "m²");
	_tmp158_ = unit_new ("square-meter", _tmp155_, _tmp156_, "x", "x", _tmp157_);
	_tmp159_ = _tmp158_;
	unit_category_add_unit (_tmp154_, _tmp159_);
	_g_object_unref0 (_tmp159_);
	_tmp160_ = area_category;
	_tmp161_ = _ ("Square Centimeters");
	_tmp162_ = g_dpgettext2 (NULL, "unit-format", "%s cm²");
	_tmp163_ = g_dpgettext2 (NULL, "unit-symbols", "cm²");
	_tmp164_ = unit_new ("square-centimeter", _tmp161_, _tmp162_, "0.0001x", "10000x", _tmp163_);
	_tmp165_ = _tmp164_;
	unit_category_add_unit (_tmp160_, _tmp165_);
	_g_object_unref0 (_tmp165_);
	_tmp166_ = area_category;
	_tmp167_ = _ ("Square Millimeters");
	_tmp168_ = g_dpgettext2 (NULL, "unit-format", "%s mm²");
	_tmp169_ = g_dpgettext2 (NULL, "unit-symbols", "mm²");
	_tmp170_ = unit_new ("square-millimeter", _tmp167_, _tmp168_, "0.000001x", "1000000x", _tmp169_);
	_tmp171_ = _tmp170_;
	unit_category_add_unit (_tmp166_, _tmp171_);
	_g_object_unref0 (_tmp171_);
	_tmp172_ = volume_category;
	_tmp173_ = _ ("Cubic Meters");
	_tmp174_ = g_dpgettext2 (NULL, "unit-format", "%s m³");
	_tmp175_ = g_dpgettext2 (NULL, "unit-symbols", "m³");
	_tmp176_ = unit_new ("cubic-meter", _tmp173_, _tmp174_, "1000x", "x/1000", _tmp175_);
	_tmp177_ = _tmp176_;
	unit_category_add_unit (_tmp172_, _tmp177_);
	_g_object_unref0 (_tmp177_);
	_tmp178_ = volume_category;
	_tmp179_ = _ ("Gallons");
	_tmp180_ = g_dpgettext2 (NULL, "unit-format", "%s gal");
	_tmp181_ = g_dpgettext2 (NULL, "unit-symbols", "gallon,gallons,gal");
	_tmp182_ = unit_new ("gallon", _tmp179_, _tmp180_, "3.785412x", "x/3.785412", _tmp181_);
	_tmp183_ = _tmp182_;
	unit_category_add_unit (_tmp178_, _tmp183_);
	_g_object_unref0 (_tmp183_);
	_tmp184_ = volume_category;
	_tmp185_ = _ ("Liters");
	_tmp186_ = g_dpgettext2 (NULL, "unit-format", "%s L");
	_tmp187_ = g_dpgettext2 (NULL, "unit-symbols", "litre,litres,liter,liters,L");
	_tmp188_ = unit_new ("litre", _tmp185_, _tmp186_, "x", "x", _tmp187_);
	_tmp189_ = _tmp188_;
	unit_category_add_unit (_tmp184_, _tmp189_);
	_g_object_unref0 (_tmp189_);
	_tmp190_ = volume_category;
	_tmp191_ = _ ("Quarts");
	_tmp192_ = g_dpgettext2 (NULL, "unit-format", "%s qt");
	_tmp193_ = g_dpgettext2 (NULL, "unit-symbols", "quart,quarts,qt");
	_tmp194_ = unit_new ("quart", _tmp191_, _tmp192_, "0.9463529x", "x/0.9463529", _tmp193_);
	_tmp195_ = _tmp194_;
	unit_category_add_unit (_tmp190_, _tmp195_);
	_g_object_unref0 (_tmp195_);
	_tmp196_ = volume_category;
	_tmp197_ = _ ("Pints");
	_tmp198_ = g_dpgettext2 (NULL, "unit-format", "%s pt");
	_tmp199_ = g_dpgettext2 (NULL, "unit-symbols", "pint,pints,pt");
	_tmp200_ = unit_new ("pint", _tmp197_, _tmp198_, "0.4731765x", "x/0.4731765", _tmp199_);
	_tmp201_ = _tmp200_;
	unit_category_add_unit (_tmp196_, _tmp201_);
	_g_object_unref0 (_tmp201_);
	_tmp202_ = volume_category;
	_tmp203_ = _ ("Milliliters");
	_tmp204_ = g_dpgettext2 (NULL, "unit-format", "%s mL");
	_tmp205_ = g_dpgettext2 (NULL, "unit-symbols", "millilitre,millilitres,milliliter,milliliters,mL,cm³");
	_tmp206_ = unit_new ("millilitre", _tmp203_, _tmp204_, "0.001x", "1000x", _tmp205_);
	_tmp207_ = _tmp206_;
	unit_category_add_unit (_tmp202_, _tmp207_);
	_g_object_unref0 (_tmp207_);
	_tmp208_ = volume_category;
	_tmp209_ = _ ("Microliters");
	_tmp210_ = g_dpgettext2 (NULL, "unit-format", "%s μL");
	_tmp211_ = g_dpgettext2 (NULL, "unit-symbols", "mm³,μL,uL");
	_tmp212_ = unit_new ("microlitre", _tmp209_, _tmp210_, "0.000001x", "1000000x", _tmp211_);
	_tmp213_ = _tmp212_;
	unit_category_add_unit (_tmp208_, _tmp213_);
	_g_object_unref0 (_tmp213_);
	_tmp214_ = weight_category;
	_tmp215_ = _ ("Tonnes");
	_tmp216_ = g_dpgettext2 (NULL, "unit-format", "%s T");
	_tmp217_ = g_dpgettext2 (NULL, "unit-symbols", "tonne,tonnes");
	_tmp218_ = unit_new ("tonne", _tmp215_, _tmp216_, "1000x", "x/1000", _tmp217_);
	_tmp219_ = _tmp218_;
	unit_category_add_unit (_tmp214_, _tmp219_);
	_g_object_unref0 (_tmp219_);
	_tmp220_ = weight_category;
	_tmp221_ = _ ("Kilograms");
	_tmp222_ = g_dpgettext2 (NULL, "unit-format", "%s kg");
	_tmp223_ = g_dpgettext2 (NULL, "unit-symbols", "kilogram,kilograms,kilogramme,kilogrammes,kg,kgs");
	_tmp224_ = unit_new ("kilograms", _tmp221_, _tmp222_, "x", "x", _tmp223_);
	_tmp225_ = _tmp224_;
	unit_category_add_unit (_tmp220_, _tmp225_);
	_g_object_unref0 (_tmp225_);
	_tmp226_ = weight_category;
	_tmp227_ = _ ("Pounds");
	_tmp228_ = g_dpgettext2 (NULL, "unit-format", "%s lb");
	_tmp229_ = g_dpgettext2 (NULL, "unit-symbols", "pound,pounds,lb");
	_tmp230_ = unit_new ("pound", _tmp227_, _tmp228_, "0.45359237x", "x/0.45359237", _tmp229_);
	_tmp231_ = _tmp230_;
	unit_category_add_unit (_tmp226_, _tmp231_);
	_g_object_unref0 (_tmp231_);
	_tmp232_ = weight_category;
	_tmp233_ = _ ("Ounces");
	_tmp234_ = g_dpgettext2 (NULL, "unit-format", "%s oz");
	_tmp235_ = g_dpgettext2 (NULL, "unit-symbols", "ounce,ounces,oz");
	_tmp236_ = unit_new ("ounce", _tmp233_, _tmp234_, "0.02834952x", "x/0.02834952", _tmp235_);
	_tmp237_ = _tmp236_;
	unit_category_add_unit (_tmp232_, _tmp237_);
	_g_object_unref0 (_tmp237_);
	_tmp238_ = weight_category;
	_tmp239_ = _ ("Grams");
	_tmp240_ = g_dpgettext2 (NULL, "unit-format", "%s g");
	_tmp241_ = g_dpgettext2 (NULL, "unit-symbols", "gram,grams,gramme,grammes,g");
	_tmp242_ = unit_new ("gram", _tmp239_, _tmp240_, "0.001x", "1000x", _tmp241_);
	_tmp243_ = _tmp242_;
	unit_category_add_unit (_tmp238_, _tmp243_);
	_g_object_unref0 (_tmp243_);
	_tmp244_ = duration_category;
	_tmp245_ = _ ("Years");
	_tmp246_ = g_dpgettext2 (NULL, "unit-format", "%s years");
	_tmp247_ = g_dpgettext2 (NULL, "unit-symbols", "year,years");
	_tmp248_ = unit_new ("year", _tmp245_, _tmp246_, "31557600x", "x/31557600", _tmp247_);
	_tmp249_ = _tmp248_;
	unit_category_add_unit (_tmp244_, _tmp249_);
	_g_object_unref0 (_tmp249_);
	_tmp250_ = duration_category;
	_tmp251_ = _ ("Days");
	_tmp252_ = g_dpgettext2 (NULL, "unit-format", "%s days");
	_tmp253_ = g_dpgettext2 (NULL, "unit-symbols", "day,days");
	_tmp254_ = unit_new ("day", _tmp251_, _tmp252_, "86400x", "x/86400", _tmp253_);
	_tmp255_ = _tmp254_;
	unit_category_add_unit (_tmp250_, _tmp255_);
	_g_object_unref0 (_tmp255_);
	_tmp256_ = duration_category;
	_tmp257_ = _ ("Hours");
	_tmp258_ = g_dpgettext2 (NULL, "unit-format", "%s hours");
	_tmp259_ = g_dpgettext2 (NULL, "unit-symbols", "hour,hours");
	_tmp260_ = unit_new ("hour", _tmp257_, _tmp258_, "3600x", "x/3600", _tmp259_);
	_tmp261_ = _tmp260_;
	unit_category_add_unit (_tmp256_, _tmp261_);
	_g_object_unref0 (_tmp261_);
	_tmp262_ = duration_category;
	_tmp263_ = _ ("Minutes");
	_tmp264_ = g_dpgettext2 (NULL, "unit-format", "%s minutes");
	_tmp265_ = g_dpgettext2 (NULL, "unit-symbols", "minute,minutes");
	_tmp266_ = unit_new ("minute", _tmp263_, _tmp264_, "60x", "x/60", _tmp265_);
	_tmp267_ = _tmp266_;
	unit_category_add_unit (_tmp262_, _tmp267_);
	_g_object_unref0 (_tmp267_);
	_tmp268_ = duration_category;
	_tmp269_ = _ ("Seconds");
	_tmp270_ = g_dpgettext2 (NULL, "unit-format", "%s s");
	_tmp271_ = g_dpgettext2 (NULL, "unit-symbols", "second,seconds,s");
	_tmp272_ = unit_new ("second", _tmp269_, _tmp270_, "x", "x", _tmp271_);
	_tmp273_ = _tmp272_;
	unit_category_add_unit (_tmp268_, _tmp273_);
	_g_object_unref0 (_tmp273_);
	_tmp274_ = duration_category;
	_tmp275_ = _ ("Milliseconds");
	_tmp276_ = g_dpgettext2 (NULL, "unit-format", "%s ms");
	_tmp277_ = g_dpgettext2 (NULL, "unit-symbols", "millisecond,milliseconds,ms");
	_tmp278_ = unit_new ("millisecond", _tmp275_, _tmp276_, "0.001x", "1000x", _tmp277_);
	_tmp279_ = _tmp278_;
	unit_category_add_unit (_tmp274_, _tmp279_);
	_g_object_unref0 (_tmp279_);
	_tmp280_ = duration_category;
	_tmp281_ = _ ("Microseconds");
	_tmp282_ = g_dpgettext2 (NULL, "unit-format", "%s μs");
	_tmp283_ = g_dpgettext2 (NULL, "unit-symbols", "microsecond,microseconds,us,μs");
	_tmp284_ = unit_new ("microsecond", _tmp281_, _tmp282_, "0.000001x", "1000000x", _tmp283_);
	_tmp285_ = _tmp284_;
	unit_category_add_unit (_tmp280_, _tmp285_);
	_g_object_unref0 (_tmp285_);
	_tmp286_ = temperature_category;
	_tmp287_ = _ ("Celsius");
	_tmp288_ = g_dpgettext2 (NULL, "unit-format", "%s ˚C");
	_tmp289_ = g_dpgettext2 (NULL, "unit-symbols", "degC,˚C");
	_tmp290_ = unit_new ("degree-celcius", _tmp287_, _tmp288_, "x+273.15", "x-273.15", _tmp289_);
	_tmp291_ = _tmp290_;
	unit_category_add_unit (_tmp286_, _tmp291_);
	_g_object_unref0 (_tmp291_);
	_tmp292_ = temperature_category;
	_tmp293_ = _ ("Fahrenheit");
	_tmp294_ = g_dpgettext2 (NULL, "unit-format", "%s ˚F");
	_tmp295_ = g_dpgettext2 (NULL, "unit-symbols", "degF,˚F");
	_tmp296_ = unit_new ("degree-farenheit", _tmp293_, _tmp294_, "(x+459.67)*5/9", "x*9/5-459.67", _tmp295_);
	_tmp297_ = _tmp296_;
	unit_category_add_unit (_tmp292_, _tmp297_);
	_g_object_unref0 (_tmp297_);
	_tmp298_ = temperature_category;
	_tmp299_ = _ ("Kelvin");
	_tmp300_ = g_dpgettext2 (NULL, "unit-format", "%s K");
	_tmp301_ = g_dpgettext2 (NULL, "unit-symbols", "K");
	_tmp302_ = unit_new ("degree-kelvin", _tmp299_, _tmp300_, "x", "x", _tmp301_);
	_tmp303_ = _tmp302_;
	unit_category_add_unit (_tmp298_, _tmp303_);
	_g_object_unref0 (_tmp303_);
	_tmp304_ = temperature_category;
	_tmp305_ = _ ("Rankine");
	_tmp306_ = g_dpgettext2 (NULL, "unit-format", "%s ˚R");
	_tmp307_ = g_dpgettext2 (NULL, "unit-symbols", "degR,˚R,˚Ra");
	_tmp308_ = unit_new ("degree-rankine", _tmp305_, _tmp306_, "x*5/9", "x*9/5", _tmp307_);
	_tmp309_ = _tmp308_;
	unit_category_add_unit (_tmp304_, _tmp309_);
	_g_object_unref0 (_tmp309_);
	_tmp310_ = digitalstorage_category;
	_tmp311_ = _ ("Bits");
	_tmp312_ = g_dpgettext2 (NULL, "unit-format", "%s b");
	_tmp313_ = g_dpgettext2 (NULL, "unit-symbols", "bit,bits,b");
	_tmp314_ = unit_new ("bit", _tmp311_, _tmp312_, "x/8", "8x", _tmp313_);
	_tmp315_ = _tmp314_;
	unit_category_add_unit (_tmp310_, _tmp315_);
	_g_object_unref0 (_tmp315_);
	_tmp316_ = digitalstorage_category;
	_tmp317_ = _ ("Bytes");
	_tmp318_ = g_dpgettext2 (NULL, "unit-format", "%s B");
	_tmp319_ = g_dpgettext2 (NULL, "unit-symbols", "byte,bytes,B");
	_tmp320_ = unit_new ("byte", _tmp317_, _tmp318_, "x", "x", _tmp319_);
	_tmp321_ = _tmp320_;
	unit_category_add_unit (_tmp316_, _tmp321_);
	_g_object_unref0 (_tmp321_);
	_tmp322_ = digitalstorage_category;
	_tmp323_ = _ ("Nibbles");
	_tmp324_ = g_dpgettext2 (NULL, "unit-format", "%s nibble");
	_tmp325_ = g_dpgettext2 (NULL, "unit-symbols", "nibble,nibbles");
	_tmp326_ = unit_new ("nibble", _tmp323_, _tmp324_, "x/2", "2x", _tmp325_);
	_tmp327_ = _tmp326_;
	unit_category_add_unit (_tmp322_, _tmp327_);
	_g_object_unref0 (_tmp327_);
	_tmp328_ = digitalstorage_category;
	_tmp329_ = _ ("Kilobits");
	_tmp330_ = g_dpgettext2 (NULL, "unit-format", "%s kb");
	_tmp331_ = g_dpgettext2 (NULL, "unit-symbols", "kilobit,kilobits,kb,Kb");
	_tmp332_ = unit_new ("kilobit", _tmp329_, _tmp330_, "1000x/8", "8x/1000", _tmp331_);
	_tmp333_ = _tmp332_;
	unit_category_add_unit (_tmp328_, _tmp333_);
	_g_object_unref0 (_tmp333_);
	_tmp334_ = digitalstorage_category;
	_tmp335_ = _ ("Kilobytes");
	_tmp336_ = g_dpgettext2 (NULL, "unit-format", "%s kB");
	_tmp337_ = g_dpgettext2 (NULL, "unit-symbols", "kilobyte,kilobytes,kB,KB");
	_tmp338_ = unit_new ("kilobyte", _tmp335_, _tmp336_, "1000x", "x/1000", _tmp337_);
	_tmp339_ = _tmp338_;
	unit_category_add_unit (_tmp334_, _tmp339_);
	_g_object_unref0 (_tmp339_);
	_tmp340_ = digitalstorage_category;
	_tmp341_ = _ ("Kibibits");
	_tmp342_ = g_dpgettext2 (NULL, "unit-format", "%s Kib");
	_tmp343_ = g_dpgettext2 (NULL, "unit-symbols", "kibibit,kibibits,Kib");
	_tmp344_ = unit_new ("kibibit", _tmp341_, _tmp342_, "1024x/8", "8x/1024", _tmp343_);
	_tmp345_ = _tmp344_;
	unit_category_add_unit (_tmp340_, _tmp345_);
	_g_object_unref0 (_tmp345_);
	_tmp346_ = digitalstorage_category;
	_tmp347_ = _ ("Kibibytes");
	_tmp348_ = g_dpgettext2 (NULL, "unit-format", "%s KiB");
	_tmp349_ = g_dpgettext2 (NULL, "unit-symbols", "kibibyte,kibibytes,KiB");
	_tmp350_ = unit_new ("kibibyte", _tmp347_, _tmp348_, "1024x", "x/1024", _tmp349_);
	_tmp351_ = _tmp350_;
	unit_category_add_unit (_tmp346_, _tmp351_);
	_g_object_unref0 (_tmp351_);
	_tmp352_ = digitalstorage_category;
	_tmp353_ = _ ("Megabits");
	_tmp354_ = g_dpgettext2 (NULL, "unit-format", "%s Mb");
	_tmp355_ = g_dpgettext2 (NULL, "unit-symbols", "megabit,megabits,Mb");
	_tmp356_ = unit_new ("megabit", _tmp353_, _tmp354_, "1000000x/8", "8x/1000000", _tmp355_);
	_tmp357_ = _tmp356_;
	unit_category_add_unit (_tmp352_, _tmp357_);
	_g_object_unref0 (_tmp357_);
	_tmp358_ = digitalstorage_category;
	_tmp359_ = _ ("Megabytes");
	_tmp360_ = g_dpgettext2 (NULL, "unit-format", "%s MB");
	_tmp361_ = g_dpgettext2 (NULL, "unit-symbols", "megabyte,megabytes,MB");
	_tmp362_ = unit_new ("megabyte", _tmp359_, _tmp360_, "1000000x", "x/1000000", _tmp361_);
	_tmp363_ = _tmp362_;
	unit_category_add_unit (_tmp358_, _tmp363_);
	_g_object_unref0 (_tmp363_);
	_tmp364_ = digitalstorage_category;
	_tmp365_ = _ ("Mebibits");
	_tmp366_ = g_dpgettext2 (NULL, "unit-format", "%s Mib");
	_tmp367_ = g_dpgettext2 (NULL, "unit-symbols", "mebibit,mebibits,Mib");
	_tmp368_ = unit_new ("mebibit", _tmp365_, _tmp366_, "1048576x/8", "8x/1048576", _tmp367_);
	_tmp369_ = _tmp368_;
	unit_category_add_unit (_tmp364_, _tmp369_);
	_g_object_unref0 (_tmp369_);
	_tmp370_ = digitalstorage_category;
	_tmp371_ = _ ("Mebibytes");
	_tmp372_ = g_dpgettext2 (NULL, "unit-format", "%s MiB");
	_tmp373_ = g_dpgettext2 (NULL, "unit-symbols", "mebibyte,mebibytes,MiB");
	_tmp374_ = unit_new ("mebibyte", _tmp371_, _tmp372_, "1048576x", "x/1048576", _tmp373_);
	_tmp375_ = _tmp374_;
	unit_category_add_unit (_tmp370_, _tmp375_);
	_g_object_unref0 (_tmp375_);
	_tmp376_ = digitalstorage_category;
	_tmp377_ = _ ("Gigabits");
	_tmp378_ = g_dpgettext2 (NULL, "unit-format", "%s Gb");
	_tmp379_ = g_dpgettext2 (NULL, "unit-symbols", "gigabit,gigabits,Gb");
	_tmp380_ = unit_new ("gigabit", _tmp377_, _tmp378_, "1000000000x/8", "8x/1000000000", _tmp379_);
	_tmp381_ = _tmp380_;
	unit_category_add_unit (_tmp376_, _tmp381_);
	_g_object_unref0 (_tmp381_);
	_tmp382_ = digitalstorage_category;
	_tmp383_ = _ ("Gigabytes");
	_tmp384_ = g_dpgettext2 (NULL, "unit-format", "%s GB");
	_tmp385_ = g_dpgettext2 (NULL, "unit-symbols", "gigabyte,gigabytes,GB");
	_tmp386_ = unit_new ("gigabyte", _tmp383_, _tmp384_, "1000000000x", "x/1000000000", _tmp385_);
	_tmp387_ = _tmp386_;
	unit_category_add_unit (_tmp382_, _tmp387_);
	_g_object_unref0 (_tmp387_);
	_tmp388_ = digitalstorage_category;
	_tmp389_ = _ ("Gibibits");
	_tmp390_ = g_dpgettext2 (NULL, "unit-format", "%s Gib");
	_tmp391_ = g_dpgettext2 (NULL, "unit-symbols", "gibibit,gibibits,Gib");
	_tmp392_ = unit_new ("gibibit", _tmp389_, _tmp390_, "1073741824x/8", "8x/1073741824", _tmp391_);
	_tmp393_ = _tmp392_;
	unit_category_add_unit (_tmp388_, _tmp393_);
	_g_object_unref0 (_tmp393_);
	_tmp394_ = digitalstorage_category;
	_tmp395_ = _ ("Gibibytes");
	_tmp396_ = g_dpgettext2 (NULL, "unit-format", "%s GiB");
	_tmp397_ = g_dpgettext2 (NULL, "unit-symbols", "gibibyte,gibibytes,GiB");
	_tmp398_ = unit_new ("gibibyte", _tmp395_, _tmp396_, "1073741824x", "x/1073741824", _tmp397_);
	_tmp399_ = _tmp398_;
	unit_category_add_unit (_tmp394_, _tmp399_);
	_g_object_unref0 (_tmp399_);
	_tmp400_ = digitalstorage_category;
	_tmp401_ = _ ("Terabits");
	_tmp402_ = g_dpgettext2 (NULL, "unit-format", "%s Tb");
	_tmp403_ = g_dpgettext2 (NULL, "unit-symbols", "terabit,terabits,Tb");
	_tmp404_ = unit_new ("terabit", _tmp401_, _tmp402_, "1000000000000x/8", "8x/1000000000000", _tmp403_);
	_tmp405_ = _tmp404_;
	unit_category_add_unit (_tmp400_, _tmp405_);
	_g_object_unref0 (_tmp405_);
	_tmp406_ = digitalstorage_category;
	_tmp407_ = _ ("Terabytes");
	_tmp408_ = g_dpgettext2 (NULL, "unit-format", "%s TB");
	_tmp409_ = g_dpgettext2 (NULL, "unit-symbols", "terabyte,terabytes,TB");
	_tmp410_ = unit_new ("terabyte", _tmp407_, _tmp408_, "1000000000000x", "x/1000000000000", _tmp409_);
	_tmp411_ = _tmp410_;
	unit_category_add_unit (_tmp406_, _tmp411_);
	_g_object_unref0 (_tmp411_);
	_tmp412_ = digitalstorage_category;
	_tmp413_ = _ ("Tebibits");
	_tmp414_ = g_dpgettext2 (NULL, "unit-format", "%s Tib");
	_tmp415_ = g_dpgettext2 (NULL, "unit-symbols", "tebibit,tebibits,Tib");
	_tmp416_ = unit_new ("tebibit", _tmp413_, _tmp414_, "1099511627776x/8", "8x/1099511627776", _tmp415_);
	_tmp417_ = _tmp416_;
	unit_category_add_unit (_tmp412_, _tmp417_);
	_g_object_unref0 (_tmp417_);
	_tmp418_ = digitalstorage_category;
	_tmp419_ = _ ("Tebibytes");
	_tmp420_ = g_dpgettext2 (NULL, "unit-format", "%s TiB");
	_tmp421_ = g_dpgettext2 (NULL, "unit-symbols", "tebibyte,tebibytes,TiB");
	_tmp422_ = unit_new ("tebibyte", _tmp419_, _tmp420_, "1099511627776x", "x/1099511627776", _tmp421_);
	_tmp423_ = _tmp422_;
	unit_category_add_unit (_tmp418_, _tmp423_);
	_g_object_unref0 (_tmp423_);
	_tmp424_ = digitalstorage_category;
	_tmp425_ = _ ("Petabits");
	_tmp426_ = g_dpgettext2 (NULL, "unit-format", "%s Pb");
	_tmp427_ = g_dpgettext2 (NULL, "unit-symbols", "petabit,petabits,Pb");
	_tmp428_ = unit_new ("petabit", _tmp425_, _tmp426_, "1000000000000000x/8", "8x/1000000000000000", _tmp427_);
	_tmp429_ = _tmp428_;
	unit_category_add_unit (_tmp424_, _tmp429_);
	_g_object_unref0 (_tmp429_);
	_tmp430_ = digitalstorage_category;
	_tmp431_ = _ ("Petabytes");
	_tmp432_ = g_dpgettext2 (NULL, "unit-format", "%s PB");
	_tmp433_ = g_dpgettext2 (NULL, "unit-symbols", "petabyte,petabytes,PB");
	_tmp434_ = unit_new ("petabyte", _tmp431_, _tmp432_, "1000000000000000x", "x/1000000000000000", _tmp433_);
	_tmp435_ = _tmp434_;
	unit_category_add_unit (_tmp430_, _tmp435_);
	_g_object_unref0 (_tmp435_);
	_tmp436_ = digitalstorage_category;
	_tmp437_ = _ ("Pebibits");
	_tmp438_ = g_dpgettext2 (NULL, "unit-format", "%s Pib");
	_tmp439_ = g_dpgettext2 (NULL, "unit-symbols", "pebibit,pebibits,Pib");
	_tmp440_ = unit_new ("pebibit", _tmp437_, _tmp438_, "1125899906842624x/8", "8x/1125899906842624", _tmp439_);
	_tmp441_ = _tmp440_;
	unit_category_add_unit (_tmp436_, _tmp441_);
	_g_object_unref0 (_tmp441_);
	_tmp442_ = digitalstorage_category;
	_tmp443_ = _ ("Pebibytes");
	_tmp444_ = g_dpgettext2 (NULL, "unit-format", "%s PiB");
	_tmp445_ = g_dpgettext2 (NULL, "unit-symbols", "pebibyte,pebibytes,PiB");
	_tmp446_ = unit_new ("pebibyte", _tmp443_, _tmp444_, "1125899906842624x", "x/1125899906842624", _tmp445_);
	_tmp447_ = _tmp446_;
	unit_category_add_unit (_tmp442_, _tmp447_);
	_g_object_unref0 (_tmp447_);
	_tmp448_ = digitalstorage_category;
	_tmp449_ = _ ("Exabits");
	_tmp450_ = g_dpgettext2 (NULL, "unit-format", "%s Eb");
	_tmp451_ = g_dpgettext2 (NULL, "unit-symbols", "exabit,exabits,Eb");
	_tmp452_ = unit_new ("exabit", _tmp449_, _tmp450_, "1000000000000000000x/8", "8x/1000000000000000000", _tmp451_);
	_tmp453_ = _tmp452_;
	unit_category_add_unit (_tmp448_, _tmp453_);
	_g_object_unref0 (_tmp453_);
	_tmp454_ = digitalstorage_category;
	_tmp455_ = _ ("Exabytes");
	_tmp456_ = g_dpgettext2 (NULL, "unit-format", "%s EB");
	_tmp457_ = g_dpgettext2 (NULL, "unit-symbols", "exabyte,exabytes,EB");
	_tmp458_ = unit_new ("exabyte", _tmp455_, _tmp456_, "1000000000000000000x", "x/1000000000000000000", _tmp457_);
	_tmp459_ = _tmp458_;
	unit_category_add_unit (_tmp454_, _tmp459_);
	_g_object_unref0 (_tmp459_);
	_tmp460_ = digitalstorage_category;
	_tmp461_ = _ ("Exbibits");
	_tmp462_ = g_dpgettext2 (NULL, "unit-format", "%s Eib");
	_tmp463_ = g_dpgettext2 (NULL, "unit-symbols", "exbibit,exbibits,Eib");
	_tmp464_ = unit_new ("exbibit", _tmp461_, _tmp462_, "1152921504606846976x/8", "8x/1152921504606846976", _tmp463_);
	_tmp465_ = _tmp464_;
	unit_category_add_unit (_tmp460_, _tmp465_);
	_g_object_unref0 (_tmp465_);
	_tmp466_ = digitalstorage_category;
	_tmp467_ = _ ("Exbibytes");
	_tmp468_ = g_dpgettext2 (NULL, "unit-format", "%s EiB");
	_tmp469_ = g_dpgettext2 (NULL, "unit-symbols", "exbibyte,exbibytes,EiB");
	_tmp470_ = unit_new ("exbibyte", _tmp467_, _tmp468_, "1152921504606846976x", "x/1152921504606846976", _tmp469_);
	_tmp471_ = _tmp470_;
	unit_category_add_unit (_tmp466_, _tmp471_);
	_g_object_unref0 (_tmp471_);
	_tmp472_ = digitalstorage_category;
	_tmp473_ = _ ("Zettabits");
	_tmp474_ = g_dpgettext2 (NULL, "unit-format", "%s Eb");
	_tmp475_ = g_dpgettext2 (NULL, "unit-symbols", "zettabit,zettabits,Zb");
	_tmp476_ = unit_new ("zettabit", _tmp473_, _tmp474_, "1000000000000000000000x/8", "8x/1000000000000000000000", _tmp475_);
	_tmp477_ = _tmp476_;
	unit_category_add_unit (_tmp472_, _tmp477_);
	_g_object_unref0 (_tmp477_);
	_tmp478_ = digitalstorage_category;
	_tmp479_ = _ ("Zettabytes");
	_tmp480_ = g_dpgettext2 (NULL, "unit-format", "%s EB");
	_tmp481_ = g_dpgettext2 (NULL, "unit-symbols", "zettabyte,zettabytes,ZB");
	_tmp482_ = unit_new ("zettabyte", _tmp479_, _tmp480_, "1000000000000000000000x", "x/1000000000000000000000", _tmp481_);
	_tmp483_ = _tmp482_;
	unit_category_add_unit (_tmp478_, _tmp483_);
	_g_object_unref0 (_tmp483_);
	_tmp484_ = digitalstorage_category;
	_tmp485_ = _ ("Zebibits");
	_tmp486_ = g_dpgettext2 (NULL, "unit-format", "%s Zib");
	_tmp487_ = g_dpgettext2 (NULL, "unit-symbols", "zebibit,zebibits,Zib");
	_tmp488_ = unit_new ("zebibit", _tmp485_, _tmp486_, "1180591620717411303424x/8", "8x/1180591620717411303424", _tmp487_);
	_tmp489_ = _tmp488_;
	unit_category_add_unit (_tmp484_, _tmp489_);
	_g_object_unref0 (_tmp489_);
	_tmp490_ = digitalstorage_category;
	_tmp491_ = _ ("Zebibytes");
	_tmp492_ = g_dpgettext2 (NULL, "unit-format", "%s ZiB");
	_tmp493_ = g_dpgettext2 (NULL, "unit-symbols", "zebibyte,zebibytes,ZiB");
	_tmp494_ = unit_new ("zebibyte", _tmp491_, _tmp492_, "1180591620717411303424x", "x/1180591620717411303424", _tmp493_);
	_tmp495_ = _tmp494_;
	unit_category_add_unit (_tmp490_, _tmp495_);
	_g_object_unref0 (_tmp495_);
	_tmp496_ = digitalstorage_category;
	_tmp497_ = _ ("Yottabits");
	_tmp498_ = g_dpgettext2 (NULL, "unit-format", "%s Yb");
	_tmp499_ = g_dpgettext2 (NULL, "unit-symbols", "yottabit,yottabits,Yb");
	_tmp500_ = unit_new ("yottabit", _tmp497_, _tmp498_, "1000000000000000000000000x/8", "8x/1000000000000000000000000", _tmp499_);
	_tmp501_ = _tmp500_;
	unit_category_add_unit (_tmp496_, _tmp501_);
	_g_object_unref0 (_tmp501_);
	_tmp502_ = digitalstorage_category;
	_tmp503_ = _ ("Yottabytes");
	_tmp504_ = g_dpgettext2 (NULL, "unit-format", "%s YB");
	_tmp505_ = g_dpgettext2 (NULL, "unit-symbols", "yottabyte,yottabytes,YB");
	_tmp506_ = unit_new ("yottabyte", _tmp503_, _tmp504_, "1000000000000000000000000x", "x/1000000000000000000000000", _tmp505_);
	_tmp507_ = _tmp506_;
	unit_category_add_unit (_tmp502_, _tmp507_);
	_g_object_unref0 (_tmp507_);
	_tmp508_ = digitalstorage_category;
	_tmp509_ = _ ("Yobibits");
	_tmp510_ = g_dpgettext2 (NULL, "unit-format", "%s Yib");
	_tmp511_ = g_dpgettext2 (NULL, "unit-symbols", "yobibit,yobibits,Yib");
	_tmp512_ = unit_new ("yobibit", _tmp509_, _tmp510_, "1208925819614629174706176x/8", "8x/1208925819614629174706176", _tmp511_);
	_tmp513_ = _tmp512_;
	unit_category_add_unit (_tmp508_, _tmp513_);
	_g_object_unref0 (_tmp513_);
	_tmp514_ = digitalstorage_category;
	_tmp515_ = _ ("Yobibytes");
	_tmp516_ = g_dpgettext2 (NULL, "unit-format", "%s YiB");
	_tmp517_ = g_dpgettext2 (NULL, "unit-symbols", "yobibyte,yobibytes,YiB");
	_tmp518_ = unit_new ("yobibyte", _tmp515_, _tmp516_, "1208925819614629174706176x", "x/1208925819614629174706176", _tmp517_);
	_tmp519_ = _tmp518_;
	unit_category_add_unit (_tmp514_, _tmp519_);
	_g_object_unref0 (_tmp519_);
	_tmp520_ = default_unit_manager;
	_tmp521_ = _ ("Currency");
	_tmp522_ = unit_manager_add_category (_tmp520_, "currency", _tmp521_);
	currency_category = _tmp522_;
	_tmp523_ = currency_manager_get_default ();
	_tmp524_ = _tmp523_;
	_tmp525_ = currency_manager_get_currencies (_tmp524_);
	_tmp526_ = _tmp525_;
	_g_object_unref0 (_tmp524_);
	currencies = _tmp526_;
	currencies = g_list_sort (currencies, ___lambda9__gcompare_func);
	_tmp527_ = currencies;
	{
		GList* currency_collection = NULL;
		GList* currency_it = NULL;
		currency_collection = _tmp527_;
		for (currency_it = currency_collection; currency_it != NULL; currency_it = currency_it->next) {
			Currency* _tmp528_ = NULL;
			Currency* currency = NULL;
			_tmp528_ = _g_object_ref0 ((Currency*) currency_it->data);
			currency = _tmp528_;
			{
				gchar* format = NULL;
				const gchar* _tmp529_ = NULL;
				Currency* _tmp530_ = NULL;
				gchar* _tmp531_ = NULL;
				gchar* _tmp532_ = NULL;
				gchar* _tmp533_ = NULL;
				gchar* _tmp534_ = NULL;
				gchar* _tmp535_ = NULL;
				Unit* unit = NULL;
				Currency* _tmp536_ = NULL;
				gchar* _tmp537_ = NULL;
				gchar* _tmp538_ = NULL;
				gchar* _tmp539_ = NULL;
				Currency* _tmp540_ = NULL;
				gchar* _tmp541_ = NULL;
				gchar* _tmp542_ = NULL;
				gchar* _tmp543_ = NULL;
				const gchar* _tmp544_ = NULL;
				Currency* _tmp545_ = NULL;
				gchar* _tmp546_ = NULL;
				gchar* _tmp547_ = NULL;
				gchar* _tmp548_ = NULL;
				Unit* _tmp549_ = NULL;
				Unit* _tmp550_ = NULL;
				UnitCategory* _tmp551_ = NULL;
				Unit* _tmp552_ = NULL;
				_tmp529_ = _ ("%s%%s");
				_tmp530_ = currency;
				_tmp531_ = currency_get_symbol (_tmp530_);
				_tmp532_ = _tmp531_;
				_tmp533_ = _tmp532_;
				_tmp534_ = g_strdup_printf (_tmp529_, _tmp533_);
				_tmp535_ = _tmp534_;
				_g_free0 (_tmp533_);
				format = _tmp535_;
				_tmp536_ = currency;
				_tmp537_ = currency_get_name (_tmp536_);
				_tmp538_ = _tmp537_;
				_tmp539_ = _tmp538_;
				_tmp540_ = currency;
				_tmp541_ = currency_get_display_name (_tmp540_);
				_tmp542_ = _tmp541_;
				_tmp543_ = _tmp542_;
				_tmp544_ = format;
				_tmp545_ = currency;
				_tmp546_ = currency_get_name (_tmp545_);
				_tmp547_ = _tmp546_;
				_tmp548_ = _tmp547_;
				_tmp549_ = unit_new (_tmp539_, _tmp543_, _tmp544_, NULL, NULL, _tmp548_);
				_tmp550_ = _tmp549_;
				_g_free0 (_tmp548_);
				_g_free0 (_tmp543_);
				_g_free0 (_tmp539_);
				unit = _tmp550_;
				_tmp551_ = currency_category;
				_tmp552_ = unit;
				unit_category_add_unit (_tmp551_, _tmp552_);
				_g_object_unref0 (unit);
				_g_free0 (format);
				_g_object_unref0 (currency);
			}
		}
	}
	_tmp553_ = default_unit_manager;
	_tmp554_ = _g_object_ref0 (_tmp553_);
	result = _tmp554_;
	__g_list_free__g_object_unref0_0 (currencies);
	_g_object_unref0 (currency_category);
	_g_object_unref0 (digitalstorage_category);
	_g_object_unref0 (temperature_category);
	_g_object_unref0 (duration_category);
	_g_object_unref0 (weight_category);
	_g_object_unref0 (volume_category);
	_g_object_unref0 (area_category);
	_g_object_unref0 (length_category);
	_g_object_unref0 (angle_category);
	return result;
}


UnitCategory* unit_manager_add_category (UnitManager* self, const gchar* name, const gchar* display_name) {
	UnitCategory* result = NULL;
	UnitCategory* category = NULL;
	const gchar* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	UnitCategory* _tmp2_ = NULL;
	UnitCategory* _tmp3_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (name != NULL, NULL);
	g_return_val_if_fail (display_name != NULL, NULL);
	_tmp0_ = name;
	_tmp1_ = display_name;
	_tmp2_ = unit_category_new (_tmp0_, _tmp1_);
	category = _tmp2_;
	_tmp3_ = _g_object_ref0 (category);
	self->priv->categories = g_list_append (self->priv->categories, _tmp3_);
	result = category;
	return result;
}


GList* unit_manager_get_categories (UnitManager* self) {
	GList* result = NULL;
	GList* r = NULL;
	GList* _tmp0_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	r = NULL;
	_tmp0_ = self->priv->categories;
	{
		GList* c_collection = NULL;
		GList* c_it = NULL;
		c_collection = _tmp0_;
		for (c_it = c_collection; c_it != NULL; c_it = c_it->next) {
			UnitCategory* _tmp1_ = NULL;
			UnitCategory* c = NULL;
			_tmp1_ = _g_object_ref0 ((UnitCategory*) c_it->data);
			c = _tmp1_;
			{
				UnitCategory* _tmp2_ = NULL;
				UnitCategory* _tmp3_ = NULL;
				_tmp2_ = c;
				_tmp3_ = _g_object_ref0 (_tmp2_);
				r = g_list_append (r, _tmp3_);
				_g_object_unref0 (c);
			}
		}
	}
	result = r;
	return result;
}


UnitCategory* unit_manager_get_category (UnitManager* self, const gchar* category) {
	UnitCategory* result = NULL;
	GList* _tmp0_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (category != NULL, NULL);
	_tmp0_ = self->priv->categories;
	{
		GList* c_collection = NULL;
		GList* c_it = NULL;
		c_collection = _tmp0_;
		for (c_it = c_collection; c_it != NULL; c_it = c_it->next) {
			UnitCategory* _tmp1_ = NULL;
			UnitCategory* c = NULL;
			_tmp1_ = _g_object_ref0 ((UnitCategory*) c_it->data);
			c = _tmp1_;
			{
				UnitCategory* _tmp2_ = NULL;
				gchar* _tmp3_ = NULL;
				gchar* _tmp4_ = NULL;
				gchar* _tmp5_ = NULL;
				const gchar* _tmp6_ = NULL;
				gboolean _tmp7_ = FALSE;
				_tmp2_ = c;
				_tmp3_ = unit_category_get_name (_tmp2_);
				_tmp4_ = _tmp3_;
				_tmp5_ = _tmp4_;
				_tmp6_ = category;
				_tmp7_ = g_strcmp0 (_tmp5_, _tmp6_) == 0;
				_g_free0 (_tmp5_);
				if (_tmp7_) {
					result = c;
					return result;
				}
				_g_object_unref0 (c);
			}
		}
	}
	result = NULL;
	return result;
}


Unit* unit_manager_get_unit_by_name (UnitManager* self, const gchar* name) {
	Unit* result = NULL;
	gint count = 0;
	Unit* return_unit = NULL;
	GList* _tmp0_ = NULL;
	gint _tmp9_ = 0;
	GList* _tmp11_ = NULL;
	gint _tmp20_ = 0;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (name != NULL, NULL);
	count = 0;
	return_unit = NULL;
	_tmp0_ = self->priv->categories;
	{
		GList* c_collection = NULL;
		GList* c_it = NULL;
		c_collection = _tmp0_;
		for (c_it = c_collection; c_it != NULL; c_it = c_it->next) {
			UnitCategory* _tmp1_ = NULL;
			UnitCategory* c = NULL;
			_tmp1_ = _g_object_ref0 ((UnitCategory*) c_it->data);
			c = _tmp1_;
			{
				Unit* u = NULL;
				UnitCategory* _tmp2_ = NULL;
				const gchar* _tmp3_ = NULL;
				Unit* _tmp4_ = NULL;
				Unit* _tmp5_ = NULL;
				_tmp2_ = c;
				_tmp3_ = name;
				_tmp4_ = unit_category_get_unit_by_name (_tmp2_, _tmp3_, TRUE);
				u = _tmp4_;
				_tmp5_ = u;
				if (_tmp5_ != NULL) {
					Unit* _tmp6_ = NULL;
					Unit* _tmp7_ = NULL;
					gint _tmp8_ = 0;
					_tmp6_ = u;
					_tmp7_ = _g_object_ref0 (_tmp6_);
					_g_object_unref0 (return_unit);
					return_unit = _tmp7_;
					_tmp8_ = count;
					count = _tmp8_ + 1;
				}
				_g_object_unref0 (u);
				_g_object_unref0 (c);
			}
		}
	}
	_tmp9_ = count;
	if (_tmp9_ > 1) {
		result = NULL;
		_g_object_unref0 (return_unit);
		return result;
	} else {
		gint _tmp10_ = 0;
		_tmp10_ = count;
		if (_tmp10_ == 1) {
			result = return_unit;
			return result;
		}
	}
	_tmp11_ = self->priv->categories;
	{
		GList* c_collection = NULL;
		GList* c_it = NULL;
		c_collection = _tmp11_;
		for (c_it = c_collection; c_it != NULL; c_it = c_it->next) {
			UnitCategory* _tmp12_ = NULL;
			UnitCategory* c = NULL;
			_tmp12_ = _g_object_ref0 ((UnitCategory*) c_it->data);
			c = _tmp12_;
			{
				Unit* u = NULL;
				UnitCategory* _tmp13_ = NULL;
				const gchar* _tmp14_ = NULL;
				Unit* _tmp15_ = NULL;
				Unit* _tmp16_ = NULL;
				_tmp13_ = c;
				_tmp14_ = name;
				_tmp15_ = unit_category_get_unit_by_name (_tmp13_, _tmp14_, FALSE);
				u = _tmp15_;
				_tmp16_ = u;
				if (_tmp16_ != NULL) {
					Unit* _tmp17_ = NULL;
					Unit* _tmp18_ = NULL;
					gint _tmp19_ = 0;
					_tmp17_ = u;
					_tmp18_ = _g_object_ref0 (_tmp17_);
					_g_object_unref0 (return_unit);
					return_unit = _tmp18_;
					_tmp19_ = count;
					count = _tmp19_ + 1;
				}
				_g_object_unref0 (u);
				_g_object_unref0 (c);
			}
		}
	}
	_tmp20_ = count;
	if (_tmp20_ == 1) {
		result = return_unit;
		return result;
	}
	result = NULL;
	_g_object_unref0 (return_unit);
	return result;
}


Unit* unit_manager_get_unit_by_symbol (UnitManager* self, const gchar* symbol) {
	Unit* result = NULL;
	gint count = 0;
	Unit* return_unit = NULL;
	GList* _tmp0_ = NULL;
	gint _tmp9_ = 0;
	GList* _tmp11_ = NULL;
	gint _tmp20_ = 0;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (symbol != NULL, NULL);
	count = 0;
	return_unit = NULL;
	_tmp0_ = self->priv->categories;
	{
		GList* c_collection = NULL;
		GList* c_it = NULL;
		c_collection = _tmp0_;
		for (c_it = c_collection; c_it != NULL; c_it = c_it->next) {
			UnitCategory* _tmp1_ = NULL;
			UnitCategory* c = NULL;
			_tmp1_ = _g_object_ref0 ((UnitCategory*) c_it->data);
			c = _tmp1_;
			{
				Unit* u = NULL;
				UnitCategory* _tmp2_ = NULL;
				const gchar* _tmp3_ = NULL;
				Unit* _tmp4_ = NULL;
				Unit* _tmp5_ = NULL;
				_tmp2_ = c;
				_tmp3_ = symbol;
				_tmp4_ = unit_category_get_unit_by_symbol (_tmp2_, _tmp3_, TRUE);
				u = _tmp4_;
				_tmp5_ = u;
				if (_tmp5_ != NULL) {
					Unit* _tmp6_ = NULL;
					Unit* _tmp7_ = NULL;
					gint _tmp8_ = 0;
					_tmp6_ = u;
					_tmp7_ = _g_object_ref0 (_tmp6_);
					_g_object_unref0 (return_unit);
					return_unit = _tmp7_;
					_tmp8_ = count;
					count = _tmp8_ + 1;
				}
				_g_object_unref0 (u);
				_g_object_unref0 (c);
			}
		}
	}
	_tmp9_ = count;
	if (_tmp9_ > 1) {
		result = NULL;
		_g_object_unref0 (return_unit);
		return result;
	} else {
		gint _tmp10_ = 0;
		_tmp10_ = count;
		if (_tmp10_ == 1) {
			result = return_unit;
			return result;
		}
	}
	_tmp11_ = self->priv->categories;
	{
		GList* c_collection = NULL;
		GList* c_it = NULL;
		c_collection = _tmp11_;
		for (c_it = c_collection; c_it != NULL; c_it = c_it->next) {
			UnitCategory* _tmp12_ = NULL;
			UnitCategory* c = NULL;
			_tmp12_ = _g_object_ref0 ((UnitCategory*) c_it->data);
			c = _tmp12_;
			{
				Unit* u = NULL;
				UnitCategory* _tmp13_ = NULL;
				const gchar* _tmp14_ = NULL;
				Unit* _tmp15_ = NULL;
				Unit* _tmp16_ = NULL;
				_tmp13_ = c;
				_tmp14_ = symbol;
				_tmp15_ = unit_category_get_unit_by_symbol (_tmp13_, _tmp14_, FALSE);
				u = _tmp15_;
				_tmp16_ = u;
				if (_tmp16_ != NULL) {
					Unit* _tmp17_ = NULL;
					Unit* _tmp18_ = NULL;
					gint _tmp19_ = 0;
					_tmp17_ = u;
					_tmp18_ = _g_object_ref0 (_tmp17_);
					_g_object_unref0 (return_unit);
					return_unit = _tmp18_;
					_tmp19_ = count;
					count = _tmp19_ + 1;
				}
				_g_object_unref0 (u);
				_g_object_unref0 (c);
			}
		}
	}
	_tmp20_ = count;
	if (_tmp20_ == 1) {
		result = return_unit;
		return result;
	}
	result = NULL;
	_g_object_unref0 (return_unit);
	return result;
}


Number* unit_manager_convert_by_symbol (UnitManager* self, Number* x, const gchar* x_symbol, const gchar* z_symbol) {
	Number* result = NULL;
	GList* _tmp0_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (x != NULL, NULL);
	g_return_val_if_fail (x_symbol != NULL, NULL);
	g_return_val_if_fail (z_symbol != NULL, NULL);
	_tmp0_ = self->priv->categories;
	{
		GList* c_collection = NULL;
		GList* c_it = NULL;
		c_collection = _tmp0_;
		for (c_it = c_collection; c_it != NULL; c_it = c_it->next) {
			UnitCategory* _tmp1_ = NULL;
			UnitCategory* c = NULL;
			_tmp1_ = _g_object_ref0 ((UnitCategory*) c_it->data);
			c = _tmp1_;
			{
				Unit* x_units = NULL;
				UnitCategory* _tmp2_ = NULL;
				const gchar* _tmp3_ = NULL;
				Unit* _tmp4_ = NULL;
				Unit* _tmp5_ = NULL;
				Unit* z_units = NULL;
				UnitCategory* _tmp9_ = NULL;
				const gchar* _tmp10_ = NULL;
				Unit* _tmp11_ = NULL;
				Unit* _tmp12_ = NULL;
				gboolean _tmp16_ = FALSE;
				Unit* _tmp17_ = NULL;
				_tmp2_ = c;
				_tmp3_ = x_symbol;
				_tmp4_ = unit_category_get_unit_by_symbol (_tmp2_, _tmp3_, TRUE);
				x_units = _tmp4_;
				_tmp5_ = x_units;
				if (_tmp5_ == NULL) {
					UnitCategory* _tmp6_ = NULL;
					const gchar* _tmp7_ = NULL;
					Unit* _tmp8_ = NULL;
					_tmp6_ = c;
					_tmp7_ = x_symbol;
					_tmp8_ = unit_category_get_unit_by_symbol (_tmp6_, _tmp7_, FALSE);
					_g_object_unref0 (x_units);
					x_units = _tmp8_;
				}
				_tmp9_ = c;
				_tmp10_ = z_symbol;
				_tmp11_ = unit_category_get_unit_by_symbol (_tmp9_, _tmp10_, TRUE);
				z_units = _tmp11_;
				_tmp12_ = z_units;
				if (_tmp12_ == NULL) {
					UnitCategory* _tmp13_ = NULL;
					const gchar* _tmp14_ = NULL;
					Unit* _tmp15_ = NULL;
					_tmp13_ = c;
					_tmp14_ = z_symbol;
					_tmp15_ = unit_category_get_unit_by_symbol (_tmp13_, _tmp14_, FALSE);
					_g_object_unref0 (z_units);
					z_units = _tmp15_;
				}
				_tmp17_ = x_units;
				if (_tmp17_ != NULL) {
					Unit* _tmp18_ = NULL;
					_tmp18_ = z_units;
					_tmp16_ = _tmp18_ != NULL;
				} else {
					_tmp16_ = FALSE;
				}
				if (_tmp16_) {
					UnitCategory* _tmp19_ = NULL;
					Number* _tmp20_ = NULL;
					Unit* _tmp21_ = NULL;
					Unit* _tmp22_ = NULL;
					Number* _tmp23_ = NULL;
					_tmp19_ = c;
					_tmp20_ = x;
					_tmp21_ = x_units;
					_tmp22_ = z_units;
					_tmp23_ = unit_category_convert (_tmp19_, _tmp20_, _tmp21_, _tmp22_);
					result = _tmp23_;
					_g_object_unref0 (z_units);
					_g_object_unref0 (x_units);
					_g_object_unref0 (c);
					return result;
				}
				_g_object_unref0 (z_units);
				_g_object_unref0 (x_units);
				_g_object_unref0 (c);
			}
		}
	}
	result = NULL;
	return result;
}


static void unit_manager_class_init (UnitManagerClass * klass) {
	unit_manager_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (UnitManagerPrivate));
	G_OBJECT_CLASS (klass)->finalize = unit_manager_finalize;
}


static void unit_manager_instance_init (UnitManager * self) {
	self->priv = UNIT_MANAGER_GET_PRIVATE (self);
}


static void unit_manager_finalize (GObject* obj) {
	UnitManager * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_UNIT_MANAGER, UnitManager);
	__g_list_free__g_object_unref0_0 (self->priv->categories);
	G_OBJECT_CLASS (unit_manager_parent_class)->finalize (obj);
}


GType unit_manager_get_type (void) {
	static volatile gsize unit_manager_type_id__volatile = 0;
	if (g_once_init_enter (&unit_manager_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (UnitManagerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) unit_manager_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (UnitManager), 0, (GInstanceInitFunc) unit_manager_instance_init, NULL };
		GType unit_manager_type_id;
		unit_manager_type_id = g_type_register_static (G_TYPE_OBJECT, "UnitManager", &g_define_type_info, 0);
		g_once_init_leave (&unit_manager_type_id__volatile, unit_manager_type_id);
	}
	return unit_manager_type_id__volatile;
}


UnitCategory* unit_category_construct (GType object_type, const gchar* name, const gchar* display_name) {
	UnitCategory * self = NULL;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	g_return_val_if_fail (name != NULL, NULL);
	g_return_val_if_fail (display_name != NULL, NULL);
	self = (UnitCategory*) g_object_new (object_type, NULL);
	_tmp0_ = name;
	_tmp1_ = g_strdup (_tmp0_);
	_g_free0 (self->priv->_name);
	self->priv->_name = _tmp1_;
	_tmp2_ = display_name;
	_tmp3_ = g_strdup (_tmp2_);
	_g_free0 (self->priv->_display_name);
	self->priv->_display_name = _tmp3_;
	__g_list_free__g_object_unref0_0 (self->priv->units);
	self->priv->units = NULL;
	return self;
}


UnitCategory* unit_category_new (const gchar* name, const gchar* display_name) {
	return unit_category_construct (TYPE_UNIT_CATEGORY, name, display_name);
}


void unit_category_add_unit (UnitCategory* self, Unit* unit) {
	Unit* _tmp0_ = NULL;
	Unit* _tmp1_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (unit != NULL);
	_tmp0_ = unit;
	_tmp1_ = _g_object_ref0 (_tmp0_);
	self->priv->units = g_list_append (self->priv->units, _tmp1_);
}


Unit* unit_category_get_unit_by_name (UnitCategory* self, const gchar* name, gboolean case_sensitive) {
	Unit* result = NULL;
	gint count = 0;
	Unit* return_unit = NULL;
	GList* _tmp0_ = NULL;
	gint _tmp24_ = 0;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (name != NULL, NULL);
	count = 0;
	return_unit = NULL;
	_tmp0_ = self->priv->units;
	{
		GList* unit_collection = NULL;
		GList* unit_it = NULL;
		unit_collection = _tmp0_;
		for (unit_it = unit_collection; unit_it != NULL; unit_it = unit_it->next) {
			Unit* _tmp1_ = NULL;
			Unit* unit = NULL;
			_tmp1_ = _g_object_ref0 ((Unit*) unit_it->data);
			unit = _tmp1_;
			{
				gboolean _tmp2_ = FALSE;
				gboolean _tmp3_ = FALSE;
				gboolean _tmp4_ = FALSE;
				_tmp4_ = case_sensitive;
				if (_tmp4_) {
					Unit* _tmp5_ = NULL;
					gchar* _tmp6_ = NULL;
					gchar* _tmp7_ = NULL;
					gchar* _tmp8_ = NULL;
					const gchar* _tmp9_ = NULL;
					_tmp5_ = unit;
					_tmp6_ = unit_get_name (_tmp5_);
					_tmp7_ = _tmp6_;
					_tmp8_ = _tmp7_;
					_tmp9_ = name;
					_tmp3_ = g_strcmp0 (_tmp8_, _tmp9_) == 0;
					_g_free0 (_tmp8_);
				} else {
					_tmp3_ = FALSE;
				}
				if (_tmp3_) {
					_tmp2_ = TRUE;
				} else {
					gboolean _tmp10_ = FALSE;
					gboolean _tmp11_ = FALSE;
					_tmp11_ = case_sensitive;
					if (!_tmp11_) {
						Unit* _tmp12_ = NULL;
						gchar* _tmp13_ = NULL;
						gchar* _tmp14_ = NULL;
						gchar* _tmp15_ = NULL;
						gchar* _tmp16_ = NULL;
						gchar* _tmp17_ = NULL;
						const gchar* _tmp18_ = NULL;
						gchar* _tmp19_ = NULL;
						gchar* _tmp20_ = NULL;
						_tmp12_ = unit;
						_tmp13_ = unit_get_name (_tmp12_);
						_tmp14_ = _tmp13_;
						_tmp15_ = _tmp14_;
						_tmp16_ = g_utf8_strdown (_tmp15_, (gssize) -1);
						_tmp17_ = _tmp16_;
						_tmp18_ = name;
						_tmp19_ = g_utf8_strdown (_tmp18_, (gssize) -1);
						_tmp20_ = _tmp19_;
						_tmp10_ = g_strcmp0 (_tmp17_, _tmp20_) == 0;
						_g_free0 (_tmp20_);
						_g_free0 (_tmp17_);
						_g_free0 (_tmp15_);
					} else {
						_tmp10_ = FALSE;
					}
					_tmp2_ = _tmp10_;
				}
				if (_tmp2_) {
					Unit* _tmp21_ = NULL;
					Unit* _tmp22_ = NULL;
					gint _tmp23_ = 0;
					_tmp21_ = unit;
					_tmp22_ = _g_object_ref0 (_tmp21_);
					_g_object_unref0 (return_unit);
					return_unit = _tmp22_;
					_tmp23_ = count;
					count = _tmp23_ + 1;
				}
				_g_object_unref0 (unit);
			}
		}
	}
	_tmp24_ = count;
	if (_tmp24_ == 1) {
		result = return_unit;
		return result;
	}
	result = NULL;
	_g_object_unref0 (return_unit);
	return result;
}


Unit* unit_category_get_unit_by_symbol (UnitCategory* self, const gchar* symbol, gboolean case_sensitive) {
	Unit* result = NULL;
	gint count = 0;
	Unit* return_unit = NULL;
	GList* _tmp0_ = NULL;
	gint _tmp8_ = 0;
	GList* _tmp10_ = NULL;
	gint _tmp18_ = 0;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (symbol != NULL, NULL);
	count = 0;
	return_unit = NULL;
	_tmp0_ = self->priv->units;
	{
		GList* unit_collection = NULL;
		GList* unit_it = NULL;
		unit_collection = _tmp0_;
		for (unit_it = unit_collection; unit_it != NULL; unit_it = unit_it->next) {
			Unit* _tmp1_ = NULL;
			Unit* unit = NULL;
			_tmp1_ = _g_object_ref0 ((Unit*) unit_it->data);
			unit = _tmp1_;
			{
				Unit* _tmp2_ = NULL;
				const gchar* _tmp3_ = NULL;
				gboolean _tmp4_ = FALSE;
				_tmp2_ = unit;
				_tmp3_ = symbol;
				_tmp4_ = unit_matches_symbol (_tmp2_, _tmp3_, TRUE);
				if (_tmp4_) {
					Unit* _tmp5_ = NULL;
					Unit* _tmp6_ = NULL;
					gint _tmp7_ = 0;
					_tmp5_ = unit;
					_tmp6_ = _g_object_ref0 (_tmp5_);
					_g_object_unref0 (return_unit);
					return_unit = _tmp6_;
					_tmp7_ = count;
					count = _tmp7_ + 1;
				}
				_g_object_unref0 (unit);
			}
		}
	}
	_tmp8_ = count;
	if (_tmp8_ > 1) {
		result = NULL;
		_g_object_unref0 (return_unit);
		return result;
	} else {
		gint _tmp9_ = 0;
		_tmp9_ = count;
		if (_tmp9_ == 1) {
			result = return_unit;
			return result;
		}
	}
	_tmp10_ = self->priv->units;
	{
		GList* unit_collection = NULL;
		GList* unit_it = NULL;
		unit_collection = _tmp10_;
		for (unit_it = unit_collection; unit_it != NULL; unit_it = unit_it->next) {
			Unit* _tmp11_ = NULL;
			Unit* unit = NULL;
			_tmp11_ = _g_object_ref0 ((Unit*) unit_it->data);
			unit = _tmp11_;
			{
				Unit* _tmp12_ = NULL;
				const gchar* _tmp13_ = NULL;
				gboolean _tmp14_ = FALSE;
				_tmp12_ = unit;
				_tmp13_ = symbol;
				_tmp14_ = unit_matches_symbol (_tmp12_, _tmp13_, FALSE);
				if (_tmp14_) {
					Unit* _tmp15_ = NULL;
					Unit* _tmp16_ = NULL;
					gint _tmp17_ = 0;
					_tmp15_ = unit;
					_tmp16_ = _g_object_ref0 (_tmp15_);
					_g_object_unref0 (return_unit);
					return_unit = _tmp16_;
					_tmp17_ = count;
					count = _tmp17_ + 1;
				}
				_g_object_unref0 (unit);
			}
		}
	}
	_tmp18_ = count;
	if (_tmp18_ == 1) {
		result = return_unit;
		return result;
	}
	result = NULL;
	_g_object_unref0 (return_unit);
	return result;
}


GList* unit_category_get_units (UnitCategory* self) {
	GList* result = NULL;
	GList* _tmp0_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->units;
	result = _tmp0_;
	return result;
}


Number* unit_category_convert (UnitCategory* self, Number* x, Unit* x_units, Unit* z_units) {
	Number* result = NULL;
	Number* t = NULL;
	Unit* _tmp0_ = NULL;
	Number* _tmp1_ = NULL;
	Number* _tmp2_ = NULL;
	Number* _tmp3_ = NULL;
	Unit* _tmp4_ = NULL;
	Number* _tmp5_ = NULL;
	Number* _tmp6_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (x != NULL, NULL);
	g_return_val_if_fail (x_units != NULL, NULL);
	g_return_val_if_fail (z_units != NULL, NULL);
	_tmp0_ = x_units;
	_tmp1_ = x;
	_tmp2_ = unit_convert_from (_tmp0_, _tmp1_);
	t = _tmp2_;
	_tmp3_ = t;
	if (_tmp3_ == NULL) {
		result = NULL;
		_g_object_unref0 (t);
		return result;
	}
	_tmp4_ = z_units;
	_tmp5_ = t;
	_tmp6_ = unit_convert_to (_tmp4_, _tmp5_);
	result = _tmp6_;
	_g_object_unref0 (t);
	return result;
}


gchar* unit_category_get_name (UnitCategory* self) {
	gchar* result;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_name;
	_tmp1_ = g_strdup (_tmp0_);
	result = _tmp1_;
	return result;
}


gchar* unit_category_get_display_name (UnitCategory* self) {
	gchar* result;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_display_name;
	_tmp1_ = g_strdup (_tmp0_);
	result = _tmp1_;
	return result;
}


static void unit_category_class_init (UnitCategoryClass * klass) {
	unit_category_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (UnitCategoryPrivate));
	G_OBJECT_CLASS (klass)->get_property = _vala_unit_category_get_property;
	G_OBJECT_CLASS (klass)->finalize = unit_category_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), UNIT_CATEGORY_NAME, g_param_spec_string ("name", "name", "name", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), UNIT_CATEGORY_DISPLAY_NAME, g_param_spec_string ("display-name", "display-name", "display-name", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
}


static void unit_category_instance_init (UnitCategory * self) {
	self->priv = UNIT_CATEGORY_GET_PRIVATE (self);
}


static void unit_category_finalize (GObject* obj) {
	UnitCategory * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_UNIT_CATEGORY, UnitCategory);
	__g_list_free__g_object_unref0_0 (self->priv->units);
	_g_free0 (self->priv->_name);
	_g_free0 (self->priv->_display_name);
	G_OBJECT_CLASS (unit_category_parent_class)->finalize (obj);
}


GType unit_category_get_type (void) {
	static volatile gsize unit_category_type_id__volatile = 0;
	if (g_once_init_enter (&unit_category_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (UnitCategoryClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) unit_category_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (UnitCategory), 0, (GInstanceInitFunc) unit_category_instance_init, NULL };
		GType unit_category_type_id;
		unit_category_type_id = g_type_register_static (G_TYPE_OBJECT, "UnitCategory", &g_define_type_info, 0);
		g_once_init_leave (&unit_category_type_id__volatile, unit_category_type_id);
	}
	return unit_category_type_id__volatile;
}


static void _vala_unit_category_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
	UnitCategory * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_UNIT_CATEGORY, UnitCategory);
	switch (property_id) {
		case UNIT_CATEGORY_NAME:
		g_value_take_string (value, unit_category_get_name (self));
		break;
		case UNIT_CATEGORY_DISPLAY_NAME:
		g_value_take_string (value, unit_category_get_display_name (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}


static void _g_free0_ (gpointer var) {
	var = (g_free (var), NULL);
}


static void _g_list_free__g_free0_ (GList* self) {
	g_list_foreach (self, (GFunc) _g_free0_, NULL);
	g_list_free (self);
}


Unit* unit_construct (GType object_type, const gchar* name, const gchar* display_name, const gchar* format, const gchar* from_function, const gchar* to_function, const gchar* symbols) {
	Unit * self = NULL;
	Serializer* _tmp0_ = NULL;
	Serializer* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	const gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	const gchar* _tmp8_ = NULL;
	gchar* _tmp9_ = NULL;
	const gchar* _tmp10_ = NULL;
	gchar* _tmp11_ = NULL;
	gchar** symbol_names = NULL;
	const gchar* _tmp12_ = NULL;
	gchar** _tmp13_ = NULL;
	gchar** _tmp14_ = NULL;
	gint symbol_names_length1 = 0;
	gint _symbol_names_size_ = 0;
	gchar** _tmp15_ = NULL;
	gint _tmp15__length1 = 0;
	g_return_val_if_fail (name != NULL, NULL);
	g_return_val_if_fail (display_name != NULL, NULL);
	g_return_val_if_fail (format != NULL, NULL);
	g_return_val_if_fail (symbols != NULL, NULL);
	self = (Unit*) g_object_new (object_type, NULL);
	_tmp0_ = serializer_new (DISPLAY_FORMAT_AUTOMATIC, 10, 2);
	_g_object_unref0 (self->priv->serializer);
	self->priv->serializer = _tmp0_;
	_tmp1_ = self->priv->serializer;
	serializer_set_leading_digits (_tmp1_, 6);
	_tmp2_ = name;
	_tmp3_ = g_strdup (_tmp2_);
	_g_free0 (self->priv->_name);
	self->priv->_name = _tmp3_;
	_tmp4_ = display_name;
	_tmp5_ = g_strdup (_tmp4_);
	_g_free0 (self->priv->_display_name);
	self->priv->_display_name = _tmp5_;
	_tmp6_ = format;
	_tmp7_ = g_strdup (_tmp6_);
	_g_free0 (self->priv->_format);
	self->priv->_format = _tmp7_;
	_tmp8_ = from_function;
	_tmp9_ = g_strdup (_tmp8_);
	_g_free0 (self->priv->from_function);
	self->priv->from_function = _tmp9_;
	_tmp10_ = to_function;
	_tmp11_ = g_strdup (_tmp10_);
	_g_free0 (self->priv->to_function);
	self->priv->to_function = _tmp11_;
	__g_list_free__g_free0_0 (self->priv->_symbols);
	self->priv->_symbols = NULL;
	_tmp12_ = symbols;
	_tmp14_ = _tmp13_ = g_strsplit (_tmp12_, ",", 0);
	symbol_names = _tmp14_;
	symbol_names_length1 = _vala_array_length (_tmp13_);
	_symbol_names_size_ = symbol_names_length1;
	_tmp15_ = symbol_names;
	_tmp15__length1 = symbol_names_length1;
	{
		gchar** symbol_name_collection = NULL;
		gint symbol_name_collection_length1 = 0;
		gint _symbol_name_collection_size_ = 0;
		gint symbol_name_it = 0;
		symbol_name_collection = _tmp15_;
		symbol_name_collection_length1 = _tmp15__length1;
		for (symbol_name_it = 0; symbol_name_it < _tmp15__length1; symbol_name_it = symbol_name_it + 1) {
			gchar* _tmp16_ = NULL;
			gchar* symbol_name = NULL;
			_tmp16_ = g_strdup (symbol_name_collection[symbol_name_it]);
			symbol_name = _tmp16_;
			{
				const gchar* _tmp17_ = NULL;
				gchar* _tmp18_ = NULL;
				_tmp17_ = symbol_name;
				_tmp18_ = g_strdup (_tmp17_);
				self->priv->_symbols = g_list_append (self->priv->_symbols, _tmp18_);
				_g_free0 (symbol_name);
			}
		}
	}
	symbol_names = (_vala_array_free (symbol_names, symbol_names_length1, (GDestroyNotify) g_free), NULL);
	return self;
}


Unit* unit_new (const gchar* name, const gchar* display_name, const gchar* format, const gchar* from_function, const gchar* to_function, const gchar* symbols) {
	return unit_construct (TYPE_UNIT, name, display_name, format, from_function, to_function, symbols);
}


gboolean unit_matches_symbol (Unit* self, const gchar* symbol, gboolean case_sensitive) {
	gboolean result = FALSE;
	GList* _tmp0_ = NULL;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (symbol != NULL, FALSE);
	_tmp0_ = self->priv->_symbols;
	{
		GList* s_collection = NULL;
		GList* s_it = NULL;
		s_collection = _tmp0_;
		for (s_it = s_collection; s_it != NULL; s_it = s_it->next) {
			gchar* _tmp1_ = NULL;
			gchar* s = NULL;
			_tmp1_ = g_strdup ((const gchar*) s_it->data);
			s = _tmp1_;
			{
				gboolean _tmp2_ = FALSE;
				gboolean _tmp3_ = FALSE;
				gboolean _tmp4_ = FALSE;
				_tmp4_ = case_sensitive;
				if (_tmp4_) {
					const gchar* _tmp5_ = NULL;
					const gchar* _tmp6_ = NULL;
					_tmp5_ = s;
					_tmp6_ = symbol;
					_tmp3_ = g_strcmp0 (_tmp5_, _tmp6_) == 0;
				} else {
					_tmp3_ = FALSE;
				}
				if (_tmp3_) {
					_tmp2_ = TRUE;
				} else {
					gboolean _tmp7_ = FALSE;
					gboolean _tmp8_ = FALSE;
					_tmp8_ = case_sensitive;
					if (!_tmp8_) {
						const gchar* _tmp9_ = NULL;
						gchar* _tmp10_ = NULL;
						gchar* _tmp11_ = NULL;
						const gchar* _tmp12_ = NULL;
						gchar* _tmp13_ = NULL;
						gchar* _tmp14_ = NULL;
						_tmp9_ = s;
						_tmp10_ = g_utf8_strdown (_tmp9_, (gssize) -1);
						_tmp11_ = _tmp10_;
						_tmp12_ = symbol;
						_tmp13_ = g_utf8_strdown (_tmp12_, (gssize) -1);
						_tmp14_ = _tmp13_;
						_tmp7_ = g_strcmp0 (_tmp11_, _tmp14_) == 0;
						_g_free0 (_tmp14_);
						_g_free0 (_tmp11_);
					} else {
						_tmp7_ = FALSE;
					}
					_tmp2_ = _tmp7_;
				}
				if (_tmp2_) {
					result = TRUE;
					_g_free0 (s);
					return result;
				}
				_g_free0 (s);
			}
		}
	}
	result = FALSE;
	return result;
}


GList* unit_get_symbols (Unit* self) {
	GList* result = NULL;
	GList* _tmp0_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_symbols;
	result = _tmp0_;
	return result;
}


Number* unit_convert_from (Unit* self, Number* x) {
	Number* result = NULL;
	const gchar* _tmp0_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (x != NULL, NULL);
	_tmp0_ = self->priv->from_function;
	if (_tmp0_ != NULL) {
		const gchar* _tmp1_ = NULL;
		Number* _tmp2_ = NULL;
		Number* _tmp3_ = NULL;
		_tmp1_ = self->priv->from_function;
		_tmp2_ = x;
		_tmp3_ = unit_solve_function (self, _tmp1_, _tmp2_);
		result = _tmp3_;
		return result;
	} else {
		Number* r = NULL;
		CurrencyManager* _tmp4_ = NULL;
		CurrencyManager* _tmp5_ = NULL;
		gchar* _tmp6_ = NULL;
		gchar* _tmp7_ = NULL;
		gchar* _tmp8_ = NULL;
		Number* _tmp9_ = NULL;
		Number* _tmp10_ = NULL;
		Number* _tmp11_ = NULL;
		Number* _tmp12_ = NULL;
		Number* _tmp13_ = NULL;
		Number* _tmp14_ = NULL;
		_tmp4_ = currency_manager_get_default ();
		_tmp5_ = _tmp4_;
		_tmp6_ = unit_get_name (self);
		_tmp7_ = _tmp6_;
		_tmp8_ = _tmp7_;
		_tmp9_ = currency_manager_get_value (_tmp5_, _tmp8_);
		_tmp10_ = _tmp9_;
		_g_free0 (_tmp8_);
		_g_object_unref0 (_tmp5_);
		r = _tmp10_;
		_tmp11_ = r;
		if (_tmp11_ == NULL) {
			result = NULL;
			_g_object_unref0 (r);
			return result;
		}
		_tmp12_ = x;
		_tmp13_ = r;
		_tmp14_ = number_divide (_tmp12_, _tmp13_);
		result = _tmp14_;
		_g_object_unref0 (r);
		return result;
	}
}


Number* unit_convert_to (Unit* self, Number* x) {
	Number* result = NULL;
	const gchar* _tmp0_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (x != NULL, NULL);
	_tmp0_ = self->priv->to_function;
	if (_tmp0_ != NULL) {
		const gchar* _tmp1_ = NULL;
		Number* _tmp2_ = NULL;
		Number* _tmp3_ = NULL;
		_tmp1_ = self->priv->to_function;
		_tmp2_ = x;
		_tmp3_ = unit_solve_function (self, _tmp1_, _tmp2_);
		result = _tmp3_;
		return result;
	} else {
		Number* r = NULL;
		CurrencyManager* _tmp4_ = NULL;
		CurrencyManager* _tmp5_ = NULL;
		gchar* _tmp6_ = NULL;
		gchar* _tmp7_ = NULL;
		gchar* _tmp8_ = NULL;
		Number* _tmp9_ = NULL;
		Number* _tmp10_ = NULL;
		Number* _tmp11_ = NULL;
		Number* _tmp12_ = NULL;
		Number* _tmp13_ = NULL;
		Number* _tmp14_ = NULL;
		_tmp4_ = currency_manager_get_default ();
		_tmp5_ = _tmp4_;
		_tmp6_ = unit_get_name (self);
		_tmp7_ = _tmp6_;
		_tmp8_ = _tmp7_;
		_tmp9_ = currency_manager_get_value (_tmp5_, _tmp8_);
		_tmp10_ = _tmp9_;
		_g_free0 (_tmp8_);
		_g_object_unref0 (_tmp5_);
		r = _tmp10_;
		_tmp11_ = r;
		if (_tmp11_ == NULL) {
			result = NULL;
			_g_object_unref0 (r);
			return result;
		}
		_tmp12_ = x;
		_tmp13_ = r;
		_tmp14_ = number_multiply (_tmp12_, _tmp13_);
		result = _tmp14_;
		_g_object_unref0 (r);
		return result;
	}
}


gchar* unit_format (Unit* self, Number* x) {
	gchar* result = NULL;
	gchar* number_text = NULL;
	Serializer* _tmp0_ = NULL;
	Number* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (x != NULL, NULL);
	_tmp0_ = self->priv->serializer;
	_tmp1_ = x;
	_tmp2_ = serializer_to_string (_tmp0_, _tmp1_);
	number_text = _tmp2_;
	_tmp3_ = self->priv->_format;
	_tmp4_ = g_strdup_printf (_tmp3_, number_text);
	result = _tmp4_;
	_g_free0 (number_text);
	return result;
}


static Number* unit_solve_function (Unit* self, const gchar* function, Number* x) {
	Number* result = NULL;
	UnitSolveEquation* equation = NULL;
	const gchar* _tmp0_ = NULL;
	Number* _tmp1_ = NULL;
	UnitSolveEquation* _tmp2_ = NULL;
	UnitSolveEquation* _tmp3_ = NULL;
	UnitSolveEquation* _tmp4_ = NULL;
	Number* z = NULL;
	UnitSolveEquation* _tmp5_ = NULL;
	Number* _tmp6_ = NULL;
	Number* _tmp7_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (function != NULL, NULL);
	g_return_val_if_fail (x != NULL, NULL);
	_tmp0_ = function;
	_tmp1_ = x;
	_tmp2_ = unit_solve_equation_new (_tmp0_, _tmp1_);
	equation = _tmp2_;
	_tmp3_ = equation;
	((Equation*) _tmp3_)->base = 10;
	_tmp4_ = equation;
	((Equation*) _tmp4_)->wordlen = 32;
	_tmp5_ = equation;
	_tmp6_ = equation_parse ((Equation*) _tmp5_, NULL, NULL, NULL, NULL, NULL);
	z = _tmp6_;
	_tmp7_ = z;
	if (_tmp7_ == NULL) {
		const gchar* _tmp8_ = NULL;
		_tmp8_ = function;
		g_warning ("unit.vala:406: Failed to convert value: %s", _tmp8_);
	}
	result = z;
	_g_object_unref0 (equation);
	return result;
}


gchar* unit_get_name (Unit* self) {
	gchar* result;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_name;
	_tmp1_ = g_strdup (_tmp0_);
	result = _tmp1_;
	return result;
}


gchar* unit_get_display_name (Unit* self) {
	gchar* result;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_display_name;
	_tmp1_ = g_strdup (_tmp0_);
	result = _tmp1_;
	return result;
}


static void unit_class_init (UnitClass * klass) {
	unit_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (UnitPrivate));
	G_OBJECT_CLASS (klass)->get_property = _vala_unit_get_property;
	G_OBJECT_CLASS (klass)->finalize = unit_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), UNIT_NAME, g_param_spec_string ("name", "name", "name", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), UNIT_DISPLAY_NAME, g_param_spec_string ("display-name", "display-name", "display-name", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
}


static void unit_instance_init (Unit * self) {
	self->priv = UNIT_GET_PRIVATE (self);
}


static void unit_finalize (GObject* obj) {
	Unit * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_UNIT, Unit);
	_g_free0 (self->priv->_name);
	_g_free0 (self->priv->_display_name);
	_g_free0 (self->priv->_format);
	__g_list_free__g_free0_0 (self->priv->_symbols);
	_g_free0 (self->priv->from_function);
	_g_free0 (self->priv->to_function);
	_g_object_unref0 (self->priv->serializer);
	G_OBJECT_CLASS (unit_parent_class)->finalize (obj);
}


GType unit_get_type (void) {
	static volatile gsize unit_type_id__volatile = 0;
	if (g_once_init_enter (&unit_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (UnitClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) unit_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Unit), 0, (GInstanceInitFunc) unit_instance_init, NULL };
		GType unit_type_id;
		unit_type_id = g_type_register_static (G_TYPE_OBJECT, "Unit", &g_define_type_info, 0);
		g_once_init_leave (&unit_type_id__volatile, unit_type_id);
	}
	return unit_type_id__volatile;
}


static void _vala_unit_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
	Unit * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_UNIT, Unit);
	switch (property_id) {
		case UNIT_NAME:
		g_value_take_string (value, unit_get_name (self));
		break;
		case UNIT_DISPLAY_NAME:
		g_value_take_string (value, unit_get_display_name (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}


UnitSolveEquation* unit_solve_equation_construct (GType object_type, const gchar* function, Number* x) {
	UnitSolveEquation * self = NULL;
	const gchar* _tmp0_ = NULL;
	Number* _tmp1_ = NULL;
	Number* _tmp2_ = NULL;
	g_return_val_if_fail (function != NULL, NULL);
	g_return_val_if_fail (x != NULL, NULL);
	_tmp0_ = function;
	self = (UnitSolveEquation*) equation_construct (object_type, _tmp0_);
	_tmp1_ = x;
	_tmp2_ = _g_object_ref0 (_tmp1_);
	_g_object_unref0 (self->priv->x);
	self->priv->x = _tmp2_;
	return self;
}


UnitSolveEquation* unit_solve_equation_new (const gchar* function, Number* x) {
	return unit_solve_equation_construct (TYPE_UNIT_SOLVE_EQUATION, function, x);
}


static gboolean unit_solve_equation_real_variable_is_defined (Equation* base, const gchar* name) {
	UnitSolveEquation * self;
	gboolean result = FALSE;
	self = (UnitSolveEquation*) base;
	g_return_val_if_fail (name != NULL, FALSE);
	result = TRUE;
	return result;
}


static Number* unit_solve_equation_real_get_variable (Equation* base, const gchar* name) {
	UnitSolveEquation * self;
	Number* result = NULL;
	Number* _tmp0_ = NULL;
	Number* _tmp1_ = NULL;
	self = (UnitSolveEquation*) base;
	g_return_val_if_fail (name != NULL, NULL);
	_tmp0_ = self->priv->x;
	_tmp1_ = _g_object_ref0 (_tmp0_);
	result = _tmp1_;
	return result;
}


static void unit_solve_equation_class_init (UnitSolveEquationClass * klass) {
	unit_solve_equation_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (UnitSolveEquationPrivate));
	((EquationClass *) klass)->variable_is_defined = unit_solve_equation_real_variable_is_defined;
	((EquationClass *) klass)->get_variable = unit_solve_equation_real_get_variable;
	G_OBJECT_CLASS (klass)->finalize = unit_solve_equation_finalize;
}


static void unit_solve_equation_instance_init (UnitSolveEquation * self) {
	self->priv = UNIT_SOLVE_EQUATION_GET_PRIVATE (self);
}


static void unit_solve_equation_finalize (GObject* obj) {
	UnitSolveEquation * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_UNIT_SOLVE_EQUATION, UnitSolveEquation);
	_g_object_unref0 (self->priv->x);
	G_OBJECT_CLASS (unit_solve_equation_parent_class)->finalize (obj);
}


GType unit_solve_equation_get_type (void) {
	static volatile gsize unit_solve_equation_type_id__volatile = 0;
	if (g_once_init_enter (&unit_solve_equation_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (UnitSolveEquationClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) unit_solve_equation_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (UnitSolveEquation), 0, (GInstanceInitFunc) unit_solve_equation_instance_init, NULL };
		GType unit_solve_equation_type_id;
		unit_solve_equation_type_id = g_type_register_static (TYPE_EQUATION, "UnitSolveEquation", &g_define_type_info, 0);
		g_once_init_leave (&unit_solve_equation_type_id__volatile, unit_solve_equation_type_id);
	}
	return unit_solve_equation_type_id__volatile;
}


static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
	if ((array != NULL) && (destroy_func != NULL)) {
		int i;
		for (i = 0; i < array_length; i = i + 1) {
			if (((gpointer*) array)[i] != NULL) {
				destroy_func (((gpointer*) array)[i]);
			}
		}
	}
}


static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
	_vala_array_destroy (array, array_length, destroy_func);
	g_free (array);
}


static gint _vala_array_length (gpointer array) {
	int length;
	length = 0;
	if (array) {
		while (((gpointer*) array)[length]) {
			length++;
		}
	}
	return length;
}



