2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  Copyright  ( c )  2009 - 2017  Dave  Gamble  and  cJSON  contributors 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  Permission  is  hereby  granted ,  free  of  charge ,  to  any  person  obtaining  a  copy 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  of  this  software  and  associated  documentation  files  ( the  " Software " ) ,  to  deal 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  in  the  Software  without  restriction ,  including  without  limitation  the  rights 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  to  use ,  copy ,  modify ,  merge ,  publish ,  distribute ,  sublicense ,  and / or  sell 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  copies  of  the  Software ,  and  to  permit  persons  to  whom  the  Software  is 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  furnished  to  do  so ,  subject  to  the  following  conditions : 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  The  above  copyright  notice  and  this  permission  notice  shall  be  included  in 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  all  copies  or  substantial  portions  of  the  Software . 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  THE  SOFTWARE  IS  PROVIDED  " AS IS " ,  WITHOUT  WARRANTY  OF  ANY  KIND ,  EXPRESS  OR 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  IMPLIED ,  INCLUDING  BUT  NOT  LIMITED  TO  THE  WARRANTIES  OF  MERCHANTABILITY , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  FITNESS  FOR  A  PARTICULAR  PURPOSE  AND  NONINFRINGEMENT .  IN  NO  EVENT  SHALL  THE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  AUTHORS  OR  COPYRIGHT  HOLDERS  BE  LIABLE  FOR  ANY  CLAIM ,  DAMAGES  OR  OTHER 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  LIABILITY ,  WHETHER  IN  AN  ACTION  OF  CONTRACT ,  TORT  OR  OTHERWISE ,  ARISING  FROM , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  OUT  OF  OR  IN  CONNECTION  WITH  THE  SOFTWARE  OR  THE  USE  OR  OTHER  DEALINGS  IN 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  THE  SOFTWARE . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef cJSON__h 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define cJSON__h 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef __cplusplus 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								extern  " C "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-01 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if !defined(__WINDOWS__) && (defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32)) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define __WINDOWS__ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef __WINDOWS__ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* When compiling for windows, we specify a specific calling convention to avoid issues where we are being called from a project with a different default calling convention.  For windows you have 3 define options:
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_HIDE_SYMBOLS  -  Define  this  in  the  case  where  you  don ' t  want  to  ever  dllexport  symbols  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_EXPORT_SYMBOLS  -  Define  this  on  library  build  when  you  want  to  dllexport  symbols  ( default )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_IMPORT_SYMBOLS  -  Define  this  if  you  want  to  dllimport  symbol  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								For  * nix  builds  that  support  visibility  attribute ,  you  can  define  similar  behavior  by  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								setting  default  visibility  to  hidden  by  adding  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								- fvisibility = hidden  ( for  gcc )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								or  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								- xldscope = hidden  ( for  sun  cc )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								to  CFLAGS  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								then  using  the  CJSON_API_VISIBILITY  flag  to  " export "  the  same  symbols  the  way  CJSON_EXPORT_SYMBOLS  does  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CJSON_CDECL __cdecl 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CJSON_STDCALL __stdcall 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* export symbols by default, this is necessary for copy pasting the C and header file */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if !defined(CJSON_HIDE_SYMBOLS) && !defined(CJSON_IMPORT_SYMBOLS) && !defined(CJSON_EXPORT_SYMBOLS) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CJSON_EXPORT_SYMBOLS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if defined(CJSON_HIDE_SYMBOLS) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CJSON_PUBLIC(type)   type CJSON_STDCALL 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# elif defined(CJSON_EXPORT_SYMBOLS) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CJSON_PUBLIC(type)   __declspec(dllexport) type CJSON_STDCALL 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# elif defined(CJSON_IMPORT_SYMBOLS) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CJSON_PUBLIC(type)   __declspec(dllimport) type CJSON_STDCALL 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else  /* !__WINDOWS__ */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CJSON_CDECL 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CJSON_STDCALL 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if (defined(__GNUC__) || defined(__SUNPRO_CC) || defined (__SUNPRO_C)) && defined(CJSON_API_VISIBILITY) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CJSON_PUBLIC(type)   __attribute__((visibility("default"))) type 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CJSON_PUBLIC(type) type 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* project version */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CJSON_VERSION_MAJOR 1 
  
						 
					
						
							
								
									
										
										
										
											2018-04-07 09:45:18 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define CJSON_VERSION_MINOR 7 
  
						 
					
						
							
								
									
										
										
										
											2019-10-01 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define CJSON_VERSION_PATCH 12 
  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <stddef.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* cJSON Types: */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define cJSON_Invalid (0) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define cJSON_False  (1 << 0) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define cJSON_True   (1 << 1) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define cJSON_NULL   (1 << 2) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define cJSON_Number (1 << 3) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define cJSON_String (1 << 4) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define cJSON_Array  (1 << 5) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define cJSON_Object (1 << 6) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define cJSON_Raw    (1 << 7)  /* raw json */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# define cJSON_IsReference 256 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define cJSON_StringIsConst 512 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* The cJSON structure: */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  struct  cJSON  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    struct  cJSON  * next ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    struct  cJSON  * prev ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    struct  cJSON  * child ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* The type of the item, as above. */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  type ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* The item's string, if type==cJSON_String  and type == cJSON_Raw */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    char  * valuestring ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  valueint ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* The item's number, if type==cJSON_Number */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    double  valuedouble ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    char  * string ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  cJSON ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  struct  cJSON_Hooks  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2019-10-01 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      /* malloc/free are CDECL on Windows regardless of the default calling convention of the compiler, so ensure the hooks allow passing those functions directly. */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      void  * ( CJSON_CDECL  * malloc_fn ) ( size_t  sz ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      void  ( CJSON_CDECL  * free_fn ) ( void  * ptr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  cJSON_Hooks ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								typedef  int  cJSON_bool ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Limits how deeply nested arrays/objects can be before cJSON rejects to parse them.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  is  to  prevent  stack  overflows .  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef CJSON_NESTING_LIMIT 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CJSON_NESTING_LIMIT 1000 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* returns the version of cJSON as a string */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( const  char * )  cJSON_Version ( void ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* Supply malloc, realloc and free functions to cJSON */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_InitHooks ( cJSON_Hooks *  hooks ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Memory Management: the caller is always responsible to free the results from all variants of cJSON_Parse (with cJSON_Delete) and cJSON_Print (with stdlib free, cJSON_Hooks.free_fn, or cJSON_free as appropriate). The exception is cJSON_PrintPreallocated, where the caller has full responsibility of the buffer. */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Supply a block of JSON, and this returns a cJSON object you can interrogate. */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_Parse ( const  char  * value ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ParseWithOpts allows you to require (and check) that the JSON is null terminated, and to retrieve the pointer to the final byte parsed. */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* If you supply a ptr in return_parse_end and parsing fails, then return_parse_end will contain a pointer to the error so will match cJSON_GetErrorPtr(). */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_ParseWithOpts ( const  char  * value ,  const  char  * * return_parse_end ,  cJSON_bool  require_null_terminated ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Render a cJSON entity to text for transfer/storage. */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( char  * )  cJSON_Print ( const  cJSON  * item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Render a cJSON entity to text for transfer/storage without any formatting. */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( char  * )  cJSON_PrintUnformatted ( const  cJSON  * item ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess at the final size. guessing well reduces reallocation. fmt=0 gives unformatted, =1 gives formatted */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( char  * )  cJSON_PrintBuffered ( const  cJSON  * item ,  int  prebuffer ,  cJSON_bool  fmt ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Render a cJSON entity to text using a buffer already allocated in memory with given length. Returns 1 on success and 0 on failure. */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* NOTE: cJSON is not always 100% accurate in estimating how much memory it will use, so to be safe allocate 5 bytes more than you actually need */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_PrintPreallocated ( cJSON  * item ,  char  * buffer ,  const  int  length ,  const  cJSON_bool  format ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* Delete a cJSON entity and all subentities. */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_Delete ( cJSON  * c ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Returns the number of items in an array (or object). */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( int )  cJSON_GetArraySize ( const  cJSON  * array ) ;  
						 
					
						
							
								
									
										
										
										
											2019-10-01 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Retrieve item number "index" from array "array". Returns NULL if unsuccessful. */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_GetArrayItem ( const  cJSON  * array ,  int  index ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* Get item "string" from object. Case insensitive. */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_GetObjectItem ( const  cJSON  *  const  object ,  const  char  *  const  string ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_GetObjectItemCaseSensitive ( const  cJSON  *  const  object ,  const  char  *  const  string ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_HasObjectItem ( const  cJSON  * object ,  const  char  * string ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( const  char  * )  cJSON_GetErrorPtr ( void ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-04-07 09:45:18 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Check if the item is a string and return its valuestring */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( char  * )  cJSON_GetStringValue ( cJSON  * item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* These functions check the type of an item */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_IsInvalid ( const  cJSON  *  const  item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_IsFalse ( const  cJSON  *  const  item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_IsTrue ( const  cJSON  *  const  item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_IsBool ( const  cJSON  *  const  item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_IsNull ( const  cJSON  *  const  item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_IsNumber ( const  cJSON  *  const  item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_IsString ( const  cJSON  *  const  item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_IsArray ( const  cJSON  *  const  item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_IsObject ( const  cJSON  *  const  item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_IsRaw ( const  cJSON  *  const  item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* These calls create a cJSON item of the appropriate type. */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateNull ( void ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateTrue ( void ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateFalse ( void ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateBool ( cJSON_bool  boolean ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateNumber ( double  num ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateString ( const  char  * string ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* raw json */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateRaw ( const  char  * raw ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateArray ( void ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateObject ( void ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-04-07 09:45:18 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Create a string where valuestring references a string so
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  it  will  not  be  freed  by  cJSON_Delete  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateStringReference ( const  char  * string ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Create an object/arrray that only references it's elements so
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  they  will  not  be  freed  by  cJSON_Delete  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateObjectReference ( const  cJSON  * child ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateArrayReference ( const  cJSON  * child ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* These utilities create an Array of count items. */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateIntArray ( const  int  * numbers ,  int  count ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateFloatArray ( const  float  * numbers ,  int  count ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateDoubleArray ( const  double  * numbers ,  int  count ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_CreateStringArray ( const  char  * * strings ,  int  count ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Append item to the specified array/object. */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_AddItemToArray ( cJSON  * array ,  cJSON  * item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_AddItemToObject ( cJSON  * object ,  const  char  * string ,  cJSON  * item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Use this when string is definitely const (i.e. a literal, or as good as), and will definitely survive the cJSON object.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  WARNING :  When  this  function  was  used ,  make  sure  to  always  check  that  ( item - > type  &  cJSON_StringIsConst )  is  zero  before 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  writing  to  ` item - > string `  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_AddItemToObjectCS ( cJSON  * object ,  const  char  * string ,  cJSON  * item ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON. */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_AddItemReferenceToArray ( cJSON  * array ,  cJSON  * item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_AddItemReferenceToObject ( cJSON  * object ,  const  char  * string ,  cJSON  * item ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Remove/Detatch items from Arrays/Objects. */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_DetachItemViaPointer ( cJSON  * parent ,  cJSON  *  const  item ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_DetachItemFromArray ( cJSON  * array ,  int  which ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_DeleteItemFromArray ( cJSON  * array ,  int  which ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_DetachItemFromObject ( cJSON  * object ,  const  char  * string ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_DetachItemFromObjectCaseSensitive ( cJSON  * object ,  const  char  * string ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_DeleteItemFromObject ( cJSON  * object ,  const  char  * string ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_DeleteItemFromObjectCaseSensitive ( cJSON  * object ,  const  char  * string ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* Update array items. */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_InsertItemInArray ( cJSON  * array ,  int  which ,  cJSON  * newitem ) ;  /* Shifts pre-existing items to the right. */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_ReplaceItemViaPointer ( cJSON  *  const  parent ,  cJSON  *  const  item ,  cJSON  *  replacement ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_ReplaceItemInArray ( cJSON  * array ,  int  which ,  cJSON  * newitem ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_ReplaceItemInObject ( cJSON  * object , const  char  * string , cJSON  * newitem ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_ReplaceItemInObjectCaseSensitive ( cJSON  * object , const  char  * string , cJSON  * newitem ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Duplicate a cJSON item */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON  * )  cJSON_Duplicate ( const  cJSON  * item ,  cJSON_bool  recurse ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								need  to  be  released .  With  recurse ! = 0 ,  it  will  duplicate  any  children  connected  to  the  item .  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The  item - > next  and  - > prev  pointers  are  always  zero  on  return  from  Duplicate .  */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Recursively compare two cJSON items for equality. If either a or b is NULL or invalid, they will be considered unequal.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  case_sensitive  determines  if  object  keys  are  treated  case  sensitive  ( 1 )  or  case  insensitive  ( 0 )  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON_bool )  cJSON_Compare ( const  cJSON  *  const  a ,  const  cJSON  *  const  b ,  const  cJSON_bool  case_sensitive ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_Minify ( char  * json ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-04-07 09:45:18 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Helper functions for creating and adding items to an object at the same time.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  They  return  the  added  item  or  NULL  on  failure .  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON * )  cJSON_AddNullToObject ( cJSON  *  const  object ,  const  char  *  const  name ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON * )  cJSON_AddTrueToObject ( cJSON  *  const  object ,  const  char  *  const  name ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON * )  cJSON_AddFalseToObject ( cJSON  *  const  object ,  const  char  *  const  name ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON * )  cJSON_AddBoolToObject ( cJSON  *  const  object ,  const  char  *  const  name ,  const  cJSON_bool  boolean ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON * )  cJSON_AddNumberToObject ( cJSON  *  const  object ,  const  char  *  const  name ,  const  double  number ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON * )  cJSON_AddStringToObject ( cJSON  *  const  object ,  const  char  *  const  name ,  const  char  *  const  string ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON * )  cJSON_AddRawToObject ( cJSON  *  const  object ,  const  char  *  const  name ,  const  char  *  const  raw ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON * )  cJSON_AddObjectToObject ( cJSON  *  const  object ,  const  char  *  const  name ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( cJSON * )  cJSON_AddArrayToObject ( cJSON  *  const  object ,  const  char  *  const  name ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* When assigning an integer value, it needs to be propagated to valuedouble too. */  
						 
					
						
							
								
									
										
										
										
											2018-01-18 00:56:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define cJSON_SetIntValue(object, number) ((object) ? (object)->valueint = (object)->valuedouble = (number) : (number)) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* helper for the cJSON_SetNumberValue macro */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( double )  cJSON_SetNumberHelper ( cJSON  * object ,  double  number ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define cJSON_SetNumberValue(object, number) ((object != NULL) ? cJSON_SetNumberHelper(object, (double)number) : (number)) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Macro for iterating over an array or object */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define cJSON_ArrayForEach(element, array) for(element = (array != NULL) ? (array)->child : NULL; element != NULL; element = element->next) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* malloc/free objects using the malloc/free functions that have been set with cJSON_InitHooks */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void  * )  cJSON_malloc ( size_t  size ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CJSON_PUBLIC ( void )  cJSON_free ( void  * object ) ;  
						 
					
						
							
								
									
										
										
										
											2016-10-06 14:21:30 +03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef __cplusplus 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif