/* Generated by makegalias.pl */

#ifndef DISABLE_VISIBILITY

#include "glibconfig.h"

#ifdef G_HAVE_GNUC_VISIBILITY

#define IN_FILE(x) 1
#define IN_HEADER defined

#if IN_HEADER(__G_ARRAY_H__)
#if IN_FILE(__G_ARRAY_C__)
extern __typeof (g_array_append_vals) IA__g_array_append_vals __attribute((visibility("hidden")));
#define g_array_append_vals IA__g_array_append_vals

extern __typeof (g_array_free) IA__g_array_free __attribute((visibility("hidden")));
#define g_array_free IA__g_array_free

extern __typeof (g_array_insert_vals) IA__g_array_insert_vals __attribute((visibility("hidden")));
#define g_array_insert_vals IA__g_array_insert_vals

extern __typeof (g_array_new) IA__g_array_new __attribute((visibility("hidden")));
#define g_array_new IA__g_array_new

extern __typeof (g_array_ref) IA__g_array_ref __attribute((visibility("hidden")));
#define g_array_ref IA__g_array_ref

extern __typeof (g_array_unref) IA__g_array_unref __attribute((visibility("hidden")));
#define g_array_unref IA__g_array_unref

extern __typeof (g_array_get_element_size) IA__g_array_get_element_size __attribute((visibility("hidden")));
#define g_array_get_element_size IA__g_array_get_element_size

extern __typeof (g_array_prepend_vals) IA__g_array_prepend_vals __attribute((visibility("hidden")));
#define g_array_prepend_vals IA__g_array_prepend_vals

extern __typeof (g_array_remove_index) IA__g_array_remove_index __attribute((visibility("hidden")));
#define g_array_remove_index IA__g_array_remove_index

extern __typeof (g_array_remove_index_fast) IA__g_array_remove_index_fast __attribute((visibility("hidden")));
#define g_array_remove_index_fast IA__g_array_remove_index_fast

extern __typeof (g_array_remove_range) IA__g_array_remove_range __attribute((visibility("hidden")));
#define g_array_remove_range IA__g_array_remove_range

extern __typeof (g_array_set_size) IA__g_array_set_size __attribute((visibility("hidden")));
#define g_array_set_size IA__g_array_set_size

extern __typeof (g_array_sized_new) IA__g_array_sized_new __attribute((visibility("hidden")));
#define g_array_sized_new IA__g_array_sized_new

extern __typeof (g_array_sort) IA__g_array_sort __attribute((visibility("hidden")));
#define g_array_sort IA__g_array_sort

extern __typeof (g_array_sort_with_data) IA__g_array_sort_with_data __attribute((visibility("hidden")));
#define g_array_sort_with_data IA__g_array_sort_with_data

extern __typeof (g_byte_array_append) IA__g_byte_array_append __attribute((visibility("hidden")));
#define g_byte_array_append IA__g_byte_array_append

extern __typeof (g_byte_array_free) IA__g_byte_array_free __attribute((visibility("hidden")));
#define g_byte_array_free IA__g_byte_array_free

extern __typeof (g_byte_array_unref) IA__g_byte_array_unref __attribute((visibility("hidden")));
#define g_byte_array_unref IA__g_byte_array_unref

extern __typeof (g_byte_array_ref) IA__g_byte_array_ref __attribute((visibility("hidden")));
#define g_byte_array_ref IA__g_byte_array_ref

extern __typeof (g_byte_array_new) IA__g_byte_array_new __attribute((visibility("hidden")));
#define g_byte_array_new IA__g_byte_array_new

extern __typeof (g_byte_array_prepend) IA__g_byte_array_prepend __attribute((visibility("hidden")));
#define g_byte_array_prepend IA__g_byte_array_prepend

extern __typeof (g_byte_array_remove_index) IA__g_byte_array_remove_index __attribute((visibility("hidden")));
#define g_byte_array_remove_index IA__g_byte_array_remove_index

extern __typeof (g_byte_array_remove_index_fast) IA__g_byte_array_remove_index_fast __attribute((visibility("hidden")));
#define g_byte_array_remove_index_fast IA__g_byte_array_remove_index_fast

extern __typeof (g_byte_array_remove_range) IA__g_byte_array_remove_range __attribute((visibility("hidden")));
#define g_byte_array_remove_range IA__g_byte_array_remove_range

extern __typeof (g_byte_array_set_size) IA__g_byte_array_set_size __attribute((visibility("hidden")));
#define g_byte_array_set_size IA__g_byte_array_set_size

extern __typeof (g_byte_array_sized_new) IA__g_byte_array_sized_new __attribute((visibility("hidden")));
#define g_byte_array_sized_new IA__g_byte_array_sized_new

extern __typeof (g_byte_array_sort) IA__g_byte_array_sort __attribute((visibility("hidden")));
#define g_byte_array_sort IA__g_byte_array_sort

extern __typeof (g_byte_array_sort_with_data) IA__g_byte_array_sort_with_data __attribute((visibility("hidden")));
#define g_byte_array_sort_with_data IA__g_byte_array_sort_with_data

extern __typeof (g_ptr_array_add) IA__g_ptr_array_add __attribute((visibility("hidden")));
#define g_ptr_array_add IA__g_ptr_array_add

extern __typeof (g_ptr_array_foreach) IA__g_ptr_array_foreach __attribute((visibility("hidden")));
#define g_ptr_array_foreach IA__g_ptr_array_foreach

extern __typeof (g_ptr_array_free) IA__g_ptr_array_free __attribute((visibility("hidden")));
#define g_ptr_array_free IA__g_ptr_array_free

extern __typeof (g_ptr_array_unref) IA__g_ptr_array_unref __attribute((visibility("hidden")));
#define g_ptr_array_unref IA__g_ptr_array_unref

extern __typeof (g_ptr_array_ref) IA__g_ptr_array_ref __attribute((visibility("hidden")));
#define g_ptr_array_ref IA__g_ptr_array_ref

extern __typeof (g_ptr_array_new) IA__g_ptr_array_new __attribute((visibility("hidden")));
#define g_ptr_array_new IA__g_ptr_array_new

extern __typeof (g_ptr_array_new_with_free_func) IA__g_ptr_array_new_with_free_func __attribute((visibility("hidden")));
#define g_ptr_array_new_with_free_func IA__g_ptr_array_new_with_free_func

extern __typeof (g_ptr_array_set_free_func) IA__g_ptr_array_set_free_func __attribute((visibility("hidden")));
#define g_ptr_array_set_free_func IA__g_ptr_array_set_free_func

extern __typeof (g_ptr_array_remove) IA__g_ptr_array_remove __attribute((visibility("hidden")));
#define g_ptr_array_remove IA__g_ptr_array_remove

extern __typeof (g_ptr_array_remove_fast) IA__g_ptr_array_remove_fast __attribute((visibility("hidden")));
#define g_ptr_array_remove_fast IA__g_ptr_array_remove_fast

extern __typeof (g_ptr_array_remove_index) IA__g_ptr_array_remove_index __attribute((visibility("hidden")));
#define g_ptr_array_remove_index IA__g_ptr_array_remove_index

extern __typeof (g_ptr_array_remove_index_fast) IA__g_ptr_array_remove_index_fast __attribute((visibility("hidden")));
#define g_ptr_array_remove_index_fast IA__g_ptr_array_remove_index_fast

extern __typeof (g_ptr_array_remove_range) IA__g_ptr_array_remove_range __attribute((visibility("hidden")));
#define g_ptr_array_remove_range IA__g_ptr_array_remove_range

extern __typeof (g_ptr_array_set_size) IA__g_ptr_array_set_size __attribute((visibility("hidden")));
#define g_ptr_array_set_size IA__g_ptr_array_set_size

extern __typeof (g_ptr_array_sized_new) IA__g_ptr_array_sized_new __attribute((visibility("hidden")));
#define g_ptr_array_sized_new IA__g_ptr_array_sized_new

extern __typeof (g_ptr_array_sort) IA__g_ptr_array_sort __attribute((visibility("hidden")));
#define g_ptr_array_sort IA__g_ptr_array_sort

extern __typeof (g_ptr_array_sort_with_data) IA__g_ptr_array_sort_with_data __attribute((visibility("hidden")));
#define g_ptr_array_sort_with_data IA__g_ptr_array_sort_with_data

#endif
#endif
#if IN_HEADER(__G_ASYNCQUEUE_H__)
#if IN_FILE(__G_ASYNCQUEUE_C__)
extern __typeof (g_async_queue_length) IA__g_async_queue_length __attribute((visibility("hidden")));
#define g_async_queue_length IA__g_async_queue_length

extern __typeof (g_async_queue_length_unlocked) IA__g_async_queue_length_unlocked __attribute((visibility("hidden")));
#define g_async_queue_length_unlocked IA__g_async_queue_length_unlocked

extern __typeof (g_async_queue_lock) IA__g_async_queue_lock __attribute((visibility("hidden")));
#define g_async_queue_lock IA__g_async_queue_lock

extern __typeof (g_async_queue_new) IA__g_async_queue_new __attribute((visibility("hidden")));
#define g_async_queue_new IA__g_async_queue_new

extern __typeof (g_async_queue_new_full) IA__g_async_queue_new_full __attribute((visibility("hidden")));
#define g_async_queue_new_full IA__g_async_queue_new_full

extern __typeof (g_async_queue_pop) IA__g_async_queue_pop __attribute((visibility("hidden")));
#define g_async_queue_pop IA__g_async_queue_pop

extern __typeof (g_async_queue_pop_unlocked) IA__g_async_queue_pop_unlocked __attribute((visibility("hidden")));
#define g_async_queue_pop_unlocked IA__g_async_queue_pop_unlocked

extern __typeof (g_async_queue_push) IA__g_async_queue_push __attribute((visibility("hidden")));
#define g_async_queue_push IA__g_async_queue_push

extern __typeof (g_async_queue_push_unlocked) IA__g_async_queue_push_unlocked __attribute((visibility("hidden")));
#define g_async_queue_push_unlocked IA__g_async_queue_push_unlocked

extern __typeof (g_async_queue_push_sorted) IA__g_async_queue_push_sorted __attribute((visibility("hidden")));
#define g_async_queue_push_sorted IA__g_async_queue_push_sorted

extern __typeof (g_async_queue_push_sorted_unlocked) IA__g_async_queue_push_sorted_unlocked __attribute((visibility("hidden")));
#define g_async_queue_push_sorted_unlocked IA__g_async_queue_push_sorted_unlocked

extern __typeof (g_async_queue_ref) IA__g_async_queue_ref __attribute((visibility("hidden")));
#define g_async_queue_ref IA__g_async_queue_ref

extern __typeof (g_async_queue_sort) IA__g_async_queue_sort __attribute((visibility("hidden")));
#define g_async_queue_sort IA__g_async_queue_sort

extern __typeof (g_async_queue_sort_unlocked) IA__g_async_queue_sort_unlocked __attribute((visibility("hidden")));
#define g_async_queue_sort_unlocked IA__g_async_queue_sort_unlocked

extern __typeof (g_async_queue_timed_pop) IA__g_async_queue_timed_pop __attribute((visibility("hidden")));
#define g_async_queue_timed_pop IA__g_async_queue_timed_pop

extern __typeof (g_async_queue_timed_pop_unlocked) IA__g_async_queue_timed_pop_unlocked __attribute((visibility("hidden")));
#define g_async_queue_timed_pop_unlocked IA__g_async_queue_timed_pop_unlocked

extern __typeof (g_async_queue_try_pop) IA__g_async_queue_try_pop __attribute((visibility("hidden")));
#define g_async_queue_try_pop IA__g_async_queue_try_pop

extern __typeof (g_async_queue_try_pop_unlocked) IA__g_async_queue_try_pop_unlocked __attribute((visibility("hidden")));
#define g_async_queue_try_pop_unlocked IA__g_async_queue_try_pop_unlocked

extern __typeof (g_async_queue_unlock) IA__g_async_queue_unlock __attribute((visibility("hidden")));
#define g_async_queue_unlock IA__g_async_queue_unlock

extern __typeof (g_async_queue_unref) IA__g_async_queue_unref __attribute((visibility("hidden")));
#define g_async_queue_unref IA__g_async_queue_unref

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_async_queue_ref_unlocked) IA__g_async_queue_ref_unlocked __attribute((visibility("hidden")));
#define g_async_queue_ref_unlocked IA__g_async_queue_ref_unlocked

extern __typeof (g_async_queue_unref_and_unlock) IA__g_async_queue_unref_and_unlock __attribute((visibility("hidden")));
#define g_async_queue_unref_and_unlock IA__g_async_queue_unref_and_unlock

#endif
#endif
#endif
#if IN_HEADER(__G_ATOMIC_H__)
#if IN_FILE(__G_ATOMIC_C__)
extern __typeof (g_atomic_int_add) IA__g_atomic_int_add __attribute((visibility("hidden")));
#define g_atomic_int_add IA__g_atomic_int_add

extern __typeof (g_atomic_int_compare_and_exchange) IA__g_atomic_int_compare_and_exchange __attribute((visibility("hidden")));
#define g_atomic_int_compare_and_exchange IA__g_atomic_int_compare_and_exchange

extern __typeof (g_atomic_int_exchange_and_add) IA__g_atomic_int_exchange_and_add __attribute((visibility("hidden")));
#define g_atomic_int_exchange_and_add IA__g_atomic_int_exchange_and_add

extern __typeof (g_atomic_pointer_compare_and_exchange) IA__g_atomic_pointer_compare_and_exchange __attribute((visibility("hidden")));
#define g_atomic_pointer_compare_and_exchange IA__g_atomic_pointer_compare_and_exchange

#endif
#endif
#if IN_HEADER(__G_BACKTRACE_H__)
#if IN_FILE(__G_BACKTRACE_C__)
extern __typeof (g_on_error_query) IA__g_on_error_query __attribute((visibility("hidden")));
#define g_on_error_query IA__g_on_error_query

extern __typeof (g_on_error_stack_trace) IA__g_on_error_stack_trace __attribute((visibility("hidden")));
#define g_on_error_stack_trace IA__g_on_error_stack_trace

#endif
#endif
#if IN_HEADER(__G_BASE64_H__)
#if IN_FILE(__G_BASE64_C__)
extern __typeof (g_base64_encode_step) IA__g_base64_encode_step __attribute((visibility("hidden")));
#define g_base64_encode_step IA__g_base64_encode_step

extern __typeof (g_base64_encode_close) IA__g_base64_encode_close __attribute((visibility("hidden")));
#define g_base64_encode_close IA__g_base64_encode_close

extern __typeof (g_base64_encode) IA__g_base64_encode __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_base64_encode IA__g_base64_encode

extern __typeof (g_base64_decode_step) IA__g_base64_decode_step __attribute((visibility("hidden")));
#define g_base64_decode_step IA__g_base64_decode_step

extern __typeof (g_base64_decode) IA__g_base64_decode __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_base64_decode IA__g_base64_decode

extern __typeof (g_base64_decode_inplace) IA__g_base64_decode_inplace __attribute((visibility("hidden")));
#define g_base64_decode_inplace IA__g_base64_decode_inplace

#endif
#endif
#if IN_HEADER(__G_BOOKMARK_FILE_H__)
#if IN_FILE(__G_BOOKMARK_FILE_C__)
extern __typeof (g_bookmark_file_error_quark) IA__g_bookmark_file_error_quark __attribute((visibility("hidden")));
#define g_bookmark_file_error_quark IA__g_bookmark_file_error_quark

extern __typeof (g_bookmark_file_new) IA__g_bookmark_file_new __attribute((visibility("hidden")));
#define g_bookmark_file_new IA__g_bookmark_file_new

extern __typeof (g_bookmark_file_free) IA__g_bookmark_file_free __attribute((visibility("hidden")));
#define g_bookmark_file_free IA__g_bookmark_file_free

extern __typeof (g_bookmark_file_load_from_file) IA__g_bookmark_file_load_from_file __attribute((visibility("hidden")));
#define g_bookmark_file_load_from_file IA__g_bookmark_file_load_from_file

extern __typeof (g_bookmark_file_load_from_data) IA__g_bookmark_file_load_from_data __attribute((visibility("hidden")));
#define g_bookmark_file_load_from_data IA__g_bookmark_file_load_from_data

extern __typeof (g_bookmark_file_load_from_data_dirs) IA__g_bookmark_file_load_from_data_dirs __attribute((visibility("hidden")));
#define g_bookmark_file_load_from_data_dirs IA__g_bookmark_file_load_from_data_dirs

extern __typeof (g_bookmark_file_to_data) IA__g_bookmark_file_to_data __attribute((visibility("hidden")));
#define g_bookmark_file_to_data IA__g_bookmark_file_to_data

extern __typeof (g_bookmark_file_to_file) IA__g_bookmark_file_to_file __attribute((visibility("hidden")));
#define g_bookmark_file_to_file IA__g_bookmark_file_to_file

extern __typeof (g_bookmark_file_set_title) IA__g_bookmark_file_set_title __attribute((visibility("hidden")));
#define g_bookmark_file_set_title IA__g_bookmark_file_set_title

extern __typeof (g_bookmark_file_get_title) IA__g_bookmark_file_get_title __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_bookmark_file_get_title IA__g_bookmark_file_get_title

extern __typeof (g_bookmark_file_set_description) IA__g_bookmark_file_set_description __attribute((visibility("hidden")));
#define g_bookmark_file_set_description IA__g_bookmark_file_set_description

extern __typeof (g_bookmark_file_get_description) IA__g_bookmark_file_get_description __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_bookmark_file_get_description IA__g_bookmark_file_get_description

extern __typeof (g_bookmark_file_set_mime_type) IA__g_bookmark_file_set_mime_type __attribute((visibility("hidden")));
#define g_bookmark_file_set_mime_type IA__g_bookmark_file_set_mime_type

extern __typeof (g_bookmark_file_get_mime_type) IA__g_bookmark_file_get_mime_type __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_bookmark_file_get_mime_type IA__g_bookmark_file_get_mime_type

extern __typeof (g_bookmark_file_set_groups) IA__g_bookmark_file_set_groups __attribute((visibility("hidden")));
#define g_bookmark_file_set_groups IA__g_bookmark_file_set_groups

extern __typeof (g_bookmark_file_add_group) IA__g_bookmark_file_add_group __attribute((visibility("hidden")));
#define g_bookmark_file_add_group IA__g_bookmark_file_add_group

extern __typeof (g_bookmark_file_has_group) IA__g_bookmark_file_has_group __attribute((visibility("hidden")));
#define g_bookmark_file_has_group IA__g_bookmark_file_has_group

extern __typeof (g_bookmark_file_get_groups) IA__g_bookmark_file_get_groups __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_bookmark_file_get_groups IA__g_bookmark_file_get_groups

extern __typeof (g_bookmark_file_add_application) IA__g_bookmark_file_add_application __attribute((visibility("hidden")));
#define g_bookmark_file_add_application IA__g_bookmark_file_add_application

extern __typeof (g_bookmark_file_has_application) IA__g_bookmark_file_has_application __attribute((visibility("hidden")));
#define g_bookmark_file_has_application IA__g_bookmark_file_has_application

extern __typeof (g_bookmark_file_get_applications) IA__g_bookmark_file_get_applications __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_bookmark_file_get_applications IA__g_bookmark_file_get_applications

extern __typeof (g_bookmark_file_set_app_info) IA__g_bookmark_file_set_app_info __attribute((visibility("hidden")));
#define g_bookmark_file_set_app_info IA__g_bookmark_file_set_app_info

extern __typeof (g_bookmark_file_get_app_info) IA__g_bookmark_file_get_app_info __attribute((visibility("hidden")));
#define g_bookmark_file_get_app_info IA__g_bookmark_file_get_app_info

extern __typeof (g_bookmark_file_set_is_private) IA__g_bookmark_file_set_is_private __attribute((visibility("hidden")));
#define g_bookmark_file_set_is_private IA__g_bookmark_file_set_is_private

extern __typeof (g_bookmark_file_get_is_private) IA__g_bookmark_file_get_is_private __attribute((visibility("hidden")));
#define g_bookmark_file_get_is_private IA__g_bookmark_file_get_is_private

extern __typeof (g_bookmark_file_set_icon) IA__g_bookmark_file_set_icon __attribute((visibility("hidden")));
#define g_bookmark_file_set_icon IA__g_bookmark_file_set_icon

extern __typeof (g_bookmark_file_get_icon) IA__g_bookmark_file_get_icon __attribute((visibility("hidden")));
#define g_bookmark_file_get_icon IA__g_bookmark_file_get_icon

extern __typeof (g_bookmark_file_set_added) IA__g_bookmark_file_set_added __attribute((visibility("hidden")));
#define g_bookmark_file_set_added IA__g_bookmark_file_set_added

extern __typeof (g_bookmark_file_get_added) IA__g_bookmark_file_get_added __attribute((visibility("hidden")));
#define g_bookmark_file_get_added IA__g_bookmark_file_get_added

extern __typeof (g_bookmark_file_set_modified) IA__g_bookmark_file_set_modified __attribute((visibility("hidden")));
#define g_bookmark_file_set_modified IA__g_bookmark_file_set_modified

extern __typeof (g_bookmark_file_get_modified) IA__g_bookmark_file_get_modified __attribute((visibility("hidden")));
#define g_bookmark_file_get_modified IA__g_bookmark_file_get_modified

extern __typeof (g_bookmark_file_set_visited) IA__g_bookmark_file_set_visited __attribute((visibility("hidden")));
#define g_bookmark_file_set_visited IA__g_bookmark_file_set_visited

extern __typeof (g_bookmark_file_get_visited) IA__g_bookmark_file_get_visited __attribute((visibility("hidden")));
#define g_bookmark_file_get_visited IA__g_bookmark_file_get_visited

extern __typeof (g_bookmark_file_has_item) IA__g_bookmark_file_has_item __attribute((visibility("hidden")));
#define g_bookmark_file_has_item IA__g_bookmark_file_has_item

extern __typeof (g_bookmark_file_get_size) IA__g_bookmark_file_get_size __attribute((visibility("hidden")));
#define g_bookmark_file_get_size IA__g_bookmark_file_get_size

extern __typeof (g_bookmark_file_get_uris) IA__g_bookmark_file_get_uris __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_bookmark_file_get_uris IA__g_bookmark_file_get_uris

extern __typeof (g_bookmark_file_remove_group) IA__g_bookmark_file_remove_group __attribute((visibility("hidden")));
#define g_bookmark_file_remove_group IA__g_bookmark_file_remove_group

extern __typeof (g_bookmark_file_remove_application) IA__g_bookmark_file_remove_application __attribute((visibility("hidden")));
#define g_bookmark_file_remove_application IA__g_bookmark_file_remove_application

extern __typeof (g_bookmark_file_remove_item) IA__g_bookmark_file_remove_item __attribute((visibility("hidden")));
#define g_bookmark_file_remove_item IA__g_bookmark_file_remove_item

extern __typeof (g_bookmark_file_move_item) IA__g_bookmark_file_move_item __attribute((visibility("hidden")));
#define g_bookmark_file_move_item IA__g_bookmark_file_move_item

#endif
#endif
#if IN_HEADER(__G_CACHE_H__)
#if IN_FILE(__G_CACHE_C__)
extern __typeof (g_cache_destroy) IA__g_cache_destroy __attribute((visibility("hidden")));
#define g_cache_destroy IA__g_cache_destroy

extern __typeof (g_cache_insert) IA__g_cache_insert __attribute((visibility("hidden")));
#define g_cache_insert IA__g_cache_insert

extern __typeof (g_cache_key_foreach) IA__g_cache_key_foreach __attribute((visibility("hidden")));
#define g_cache_key_foreach IA__g_cache_key_foreach

extern __typeof (g_cache_new) IA__g_cache_new __attribute((visibility("hidden")));
#define g_cache_new IA__g_cache_new

extern __typeof (g_cache_remove) IA__g_cache_remove __attribute((visibility("hidden")));
#define g_cache_remove IA__g_cache_remove

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_cache_value_foreach) IA__g_cache_value_foreach __attribute((visibility("hidden")));
#define g_cache_value_foreach IA__g_cache_value_foreach

#endif
#endif
#endif
#if IN_HEADER(__G_CHECKSUM_H__)
#if IN_FILE(__G_CHECKSUM_C__)
extern __typeof (g_checksum_type_get_length) IA__g_checksum_type_get_length __attribute((visibility("hidden")));
#define g_checksum_type_get_length IA__g_checksum_type_get_length

extern __typeof (g_checksum_new) IA__g_checksum_new __attribute((visibility("hidden")));
#define g_checksum_new IA__g_checksum_new

extern __typeof (g_checksum_copy) IA__g_checksum_copy __attribute((visibility("hidden")));
#define g_checksum_copy IA__g_checksum_copy

extern __typeof (g_checksum_free) IA__g_checksum_free __attribute((visibility("hidden")));
#define g_checksum_free IA__g_checksum_free

extern __typeof (g_checksum_update) IA__g_checksum_update __attribute((visibility("hidden")));
#define g_checksum_update IA__g_checksum_update

extern __typeof (g_checksum_reset) IA__g_checksum_reset __attribute((visibility("hidden")));
#define g_checksum_reset IA__g_checksum_reset

extern __typeof (g_checksum_get_string) IA__g_checksum_get_string __attribute((visibility("hidden")));
#define g_checksum_get_string IA__g_checksum_get_string

extern __typeof (g_checksum_get_digest) IA__g_checksum_get_digest __attribute((visibility("hidden")));
#define g_checksum_get_digest IA__g_checksum_get_digest

extern __typeof (g_compute_checksum_for_data) IA__g_compute_checksum_for_data __attribute((visibility("hidden")));
#define g_compute_checksum_for_data IA__g_compute_checksum_for_data

extern __typeof (g_compute_checksum_for_string) IA__g_compute_checksum_for_string __attribute((visibility("hidden")));
#define g_compute_checksum_for_string IA__g_compute_checksum_for_string

#endif
#endif
#if IN_HEADER(__G_COMPLETION_H__)
#if IN_FILE(__G_COMPLETION_C__)
extern __typeof (g_completion_add_items) IA__g_completion_add_items __attribute((visibility("hidden")));
#define g_completion_add_items IA__g_completion_add_items

extern __typeof (g_completion_clear_items) IA__g_completion_clear_items __attribute((visibility("hidden")));
#define g_completion_clear_items IA__g_completion_clear_items

extern __typeof (g_completion_complete) IA__g_completion_complete __attribute((visibility("hidden")));
#define g_completion_complete IA__g_completion_complete

extern __typeof (g_completion_complete_utf8) IA__g_completion_complete_utf8 __attribute((visibility("hidden")));
#define g_completion_complete_utf8 IA__g_completion_complete_utf8

extern __typeof (g_completion_free) IA__g_completion_free __attribute((visibility("hidden")));
#define g_completion_free IA__g_completion_free

extern __typeof (g_completion_new) IA__g_completion_new __attribute((visibility("hidden")));
#define g_completion_new IA__g_completion_new

extern __typeof (g_completion_remove_items) IA__g_completion_remove_items __attribute((visibility("hidden")));
#define g_completion_remove_items IA__g_completion_remove_items

extern __typeof (g_completion_set_compare) IA__g_completion_set_compare __attribute((visibility("hidden")));
#define g_completion_set_compare IA__g_completion_set_compare

#endif
#endif
#if IN_HEADER(__G_CONVERT_H__)
#if IN_FILE(__G_CONVERT_C__)
extern __typeof (g_get_filename_charsets) IA__g_get_filename_charsets __attribute((visibility("hidden")));
#define g_get_filename_charsets IA__g_get_filename_charsets

extern __typeof (g_convert) IA__g_convert __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_convert IA__g_convert

extern __typeof (g_convert_error_quark) IA__g_convert_error_quark __attribute((visibility("hidden")));
#define g_convert_error_quark IA__g_convert_error_quark

extern __typeof (g_convert_with_fallback) IA__g_convert_with_fallback __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_convert_with_fallback IA__g_convert_with_fallback

extern __typeof (g_convert_with_iconv) IA__g_convert_with_iconv __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_convert_with_iconv IA__g_convert_with_iconv

extern __typeof (g_iconv) IA__g_iconv __attribute((visibility("hidden")));
#define g_iconv IA__g_iconv

extern __typeof (g_iconv_close) IA__g_iconv_close __attribute((visibility("hidden")));
#define g_iconv_close IA__g_iconv_close

extern __typeof (g_iconv_open) IA__g_iconv_open __attribute((visibility("hidden")));
#define g_iconv_open IA__g_iconv_open

extern __typeof (g_locale_from_utf8) IA__g_locale_from_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_locale_from_utf8 IA__g_locale_from_utf8

extern __typeof (g_locale_to_utf8) IA__g_locale_to_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_locale_to_utf8 IA__g_locale_to_utf8

extern __typeof (g_filename_display_name) IA__g_filename_display_name __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_filename_display_name IA__g_filename_display_name

extern __typeof (g_filename_display_basename) IA__g_filename_display_basename __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_filename_display_basename IA__g_filename_display_basename

#ifndef _WIN64
extern __typeof (g_filename_from_uri) IA__g_filename_from_uri __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_filename_from_uri IA__g_filename_from_uri

extern __typeof (g_filename_from_utf8) IA__g_filename_from_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_filename_from_utf8 IA__g_filename_from_utf8

extern __typeof (g_filename_to_uri) IA__g_filename_to_uri __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_filename_to_uri IA__g_filename_to_uri

extern __typeof (g_filename_to_utf8) IA__g_filename_to_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_filename_to_utf8 IA__g_filename_to_utf8

#endif
#ifdef G_OS_WIN32
extern __typeof (g_filename_from_uri_utf8) IA__g_filename_from_uri_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_filename_from_uri_utf8 IA__g_filename_from_uri_utf8

extern __typeof (g_filename_from_utf8_utf8) IA__g_filename_from_utf8_utf8 __attribute((visibility("hidden")));
#define g_filename_from_utf8_utf8 IA__g_filename_from_utf8_utf8

extern __typeof (g_filename_to_uri_utf8) IA__g_filename_to_uri_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_filename_to_uri_utf8 IA__g_filename_to_uri_utf8

extern __typeof (g_filename_to_utf8_utf8) IA__g_filename_to_utf8_utf8 __attribute((visibility("hidden")));
#define g_filename_to_utf8_utf8 IA__g_filename_to_utf8_utf8

#endif
extern __typeof (g_uri_list_extract_uris) IA__g_uri_list_extract_uris __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_uri_list_extract_uris IA__g_uri_list_extract_uris

#endif
#endif
#if IN_HEADER(__G_DATASET_H__)
#if IN_FILE(__G_DATASET_C__)
extern __typeof (g_datalist_clear) IA__g_datalist_clear __attribute((visibility("hidden")));
#define g_datalist_clear IA__g_datalist_clear

extern __typeof (g_datalist_foreach) IA__g_datalist_foreach __attribute((visibility("hidden")));
#define g_datalist_foreach IA__g_datalist_foreach

extern __typeof (g_datalist_get_flags) IA__g_datalist_get_flags __attribute((visibility("hidden")));
#define g_datalist_get_flags IA__g_datalist_get_flags

extern __typeof (g_datalist_id_get_data) IA__g_datalist_id_get_data __attribute((visibility("hidden")));
#define g_datalist_id_get_data IA__g_datalist_id_get_data

extern __typeof (g_datalist_id_remove_no_notify) IA__g_datalist_id_remove_no_notify __attribute((visibility("hidden")));
#define g_datalist_id_remove_no_notify IA__g_datalist_id_remove_no_notify

extern __typeof (g_datalist_id_set_data_full) IA__g_datalist_id_set_data_full __attribute((visibility("hidden")));
#define g_datalist_id_set_data_full IA__g_datalist_id_set_data_full

extern __typeof (g_datalist_set_flags) IA__g_datalist_set_flags __attribute((visibility("hidden")));
#define g_datalist_set_flags IA__g_datalist_set_flags

extern __typeof (g_datalist_unset_flags) IA__g_datalist_unset_flags __attribute((visibility("hidden")));
#define g_datalist_unset_flags IA__g_datalist_unset_flags

extern __typeof (g_datalist_init) IA__g_datalist_init __attribute((visibility("hidden")));
#define g_datalist_init IA__g_datalist_init

extern __typeof (g_dataset_destroy) IA__g_dataset_destroy __attribute((visibility("hidden")));
#define g_dataset_destroy IA__g_dataset_destroy

extern __typeof (g_dataset_foreach) IA__g_dataset_foreach __attribute((visibility("hidden")));
#define g_dataset_foreach IA__g_dataset_foreach

extern __typeof (g_dataset_id_get_data) IA__g_dataset_id_get_data __attribute((visibility("hidden")));
#define g_dataset_id_get_data IA__g_dataset_id_get_data

extern __typeof (g_dataset_id_remove_no_notify) IA__g_dataset_id_remove_no_notify __attribute((visibility("hidden")));
#define g_dataset_id_remove_no_notify IA__g_dataset_id_remove_no_notify

extern __typeof (g_dataset_id_set_data_full) IA__g_dataset_id_set_data_full __attribute((visibility("hidden")));
#define g_dataset_id_set_data_full IA__g_dataset_id_set_data_full

#endif
#endif
#if IN_HEADER(__G_QUARK_H__)
#if IN_FILE(__G_DATASET_C__)
extern __typeof (g_quark_from_static_string) IA__g_quark_from_static_string __attribute((visibility("hidden")));
#define g_quark_from_static_string IA__g_quark_from_static_string

extern __typeof (g_quark_from_string) IA__g_quark_from_string __attribute((visibility("hidden")));
#define g_quark_from_string IA__g_quark_from_string

extern __typeof (g_quark_to_string) IA__g_quark_to_string __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_quark_to_string IA__g_quark_to_string

extern __typeof (g_quark_try_string) IA__g_quark_try_string __attribute((visibility("hidden")));
#define g_quark_try_string IA__g_quark_try_string

extern __typeof (g_intern_string) IA__g_intern_string __attribute((visibility("hidden")));
#define g_intern_string IA__g_intern_string

extern __typeof (g_intern_static_string) IA__g_intern_static_string __attribute((visibility("hidden")));
#define g_intern_static_string IA__g_intern_static_string

#endif
#endif
#if IN_HEADER(__G_DATE_H__)
#if IN_FILE(__G_DATE_C__)
extern __typeof (g_date_add_days) IA__g_date_add_days __attribute((visibility("hidden")));
#define g_date_add_days IA__g_date_add_days

extern __typeof (g_date_add_months) IA__g_date_add_months __attribute((visibility("hidden")));
#define g_date_add_months IA__g_date_add_months

extern __typeof (g_date_add_years) IA__g_date_add_years __attribute((visibility("hidden")));
#define g_date_add_years IA__g_date_add_years

extern __typeof (g_date_clamp) IA__g_date_clamp __attribute((visibility("hidden")));
#define g_date_clamp IA__g_date_clamp

extern __typeof (g_date_clear) IA__g_date_clear __attribute((visibility("hidden")));
#define g_date_clear IA__g_date_clear

extern __typeof (g_date_compare) IA__g_date_compare __attribute((visibility("hidden")));
#define g_date_compare IA__g_date_compare

extern __typeof (g_date_days_between) IA__g_date_days_between __attribute((visibility("hidden")));
#define g_date_days_between IA__g_date_days_between

extern __typeof (g_date_free) IA__g_date_free __attribute((visibility("hidden")));
#define g_date_free IA__g_date_free

extern __typeof (g_date_get_day) IA__g_date_get_day __attribute((visibility("hidden")));
#define g_date_get_day IA__g_date_get_day

extern __typeof (g_date_get_day_of_year) IA__g_date_get_day_of_year __attribute((visibility("hidden")));
#define g_date_get_day_of_year IA__g_date_get_day_of_year

extern __typeof (g_date_get_days_in_month) IA__g_date_get_days_in_month __attribute((visibility("hidden")));
#define g_date_get_days_in_month IA__g_date_get_days_in_month

extern __typeof (g_date_get_iso8601_week_of_year) IA__g_date_get_iso8601_week_of_year __attribute((visibility("hidden")));
#define g_date_get_iso8601_week_of_year IA__g_date_get_iso8601_week_of_year

extern __typeof (g_date_get_julian) IA__g_date_get_julian __attribute((visibility("hidden")));
#define g_date_get_julian IA__g_date_get_julian

extern __typeof (g_date_get_monday_week_of_year) IA__g_date_get_monday_week_of_year __attribute((visibility("hidden")));
#define g_date_get_monday_week_of_year IA__g_date_get_monday_week_of_year

extern __typeof (g_date_get_monday_weeks_in_year) IA__g_date_get_monday_weeks_in_year __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_date_get_monday_weeks_in_year IA__g_date_get_monday_weeks_in_year

extern __typeof (g_date_get_month) IA__g_date_get_month __attribute((visibility("hidden")));
#define g_date_get_month IA__g_date_get_month

extern __typeof (g_date_get_sunday_week_of_year) IA__g_date_get_sunday_week_of_year __attribute((visibility("hidden")));
#define g_date_get_sunday_week_of_year IA__g_date_get_sunday_week_of_year

extern __typeof (g_date_get_sunday_weeks_in_year) IA__g_date_get_sunday_weeks_in_year __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_date_get_sunday_weeks_in_year IA__g_date_get_sunday_weeks_in_year

extern __typeof (g_date_get_weekday) IA__g_date_get_weekday __attribute((visibility("hidden")));
#define g_date_get_weekday IA__g_date_get_weekday

extern __typeof (g_date_get_year) IA__g_date_get_year __attribute((visibility("hidden")));
#define g_date_get_year IA__g_date_get_year

extern __typeof (g_date_is_first_of_month) IA__g_date_is_first_of_month __attribute((visibility("hidden")));
#define g_date_is_first_of_month IA__g_date_is_first_of_month

extern __typeof (g_date_is_last_of_month) IA__g_date_is_last_of_month __attribute((visibility("hidden")));
#define g_date_is_last_of_month IA__g_date_is_last_of_month

extern __typeof (g_date_is_leap_year) IA__g_date_is_leap_year __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_date_is_leap_year IA__g_date_is_leap_year

extern __typeof (g_date_new) IA__g_date_new __attribute((visibility("hidden")));
#define g_date_new IA__g_date_new

extern __typeof (g_date_new_dmy) IA__g_date_new_dmy __attribute((visibility("hidden")));
#define g_date_new_dmy IA__g_date_new_dmy

extern __typeof (g_date_new_julian) IA__g_date_new_julian __attribute((visibility("hidden")));
#define g_date_new_julian IA__g_date_new_julian

extern __typeof (g_date_order) IA__g_date_order __attribute((visibility("hidden")));
#define g_date_order IA__g_date_order

extern __typeof (g_date_set_day) IA__g_date_set_day __attribute((visibility("hidden")));
#define g_date_set_day IA__g_date_set_day

extern __typeof (g_date_set_dmy) IA__g_date_set_dmy __attribute((visibility("hidden")));
#define g_date_set_dmy IA__g_date_set_dmy

extern __typeof (g_date_set_julian) IA__g_date_set_julian __attribute((visibility("hidden")));
#define g_date_set_julian IA__g_date_set_julian

extern __typeof (g_date_set_month) IA__g_date_set_month __attribute((visibility("hidden")));
#define g_date_set_month IA__g_date_set_month

extern __typeof (g_date_set_parse) IA__g_date_set_parse __attribute((visibility("hidden")));
#define g_date_set_parse IA__g_date_set_parse

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_date_set_time) IA__g_date_set_time __attribute((visibility("hidden")));
#define g_date_set_time IA__g_date_set_time

#endif
extern __typeof (g_date_set_time_t) IA__g_date_set_time_t __attribute((visibility("hidden")));
#define g_date_set_time_t IA__g_date_set_time_t

extern __typeof (g_date_set_time_val) IA__g_date_set_time_val __attribute((visibility("hidden")));
#define g_date_set_time_val IA__g_date_set_time_val

extern __typeof (g_date_set_year) IA__g_date_set_year __attribute((visibility("hidden")));
#define g_date_set_year IA__g_date_set_year

extern __typeof (g_date_strftime) IA__g_date_strftime __attribute((visibility("hidden")));
#define g_date_strftime IA__g_date_strftime

extern __typeof (g_date_subtract_days) IA__g_date_subtract_days __attribute((visibility("hidden")));
#define g_date_subtract_days IA__g_date_subtract_days

extern __typeof (g_date_subtract_months) IA__g_date_subtract_months __attribute((visibility("hidden")));
#define g_date_subtract_months IA__g_date_subtract_months

extern __typeof (g_date_subtract_years) IA__g_date_subtract_years __attribute((visibility("hidden")));
#define g_date_subtract_years IA__g_date_subtract_years

extern __typeof (g_date_to_struct_tm) IA__g_date_to_struct_tm __attribute((visibility("hidden")));
#define g_date_to_struct_tm IA__g_date_to_struct_tm

extern __typeof (g_date_valid) IA__g_date_valid __attribute((visibility("hidden")));
#define g_date_valid IA__g_date_valid

extern __typeof (g_date_valid_day) IA__g_date_valid_day __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_date_valid_day IA__g_date_valid_day

extern __typeof (g_date_valid_dmy) IA__g_date_valid_dmy __attribute((visibility("hidden")));
#define g_date_valid_dmy IA__g_date_valid_dmy

extern __typeof (g_date_valid_julian) IA__g_date_valid_julian __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_date_valid_julian IA__g_date_valid_julian

extern __typeof (g_date_valid_month) IA__g_date_valid_month __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_date_valid_month IA__g_date_valid_month

extern __typeof (g_date_valid_weekday) IA__g_date_valid_weekday __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_date_valid_weekday IA__g_date_valid_weekday

extern __typeof (g_date_valid_year) IA__g_date_valid_year __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_date_valid_year IA__g_date_valid_year

#endif
#endif
#if IN_HEADER(__G_DIR_H__)
#if IN_FILE(__G_DIR_C__)
extern __typeof (g_dir_close) IA__g_dir_close __attribute((visibility("hidden")));
#define g_dir_close IA__g_dir_close

#ifndef _WIN64
extern __typeof (g_dir_open) IA__g_dir_open __attribute((visibility("hidden")));
#define g_dir_open IA__g_dir_open

extern __typeof (g_dir_read_name) IA__g_dir_read_name __attribute((visibility("hidden")));
#define g_dir_read_name IA__g_dir_read_name

#endif
#ifdef G_OS_WIN32
extern __typeof (g_dir_open_utf8) IA__g_dir_open_utf8 __attribute((visibility("hidden")));
#define g_dir_open_utf8 IA__g_dir_open_utf8

extern __typeof (g_dir_read_name_utf8) IA__g_dir_read_name_utf8 __attribute((visibility("hidden")));
#define g_dir_read_name_utf8 IA__g_dir_read_name_utf8

#endif
extern __typeof (g_dir_rewind) IA__g_dir_rewind __attribute((visibility("hidden")));
#define g_dir_rewind IA__g_dir_rewind

#endif
#endif
#if IN_HEADER(__G_ERROR_H__)
#if IN_FILE(__G_ERROR_C__)
extern __typeof (g_clear_error) IA__g_clear_error __attribute((visibility("hidden")));
#define g_clear_error IA__g_clear_error

extern __typeof (g_error_copy) IA__g_error_copy __attribute((visibility("hidden")));
#define g_error_copy IA__g_error_copy

extern __typeof (g_error_free) IA__g_error_free __attribute((visibility("hidden")));
#define g_error_free IA__g_error_free

extern __typeof (g_error_matches) IA__g_error_matches __attribute((visibility("hidden")));
#define g_error_matches IA__g_error_matches

extern __typeof (g_error_new) IA__g_error_new __attribute((visibility("hidden"))) G_GNUC_PRINTF(3,4);
#define g_error_new IA__g_error_new

extern __typeof (g_error_new_literal) IA__g_error_new_literal __attribute((visibility("hidden")));
#define g_error_new_literal IA__g_error_new_literal

extern __typeof (g_error_new_valist) IA__g_error_new_valist __attribute((visibility("hidden")));
#define g_error_new_valist IA__g_error_new_valist

extern __typeof (g_propagate_error) IA__g_propagate_error __attribute((visibility("hidden")));
#define g_propagate_error IA__g_propagate_error

extern __typeof (g_set_error) IA__g_set_error __attribute((visibility("hidden"))) G_GNUC_PRINTF(4,5);
#define g_set_error IA__g_set_error

extern __typeof (g_set_error_literal) IA__g_set_error_literal __attribute((visibility("hidden")));
#define g_set_error_literal IA__g_set_error_literal

extern __typeof (g_prefix_error) IA__g_prefix_error __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
#define g_prefix_error IA__g_prefix_error

extern __typeof (g_propagate_prefixed_error) IA__g_propagate_prefixed_error __attribute((visibility("hidden"))) G_GNUC_PRINTF(3,4);
#define g_propagate_prefixed_error IA__g_propagate_prefixed_error

#endif
#endif
#if IN_HEADER(__G_FILEUTILS_H__)
#if IN_FILE(__G_FILEUTILS_C__)
extern __typeof (g_build_filename) IA__g_build_filename __attribute((visibility("hidden"))) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
#define g_build_filename IA__g_build_filename

extern __typeof (g_build_filenamev) IA__g_build_filenamev __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_build_filenamev IA__g_build_filenamev

extern __typeof (g_build_path) IA__g_build_path __attribute((visibility("hidden"))) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
#define g_build_path IA__g_build_path

extern __typeof (g_build_pathv) IA__g_build_pathv __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_build_pathv IA__g_build_pathv

extern __typeof (g_file_error_from_errno) IA__g_file_error_from_errno __attribute((visibility("hidden")));
#define g_file_error_from_errno IA__g_file_error_from_errno

extern __typeof (g_file_error_quark) IA__g_file_error_quark __attribute((visibility("hidden")));
#define g_file_error_quark IA__g_file_error_quark

#ifndef _WIN64
extern __typeof (g_file_get_contents) IA__g_file_get_contents __attribute((visibility("hidden")));
#define g_file_get_contents IA__g_file_get_contents

#endif
extern __typeof (g_file_set_contents) IA__g_file_set_contents __attribute((visibility("hidden")));
#define g_file_set_contents IA__g_file_set_contents

#ifndef _WIN64
extern __typeof (g_file_open_tmp) IA__g_file_open_tmp __attribute((visibility("hidden")));
#define g_file_open_tmp IA__g_file_open_tmp

extern __typeof (g_file_test) IA__g_file_test __attribute((visibility("hidden")));
#define g_file_test IA__g_file_test

#endif
extern __typeof (g_file_read_link) IA__g_file_read_link __attribute((visibility("hidden")));
#define g_file_read_link IA__g_file_read_link

extern __typeof (g_format_size_for_display) IA__g_format_size_for_display __attribute((visibility("hidden")));
#define g_format_size_for_display IA__g_format_size_for_display

#ifndef _WIN64
extern __typeof (g_mkstemp) IA__g_mkstemp __attribute((visibility("hidden")));
#define g_mkstemp IA__g_mkstemp

#endif
extern __typeof (g_mkstemp_full) IA__g_mkstemp_full __attribute((visibility("hidden")));
#define g_mkstemp_full IA__g_mkstemp_full

extern __typeof (g_mkdir_with_parents) IA__g_mkdir_with_parents __attribute((visibility("hidden")));
#define g_mkdir_with_parents IA__g_mkdir_with_parents

#ifdef G_OS_WIN32
extern __typeof (g_file_get_contents_utf8) IA__g_file_get_contents_utf8 __attribute((visibility("hidden")));
#define g_file_get_contents_utf8 IA__g_file_get_contents_utf8

extern __typeof (g_file_open_tmp_utf8) IA__g_file_open_tmp_utf8 __attribute((visibility("hidden")));
#define g_file_open_tmp_utf8 IA__g_file_open_tmp_utf8

extern __typeof (g_file_test_utf8) IA__g_file_test_utf8 __attribute((visibility("hidden")));
#define g_file_test_utf8 IA__g_file_test_utf8

extern __typeof (g_mkstemp_utf8) IA__g_mkstemp_utf8 __attribute((visibility("hidden")));
#define g_mkstemp_utf8 IA__g_mkstemp_utf8

#endif
#endif
#endif
#if IN_HEADER(__G_HASH_H__)
#if IN_FILE(__G_HASH_C__)
extern __typeof (g_hash_table_destroy) IA__g_hash_table_destroy __attribute((visibility("hidden")));
#define g_hash_table_destroy IA__g_hash_table_destroy

extern __typeof (g_hash_table_unref) IA__g_hash_table_unref __attribute((visibility("hidden")));
#define g_hash_table_unref IA__g_hash_table_unref

extern __typeof (g_hash_table_ref) IA__g_hash_table_ref __attribute((visibility("hidden")));
#define g_hash_table_ref IA__g_hash_table_ref

extern __typeof (g_hash_table_find) IA__g_hash_table_find __attribute((visibility("hidden")));
#define g_hash_table_find IA__g_hash_table_find

extern __typeof (g_hash_table_foreach) IA__g_hash_table_foreach __attribute((visibility("hidden")));
#define g_hash_table_foreach IA__g_hash_table_foreach

extern __typeof (g_hash_table_foreach_remove) IA__g_hash_table_foreach_remove __attribute((visibility("hidden")));
#define g_hash_table_foreach_remove IA__g_hash_table_foreach_remove

extern __typeof (g_hash_table_foreach_steal) IA__g_hash_table_foreach_steal __attribute((visibility("hidden")));
#define g_hash_table_foreach_steal IA__g_hash_table_foreach_steal

extern __typeof (g_hash_table_get_keys) IA__g_hash_table_get_keys __attribute((visibility("hidden")));
#define g_hash_table_get_keys IA__g_hash_table_get_keys

extern __typeof (g_hash_table_get_values) IA__g_hash_table_get_values __attribute((visibility("hidden")));
#define g_hash_table_get_values IA__g_hash_table_get_values

extern __typeof (g_hash_table_insert) IA__g_hash_table_insert __attribute((visibility("hidden")));
#define g_hash_table_insert IA__g_hash_table_insert

extern __typeof (g_hash_table_lookup) IA__g_hash_table_lookup __attribute((visibility("hidden")));
#define g_hash_table_lookup IA__g_hash_table_lookup

extern __typeof (g_hash_table_lookup_extended) IA__g_hash_table_lookup_extended __attribute((visibility("hidden")));
#define g_hash_table_lookup_extended IA__g_hash_table_lookup_extended

extern __typeof (g_hash_table_new) IA__g_hash_table_new __attribute((visibility("hidden")));
#define g_hash_table_new IA__g_hash_table_new

extern __typeof (g_hash_table_new_full) IA__g_hash_table_new_full __attribute((visibility("hidden")));
#define g_hash_table_new_full IA__g_hash_table_new_full

extern __typeof (g_hash_table_remove) IA__g_hash_table_remove __attribute((visibility("hidden")));
#define g_hash_table_remove IA__g_hash_table_remove

extern __typeof (g_hash_table_remove_all) IA__g_hash_table_remove_all __attribute((visibility("hidden")));
#define g_hash_table_remove_all IA__g_hash_table_remove_all

extern __typeof (g_hash_table_replace) IA__g_hash_table_replace __attribute((visibility("hidden")));
#define g_hash_table_replace IA__g_hash_table_replace

extern __typeof (g_hash_table_size) IA__g_hash_table_size __attribute((visibility("hidden")));
#define g_hash_table_size IA__g_hash_table_size

extern __typeof (g_hash_table_steal) IA__g_hash_table_steal __attribute((visibility("hidden")));
#define g_hash_table_steal IA__g_hash_table_steal

extern __typeof (g_hash_table_steal_all) IA__g_hash_table_steal_all __attribute((visibility("hidden")));
#define g_hash_table_steal_all IA__g_hash_table_steal_all

extern __typeof (g_hash_table_iter_init) IA__g_hash_table_iter_init __attribute((visibility("hidden")));
#define g_hash_table_iter_init IA__g_hash_table_iter_init

extern __typeof (g_hash_table_iter_next) IA__g_hash_table_iter_next __attribute((visibility("hidden")));
#define g_hash_table_iter_next IA__g_hash_table_iter_next

extern __typeof (g_hash_table_iter_get_hash_table) IA__g_hash_table_iter_get_hash_table __attribute((visibility("hidden")));
#define g_hash_table_iter_get_hash_table IA__g_hash_table_iter_get_hash_table

extern __typeof (g_hash_table_iter_remove) IA__g_hash_table_iter_remove __attribute((visibility("hidden")));
#define g_hash_table_iter_remove IA__g_hash_table_iter_remove

extern __typeof (g_hash_table_iter_steal) IA__g_hash_table_iter_steal __attribute((visibility("hidden")));
#define g_hash_table_iter_steal IA__g_hash_table_iter_steal

#endif
#endif
#if IN_HEADER(__G_HOOK_H__)
#if IN_FILE(__G_HOOK_C__)
extern __typeof (g_hook_alloc) IA__g_hook_alloc __attribute((visibility("hidden")));
#define g_hook_alloc IA__g_hook_alloc

extern __typeof (g_hook_compare_ids) IA__g_hook_compare_ids __attribute((visibility("hidden")));
#define g_hook_compare_ids IA__g_hook_compare_ids

extern __typeof (g_hook_destroy) IA__g_hook_destroy __attribute((visibility("hidden")));
#define g_hook_destroy IA__g_hook_destroy

extern __typeof (g_hook_destroy_link) IA__g_hook_destroy_link __attribute((visibility("hidden")));
#define g_hook_destroy_link IA__g_hook_destroy_link

extern __typeof (g_hook_find) IA__g_hook_find __attribute((visibility("hidden")));
#define g_hook_find IA__g_hook_find

extern __typeof (g_hook_find_data) IA__g_hook_find_data __attribute((visibility("hidden")));
#define g_hook_find_data IA__g_hook_find_data

extern __typeof (g_hook_find_func) IA__g_hook_find_func __attribute((visibility("hidden")));
#define g_hook_find_func IA__g_hook_find_func

extern __typeof (g_hook_find_func_data) IA__g_hook_find_func_data __attribute((visibility("hidden")));
#define g_hook_find_func_data IA__g_hook_find_func_data

extern __typeof (g_hook_first_valid) IA__g_hook_first_valid __attribute((visibility("hidden")));
#define g_hook_first_valid IA__g_hook_first_valid

extern __typeof (g_hook_free) IA__g_hook_free __attribute((visibility("hidden")));
#define g_hook_free IA__g_hook_free

extern __typeof (g_hook_get) IA__g_hook_get __attribute((visibility("hidden")));
#define g_hook_get IA__g_hook_get

extern __typeof (g_hook_insert_before) IA__g_hook_insert_before __attribute((visibility("hidden")));
#define g_hook_insert_before IA__g_hook_insert_before

extern __typeof (g_hook_insert_sorted) IA__g_hook_insert_sorted __attribute((visibility("hidden")));
#define g_hook_insert_sorted IA__g_hook_insert_sorted

extern __typeof (g_hook_list_clear) IA__g_hook_list_clear __attribute((visibility("hidden")));
#define g_hook_list_clear IA__g_hook_list_clear

extern __typeof (g_hook_list_init) IA__g_hook_list_init __attribute((visibility("hidden")));
#define g_hook_list_init IA__g_hook_list_init

extern __typeof (g_hook_list_invoke) IA__g_hook_list_invoke __attribute((visibility("hidden")));
#define g_hook_list_invoke IA__g_hook_list_invoke

extern __typeof (g_hook_list_invoke_check) IA__g_hook_list_invoke_check __attribute((visibility("hidden")));
#define g_hook_list_invoke_check IA__g_hook_list_invoke_check

extern __typeof (g_hook_list_marshal) IA__g_hook_list_marshal __attribute((visibility("hidden")));
#define g_hook_list_marshal IA__g_hook_list_marshal

extern __typeof (g_hook_list_marshal_check) IA__g_hook_list_marshal_check __attribute((visibility("hidden")));
#define g_hook_list_marshal_check IA__g_hook_list_marshal_check

extern __typeof (g_hook_next_valid) IA__g_hook_next_valid __attribute((visibility("hidden")));
#define g_hook_next_valid IA__g_hook_next_valid

extern __typeof (g_hook_prepend) IA__g_hook_prepend __attribute((visibility("hidden")));
#define g_hook_prepend IA__g_hook_prepend

extern __typeof (g_hook_ref) IA__g_hook_ref __attribute((visibility("hidden")));
#define g_hook_ref IA__g_hook_ref

extern __typeof (g_hook_unref) IA__g_hook_unref __attribute((visibility("hidden")));
#define g_hook_unref IA__g_hook_unref

#endif
#endif
#if IN_HEADER(__G_IOCHANNEL_H__)
#if IN_FILE(__G_IOCHANNEL_C__)
extern __typeof (g_io_add_watch) IA__g_io_add_watch __attribute((visibility("hidden")));
#define g_io_add_watch IA__g_io_add_watch

extern __typeof (g_io_add_watch_full) IA__g_io_add_watch_full __attribute((visibility("hidden")));
#define g_io_add_watch_full IA__g_io_add_watch_full

extern __typeof (g_io_create_watch) IA__g_io_create_watch __attribute((visibility("hidden")));
#define g_io_create_watch IA__g_io_create_watch

extern __typeof (g_io_channel_error_from_errno) IA__g_io_channel_error_from_errno __attribute((visibility("hidden")));
#define g_io_channel_error_from_errno IA__g_io_channel_error_from_errno

extern __typeof (g_io_channel_error_quark) IA__g_io_channel_error_quark __attribute((visibility("hidden")));
#define g_io_channel_error_quark IA__g_io_channel_error_quark

extern __typeof (g_io_channel_flush) IA__g_io_channel_flush __attribute((visibility("hidden")));
#define g_io_channel_flush IA__g_io_channel_flush

extern __typeof (g_io_channel_get_buffer_condition) IA__g_io_channel_get_buffer_condition __attribute((visibility("hidden")));
#define g_io_channel_get_buffer_condition IA__g_io_channel_get_buffer_condition

extern __typeof (g_io_channel_get_buffered) IA__g_io_channel_get_buffered __attribute((visibility("hidden")));
#define g_io_channel_get_buffered IA__g_io_channel_get_buffered

extern __typeof (g_io_channel_get_buffer_size) IA__g_io_channel_get_buffer_size __attribute((visibility("hidden")));
#define g_io_channel_get_buffer_size IA__g_io_channel_get_buffer_size

extern __typeof (g_io_channel_get_close_on_unref) IA__g_io_channel_get_close_on_unref __attribute((visibility("hidden")));
#define g_io_channel_get_close_on_unref IA__g_io_channel_get_close_on_unref

extern __typeof (g_io_channel_get_encoding) IA__g_io_channel_get_encoding __attribute((visibility("hidden")));
#define g_io_channel_get_encoding IA__g_io_channel_get_encoding

extern __typeof (g_io_channel_get_flags) IA__g_io_channel_get_flags __attribute((visibility("hidden")));
#define g_io_channel_get_flags IA__g_io_channel_get_flags

