@ -304,6 +304,30 @@ impl JsonBuilder {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     /// Add a string to an array.
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     pub   fn  append_base64 ( & mut   self ,   val : & [ u8 ] )   -> Result < & mut   Self ,   JsonError >   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         match   self . current_state ( )   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             State ::ArrayFirst   = >   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 self . buf . push ( '"' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 base64 ::encode_config_buf ( val ,   base64 ::STANDARD ,   & mut   self . buf ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 self . buf . push ( '"' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 self . set_state ( State ::ArrayNth ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 Ok ( self ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             State ::ArrayNth   = >   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 self . buf . push ( ',' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 self . buf . push ( '"' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 base64 ::encode_config_buf ( val ,   base64 ::STANDARD ,   & mut   self . buf ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 self . buf . push ( '"' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 Ok ( self ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             _   = >   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 debug_validate_fail ! ( "invalid state" ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 Err ( JsonError ::InvalidState ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     /// Add an unsigned integer to an array.
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     pub   fn  append_uint ( & mut   self ,   val : u64 )   -> Result < & mut   Self ,   JsonError >   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         match   self . current_state ( )   { 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -427,6 +451,29 @@ impl JsonBuilder {
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     /// Set a key and a string field as the base64 encoded string of the value.
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     pub   fn  set_base64 ( & mut   self ,   key : & str ,   val : & [ u8 ] )   -> Result < & mut   Self ,   JsonError >   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         match   self . current_state ( )   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             State ::ObjectNth   = >   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 self . buf . push ( ',' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             State ::ObjectFirst   = >   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 self . set_state ( State ::ObjectNth ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             _   = >   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 debug_validate_fail ! ( "invalid state" ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				                 return   Err ( JsonError ::InvalidState ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				             } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         self . buf . push ( '"' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         self . buf . push_str ( key ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         self . buf . push_str ( "\":\"" ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         base64 ::encode_config_buf ( val ,   base64 ::STANDARD ,   & mut   self . buf ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         self . buf . push ( '"' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         Ok ( self ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     /// Set a key and an unsigned integer type on an object.
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     pub   fn  set_uint ( & mut   self ,   key : & str ,   val : u64 )   -> Result < & mut   Self ,   JsonError >   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         match   self . current_state ( )   { 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -655,6 +702,20 @@ pub unsafe extern "C" fn jb_set_string_from_bytes(
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     return   false ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				#[ no_mangle ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				pub   unsafe   extern   "C"   fn  jb_set_base64 ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     js : & mut   JsonBuilder ,   key : * const   c_char ,   bytes : * const   u8 ,   len : u32 , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				)   -> bool  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     if   bytes   = =   std ::ptr ::null ( )   | |   len   = =   0   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         return   false ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     if   let   Ok ( key )   =   CStr ::from_ptr ( key ) . to_str ( )   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         let   val   =   std ::slice ::from_raw_parts ( bytes ,   len   as   usize ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         return   js . set_base64 ( key ,   val ) . is_ok ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     return   false ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				#[ no_mangle ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				pub   unsafe   extern   "C"   fn  jb_set_formatted ( js : & mut   JsonBuilder ,   formatted : * const   c_char )   -> bool  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     if   let   Ok ( formatted )   =   CStr ::from_ptr ( formatted ) . to_str ( )   { 
 
			
		 
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
			
			 
			 
			
				@ -700,6 +761,17 @@ pub unsafe extern "C" fn jb_append_string_from_bytes(
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     return   js . append_string_from_bytes ( val ) . is_ok ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				#[ no_mangle ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				pub   unsafe   extern   "C"   fn  jb_append_base64 ( 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     js : & mut   JsonBuilder ,   bytes : * const   u8 ,   len : u32 , 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				)   -> bool  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     if   bytes   = =   std ::ptr ::null ( )   | |   len   = =   0   { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         return   false ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     let   val   =   std ::slice ::from_raw_parts ( bytes ,   len   as   usize ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     return   js . append_base64 ( val ) . is_ok ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				} 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				#[ no_mangle ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				pub   unsafe   extern   "C"   fn  jb_append_uint ( js : & mut   JsonBuilder ,   val : u64 )   -> bool  { 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     return   js . append_uint ( val ) . is_ok ( ) ;