extern __typeof (g_io_channel_get_line_term) IA__g_io_channel_get_line_term __attribute((visibility("hidden")));
#define g_io_channel_get_line_term IA__g_io_channel_get_line_term

extern __typeof (g_io_channel_init) IA__g_io_channel_init __attribute((visibility("hidden")));
#define g_io_channel_init IA__g_io_channel_init

extern __typeof (g_io_channel_read_chars) IA__g_io_channel_read_chars __attribute((visibility("hidden")));
#define g_io_channel_read_chars IA__g_io_channel_read_chars

extern __typeof (g_io_channel_read_line) IA__g_io_channel_read_line __attribute((visibility("hidden")));
#define g_io_channel_read_line IA__g_io_channel_read_line

extern __typeof (g_io_channel_read_line_string) IA__g_io_channel_read_line_string __attribute((visibility("hidden")));
#define g_io_channel_read_line_string IA__g_io_channel_read_line_string

extern __typeof (g_io_channel_read_to_end) IA__g_io_channel_read_to_end __attribute((visibility("hidden")));
#define g_io_channel_read_to_end IA__g_io_channel_read_to_end

extern __typeof (g_io_channel_read_unichar) IA__g_io_channel_read_unichar __attribute((visibility("hidden")));
#define g_io_channel_read_unichar IA__g_io_channel_read_unichar

extern __typeof (g_io_channel_ref) IA__g_io_channel_ref __attribute((visibility("hidden")));
#define g_io_channel_ref IA__g_io_channel_ref

extern __typeof (g_io_channel_seek_position) IA__g_io_channel_seek_position __attribute((visibility("hidden")));
#define g_io_channel_seek_position IA__g_io_channel_seek_position

extern __typeof (g_io_channel_set_buffered) IA__g_io_channel_set_buffered __attribute((visibility("hidden")));
#define g_io_channel_set_buffered IA__g_io_channel_set_buffered

extern __typeof (g_io_channel_set_buffer_size) IA__g_io_channel_set_buffer_size __attribute((visibility("hidden")));
#define g_io_channel_set_buffer_size IA__g_io_channel_set_buffer_size

extern __typeof (g_io_channel_set_close_on_unref) IA__g_io_channel_set_close_on_unref __attribute((visibility("hidden")));
#define g_io_channel_set_close_on_unref IA__g_io_channel_set_close_on_unref

extern __typeof (g_io_channel_set_encoding) IA__g_io_channel_set_encoding __attribute((visibility("hidden")));
#define g_io_channel_set_encoding IA__g_io_channel_set_encoding

extern __typeof (g_io_channel_set_flags) IA__g_io_channel_set_flags __attribute((visibility("hidden")));
#define g_io_channel_set_flags IA__g_io_channel_set_flags

extern __typeof (g_io_channel_set_line_term) IA__g_io_channel_set_line_term __attribute((visibility("hidden")));
#define g_io_channel_set_line_term IA__g_io_channel_set_line_term

extern __typeof (g_io_channel_shutdown) IA__g_io_channel_shutdown __attribute((visibility("hidden")));
#define g_io_channel_shutdown IA__g_io_channel_shutdown

extern __typeof (g_io_channel_unref) IA__g_io_channel_unref __attribute((visibility("hidden")));
#define g_io_channel_unref IA__g_io_channel_unref

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_io_channel_close) IA__g_io_channel_close __attribute((visibility("hidden")));
#define g_io_channel_close IA__g_io_channel_close

extern __typeof (g_io_channel_read) IA__g_io_channel_read __attribute((visibility("hidden")));
#define g_io_channel_read IA__g_io_channel_read

extern __typeof (g_io_channel_seek) IA__g_io_channel_seek __attribute((visibility("hidden")));
#define g_io_channel_seek IA__g_io_channel_seek

extern __typeof (g_io_channel_write) IA__g_io_channel_write __attribute((visibility("hidden")));
#define g_io_channel_write IA__g_io_channel_write

#endif
extern __typeof (g_io_channel_write_chars) IA__g_io_channel_write_chars __attribute((visibility("hidden")));
#define g_io_channel_write_chars IA__g_io_channel_write_chars

extern __typeof (g_io_channel_write_unichar) IA__g_io_channel_write_unichar __attribute((visibility("hidden")));
#define g_io_channel_write_unichar IA__g_io_channel_write_unichar

#endif
#endif
#if IN_HEADER(__G_IOCHANNEL_H__)
#if IN_FILE(__G_IO_UNIX_C__)
#ifdef G_OS_UNIX
extern __typeof (g_io_channel_unix_get_fd) IA__g_io_channel_unix_get_fd __attribute((visibility("hidden")));
#define g_io_channel_unix_get_fd IA__g_io_channel_unix_get_fd

extern __typeof (g_io_channel_unix_new) IA__g_io_channel_unix_new __attribute((visibility("hidden")));
#define g_io_channel_unix_new IA__g_io_channel_unix_new

extern __typeof (g_io_channel_new_file) IA__g_io_channel_new_file __attribute((visibility("hidden")));
#define g_io_channel_new_file IA__g_io_channel_new_file

#endif
#endif
#endif
#if IN_HEADER(__G_IOCHANNEL_H__)
#if IN_FILE(__G_IO_WIN32_C__)
#ifdef G_OS_WIN32
extern __typeof (g_io_channel_unix_get_fd) IA__g_io_channel_unix_get_fd __attribute((visibility("hidden")));
#define g_io_channel_unix_get_fd IA__g_io_channel_unix_get_fd

extern __typeof (g_io_channel_unix_new) IA__g_io_channel_unix_new __attribute((visibility("hidden")));
#define g_io_channel_unix_new IA__g_io_channel_unix_new

#ifndef _WIN64
extern __typeof (g_io_channel_new_file) IA__g_io_channel_new_file __attribute((visibility("hidden")));
#define g_io_channel_new_file IA__g_io_channel_new_file

#endif
extern __typeof (g_io_channel_new_file_utf8) IA__g_io_channel_new_file_utf8 __attribute((visibility("hidden")));
#define g_io_channel_new_file_utf8 IA__g_io_channel_new_file_utf8

extern __typeof (g_io_channel_win32_get_fd) IA__g_io_channel_win32_get_fd __attribute((visibility("hidden")));
#define g_io_channel_win32_get_fd IA__g_io_channel_win32_get_fd

extern __typeof (g_io_channel_win32_make_pollfd) IA__g_io_channel_win32_make_pollfd __attribute((visibility("hidden")));
#define g_io_channel_win32_make_pollfd IA__g_io_channel_win32_make_pollfd

extern __typeof (g_io_channel_win32_new_fd) IA__g_io_channel_win32_new_fd __attribute((visibility("hidden")));
#define g_io_channel_win32_new_fd IA__g_io_channel_win32_new_fd

extern __typeof (g_io_channel_win32_new_messages) IA__g_io_channel_win32_new_messages __attribute((visibility("hidden")));
#define g_io_channel_win32_new_messages IA__g_io_channel_win32_new_messages

extern __typeof (g_io_channel_win32_new_socket) IA__g_io_channel_win32_new_socket __attribute((visibility("hidden")));
#define g_io_channel_win32_new_socket IA__g_io_channel_win32_new_socket

#ifndef _WIN64
extern __typeof (g_io_channel_win32_new_stream_socket) IA__g_io_channel_win32_new_stream_socket __attribute((visibility("hidden")));
#define g_io_channel_win32_new_stream_socket IA__g_io_channel_win32_new_stream_socket

#endif
extern __typeof (g_io_channel_win32_poll) IA__g_io_channel_win32_poll __attribute((visibility("hidden")));
#define g_io_channel_win32_poll IA__g_io_channel_win32_poll

extern __typeof (g_io_channel_win32_set_debug) IA__g_io_channel_win32_set_debug __attribute((visibility("hidden")));
#define g_io_channel_win32_set_debug IA__g_io_channel_win32_set_debug

#endif
#endif
#endif
#if IN_HEADER(__G_KEY_FILE_H__)
#if IN_FILE(__G_KEY_FILE_C__)
extern __typeof (g_key_file_error_quark) IA__g_key_file_error_quark __attribute((visibility("hidden")));
#define g_key_file_error_quark IA__g_key_file_error_quark

extern __typeof (g_key_file_free) IA__g_key_file_free __attribute((visibility("hidden")));
#define g_key_file_free IA__g_key_file_free

extern __typeof (g_key_file_get_boolean) IA__g_key_file_get_boolean __attribute((visibility("hidden")));
#define g_key_file_get_boolean IA__g_key_file_get_boolean

extern __typeof (g_key_file_get_boolean_list) IA__g_key_file_get_boolean_list __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_key_file_get_boolean_list IA__g_key_file_get_boolean_list

extern __typeof (g_key_file_get_comment) IA__g_key_file_get_comment __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_key_file_get_comment IA__g_key_file_get_comment

extern __typeof (g_key_file_get_groups) IA__g_key_file_get_groups __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_key_file_get_groups IA__g_key_file_get_groups

extern __typeof (g_key_file_get_double) IA__g_key_file_get_double __attribute((visibility("hidden")));
#define g_key_file_get_double IA__g_key_file_get_double

extern __typeof (g_key_file_get_double_list) IA__g_key_file_get_double_list __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_key_file_get_double_list IA__g_key_file_get_double_list

extern __typeof (g_key_file_get_integer) IA__g_key_file_get_integer __attribute((visibility("hidden")));
#define g_key_file_get_integer IA__g_key_file_get_integer

extern __typeof (g_key_file_get_integer_list) IA__g_key_file_get_integer_list __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_key_file_get_integer_list IA__g_key_file_get_integer_list

extern __typeof (g_key_file_get_keys) IA__g_key_file_get_keys __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_key_file_get_keys IA__g_key_file_get_keys

extern __typeof (g_key_file_get_locale_string) IA__g_key_file_get_locale_string __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_key_file_get_locale_string IA__g_key_file_get_locale_string

extern __typeof (g_key_file_get_locale_string_list) IA__g_key_file_get_locale_string_list __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_key_file_get_locale_string_list IA__g_key_file_get_locale_string_list

extern __typeof (g_key_file_get_start_group) IA__g_key_file_get_start_group __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_key_file_get_start_group IA__g_key_file_get_start_group

extern __typeof (g_key_file_get_string) IA__g_key_file_get_string __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_key_file_get_string IA__g_key_file_get_string

extern __typeof (g_key_file_get_string_list) IA__g_key_file_get_string_list __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_key_file_get_string_list IA__g_key_file_get_string_list

extern __typeof (g_key_file_get_value) IA__g_key_file_get_value __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_key_file_get_value IA__g_key_file_get_value

extern __typeof (g_key_file_has_group) IA__g_key_file_has_group __attribute((visibility("hidden")));
#define g_key_file_has_group IA__g_key_file_has_group

extern __typeof (g_key_file_has_key) IA__g_key_file_has_key __attribute((visibility("hidden")));
#define g_key_file_has_key IA__g_key_file_has_key

extern __typeof (g_key_file_load_from_dirs) IA__g_key_file_load_from_dirs __attribute((visibility("hidden")));
#define g_key_file_load_from_dirs IA__g_key_file_load_from_dirs

extern __typeof (g_key_file_load_from_data) IA__g_key_file_load_from_data __attribute((visibility("hidden")));
#define g_key_file_load_from_data IA__g_key_file_load_from_data

extern __typeof (g_key_file_load_from_data_dirs) IA__g_key_file_load_from_data_dirs __attribute((visibility("hidden")));
#define g_key_file_load_from_data_dirs IA__g_key_file_load_from_data_dirs

extern __typeof (g_key_file_load_from_file) IA__g_key_file_load_from_file __attribute((visibility("hidden")));
#define g_key_file_load_from_file IA__g_key_file_load_from_file

extern __typeof (g_key_file_new) IA__g_key_file_new __attribute((visibility("hidden")));
#define g_key_file_new IA__g_key_file_new

extern __typeof (g_key_file_remove_comment) IA__g_key_file_remove_comment __attribute((visibility("hidden")));
#define g_key_file_remove_comment IA__g_key_file_remove_comment

extern __typeof (g_key_file_remove_group) IA__g_key_file_remove_group __attribute((visibility("hidden")));
#define g_key_file_remove_group IA__g_key_file_remove_group

extern __typeof (g_key_file_remove_key) IA__g_key_file_remove_key __attribute((visibility("hidden")));
#define g_key_file_remove_key IA__g_key_file_remove_key

extern __typeof (g_key_file_set_boolean) IA__g_key_file_set_boolean __attribute((visibility("hidden")));
#define g_key_file_set_boolean IA__g_key_file_set_boolean

extern __typeof (g_key_file_set_boolean_list) IA__g_key_file_set_boolean_list __attribute((visibility("hidden")));
#define g_key_file_set_boolean_list IA__g_key_file_set_boolean_list

extern __typeof (g_key_file_set_comment) IA__g_key_file_set_comment __attribute((visibility("hidden")));
#define g_key_file_set_comment IA__g_key_file_set_comment

extern __typeof (g_key_file_set_double) IA__g_key_file_set_double __attribute((visibility("hidden")));
#define g_key_file_set_double IA__g_key_file_set_double

extern __typeof (g_key_file_set_double_list) IA__g_key_file_set_double_list __attribute((visibility("hidden")));
#define g_key_file_set_double_list IA__g_key_file_set_double_list

extern __typeof (g_key_file_set_integer) IA__g_key_file_set_integer __attribute((visibility("hidden")));
#define g_key_file_set_integer IA__g_key_file_set_integer

extern __typeof (g_key_file_set_integer_list) IA__g_key_file_set_integer_list __attribute((visibility("hidden")));
#define g_key_file_set_integer_list IA__g_key_file_set_integer_list

extern __typeof (g_key_file_set_list_separator) IA__g_key_file_set_list_separator __attribute((visibility("hidden")));
#define g_key_file_set_list_separator IA__g_key_file_set_list_separator

extern __typeof (g_key_file_set_locale_string) IA__g_key_file_set_locale_string __attribute((visibility("hidden")));
#define g_key_file_set_locale_string IA__g_key_file_set_locale_string

extern __typeof (g_key_file_set_locale_string_list) IA__g_key_file_set_locale_string_list __attribute((visibility("hidden")));
#define g_key_file_set_locale_string_list IA__g_key_file_set_locale_string_list

extern __typeof (g_key_file_set_string) IA__g_key_file_set_string __attribute((visibility("hidden")));
#define g_key_file_set_string IA__g_key_file_set_string

extern __typeof (g_key_file_set_string_list) IA__g_key_file_set_string_list __attribute((visibility("hidden")));
#define g_key_file_set_string_list IA__g_key_file_set_string_list

extern __typeof (g_key_file_set_value) IA__g_key_file_set_value __attribute((visibility("hidden")));
#define g_key_file_set_value IA__g_key_file_set_value

extern __typeof (g_key_file_to_data) IA__g_key_file_to_data __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_key_file_to_data IA__g_key_file_to_data

#endif
#endif
#if IN_HEADER(__G_LIST_H__)
#if IN_FILE(__G_LIST_C__)
extern __typeof (g_list_alloc) IA__g_list_alloc __attribute((visibility("hidden")));
#define g_list_alloc IA__g_list_alloc

extern __typeof (g_list_append) IA__g_list_append __attribute((visibility("hidden")));
#define g_list_append IA__g_list_append

extern __typeof (g_list_concat) IA__g_list_concat __attribute((visibility("hidden")));
#define g_list_concat IA__g_list_concat

extern __typeof (g_list_copy) IA__g_list_copy __attribute((visibility("hidden")));
#define g_list_copy IA__g_list_copy

extern __typeof (g_list_delete_link) IA__g_list_delete_link __attribute((visibility("hidden")));
#define g_list_delete_link IA__g_list_delete_link

extern __typeof (g_list_find) IA__g_list_find __attribute((visibility("hidden")));
#define g_list_find IA__g_list_find

extern __typeof (g_list_find_custom) IA__g_list_find_custom __attribute((visibility("hidden")));
#define g_list_find_custom IA__g_list_find_custom

extern __typeof (g_list_first) IA__g_list_first __attribute((visibility("hidden")));
#define g_list_first IA__g_list_first

extern __typeof (g_list_foreach) IA__g_list_foreach __attribute((visibility("hidden")));
#define g_list_foreach IA__g_list_foreach

extern __typeof (g_list_free) IA__g_list_free __attribute((visibility("hidden")));
#define g_list_free IA__g_list_free

extern __typeof (g_list_free_1) IA__g_list_free_1 __attribute((visibility("hidden")));
#define g_list_free_1 IA__g_list_free_1

extern __typeof (g_list_index) IA__g_list_index __attribute((visibility("hidden")));
#define g_list_index IA__g_list_index

extern __typeof (g_list_insert) IA__g_list_insert __attribute((visibility("hidden")));
#define g_list_insert IA__g_list_insert

extern __typeof (g_list_insert_before) IA__g_list_insert_before __attribute((visibility("hidden")));
#define g_list_insert_before IA__g_list_insert_before

extern __typeof (g_list_insert_sorted) IA__g_list_insert_sorted __attribute((visibility("hidden")));
#define g_list_insert_sorted IA__g_list_insert_sorted

extern __typeof (g_list_insert_sorted_with_data) IA__g_list_insert_sorted_with_data __attribute((visibility("hidden")));
#define g_list_insert_sorted_with_data IA__g_list_insert_sorted_with_data

extern __typeof (g_list_last) IA__g_list_last __attribute((visibility("hidden")));
#define g_list_last IA__g_list_last

extern __typeof (g_list_length) IA__g_list_length __attribute((visibility("hidden")));
#define g_list_length IA__g_list_length

extern __typeof (g_list_nth) IA__g_list_nth __attribute((visibility("hidden")));
#define g_list_nth IA__g_list_nth

extern __typeof (g_list_nth_data) IA__g_list_nth_data __attribute((visibility("hidden")));
#define g_list_nth_data IA__g_list_nth_data

extern __typeof (g_list_nth_prev) IA__g_list_nth_prev __attribute((visibility("hidden")));
#define g_list_nth_prev IA__g_list_nth_prev

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_list_pop_allocator) IA__g_list_pop_allocator __attribute((visibility("hidden")));
#define g_list_pop_allocator IA__g_list_pop_allocator

#endif
extern __typeof (g_list_position) IA__g_list_position __attribute((visibility("hidden")));
#define g_list_position IA__g_list_position

extern __typeof (g_list_prepend) IA__g_list_prepend __attribute((visibility("hidden")));
#define g_list_prepend IA__g_list_prepend

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_list_push_allocator) IA__g_list_push_allocator __attribute((visibility("hidden")));
#define g_list_push_allocator IA__g_list_push_allocator

#endif
extern __typeof (g_list_remove) IA__g_list_remove __attribute((visibility("hidden")));
#define g_list_remove IA__g_list_remove

extern __typeof (g_list_remove_all) IA__g_list_remove_all __attribute((visibility("hidden")));
#define g_list_remove_all IA__g_list_remove_all

extern __typeof (g_list_remove_link) IA__g_list_remove_link __attribute((visibility("hidden")));
#define g_list_remove_link IA__g_list_remove_link

extern __typeof (g_list_reverse) IA__g_list_reverse __attribute((visibility("hidden")));
#define g_list_reverse IA__g_list_reverse

extern __typeof (g_list_sort) IA__g_list_sort __attribute((visibility("hidden")));
#define g_list_sort IA__g_list_sort

extern __typeof (g_list_sort_with_data) IA__g_list_sort_with_data __attribute((visibility("hidden")));
#define g_list_sort_with_data IA__g_list_sort_with_data

#endif
#endif
#if IN_HEADER(__G_MAIN_H__)
#if IN_FILE(__G_MAIN_C__)
extern __typeof (g_child_watch_add) IA__g_child_watch_add __attribute((visibility("hidden")));
#define g_child_watch_add IA__g_child_watch_add

extern __typeof (g_child_watch_add_full) IA__g_child_watch_add_full __attribute((visibility("hidden")));
#define g_child_watch_add_full IA__g_child_watch_add_full

extern __typeof (g_child_watch_source_new) IA__g_child_watch_source_new __attribute((visibility("hidden")));
#define g_child_watch_source_new IA__g_child_watch_source_new

extern __typeof (g_get_current_time) IA__g_get_current_time __attribute((visibility("hidden")));
#define g_get_current_time IA__g_get_current_time

extern __typeof (g_main_context_acquire) IA__g_main_context_acquire __attribute((visibility("hidden")));
#define g_main_context_acquire IA__g_main_context_acquire

extern __typeof (g_main_context_add_poll) IA__g_main_context_add_poll __attribute((visibility("hidden")));
#define g_main_context_add_poll IA__g_main_context_add_poll

extern __typeof (g_main_context_check) IA__g_main_context_check __attribute((visibility("hidden")));
#define g_main_context_check IA__g_main_context_check

extern __typeof (g_main_context_default) IA__g_main_context_default __attribute((visibility("hidden")));
#define g_main_context_default IA__g_main_context_default

extern __typeof (g_main_context_dispatch) IA__g_main_context_dispatch __attribute((visibility("hidden")));
#define g_main_context_dispatch IA__g_main_context_dispatch

extern __typeof (g_main_context_find_source_by_funcs_user_data) IA__g_main_context_find_source_by_funcs_user_data __attribute((visibility("hidden")));
#define g_main_context_find_source_by_funcs_user_data IA__g_main_context_find_source_by_funcs_user_data

extern __typeof (g_main_context_find_source_by_id) IA__g_main_context_find_source_by_id __attribute((visibility("hidden")));
#define g_main_context_find_source_by_id IA__g_main_context_find_source_by_id

extern __typeof (g_main_context_find_source_by_user_data) IA__g_main_context_find_source_by_user_data __attribute((visibility("hidden")));
#define g_main_context_find_source_by_user_data IA__g_main_context_find_source_by_user_data

extern __typeof (g_main_context_get_poll_func) IA__g_main_context_get_poll_func __attribute((visibility("hidden")));
#define g_main_context_get_poll_func IA__g_main_context_get_poll_func

extern __typeof (g_main_context_get_thread_default) IA__g_main_context_get_thread_default __attribute((visibility("hidden")));
#define g_main_context_get_thread_default IA__g_main_context_get_thread_default

extern __typeof (g_main_context_is_owner) IA__g_main_context_is_owner __attribute((visibility("hidden")));
#define g_main_context_is_owner IA__g_main_context_is_owner

extern __typeof (g_main_context_iteration) IA__g_main_context_iteration __attribute((visibility("hidden")));
#define g_main_context_iteration IA__g_main_context_iteration

extern __typeof (g_main_context_new) IA__g_main_context_new __attribute((visibility("hidden")));
#define g_main_context_new IA__g_main_context_new

extern __typeof (g_main_context_pending) IA__g_main_context_pending __attribute((visibility("hidden")));
#define g_main_context_pending IA__g_main_context_pending

extern __typeof (g_main_context_pop_thread_default) IA__g_main_context_pop_thread_default __attribute((visibility("hidden")));
#define g_main_context_pop_thread_default IA__g_main_context_pop_thread_default

extern __typeof (g_main_context_prepare) IA__g_main_context_prepare __attribute((visibility("hidden")));
#define g_main_context_prepare IA__g_main_context_prepare

extern __typeof (g_main_context_push_thread_default) IA__g_main_context_push_thread_default __attribute((visibility("hidden")));
#define g_main_context_push_thread_default IA__g_main_context_push_thread_default

extern __typeof (g_main_context_query) IA__g_main_context_query __attribute((visibility("hidden")));
#define g_main_context_query IA__g_main_context_query

extern __typeof (g_main_context_ref) IA__g_main_context_ref __attribute((visibility("hidden")));
#define g_main_context_ref IA__g_main_context_ref

extern __typeof (g_main_context_release) IA__g_main_context_release __attribute((visibility("hidden")));
#define g_main_context_release IA__g_main_context_release

extern __typeof (g_main_context_remove_poll) IA__g_main_context_remove_poll __attribute((visibility("hidden")));
#define g_main_context_remove_poll IA__g_main_context_remove_poll

extern __typeof (g_main_context_set_poll_func) IA__g_main_context_set_poll_func __attribute((visibility("hidden")));
#define g_main_context_set_poll_func IA__g_main_context_set_poll_func

extern __typeof (g_main_context_unref) IA__g_main_context_unref __attribute((visibility("hidden")));
#define g_main_context_unref IA__g_main_context_unref

extern __typeof (g_main_context_wait) IA__g_main_context_wait __attribute((visibility("hidden")));
#define g_main_context_wait IA__g_main_context_wait

extern __typeof (g_main_context_wakeup) IA__g_main_context_wakeup __attribute((visibility("hidden")));
#define g_main_context_wakeup IA__g_main_context_wakeup

extern __typeof (g_main_depth) IA__g_main_depth __attribute((visibility("hidden")));
#define g_main_depth IA__g_main_depth

extern __typeof (g_main_current_source) IA__g_main_current_source __attribute((visibility("hidden")));
#define g_main_current_source IA__g_main_current_source

extern __typeof (g_main_loop_get_context) IA__g_main_loop_get_context __attribute((visibility("hidden")));
#define g_main_loop_get_context IA__g_main_loop_get_context

extern __typeof (g_main_loop_is_running) IA__g_main_loop_is_running __attribute((visibility("hidden")));
#define g_main_loop_is_running IA__g_main_loop_is_running

extern __typeof (g_main_loop_new) IA__g_main_loop_new __attribute((visibility("hidden")));
#define g_main_loop_new IA__g_main_loop_new

extern __typeof (g_main_loop_quit) IA__g_main_loop_quit __attribute((visibility("hidden")));
#define g_main_loop_quit IA__g_main_loop_quit

extern __typeof (g_main_loop_ref) IA__g_main_loop_ref __attribute((visibility("hidden")));
#define g_main_loop_ref IA__g_main_loop_ref

extern __typeof (g_main_loop_run) IA__g_main_loop_run __attribute((visibility("hidden")));
#define g_main_loop_run IA__g_main_loop_run

extern __typeof (g_main_loop_unref) IA__g_main_loop_unref __attribute((visibility("hidden")));
#define g_main_loop_unref IA__g_main_loop_unref

extern __typeof (g_source_add_poll) IA__g_source_add_poll __attribute((visibility("hidden")));
#define g_source_add_poll IA__g_source_add_poll

extern __typeof (g_source_attach) IA__g_source_attach __attribute((visibility("hidden")));
#define g_source_attach IA__g_source_attach

extern __typeof (g_source_destroy) IA__g_source_destroy __attribute((visibility("hidden")));
#define g_source_destroy IA__g_source_destroy

extern __typeof (g_source_get_can_recurse) IA__g_source_get_can_recurse __attribute((visibility("hidden")));
#define g_source_get_can_recurse IA__g_source_get_can_recurse

extern __typeof (g_source_get_context) IA__g_source_get_context __attribute((visibility("hidden")));
#define g_source_get_context IA__g_source_get_context

extern __typeof (g_source_get_current_time) IA__g_source_get_current_time __attribute((visibility("hidden")));
#define g_source_get_current_time IA__g_source_get_current_time

extern __typeof (g_source_get_id) IA__g_source_get_id __attribute((visibility("hidden")));
#define g_source_get_id IA__g_source_get_id

extern __typeof (g_source_get_priority) IA__g_source_get_priority __attribute((visibility("hidden")));
#define g_source_get_priority IA__g_source_get_priority

extern __typeof (g_source_new) IA__g_source_new __attribute((visibility("hidden")));
#define g_source_new IA__g_source_new

extern __typeof (g_source_ref) IA__g_source_ref __attribute((visibility("hidden")));
#define g_source_ref IA__g_source_ref

extern __typeof (g_source_remove) IA__g_source_remove __attribute((visibility("hidden")));
#define g_source_remove IA__g_source_remove

extern __typeof (g_source_remove_by_funcs_user_data) IA__g_source_remove_by_funcs_user_data __attribute((visibility("hidden")));
#define g_source_remove_by_funcs_user_data IA__g_source_remove_by_funcs_user_data

extern __typeof (g_source_remove_by_user_data) IA__g_source_remove_by_user_data __attribute((visibility("hidden")));
#define g_source_remove_by_user_data IA__g_source_remove_by_user_data

extern __typeof (g_source_remove_poll) IA__g_source_remove_poll __attribute((visibility("hidden")));
#define g_source_remove_poll IA__g_source_remove_poll

extern __typeof (g_source_set_callback) IA__g_source_set_callback __attribute((visibility("hidden")));
#define g_source_set_callback IA__g_source_set_callback

extern __typeof (g_source_set_callback_indirect) IA__g_source_set_callback_indirect __attribute((visibility("hidden")));
#define g_source_set_callback_indirect IA__g_source_set_callback_indirect

extern __typeof (g_source_set_can_recurse) IA__g_source_set_can_recurse __attribute((visibility("hidden")));
#define g_source_set_can_recurse IA__g_source_set_can_recurse

extern __typeof (g_source_set_funcs) IA__g_source_set_funcs __attribute((visibility("hidden")));
#define g_source_set_funcs IA__g_source_set_funcs

extern __typeof (g_source_is_destroyed) IA__g_source_is_destroyed __attribute((visibility("hidden")));
#define g_source_is_destroyed IA__g_source_is_destroyed

extern __typeof (g_source_set_priority) IA__g_source_set_priority __attribute((visibility("hidden")));
#define g_source_set_priority IA__g_source_set_priority

extern __typeof (g_source_unref) IA__g_source_unref __attribute((visibility("hidden")));
#define g_source_unref IA__g_source_unref

extern __typeof (g_idle_add) IA__g_idle_add __attribute((visibility("hidden")));
#define g_idle_add IA__g_idle_add

extern __typeof (g_idle_add_full) IA__g_idle_add_full __attribute((visibility("hidden")));
#define g_idle_add_full IA__g_idle_add_full

extern __typeof (g_idle_remove_by_data) IA__g_idle_remove_by_data __attribute((visibility("hidden")));
#define g_idle_remove_by_data IA__g_idle_remove_by_data

extern __typeof (g_idle_source_new) IA__g_idle_source_new __attribute((visibility("hidden")));
#define g_idle_source_new IA__g_idle_source_new

extern __typeof (g_timeout_add) IA__g_timeout_add __attribute((visibility("hidden")));
#define g_timeout_add IA__g_timeout_add

extern __typeof (g_timeout_add_seconds) IA__g_timeout_add_seconds __attribute((visibility("hidden")));
#define g_timeout_add_seconds IA__g_timeout_add_seconds

extern __typeof (g_timeout_add_full) IA__g_timeout_add_full __attribute((visibility("hidden")));
#define g_timeout_add_full IA__g_timeout_add_full

extern __typeof (g_timeout_add_seconds_full) IA__g_timeout_add_seconds_full __attribute((visibility("hidden")));
#define g_timeout_add_seconds_full IA__g_timeout_add_seconds_full

extern __typeof (g_timeout_source_new) IA__g_timeout_source_new __attribute((visibility("hidden")));
#define g_timeout_source_new IA__g_timeout_source_new

extern __typeof (g_timeout_source_new_seconds) IA__g_timeout_source_new_seconds __attribute((visibility("hidden")));
#define g_timeout_source_new_seconds IA__g_timeout_source_new_seconds

#endif
#endif
#if IN_HEADER(__G_MAPPED_FILE_H__)
#if IN_FILE(__G_MAPPED_FILE_C__)
extern __typeof (g_mapped_file_new) IA__g_mapped_file_new __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_mapped_file_new IA__g_mapped_file_new

extern __typeof (g_mapped_file_get_length) IA__g_mapped_file_get_length __attribute((visibility("hidden")));
#define g_mapped_file_get_length IA__g_mapped_file_get_length

extern __typeof (g_mapped_file_get_contents) IA__g_mapped_file_get_contents __attribute((visibility("hidden")));
#define g_mapped_file_get_contents IA__g_mapped_file_get_contents

extern __typeof (g_mapped_file_ref) IA__g_mapped_file_ref __attribute((visibility("hidden")));
#define g_mapped_file_ref IA__g_mapped_file_ref

extern __typeof (g_mapped_file_unref) IA__g_mapped_file_unref __attribute((visibility("hidden")));
#define g_mapped_file_unref IA__g_mapped_file_unref

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_mapped_file_free) IA__g_mapped_file_free __attribute((visibility("hidden")));
#define g_mapped_file_free IA__g_mapped_file_free

#endif
#endif
#endif
#if IN_HEADER(__G_MARKUP_H__)
#if IN_FILE(__G_MARKUP_C__)
extern __typeof (g_markup_error_quark) IA__g_markup_error_quark __attribute((visibility("hidden")));
#define g_markup_error_quark IA__g_markup_error_quark

extern __typeof (g_markup_escape_text) IA__g_markup_escape_text __attribute((visibility("hidden")));
#define g_markup_escape_text IA__g_markup_escape_text

extern __typeof (g_markup_parse_context_end_parse) IA__g_markup_parse_context_end_parse __attribute((visibility("hidden")));
#define g_markup_parse_context_end_parse IA__g_markup_parse_context_end_parse

extern __typeof (g_markup_parse_context_free) IA__g_markup_parse_context_free __attribute((visibility("hidden")));
#define g_markup_parse_context_free IA__g_markup_parse_context_free

extern __typeof (g_markup_parse_context_get_element) IA__g_markup_parse_context_get_element __attribute((visibility("hidden")));
#define g_markup_parse_context_get_element IA__g_markup_parse_context_get_element

extern __typeof (g_markup_parse_context_get_element_stack) IA__g_markup_parse_context_get_element_stack __attribute((visibility("hidden")));
#define g_markup_parse_context_get_element_stack IA__g_markup_parse_context_get_element_stack

extern __typeof (g_markup_parse_context_get_position) IA__g_markup_parse_context_get_position __attribute((visibility("hidden")));
#define g_markup_parse_context_get_position IA__g_markup_parse_context_get_position

extern __typeof (g_markup_parse_context_get_user_data) IA__g_markup_parse_context_get_user_data __attribute((visibility("hidden")));
#define g_markup_parse_context_get_user_data IA__g_markup_parse_context_get_user_data

extern __typeof (g_markup_parse_context_new) IA__g_markup_parse_context_new __attribute((visibility("hidden")));
#define g_markup_parse_context_new IA__g_markup_parse_context_new

extern __typeof (g_markup_parse_context_parse) IA__g_markup_parse_context_parse __attribute((visibility("hidden")));
#define g_markup_parse_context_parse IA__g_markup_parse_context_parse

extern __typeof (g_markup_parse_context_push) IA__g_markup_parse_context_push __attribute((visibility("hidden")));
#define g_markup_parse_context_push IA__g_markup_parse_context_push

extern __typeof (g_markup_parse_context_pop) IA__g_markup_parse_context_pop __attribute((visibility("hidden")));
#define g_markup_parse_context_pop IA__g_markup_parse_context_pop

extern __typeof (g_markup_printf_escaped) IA__g_markup_printf_escaped __attribute((visibility("hidden"))) G_GNUC_PRINTF(1,2);
#define g_markup_printf_escaped IA__g_markup_printf_escaped

extern __typeof (g_markup_vprintf_escaped) IA__g_markup_vprintf_escaped __attribute((visibility("hidden")));
#define g_markup_vprintf_escaped IA__g_markup_vprintf_escaped

extern __typeof (g_markup_collect_attributes) IA__g_markup_collect_attributes __attribute((visibility("hidden")));
#define g_markup_collect_attributes IA__g_markup_collect_attributes

#endif
#endif
#if IN_HEADER(__G_MEM_H__)
#if IN_FILE(__G_MEM_C__)
extern __typeof (g_free) IA__g_free __attribute((visibility("hidden")));
#define g_free IA__g_free

extern __typeof (g_malloc) IA__g_malloc __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_malloc IA__g_malloc

extern __typeof (g_malloc0) IA__g_malloc0 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_malloc0 IA__g_malloc0

extern __typeof (g_malloc_n) IA__g_malloc_n __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_malloc_n IA__g_malloc_n

extern __typeof (g_malloc0_n) IA__g_malloc0_n __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_malloc0_n IA__g_malloc0_n

extern __typeof (g_mem_is_system_malloc) IA__g_mem_is_system_malloc __attribute((visibility("hidden")));
#define g_mem_is_system_malloc IA__g_mem_is_system_malloc

extern __typeof (g_mem_profile) IA__g_mem_profile __attribute((visibility("hidden")));
#define g_mem_profile IA__g_mem_profile

extern __typeof (g_mem_set_vtable) IA__g_mem_set_vtable __attribute((visibility("hidden")));
#define g_mem_set_vtable IA__g_mem_set_vtable

extern __typeof (g_realloc) IA__g_realloc __attribute((visibility("hidden")));
#define g_realloc IA__g_realloc

extern __typeof (g_realloc_n) IA__g_realloc_n __attribute((visibility("hidden")));
#define g_realloc_n IA__g_realloc_n

extern __typeof (g_try_malloc) IA__g_try_malloc __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_try_malloc IA__g_try_malloc

extern __typeof (g_try_malloc0) IA__g_try_malloc0 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_try_malloc0 IA__g_try_malloc0

extern __typeof (g_try_malloc_n) IA__g_try_malloc_n __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_try_malloc_n IA__g_try_malloc_n

extern __typeof (g_try_malloc0_n) IA__g_try_malloc0_n __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_try_malloc0_n IA__g_try_malloc0_n

extern __typeof (g_try_realloc) IA__g_try_realloc __attribute((visibility("hidden")));
#define g_try_realloc IA__g_try_realloc

extern __typeof (g_try_realloc_n) IA__g_try_realloc_n __attribute((visibility("hidden")));
#define g_try_realloc_n IA__g_try_realloc_n

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_allocator_free) IA__g_allocator_free __attribute((visibility("hidden")));
#define g_allocator_free IA__g_allocator_free

extern __typeof (g_allocator_new) IA__g_allocator_new __attribute((visibility("hidden")));
#define g_allocator_new IA__g_allocator_new

extern __typeof (g_mem_chunk_alloc) IA__g_mem_chunk_alloc __attribute((visibility("hidden")));
#define g_mem_chunk_alloc IA__g_mem_chunk_alloc

extern __typeof (g_mem_chunk_alloc0) IA__g_mem_chunk_alloc0 __attribute((visibility("hidden")));
#define g_mem_chunk_alloc0 IA__g_mem_chunk_alloc0

extern __typeof (g_mem_chunk_clean) IA__g_mem_chunk_clean __attribute((visibility("hidden")));
#define g_mem_chunk_clean IA__g_mem_chunk_clean

extern __typeof (g_mem_chunk_destroy) IA__g_mem_chunk_destroy __attribute((visibility("hidden")));
#define g_mem_chunk_destroy IA__g_mem_chunk_destroy

extern __typeof (g_mem_chunk_free) IA__g_mem_chunk_free __attribute((visibility("hidden")));
#define g_mem_chunk_free IA__g_mem_chunk_free

extern __typeof (g_mem_chunk_info) IA__g_mem_chunk_info __attribute((visibility("hidden")));
#define g_mem_chunk_info IA__g_mem_chunk_info

extern __typeof (g_mem_chunk_new) IA__g_mem_chunk_new __attribute((visibility("hidden")));
#define g_mem_chunk_new IA__g_mem_chunk_new

extern __typeof (g_mem_chunk_print) IA__g_mem_chunk_print __attribute((visibility("hidden")));
#define g_mem_chunk_print IA__g_mem_chunk_print

extern __typeof (g_mem_chunk_reset) IA__g_mem_chunk_reset __attribute((visibility("hidden")));
#define g_mem_chunk_reset IA__g_mem_chunk_reset

extern __typeof (g_blow_chunks) IA__g_blow_chunks __attribute((visibility("hidden")));
#define g_blow_chunks IA__g_blow_chunks

#endif
#endif
#endif
#if IN_HEADER(__G_SLICE_H__)
#if IN_FILE(__G_SLICE_C__)
extern __typeof (g_slice_alloc) IA__g_slice_alloc __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_slice_alloc IA__g_slice_alloc

extern __typeof (g_slice_alloc0) IA__g_slice_alloc0 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_slice_alloc0 IA__g_slice_alloc0

extern __typeof (g_slice_copy) IA__g_slice_copy __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_slice_copy IA__g_slice_copy

extern __typeof (g_slice_free1) IA__g_slice_free1 __attribute((visibility("hidden")));
#define g_slice_free1 IA__g_slice_free1

extern __typeof (g_slice_free_chain_with_offset) IA__g_slice_free_chain_with_offset __attribute((visibility("hidden")));
#define g_slice_free_chain_with_offset IA__g_slice_free_chain_with_offset

extern __typeof (g_slice_set_config) IA__g_slice_set_config __attribute((visibility("hidden")));
#define g_slice_set_config IA__g_slice_set_config

extern __typeof (g_slice_get_config) IA__g_slice_get_config __attribute((visibility("hidden")));
#define g_slice_get_config IA__g_slice_get_config

extern __typeof (g_slice_get_config_state) IA__g_slice_get_config_state __attribute((visibility("hidden")));
#define g_slice_get_config_state IA__g_slice_get_config_state

#ifdef G_ENABLE_DEBUG
#endif
#endif
#endif
#if IN_HEADER(__G_MESSAGES_H__)
#if IN_FILE(__G_MESSAGES_C__)
extern __typeof (g_printf_string_upper_bound) IA__g_printf_string_upper_bound __attribute((visibility("hidden")));
#define g_printf_string_upper_bound IA__g_printf_string_upper_bound

extern __typeof (g_log) IA__g_log __attribute((visibility("hidden"))) G_GNUC_PRINTF(3,4);
#define g_log IA__g_log

extern __typeof (g_log_default_handler) IA__g_log_default_handler __attribute((visibility("hidden")));
#define g_log_default_handler IA__g_log_default_handler

extern __typeof (g_log_remove_handler) IA__g_log_remove_handler __attribute((visibility("hidden")));
#define g_log_remove_handler IA__g_log_remove_handler

extern __typeof (g_log_set_always_fatal) IA__g_log_set_always_fatal __attribute((visibility("hidden")));
#define g_log_set_always_fatal IA__g_log_set_always_fatal

extern __typeof (g_log_set_default_handler) IA__g_log_set_default_handler __attribute((visibility("hidden")));
#define g_log_set_default_handler IA__g_log_set_default_handler

extern __typeof (g_log_set_fatal_mask) IA__g_log_set_fatal_mask __attribute((visibility("hidden")));
#define g_log_set_fatal_mask IA__g_log_set_fatal_mask

extern __typeof (g_log_set_handler) IA__g_log_set_handler __attribute((visibility("hidden")));
#define g_log_set_handler IA__g_log_set_handler

extern __typeof (g_logv) IA__g_logv __attribute((visibility("hidden")));
#define g_logv IA__g_logv

extern __typeof (g_return_if_fail_warning) IA__g_return_if_fail_warning __attribute((visibility("hidden")));
#define g_return_if_fail_warning IA__g_return_if_fail_warning

extern __typeof (g_warn_message) IA__g_warn_message __attribute((visibility("hidden")));
#define g_warn_message IA__g_warn_message

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_assert_warning) IA__g_assert_warning __attribute((visibility("hidden"))) G_GNUC_NORETURN;
#define g_assert_warning IA__g_assert_warning

#endif
extern __typeof (g_print) IA__g_print __attribute((visibility("hidden"))) G_GNUC_PRINTF(1,2);
#define g_print IA__g_print

extern __typeof (g_printerr) IA__g_printerr __attribute((visibility("hidden"))) G_GNUC_PRINTF(1,2);
#define g_printerr IA__g_printerr

extern __typeof (g_set_printerr_handler) IA__g_set_printerr_handler __attribute((visibility("hidden")));
#define g_set_printerr_handler IA__g_set_printerr_handler

extern __typeof (g_set_print_handler) IA__g_set_print_handler __attribute((visibility("hidden")));
#define g_set_print_handler IA__g_set_print_handler

#endif
#endif
#if IN_HEADER(__G_NODE_H__)
#if IN_FILE(__G_NODE_C__)
extern __typeof (g_node_child_index) IA__g_node_child_index __attribute((visibility("hidden")));
#define g_node_child_index IA__g_node_child_index

extern __typeof (g_node_child_position) IA__g_node_child_position __attribute((visibility("hidden")));
#define g_node_child_position IA__g_node_child_position

extern __typeof (g_node_children_foreach) IA__g_node_children_foreach __attribute((visibility("hidden")));
#define g_node_children_foreach IA__g_node_children_foreach

extern __typeof (g_node_copy) IA__g_node_copy __attribute((visibility("hidden")));
#define g_node_copy IA__g_node_copy

extern __typeof (g_node_copy_deep) IA__g_node_copy_deep __attribute((visibility("hidden")));
#define g_node_copy_deep IA__g_node_copy_deep

extern __typeof (g_node_depth) IA__g_node_depth __attribute((visibility("hidden")));
#define g_node_depth IA__g_node_depth

extern __typeof (g_node_destroy) IA__g_node_destroy __attribute((visibility("hidden")));
#define g_node_destroy IA__g_node_destroy

extern __typeof (g_node_find) IA__g_node_find __attribute((visibility("hidden")));
#define g_node_find IA__g_node_find

extern __typeof (g_node_find_child) IA__g_node_find_child __attribute((visibility("hidden")));
#define g_node_find_child IA__g_node_find_child

extern __typeof (g_node_first_sibling) IA__g_node_first_sibling __attribute((visibility("hidden")));
#define g_node_first_sibling IA__g_node_first_sibling

extern __typeof (g_node_get_root) IA__g_node_get_root __attribute((visibility("hidden")));
#define g_node_get_root IA__g_node_get_root

extern __typeof (g_node_insert) IA__g_node_insert __attribute((visibility("hidden")));
#define g_node_insert IA__g_node_insert

extern __typeof (g_node_insert_after) IA__g_node_insert_after __attribute((visibility("hidden")));
#define g_node_insert_after IA__g_node_insert_after

extern __typeof (g_node_insert_before) IA__g_node_insert_before __attribute((visibility("hidden")));
#define g_node_insert_before IA__g_node_insert_before

extern __typeof (g_node_is_ancestor) IA__g_node_is_ancestor __attribute((visibility("hidden")));
#define g_node_is_ancestor IA__g_node_is_ancestor

extern __typeof (g_node_last_child) IA__g_node_last_child __attribute((visibility("hidden")));
#define g_node_last_child IA__g_node_last_child

extern __typeof (g_node_last_sibling) IA__g_node_last_sibling __attribute((visibility("hidden")));
#define g_node_last_sibling IA__g_node_last_sibling

extern __typeof (g_node_max_height) IA__g_node_max_height __attribute((visibility("hidden")));
#define g_node_max_height IA__g_node_max_height

extern __typeof (g_node_n_children) IA__g_node_n_children __attribute((visibility("hidden")));
#define g_node_n_children IA__g_node_n_children

extern __typeof (g_node_new) IA__g_node_new __attribute((visibility("hidden")));
#define g_node_new IA__g_node_new

extern __typeof (g_node_n_nodes) IA__g_node_n_nodes __attribute((visibility("hidden")));
#define g_node_n_nodes IA__g_node_n_nodes

extern __typeof (g_node_nth_child) IA__g_node_nth_child __attribute((visibility("hidden")));
#define g_node_nth_child IA__g_node_nth_child

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_node_pop_allocator) IA__g_node_pop_allocator __attribute((visibility("hidden")));
#define g_node_pop_allocator IA__g_node_pop_allocator

#endif
extern __typeof (g_node_prepend) IA__g_node_prepend __attribute((visibility("hidden")));
#define g_node_prepend IA__g_node_prepend

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_node_push_allocator) IA__g_node_push_allocator __attribute((visibility("hidden")));
#define g_node_push_allocator IA__g_node_push_allocator

#endif
extern __typeof (g_node_reverse_children) IA__g_node_reverse_children __attribute((visibility("hidden")));
#define g_node_reverse_children IA__g_node_reverse_children

extern __typeof (g_node_traverse) IA__g_node_traverse __attribute((visibility("hidden")));
#define g_node_traverse IA__g_node_traverse

extern __typeof (g_node_unlink) IA__g_node_unlink __attribute((visibility("hidden")));
#define g_node_unlink IA__g_node_unlink

#endif
#endif
#if IN_HEADER(__G_OPTION_H__)
#if IN_FILE(__G_OPTION_C__)
extern __typeof (g_option_context_add_group) IA__g_option_context_add_group __attribute((visibility("hidden")));
#define g_option_context_add_group IA__g_option_context_add_group

extern __typeof (g_option_context_add_main_entries) IA__g_option_context_add_main_entries __attribute((visibility("hidden")));
#define g_option_context_add_main_entries IA__g_option_context_add_main_entries

extern __typeof (g_option_error_quark) IA__g_option_error_quark __attribute((visibility("hidden")));
#define g_option_error_quark IA__g_option_error_quark

extern __typeof (g_option_context_free) IA__g_option_context_free __attribute((visibility("hidden")));
#define g_option_context_free IA__g_option_context_free

extern __typeof (g_option_context_get_description) IA__g_option_context_get_description __attribute((visibility("hidden")));
#define g_option_context_get_description IA__g_option_context_get_description

extern __typeof (g_option_context_get_help_enabled) IA__g_option_context_get_help_enabled __attribute((visibility("hidden")));
#define g_option_context_get_help_enabled IA__g_option_context_get_help_enabled

extern __typeof (g_option_context_get_ignore_unknown_options) IA__g_option_context_get_ignore_unknown_options __attribute((visibility("hidden")));
#define g_option_context_get_ignore_unknown_options IA__g_option_context_get_ignore_unknown_options

extern __typeof (g_option_context_get_main_group) IA__g_option_context_get_main_group __attribute((visibility("hidden")));
#define g_option_context_get_main_group IA__g_option_context_get_main_group

extern __typeof (g_option_context_get_summary) IA__g_option_context_get_summary __attribute((visibility("hidden")));
#define g_option_context_get_summary IA__g_option_context_get_summary

extern __typeof (g_option_context_new) IA__g_option_context_new __attribute((visibility("hidden")));
#define g_option_context_new IA__g_option_context_new

extern __typeof (g_option_context_parse) IA__g_option_context_parse __attribute((visibility("hidden")));
#define g_option_context_parse IA__g_option_context_parse

extern __typeof (g_option_context_set_description) IA__g_option_context_set_description __attribute((visibility("hidden")));
#define g_option_context_set_description IA__g_option_context_set_description

extern __typeof (g_option_context_set_help_enabled) IA__g_option_context_set_help_enabled __attribute((visibility("hidden")));
#define g_option_context_set_help_enabled IA__g_option_context_set_help_enabled

extern __typeof (g_option_context_set_ignore_unknown_options) IA__g_option_context_set_ignore_unknown_options __attribute((visibility("hidden")));
#define g_option_context_set_ignore_unknown_options IA__g_option_context_set_ignore_unknown_options

extern __typeof (g_option_context_set_main_group) IA__g_option_context_set_main_group __attribute((visibility("hidden")));
#define g_option_context_set_main_group IA__g_option_context_set_main_group

extern __typeof (g_option_context_set_summary) IA__g_option_context_set_summary __attribute((visibility("hidden")));
#define g_option_context_set_summary IA__g_option_context_set_summary

extern __typeof (g_option_context_set_translate_func) IA__g_option_context_set_translate_func __attribute((visibility("hidden")));
#define g_option_context_set_translate_func IA__g_option_context_set_translate_func

extern __typeof (g_option_context_set_translation_domain) IA__g_option_context_set_translation_domain __attribute((visibility("hidden")));
#define g_option_context_set_translation_domain IA__g_option_context_set_translation_domain

extern __typeof (g_option_context_get_help) IA__g_option_context_get_help __attribute((visibility("hidden")));
#define g_option_context_get_help IA__g_option_context_get_help

extern __typeof (g_option_group_add_entries) IA__g_option_group_add_entries __attribute((visibility("hidden")));
#define g_option_group_add_entries IA__g_option_group_add_entries

extern __typeof (g_option_group_free) IA__g_option_group_free __attribute((visibility("hidden")));
#define g_option_group_free IA__g_option_group_free

extern __typeof (g_option_group_new) IA__g_option_group_new __attribute((visibility("hidden")));
#define g_option_group_new IA__g_option_group_new

extern __typeof (g_option_group_set_error_hook) IA__g_option_group_set_error_hook __attribute((visibility("hidden")));
#define g_option_group_set_error_hook IA__g_option_group_set_error_hook

extern __typeof (g_option_group_set_parse_hooks) IA__g_option_group_set_parse_hooks __attribute((visibility("hidden")));
#define g_option_group_set_parse_hooks IA__g_option_group_set_parse_hooks

extern __typeof (g_option_group_set_translate_func) IA__g_option_group_set_translate_func __attribute((visibility("hidden")));
#define g_option_group_set_translate_func IA__g_option_group_set_translate_func

extern __typeof (g_option_group_set_translation_domain) IA__g_option_group_set_translation_domain __attribute((visibility("hidden")));
#define g_option_group_set_translation_domain IA__g_option_group_set_translation_domain

#endif
#endif
#if IN_HEADER(__G_PATTERN_H__)
#if IN_FILE(__G_PATTERN_C__)
extern __typeof (g_pattern_match) IA__g_pattern_match __attribute((visibility("hidden")));
#define g_pattern_match IA__g_pattern_match

extern __typeof (g_pattern_match_simple) IA__g_pattern_match_simple __attribute((visibility("hidden")));
#define g_pattern_match_simple IA__g_pattern_match_simple

extern __typeof (g_pattern_match_string) IA__g_pattern_match_string __attribute((visibility("hidden")));
#define g_pattern_match_string IA__g_pattern_match_string

extern __typeof (g_pattern_spec_equal) IA__g_pattern_spec_equal __attribute((visibility("hidden")));
#define g_pattern_spec_equal IA__g_pattern_spec_equal

extern __typeof (g_pattern_spec_free) IA__g_pattern_spec_free __attribute((visibility("hidden")));
#define g_pattern_spec_free IA__g_pattern_spec_free

extern __typeof (g_pattern_spec_new) IA__g_pattern_spec_new __attribute((visibility("hidden")));
#define g_pattern_spec_new IA__g_pattern_spec_new

#endif
#endif
#if IN_HEADER(__G_POLL_H__)
#if IN_FILE(__G_POLL_C__)
extern __typeof (g_poll) IA__g_poll __attribute((visibility("hidden")));
#define g_poll IA__g_poll

#endif
#endif
#if IN_HEADER(__G_PRIMES_H__)
#if IN_FILE(__G_PRIMES_C__)
extern __typeof (g_spaced_primes_closest) IA__g_spaced_primes_closest __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_spaced_primes_closest IA__g_spaced_primes_closest

#endif
#endif
#if IN_HEADER(__G_PRINTF_H__)
#if IN_FILE(__G_PRINTF_C__)
extern __typeof (g_fprintf) IA__g_fprintf __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
#define g_fprintf IA__g_fprintf

extern __typeof (g_printf) IA__g_printf __attribute((visibility("hidden"))) G_GNUC_PRINTF(1,2);
#define g_printf IA__g_printf

extern __typeof (g_sprintf) IA__g_sprintf __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
#define g_sprintf IA__g_sprintf

extern __typeof (g_vasprintf) IA__g_vasprintf __attribute((visibility("hidden")));
#define g_vasprintf IA__g_vasprintf

extern __typeof (g_vfprintf) IA__g_vfprintf __attribute((visibility("hidden")));
#define g_vfprintf IA__g_vfprintf

extern __typeof (g_vprintf) IA__g_vprintf __attribute((visibility("hidden")));
#define g_vprintf IA__g_vprintf

extern __typeof (g_vsprintf) IA__g_vsprintf __attribute((visibility("hidden")));
#define g_vsprintf IA__g_vsprintf

#endif
#endif
#if IN_HEADER(__G_UTILS_H__)
#if IN_FILE(__G_PRINTF_C__)
extern __typeof (g_snprintf) IA__g_snprintf __attribute((visibility("hidden"))) G_GNUC_PRINTF(3,4);
#define g_snprintf IA__g_snprintf

extern __typeof (g_vsnprintf) IA__g_vsnprintf __attribute((visibility("hidden")));
#define g_vsnprintf IA__g_vsnprintf

#endif
#endif
#if IN_HEADER(__G_QSORT_H__)
#if IN_FILE(__G_QSORT_C__)
extern __typeof (g_qsort_with_data) IA__g_qsort_with_data __attribute((visibility("hidden")));
#define g_qsort_with_data IA__g_qsort_with_data

#endif
#endif
#if IN_HEADER(__G_QUEUE_H__)
#if IN_FILE(__G_QUEUE_C__)
extern __typeof (g_queue_clear) IA__g_queue_clear __attribute((visibility("hidden")));
#define g_queue_clear IA__g_queue_clear

extern __typeof (g_queue_copy) IA__g_queue_copy __attribute((visibility("hidden")));
#define g_queue_copy IA__g_queue_copy

extern __typeof (g_queue_delete_link) IA__g_queue_delete_link __attribute((visibility("hidden")));
#define g_queue_delete_link IA__g_queue_delete_link

extern __typeof (g_queue_find) IA__g_queue_find __attribute((visibility("hidden")));
#define g_queue_find IA__g_queue_find

extern __typeof (g_queue_find_custom) IA__g_queue_find_custom __attribute((visibility("hidden")));
#define g_queue_find_custom IA__g_queue_find_custom

extern __typeof (g_queue_foreach) IA__g_queue_foreach __attribute((visibility("hidden")));
#define g_queue_foreach IA__g_queue_foreach

extern __typeof (g_queue_free) IA__g_queue_free __attribute((visibility("hidden")));
#define g_queue_free IA__g_queue_free

extern __typeof (g_queue_get_length) IA__g_queue_get_length __attribute((visibility("hidden")));
#define g_queue_get_length IA__g_queue_get_length

extern __typeof (g_queue_index) IA__g_queue_index __attribute((visibility("hidden")));
#define g_queue_index IA__g_queue_index

extern __typeof (g_queue_init) IA__g_queue_init __attribute((visibility("hidden")));
#define g_queue_init IA__g_queue_init

extern __typeof (g_queue_insert_after) IA__g_queue_insert_after __attribute((visibility("hidden")));
#define g_queue_insert_after IA__g_queue_insert_after

extern __typeof (g_queue_insert_before) IA__g_queue_insert_before __attribute((visibility("hidden")));
#define g_queue_insert_before IA__g_queue_insert_before

extern __typeof (g_queue_insert_sorted) IA__g_queue_insert_sorted __attribute((visibility("hidden")));
#define g_queue_insert_sorted IA__g_queue_insert_sorted

extern __typeof (g_queue_is_empty) IA__g_queue_is_empty __attribute((visibility("hidden")));
#define g_queue_is_empty IA__g_queue_is_empty

extern __typeof (g_queue_link_index) IA__g_queue_link_index __attribute((visibility("hidden")));
#define g_queue_link_index IA__g_queue_link_index

extern __typeof (g_queue_new) IA__g_queue_new __attribute((visibility("hidden")));
#define g_queue_new IA__g_queue_new

extern __typeof (g_queue_peek_head) IA__g_queue_peek_head __attribute((visibility("hidden")));
#define g_queue_peek_head IA__g_queue_peek_head

extern __typeof (g_queue_peek_head_link) IA__g_queue_peek_head_link __attribute((visibility("hidden")));
#define g_queue_peek_head_link IA__g_queue_peek_head_link

extern __typeof (g_queue_peek_nth) IA__g_queue_peek_nth __attribute((visibility("hidden")));
#define g_queue_peek_nth IA__g_queue_peek_nth

extern __typeof (g_queue_peek_nth_link) IA__g_queue_peek_nth_link __attribute((visibility("hidden")));
#define g_queue_peek_nth_link IA__g_queue_peek_nth_link

extern __typeof (g_queue_peek_tail) IA__g_queue_peek_tail __attribute((visibility("hidden")));
#define g_queue_peek_tail IA__g_queue_peek_tail

extern __typeof (g_queue_peek_tail_link) IA__g_queue_peek_tail_link __attribute((visibility("hidden")));
#define g_queue_peek_tail_link IA__g_queue_peek_tail_link

extern __typeof (g_queue_pop_head) IA__g_queue_pop_head __attribute((visibility("hidden")));
#define g_queue_pop_head IA__g_queue_pop_head

extern __typeof (g_queue_pop_head_link) IA__g_queue_pop_head_link __attribute((visibility("hidden")));
#define g_queue_pop_head_link IA__g_queue_pop_head_link

extern __typeof (g_queue_pop_nth) IA__g_queue_pop_nth __attribute((visibility("hidden")));
#define g_queue_pop_nth IA__g_queue_pop_nth

extern __typeof (g_queue_pop_nth_link) IA__g_queue_pop_nth_link __attribute((visibility("hidden")));
#define g_queue_pop_nth_link IA__g_queue_pop_nth_link

extern __typeof (g_queue_pop_tail) IA__g_queue_pop_tail __attribute((visibility("hidden")));
#define g_queue_pop_tail IA__g_queue_pop_tail

extern __typeof (g_queue_pop_tail_link) IA__g_queue_pop_tail_link __attribute((visibility("hidden")));
#define g_queue_pop_tail_link IA__g_queue_pop_tail_link

extern __typeof (g_queue_push_head) IA__g_queue_push_head __attribute((visibility("hidden")));
#define g_queue_push_head IA__g_queue_push_head

extern __typeof (g_queue_push_head_link) IA__g_queue_push_head_link __attribute((visibility("hidden")));
#define g_queue_push_head_link IA__g_queue_push_head_link

extern __typeof (g_queue_push_nth) IA__g_queue_push_nth __attribute((visibility("hidden")));
#define g_queue_push_nth IA__g_queue_push_nth

extern __typeof (g_queue_push_nth_link) IA__g_queue_push_nth_link __attribute((visibility("hidden")));
#define g_queue_push_nth_link IA__g_queue_push_nth_link

extern __typeof (g_queue_push_tail) IA__g_queue_push_tail __attribute((visibility("hidden")));
#define g_queue_push_tail IA__g_queue_push_tail

extern __typeof (g_queue_push_tail_link) IA__g_queue_push_tail_link __attribute((visibility("hidden")));
#define g_queue_push_tail_link IA__g_queue_push_tail_link

extern __typeof (g_queue_remove) IA__g_queue_remove __attribute((visibility("hidden")));
#define g_queue_remove IA__g_queue_remove

extern __typeof (g_queue_remove_all) IA__g_queue_remove_all __attribute((visibility("hidden")));
#define g_queue_remove_all IA__g_queue_remove_all

extern __typeof (g_queue_reverse) IA__g_queue_reverse __attribute((visibility("hidden")));
#define g_queue_reverse IA__g_queue_reverse

extern __typeof (g_queue_sort) IA__g_queue_sort __attribute((visibility("hidden")));
#define g_queue_sort IA__g_queue_sort

extern __typeof (g_queue_unlink) IA__g_queue_unlink __attribute((visibility("hidden")));
#define g_queue_unlink IA__g_queue_unlink

#endif
#endif
#if IN_HEADER(__G_RAND_H__)
#if IN_FILE(__G_RAND_C__)
extern __typeof (g_rand_copy) IA__g_rand_copy __attribute((visibility("hidden")));
#define g_rand_copy IA__g_rand_copy

extern __typeof (g_rand_double) IA__g_rand_double __attribute((visibility("hidden")));
#define g_rand_double IA__g_rand_double

extern __typeof (g_rand_double_range) IA__g_rand_double_range __attribute((visibility("hidden")));
#define g_rand_double_range IA__g_rand_double_range

extern __typeof (g_rand_free) IA__g_rand_free __attribute((visibility("hidden")));
#define g_rand_free IA__g_rand_free

extern __typeof (g_rand_int) IA__g_rand_int __attribute((visibility("hidden")));
#define g_rand_int IA__g_rand_int

extern __typeof (g_rand_int_range) IA__g_rand_int_range __attribute((visibility("hidden")));
#define g_rand_int_range IA__g_rand_int_range

extern __typeof (g_rand_new) IA__g_rand_new __attribute((visibility("hidden")));
#define g_rand_new IA__g_rand_new

extern __typeof (g_rand_new_with_seed) IA__g_rand_new_with_seed __attribute((visibility("hidden")));
#define g_rand_new_with_seed IA__g_rand_new_with_seed

extern __typeof (g_rand_new_with_seed_array) IA__g_rand_new_with_seed_array __attribute((visibility("hidden")));
#define g_rand_new_with_seed_array IA__g_rand_new_with_seed_array

extern __typeof (g_random_double) IA__g_random_double __attribute((visibility("hidden")));
#define g_random_double IA__g_random_double

extern __typeof (g_random_double_range) IA__g_random_double_range __attribute((visibility("hidden")));
#define g_random_double_range IA__g_random_double_range

extern __typeof (g_random_int) IA__g_random_int __attribute((visibility("hidden")));
#define g_random_int IA__g_random_int

extern __typeof (g_random_int_range) IA__g_random_int_range __attribute((visibility("hidden")));
#define g_random_int_range IA__g_random_int_range

extern __typeof (g_random_set_seed) IA__g_random_set_seed __attribute((visibility("hidden")));
#define g_random_set_seed IA__g_random_set_seed

extern __typeof (g_rand_set_seed) IA__g_rand_set_seed __attribute((visibility("hidden")));
#define g_rand_set_seed IA__g_rand_set_seed

extern __typeof (g_rand_set_seed_array) IA__g_rand_set_seed_array __attribute((visibility("hidden")));
#define g_rand_set_seed_array IA__g_rand_set_seed_array

#endif
#endif
#if IN_HEADER(__G_REL_H__)
#if IN_FILE(__G_REL_C__)
extern __typeof (g_relation_count) IA__g_relation_count __attribute((visibility("hidden")));
#define g_relation_count IA__g_relation_count

extern __typeof (g_relation_delete) IA__g_relation_delete __attribute((visibility("hidden")));
#define g_relation_delete IA__g_relation_delete

extern __typeof (g_relation_destroy) IA__g_relation_destroy __attribute((visibility("hidden")));
#define g_relation_destroy IA__g_relation_destroy

extern __typeof (g_relation_exists) IA__g_relation_exists __attribute((visibility("hidden")));
#define g_relation_exists IA__g_relation_exists

extern __typeof (g_relation_index) IA__g_relation_index __attribute((visibility("hidden")));
#define g_relation_index IA__g_relation_index

extern __typeof (g_relation_insert) IA__g_relation_insert __attribute((visibility("hidden")));
#define g_relation_insert IA__g_relation_insert

extern __typeof (g_relation_new) IA__g_relation_new __attribute((visibility("hidden")));
#define g_relation_new IA__g_relation_new

extern __typeof (g_relation_print) IA__g_relation_print __attribute((visibility("hidden")));
#define g_relation_print IA__g_relation_print

extern __typeof (g_relation_select) IA__g_relation_select __attribute((visibility("hidden")));
#define g_relation_select IA__g_relation_select

extern __typeof (g_tuples_destroy) IA__g_tuples_destroy __attribute((visibility("hidden")));
#define g_tuples_destroy IA__g_tuples_destroy

extern __typeof (g_tuples_index) IA__g_tuples_index __attribute((visibility("hidden")));
#define g_tuples_index IA__g_tuples_index

#endif
#endif
#if IN_HEADER(__G_SCANNER_H__)
#if IN_FILE(__G_SCANNER_C__)
extern __typeof (g_scanner_cur_line) IA__g_scanner_cur_line __attribute((visibility("hidden")));
#define g_scanner_cur_line IA__g_scanner_cur_line

extern __typeof (g_scanner_cur_position) IA__g_scanner_cur_position __attribute((visibility("hidden")));
#define g_scanner_cur_position IA__g_scanner_cur_position

extern __typeof (g_scanner_cur_token) IA__g_scanner_cur_token __attribute((visibility("hidden")));
#define g_scanner_cur_token IA__g_scanner_cur_token

extern __typeof (g_scanner_cur_value) IA__g_scanner_cur_value __attribute((visibility("hidden")));
#define g_scanner_cur_value IA__g_scanner_cur_value

extern __typeof (g_scanner_destroy) IA__g_scanner_destroy __attribute((visibility("hidden")));
#define g_scanner_destroy IA__g_scanner_destroy

extern __typeof (g_scanner_eof) IA__g_scanner_eof __attribute((visibility("hidden")));
#define g_scanner_eof IA__g_scanner_eof

extern __typeof (g_scanner_error) IA__g_scanner_error __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
#define g_scanner_error IA__g_scanner_error

extern __typeof (g_scanner_get_next_token) IA__g_scanner_get_next_token __attribute((visibility("hidden")));
#define g_scanner_get_next_token IA__g_scanner_get_next_token

extern __typeof (g_scanner_input_file) IA__g_scanner_input_file __attribute((visibility("hidden")));
#define g_scanner_input_file IA__g_scanner_input_file

extern __typeof (g_scanner_input_text) IA__g_scanner_input_text __attribute((visibility("hidden")));
#define g_scanner_input_text IA__g_scanner_input_text

extern __typeof (g_scanner_lookup_symbol) IA__g_scanner_lookup_symbol __attribute((visibility("hidden")));
#define g_scanner_lookup_symbol IA__g_scanner_lookup_symbol

extern __typeof (g_scanner_new) IA__g_scanner_new __attribute((visibility("hidden")));
#define g_scanner_new IA__g_scanner_new

extern __typeof (g_scanner_peek_next_token) IA__g_scanner_peek_next_token __attribute((visibility("hidden")));
#define g_scanner_peek_next_token IA__g_scanner_peek_next_token

extern __typeof (g_scanner_scope_add_symbol) IA__g_scanner_scope_add_symbol __attribute((visibility("hidden")));
#define g_scanner_scope_add_symbol IA__g_scanner_scope_add_symbol

extern __typeof (g_scanner_scope_foreach_symbol) IA__g_scanner_scope_foreach_symbol __attribute((visibility("hidden")));
#define g_scanner_scope_foreach_symbol IA__g_scanner_scope_foreach_symbol

extern __typeof (g_scanner_scope_lookup_symbol) IA__g_scanner_scope_lookup_symbol __attribute((visibility("hidden")));
#define g_scanner_scope_lookup_symbol IA__g_scanner_scope_lookup_symbol

extern __typeof (g_scanner_scope_remove_symbol) IA__g_scanner_scope_remove_symbol __attribute((visibility("hidden")));
#define g_scanner_scope_remove_symbol IA__g_scanner_scope_remove_symbol

extern __typeof (g_scanner_set_scope) IA__g_scanner_set_scope __attribute((visibility("hidden")));
#define g_scanner_set_scope IA__g_scanner_set_scope

extern __typeof (g_scanner_sync_file_offset) IA__g_scanner_sync_file_offset __attribute((visibility("hidden")));
#define g_scanner_sync_file_offset IA__g_scanner_sync_file_offset

extern __typeof (g_scanner_unexp_token) IA__g_scanner_unexp_token __attribute((visibility("hidden")));
#define g_scanner_unexp_token IA__g_scanner_unexp_token

extern __typeof (g_scanner_warn) IA__g_scanner_warn __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
#define g_scanner_warn IA__g_scanner_warn

#endif
#endif
#if IN_HEADER(__G_SEQUENCE_H__)
#if IN_FILE(__G_SEQUENCE_C__)
extern __typeof (g_sequence_new) IA__g_sequence_new __attribute((visibility("hidden")));
#define g_sequence_new IA__g_sequence_new

extern __typeof (g_sequence_free) IA__g_sequence_free __attribute((visibility("hidden")));
#define g_sequence_free IA__g_sequence_free

extern __typeof (g_sequence_get_length) IA__g_sequence_get_length __attribute((visibility("hidden")));
#define g_sequence_get_length IA__g_sequence_get_length

extern __typeof (g_sequence_foreach) IA__g_sequence_foreach __attribute((visibility("hidden")));
#define g_sequence_foreach IA__g_sequence_foreach

extern __typeof (g_sequence_foreach_range) IA__g_sequence_foreach_range __attribute((visibility("hidden")));
#define g_sequence_foreach_range IA__g_sequence_foreach_range

extern __typeof (g_sequence_sort) IA__g_sequence_sort __attribute((visibility("hidden")));
#define g_sequence_sort IA__g_sequence_sort

extern __typeof (g_sequence_sort_iter) IA__g_sequence_sort_iter __attribute((visibility("hidden")));
#define g_sequence_sort_iter IA__g_sequence_sort_iter

extern __typeof (g_sequence_get_begin_iter) IA__g_sequence_get_begin_iter __attribute((visibility("hidden")));
#define g_sequence_get_begin_iter IA__g_sequence_get_begin_iter

extern __typeof (g_sequence_get_end_iter) IA__g_sequence_get_end_iter __attribute((visibility("hidden")));
#define g_sequence_get_end_iter IA__g_sequence_get_end_iter

extern __typeof (g_sequence_get_iter_at_pos) IA__g_sequence_get_iter_at_pos __attribute((visibility("hidden")));
#define g_sequence_get_iter_at_pos IA__g_sequence_get_iter_at_pos

extern __typeof (g_sequence_append) IA__g_sequence_append __attribute((visibility("hidden")));
#define g_sequence_append IA__g_sequence_append

extern __typeof (g_sequence_prepend) IA__g_sequence_prepend __attribute((visibility("hidden")));
#define g_sequence_prepend IA__g_sequence_prepend

extern __typeof (g_sequence_insert_before) IA__g_sequence_insert_before __attribute((visibility("hidden")));
#define g_sequence_insert_before IA__g_sequence_insert_before

extern __typeof (g_sequence_move) IA__g_sequence_move __attribute((visibility("hidden")));
#define g_sequence_move IA__g_sequence_move

extern __typeof (g_sequence_swap) IA__g_sequence_swap __attribute((visibility("hidden")));
#define g_sequence_swap IA__g_sequence_swap

extern __typeof (g_sequence_insert_sorted) IA__g_sequence_insert_sorted __attribute((visibility("hidden")));
#define g_sequence_insert_sorted IA__g_sequence_insert_sorted

extern __typeof (g_sequence_insert_sorted_iter) IA__g_sequence_insert_sorted_iter __attribute((visibility("hidden")));
#define g_sequence_insert_sorted_iter IA__g_sequence_insert_sorted_iter

extern __typeof (g_sequence_sort_changed) IA__g_sequence_sort_changed __attribute((visibility("hidden")));
#define g_sequence_sort_changed IA__g_sequence_sort_changed

extern __typeof (g_sequence_sort_changed_iter) IA__g_sequence_sort_changed_iter __attribute((visibility("hidden")));
#define g_sequence_sort_changed_iter IA__g_sequence_sort_changed_iter

extern __typeof (g_sequence_remove) IA__g_sequence_remove __attribute((visibility("hidden")));
#define g_sequence_remove IA__g_sequence_remove

extern __typeof (g_sequence_remove_range) IA__g_sequence_remove_range __attribute((visibility("hidden")));
#define g_sequence_remove_range IA__g_sequence_remove_range

extern __typeof (g_sequence_move_range) IA__g_sequence_move_range __attribute((visibility("hidden")));
#define g_sequence_move_range IA__g_sequence_move_range

extern __typeof (g_sequence_search) IA__g_sequence_search __attribute((visibility("hidden")));
#define g_sequence_search IA__g_sequence_search

extern __typeof (g_sequence_search_iter) IA__g_sequence_search_iter __attribute((visibility("hidden")));
#define g_sequence_search_iter IA__g_sequence_search_iter

extern __typeof (g_sequence_get) IA__g_sequence_get __attribute((visibility("hidden")));
#define g_sequence_get IA__g_sequence_get

extern __typeof (g_sequence_set) IA__g_sequence_set __attribute((visibility("hidden")));
#define g_sequence_set IA__g_sequence_set

extern __typeof (g_sequence_iter_is_begin) IA__g_sequence_iter_is_begin __attribute((visibility("hidden")));
#define g_sequence_iter_is_begin IA__g_sequence_iter_is_begin

extern __typeof (g_sequence_iter_is_end) IA__g_sequence_iter_is_end __attribute((visibility("hidden")));
#define g_sequence_iter_is_end IA__g_sequence_iter_is_end

extern __typeof (g_sequence_iter_next) IA__g_sequence_iter_next __attribute((visibility("hidden")));
#define g_sequence_iter_next IA__g_sequence_iter_next

extern __typeof (g_sequence_iter_prev) IA__g_sequence_iter_prev __attribute((visibility("hidden")));
#define g_sequence_iter_prev IA__g_sequence_iter_prev

extern __typeof (g_sequence_iter_get_position) IA__g_sequence_iter_get_position __attribute((visibility("hidden")));
#define g_sequence_iter_get_position IA__g_sequence_iter_get_position

extern __typeof (g_sequence_iter_move) IA__g_sequence_iter_move __attribute((visibility("hidden")));
#define g_sequence_iter_move IA__g_sequence_iter_move

extern __typeof (g_sequence_iter_get_sequence) IA__g_sequence_iter_get_sequence __attribute((visibility("hidden")));
#define g_sequence_iter_get_sequence IA__g_sequence_iter_get_sequence

extern __typeof (g_sequence_iter_compare) IA__g_sequence_iter_compare __attribute((visibility("hidden")));
#define g_sequence_iter_compare IA__g_sequence_iter_compare

extern __typeof (g_sequence_range_get_midpoint) IA__g_sequence_range_get_midpoint __attribute((visibility("hidden")));
#define g_sequence_range_get_midpoint IA__g_sequence_range_get_midpoint

#endif
#endif
#if IN_HEADER(__G_SHELL_H__)
#if IN_FILE(__G_SHELL_C__)
extern __typeof (g_shell_error_quark) IA__g_shell_error_quark __attribute((visibility("hidden")));
#define g_shell_error_quark IA__g_shell_error_quark

extern __typeof (g_shell_parse_argv) IA__g_shell_parse_argv __attribute((visibility("hidden")));
#define g_shell_parse_argv IA__g_shell_parse_argv

extern __typeof (g_shell_quote) IA__g_shell_quote __attribute((visibility("hidden")));
#define g_shell_quote IA__g_shell_quote

extern __typeof (g_shell_unquote) IA__g_shell_unquote __attribute((visibility("hidden")));
#define g_shell_unquote IA__g_shell_unquote

#endif
#endif
#if IN_HEADER(__G_SLIST_H__)
#if IN_FILE(__G_SLIST_C__)
extern __typeof (g_slist_alloc) IA__g_slist_alloc __attribute((visibility("hidden")));
#define g_slist_alloc IA__g_slist_alloc

extern __typeof (g_slist_append) IA__g_slist_append __attribute((visibility("hidden")));
#define g_slist_append IA__g_slist_append

extern __typeof (g_slist_concat) IA__g_slist_concat __attribute((visibility("hidden")));
#define g_slist_concat IA__g_slist_concat

extern __typeof (g_slist_copy) IA__g_slist_copy __attribute((visibility("hidden")));
#define g_slist_copy IA__g_slist_copy

extern __typeof (g_slist_delete_link) IA__g_slist_delete_link __attribute((visibility("hidden")));
#define g_slist_delete_link IA__g_slist_delete_link

extern __typeof (g_slist_find) IA__g_slist_find __attribute((visibility("hidden")));
#define g_slist_find IA__g_slist_find

extern __typeof (g_slist_find_custom) IA__g_slist_find_custom __attribute((visibility("hidden")));
#define g_slist_find_custom IA__g_slist_find_custom

extern __typeof (g_slist_foreach) IA__g_slist_foreach __attribute((visibility("hidden")));
#define g_slist_foreach IA__g_slist_foreach

extern __typeof (g_slist_free) IA__g_slist_free __attribute((visibility("hidden")));
#define g_slist_free IA__g_slist_free

extern __typeof (g_slist_free_1) IA__g_slist_free_1 __attribute((visibility("hidden")));
#define g_slist_free_1 IA__g_slist_free_1

extern __typeof (g_slist_index) IA__g_slist_index __attribute((visibility("hidden")));
#define g_slist_index IA__g_slist_index

extern __typeof (g_slist_insert) IA__g_slist_insert __attribute((visibility("hidden")));
#define g_slist_insert IA__g_slist_insert

extern __typeof (g_slist_insert_before) IA__g_slist_insert_before __attribute((visibility("hidden")));
#define g_slist_insert_before IA__g_slist_insert_before

extern __typeof (g_slist_insert_sorted) IA__g_slist_insert_sorted __attribute((visibility("hidden")));
#define g_slist_insert_sorted IA__g_slist_insert_sorted

extern __typeof (g_slist_insert_sorted_with_data) IA__g_slist_insert_sorted_with_data __attribute((visibility("hidden")));
#define g_slist_insert_sorted_with_data IA__g_slist_insert_sorted_with_data

extern __typeof (g_slist_last) IA__g_slist_last __attribute((visibility("hidden")));
#define g_slist_last IA__g_slist_last

extern __typeof (g_slist_length) IA__g_slist_length __attribute((visibility("hidden")));
#define g_slist_length IA__g_slist_length

extern __typeof (g_slist_nth) IA__g_slist_nth __attribute((visibility("hidden")));
#define g_slist_nth IA__g_slist_nth

extern __typeof (g_slist_nth_data) IA__g_slist_nth_data __attribute((visibility("hidden")));
#define g_slist_nth_data IA__g_slist_nth_data

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_slist_pop_allocator) IA__g_slist_pop_allocator __attribute((visibility("hidden")));
#define g_slist_pop_allocator IA__g_slist_pop_allocator

#endif
extern __typeof (g_slist_position) IA__g_slist_position __attribute((visibility("hidden")));
#define g_slist_position IA__g_slist_position

extern __typeof (g_slist_prepend) IA__g_slist_prepend __attribute((visibility("hidden")));
#define g_slist_prepend IA__g_slist_prepend

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_slist_push_allocator) IA__g_slist_push_allocator __attribute((visibility("hidden")));
#define g_slist_push_allocator IA__g_slist_push_allocator

#endif
extern __typeof (g_slist_remove) IA__g_slist_remove __attribute((visibility("hidden")));
#define g_slist_remove IA__g_slist_remove

extern __typeof (g_slist_remove_all) IA__g_slist_remove_all __attribute((visibility("hidden")));
#define g_slist_remove_all IA__g_slist_remove_all

extern __typeof (g_slist_remove_link) IA__g_slist_remove_link __attribute((visibility("hidden")));
#define g_slist_remove_link IA__g_slist_remove_link

extern __typeof (g_slist_reverse) IA__g_slist_reverse __attribute((visibility("hidden")));
#define g_slist_reverse IA__g_slist_reverse

extern __typeof (g_slist_sort) IA__g_slist_sort __attribute((visibility("hidden")));
#define g_slist_sort IA__g_slist_sort

extern __typeof (g_slist_sort_with_data) IA__g_slist_sort_with_data __attribute((visibility("hidden")));
#define g_slist_sort_with_data IA__g_slist_sort_with_data

#endif
#endif
#if IN_HEADER(__G_SPAWN_H__)
#if IN_FILE(__G_SPAWN_C__)
#ifndef _WIN64
extern __typeof (g_spawn_async) IA__g_spawn_async __attribute((visibility("hidden")));
#define g_spawn_async IA__g_spawn_async

extern __typeof (g_spawn_async_with_pipes) IA__g_spawn_async_with_pipes __attribute((visibility("hidden")));
#define g_spawn_async_with_pipes IA__g_spawn_async_with_pipes

#endif
extern __typeof (g_spawn_close_pid) IA__g_spawn_close_pid __attribute((visibility("hidden")));
#define g_spawn_close_pid IA__g_spawn_close_pid

#ifndef _WIN64
extern __typeof (g_spawn_command_line_async) IA__g_spawn_command_line_async __attribute((visibility("hidden")));
#define g_spawn_command_line_async IA__g_spawn_command_line_async

extern __typeof (g_spawn_command_line_sync) IA__g_spawn_command_line_sync __attribute((visibility("hidden")));
#define g_spawn_command_line_sync IA__g_spawn_command_line_sync

#endif
extern __typeof (g_spawn_error_quark) IA__g_spawn_error_quark __attribute((visibility("hidden")));
#define g_spawn_error_quark IA__g_spawn_error_quark

#ifndef _WIN64
extern __typeof (g_spawn_sync) IA__g_spawn_sync __attribute((visibility("hidden")));
#define g_spawn_sync IA__g_spawn_sync

#endif
#ifdef G_OS_WIN32
extern __typeof (g_spawn_async_utf8) IA__g_spawn_async_utf8 __attribute((visibility("hidden")));
#define g_spawn_async_utf8 IA__g_spawn_async_utf8

extern __typeof (g_spawn_async_with_pipes_utf8) IA__g_spawn_async_with_pipes_utf8 __attribute((visibility("hidden")));
#define g_spawn_async_with_pipes_utf8 IA__g_spawn_async_with_pipes_utf8

extern __typeof (g_spawn_command_line_async_utf8) IA__g_spawn_command_line_async_utf8 __attribute((visibility("hidden")));
#define g_spawn_command_line_async_utf8 IA__g_spawn_command_line_async_utf8

extern __typeof (g_spawn_command_line_sync_utf8) IA__g_spawn_command_line_sync_utf8 __attribute((visibility("hidden")));
#define g_spawn_command_line_sync_utf8 IA__g_spawn_command_line_sync_utf8

extern __typeof (g_spawn_sync_utf8) IA__g_spawn_sync_utf8 __attribute((visibility("hidden")));
#define g_spawn_sync_utf8 IA__g_spawn_sync_utf8

#endif
#endif
#endif
#if IN_HEADER(__G_STDIO_H__)
#if IN_FILE(__G_STDIO_C__)
#if !defined(G_OS_UNIX) || defined(G_STDIO_NO_WRAP_ON_UNIX)
extern __typeof (g_chmod) IA__g_chmod __attribute((visibility("hidden")));
#define g_chmod IA__g_chmod

extern __typeof (g_open) IA__g_open __attribute((visibility("hidden")));
#define g_open IA__g_open

extern __typeof (g_creat) IA__g_creat __attribute((visibility("hidden")));
#define g_creat IA__g_creat

extern __typeof (g_rename) IA__g_rename __attribute((visibility("hidden")));
#define g_rename IA__g_rename

extern __typeof (g_mkdir) IA__g_mkdir __attribute((visibility("hidden")));
#define g_mkdir IA__g_mkdir

extern __typeof (g_stat) IA__g_stat __attribute((visibility("hidden")));
#define g_stat IA__g_stat

extern __typeof (g_lstat) IA__g_lstat __attribute((visibility("hidden")));
#define g_lstat IA__g_lstat

extern __typeof (g_remove) IA__g_remove __attribute((visibility("hidden")));
#define g_remove IA__g_remove

extern __typeof (g_fopen) IA__g_fopen __attribute((visibility("hidden")));
#define g_fopen IA__g_fopen

extern __typeof (g_freopen) IA__g_freopen __attribute((visibility("hidden")));
#define g_freopen IA__g_freopen

extern __typeof (g_utime) IA__g_utime __attribute((visibility("hidden")));
#define g_utime IA__g_utime

#endif
extern __typeof (g_access) IA__g_access __attribute((visibility("hidden")));
#define g_access IA__g_access

extern __typeof (g_chdir) IA__g_chdir __attribute((visibility("hidden")));
#define g_chdir IA__g_chdir

extern __typeof (g_unlink) IA__g_unlink __attribute((visibility("hidden")));
#define g_unlink IA__g_unlink

extern __typeof (g_rmdir) IA__g_rmdir __attribute((visibility("hidden")));
#define g_rmdir IA__g_rmdir

#endif
#endif
#if IN_HEADER(__G_STRFUNCS_H__)
#if IN_FILE(__G_STRFUNCS_C__)
extern __typeof (g_ascii_digit_value) IA__g_ascii_digit_value __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_ascii_digit_value IA__g_ascii_digit_value

extern __typeof (g_ascii_dtostr) IA__g_ascii_dtostr __attribute((visibility("hidden")));
#define g_ascii_dtostr IA__g_ascii_dtostr

extern __typeof (g_ascii_formatd) IA__g_ascii_formatd __attribute((visibility("hidden")));
#define g_ascii_formatd IA__g_ascii_formatd

extern __typeof (g_ascii_strdown) IA__g_ascii_strdown __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_ascii_strdown IA__g_ascii_strdown

extern __typeof (g_ascii_strtod) IA__g_ascii_strtod __attribute((visibility("hidden")));
#define g_ascii_strtod IA__g_ascii_strtod

extern __typeof (g_ascii_strtoull) IA__g_ascii_strtoull __attribute((visibility("hidden")));
#define g_ascii_strtoull IA__g_ascii_strtoull

extern __typeof (g_ascii_strtoll) IA__g_ascii_strtoll __attribute((visibility("hidden")));
#define g_ascii_strtoll IA__g_ascii_strtoll

extern __typeof (g_ascii_strup) IA__g_ascii_strup __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_ascii_strup IA__g_ascii_strup

extern __typeof (g_ascii_tolower) IA__g_ascii_tolower __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_ascii_tolower IA__g_ascii_tolower

extern __typeof (g_ascii_toupper) IA__g_ascii_toupper __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_ascii_toupper IA__g_ascii_toupper

extern __typeof (g_ascii_xdigit_value) IA__g_ascii_xdigit_value __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_ascii_xdigit_value IA__g_ascii_xdigit_value

extern __typeof (g_ascii_strcasecmp) IA__g_ascii_strcasecmp __attribute((visibility("hidden")));
#define g_ascii_strcasecmp IA__g_ascii_strcasecmp

extern __typeof (g_ascii_strncasecmp) IA__g_ascii_strncasecmp __attribute((visibility("hidden")));
#define g_ascii_strncasecmp IA__g_ascii_strncasecmp

extern __typeof (g_memdup) IA__g_memdup __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_memdup IA__g_memdup

extern __typeof (g_stpcpy) IA__g_stpcpy __attribute((visibility("hidden")));
#define g_stpcpy IA__g_stpcpy

extern __typeof (g_strcanon) IA__g_strcanon __attribute((visibility("hidden")));
#define g_strcanon IA__g_strcanon

extern __typeof (g_strchomp) IA__g_strchomp __attribute((visibility("hidden")));
#define g_strchomp IA__g_strchomp

extern __typeof (g_strchug) IA__g_strchug __attribute((visibility("hidden")));
#define g_strchug IA__g_strchug

extern __typeof (g_strcompress) IA__g_strcompress __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_strcompress IA__g_strcompress

extern __typeof (g_strconcat) IA__g_strconcat __attribute((visibility("hidden"))) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
#define g_strconcat IA__g_strconcat

extern __typeof (g_strdelimit) IA__g_strdelimit __attribute((visibility("hidden")));
#define g_strdelimit IA__g_strdelimit

extern __typeof (g_strdup) IA__g_strdup __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_strdup IA__g_strdup

extern __typeof (g_strdup_printf) IA__g_strdup_printf __attribute((visibility("hidden"))) G_GNUC_PRINTF(1,2) G_GNUC_MALLOC;
#define g_strdup_printf IA__g_strdup_printf

extern __typeof (g_strdupv) IA__g_strdupv __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_strdupv IA__g_strdupv

extern __typeof (g_strdup_vprintf) IA__g_strdup_vprintf __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_strdup_vprintf IA__g_strdup_vprintf

extern __typeof (g_strerror) IA__g_strerror __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_strerror IA__g_strerror

extern __typeof (g_strescape) IA__g_strescape __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_strescape IA__g_strescape

extern __typeof (g_strfreev) IA__g_strfreev __attribute((visibility("hidden")));
#define g_strfreev IA__g_strfreev

extern __typeof (g_str_has_prefix) IA__g_str_has_prefix __attribute((visibility("hidden")));
#define g_str_has_prefix IA__g_str_has_prefix

extern __typeof (g_str_has_suffix) IA__g_str_has_suffix __attribute((visibility("hidden")));
#define g_str_has_suffix IA__g_str_has_suffix

extern __typeof (g_strjoin) IA__g_strjoin __attribute((visibility("hidden"))) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
#define g_strjoin IA__g_strjoin

extern __typeof (g_strjoinv) IA__g_strjoinv __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_strjoinv IA__g_strjoinv

extern __typeof (g_strlcat) IA__g_strlcat __attribute((visibility("hidden")));
#define g_strlcat IA__g_strlcat

extern __typeof (g_strlcpy) IA__g_strlcpy __attribute((visibility("hidden")));
#define g_strlcpy IA__g_strlcpy

extern __typeof (g_strndup) IA__g_strndup __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_strndup IA__g_strndup

extern __typeof (g_strnfill) IA__g_strnfill __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_strnfill IA__g_strnfill

extern __typeof (g_strreverse) IA__g_strreverse __attribute((visibility("hidden")));
#define g_strreverse IA__g_strreverse

extern __typeof (g_strrstr) IA__g_strrstr __attribute((visibility("hidden")));
#define g_strrstr IA__g_strrstr

extern __typeof (g_strrstr_len) IA__g_strrstr_len __attribute((visibility("hidden")));
#define g_strrstr_len IA__g_strrstr_len

extern __typeof (g_strsignal) IA__g_strsignal __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_strsignal IA__g_strsignal

extern __typeof (g_strsplit) IA__g_strsplit __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_strsplit IA__g_strsplit

extern __typeof (g_strsplit_set) IA__g_strsplit_set __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_strsplit_set IA__g_strsplit_set

extern __typeof (g_strstr_len) IA__g_strstr_len __attribute((visibility("hidden")));
#define g_strstr_len IA__g_strstr_len

extern __typeof (g_strtod) IA__g_strtod __attribute((visibility("hidden")));
#define g_strtod IA__g_strtod

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_strcasecmp) IA__g_strcasecmp __attribute((visibility("hidden")));
#define g_strcasecmp IA__g_strcasecmp

extern __typeof (g_strncasecmp) IA__g_strncasecmp __attribute((visibility("hidden")));
#define g_strncasecmp IA__g_strncasecmp

extern __typeof (g_strup) IA__g_strup __attribute((visibility("hidden")));
#define g_strup IA__g_strup

extern __typeof (g_strdown) IA__g_strdown __attribute((visibility("hidden")));
#define g_strdown IA__g_strdown

#endif
extern __typeof (g_strv_length) IA__g_strv_length __attribute((visibility("hidden")));
#define g_strv_length IA__g_strv_length

extern __typeof (g_strip_context) IA__g_strip_context __attribute((visibility("hidden"))) G_GNUC_FORMAT(1);
#define g_strip_context IA__g_strip_context

extern __typeof (g_dgettext) IA__g_dgettext __attribute((visibility("hidden"))) G_GNUC_FORMAT(2);
#define g_dgettext IA__g_dgettext

extern __typeof (g_dngettext) IA__g_dngettext __attribute((visibility("hidden"))) G_GNUC_FORMAT(3);
#define g_dngettext IA__g_dngettext

extern __typeof (g_dpgettext) IA__g_dpgettext __attribute((visibility("hidden"))) G_GNUC_FORMAT(2);
#define g_dpgettext IA__g_dpgettext

extern __typeof (g_dpgettext2) IA__g_dpgettext2 __attribute((visibility("hidden"))) G_GNUC_FORMAT(3);
#define g_dpgettext2 IA__g_dpgettext2

#endif
#endif
#if IN_HEADER(__G_URI_FUNCS_H__)
#if IN_FILE(__G_URI_FUNCS_C__)
extern __typeof (g_uri_unescape_string) IA__g_uri_unescape_string __attribute((visibility("hidden")));
#define g_uri_unescape_string IA__g_uri_unescape_string

extern __typeof (g_uri_unescape_segment) IA__g_uri_unescape_segment __attribute((visibility("hidden")));
#define g_uri_unescape_segment IA__g_uri_unescape_segment

extern __typeof (g_uri_parse_scheme) IA__g_uri_parse_scheme __attribute((visibility("hidden")));
#define g_uri_parse_scheme IA__g_uri_parse_scheme

extern __typeof (g_uri_escape_string) IA__g_uri_escape_string __attribute((visibility("hidden")));
#define g_uri_escape_string IA__g_uri_escape_string

#endif
#endif
#if IN_HEADER(__G_STRING_H__)
#if IN_FILE(__G_STRING_C__)
extern __typeof (g_string_append) IA__g_string_append __attribute((visibility("hidden")));
#define g_string_append IA__g_string_append

extern __typeof (g_string_append_len) IA__g_string_append_len __attribute((visibility("hidden")));
#define g_string_append_len IA__g_string_append_len

extern __typeof (g_string_append_printf) IA__g_string_append_printf __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
#define g_string_append_printf IA__g_string_append_printf

extern __typeof (g_string_append_unichar) IA__g_string_append_unichar __attribute((visibility("hidden")));
#define g_string_append_unichar IA__g_string_append_unichar

extern __typeof (g_string_append_vprintf) IA__g_string_append_vprintf __attribute((visibility("hidden")));
#define g_string_append_vprintf IA__g_string_append_vprintf

extern __typeof (g_string_ascii_down) IA__g_string_ascii_down __attribute((visibility("hidden")));
#define g_string_ascii_down IA__g_string_ascii_down

extern __typeof (g_string_ascii_up) IA__g_string_ascii_up __attribute((visibility("hidden")));
#define g_string_ascii_up IA__g_string_ascii_up

extern __typeof (g_string_assign) IA__g_string_assign __attribute((visibility("hidden")));
#define g_string_assign IA__g_string_assign

extern __typeof (g_string_chunk_free) IA__g_string_chunk_free __attribute((visibility("hidden")));
#define g_string_chunk_free IA__g_string_chunk_free

extern __typeof (g_string_chunk_clear) IA__g_string_chunk_clear __attribute((visibility("hidden")));
#define g_string_chunk_clear IA__g_string_chunk_clear

extern __typeof (g_string_chunk_insert) IA__g_string_chunk_insert __attribute((visibility("hidden")));
#define g_string_chunk_insert IA__g_string_chunk_insert

extern __typeof (g_string_chunk_insert_const) IA__g_string_chunk_insert_const __attribute((visibility("hidden")));
#define g_string_chunk_insert_const IA__g_string_chunk_insert_const

extern __typeof (g_string_chunk_insert_len) IA__g_string_chunk_insert_len __attribute((visibility("hidden")));
#define g_string_chunk_insert_len IA__g_string_chunk_insert_len

extern __typeof (g_string_chunk_new) IA__g_string_chunk_new __attribute((visibility("hidden")));
#define g_string_chunk_new IA__g_string_chunk_new

extern __typeof (g_string_equal) IA__g_string_equal __attribute((visibility("hidden")));
#define g_string_equal IA__g_string_equal

extern __typeof (g_string_erase) IA__g_string_erase __attribute((visibility("hidden")));
#define g_string_erase IA__g_string_erase

extern __typeof (g_string_free) IA__g_string_free __attribute((visibility("hidden")));
#define g_string_free IA__g_string_free

extern __typeof (g_string_hash) IA__g_string_hash __attribute((visibility("hidden")));
#define g_string_hash IA__g_string_hash

extern __typeof (g_string_insert) IA__g_string_insert __attribute((visibility("hidden")));
#define g_string_insert IA__g_string_insert

extern __typeof (g_string_insert_c) IA__g_string_insert_c __attribute((visibility("hidden")));
#define g_string_insert_c IA__g_string_insert_c

extern __typeof (g_string_insert_len) IA__g_string_insert_len __attribute((visibility("hidden")));
#define g_string_insert_len IA__g_string_insert_len

extern __typeof (g_string_insert_unichar) IA__g_string_insert_unichar __attribute((visibility("hidden")));
#define g_string_insert_unichar IA__g_string_insert_unichar

extern __typeof (g_string_new) IA__g_string_new __attribute((visibility("hidden")));
#define g_string_new IA__g_string_new

extern __typeof (g_string_new_len) IA__g_string_new_len __attribute((visibility("hidden")));
#define g_string_new_len IA__g_string_new_len

extern __typeof (g_string_overwrite) IA__g_string_overwrite __attribute((visibility("hidden")));
#define g_string_overwrite IA__g_string_overwrite

extern __typeof (g_string_overwrite_len) IA__g_string_overwrite_len __attribute((visibility("hidden")));
#define g_string_overwrite_len IA__g_string_overwrite_len

extern __typeof (g_string_prepend) IA__g_string_prepend __attribute((visibility("hidden")));
#define g_string_prepend IA__g_string_prepend

extern __typeof (g_string_prepend_c) IA__g_string_prepend_c __attribute((visibility("hidden")));
#define g_string_prepend_c IA__g_string_prepend_c

extern __typeof (g_string_prepend_len) IA__g_string_prepend_len __attribute((visibility("hidden")));
#define g_string_prepend_len IA__g_string_prepend_len

extern __typeof (g_string_prepend_unichar) IA__g_string_prepend_unichar __attribute((visibility("hidden")));
#define g_string_prepend_unichar IA__g_string_prepend_unichar

extern __typeof (g_string_printf) IA__g_string_printf __attribute((visibility("hidden"))) G_GNUC_PRINTF(2,3);
#define g_string_printf IA__g_string_printf

extern __typeof (g_string_set_size) IA__g_string_set_size __attribute((visibility("hidden")));
#define g_string_set_size IA__g_string_set_size

extern __typeof (g_string_sized_new) IA__g_string_sized_new __attribute((visibility("hidden")));
#define g_string_sized_new IA__g_string_sized_new

extern __typeof (g_string_truncate) IA__g_string_truncate __attribute((visibility("hidden")));
#define g_string_truncate IA__g_string_truncate

extern __typeof (g_string_append_uri_escaped) IA__g_string_append_uri_escaped __attribute((visibility("hidden")));
#define g_string_append_uri_escaped IA__g_string_append_uri_escaped

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_string_down) IA__g_string_down __attribute((visibility("hidden")));
#define g_string_down IA__g_string_down

extern __typeof (g_string_up) IA__g_string_up __attribute((visibility("hidden")));
#define g_string_up IA__g_string_up

#endif
extern __typeof (g_string_vprintf) IA__g_string_vprintf __attribute((visibility("hidden")));
#define g_string_vprintf IA__g_string_vprintf

#endif
#endif
#if IN_HEADER(__G_BITLOCK_H__)
#if IN_FILE(__G_BITLOCK_C__)
extern __typeof (g_bit_lock) IA__g_bit_lock __attribute((visibility("hidden")));
#define g_bit_lock IA__g_bit_lock

extern __typeof (g_bit_trylock) IA__g_bit_trylock __attribute((visibility("hidden")));
#define g_bit_trylock IA__g_bit_trylock

extern __typeof (g_bit_unlock) IA__g_bit_unlock __attribute((visibility("hidden")));
#define g_bit_unlock IA__g_bit_unlock

#endif
#endif
#if IN_HEADER(__G_THREAD_H__)
#if IN_FILE(__G_THREAD_C__)
extern __typeof (g_once_impl) IA__g_once_impl __attribute((visibility("hidden")));
#define g_once_impl IA__g_once_impl

extern __typeof (g_once_init_enter_impl) IA__g_once_init_enter_impl __attribute((visibility("hidden")));
#define g_once_init_enter_impl IA__g_once_init_enter_impl

extern __typeof (g_once_init_leave) IA__g_once_init_leave __attribute((visibility("hidden")));
#define g_once_init_leave IA__g_once_init_leave

extern __typeof (g_thread_create_full) IA__g_thread_create_full __attribute((visibility("hidden")));
#define g_thread_create_full IA__g_thread_create_full

extern __typeof (g_thread_error_quark) IA__g_thread_error_quark __attribute((visibility("hidden")));
#define g_thread_error_quark IA__g_thread_error_quark

extern __typeof (g_thread_exit) IA__g_thread_exit __attribute((visibility("hidden")));
#define g_thread_exit IA__g_thread_exit

extern __typeof (g_thread_join) IA__g_thread_join __attribute((visibility("hidden")));
#define g_thread_join IA__g_thread_join

extern __typeof (g_thread_self) IA__g_thread_self __attribute((visibility("hidden")));
#define g_thread_self IA__g_thread_self

extern __typeof (g_thread_set_priority) IA__g_thread_set_priority __attribute((visibility("hidden")));
#define g_thread_set_priority IA__g_thread_set_priority

extern __typeof (g_static_mutex_free) IA__g_static_mutex_free __attribute((visibility("hidden")));
#define g_static_mutex_free IA__g_static_mutex_free

extern __typeof (g_static_mutex_get_mutex_impl) IA__g_static_mutex_get_mutex_impl __attribute((visibility("hidden")));
#define g_static_mutex_get_mutex_impl IA__g_static_mutex_get_mutex_impl

extern __typeof (g_static_mutex_init) IA__g_static_mutex_init __attribute((visibility("hidden")));
#define g_static_mutex_init IA__g_static_mutex_init

extern __typeof (g_static_private_free) IA__g_static_private_free __attribute((visibility("hidden")));
#define g_static_private_free IA__g_static_private_free

extern __typeof (g_static_private_get) IA__g_static_private_get __attribute((visibility("hidden")));
#define g_static_private_get IA__g_static_private_get

extern __typeof (g_static_private_init) IA__g_static_private_init __attribute((visibility("hidden")));
#define g_static_private_init IA__g_static_private_init

extern __typeof (g_static_private_set) IA__g_static_private_set __attribute((visibility("hidden")));
#define g_static_private_set IA__g_static_private_set

extern __typeof (g_static_rec_mutex_free) IA__g_static_rec_mutex_free __attribute((visibility("hidden")));
#define g_static_rec_mutex_free IA__g_static_rec_mutex_free

extern __typeof (g_static_rec_mutex_init) IA__g_static_rec_mutex_init __attribute((visibility("hidden")));
#define g_static_rec_mutex_init IA__g_static_rec_mutex_init

extern __typeof (g_static_rec_mutex_lock) IA__g_static_rec_mutex_lock __attribute((visibility("hidden")));
#define g_static_rec_mutex_lock IA__g_static_rec_mutex_lock

extern __typeof (g_static_rec_mutex_lock_full) IA__g_static_rec_mutex_lock_full __attribute((visibility("hidden")));
#define g_static_rec_mutex_lock_full IA__g_static_rec_mutex_lock_full

extern __typeof (g_static_rec_mutex_trylock) IA__g_static_rec_mutex_trylock __attribute((visibility("hidden")));
#define g_static_rec_mutex_trylock IA__g_static_rec_mutex_trylock

extern __typeof (g_static_rec_mutex_unlock) IA__g_static_rec_mutex_unlock __attribute((visibility("hidden")));
#define g_static_rec_mutex_unlock IA__g_static_rec_mutex_unlock

extern __typeof (g_static_rec_mutex_unlock_full) IA__g_static_rec_mutex_unlock_full __attribute((visibility("hidden")));
#define g_static_rec_mutex_unlock_full IA__g_static_rec_mutex_unlock_full

extern __typeof (g_static_rw_lock_free) IA__g_static_rw_lock_free __attribute((visibility("hidden")));
#define g_static_rw_lock_free IA__g_static_rw_lock_free

extern __typeof (g_static_rw_lock_init) IA__g_static_rw_lock_init __attribute((visibility("hidden")));
#define g_static_rw_lock_init IA__g_static_rw_lock_init

extern __typeof (g_static_rw_lock_reader_lock) IA__g_static_rw_lock_reader_lock __attribute((visibility("hidden")));
#define g_static_rw_lock_reader_lock IA__g_static_rw_lock_reader_lock

extern __typeof (g_static_rw_lock_reader_trylock) IA__g_static_rw_lock_reader_trylock __attribute((visibility("hidden")));
#define g_static_rw_lock_reader_trylock IA__g_static_rw_lock_reader_trylock

extern __typeof (g_static_rw_lock_reader_unlock) IA__g_static_rw_lock_reader_unlock __attribute((visibility("hidden")));
#define g_static_rw_lock_reader_unlock IA__g_static_rw_lock_reader_unlock

extern __typeof (g_static_rw_lock_writer_lock) IA__g_static_rw_lock_writer_lock __attribute((visibility("hidden")));
#define g_static_rw_lock_writer_lock IA__g_static_rw_lock_writer_lock

extern __typeof (g_static_rw_lock_writer_trylock) IA__g_static_rw_lock_writer_trylock __attribute((visibility("hidden")));
#define g_static_rw_lock_writer_trylock IA__g_static_rw_lock_writer_trylock

extern __typeof (g_static_rw_lock_writer_unlock) IA__g_static_rw_lock_writer_unlock __attribute((visibility("hidden")));
#define g_static_rw_lock_writer_unlock IA__g_static_rw_lock_writer_unlock

extern __typeof (g_thread_foreach) IA__g_thread_foreach __attribute((visibility("hidden")));
#define g_thread_foreach IA__g_thread_foreach

extern __typeof (g_thread_get_initialized) IA__g_thread_get_initialized __attribute((visibility("hidden")));
#define g_thread_get_initialized IA__g_thread_get_initialized

#endif
#endif
#if IN_HEADER(__G_THREADPOOL_H__)
#if IN_FILE(__G_THREADPOOL_C__)
extern __typeof (g_thread_pool_free) IA__g_thread_pool_free __attribute((visibility("hidden")));
#define g_thread_pool_free IA__g_thread_pool_free

extern __typeof (g_thread_pool_get_max_threads) IA__g_thread_pool_get_max_threads __attribute((visibility("hidden")));
#define g_thread_pool_get_max_threads IA__g_thread_pool_get_max_threads

extern __typeof (g_thread_pool_get_max_unused_threads) IA__g_thread_pool_get_max_unused_threads __attribute((visibility("hidden")));
#define g_thread_pool_get_max_unused_threads IA__g_thread_pool_get_max_unused_threads

extern __typeof (g_thread_pool_get_max_idle_time) IA__g_thread_pool_get_max_idle_time __attribute((visibility("hidden")));
#define g_thread_pool_get_max_idle_time IA__g_thread_pool_get_max_idle_time

extern __typeof (g_thread_pool_get_num_threads) IA__g_thread_pool_get_num_threads __attribute((visibility("hidden")));
#define g_thread_pool_get_num_threads IA__g_thread_pool_get_num_threads

extern __typeof (g_thread_pool_get_num_unused_threads) IA__g_thread_pool_get_num_unused_threads __attribute((visibility("hidden")));
#define g_thread_pool_get_num_unused_threads IA__g_thread_pool_get_num_unused_threads

extern __typeof (g_thread_pool_new) IA__g_thread_pool_new __attribute((visibility("hidden")));
#define g_thread_pool_new IA__g_thread_pool_new

extern __typeof (g_thread_pool_push) IA__g_thread_pool_push __attribute((visibility("hidden")));
#define g_thread_pool_push IA__g_thread_pool_push

extern __typeof (g_thread_pool_set_max_threads) IA__g_thread_pool_set_max_threads __attribute((visibility("hidden")));
#define g_thread_pool_set_max_threads IA__g_thread_pool_set_max_threads

extern __typeof (g_thread_pool_set_max_unused_threads) IA__g_thread_pool_set_max_unused_threads __attribute((visibility("hidden")));
#define g_thread_pool_set_max_unused_threads IA__g_thread_pool_set_max_unused_threads

extern __typeof (g_thread_pool_set_max_idle_time) IA__g_thread_pool_set_max_idle_time __attribute((visibility("hidden")));
#define g_thread_pool_set_max_idle_time IA__g_thread_pool_set_max_idle_time

extern __typeof (g_thread_pool_stop_unused_threads) IA__g_thread_pool_stop_unused_threads __attribute((visibility("hidden")));
#define g_thread_pool_stop_unused_threads IA__g_thread_pool_stop_unused_threads

extern __typeof (g_thread_pool_unprocessed) IA__g_thread_pool_unprocessed __attribute((visibility("hidden")));
#define g_thread_pool_unprocessed IA__g_thread_pool_unprocessed

extern __typeof (g_thread_pool_set_sort_function) IA__g_thread_pool_set_sort_function __attribute((visibility("hidden")));
#define g_thread_pool_set_sort_function IA__g_thread_pool_set_sort_function

#endif
#endif
#if IN_HEADER(__G_TEST_UTILS_H__)
#if IN_FILE(__G_MESSAGES_C__)
extern __typeof (g_test_log_set_fatal_handler) IA__g_test_log_set_fatal_handler __attribute((visibility("hidden")));
#define g_test_log_set_fatal_handler IA__g_test_log_set_fatal_handler

#endif
#if IN_FILE(__G_TEST_UTILS_C__)
extern __typeof (g_assertion_message) IA__g_assertion_message __attribute((visibility("hidden"))) G_GNUC_NORETURN;
#define g_assertion_message IA__g_assertion_message

extern __typeof (g_assertion_message_cmpnum) IA__g_assertion_message_cmpnum __attribute((visibility("hidden"))) G_GNUC_NORETURN;
#define g_assertion_message_cmpnum IA__g_assertion_message_cmpnum

extern __typeof (g_assertion_message_cmpstr) IA__g_assertion_message_cmpstr __attribute((visibility("hidden"))) G_GNUC_NORETURN;
#define g_assertion_message_cmpstr IA__g_assertion_message_cmpstr

extern __typeof (g_assertion_message_expr) IA__g_assertion_message_expr __attribute((visibility("hidden"))) G_GNUC_NORETURN;
#define g_assertion_message_expr IA__g_assertion_message_expr

extern __typeof (g_assertion_message_error) IA__g_assertion_message_error __attribute((visibility("hidden"))) G_GNUC_NORETURN;
#define g_assertion_message_error IA__g_assertion_message_error

extern __typeof (g_strcmp0) IA__g_strcmp0 __attribute((visibility("hidden")));
#define g_strcmp0 IA__g_strcmp0

extern __typeof (g_test_add_data_func) IA__g_test_add_data_func __attribute((visibility("hidden")));
#define g_test_add_data_func IA__g_test_add_data_func

extern __typeof (g_test_add_func) IA__g_test_add_func __attribute((visibility("hidden")));
#define g_test_add_func IA__g_test_add_func

extern __typeof (g_test_add_vtable) IA__g_test_add_vtable __attribute((visibility("hidden")));
#define g_test_add_vtable IA__g_test_add_vtable

extern __typeof (g_test_bug) IA__g_test_bug __attribute((visibility("hidden")));
#define g_test_bug IA__g_test_bug

extern __typeof (g_test_bug_base) IA__g_test_bug_base __attribute((visibility("hidden")));
#define g_test_bug_base IA__g_test_bug_base

extern __typeof (g_test_create_case) IA__g_test_create_case __attribute((visibility("hidden")));
#define g_test_create_case IA__g_test_create_case

extern __typeof (g_test_create_suite) IA__g_test_create_suite __attribute((visibility("hidden")));
#define g_test_create_suite IA__g_test_create_suite

extern __typeof (g_test_get_root) IA__g_test_get_root __attribute((visibility("hidden")));
#define g_test_get_root IA__g_test_get_root

extern __typeof (g_test_init) IA__g_test_init __attribute((visibility("hidden")));
#define g_test_init IA__g_test_init

extern __typeof (g_test_log_buffer_free) IA__g_test_log_buffer_free __attribute((visibility("hidden")));
#define g_test_log_buffer_free IA__g_test_log_buffer_free

extern __typeof (g_test_log_buffer_new) IA__g_test_log_buffer_new __attribute((visibility("hidden")));
#define g_test_log_buffer_new IA__g_test_log_buffer_new

extern __typeof (g_test_log_buffer_pop) IA__g_test_log_buffer_pop __attribute((visibility("hidden")));
#define g_test_log_buffer_pop IA__g_test_log_buffer_pop

extern __typeof (g_test_log_buffer_push) IA__g_test_log_buffer_push __attribute((visibility("hidden")));
#define g_test_log_buffer_push IA__g_test_log_buffer_push

extern __typeof (g_test_log_msg_free) IA__g_test_log_msg_free __attribute((visibility("hidden")));
#define g_test_log_msg_free IA__g_test_log_msg_free

extern __typeof (g_test_log_type_name) IA__g_test_log_type_name __attribute((visibility("hidden")));
#define g_test_log_type_name IA__g_test_log_type_name

extern __typeof (g_test_maximized_result) IA__g_test_maximized_result __attribute((visibility("hidden")));
#define g_test_maximized_result IA__g_test_maximized_result

extern __typeof (g_test_message) IA__g_test_message __attribute((visibility("hidden")));
#define g_test_message IA__g_test_message

extern __typeof (g_test_minimized_result) IA__g_test_minimized_result __attribute((visibility("hidden")));
#define g_test_minimized_result IA__g_test_minimized_result

extern __typeof (g_test_queue_destroy) IA__g_test_queue_destroy __attribute((visibility("hidden")));
#define g_test_queue_destroy IA__g_test_queue_destroy

extern __typeof (g_test_queue_free) IA__g_test_queue_free __attribute((visibility("hidden")));
#define g_test_queue_free IA__g_test_queue_free

extern __typeof (g_test_rand_double) IA__g_test_rand_double __attribute((visibility("hidden")));
#define g_test_rand_double IA__g_test_rand_double

extern __typeof (g_test_rand_double_range) IA__g_test_rand_double_range __attribute((visibility("hidden")));
#define g_test_rand_double_range IA__g_test_rand_double_range

extern __typeof (g_test_rand_int) IA__g_test_rand_int __attribute((visibility("hidden")));
#define g_test_rand_int IA__g_test_rand_int

extern __typeof (g_test_rand_int_range) IA__g_test_rand_int_range __attribute((visibility("hidden")));
#define g_test_rand_int_range IA__g_test_rand_int_range

extern __typeof (g_test_run) IA__g_test_run __attribute((visibility("hidden")));
#define g_test_run IA__g_test_run

extern __typeof (g_test_run_suite) IA__g_test_run_suite __attribute((visibility("hidden")));
#define g_test_run_suite IA__g_test_run_suite

extern __typeof (g_test_suite_add) IA__g_test_suite_add __attribute((visibility("hidden")));
#define g_test_suite_add IA__g_test_suite_add

extern __typeof (g_test_suite_add_suite) IA__g_test_suite_add_suite __attribute((visibility("hidden")));
#define g_test_suite_add_suite IA__g_test_suite_add_suite

extern __typeof (g_test_timer_elapsed) IA__g_test_timer_elapsed __attribute((visibility("hidden")));
#define g_test_timer_elapsed IA__g_test_timer_elapsed

extern __typeof (g_test_timer_last) IA__g_test_timer_last __attribute((visibility("hidden")));
#define g_test_timer_last IA__g_test_timer_last

extern __typeof (g_test_timer_start) IA__g_test_timer_start __attribute((visibility("hidden")));
#define g_test_timer_start IA__g_test_timer_start

extern __typeof (g_test_trap_assertions) IA__g_test_trap_assertions __attribute((visibility("hidden")));
#define g_test_trap_assertions IA__g_test_trap_assertions

extern __typeof (g_test_trap_fork) IA__g_test_trap_fork __attribute((visibility("hidden")));
#define g_test_trap_fork IA__g_test_trap_fork

extern __typeof (g_test_trap_has_passed) IA__g_test_trap_has_passed __attribute((visibility("hidden")));
#define g_test_trap_has_passed IA__g_test_trap_has_passed

extern __typeof (g_test_trap_reached_timeout) IA__g_test_trap_reached_timeout __attribute((visibility("hidden")));
#define g_test_trap_reached_timeout IA__g_test_trap_reached_timeout

#endif
#endif
#if IN_HEADER(__G_TIMER_H__)
#if IN_FILE(__G_TIMER_C__)
extern __typeof (g_timer_continue) IA__g_timer_continue __attribute((visibility("hidden")));
#define g_timer_continue IA__g_timer_continue

extern __typeof (g_timer_destroy) IA__g_timer_destroy __attribute((visibility("hidden")));
#define g_timer_destroy IA__g_timer_destroy

extern __typeof (g_timer_elapsed) IA__g_timer_elapsed __attribute((visibility("hidden")));
#define g_timer_elapsed IA__g_timer_elapsed

extern __typeof (g_timer_new) IA__g_timer_new __attribute((visibility("hidden")));
#define g_timer_new IA__g_timer_new

extern __typeof (g_timer_reset) IA__g_timer_reset __attribute((visibility("hidden")));
#define g_timer_reset IA__g_timer_reset

extern __typeof (g_timer_start) IA__g_timer_start __attribute((visibility("hidden")));
#define g_timer_start IA__g_timer_start

extern __typeof (g_timer_stop) IA__g_timer_stop __attribute((visibility("hidden")));
#define g_timer_stop IA__g_timer_stop

extern __typeof (g_time_val_add) IA__g_time_val_add __attribute((visibility("hidden")));
#define g_time_val_add IA__g_time_val_add

extern __typeof (g_time_val_from_iso8601) IA__g_time_val_from_iso8601 __attribute((visibility("hidden")));
#define g_time_val_from_iso8601 IA__g_time_val_from_iso8601

extern __typeof (g_time_val_to_iso8601) IA__g_time_val_to_iso8601 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_time_val_to_iso8601 IA__g_time_val_to_iso8601

extern __typeof (g_usleep) IA__g_usleep __attribute((visibility("hidden")));
#define g_usleep IA__g_usleep

#endif
#endif
#if IN_HEADER(__G_TREE_H__)
#if IN_FILE(__G_TREE_C__)
extern __typeof (g_tree_destroy) IA__g_tree_destroy __attribute((visibility("hidden")));
#define g_tree_destroy IA__g_tree_destroy

extern __typeof (g_tree_foreach) IA__g_tree_foreach __attribute((visibility("hidden")));
#define g_tree_foreach IA__g_tree_foreach

extern __typeof (g_tree_height) IA__g_tree_height __attribute((visibility("hidden")));
#define g_tree_height IA__g_tree_height

extern __typeof (g_tree_insert) IA__g_tree_insert __attribute((visibility("hidden")));
#define g_tree_insert IA__g_tree_insert

extern __typeof (g_tree_lookup) IA__g_tree_lookup __attribute((visibility("hidden")));
#define g_tree_lookup IA__g_tree_lookup

extern __typeof (g_tree_lookup_extended) IA__g_tree_lookup_extended __attribute((visibility("hidden")));
#define g_tree_lookup_extended IA__g_tree_lookup_extended

extern __typeof (g_tree_new) IA__g_tree_new __attribute((visibility("hidden")));
#define g_tree_new IA__g_tree_new

extern __typeof (g_tree_ref) IA__g_tree_ref __attribute((visibility("hidden")));
#define g_tree_ref IA__g_tree_ref

extern __typeof (g_tree_unref) IA__g_tree_unref __attribute((visibility("hidden")));
#define g_tree_unref IA__g_tree_unref

extern __typeof (g_tree_new_full) IA__g_tree_new_full __attribute((visibility("hidden")));
#define g_tree_new_full IA__g_tree_new_full

extern __typeof (g_tree_new_with_data) IA__g_tree_new_with_data __attribute((visibility("hidden")));
#define g_tree_new_with_data IA__g_tree_new_with_data

extern __typeof (g_tree_nnodes) IA__g_tree_nnodes __attribute((visibility("hidden")));
#define g_tree_nnodes IA__g_tree_nnodes

extern __typeof (g_tree_remove) IA__g_tree_remove __attribute((visibility("hidden")));
#define g_tree_remove IA__g_tree_remove

extern __typeof (g_tree_replace) IA__g_tree_replace __attribute((visibility("hidden")));
#define g_tree_replace IA__g_tree_replace

extern __typeof (g_tree_search) IA__g_tree_search __attribute((visibility("hidden")));
#define g_tree_search IA__g_tree_search

extern __typeof (g_tree_steal) IA__g_tree_steal __attribute((visibility("hidden")));
#define g_tree_steal IA__g_tree_steal

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_tree_traverse) IA__g_tree_traverse __attribute((visibility("hidden")));
#define g_tree_traverse IA__g_tree_traverse

#endif
#endif
#endif
#if IN_HEADER(__G_UNICODE_H__)
#if IN_FILE(__G_UNIBREAK_C__)
extern __typeof (g_unichar_break_type) IA__g_unichar_break_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_break_type IA__g_unichar_break_type

#endif
#endif
#if IN_HEADER(__G_UNICODE_H__)
#if IN_FILE(__G_UNICOLLATE_C__)
extern __typeof (g_utf8_collate) IA__g_utf8_collate __attribute((visibility("hidden")));
#define g_utf8_collate IA__g_utf8_collate

extern __typeof (g_utf8_collate_key) IA__g_utf8_collate_key __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_utf8_collate_key IA__g_utf8_collate_key

extern __typeof (g_utf8_collate_key_for_filename) IA__g_utf8_collate_key_for_filename __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_utf8_collate_key_for_filename IA__g_utf8_collate_key_for_filename

#endif
#endif
#if IN_HEADER(__G_UNICODE_H__)
#if IN_FILE(__G_UNIDECOMP_C__)
extern __typeof (g_unicode_canonical_decomposition) IA__g_unicode_canonical_decomposition __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_unicode_canonical_decomposition IA__g_unicode_canonical_decomposition

extern __typeof (g_unicode_canonical_ordering) IA__g_unicode_canonical_ordering __attribute((visibility("hidden")));
#define g_unicode_canonical_ordering IA__g_unicode_canonical_ordering

extern __typeof (g_unichar_combining_class) IA__g_unichar_combining_class __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_combining_class IA__g_unichar_combining_class

extern __typeof (g_utf8_normalize) IA__g_utf8_normalize __attribute((visibility("hidden")));
#define g_utf8_normalize IA__g_utf8_normalize

#endif
#endif
#if IN_HEADER(__G_UNICODE_H__)
#if IN_FILE(__G_UNIPROP_C__)
extern __typeof (g_unichar_isalnum) IA__g_unichar_isalnum __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_isalnum IA__g_unichar_isalnum

extern __typeof (g_unichar_isalpha) IA__g_unichar_isalpha __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_isalpha IA__g_unichar_isalpha

extern __typeof (g_unichar_iscntrl) IA__g_unichar_iscntrl __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_iscntrl IA__g_unichar_iscntrl

extern __typeof (g_unichar_isdefined) IA__g_unichar_isdefined __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_isdefined IA__g_unichar_isdefined

extern __typeof (g_unichar_isdigit) IA__g_unichar_isdigit __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_isdigit IA__g_unichar_isdigit

extern __typeof (g_unichar_isgraph) IA__g_unichar_isgraph __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_isgraph IA__g_unichar_isgraph

extern __typeof (g_unichar_islower) IA__g_unichar_islower __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_islower IA__g_unichar_islower

extern __typeof (g_unichar_isprint) IA__g_unichar_isprint __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_isprint IA__g_unichar_isprint

extern __typeof (g_unichar_ispunct) IA__g_unichar_ispunct __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_ispunct IA__g_unichar_ispunct

extern __typeof (g_unichar_isspace) IA__g_unichar_isspace __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_isspace IA__g_unichar_isspace

extern __typeof (g_unichar_istitle) IA__g_unichar_istitle __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_istitle IA__g_unichar_istitle

extern __typeof (g_unichar_isupper) IA__g_unichar_isupper __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_isupper IA__g_unichar_isupper

extern __typeof (g_unichar_iswide) IA__g_unichar_iswide __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_iswide IA__g_unichar_iswide

extern __typeof (g_unichar_iswide_cjk) IA__g_unichar_iswide_cjk __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_iswide_cjk IA__g_unichar_iswide_cjk

extern __typeof (g_unichar_isxdigit) IA__g_unichar_isxdigit __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_isxdigit IA__g_unichar_isxdigit

extern __typeof (g_unichar_iszerowidth) IA__g_unichar_iszerowidth __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_iszerowidth IA__g_unichar_iszerowidth

extern __typeof (g_unichar_tolower) IA__g_unichar_tolower __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_tolower IA__g_unichar_tolower

extern __typeof (g_unichar_totitle) IA__g_unichar_totitle __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_totitle IA__g_unichar_totitle

extern __typeof (g_unichar_toupper) IA__g_unichar_toupper __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_toupper IA__g_unichar_toupper

extern __typeof (g_unichar_ismark) IA__g_unichar_ismark __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_ismark IA__g_unichar_ismark

extern __typeof (g_unichar_get_mirror_char) IA__g_unichar_get_mirror_char __attribute((visibility("hidden")));
#define g_unichar_get_mirror_char IA__g_unichar_get_mirror_char

extern __typeof (g_unichar_get_script) IA__g_unichar_get_script __attribute((visibility("hidden")));
#define g_unichar_get_script IA__g_unichar_get_script

extern __typeof (g_unichar_digit_value) IA__g_unichar_digit_value __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_digit_value IA__g_unichar_digit_value

extern __typeof (g_unichar_xdigit_value) IA__g_unichar_xdigit_value __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_xdigit_value IA__g_unichar_xdigit_value

extern __typeof (g_unichar_type) IA__g_unichar_type __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_unichar_type IA__g_unichar_type

extern __typeof (g_utf8_casefold) IA__g_utf8_casefold __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_utf8_casefold IA__g_utf8_casefold

extern __typeof (g_utf8_strup) IA__g_utf8_strup __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_utf8_strup IA__g_utf8_strup

extern __typeof (g_utf8_strdown) IA__g_utf8_strdown __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_utf8_strdown IA__g_utf8_strdown

#endif
#endif
#if IN_HEADER(__G_UNICODE_H__)
#if IN_FILE(__G_UTF8_C__)
extern __typeof (g_get_charset) IA__g_get_charset __attribute((visibility("hidden")));
#define g_get_charset IA__g_get_charset

extern __typeof (g_ucs4_to_utf16) IA__g_ucs4_to_utf16 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_ucs4_to_utf16 IA__g_ucs4_to_utf16

extern __typeof (g_ucs4_to_utf8) IA__g_ucs4_to_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_ucs4_to_utf8 IA__g_ucs4_to_utf8

extern __typeof (g_utf16_to_ucs4) IA__g_utf16_to_ucs4 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_utf16_to_ucs4 IA__g_utf16_to_ucs4

extern __typeof (g_utf16_to_utf8) IA__g_utf16_to_utf8 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_utf16_to_utf8 IA__g_utf16_to_utf8

extern __typeof (g_utf8_find_next_char) IA__g_utf8_find_next_char __attribute((visibility("hidden")));
#define g_utf8_find_next_char IA__g_utf8_find_next_char

extern __typeof (g_utf8_find_prev_char) IA__g_utf8_find_prev_char __attribute((visibility("hidden")));
#define g_utf8_find_prev_char IA__g_utf8_find_prev_char

extern __typeof (g_utf8_get_char) IA__g_utf8_get_char __attribute((visibility("hidden")));
#define g_utf8_get_char IA__g_utf8_get_char

extern __typeof (g_utf8_get_char_validated) IA__g_utf8_get_char_validated __attribute((visibility("hidden")));
#define g_utf8_get_char_validated IA__g_utf8_get_char_validated

extern __typeof (g_utf8_offset_to_pointer) IA__g_utf8_offset_to_pointer __attribute((visibility("hidden")));
#define g_utf8_offset_to_pointer IA__g_utf8_offset_to_pointer

extern __typeof (g_utf8_pointer_to_offset) IA__g_utf8_pointer_to_offset __attribute((visibility("hidden")));
#define g_utf8_pointer_to_offset IA__g_utf8_pointer_to_offset

extern __typeof (g_utf8_prev_char) IA__g_utf8_prev_char __attribute((visibility("hidden")));
#define g_utf8_prev_char IA__g_utf8_prev_char

extern __typeof (g_utf8_strchr) IA__g_utf8_strchr __attribute((visibility("hidden")));
#define g_utf8_strchr IA__g_utf8_strchr

extern __typeof (g_utf8_strlen) IA__g_utf8_strlen __attribute((visibility("hidden")));
#define g_utf8_strlen IA__g_utf8_strlen

extern __typeof (g_utf8_strncpy) IA__g_utf8_strncpy __attribute((visibility("hidden")));
#define g_utf8_strncpy IA__g_utf8_strncpy

extern __typeof (g_utf8_strrchr) IA__g_utf8_strrchr __attribute((visibility("hidden")));
#define g_utf8_strrchr IA__g_utf8_strrchr

extern __typeof (g_utf8_strreverse) IA__g_utf8_strreverse __attribute((visibility("hidden")));
#define g_utf8_strreverse IA__g_utf8_strreverse

extern __typeof (g_utf8_to_ucs4) IA__g_utf8_to_ucs4 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_utf8_to_ucs4 IA__g_utf8_to_ucs4

extern __typeof (g_utf8_to_ucs4_fast) IA__g_utf8_to_ucs4_fast __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_utf8_to_ucs4_fast IA__g_utf8_to_ucs4_fast

extern __typeof (g_utf8_to_utf16) IA__g_utf8_to_utf16 __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_utf8_to_utf16 IA__g_utf8_to_utf16

extern __typeof (g_utf8_validate) IA__g_utf8_validate __attribute((visibility("hidden")));
#define g_utf8_validate IA__g_utf8_validate

extern __typeof (g_unichar_to_utf8) IA__g_unichar_to_utf8 __attribute((visibility("hidden")));
#define g_unichar_to_utf8 IA__g_unichar_to_utf8

extern __typeof (g_unichar_validate) IA__g_unichar_validate __attribute((visibility("hidden")));
#define g_unichar_validate IA__g_unichar_validate

#endif
#endif
#if IN_HEADER(__GLIBINTL_H__)
#if IN_FILE(__G_UTILS_C__)
extern __typeof (glib_gettext) IA__glib_gettext __attribute((visibility("hidden"))) G_GNUC_FORMAT(1);
#define glib_gettext IA__glib_gettext

#endif
#endif
#if IN_HEADER(__G_HASH_H__)
#if IN_FILE(__G_UTILS_C__)
extern __typeof (g_int_equal) IA__g_int_equal __attribute((visibility("hidden")));
#define g_int_equal IA__g_int_equal

extern __typeof (g_int_hash) IA__g_int_hash __attribute((visibility("hidden")));
#define g_int_hash IA__g_int_hash

extern __typeof (g_int64_equal) IA__g_int64_equal __attribute((visibility("hidden")));
#define g_int64_equal IA__g_int64_equal

extern __typeof (g_int64_hash) IA__g_int64_hash __attribute((visibility("hidden")));
#define g_int64_hash IA__g_int64_hash

extern __typeof (g_double_equal) IA__g_double_equal __attribute((visibility("hidden")));
#define g_double_equal IA__g_double_equal

extern __typeof (g_double_hash) IA__g_double_hash __attribute((visibility("hidden")));
#define g_double_hash IA__g_double_hash

extern __typeof (g_direct_equal) IA__g_direct_equal __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_direct_equal IA__g_direct_equal

extern __typeof (g_direct_hash) IA__g_direct_hash __attribute((visibility("hidden"))) G_GNUC_CONST;
#define g_direct_hash IA__g_direct_hash

#endif
#if IN_FILE(__G_STRING_C__)
extern __typeof (g_str_equal) IA__g_str_equal __attribute((visibility("hidden")));
#define g_str_equal IA__g_str_equal

extern __typeof (g_str_hash) IA__g_str_hash __attribute((visibility("hidden")));
#define g_str_hash IA__g_str_hash

#endif
#endif
#if IN_HEADER(__G_UTILS_H__)
#if IN_FILE(__G_UTILS_C__)
extern __typeof (g_atexit) IA__g_atexit __attribute((visibility("hidden")));
#define g_atexit IA__g_atexit

#ifndef G_DISABLE_DEPRECATED
extern __typeof (g_basename) IA__g_basename __attribute((visibility("hidden")));
#define g_basename IA__g_basename

#endif
extern __typeof (g_get_application_name) IA__g_get_application_name __attribute((visibility("hidden")));
#define g_get_application_name IA__g_get_application_name

#ifndef _WIN64
extern __typeof (g_find_program_in_path) IA__g_find_program_in_path __attribute((visibility("hidden")));
#define g_find_program_in_path IA__g_find_program_in_path

extern __typeof (g_get_current_dir) IA__g_get_current_dir __attribute((visibility("hidden")));
#define g_get_current_dir IA__g_get_current_dir

extern __typeof (g_getenv) IA__g_getenv __attribute((visibility("hidden")));
#define g_getenv IA__g_getenv

extern __typeof (g_unsetenv) IA__g_unsetenv __attribute((visibility("hidden")));
#define g_unsetenv IA__g_unsetenv

extern __typeof (g_get_home_dir) IA__g_get_home_dir __attribute((visibility("hidden")));
#define g_get_home_dir IA__g_get_home_dir

#endif
extern __typeof (g_get_host_name) IA__g_get_host_name __attribute((visibility("hidden")));
#define g_get_host_name IA__g_get_host_name

#ifndef _WIN64
extern __typeof (g_setenv) IA__g_setenv __attribute((visibility("hidden")));
#define g_setenv IA__g_setenv

#endif
extern __typeof (g_listenv) IA__g_listenv __attribute((visibility("hidden")));
#define g_listenv IA__g_listenv

#ifdef G_OS_WIN32
extern __typeof (g_find_program_in_path_utf8) IA__g_find_program_in_path_utf8 __attribute((visibility("hidden")));
#define g_find_program_in_path_utf8 IA__g_find_program_in_path_utf8

extern __typeof (g_get_current_dir_utf8) IA__g_get_current_dir_utf8 __attribute((visibility("hidden")));
#define g_get_current_dir_utf8 IA__g_get_current_dir_utf8

extern __typeof (g_getenv_utf8) IA__g_getenv_utf8 __attribute((visibility("hidden")));
#define g_getenv_utf8 IA__g_getenv_utf8

extern __typeof (g_unsetenv_utf8) IA__g_unsetenv_utf8 __attribute((visibility("hidden")));
#define g_unsetenv_utf8 IA__g_unsetenv_utf8

extern __typeof (g_setenv_utf8) IA__g_setenv_utf8 __attribute((visibility("hidden")));
#define g_setenv_utf8 IA__g_setenv_utf8

extern __typeof (g_get_home_dir_utf8) IA__g_get_home_dir_utf8 __attribute((visibility("hidden")));
#define g_get_home_dir_utf8 IA__g_get_home_dir_utf8

#endif
extern __typeof (g_get_language_names) IA__g_get_language_names __attribute((visibility("hidden")));
#define g_get_language_names IA__g_get_language_names

extern __typeof (g_get_prgname) IA__g_get_prgname __attribute((visibility("hidden")));
#define g_get_prgname IA__g_get_prgname

#ifndef _WIN64
extern __typeof (g_get_real_name) IA__g_get_real_name __attribute((visibility("hidden")));
#define g_get_real_name IA__g_get_real_name

#endif
#ifdef G_OS_WIN32
extern __typeof (g_get_real_name_utf8) IA__g_get_real_name_utf8 __attribute((visibility("hidden")));
#define g_get_real_name_utf8 IA__g_get_real_name_utf8

#endif
extern __typeof (g_get_system_config_dirs) IA__g_get_system_config_dirs __attribute((visibility("hidden")));
#define g_get_system_config_dirs IA__g_get_system_config_dirs

extern __typeof (g_get_system_data_dirs) IA__g_get_system_data_dirs __attribute((visibility("hidden")));
#define g_get_system_data_dirs IA__g_get_system_data_dirs

#ifdef G_OS_WIN32
extern __typeof (g_win32_get_system_data_dirs_for_module) IA__g_win32_get_system_data_dirs_for_module __attribute((visibility("hidden")));
#define g_win32_get_system_data_dirs_for_module IA__g_win32_get_system_data_dirs_for_module

#endif
#ifndef _WIN64
extern __typeof (g_get_tmp_dir) IA__g_get_tmp_dir __attribute((visibility("hidden")));
#define g_get_tmp_dir IA__g_get_tmp_dir

#endif
#ifdef G_OS_WIN32
extern __typeof (g_get_tmp_dir_utf8) IA__g_get_tmp_dir_utf8 __attribute((visibility("hidden")));
#define g_get_tmp_dir_utf8 IA__g_get_tmp_dir_utf8

#endif
extern __typeof (g_get_user_cache_dir) IA__g_get_user_cache_dir __attribute((visibility("hidden")));
#define g_get_user_cache_dir IA__g_get_user_cache_dir

extern __typeof (g_get_user_config_dir) IA__g_get_user_config_dir __attribute((visibility("hidden")));
#define g_get_user_config_dir IA__g_get_user_config_dir

extern __typeof (g_get_user_data_dir) IA__g_get_user_data_dir __attribute((visibility("hidden")));
#define g_get_user_data_dir IA__g_get_user_data_dir

extern __typeof (g_reload_user_special_dirs_cache) IA__g_reload_user_special_dirs_cache __attribute((visibility("hidden")));
#define g_reload_user_special_dirs_cache IA__g_reload_user_special_dirs_cache

extern __typeof (g_get_user_special_dir) IA__g_get_user_special_dir __attribute((visibility("hidden")));
#define g_get_user_special_dir IA__g_get_user_special_dir

#ifndef _WIN64
extern __typeof (g_get_user_name) IA__g_get_user_name __attribute((visibility("hidden")));
#define g_get_user_name IA__g_get_user_name

#endif
#ifdef G_OS_WIN32
extern __typeof (g_get_user_name_utf8) IA__g_get_user_name_utf8 __attribute((visibility("hidden")));
#define g_get_user_name_utf8 IA__g_get_user_name_utf8

#endif
extern __typeof (glib_check_version) IA__glib_check_version __attribute((visibility("hidden")));
#define glib_check_version IA__glib_check_version

extern __typeof (g_nullify_pointer) IA__g_nullify_pointer __attribute((visibility("hidden")));
#define g_nullify_pointer IA__g_nullify_pointer

extern __typeof (g_parse_debug_string) IA__g_parse_debug_string __attribute((visibility("hidden")));
#define g_parse_debug_string IA__g_parse_debug_string

extern __typeof (g_path_get_basename) IA__g_path_get_basename __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_path_get_basename IA__g_path_get_basename

extern __typeof (g_path_get_dirname) IA__g_path_get_dirname __attribute((visibility("hidden"))) G_GNUC_MALLOC;
#define g_path_get_dirname IA__g_path_get_dirname

extern __typeof (g_path_is_absolute) IA__g_path_is_absolute __attribute((visibility("hidden")));
#define g_path_is_absolute IA__g_path_is_absolute

extern __typeof (g_path_skip_root) IA__g_path_skip_root __attribute((visibility("hidden")));
#define g_path_skip_root IA__g_path_skip_root

extern __typeof (g_set_application_name) IA__g_set_application_name __attribute((visibility("hidden")));
#define g_set_application_name IA__g_set_application_name

extern __typeof (g_set_prgname) IA__g_set_prgname __attribute((visibility("hidden")));
#define g_set_prgname IA__g_set_prgname

#endif
#endif
#if IN_HEADER(__G_REGEX_H__)
#if IN_FILE(__G_REGEX_C__)
extern __typeof (g_regex_error_quark) IA__g_regex_error_quark __attribute((visibility("hidden")));
#define g_regex_error_quark IA__g_regex_error_quark

extern __typeof (g_regex_new) IA__g_regex_new __attribute((visibility("hidden")));
#define g_regex_new IA__g_regex_new

extern __typeof (g_regex_ref) IA__g_regex_ref __attribute((visibility("hidden")));
#define g_regex_ref IA__g_regex_ref

extern __typeof (g_regex_unref) IA__g_regex_unref __attribute((visibility("hidden")));
#define g_regex_unref IA__g_regex_unref

extern __typeof (g_regex_get_pattern) IA__g_regex_get_pattern __attribute((visibility("hidden")));
#define g_regex_get_pattern IA__g_regex_get_pattern

extern __typeof (g_regex_get_max_backref) IA__g_regex_get_max_backref __attribute((visibility("hidden")));
#define g_regex_get_max_backref IA__g_regex_get_max_backref

extern __typeof (g_regex_get_capture_count) IA__g_regex_get_capture_count __attribute((visibility("hidden")));
#define g_regex_get_capture_count IA__g_regex_get_capture_count

extern __typeof (g_regex_get_string_number) IA__g_regex_get_string_number __attribute((visibility("hidden")));
#define g_regex_get_string_number IA__g_regex_get_string_number

extern __typeof (g_regex_escape_string) IA__g_regex_escape_string __attribute((visibility("hidden")));
#define g_regex_escape_string IA__g_regex_escape_string

extern __typeof (g_regex_match_simple) IA__g_regex_match_simple __attribute((visibility("hidden")));
#define g_regex_match_simple IA__g_regex_match_simple

extern __typeof (g_regex_match) IA__g_regex_match __attribute((visibility("hidden")));
#define g_regex_match IA__g_regex_match

extern __typeof (g_regex_match_full) IA__g_regex_match_full __attribute((visibility("hidden")));
#define g_regex_match_full IA__g_regex_match_full

extern __typeof (g_regex_match_all) IA__g_regex_match_all __attribute((visibility("hidden")));
#define g_regex_match_all IA__g_regex_match_all

extern __typeof (g_regex_match_all_full) IA__g_regex_match_all_full __attribute((visibility("hidden")));
#define g_regex_match_all_full IA__g_regex_match_all_full

extern __typeof (g_regex_split_simple) IA__g_regex_split_simple __attribute((visibility("hidden")));
#define g_regex_split_simple IA__g_regex_split_simple

extern __typeof (g_regex_split) IA__g_regex_split __attribute((visibility("hidden")));
#define g_regex_split IA__g_regex_split

extern __typeof (g_regex_split_full) IA__g_regex_split_full __attribute((visibility("hidden")));
#define g_regex_split_full IA__g_regex_split_full

extern __typeof (g_regex_replace) IA__g_regex_replace __attribute((visibility("hidden")));
#define g_regex_replace IA__g_regex_replace

extern __typeof (g_regex_replace_literal) IA__g_regex_replace_literal __attribute((visibility("hidden")));
#define g_regex_replace_literal IA__g_regex_replace_literal

extern __typeof (g_regex_replace_eval) IA__g_regex_replace_eval __attribute((visibility("hidden")));
#define g_regex_replace_eval IA__g_regex_replace_eval

extern __typeof (g_regex_check_replacement) IA__g_regex_check_replacement __attribute((visibility("hidden")));
#define g_regex_check_replacement IA__g_regex_check_replacement

extern __typeof (g_match_info_get_regex) IA__g_match_info_get_regex __attribute((visibility("hidden")));
#define g_match_info_get_regex IA__g_match_info_get_regex

extern __typeof (g_match_info_get_string) IA__g_match_info_get_string __attribute((visibility("hidden")));
#define g_match_info_get_string IA__g_match_info_get_string

extern __typeof (g_match_info_free) IA__g_match_info_free __attribute((visibility("hidden")));
#define g_match_info_free IA__g_match_info_free

extern __typeof (g_match_info_next) IA__g_match_info_next __attribute((visibility("hidden")));
#define g_match_info_next IA__g_match_info_next

extern __typeof (g_match_info_matches) IA__g_match_info_matches __attribute((visibility("hidden")));
#define g_match_info_matches IA__g_match_info_matches

extern __typeof (g_match_info_get_match_count) IA__g_match_info_get_match_count __attribute((visibility("hidden")));
#define g_match_info_get_match_count IA__g_match_info_get_match_count

extern __typeof (g_match_info_is_partial_match) IA__g_match_info_is_partial_match __attribute((visibility("hidden")));
#define g_match_info_is_partial_match IA__g_match_info_is_partial_match

extern __typeof (g_match_info_expand_references) IA__g_match_info_expand_references __attribute((visibility("hidden")));
#define g_match_info_expand_references IA__g_match_info_expand_references

extern __typeof (g_match_info_fetch) IA__g_match_info_fetch __attribute((visibility("hidden")));
#define g_match_info_fetch IA__g_match_info_fetch

extern __typeof (g_match_info_fetch_pos) IA__g_match_info_fetch_pos __attribute((visibility("hidden")));
#define g_match_info_fetch_pos IA__g_match_info_fetch_pos

extern __typeof (g_match_info_fetch_named) IA__g_match_info_fetch_named __attribute((visibility("hidden")));
#define g_match_info_fetch_named IA__g_match_info_fetch_named

extern __typeof (g_match_info_fetch_named_pos) IA__g_match_info_fetch_named_pos __attribute((visibility("hidden")));
#define g_match_info_fetch_named_pos IA__g_match_info_fetch_named_pos

extern __typeof (g_match_info_fetch_all) IA__g_match_info_fetch_all __attribute((visibility("hidden")));
#define g_match_info_fetch_all IA__g_match_info_fetch_all

#endif
#endif
#if IN_HEADER(__G_VARIANT_TYPE_H__)
#if IN_FILE(__G_VARIANT_TYPE_C__)
extern __typeof (g_variant_type_string_is_valid) IA__g_variant_type_string_is_valid __attribute((visibility("hidden")));
#define g_variant_type_string_is_valid IA__g_variant_type_string_is_valid

extern __typeof (g_variant_type_string_scan) IA__g_variant_type_string_scan __attribute((visibility("hidden")));
#define g_variant_type_string_scan IA__g_variant_type_string_scan

extern __typeof (g_variant_type_free) IA__g_variant_type_free __attribute((visibility("hidden")));
#define g_variant_type_free IA__g_variant_type_free

extern __typeof (g_variant_type_copy) IA__g_variant_type_copy __attribute((visibility("hidden")));
#define g_variant_type_copy IA__g_variant_type_copy

extern __typeof (g_variant_type_new) IA__g_variant_type_new __attribute((visibility("hidden")));
#define g_variant_type_new IA__g_variant_type_new

extern __typeof (g_variant_type_get_string_length) IA__g_variant_type_get_string_length __attribute((visibility("hidden")));
#define g_variant_type_get_string_length IA__g_variant_type_get_string_length

extern __typeof (g_variant_type_peek_string) IA__g_variant_type_peek_string __attribute((visibility("hidden")));
#define g_variant_type_peek_string IA__g_variant_type_peek_string

extern __typeof (g_variant_type_dup_string) IA__g_variant_type_dup_string __attribute((visibility("hidden")));
#define g_variant_type_dup_string IA__g_variant_type_dup_string

extern __typeof (g_variant_type_is_definite) IA__g_variant_type_is_definite __attribute((visibility("hidden")));
#define g_variant_type_is_definite IA__g_variant_type_is_definite

extern __typeof (g_variant_type_is_container) IA__g_variant_type_is_container __attribute((visibility("hidden")));
#define g_variant_type_is_container IA__g_variant_type_is_container

extern __typeof (g_variant_type_is_basic) IA__g_variant_type_is_basic __attribute((visibility("hidden")));
#define g_variant_type_is_basic IA__g_variant_type_is_basic

extern __typeof (g_variant_type_is_maybe) IA__g_variant_type_is_maybe __attribute((visibility("hidden")));
#define g_variant_type_is_maybe IA__g_variant_type_is_maybe

extern __typeof (g_variant_type_is_array) IA__g_variant_type_is_array __attribute((visibility("hidden")));
#define g_variant_type_is_array IA__g_variant_type_is_array

extern __typeof (g_variant_type_is_tuple) IA__g_variant_type_is_tuple __attribute((visibility("hidden")));
#define g_variant_type_is_tuple IA__g_variant_type_is_tuple

extern __typeof (g_variant_type_is_dict_entry) IA__g_variant_type_is_dict_entry __attribute((visibility("hidden")));
#define g_variant_type_is_dict_entry IA__g_variant_type_is_dict_entry

extern __typeof (g_variant_type_is_variant) IA__g_variant_type_is_variant __attribute((visibility("hidden")));
#define g_variant_type_is_variant IA__g_variant_type_is_variant

extern __typeof (g_variant_type_hash) IA__g_variant_type_hash __attribute((visibility("hidden")));
#define g_variant_type_hash IA__g_variant_type_hash

extern __typeof (g_variant_type_equal) IA__g_variant_type_equal __attribute((visibility("hidden")));
#define g_variant_type_equal IA__g_variant_type_equal

extern __typeof (g_variant_type_is_subtype_of) IA__g_variant_type_is_subtype_of __attribute((visibility("hidden")));
#define g_variant_type_is_subtype_of IA__g_variant_type_is_subtype_of

extern __typeof (g_variant_type_element) IA__g_variant_type_element __attribute((visibility("hidden")));
#define g_variant_type_element IA__g_variant_type_element

extern __typeof (g_variant_type_first) IA__g_variant_type_first __attribute((visibility("hidden")));
#define g_variant_type_first IA__g_variant_type_first

extern __typeof (g_variant_type_next) IA__g_variant_type_next __attribute((visibility("hidden")));
#define g_variant_type_next IA__g_variant_type_next

extern __typeof (g_variant_type_n_items) IA__g_variant_type_n_items __attribute((visibility("hidden")));
#define g_variant_type_n_items IA__g_variant_type_n_items

extern __typeof (g_variant_type_key) IA__g_variant_type_key __attribute((visibility("hidden")));
#define g_variant_type_key IA__g_variant_type_key

extern __typeof (g_variant_type_value) IA__g_variant_type_value __attribute((visibility("hidden")));
#define g_variant_type_value IA__g_variant_type_value

extern __typeof (g_variant_type_new_array) IA__g_variant_type_new_array __attribute((visibility("hidden")));
#define g_variant_type_new_array IA__g_variant_type_new_array

extern __typeof (g_variant_type_new_maybe) IA__g_variant_type_new_maybe __attribute((visibility("hidden")));
#define g_variant_type_new_maybe IA__g_variant_type_new_maybe

extern __typeof (g_variant_type_new_tuple) IA__g_variant_type_new_tuple __attribute((visibility("hidden")));
#define g_variant_type_new_tuple IA__g_variant_type_new_tuple

extern __typeof (g_variant_type_new_dict_entry) IA__g_variant_type_new_dict_entry __attribute((visibility("hidden")));
#define g_variant_type_new_dict_entry IA__g_variant_type_new_dict_entry

extern __typeof (g_variant_type_checked_) IA__g_variant_type_checked_ __attribute((visibility("hidden")));
#define g_variant_type_checked_ IA__g_variant_type_checked_

#endif
#endif
#if IN_HEADER(__G_VARIANT_H__)
#if IN_FILE(__G_VARIANT_CORE_C__)
extern __typeof (g_variant_unref) IA__g_variant_unref __attribute((visibility("hidden")));
#define g_variant_unref IA__g_variant_unref

extern __typeof (g_variant_ref) IA__g_variant_ref __attribute((visibility("hidden")));
#define g_variant_ref IA__g_variant_ref

extern __typeof (g_variant_ref_sink) IA__g_variant_ref_sink __attribute((visibility("hidden")));
#define g_variant_ref_sink IA__g_variant_ref_sink

extern __typeof (g_variant_n_children) IA__g_variant_n_children __attribute((visibility("hidden")));
#define g_variant_n_children IA__g_variant_n_children

extern __typeof (g_variant_get_child_value) IA__g_variant_get_child_value __attribute((visibility("hidden")));
#define g_variant_get_child_value IA__g_variant_get_child_value

extern __typeof (g_variant_get_size) IA__g_variant_get_size __attribute((visibility("hidden")));
#define g_variant_get_size IA__g_variant_get_size

extern __typeof (g_variant_get_data) IA__g_variant_get_data __attribute((visibility("hidden")));
#define g_variant_get_data IA__g_variant_get_data

extern __typeof (g_variant_store) IA__g_variant_store __attribute((visibility("hidden")));
#define g_variant_store IA__g_variant_store

extern __typeof (g_variant_is_normal_form) IA__g_variant_is_normal_form __attribute((visibility("hidden")));
#define g_variant_is_normal_form IA__g_variant_is_normal_form

#endif
#if IN_FILE(__G_VARIANT_C__)
extern __typeof (g_variant_get_type) IA__g_variant_get_type __attribute((visibility("hidden")));
#define g_variant_get_type IA__g_variant_get_type

extern __typeof (g_variant_get_type_string) IA__g_variant_get_type_string __attribute((visibility("hidden")));
#define g_variant_get_type_string IA__g_variant_get_type_string

extern __typeof (g_variant_is_of_type) IA__g_variant_is_of_type __attribute((visibility("hidden")));
#define g_variant_is_of_type IA__g_variant_is_of_type

extern __typeof (g_variant_is_container) IA__g_variant_is_container __attribute((visibility("hidden")));
#define g_variant_is_container IA__g_variant_is_container

extern __typeof (g_variant_classify) IA__g_variant_classify __attribute((visibility("hidden")));
#define g_variant_classify IA__g_variant_classify

extern __typeof (g_variant_new_boolean) IA__g_variant_new_boolean __attribute((visibility("hidden")));
#define g_variant_new_boolean IA__g_variant_new_boolean

extern __typeof (g_variant_new_byte) IA__g_variant_new_byte __attribute((visibility("hidden")));
#define g_variant_new_byte IA__g_variant_new_byte

extern __typeof (g_variant_new_int16) IA__g_variant_new_int16 __attribute((visibility("hidden")));
#define g_variant_new_int16 IA__g_variant_new_int16

extern __typeof (g_variant_new_uint16) IA__g_variant_new_uint16 __attribute((visibility("hidden")));
#define g_variant_new_uint16 IA__g_variant_new_uint16

extern __typeof (g_variant_new_int32) IA__g_variant_new_int32 __attribute((visibility("hidden")));
#define g_variant_new_int32 IA__g_variant_new_int32

extern __typeof (g_variant_new_uint32) IA__g_variant_new_uint32 __attribute((visibility("hidden")));
#define g_variant_new_uint32 IA__g_variant_new_uint32

extern __typeof (g_variant_new_int64) IA__g_variant_new_int64 __attribute((visibility("hidden")));
#define g_variant_new_int64 IA__g_variant_new_int64

extern __typeof (g_variant_new_uint64) IA__g_variant_new_uint64 __attribute((visibility("hidden")));
#define g_variant_new_uint64 IA__g_variant_new_uint64

extern __typeof (g_variant_new_handle) IA__g_variant_new_handle __attribute((visibility("hidden")));
#define g_variant_new_handle IA__g_variant_new_handle

extern __typeof (g_variant_new_double) IA__g_variant_new_double __attribute((visibility("hidden")));
#define g_variant_new_double IA__g_variant_new_double

extern __typeof (g_variant_new_string) IA__g_variant_new_string __attribute((visibility("hidden")));
#define g_variant_new_string IA__g_variant_new_string

extern __typeof (g_variant_new_object_path) IA__g_variant_new_object_path __attribute((visibility("hidden")));
#define g_variant_new_object_path IA__g_variant_new_object_path

extern __typeof (g_variant_is_object_path) IA__g_variant_is_object_path __attribute((visibility("hidden")));
#define g_variant_is_object_path IA__g_variant_is_object_path

extern __typeof (g_variant_new_signature) IA__g_variant_new_signature __attribute((visibility("hidden")));
#define g_variant_new_signature IA__g_variant_new_signature

extern __typeof (g_variant_is_signature) IA__g_variant_is_signature __attribute((visibility("hidden")));
#define g_variant_is_signature IA__g_variant_is_signature

extern __typeof (g_variant_new_variant) IA__g_variant_new_variant __attribute((visibility("hidden")));
#define g_variant_new_variant IA__g_variant_new_variant

extern __typeof (g_variant_new_strv) IA__g_variant_new_strv __attribute((visibility("hidden")));
#define g_variant_new_strv IA__g_variant_new_strv

extern __typeof (g_variant_get_boolean) IA__g_variant_get_boolean __attribute((visibility("hidden")));
#define g_variant_get_boolean IA__g_variant_get_boolean

extern __typeof (g_variant_get_byte) IA__g_variant_get_byte __attribute((visibility("hidden")));
#define g_variant_get_byte IA__g_variant_get_byte

extern __typeof (g_variant_get_int16) IA__g_variant_get_int16 __attribute((visibility("hidden")));
#define g_variant_get_int16 IA__g_variant_get_int16

extern __typeof (g_variant_get_uint16) IA__g_variant_get_uint16 __attribute((visibility("hidden")));
#define g_variant_get_uint16 IA__g_variant_get_uint16

extern __typeof (g_variant_get_int32) IA__g_variant_get_int32 __attribute((visibility("hidden")));
#define g_variant_get_int32 IA__g_variant_get_int32

extern __typeof (g_variant_get_uint32) IA__g_variant_get_uint32 __attribute((visibility("hidden")));
#define g_variant_get_uint32 IA__g_variant_get_uint32

extern __typeof (g_variant_get_int64) IA__g_variant_get_int64 __attribute((visibility("hidden")));
#define g_variant_get_int64 IA__g_variant_get_int64

extern __typeof (g_variant_get_uint64) IA__g_variant_get_uint64 __attribute((visibility("hidden")));
#define g_variant_get_uint64 IA__g_variant_get_uint64

extern __typeof (g_variant_get_handle) IA__g_variant_get_handle __attribute((visibility("hidden")));
#define g_variant_get_handle IA__g_variant_get_handle

extern __typeof (g_variant_get_double) IA__g_variant_get_double __attribute((visibility("hidden")));
#define g_variant_get_double IA__g_variant_get_double

extern __typeof (g_variant_get_string) IA__g_variant_get_string __attribute((visibility("hidden")));
#define g_variant_get_string IA__g_variant_get_string

extern __typeof (g_variant_dup_string) IA__g_variant_dup_string __attribute((visibility("hidden")));
#define g_variant_dup_string IA__g_variant_dup_string

extern __typeof (g_variant_get_variant) IA__g_variant_get_variant __attribute((visibility("hidden")));
#define g_variant_get_variant IA__g_variant_get_variant

extern __typeof (g_variant_get_strv) IA__g_variant_get_strv __attribute((visibility("hidden")));
#define g_variant_get_strv IA__g_variant_get_strv

extern __typeof (g_variant_dup_strv) IA__g_variant_dup_strv __attribute((visibility("hidden")));
#define g_variant_dup_strv IA__g_variant_dup_strv

extern __typeof (g_variant_new_maybe) IA__g_variant_new_maybe __attribute((visibility("hidden")));
#define g_variant_new_maybe IA__g_variant_new_maybe

extern __typeof (g_variant_new_array) IA__g_variant_new_array __attribute((visibility("hidden")));
#define g_variant_new_array IA__g_variant_new_array

extern __typeof (g_variant_new_tuple) IA__g_variant_new_tuple __attribute((visibility("hidden")));
#define g_variant_new_tuple IA__g_variant_new_tuple

extern __typeof (g_variant_new_dict_entry) IA__g_variant_new_dict_entry __attribute((visibility("hidden")));
#define g_variant_new_dict_entry IA__g_variant_new_dict_entry

extern __typeof (g_variant_get_maybe) IA__g_variant_get_maybe __attribute((visibility("hidden")));
#define g_variant_get_maybe IA__g_variant_get_maybe

extern __typeof (g_variant_get_fixed_array) IA__g_variant_get_fixed_array __attribute((visibility("hidden")));
#define g_variant_get_fixed_array IA__g_variant_get_fixed_array

extern __typeof (g_variant_print) IA__g_variant_print __attribute((visibility("hidden")));
#define g_variant_print IA__g_variant_print

extern __typeof (g_variant_print_string) IA__g_variant_print_string __attribute((visibility("hidden")));
#define g_variant_print_string IA__g_variant_print_string

extern __typeof (g_variant_hash) IA__g_variant_hash __attribute((visibility("hidden")));
#define g_variant_hash IA__g_variant_hash

extern __typeof (g_variant_equal) IA__g_variant_equal __attribute((visibility("hidden")));
#define g_variant_equal IA__g_variant_equal

extern __typeof (g_variant_iter_copy) IA__g_variant_iter_copy __attribute((visibility("hidden")));
#define g_variant_iter_copy IA__g_variant_iter_copy

extern __typeof (g_variant_iter_free) IA__g_variant_iter_free __attribute((visibility("hidden")));
#define g_variant_iter_free IA__g_variant_iter_free

extern __typeof (g_variant_iter_init) IA__g_variant_iter_init __attribute((visibility("hidden")));
#define g_variant_iter_init IA__g_variant_iter_init

extern __typeof (g_variant_iter_n_children) IA__g_variant_iter_n_children __attribute((visibility("hidden")));
#define g_variant_iter_n_children IA__g_variant_iter_n_children

extern __typeof (g_variant_iter_new) IA__g_variant_iter_new __attribute((visibility("hidden")));
#define g_variant_iter_new IA__g_variant_iter_new

extern __typeof (g_variant_iter_next_value) IA__g_variant_iter_next_value __attribute((visibility("hidden")));
#define g_variant_iter_next_value IA__g_variant_iter_next_value

extern __typeof (g_variant_builder_add_value) IA__g_variant_builder_add_value __attribute((visibility("hidden")));
#define g_variant_builder_add_value IA__g_variant_builder_add_value

extern __typeof (g_variant_builder_init) IA__g_variant_builder_init __attribute((visibility("hidden")));
#define g_variant_builder_init IA__g_variant_builder_init

extern __typeof (g_variant_builder_clear) IA__g_variant_builder_clear __attribute((visibility("hidden")));
#define g_variant_builder_clear IA__g_variant_builder_clear

extern __typeof (g_variant_builder_open) IA__g_variant_builder_open __attribute((visibility("hidden")));
#define g_variant_builder_open IA__g_variant_builder_open

extern __typeof (g_variant_builder_close) IA__g_variant_builder_close __attribute((visibility("hidden")));
#define g_variant_builder_close IA__g_variant_builder_close

extern __typeof (g_variant_builder_end) IA__g_variant_builder_end __attribute((visibility("hidden")));
#define g_variant_builder_end IA__g_variant_builder_end

extern __typeof (g_variant_builder_new) IA__g_variant_builder_new __attribute((visibility("hidden")));
#define g_variant_builder_new IA__g_variant_builder_new

extern __typeof (g_variant_builder_unref) IA__g_variant_builder_unref __attribute((visibility("hidden")));
#define g_variant_builder_unref IA__g_variant_builder_unref

extern __typeof (g_variant_builder_ref) IA__g_variant_builder_ref __attribute((visibility("hidden")));
#define g_variant_builder_ref IA__g_variant_builder_ref

extern __typeof (g_variant_new_va) IA__g_variant_new_va __attribute((visibility("hidden")));
#define g_variant_new_va IA__g_variant_new_va

extern __typeof (g_variant_get_va) IA__g_variant_get_va __attribute((visibility("hidden")));
#define g_variant_get_va IA__g_variant_get_va

extern __typeof (g_variant_new) IA__g_variant_new __attribute((visibility("hidden")));
#define g_variant_new IA__g_variant_new

extern __typeof (g_variant_get) IA__g_variant_get __attribute((visibility("hidden")));
#define g_variant_get IA__g_variant_get

extern __typeof (g_variant_builder_add) IA__g_variant_builder_add __attribute((visibility("hidden")));
#define g_variant_builder_add IA__g_variant_builder_add

extern __typeof (g_variant_get_child) IA__g_variant_get_child __attribute((visibility("hidden")));
#define g_variant_get_child IA__g_variant_get_child

extern __typeof (g_variant_iter_next) IA__g_variant_iter_next __attribute((visibility("hidden")));
#define g_variant_iter_next IA__g_variant_iter_next

extern __typeof (g_variant_iter_loop) IA__g_variant_iter_loop __attribute((visibility("hidden")));
#define g_variant_iter_loop IA__g_variant_iter_loop

extern __typeof (g_variant_new_from_data) IA__g_variant_new_from_data __attribute((visibility("hidden")));
#define g_variant_new_from_data IA__g_variant_new_from_data

extern __typeof (g_variant_get_normal_form) IA__g_variant_get_normal_form __attribute((visibility("hidden")));
#define g_variant_get_normal_form IA__g_variant_get_normal_form

extern __typeof (g_variant_byteswap) IA__g_variant_byteswap __attribute((visibility("hidden")));
#define g_variant_byteswap IA__g_variant_byteswap

#endif
#if IN_FILE(__G_VARIANT_PARSER_C__)
extern __typeof (g_variant_new_parsed) IA__g_variant_new_parsed __attribute((visibility("hidden")));
#define g_variant_new_parsed IA__g_variant_new_parsed

extern __typeof (g_variant_new_parsed_va) IA__g_variant_new_parsed_va __attribute((visibility("hidden")));
#define g_variant_new_parsed_va IA__g_variant_new_parsed_va

extern __typeof (g_variant_parse) IA__g_variant_parse __attribute((visibility("hidden")));
#define g_variant_parse IA__g_variant_parse

extern __typeof (g_variant_parser_get_error_quark) IA__g_variant_parser_get_error_quark __attribute((visibility("hidden")));
#define g_variant_parser_get_error_quark IA__g_variant_parser_get_error_quark

#endif
#endif
#if IN_HEADER(__G_VARIANT_TYPE_INFO_H__)
#if IN_FILE(__G_VARIANT_TYPE_INFO_C__)
extern __typeof (g_variant_type_info_get_type_string) IA__g_variant_type_info_get_type_string __attribute((visibility("hidden")));
#define g_variant_type_info_get_type_string IA__g_variant_type_info_get_type_string

extern __typeof (g_variant_type_info_query) IA__g_variant_type_info_query __attribute((visibility("hidden")));
#define g_variant_type_info_query IA__g_variant_type_info_query

extern __typeof (g_variant_type_info_element) IA__g_variant_type_info_element __attribute((visibility("hidden")));
#define g_variant_type_info_element IA__g_variant_type_info_element

extern __typeof (g_variant_type_info_query_element) IA__g_variant_type_info_query_element __attribute((visibility("hidden")));
#define g_variant_type_info_query_element IA__g_variant_type_info_query_element

extern __typeof (g_variant_type_info_n_members) IA__g_variant_type_info_n_members __attribute((visibility("hidden")));
#define g_variant_type_info_n_members IA__g_variant_type_info_n_members

extern __typeof (g_variant_type_info_member_info) IA__g_variant_type_info_member_info __attribute((visibility("hidden")));
#define g_variant_type_info_member_info IA__g_variant_type_info_member_info

extern __typeof (g_variant_type_info_get) IA__g_variant_type_info_get __attribute((visibility("hidden")));
#define g_variant_type_info_get IA__g_variant_type_info_get

extern __typeof (g_variant_type_info_ref) IA__g_variant_type_info_ref __attribute((visibility("hidden")));
#define g_variant_type_info_ref IA__g_variant_type_info_ref

extern __typeof (g_variant_type_info_unref) IA__g_variant_type_info_unref __attribute((visibility("hidden")));
#define g_variant_type_info_unref IA__g_variant_type_info_unref

extern __typeof (g_variant_type_info_assert_no_infos) IA__g_variant_type_info_assert_no_infos __attribute((visibility("hidden")));
#define g_variant_type_info_assert_no_infos IA__g_variant_type_info_assert_no_infos

#endif
#endif
#if IN_HEADER(__G_VARIANT_SERIALISER_H__)
#if IN_FILE(__G_VARIANT_SERIALISER_C__)
extern __typeof (g_variant_serialised_byteswap) IA__g_variant_serialised_byteswap __attribute((visibility("hidden")));
#define g_variant_serialised_byteswap IA__g_variant_serialised_byteswap

extern __typeof (g_variant_serialised_get_child) IA__g_variant_serialised_get_child __attribute((visibility("hidden")));
#define g_variant_serialised_get_child IA__g_variant_serialised_get_child

extern __typeof (g_variant_serialised_is_normal) IA__g_variant_serialised_is_normal __attribute((visibility("hidden")));
#define g_variant_serialised_is_normal IA__g_variant_serialised_is_normal

extern __typeof (g_variant_serialised_n_children) IA__g_variant_serialised_n_children __attribute((visibility("hidden")));
#define g_variant_serialised_n_children IA__g_variant_serialised_n_children

extern __typeof (g_variant_serialiser_is_object_path) IA__g_variant_serialiser_is_object_path __attribute((visibility("hidden")));
#define g_variant_serialiser_is_object_path IA__g_variant_serialiser_is_object_path

extern __typeof (g_variant_serialiser_is_signature) IA__g_variant_serialiser_is_signature __attribute((visibility("hidden")));
#define g_variant_serialiser_is_signature IA__g_variant_serialiser_is_signature

extern __typeof (g_variant_serialiser_is_string) IA__g_variant_serialiser_is_string __attribute((visibility("hidden")));
#define g_variant_serialiser_is_string IA__g_variant_serialiser_is_string

extern __typeof (g_variant_serialiser_needed_size) IA__g_variant_serialiser_needed_size __attribute((visibility("hidden")));
#define g_variant_serialiser_needed_size IA__g_variant_serialiser_needed_size

extern __typeof (g_variant_serialiser_serialise) IA__g_variant_serialiser_serialise __attribute((visibility("hidden")));
#define g_variant_serialiser_serialise IA__g_variant_serialiser_serialise

#endif
#endif
#if IN_HEADER(__G_VARIANT_INTERNAL_H__)
#if IN_FILE(__G_VARIANT_C__)
extern __typeof (g_variant_format_string_scan_type) IA__g_variant_format_string_scan_type __attribute((visibility("hidden")));
#define g_variant_format_string_scan_type IA__g_variant_format_string_scan_type

extern __typeof (g_variant_format_string_scan) IA__g_variant_format_string_scan __attribute((visibility("hidden")));
#define g_variant_format_string_scan IA__g_variant_format_string_scan

#endif
#endif
#if IN_HEADER(__G_WIN32_H__)
#if IN_FILE(__G_WIN32_H__)
#ifdef G_OS_WIN32
extern __typeof (g_win32_error_message) IA__g_win32_error_message __attribute((visibility("hidden")));
#define g_win32_error_message IA__g_win32_error_message

extern __typeof (g_win32_ftruncate) IA__g_win32_ftruncate __attribute((visibility("hidden")));
#define g_win32_ftruncate IA__g_win32_ftruncate

extern __typeof (g_win32_get_package_installation_directory_of_module) IA__g_win32_get_package_installation_directory_of_module __attribute((visibility("hidden")));
#define g_win32_get_package_installation_directory_of_module IA__g_win32_get_package_installation_directory_of_module

#ifndef _WIN64
extern __typeof (g_win32_get_package_installation_directory) IA__g_win32_get_package_installation_directory __attribute((visibility("hidden")));
#define g_win32_get_package_installation_directory IA__g_win32_get_package_installation_directory

#endif
extern __typeof (g_win32_get_package_installation_directory_utf8) IA__g_win32_get_package_installation_directory_utf8 __attribute((visibility("hidden")));
#define g_win32_get_package_installation_directory_utf8 IA__g_win32_get_package_installation_directory_utf8

#ifndef _WIN64
extern __typeof (g_win32_get_package_installation_subdirectory) IA__g_win32_get_package_installation_subdirectory __attribute((visibility("hidden")));
#define g_win32_get_package_installation_subdirectory IA__g_win32_get_package_installation_subdirectory

#endif
extern __typeof (g_win32_get_package_installation_subdirectory_utf8) IA__g_win32_get_package_installation_subdirectory_utf8 __attribute((visibility("hidden")));
#define g_win32_get_package_installation_subdirectory_utf8 IA__g_win32_get_package_installation_subdirectory_utf8

extern __typeof (g_win32_get_windows_version) IA__g_win32_get_windows_version __attribute((visibility("hidden")));
#define g_win32_get_windows_version IA__g_win32_get_windows_version

extern __typeof (g_win32_getlocale) IA__g_win32_getlocale __attribute((visibility("hidden")));
#define g_win32_getlocale IA__g_win32_getlocale

extern __typeof (g_win32_locale_filename_from_utf8) IA__g_win32_locale_filename_from_utf8 __attribute((visibility("hidden")));
#define g_win32_locale_filename_from_utf8 IA__g_win32_locale_filename_from_utf8

#endif
#endif
#endif
#if IN_HEADER(__G_HOST_UTILS_H__)
#if IN_FILE(__G_HOST_UTILS_C__)
extern __typeof (g_hostname_is_non_ascii) IA__g_hostname_is_non_ascii __attribute((visibility("hidden")));
#define g_hostname_is_non_ascii IA__g_hostname_is_non_ascii

extern __typeof (g_hostname_is_ascii_encoded) IA__g_hostname_is_ascii_encoded __attribute((visibility("hidden")));
#define g_hostname_is_ascii_encoded IA__g_hostname_is_ascii_encoded

extern __typeof (g_hostname_is_ip_address) IA__g_hostname_is_ip_address __attribute((visibility("hidden")));
#define g_hostname_is_ip_address IA__g_hostname_is_ip_address

extern __typeof (g_hostname_to_ascii) IA__g_hostname_to_ascii __attribute((visibility("hidden")));
#define g_hostname_to_ascii IA__g_hostname_to_ascii

extern __typeof (g_hostname_to_unicode) IA__g_hostname_to_unicode __attribute((visibility("hidden")));
#define g_hostname_to_unicode IA__g_hostname_to_unicode

#endif
#endif

#endif /* G_HAVE_GNUC_VISIBILITY */
#endif /* DISABLE_VISIBILITY */
