浏览代码

[UIEngine] move UI engine as a package

Bernard Xiong 7 年之前
父节点
当前提交
8b36b57a11
共有 100 个文件被更改,包括 395 次插入7913 次删除
  1. 1 1
      bsp/allwinner_tina/.config
  2. 1 1
      bsp/allwinner_tina/rtconfig.h
  3. 1 1
      bsp/apollo2/rtconfig.h
  4. 1 1
      bsp/asm9260t/.config
  5. 1 1
      bsp/asm9260t/rtconfig.h
  6. 2 2
      bsp/gd32450z-eval/applications/application.c
  7. 2 2
      bsp/gd32450z-eval/applications/rtgui_demo.c
  8. 1 1
      bsp/gd32450z-eval/drivers/SConscript
  9. 1 1
      bsp/gd32450z-eval/drivers/drv_lcd.c
  10. 1 1
      bsp/gd32450z-eval/rtconfig.h
  11. 21 23
      bsp/imxrt1052-evk/.config
  12. 0 1
      bsp/imxrt1052-evk/BuildLog.log
  13. 1 1
      bsp/imxrt1052-evk/drivers/SConscript
  14. 1 1
      bsp/imxrt1052-evk/drivers/board.c
  15. 1 1
      bsp/imxrt1052-evk/drivers/drv_lcd.c
  16. 19 22
      bsp/imxrt1052-evk/rtconfig.h
  17. 1 1
      bsp/lpc54608-LPCXpresso/.config
  18. 1 1
      bsp/lpc54608-LPCXpresso/drivers/board.c
  19. 1 1
      bsp/lpc54608-LPCXpresso/rtconfig.h
  20. 74 43
      bsp/qemu-vexpress-a9/.config
  21. 1 1
      bsp/qemu-vexpress-a9/applications/lcd_init.c
  22. 1 1
      bsp/qemu-vexpress-a9/drivers/Kconfig
  23. 1 1
      bsp/qemu-vexpress-a9/drivers/drv_keyboard.c
  24. 1 1
      bsp/qemu-vexpress-a9/drivers/drv_mouse.c
  25. 68 40
      bsp/qemu-vexpress-a9/qemu.sh
  26. 40 36
      bsp/simulator/.config
  27. 1 1
      bsp/simulator/applications/application.c
  28. 1 1
      bsp/simulator/applications/platform.c
  29. 1 1
      bsp/simulator/drivers/SConscript
  30. 34 31
      bsp/simulator/rtconfig.h
  31. 1 1
      bsp/simulator/rtconfig.py
  32. 1 1
      bsp/stm32f10x-HAL/.config
  33. 1 1
      bsp/stm32f10x-HAL/rtconfig.h
  34. 1 1
      bsp/stm32f411-nucleo/.config
  35. 1 1
      bsp/stm32f411-nucleo/rtconfig.h
  36. 1 1
      bsp/stm32f429-apollo/.config
  37. 1 1
      bsp/stm32f429-apollo/applications/SConscript
  38. 2 2
      bsp/stm32f429-apollo/applications/application.c
  39. 2 2
      bsp/stm32f429-apollo/applications/rtgui_demo.c
  40. 1 1
      bsp/stm32f429-apollo/drivers/SConscript
  41. 1 1
      bsp/stm32f429-apollo/rtconfig.h
  42. 2 2
      bsp/stm32f429-armfly/applications/application.c
  43. 2 2
      bsp/stm32f429-armfly/applications/rtgui_demo.c
  44. 1 1
      bsp/stm32f429-armfly/rtconfig.h
  45. 1 1
      bsp/stm32f429-disco/rtconfig.h
  46. 1 1
      bsp/stm32f4xx-HAL/.config
  47. 1 1
      bsp/stm32f4xx-HAL/rtconfig.h
  48. 1 1
      bsp/stm32l475-iot-disco/applications/application.c
  49. 1 1
      bsp/stm32l476-nucleo/.config
  50. 1 1
      bsp/stm32l476-nucleo/applications/application.c
  51. 1 1
      bsp/stm32l476-nucleo/rtconfig.h
  52. 1 1
      bsp/tm4c129x/.config
  53. 1 1
      bsp/tm4c129x/rtconfig.h
  54. 1 1
      bsp/v2m-mps2/.config
  55. 1 1
      bsp/v2m-mps2/rtconfig.h
  56. 44 37
      bsp/x1000/.config
  57. 1 1
      bsp/x1000/drivers/Kconfig
  58. 1 1
      bsp/x1000/drivers/board.c
  59. 39 34
      bsp/x1000/rtconfig.h
  60. 0 2
      components/Kconfig
  61. 0 87
      components/gui/Kconfig
  62. 0 3
      components/gui/README.md
  63. 0 16
      components/gui/SConscript
  64. 0 10
      components/gui/example/SConscript
  65. 0 126
      components/gui/example/gui_demo.c
  66. 0 1400
      components/gui/example/resources.c
  67. 0 13
      components/gui/include/SConscript
  68. 0 224
      components/gui/include/rtgui/blit.h
  69. 0 192
      components/gui/include/rtgui/color.h
  70. 0 299
      components/gui/include/rtgui/dc.h
  71. 0 551
      components/gui/include/rtgui/dc_draw.h
  72. 0 64
      components/gui/include/rtgui/dc_trans.h
  73. 0 117
      components/gui/include/rtgui/driver.h
  74. 0 580
      components/gui/include/rtgui/event.h
  75. 0 78
      components/gui/include/rtgui/filerw.h
  76. 0 154
      components/gui/include/rtgui/font.h
  77. 0 62
      components/gui/include/rtgui/font_fnt.h
  78. 0 44
      components/gui/include/rtgui/font_freetype.h
  79. 0 100
      components/gui/include/rtgui/image.h
  80. 0 56
      components/gui/include/rtgui/image_bmp.h
  81. 0 58
      components/gui/include/rtgui/image_container.h
  82. 0 62
      components/gui/include/rtgui/image_hdc.h
  83. 0 305
      components/gui/include/rtgui/kbddef.h
  84. 0 76
      components/gui/include/rtgui/list.h
  85. 0 186
      components/gui/include/rtgui/matrix.h
  86. 0 132
      components/gui/include/rtgui/region.h
  87. 0 187
      components/gui/include/rtgui/rtgui.h
  88. 0 128
      components/gui/include/rtgui/rtgui_app.h
  89. 0 81
      components/gui/include/rtgui/rtgui_config.h
  90. 0 177
      components/gui/include/rtgui/rtgui_object.h
  91. 0 96
      components/gui/include/rtgui/rtgui_server.h
  92. 0 108
      components/gui/include/rtgui/rtgui_system.h
  93. 0 748
      components/gui/include/rtgui/tree.h
  94. 0 65
      components/gui/include/rtgui/widgets/box.h
  95. 0 80
      components/gui/include/rtgui/widgets/container.h
  96. 0 48
      components/gui/include/rtgui/widgets/title.h
  97. 0 209
      components/gui/include/rtgui/widgets/widget.h
  98. 0 215
      components/gui/include/rtgui/widgets/window.h
  99. 0 15
      components/gui/libraries/SConscript
  100. 0 436
      components/gui/libraries/freetype-2.6.2/CMakeLists.txt

+ 1 - 1
bsp/allwinner_tina/.config

@@ -166,7 +166,7 @@ CONFIG_RT_USING_POSIX=y
 #
 # RT-Thread UI Engine
 #
-# CONFIG_RT_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
 
 #
 # VBUS(Virtual Software BUS)

+ 1 - 1
bsp/allwinner_tina/rtconfig.h

@@ -150,7 +150,7 @@
 
 /* RT-Thread UI Engine */
 
-/* RT_USING_GUIENGINE is not set */
+/* PKG_USING_GUIENGINE is not set */
 
 /* VBUS(Virtual Software BUS) */
 

+ 1 - 1
bsp/apollo2/rtconfig.h

@@ -138,7 +138,7 @@
 
 /* RT-Thread UI Engine */
 
-/* RT_USING_GUIENGINE is not set */
+/* PKG_USING_GUIENGINE is not set */
 
 /* VBUS(Virtual Software BUS) */
 

+ 1 - 1
bsp/asm9260t/.config

@@ -120,7 +120,7 @@ CONFIG_RT_USING_LIBC=y
 #
 # RT-Thread UI Engine
 #
-# CONFIG_RT_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
 
 #
 # RT-Thread online packages

+ 1 - 1
bsp/asm9260t/rtconfig.h

@@ -106,7 +106,7 @@
 
 /* RT-Thread UI Engine */
 
-/* RT_USING_GUIENGINE is not set */
+/* PKG_USING_GUIENGINE is not set */
 
 /* RT-Thread online packages */
 

+ 2 - 2
bsp/gd32450z-eval/applications/application.c

@@ -17,7 +17,7 @@
 #include <rtthread.h>
 #include <finsh.h>
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 #include "rtgui_demo.h"
 #include <rtgui/driver.h>
 #endif
@@ -41,7 +41,7 @@ void rt_init_thread_entry(void* parameter)
     rt_components_init();
 #endif
     
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 	{
 		rt_device_t device;
 

+ 2 - 2
bsp/gd32450z-eval/applications/rtgui_demo.c

@@ -23,7 +23,7 @@
 #define DEBUG_PRINTF(...)   
 #endif
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 
 #include <rtgui/rtgui.h>
 #include <rtgui/rtgui_system.h>
@@ -122,4 +122,4 @@ int rt_gui_demo_init(void)
     
     return 0;
 }
-#endif /* RT_USING_GUIENGINE */
+#endif /* PKG_USING_GUIENGINE */

+ 1 - 1
bsp/gd32450z-eval/drivers/SConscript

@@ -18,7 +18,7 @@ if GetDepend('RT_USING_LWIP'):
     src += ['drv_enet.c', 'synopsys_emac.c']
     
 # add lcd drivers.
-if GetDepend('RT_USING_GUIENGINE'):
+if GetDepend('PKG_USING_GUIENGINE'):
     src += ['drv_lcd.c', 'gd32f450z_lcd_eval.c']
 
 # add spi flash drivers.

+ 1 - 1
bsp/gd32450z-eval/drivers/drv_lcd.c

@@ -18,7 +18,7 @@
 #include <board.h>
 #include <finsh.h>
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 
 
 #define RT_HW_LCD_WIDTH                ((uint16_t)320)     /* LCD PIXEL WIDTH            */

+ 1 - 1
bsp/gd32450z-eval/rtconfig.h

@@ -67,7 +67,7 @@
 
 /* SECTION: RTGUI support */
 /* using RTGUI support */
-#define RT_USING_GUIENGINE
+// #define PKG_USING_GUIENGINE
 
 /* name length of RTGUI object */
 #define RTGUI_NAME_MAX		16

+ 21 - 23
bsp/imxrt1052-evk/.config

@@ -60,6 +60,7 @@ CONFIG_ARCH_ARM_CORTEX_M7=y
 #
 CONFIG_RT_USING_COMPONENTS_INIT=y
 CONFIG_RT_USING_USER_MAIN=y
+CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
 
 #
 # C++ features
@@ -197,34 +198,14 @@ CONFIG_SO_REUSE=1
 CONFIG_LWIP_SO_RCVTIMEO=1
 CONFIG_LWIP_SO_SNDTIMEO=1
 CONFIG_LWIP_SO_RCVBUF=1
+# CONFIG_RT_LWIP_NETIF_LOOPBACK is not set
+CONFIG_LWIP_NETIF_LOOPBACK=0
 
 #
 # Modbus master and slave stack
 #
 # CONFIG_RT_USING_MODBUS is not set
 # CONFIG_LWIP_USING_DHCPD is not set
-# CONFIG_RT_USING_NETUTILS is not set
-
-#
-# RT-Thread UI Engine
-#
-CONFIG_RT_USING_GUIENGINE=y
-CONFIG_RTGUI_NAME_MAX=16
-CONFIG_RTGUI_USING_TTF=y
-CONFIG_UTF8_TO_UNICODE=y
-CONFIG_RTGUI_USING_FONT16=y
-CONFIG_RTGUI_USING_FONT12=y
-# CONFIG_RTGUI_USING_FONTHZ is not set
-# CONFIG_RTGUI_IMAGE_XPM is not set
-CONFIG_RTGUI_IMAGE_JPEG_NONE=y
-# CONFIG_RTGUI_IMAGE_JPEG is not set
-# CONFIG_RTGUI_IMAGE_TJPGD is not set
-# CONFIG_RTGUI_IMAGE_PNG_NONE is not set
-# CONFIG_RTGUI_IMAGE_PNG is not set
-CONFIG_RTGUI_IMAGE_LODEPNG=y
-# CONFIG_RTGUI_IMAGE_BMP is not set
-CONFIG_RTGUI_IMAGE_CONTAINER=y
-# CONFIG_RTGUI_USING_DEMO is not set
 
 #
 # VBUS(Virtual Software BUS)
@@ -250,8 +231,22 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y
 #
 # system packages
 #
-# CONFIG_PKG_USING_PARTITION is not set
+
+#
+# RT-Thread GUI Engine
+#
+# CONFIG_PKG_USING_GUIENGINE is not set
+# CONFIG_GUIENGINE_IMAGE_JPEG_NONE is not set
+# CONFIG_GUIENGINE_IMAGE_JPEG is not set
+# CONFIG_GUIENGINE_IMAGE_TJPGD is not set
+# CONFIG_GUIENGINE_IMAGE_PNG_NONE is not set
+# CONFIG_GUIENGINE_IMAGE_PNG is not set
+# CONFIG_GUIENGINE_IMAGE_LODEPNG is not set
+# CONFIG_PKG_USING_GUIENGINE_V200 is not set
+# CONFIG_PKG_USING_GUIENGINE_LATEST_VERSION is not set
 # CONFIG_PKG_USING_PERSIMMON is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
+# CONFIG_PKG_USING_PARTITION is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
 
@@ -282,6 +277,7 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y
 #
 # CONFIG_PKG_USING_WLAN_WICED is not set
 # CONFIG_PKG_USING_COAP is not set
+# CONFIG_PKG_USING_NOPOLL is not set
 
 #
 # security packages
@@ -314,11 +310,13 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y
 #
 # CONFIG_PKG_USING_FASTLZ is not set
 # CONFIG_PKG_USING_MINILZO is not set
+# CONFIG_PKG_USING_QUICKLZ is not set
 
 #
 # example package: hello
 #
 # CONFIG_PKG_USING_HELLO is not set
+# CONFIG_PKG_USING_MULTIBUTTON is not set
 CONFIG_SOC_IMXRT1052=y
 CONFIG_RT_USING_UART=y
 CONFIG_RT_USING_UART1=y

+ 0 - 1
bsp/imxrt1052-evk/BuildLog.log

@@ -1 +0,0 @@
-

+ 1 - 1
bsp/imxrt1052-evk/drivers/SConscript

@@ -22,7 +22,7 @@ if GetDepend('RT_USING_LWIP'):
 if GetDepend('RT_USING_SDIO'):
     src += ['drv_sdio.c']
     
-if GetDepend('RT_USING_RTGUI') or GetDepend('RT_USING_GUIENGINE'):
+if GetDepend('RT_USING_RTGUI') or GetDepend('PKG_USING_GUIENGINE'):
     src += ['drv_lcd.c', 'drv_ft5406.c', 'drv_i2c.c']
 
 group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES=CPPDEFINES)

+ 1 - 1
bsp/imxrt1052-evk/drivers/board.c

@@ -192,7 +192,7 @@ void rt_hw_board_init()
 #endif
 }
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 #include <rtgui/driver.h>
 #include "drv_lcd.h"
 

+ 1 - 1
bsp/imxrt1052-evk/drivers/drv_lcd.c

@@ -21,7 +21,7 @@
 
 //#define LCD_DEBUG
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 
 #define APP_HSW 41
 #define APP_HFP 4

+ 19 - 22
bsp/imxrt1052-evk/rtconfig.h

@@ -56,6 +56,7 @@
 
 #define RT_USING_COMPONENTS_INIT
 #define RT_USING_USER_MAIN
+#define RT_MAIN_THREAD_STACK_SIZE 2048
 
 /* C++ features */
 
@@ -182,32 +183,13 @@
 #define LWIP_SO_RCVTIMEO 1
 #define LWIP_SO_SNDTIMEO 1
 #define LWIP_SO_RCVBUF 1
+/* RT_LWIP_NETIF_LOOPBACK is not set */
+#define LWIP_NETIF_LOOPBACK 0
 
 /* Modbus master and slave stack */
 
 /* RT_USING_MODBUS is not set */
 /* LWIP_USING_DHCPD is not set */
-/* RT_USING_NETUTILS is not set */
-
-/* RT-Thread UI Engine */
-
-#define RT_USING_GUIENGINE
-#define RTGUI_NAME_MAX 16
-#define RTGUI_USING_TTF
-#define UTF8_TO_UNICODE
-#define RTGUI_USING_FONT16
-#define RTGUI_USING_FONT12
-/* RTGUI_USING_FONTHZ is not set */
-/* RTGUI_IMAGE_XPM is not set */
-#define RTGUI_IMAGE_JPEG_NONE
-/* RTGUI_IMAGE_JPEG is not set */
-/* RTGUI_IMAGE_TJPGD is not set */
-/* RTGUI_IMAGE_PNG_NONE is not set */
-/* RTGUI_IMAGE_PNG is not set */
-#define RTGUI_IMAGE_LODEPNG
-/* RTGUI_IMAGE_BMP is not set */
-#define RTGUI_IMAGE_CONTAINER
-/* RTGUI_USING_DEMO is not set */
 
 /* VBUS(Virtual Software BUS) */
 
@@ -227,8 +209,20 @@
 
 /* system packages */
 
-/* PKG_USING_PARTITION is not set */
+/* RT-Thread GUI Engine */
+
+/* PKG_USING_GUIENGINE is not set */
+/* GUIENGINE_IMAGE_JPEG_NONE is not set */
+/* GUIENGINE_IMAGE_JPEG is not set */
+/* GUIENGINE_IMAGE_TJPGD is not set */
+/* GUIENGINE_IMAGE_PNG_NONE is not set */
+/* GUIENGINE_IMAGE_PNG is not set */
+/* GUIENGINE_IMAGE_LODEPNG is not set */
+/* PKG_USING_GUIENGINE_V200 is not set */
+/* PKG_USING_GUIENGINE_LATEST_VERSION is not set */
 /* PKG_USING_PERSIMMON is not set */
+/* PKG_USING_LWEXT4 is not set */
+/* PKG_USING_PARTITION is not set */
 /* PKG_USING_SQLITE is not set */
 /* PKG_USING_RTI is not set */
 
@@ -254,6 +248,7 @@
 
 /* PKG_USING_WLAN_WICED is not set */
 /* PKG_USING_COAP is not set */
+/* PKG_USING_NOPOLL is not set */
 
 /* security packages */
 
@@ -281,10 +276,12 @@
 
 /* PKG_USING_FASTLZ is not set */
 /* PKG_USING_MINILZO is not set */
+/* PKG_USING_QUICKLZ is not set */
 
 /* example package: hello */
 
 /* PKG_USING_HELLO is not set */
+/* PKG_USING_MULTIBUTTON is not set */
 #define SOC_IMXRT1052
 #define RT_USING_UART
 #define RT_USING_UART1

+ 1 - 1
bsp/lpc54608-LPCXpresso/.config

@@ -203,7 +203,7 @@ CONFIG_LWIP_SO_RCVBUF=1
 #
 # RT-Thread UI Engine
 #
-# CONFIG_RT_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
 
 #
 # VBUS(Virtual Software BUS)

+ 1 - 1
bsp/lpc54608-LPCXpresso/drivers/board.c

@@ -80,7 +80,7 @@ void rt_hw_board_init()
 #endif
 }
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 #include <rtgui/driver.h>
 #include "drv_lcd.h"
 

+ 1 - 1
bsp/lpc54608-LPCXpresso/rtconfig.h

@@ -187,7 +187,7 @@
 
 /* RT-Thread UI Engine */
 
-/* RT_USING_GUIENGINE is not set */
+/* PKG_USING_GUIENGINE is not set */
 
 /* VBUS(Virtual Software BUS) */
 

+ 74 - 43
bsp/qemu-vexpress-a9/.config

@@ -18,8 +18,10 @@ CONFIG_RT_USING_OVERFLOW_CHECK=y
 CONFIG_RT_DEBUG_INIT=0
 CONFIG_RT_DEBUG_THREAD=0
 CONFIG_RT_USING_HOOK=y
-CONFIG_IDLE_THREAD_STACK_SIZE=256
-# CONFIG_RT_USING_TIMER_SOFT is not set
+CONFIG_IDLE_THREAD_STACK_SIZE=512
+CONFIG_RT_USING_TIMER_SOFT=y
+CONFIG_RT_TIMER_THREAD_PRIO=4
+CONFIG_RT_TIMER_THREAD_STACK_SIZE=1024
 
 #
 # Inter-Thread communication
@@ -40,6 +42,7 @@ CONFIG_RT_USING_MEMHEAP=y
 CONFIG_RT_USING_SMALL_MEM=y
 # CONFIG_RT_USING_SLAB is not set
 # CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set
+CONFIG_RT_USING_MEMTRACE=y
 CONFIG_RT_USING_HEAP=y
 
 #
@@ -57,17 +60,20 @@ CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
 #
 CONFIG_RT_USING_COMPONENTS_INIT=y
 CONFIG_RT_USING_USER_MAIN=y
+CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
 
 #
 # C++ features
 #
-# CONFIG_RT_USING_CPLUSPLUS is not set
+CONFIG_RT_USING_CPLUSPLUS=y
 
 #
 # Command shell
 #
 CONFIG_RT_USING_FINSH=y
+CONFIG_FINSH_THREAD_NAME="tshell"
 CONFIG_FINSH_USING_HISTORY=y
+CONFIG_FINSH_HISTORY_LINES=5
 CONFIG_FINSH_USING_SYMTAB=y
 CONFIG_FINSH_USING_DESCRIPTION=y
 CONFIG_FINSH_THREAD_PRIORITY=20
@@ -93,14 +99,14 @@ CONFIG_RT_USING_DFS_ELMFAT=y
 #
 CONFIG_RT_DFS_ELM_CODE_PAGE=437
 CONFIG_RT_DFS_ELM_WORD_ACCESS=y
-CONFIG_RT_DFS_ELM_USE_LFN_0=y
+# CONFIG_RT_DFS_ELM_USE_LFN_0 is not set
 # CONFIG_RT_DFS_ELM_USE_LFN_1 is not set
 # CONFIG_RT_DFS_ELM_USE_LFN_2 is not set
-# CONFIG_RT_DFS_ELM_USE_LFN_3 is not set
-CONFIG_RT_DFS_ELM_USE_LFN=0
+CONFIG_RT_DFS_ELM_USE_LFN_3=y
+CONFIG_RT_DFS_ELM_USE_LFN=3
 CONFIG_RT_DFS_ELM_MAX_LFN=255
 CONFIG_RT_DFS_ELM_DRIVES=2
-CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=512
+CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=4096
 # CONFIG_RT_DFS_ELM_USE_ERASE is not set
 CONFIG_RT_DFS_ELM_REENTRANT=y
 CONFIG_RT_USING_DFS_DEVFS=y
@@ -110,6 +116,7 @@ CONFIG_HAVE_SYS_SELECT_H=y
 CONFIG_RT_USING_DFS_ROMFS=y
 CONFIG_RT_USING_DFS_RAMFS=y
 # CONFIG_RT_USING_DFS_UFFS is not set
+# CONFIG_RT_USING_DFS_JFFS2 is not set
 # CONFIG_RT_USING_DFS_NFS is not set
 
 #
@@ -119,6 +126,7 @@ CONFIG_RT_USING_DEVICE_IPC=y
 CONFIG_RT_USING_SERIAL=y
 # CONFIG_RT_USING_CAN is not set
 # CONFIG_RT_USING_HWTIMER is not set
+# CONFIG_RT_USING_CPUTIME is not set
 CONFIG_RT_USING_I2C=y
 CONFIG_RT_USING_I2C_BITOPS=y
 CONFIG_RT_USING_PIN=y
@@ -126,8 +134,11 @@ CONFIG_RT_USING_MTD_NOR=y
 CONFIG_RT_USING_MTD_NAND=y
 CONFIG_RT_MTD_NAND_DEBUG=y
 CONFIG_RT_USING_RTC=y
+# CONFIG_RT_USING_SOFT_RTC is not set
+# CONFIG_RTC_SYNC_USING_NTP is not set
 CONFIG_RT_USING_SDIO=y
 CONFIG_RT_USING_SPI=y
+CONFIG_RT_USING_SPI_MSD=y
 CONFIG_RT_USING_SFUD=y
 CONFIG_RT_SFUD_USING_SFDP=y
 CONFIG_RT_SFUD_USING_FLASH_INFO_TABLE=y
@@ -153,6 +164,7 @@ CONFIG_RT_USING_PTHREADS=y
 CONFIG_RT_USING_POSIX=y
 CONFIG_RT_USING_POSIX_MMAP=y
 CONFIG_RT_USING_POSIX_TERMIOS=y
+CONFIG_RT_USING_POSIX_AIO=y
 
 #
 # Network stack
@@ -172,7 +184,6 @@ CONFIG_RT_LWIP_DNS=y
 CONFIG_RT_LWIP_DHCP=y
 CONFIG_IP_SOF_BROADCAST=1
 CONFIG_IP_SOF_BROADCAST_RECV=1
-# CONFIG_LWIP_USING_DHCPD is not set
 
 #
 # Static IPv4 Address
@@ -184,8 +195,7 @@ CONFIG_RT_LWIP_UDP=y
 CONFIG_RT_LWIP_TCP=y
 # CONFIG_RT_LWIP_RAW is not set
 # CONFIG_RT_LWIP_PPP is not set
-# CONFIG_RT_LWIP_PPPOE is not set
-# CONFIG_RT_LWIP_PPPOS is not set
+CONFIG_RT_MEMP_NUM_NETCONN=8
 CONFIG_RT_LWIP_PBUF_NUM=16
 CONFIG_RT_LWIP_RAW_PCB_NUM=4
 CONFIG_RT_LWIP_UDP_PCB_NUM=4
@@ -205,37 +215,34 @@ CONFIG_SO_REUSE=1
 CONFIG_LWIP_SO_RCVTIMEO=1
 CONFIG_LWIP_SO_SNDTIMEO=1
 CONFIG_LWIP_SO_RCVBUF=1
+# CONFIG_RT_LWIP_NETIF_LOOPBACK is not set
+CONFIG_LWIP_NETIF_LOOPBACK=0
 
 #
 # Modbus master and slave stack
 #
 # CONFIG_RT_USING_MODBUS is not set
-# CONFIG_RT_USING_NETUTILS is not set
-
-#
-# RT-Thread UI Engine
-#
-CONFIG_RT_USING_GUIENGINE=y
-CONFIG_RTGUI_NAME_MAX=16
-CONFIG_RTGUI_USING_TTF=y
-CONFIG_RTGUI_USING_FONT16=y
-CONFIG_RTGUI_USING_FONT12=y
-# CONFIG_RTGUI_USING_FONTHZ is not set
-# CONFIG_RTGUI_IMAGE_XPM is not set
-# CONFIG_RTGUI_IMAGE_JPEG_NONE is not set
-# CONFIG_RTGUI_IMAGE_JPEG is not set
-CONFIG_RTGUI_IMAGE_TJPGD=y
-# CONFIG_RTGUI_IMAGE_PNG_NONE is not set
-# CONFIG_RTGUI_IMAGE_PNG is not set
-CONFIG_RTGUI_IMAGE_LODEPNG=y
-# CONFIG_RTGUI_IMAGE_BMP is not set
-CONFIG_RTGUI_IMAGE_CONTAINER=y
+# CONFIG_LWIP_USING_DHCPD is not set
 
 #
 # VBUS(Virtual Software BUS)
 #
 # CONFIG_RT_USING_VBUS is not set
 
+#
+# Utilities
+#
+CONFIG_RT_USING_LOGTRACE=y
+CONFIG_LOG_TRACE_MAX_SESSION=16
+# CONFIG_LOG_TRACE_USING_LEVEL_NOTRACE is not set
+# CONFIG_LOG_TRACE_USING_LEVEL_ERROR is not set
+# CONFIG_LOG_TRACE_USING_LEVEL_WARNING is not set
+CONFIG_LOG_TRACE_USING_LEVEL_INFO=y
+# CONFIG_LOG_TRACE_USING_LEVEL_VERBOSE is not set
+# CONFIG_LOG_TRACE_USING_LEVEL_DEBUG is not set
+# CONFIG_LOG_TRACE_USING_MEMLOG is not set
+# CONFIG_RT_USING_RYM is not set
+
 #
 # RT-Thread online packages
 #
@@ -243,6 +250,20 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y
 #
 # system packages
 #
+
+#
+# RT-Thread GUI Engine
+#
+# CONFIG_PKG_USING_GUIENGINE is not set
+# CONFIG_GUIENGINE_IMAGE_JPEG_NONE is not set
+# CONFIG_GUIENGINE_IMAGE_JPEG is not set
+# CONFIG_GUIENGINE_IMAGE_TJPGD is not set
+# CONFIG_GUIENGINE_IMAGE_PNG_NONE is not set
+# CONFIG_GUIENGINE_IMAGE_PNG is not set
+# CONFIG_GUIENGINE_IMAGE_LODEPNG is not set
+# CONFIG_PKG_USING_GUIENGINE_V200 is not set
+# CONFIG_PKG_USING_GUIENGINE_LATEST_VERSION is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
 # CONFIG_PKG_USING_PARTITION is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
@@ -255,14 +276,33 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y
 # CONFIG_PKG_USING_MONGOOSE is not set
 # CONFIG_PKG_USING_WEBTERMINAL is not set
 # CONFIG_PKG_USING_CJSON is not set
+# CONFIG_PKG_USING_LJSON is not set
 # CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_NANOPB is not set
+# CONFIG_PKG_USING_GAGENT_CLOUD is not set
+
+#
+# Wi-Fi
+#
+
+#
+# Marvell WiFi
+#
+# CONFIG_PKG_USING_WLANMARVELL is not set
+
+#
+# Wiced WiFi
+#
+# CONFIG_PKG_USING_WLAN_WICED is not set
+# CONFIG_PKG_USING_COAP is not set
+# CONFIG_PKG_USING_NOPOLL is not set
 
 #
 # security packages
 #
 # CONFIG_PKG_USING_MBEDTLS is not set
 # CONFIG_PKG_USING_libsodium is not set
+# CONFIG_PKG_USING_TINYCRYPT is not set
 
 #
 # language packages
@@ -273,6 +313,7 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y
 #
 # multimedia packages
 #
+# CONFIG_PKG_USING_OPENMV is not set
 
 #
 # tools packages
@@ -280,30 +321,20 @@ CONFIG_RTGUI_IMAGE_CONTAINER=y
 # CONFIG_PKG_USING_CMBACKTRACE is not set
 # CONFIG_PKG_USING_EASYLOGGER is not set
 # CONFIG_PKG_USING_SYSTEMVIEW is not set
+# CONFIG_PKG_USING_IPERF is not set
 
 #
 # miscellaneous packages
 #
 # CONFIG_PKG_USING_FASTLZ is not set
 # CONFIG_PKG_USING_MINILZO is not set
+# CONFIG_PKG_USING_QUICKLZ is not set
 
 #
 # example package: hello
 #
 # CONFIG_PKG_USING_HELLO is not set
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_MDNS is not set
-# CONFIG_PKG_USING_UPNP is not set
+# CONFIG_PKG_USING_MULTIBUTTON is not set
 CONFIG_RT_USING_UART0=y
 CONFIG_RT_USING_UART1=y
-CONFIG_BSP_DRV_CLCD=y
 CONFIG_BSP_DRV_EMAC=y

+ 1 - 1
bsp/qemu-vexpress-a9/applications/lcd_init.c

@@ -1,6 +1,6 @@
 #include <rtthread.h>
 
-#if defined(RT_USING_RTGUI) || defined(RT_USING_GUIENGINE)
+#if defined(RT_USING_RTGUI) || defined(PKG_USING_GUIENGINE)
 
 #include <rtgui/driver.h>
 int lcd_init(void)

+ 1 - 1
bsp/qemu-vexpress-a9/drivers/Kconfig

@@ -8,7 +8,7 @@ config RT_USING_UART1
 
 config BSP_DRV_CLCD
     bool "CLCD driver"
-    depends on RT_USING_GUIENGINE
+    depends on PKG_USING_GUIENGINE
     default y
 
 config BSP_DRV_EMAC

+ 1 - 1
bsp/qemu-vexpress-a9/drivers/drv_keyboard.c

@@ -15,7 +15,7 @@
 #define KEYBOARD_ADDRESS    (0x10006000)
 #define KEYBOARD_IRQ_NUM    (IRQ_VEXPRESS_A9_KBD)
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 
 #include <rtgui/event.h>
 #include <rtgui/rtgui_server.h>

+ 1 - 1
bsp/qemu-vexpress-a9/drivers/drv_mouse.c

@@ -25,7 +25,7 @@
 #define MOUSE_BUTTON_MOVE    (0x40)
 #define MOUSE_BUTTON_WHELL   (0x80)
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 
 #include <rtgui/event.h>
 #include <rtgui/rtgui_server.h>

+ 68 - 40
bsp/qemu-vexpress-a9/qemu.sh

@@ -18,8 +18,10 @@
 #define RT_DEBUG_INIT 0
 #define RT_DEBUG_THREAD 0
 #define RT_USING_HOOK
-#define IDLE_THREAD_STACK_SIZE 256
-/* RT_USING_TIMER_SOFT is not set */
+#define IDLE_THREAD_STACK_SIZE 512
+#define RT_USING_TIMER_SOFT
+#define RT_TIMER_THREAD_PRIO 4
+#define RT_TIMER_THREAD_STACK_SIZE 1024
 
 /* Inter-Thread communication */
 
@@ -38,6 +40,7 @@
 #define RT_USING_SMALL_MEM
 /* RT_USING_SLAB is not set */
 /* RT_USING_MEMHEAP_AS_HEAP is not set */
+#define RT_USING_MEMTRACE
 #define RT_USING_HEAP
 
 /* Kernel Device Object */
@@ -53,15 +56,18 @@
 
 #define RT_USING_COMPONENTS_INIT
 #define RT_USING_USER_MAIN
+#define RT_MAIN_THREAD_STACK_SIZE 2048
 
 /* C++ features */
 
-/* RT_USING_CPLUSPLUS is not set */
+#define RT_USING_CPLUSPLUS
 
 /* Command shell */
 
 #define RT_USING_FINSH
+#define FINSH_THREAD_NAME "tshell"
 #define FINSH_USING_HISTORY
+#define FINSH_HISTORY_LINES 5
 #define FINSH_USING_SYMTAB
 #define FINSH_USING_DESCRIPTION
 #define FINSH_THREAD_PRIORITY 20
@@ -85,14 +91,14 @@
 
 #define RT_DFS_ELM_CODE_PAGE 437
 #define RT_DFS_ELM_WORD_ACCESS
-#define RT_DFS_ELM_USE_LFN_0
+/* RT_DFS_ELM_USE_LFN_0 is not set */
 /* RT_DFS_ELM_USE_LFN_1 is not set */
 /* RT_DFS_ELM_USE_LFN_2 is not set */
-/* RT_DFS_ELM_USE_LFN_3 is not set */
-#define RT_DFS_ELM_USE_LFN 0
+#define RT_DFS_ELM_USE_LFN_3
+#define RT_DFS_ELM_USE_LFN 3
 #define RT_DFS_ELM_MAX_LFN 255
 #define RT_DFS_ELM_DRIVES 2
-#define RT_DFS_ELM_MAX_SECTOR_SIZE 512
+#define RT_DFS_ELM_MAX_SECTOR_SIZE 4096
 /* RT_DFS_ELM_USE_ERASE is not set */
 #define RT_DFS_ELM_REENTRANT
 #define RT_USING_DFS_DEVFS
@@ -102,6 +108,7 @@
 #define RT_USING_DFS_ROMFS
 #define RT_USING_DFS_RAMFS
 /* RT_USING_DFS_UFFS is not set */
+/* RT_USING_DFS_JFFS2 is not set */
 /* RT_USING_DFS_NFS is not set */
 
 /* Device Drivers */
@@ -110,6 +117,7 @@
 #define RT_USING_SERIAL
 /* RT_USING_CAN is not set */
 /* RT_USING_HWTIMER is not set */
+/* RT_USING_CPUTIME is not set */
 #define RT_USING_I2C
 #define RT_USING_I2C_BITOPS
 #define RT_USING_PIN
@@ -117,8 +125,11 @@
 #define RT_USING_MTD_NAND
 #define RT_MTD_NAND_DEBUG
 #define RT_USING_RTC
+/* RT_USING_SOFT_RTC is not set */
+/* RTC_SYNC_USING_NTP is not set */
 #define RT_USING_SDIO
 #define RT_USING_SPI
+#define RT_USING_SPI_MSD
 #define RT_USING_SFUD
 #define RT_SFUD_USING_SFDP
 #define RT_SFUD_USING_FLASH_INFO_TABLE
@@ -142,6 +153,7 @@
 #define RT_USING_POSIX
 #define RT_USING_POSIX_MMAP
 #define RT_USING_POSIX_TERMIOS
+#define RT_USING_POSIX_AIO
 
 /* Network stack */
 
@@ -158,7 +170,6 @@
 #define RT_LWIP_DHCP
 #define IP_SOF_BROADCAST 1
 #define IP_SOF_BROADCAST_RECV 1
-/* LWIP_USING_DHCPD is not set */
 
 /* Static IPv4 Address */
 
@@ -169,8 +180,7 @@
 #define RT_LWIP_TCP
 /* RT_LWIP_RAW is not set */
 /* RT_LWIP_PPP is not set */
-/* RT_LWIP_PPPOE is not set */
-/* RT_LWIP_PPPOS is not set */
+#define RT_MEMP_NUM_NETCONN 8
 #define RT_LWIP_PBUF_NUM 16
 #define RT_LWIP_RAW_PCB_NUM 4
 #define RT_LWIP_UDP_PCB_NUM 4
@@ -190,38 +200,47 @@
 #define LWIP_SO_RCVTIMEO 1
 #define LWIP_SO_SNDTIMEO 1
 #define LWIP_SO_RCVBUF 1
+/* RT_LWIP_NETIF_LOOPBACK is not set */
+#define LWIP_NETIF_LOOPBACK 0
 
 /* Modbus master and slave stack */
 
 /* RT_USING_MODBUS is not set */
-/* RT_USING_NETUTILS is not set */
-
-/* RT-Thread UI Engine */
-
-#define RT_USING_GUIENGINE
-#define RTGUI_NAME_MAX 16
-#define RTGUI_USING_TTF
-#define RTGUI_USING_FONT16
-#define RTGUI_USING_FONT12
-/* RTGUI_USING_FONTHZ is not set */
-/* RTGUI_IMAGE_XPM is not set */
-/* RTGUI_IMAGE_JPEG_NONE is not set */
-/* RTGUI_IMAGE_JPEG is not set */
-#define RTGUI_IMAGE_TJPGD
-/* RTGUI_IMAGE_PNG_NONE is not set */
-/* RTGUI_IMAGE_PNG is not set */
-#define RTGUI_IMAGE_LODEPNG
-/* RTGUI_IMAGE_BMP is not set */
-#define RTGUI_IMAGE_CONTAINER
+/* LWIP_USING_DHCPD is not set */
 
 /* VBUS(Virtual Software BUS) */
 
 /* RT_USING_VBUS is not set */
 
+/* Utilities */
+
+#define RT_USING_LOGTRACE
+#define LOG_TRACE_MAX_SESSION 16
+/* LOG_TRACE_USING_LEVEL_NOTRACE is not set */
+/* LOG_TRACE_USING_LEVEL_ERROR is not set */
+/* LOG_TRACE_USING_LEVEL_WARNING is not set */
+#define LOG_TRACE_USING_LEVEL_INFO
+/* LOG_TRACE_USING_LEVEL_VERBOSE is not set */
+/* LOG_TRACE_USING_LEVEL_DEBUG is not set */
+/* LOG_TRACE_USING_MEMLOG is not set */
+/* RT_USING_RYM is not set */
+
 /* RT-Thread online packages */
 
 /* system packages */
 
+/* RT-Thread GUI Engine */
+
+/* PKG_USING_GUIENGINE is not set */
+/* GUIENGINE_IMAGE_JPEG_NONE is not set */
+/* GUIENGINE_IMAGE_JPEG is not set */
+/* GUIENGINE_IMAGE_TJPGD is not set */
+/* GUIENGINE_IMAGE_PNG_NONE is not set */
+/* GUIENGINE_IMAGE_PNG is not set */
+/* GUIENGINE_IMAGE_LODEPNG is not set */
+/* PKG_USING_GUIENGINE_V200 is not set */
+/* PKG_USING_GUIENGINE_LATEST_VERSION is not set */
+/* PKG_USING_LWEXT4 is not set */
 /* PKG_USING_PARTITION is not set */
 /* PKG_USING_SQLITE is not set */
 /* PKG_USING_RTI is not set */
@@ -233,13 +252,28 @@
 /* PKG_USING_MONGOOSE is not set */
 /* PKG_USING_WEBTERMINAL is not set */
 /* PKG_USING_CJSON is not set */
+/* PKG_USING_LJSON is not set */
 /* PKG_USING_EZXML is not set */
 /* PKG_USING_NANOPB is not set */
+/* PKG_USING_GAGENT_CLOUD is not set */
+
+/* Wi-Fi */
+
+/* Marvell WiFi */
+
+/* PKG_USING_WLANMARVELL is not set */
+
+/* Wiced WiFi */
+
+/* PKG_USING_WLAN_WICED is not set */
+/* PKG_USING_COAP is not set */
+/* PKG_USING_NOPOLL is not set */
 
 /* security packages */
 
 /* PKG_USING_MBEDTLS is not set */
 /* PKG_USING_libsodium is not set */
+/* PKG_USING_TINYCRYPT is not set */
 
 /* language packages */
 
@@ -248,33 +282,27 @@
 
 /* multimedia packages */
 
+/* PKG_USING_OPENMV is not set */
+
 /* tools packages */
 
 /* PKG_USING_CMBACKTRACE is not set */
 /* PKG_USING_EASYLOGGER is not set */
 /* PKG_USING_SYSTEMVIEW is not set */
+/* PKG_USING_IPERF is not set */
 
 /* miscellaneous packages */
 
 /* PKG_USING_FASTLZ is not set */
 /* PKG_USING_MINILZO is not set */
+/* PKG_USING_QUICKLZ is not set */
 
 /* example package: hello */
 
 /* PKG_USING_HELLO is not set */
-
-/* Privated Packages of RealThread */
-
-/* PKG_USING_CODEC is not set */
-/* PKG_USING_PLAYER is not set */
-
-/* Network Utilities */
-
-/* PKG_USING_MDNS is not set */
-/* PKG_USING_UPNP is not set */
+/* PKG_USING_MULTIBUTTON is not set */
 #define RT_USING_UART0
 #define RT_USING_UART1
-#define BSP_DRV_CLCD
 #define BSP_DRV_EMAC
 
 #endif

+ 40 - 36
bsp/simulator/.config

@@ -39,6 +39,7 @@ CONFIG_RT_USING_MEMPOOL=y
 # CONFIG_RT_USING_NOHEAP is not set
 CONFIG_RT_USING_SMALL_MEM=y
 # CONFIG_RT_USING_SLAB is not set
+# CONFIG_RT_USING_MEMTRACE is not set
 CONFIG_RT_USING_HEAP=y
 
 #
@@ -65,7 +66,9 @@ CONFIG_RT_CONSOLE_DEVICE_NAME="console"
 # Command shell
 #
 CONFIG_RT_USING_FINSH=y
+CONFIG_FINSH_THREAD_NAME="tshell"
 CONFIG_FINSH_USING_HISTORY=y
+CONFIG_FINSH_HISTORY_LINES=5
 CONFIG_FINSH_USING_SYMTAB=y
 CONFIG_FINSH_USING_DESCRIPTION=y
 CONFIG_FINSH_THREAD_PRIORITY=20
@@ -106,6 +109,8 @@ CONFIG_RT_USING_DFS_DEVFS=y
 # CONFIG_RT_USING_DFS_ROMFS is not set
 # CONFIG_RT_USING_DFS_RAMFS is not set
 # CONFIG_RT_USING_DFS_UFFS is not set
+# CONFIG_RT_USING_DFS_JFFS2 is not set
+# CONFIG_RT_USING_DFS_NFS is not set
 
 #
 # Device Drivers
@@ -114,6 +119,7 @@ CONFIG_RT_USING_DEVICE_IPC=y
 CONFIG_RT_USING_SERIAL=y
 # CONFIG_RT_USING_CAN is not set
 # CONFIG_RT_USING_HWTIMER is not set
+# CONFIG_RT_USING_CPUTIME is not set
 # CONFIG_RT_USING_I2C is not set
 # CONFIG_RT_USING_PIN is not set
 # CONFIG_RT_USING_MTD_NOR is not set
@@ -150,26 +156,6 @@ CONFIG_RT_USING_SERIAL=y
 #
 # CONFIG_RT_USING_MODBUS is not set
 
-#
-# RT-Thread UI Engine
-#
-CONFIG_RT_USING_GUIENGINE=y
-CONFIG_RTGUI_NAME_MAX=16
-# CONFIG_RTGUI_USING_TTF is not set
-CONFIG_RTGUI_USING_FONT16=y
-CONFIG_RTGUI_USING_FONT12=y
-# CONFIG_RTGUI_USING_FONTHZ is not set
-# CONFIG_RTGUI_IMAGE_XPM is not set
-CONFIG_RTGUI_IMAGE_JPEG_NONE=y
-# CONFIG_RTGUI_IMAGE_JPEG is not set
-# CONFIG_RTGUI_IMAGE_TJPGD is not set
-# CONFIG_RTGUI_IMAGE_PNG_NONE is not set
-# CONFIG_RTGUI_IMAGE_PNG is not set
-CONFIG_RTGUI_IMAGE_LODEPNG=y
-# CONFIG_RTGUI_IMAGE_BMP is not set
-CONFIG_RTGUI_IMAGE_CONTAINER=y
-CONFIG_RTGUI_USING_DEMO=y
-
 #
 # VBUS(Virtual Software BUS)
 #
@@ -188,8 +174,21 @@ CONFIG_RTGUI_USING_DEMO=y
 #
 # system packages
 #
+
+#
+# RT-Thread GUI Engine
+#
+# CONFIG_PKG_USING_GUIENGINE is not set
+# CONFIG_GUIENGINE_IMAGE_JPEG_NONE is not set
+# CONFIG_GUIENGINE_IMAGE_JPEG is not set
+# CONFIG_GUIENGINE_IMAGE_TJPGD is not set
+# CONFIG_GUIENGINE_IMAGE_PNG_NONE is not set
+# CONFIG_GUIENGINE_IMAGE_PNG is not set
+# CONFIG_GUIENGINE_IMAGE_LODEPNG is not set
+# CONFIG_PKG_USING_GUIENGINE_V200 is not set
+# CONFIG_PKG_USING_GUIENGINE_LATEST_VERSION is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
 # CONFIG_PKG_USING_PARTITION is not set
-CONFIG_RT_USING_PERSIMMON_EXAMPLE=y
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
 
@@ -201,8 +200,26 @@ CONFIG_RT_USING_PERSIMMON_EXAMPLE=y
 # CONFIG_PKG_USING_MONGOOSE is not set
 # CONFIG_PKG_USING_WEBTERMINAL is not set
 # CONFIG_PKG_USING_CJSON is not set
+# CONFIG_PKG_USING_LJSON is not set
 # CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_NANOPB is not set
+# CONFIG_PKG_USING_GAGENT_CLOUD is not set
+
+#
+# Wi-Fi
+#
+
+#
+# Marvell WiFi
+#
+# CONFIG_PKG_USING_WLANMARVELL is not set
+
+#
+# Wiced WiFi
+#
+# CONFIG_PKG_USING_WLAN_WICED is not set
+# CONFIG_PKG_USING_COAP is not set
+# CONFIG_PKG_USING_NOPOLL is not set
 
 #
 # security packages
@@ -237,24 +254,11 @@ CONFIG_PKG_USING_FASTLZ=y
 CONFIG_PKG_FASTLZ_PATH="/packages/misc/fastlz"
 CONFIG_PKG_FASTLZ_VER="v1.0.0"
 # CONFIG_PKG_USING_MINILZO is not set
+# CONFIG_PKG_USING_QUICKLZ is not set
 
 #
 # example package: hello
 #
 # CONFIG_PKG_USING_HELLO is not set
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-CONFIG_PKG_USING_PERSIMMON_SRC=y
-CONFIG_PKG_PERSIMMON_SRC_PATH="/realthread-packages/persimmon-src"
-# CONFIG_PKG_USING_PERSIMMON_SRC_v1_0_0 is not set
-CONFIG_PKG_USING_PERSIMMON_LATEST_VERSION=y
-CONFIG_PKG_PERSIMMON_SRC_VER="latest_version"
-
-#
-# Network Utilities
-#
+# CONFIG_PKG_USING_MULTIBUTTON is not set
 CONFIG_RT_USING_DFS_WINSHAREDIR=y

+ 1 - 1
bsp/simulator/applications/application.c

@@ -36,7 +36,7 @@ void rt_init_thread_entry(void *parameter)
     platform_init();
     mnt_init();
 
-#if defined(RT_USING_GUIENGINE) && defined(RTGUI_USING_DEMO)
+#if defined(PKG_USING_GUIENGINE) && defined(RTGUI_USING_DEMO)
     {
         extern int rt_gui_demo_init(void);
         rt_gui_demo_init();

+ 1 - 1
bsp/simulator/applications/platform.c

@@ -29,7 +29,7 @@ int platform_init(void)
 
 #endif /* RT_USING_DFS */
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
     {
         extern void rt_hw_sdl_start(void);
         extern int rtgui_system_server_init(void);

+ 1 - 1
bsp/simulator/drivers/SConscript

@@ -8,7 +8,7 @@ LIBPATH = []
 CPPPATH = [cwd]
 
 # remove no need file.
-if GetDepend('RT_USING_GUIENGINE') == False:
+if GetDepend('PKG_USING_GUIENGINE') == False:
     SrcRemove(src, 'sdl_fb.c')
 else:
     LIBS.append('SDL2')

+ 34 - 31
bsp/simulator/rtconfig.h

@@ -37,6 +37,7 @@
 /* RT_USING_NOHEAP is not set */
 #define RT_USING_SMALL_MEM
 /* RT_USING_SLAB is not set */
+/* RT_USING_MEMTRACE is not set */
 #define RT_USING_HEAP
 
 /* Kernel Device Object */
@@ -59,7 +60,9 @@
 /* Command shell */
 
 #define RT_USING_FINSH
+#define FINSH_THREAD_NAME "tshell"
 #define FINSH_USING_HISTORY
+#define FINSH_HISTORY_LINES 5
 #define FINSH_USING_SYMTAB
 #define FINSH_USING_DESCRIPTION
 #define FINSH_THREAD_PRIORITY 20
@@ -98,6 +101,8 @@
 /* RT_USING_DFS_ROMFS is not set */
 /* RT_USING_DFS_RAMFS is not set */
 /* RT_USING_DFS_UFFS is not set */
+/* RT_USING_DFS_JFFS2 is not set */
+/* RT_USING_DFS_NFS is not set */
 
 /* Device Drivers */
 
@@ -105,6 +110,7 @@
 #define RT_USING_SERIAL
 /* RT_USING_CAN is not set */
 /* RT_USING_HWTIMER is not set */
+/* RT_USING_CPUTIME is not set */
 /* RT_USING_I2C is not set */
 /* RT_USING_PIN is not set */
 /* RT_USING_MTD_NOR is not set */
@@ -135,25 +141,6 @@
 
 /* RT_USING_MODBUS is not set */
 
-/* RT-Thread UI Engine */
-
-#define RT_USING_GUIENGINE
-#define RTGUI_NAME_MAX 16
-/* RTGUI_USING_TTF is not set */
-#define RTGUI_USING_FONT16
-#define RTGUI_USING_FONT12
-/* RTGUI_USING_FONTHZ is not set */
-/* RTGUI_IMAGE_XPM is not set */
-#define RTGUI_IMAGE_JPEG_NONE
-/* RTGUI_IMAGE_JPEG is not set */
-/* RTGUI_IMAGE_TJPGD is not set */
-/* RTGUI_IMAGE_PNG_NONE is not set */
-/* RTGUI_IMAGE_PNG is not set */
-#define RTGUI_IMAGE_LODEPNG
-/* RTGUI_IMAGE_BMP is not set */
-#define RTGUI_IMAGE_CONTAINER
-#define RTGUI_USING_DEMO
-
 /* VBUS(Virtual Software BUS) */
 
 /* RT_USING_VBUS is not set */
@@ -167,8 +154,19 @@
 
 /* system packages */
 
+/* RT-Thread GUI Engine */
+
+/* PKG_USING_GUIENGINE is not set */
+/* GUIENGINE_IMAGE_JPEG_NONE is not set */
+/* GUIENGINE_IMAGE_JPEG is not set */
+/* GUIENGINE_IMAGE_TJPGD is not set */
+/* GUIENGINE_IMAGE_PNG_NONE is not set */
+/* GUIENGINE_IMAGE_PNG is not set */
+/* GUIENGINE_IMAGE_LODEPNG is not set */
+/* PKG_USING_GUIENGINE_V200 is not set */
+/* PKG_USING_GUIENGINE_LATEST_VERSION is not set */
+/* PKG_USING_LWEXT4 is not set */
 /* PKG_USING_PARTITION is not set */
-#define RT_USING_PERSIMMON_EXAMPLE
 /* PKG_USING_SQLITE is not set */
 /* PKG_USING_RTI is not set */
 
@@ -179,8 +177,22 @@
 /* PKG_USING_MONGOOSE is not set */
 /* PKG_USING_WEBTERMINAL is not set */
 /* PKG_USING_CJSON is not set */
+/* PKG_USING_LJSON is not set */
 /* PKG_USING_EZXML is not set */
 /* PKG_USING_NANOPB is not set */
+/* PKG_USING_GAGENT_CLOUD is not set */
+
+/* Wi-Fi */
+
+/* Marvell WiFi */
+
+/* PKG_USING_WLANMARVELL is not set */
+
+/* Wiced WiFi */
+
+/* PKG_USING_WLAN_WICED is not set */
+/* PKG_USING_COAP is not set */
+/* PKG_USING_NOPOLL is not set */
 
 /* security packages */
 
@@ -208,21 +220,12 @@
 
 #define PKG_USING_FASTLZ
 /* PKG_USING_MINILZO is not set */
+/* PKG_USING_QUICKLZ is not set */
 
 /* example package: hello */
 
 /* PKG_USING_HELLO is not set */
-
-/* Privated Packages of RealThread */
-
-/* PKG_USING_CODEC is not set */
-/* PKG_USING_PLAYER is not set */
-#define PKG_USING_PERSIMMON_SRC
-/* PKG_USING_PERSIMMON_SRC_v1_0_0 is not set */
-#define PKG_USING_PERSIMMON_LATEST_VERSION
-
-/* Network Utilities */
-
+/* PKG_USING_MULTIBUTTON is not set */
 #define RT_USING_DFS_WINSHAREDIR
 #include "rtconfig_project.h"
 

+ 1 - 1
bsp/simulator/rtconfig.py

@@ -50,7 +50,7 @@ if PLATFORM == 'gcc':
 
     DEVICE = ' -ffunction-sections -fdata-sections'
     DEVICE = '  '
-    CFLAGS = DEVICE + ' -I/usr/include -w -D_REENTRANT'
+    CFLAGS = DEVICE + ' -I/usr/include -w -D_REENTRANT -D_LINUX -DHAVE_SYS_SIGNALS'
     AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp'
     #LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread-linux.map -lpthread'
     LFLAGS = DEVICE + ' -Wl,-Map=rtthread-linux.map -pthread -T gcc.ld'

+ 1 - 1
bsp/stm32f10x-HAL/.config

@@ -133,7 +133,7 @@ CONFIG_RT_USING_LIBC=y
 #
 # RT-Thread UI Engine
 #
-# CONFIG_RT_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
 
 #
 # VBUS(Virtual Software BUS)

+ 1 - 1
bsp/stm32f10x-HAL/rtconfig.h

@@ -118,7 +118,7 @@
 
 /* RT-Thread UI Engine */
 
-/* RT_USING_GUIENGINE is not set */
+/* PKG_USING_GUIENGINE is not set */
 
 /* VBUS(Virtual Software BUS) */
 

+ 1 - 1
bsp/stm32f411-nucleo/.config

@@ -118,7 +118,7 @@ CONFIG_RT_USING_SERIAL=y
 #
 # RT-Thread UI Engine
 #
-# CONFIG_RT_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
 
 #
 # RT-Thread online packages

+ 1 - 1
bsp/stm32f411-nucleo/rtconfig.h

@@ -104,7 +104,7 @@
 
 /* RT-Thread UI Engine */
 
-/* RT_USING_GUIENGINE is not set */
+/* PKG_USING_GUIENGINE is not set */
 
 /* RT-Thread online packages */
 

+ 1 - 1
bsp/stm32f429-apollo/.config

@@ -216,7 +216,7 @@ CONFIG_LWIP_SO_RCVBUF=1
 #
 # RT-Thread UI Engine
 #
-# CONFIG_RT_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
 
 #
 # VBUS(Virtual Software BUS)

+ 1 - 1
bsp/stm32f429-apollo/applications/SConscript

@@ -9,7 +9,7 @@ startup.c
 """)
 
 # add UI engine demo.
-if GetDepend('RT_USING_GUIENGINE'):
+if GetDepend('PKG_USING_GUIENGINE'):
     src += ['rtgui_demo.c']
 
 group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH)

+ 2 - 2
bsp/stm32f429-apollo/applications/application.c

@@ -41,7 +41,7 @@
 #include <gdb_stub.h>
 #endif
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 #include "rtgui_demo.h"
 #include <rtgui/driver.h>
 #endif
@@ -123,7 +123,7 @@ void rt_init_thread_entry(void* parameter)
         
 #endif /* DFS */
         
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 	{
 		rt_device_t device;
 

+ 2 - 2
bsp/stm32f429-apollo/applications/rtgui_demo.c

@@ -30,7 +30,7 @@
 #define DEBUG_PRINTF(...)   
 #endif
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 
 struct rtgui_win *main_win;
 rt_bool_t dc_event_handler(struct rtgui_object *object, rtgui_event_t *event);
@@ -125,4 +125,4 @@ int rt_gui_demo_init(void)
     
     return 0;
 }
-#endif /* RT_USING_GUIENGINE */
+#endif /* PKG_USING_GUIENGINE */

+ 1 - 1
bsp/stm32f429-apollo/drivers/SConscript

@@ -36,7 +36,7 @@ if GetDepend('RT_USING_SFUD'):
     src += ['drv_spi_flash.c']
 
 # add lcd drivers.
-if GetDepend('RT_USING_GUIENGINE'):
+if GetDepend('PKG_USING_GUIENGINE'):
     src += ['drv_lcd.c']
 
 CPPPATH = [cwd]

+ 1 - 1
bsp/stm32f429-apollo/rtconfig.h

@@ -200,7 +200,7 @@
 
 /* RT-Thread UI Engine */
 
-/* RT_USING_GUIENGINE is not set */
+/* PKG_USING_GUIENGINE is not set */
 
 /* VBUS(Virtual Software BUS) */
 

+ 2 - 2
bsp/stm32f429-armfly/applications/application.c

@@ -26,7 +26,7 @@
 #include <dfs_posix.h>
 #endif
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 #include "rtgui_demo.h"
 #include <rtgui/driver.h>
 #endif
@@ -63,7 +63,7 @@ void rt_init_thread_entry(void* parameter)
         
 #endif /* DFS */
     
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 	{
 		rt_device_t device;
 

+ 2 - 2
bsp/stm32f429-armfly/applications/rtgui_demo.c

@@ -24,7 +24,7 @@
 #define DEBUG_PRINTF(...)   
 #endif
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 #include <rtgui/rtgui.h>
 #include <rtgui/rtgui_system.h>
 #include <rtgui/rtgui_app.h>
@@ -123,4 +123,4 @@ int rt_gui_demo_init(void)
     
     return 0;
 }
-#endif /* RT_USING_GUIENGINE */
+#endif /* PKG_USING_GUIENGINE */

+ 1 - 1
bsp/stm32f429-armfly/rtconfig.h

@@ -69,7 +69,7 @@
 
 /* SECTION: RTGUI support */
 /* using RTGUI support */
-#define RT_USING_GUIENGINE
+// #define PKG_USING_GUIENGINE
 
 /* name length of RTGUI object */
 #define RTGUI_NAME_MAX		16

+ 1 - 1
bsp/stm32f429-disco/rtconfig.h

@@ -104,7 +104,7 @@
 
 /* RT-Thread UI Engine */
 
-/* RT_USING_GUIENGINE is not set */
+/* PKG_USING_GUIENGINE is not set */
 
 /* RT-Thread online packages */
 

+ 1 - 1
bsp/stm32f4xx-HAL/.config

@@ -129,7 +129,7 @@ CONFIG_RT_USING_PIN=y
 #
 # RT-Thread UI Engine
 #
-# CONFIG_RT_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
 
 #
 # VBUS(Virtual Software BUS)

+ 1 - 1
bsp/stm32f4xx-HAL/rtconfig.h

@@ -114,7 +114,7 @@
 
 /* RT-Thread UI Engine */
 
-/* RT_USING_GUIENGINE is not set */
+/* PKG_USING_GUIENGINE is not set */
 
 /* VBUS(Virtual Software BUS) */
 

+ 1 - 1
bsp/stm32l475-iot-disco/applications/application.c

@@ -39,7 +39,7 @@
 #include <gdb_stub.h>
 #endif
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 #include "rtgui_demo.h"
 #include <rtgui/driver.h>
 #endif

+ 1 - 1
bsp/stm32l476-nucleo/.config

@@ -123,7 +123,7 @@ CONFIG_RT_USING_PIN=y
 #
 # RT-Thread UI Engine
 #
-# CONFIG_RT_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
 
 #
 # VBUS(Virtual Software BUS)

+ 1 - 1
bsp/stm32l476-nucleo/applications/application.c

@@ -48,7 +48,7 @@
 #include <gdb_stub.h>
 #endif
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 #include "rtgui_demo.h"
 #include <rtgui/driver.h>
 #endif

+ 1 - 1
bsp/stm32l476-nucleo/rtconfig.h

@@ -109,7 +109,7 @@
 
 /* RT-Thread UI Engine */
 
-/* RT_USING_GUIENGINE is not set */
+/* PKG_USING_GUIENGINE is not set */
 
 /* VBUS(Virtual Software BUS) */
 

+ 1 - 1
bsp/tm4c129x/.config

@@ -161,7 +161,7 @@ CONFIG_LWIP_SO_RCVBUF=1
 #
 # RT-Thread UI Engine
 #
-# CONFIG_RT_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
 
 #
 # RT-Thread online packages

+ 1 - 1
bsp/tm4c129x/rtconfig.h

@@ -146,7 +146,7 @@
 
 /* RT-Thread UI Engine */
 
-/* RT_USING_GUIENGINE is not set */
+/* PKG_USING_GUIENGINE is not set */
 
 /* RT-Thread online packages */
 

+ 1 - 1
bsp/v2m-mps2/.config

@@ -136,7 +136,7 @@ CONFIG_RT_USING_LIBC=y
 #
 # RT-Thread UI Engine
 #
-# CONFIG_RT_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
 
 #
 # VBUS(Virtual Software BUS)

+ 1 - 1
bsp/v2m-mps2/rtconfig.h

@@ -121,7 +121,7 @@
 
 /* RT-Thread UI Engine */
 
-/* RT_USING_GUIENGINE is not set */
+/* PKG_USING_GUIENGINE is not set */
 
 /* VBUS(Virtual Software BUS) */
 

+ 44 - 37
bsp/x1000/.config

@@ -39,6 +39,7 @@ CONFIG_RT_USING_MEMPOOL=y
 # CONFIG_RT_USING_NOHEAP is not set
 CONFIG_RT_USING_SMALL_MEM=y
 # CONFIG_RT_USING_SLAB is not set
+# CONFIG_RT_USING_MEMTRACE is not set
 CONFIG_RT_USING_HEAP=y
 
 #
@@ -58,6 +59,7 @@ CONFIG_ARCH_MIPS_XBURST=y
 #
 CONFIG_RT_USING_COMPONENTS_INIT=y
 CONFIG_RT_USING_USER_MAIN=y
+CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
 
 #
 # C++ features
@@ -68,7 +70,9 @@ CONFIG_RT_USING_USER_MAIN=y
 # Command shell
 #
 CONFIG_RT_USING_FINSH=y
+CONFIG_FINSH_THREAD_NAME="tshell"
 CONFIG_FINSH_USING_HISTORY=y
+CONFIG_FINSH_HISTORY_LINES=5
 CONFIG_FINSH_USING_SYMTAB=y
 CONFIG_FINSH_USING_DESCRIPTION=y
 CONFIG_FINSH_THREAD_PRIORITY=20
@@ -109,6 +113,7 @@ CONFIG_RT_USING_DFS_DEVFS=y
 # CONFIG_RT_USING_DFS_ROMFS is not set
 # CONFIG_RT_USING_DFS_RAMFS is not set
 # CONFIG_RT_USING_DFS_UFFS is not set
+# CONFIG_RT_USING_DFS_JFFS2 is not set
 # CONFIG_RT_USING_DFS_NFS is not set
 
 #
@@ -118,6 +123,7 @@ CONFIG_RT_USING_DEVICE_IPC=y
 CONFIG_RT_USING_SERIAL=y
 # CONFIG_RT_USING_CAN is not set
 # CONFIG_RT_USING_HWTIMER is not set
+# CONFIG_RT_USING_CPUTIME is not set
 CONFIG_RT_USING_I2C=y
 CONFIG_RT_USING_I2C_BITOPS=y
 CONFIG_RT_USING_PIN=y
@@ -191,33 +197,14 @@ CONFIG_SO_REUSE=1
 CONFIG_LWIP_SO_RCVTIMEO=1
 CONFIG_LWIP_SO_SNDTIMEO=1
 CONFIG_LWIP_SO_RCVBUF=1
+# CONFIG_RT_LWIP_NETIF_LOOPBACK is not set
+CONFIG_LWIP_NETIF_LOOPBACK=0
 
 #
 # Modbus master and slave stack
 #
 # CONFIG_RT_USING_MODBUS is not set
 # CONFIG_LWIP_USING_DHCPD is not set
-# CONFIG_RT_USING_NETUTILS is not set
-
-#
-# RT-Thread UI Engine
-#
-CONFIG_RT_USING_GUIENGINE=y
-CONFIG_RTGUI_NAME_MAX=16
-# CONFIG_RTGUI_USING_TTF is not set
-CONFIG_RTGUI_USING_FONT16=y
-CONFIG_RTGUI_USING_FONT12=y
-# CONFIG_RTGUI_USING_FONTHZ is not set
-# CONFIG_RTGUI_IMAGE_XPM is not set
-CONFIG_RTGUI_IMAGE_JPEG_NONE=y
-# CONFIG_RTGUI_IMAGE_JPEG is not set
-# CONFIG_RTGUI_IMAGE_TJPGD is not set
-# CONFIG_RTGUI_IMAGE_PNG_NONE is not set
-# CONFIG_RTGUI_IMAGE_PNG is not set
-CONFIG_RTGUI_IMAGE_LODEPNG=y
-# CONFIG_RTGUI_IMAGE_BMP is not set
-CONFIG_RTGUI_IMAGE_CONTAINER=y
-CONFIG_RTGUI_USING_DEMO=y
 
 #
 # VBUS(Virtual Software BUS)
@@ -231,23 +218,28 @@ CONFIG_RTGUI_USING_DEMO=y
 # CONFIG_RT_USING_RYM is not set
 
 #
-# RT-Thread Senior Membership Packages
+# RT-Thread online packages
 #
 
 #
 # system packages
 #
-# CONFIG_PKG_USING_FTL_SRC is not set
-
-#
-# RT-Thread online packages
-#
 
 #
-# system packages
-#
-# CONFIG_PKG_USING_PARTITION is not set
+# RT-Thread GUI Engine
+#
+# CONFIG_PKG_USING_GUIENGINE is not set
+# CONFIG_GUIENGINE_IMAGE_JPEG_NONE is not set
+# CONFIG_GUIENGINE_IMAGE_JPEG is not set
+# CONFIG_GUIENGINE_IMAGE_TJPGD is not set
+# CONFIG_GUIENGINE_IMAGE_PNG_NONE is not set
+# CONFIG_GUIENGINE_IMAGE_PNG is not set
+# CONFIG_GUIENGINE_IMAGE_LODEPNG is not set
+# CONFIG_PKG_USING_GUIENGINE_V200 is not set
+# CONFIG_PKG_USING_GUIENGINE_LATEST_VERSION is not set
 # CONFIG_PKG_USING_PERSIMMON is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
+# CONFIG_PKG_USING_PARTITION is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
 
@@ -259,8 +251,26 @@ CONFIG_RTGUI_USING_DEMO=y
 # CONFIG_PKG_USING_MONGOOSE is not set
 # CONFIG_PKG_USING_WEBTERMINAL is not set
 # CONFIG_PKG_USING_CJSON is not set
+# CONFIG_PKG_USING_LJSON is not set
 # CONFIG_PKG_USING_EZXML is not set
 # CONFIG_PKG_USING_NANOPB is not set
+# CONFIG_PKG_USING_GAGENT_CLOUD is not set
+
+#
+# Wi-Fi
+#
+
+#
+# Marvell WiFi
+#
+# CONFIG_PKG_USING_WLANMARVELL is not set
+
+#
+# Wiced WiFi
+#
+# CONFIG_PKG_USING_WLAN_WICED is not set
+# CONFIG_PKG_USING_COAP is not set
+# CONFIG_PKG_USING_NOPOLL is not set
 
 #
 # security packages
@@ -293,11 +303,13 @@ CONFIG_RTGUI_USING_DEMO=y
 #
 # CONFIG_PKG_USING_FASTLZ is not set
 # CONFIG_PKG_USING_MINILZO is not set
+# CONFIG_PKG_USING_QUICKLZ is not set
 
 #
 # example package: hello
 #
 # CONFIG_PKG_USING_HELLO is not set
+# CONFIG_PKG_USING_MULTIBUTTON is not set
 CONFIG_BOARD_X1000_REALBOARD=y
 # CONFIG_RT_USING_HARD_FLOAT is not set
 # CONFIG_BOARD_PHOENIX is not set
@@ -314,17 +326,12 @@ CONFIG_RT_MMCSD_STACK_SIZE=2048
 CONFIG_RT_USING_I2C0=y
 # CONFIG_RT_USING_I2C1 is not set
 # CONFIG_RT_USING_I2C2 is not set
-CONFIG_RT_USING_SLCD=y
-CONFIG_RT_USING_ILI9488=y
+# CONFIG_RT_USING_ILI9488 is not set
 # CONFIG_RT_USING_ILI9341 is not set
 # CONFIG_RT_USING_OTM4802 is not set
 # CONFIG_RT_USING_TRULY_TFT240240 is not set
-CONFIG_RT_USING_TOUCH=y
-CONFIG_RT_USING_GT9XX=y
+# CONFIG_RT_USING_GT9XX is not set
 # CONFIG_RT_USING_FT6x06 is not set
-CONFIG_RT_TOUCH_THREAD_PRIORITY=10
 CONFIG_RT_USING_AUDIO=y
 CONFIG_RT_USING_ICODEC=y
 CONFIG_RT_USING_CPU_FFS=y
-# CONFIG_WIFI_USING_AP6212 is not set
-# CONFIG_WIFI_USING_AP6181 is not set

+ 1 - 1
bsp/x1000/drivers/Kconfig

@@ -60,7 +60,7 @@ if RT_USING_I2C
         default n
 endif
 
-if RT_USING_GUIENGINE
+if PKG_USING_GUIENGINE
     config RT_USING_SLCD
         bool "Using LCD display"
         default y

+ 1 - 1
bsp/x1000/drivers/board.c

@@ -53,7 +53,7 @@ int cplusplus_system_init(void)
 }
 #endif
 
-#ifdef RT_USING_GUIENGINE
+#ifdef PKG_USING_GUIENGINE
 #include <rtgui/driver.h>
 int lcd_hw_init(void)
 {

+ 39 - 34
bsp/x1000/rtconfig.h

@@ -37,6 +37,7 @@
 /* RT_USING_NOHEAP is not set */
 #define RT_USING_SMALL_MEM
 /* RT_USING_SLAB is not set */
+/* RT_USING_MEMTRACE is not set */
 #define RT_USING_HEAP
 
 /* Kernel Device Object */
@@ -54,6 +55,7 @@
 
 #define RT_USING_COMPONENTS_INIT
 #define RT_USING_USER_MAIN
+#define RT_MAIN_THREAD_STACK_SIZE 2048
 
 /* C++ features */
 
@@ -62,7 +64,9 @@
 /* Command shell */
 
 #define RT_USING_FINSH
+#define FINSH_THREAD_NAME "tshell"
 #define FINSH_USING_HISTORY
+#define FINSH_HISTORY_LINES 5
 #define FINSH_USING_SYMTAB
 #define FINSH_USING_DESCRIPTION
 #define FINSH_THREAD_PRIORITY 20
@@ -101,6 +105,7 @@
 /* RT_USING_DFS_ROMFS is not set */
 /* RT_USING_DFS_RAMFS is not set */
 /* RT_USING_DFS_UFFS is not set */
+/* RT_USING_DFS_JFFS2 is not set */
 /* RT_USING_DFS_NFS is not set */
 
 /* Device Drivers */
@@ -109,6 +114,7 @@
 #define RT_USING_SERIAL
 /* RT_USING_CAN is not set */
 /* RT_USING_HWTIMER is not set */
+/* RT_USING_CPUTIME is not set */
 #define RT_USING_I2C
 #define RT_USING_I2C_BITOPS
 #define RT_USING_PIN
@@ -176,31 +182,13 @@
 #define LWIP_SO_RCVTIMEO 1
 #define LWIP_SO_SNDTIMEO 1
 #define LWIP_SO_RCVBUF 1
+/* RT_LWIP_NETIF_LOOPBACK is not set */
+#define LWIP_NETIF_LOOPBACK 0
 
 /* Modbus master and slave stack */
 
 /* RT_USING_MODBUS is not set */
 /* LWIP_USING_DHCPD is not set */
-/* RT_USING_NETUTILS is not set */
-
-/* RT-Thread UI Engine */
-
-#define RT_USING_GUIENGINE
-#define RTGUI_NAME_MAX 16
-/* RTGUI_USING_TTF is not set */
-#define RTGUI_USING_FONT16
-#define RTGUI_USING_FONT12
-/* RTGUI_USING_FONTHZ is not set */
-/* RTGUI_IMAGE_XPM is not set */
-#define RTGUI_IMAGE_JPEG_NONE
-/* RTGUI_IMAGE_JPEG is not set */
-/* RTGUI_IMAGE_TJPGD is not set */
-/* RTGUI_IMAGE_PNG_NONE is not set */
-/* RTGUI_IMAGE_PNG is not set */
-#define RTGUI_IMAGE_LODEPNG
-/* RTGUI_IMAGE_BMP is not set */
-#define RTGUI_IMAGE_CONTAINER
-#define RTGUI_USING_DEMO
 
 /* VBUS(Virtual Software BUS) */
 
@@ -211,18 +199,24 @@
 /* RT_USING_LOGTRACE is not set */
 /* RT_USING_RYM is not set */
 
-/* RT-Thread Senior Membership Packages */
-
-/* system packages */
-
-/* PKG_USING_FTL_SRC is not set */
-
 /* RT-Thread online packages */
 
 /* system packages */
 
-/* PKG_USING_PARTITION is not set */
+/* RT-Thread GUI Engine */
+
+/* PKG_USING_GUIENGINE is not set */
+/* GUIENGINE_IMAGE_JPEG_NONE is not set */
+/* GUIENGINE_IMAGE_JPEG is not set */
+/* GUIENGINE_IMAGE_TJPGD is not set */
+/* GUIENGINE_IMAGE_PNG_NONE is not set */
+/* GUIENGINE_IMAGE_PNG is not set */
+/* GUIENGINE_IMAGE_LODEPNG is not set */
+/* PKG_USING_GUIENGINE_V200 is not set */
+/* PKG_USING_GUIENGINE_LATEST_VERSION is not set */
 /* PKG_USING_PERSIMMON is not set */
+/* PKG_USING_LWEXT4 is not set */
+/* PKG_USING_PARTITION is not set */
 /* PKG_USING_SQLITE is not set */
 /* PKG_USING_RTI is not set */
 
@@ -233,8 +227,22 @@
 /* PKG_USING_MONGOOSE is not set */
 /* PKG_USING_WEBTERMINAL is not set */
 /* PKG_USING_CJSON is not set */
+/* PKG_USING_LJSON is not set */
 /* PKG_USING_EZXML is not set */
 /* PKG_USING_NANOPB is not set */
+/* PKG_USING_GAGENT_CLOUD is not set */
+
+/* Wi-Fi */
+
+/* Marvell WiFi */
+
+/* PKG_USING_WLANMARVELL is not set */
+
+/* Wiced WiFi */
+
+/* PKG_USING_WLAN_WICED is not set */
+/* PKG_USING_COAP is not set */
+/* PKG_USING_NOPOLL is not set */
 
 /* security packages */
 
@@ -262,10 +270,12 @@
 
 /* PKG_USING_FASTLZ is not set */
 /* PKG_USING_MINILZO is not set */
+/* PKG_USING_QUICKLZ is not set */
 
 /* example package: hello */
 
 /* PKG_USING_HELLO is not set */
+/* PKG_USING_MULTIBUTTON is not set */
 #define BOARD_X1000_REALBOARD
 /* RT_USING_HARD_FLOAT is not set */
 /* BOARD_PHOENIX is not set */
@@ -282,19 +292,14 @@
 #define RT_USING_I2C0
 /* RT_USING_I2C1 is not set */
 /* RT_USING_I2C2 is not set */
-#define RT_USING_SLCD
-#define RT_USING_ILI9488
+/* RT_USING_ILI9488 is not set */
 /* RT_USING_ILI9341 is not set */
 /* RT_USING_OTM4802 is not set */
 /* RT_USING_TRULY_TFT240240 is not set */
-#define RT_USING_TOUCH
-#define RT_USING_GT9XX
+/* RT_USING_GT9XX is not set */
 /* RT_USING_FT6x06 is not set */
-#define RT_TOUCH_THREAD_PRIORITY 10
 #define RT_USING_AUDIO
 #define RT_USING_ICODEC
 #define RT_USING_CPU_FFS
-/* WIFI_USING_AP6212 is not set */
-/* WIFI_USING_AP6181 is not set */
 
 #endif

+ 0 - 2
components/Kconfig

@@ -28,8 +28,6 @@ source "$RTT_DIR/components/libc/Kconfig"
 
 source "$RTT_DIR/components/net/Kconfig"
 
-source "$RTT_DIR/components/gui/Kconfig"
-
 source "$RTT_DIR/components/vbus/Kconfig"
 
 source "$RTT_DIR/components/utilities/Kconfig"

+ 0 - 87
components/gui/Kconfig

@@ -1,87 +0,0 @@
-menu "RT-Thread UI Engine"
-
-config RT_USING_GUIENGINE
-    bool "Enable UI Engine"
-    default n
-
-if RT_USING_GUIENGINE
-
-config RTGUI_NAME_MAX
-    int "The maximal size of name in GUI engine"
-    default 16
-
-config RTGUI_USING_TTF
-    bool "Support TrueType font"
-    default n
-
-if RTGUI_USING_TTF
-    config UTF8_TO_UNICODE
-        bool "Support UTF8 to UNICODE"
-        default n
-endif
-    
-config RTGUI_USING_FONT16
-    bool "Support 16 height font"
-    default y
-
-config RTGUI_USING_FONT12
-    bool "Support 12 height font"
-    default y
-
-config RTGUI_USING_FONTHZ
-    bool "Support Chinese font"
-    default n
-
-if RTGUI_USING_FONTHZ
-config RTGUI_USING_HZ_BMP
-    bool "Use bitmap Chinese font"
-    default n
-endif
-
-config RTGUI_IMAGE_XPM
-    bool "Support XPM image format"
-    default n
-
-choice
-    prompt "JPEG image format"
-    default RTGUI_IMAGE_JPEG_NONE
-
-    config RTGUI_IMAGE_JPEG_NONE
-        bool "No"
-
-    config RTGUI_IMAGE_JPEG
-        bool "with libjpeg"
-
-    config RTGUI_IMAGE_TJPGD
-        bool "with TJpgDec(Tiny JPEG Decompressor)"
-endchoice
-
-choice
-    prompt "PNG image format"
-    default RTGUI_IMAGE_LODEPNG
-
-    config RTGUI_IMAGE_PNG_NONE
-        bool "No"
-
-    config RTGUI_IMAGE_PNG
-        bool "with libpng"
-
-    config RTGUI_IMAGE_LODEPNG
-        bool "with LodePNG"
-endchoice
-
-config RTGUI_IMAGE_BMP
-    bool "Support BMP image format"
-    default n
-
-config RTGUI_IMAGE_CONTAINER
-    bool "Use image container"
-    default y
-    
-config RTGUI_USING_DEMO
-    bool "Enable the example of UI Engine"
-    default n
-    
-endif
-
-endmenu

+ 0 - 3
components/gui/README.md

@@ -1,3 +0,0 @@
-# RT-Thread GUI Engine 
-
-

+ 0 - 16
components/gui/SConscript

@@ -1,16 +0,0 @@
-# RT-Thread building script for bridge
-
-import os
-from building import *
-
-cwd = GetCurrentDir()
-objs = []
-list = os.listdir(cwd)
-
-if GetDepend('RT_USING_GUIENGINE'):
-	for d in list:
-		path = os.path.join(cwd, d)
-		if os.path.isfile(os.path.join(path, 'SConscript')):
-			objs = objs + SConscript(os.path.join(d, 'SConscript'))
-
-Return('objs')

+ 0 - 10
components/gui/example/SConscript

@@ -1,10 +0,0 @@
-from building import *
-
-cwd = GetCurrentDir()
-src = Glob('*.c')
-
-CPPPATH = [cwd]
-
-group = DefineGroup('gui_demo', src, depend = ['RT_USING_GUIENGINE', 'RTGUI_USING_DEMO'], CPPPATH = CPPPATH)
-
-Return('group')

+ 0 - 126
components/gui/example/gui_demo.c

@@ -1,126 +0,0 @@
-#include <rtthread.h>
-
-#if defined(RT_USING_GUIENGINE) && defined(RTGUI_USING_DEMO)
-
-#include <rtgui/rtgui.h>
-#include <rtgui/rtgui_system.h>
-#include <rtgui/rtgui_app.h>
-#include <rtgui/image.h>
-#include <rtgui/widgets/window.h>
-#include <rtgui/dc.h>
-
-extern const unsigned char _picture_png[];
-extern int _picture_png_length_get(void);
-
-static rt_bool_t show_demo(struct rtgui_win *win)
-{
-    struct rtgui_dc *dc;
-    rtgui_rect_t rect;
-
-    dc = rtgui_dc_begin_drawing(RTGUI_WIDGET(win));
-    if (dc == RT_NULL)
-    {
-        rt_kprintf("dc is null \n");
-        return RT_FALSE;
-    }
-    rtgui_dc_get_rect(dc, &rect);
-
-    /* draw circular */
-    {
-        rt_int16_t x, y, r;
-
-        x = rect.x2 / 2 / 2;
-        y = rect.y2 / 2 / 2;
-        r = x > y ? y : x;
-        r -= y / 10;
-        rtgui_dc_draw_circle(dc, x, y, r);
-    }
-
-    /* draw image */
-    {
-        rtgui_rect_t draw_rect;
-        struct rtgui_image *img;
-
-        img = rtgui_image_create_from_mem("png", _picture_png, _picture_png_length_get(), RT_TRUE);
-        if (img != RT_NULL)
-        {
-            draw_rect.x1 = rect.x2 / 2 + (rect.x2 / 2 - img->w) / 2;
-            draw_rect.y1 = (rect.y2 / 2 - img->h) / 2;
-            draw_rect.x2 = draw_rect.x1 + img->w;
-            draw_rect.y2 = draw_rect.y1 + img->h;
-            rtgui_image_blit(img, dc, &draw_rect);
-        }
-    }
-
-    /* draw text */
-    {
-        rtgui_color_t fc;
-        rtgui_rect_t draw_rect;
-        char *text_buf = "Hello RT-thread!";
-
-        fc = RTGUI_DC_FC(dc);
-        RTGUI_DC_FC(dc) = RED;
-        draw_rect.x1 = rect.x2 * 2 / 5;
-        draw_rect.y1 = rect.y2 * 3 / 4;
-        draw_rect.x2 = rect.x2;
-        draw_rect.y2 = rect.y2;
-        rtgui_dc_draw_text(dc, text_buf, &draw_rect);
-        RTGUI_DC_FC(dc) = fc;
-    }
-
-    rtgui_dc_end_drawing(dc, RT_TRUE);
-
-    return RT_TRUE;
-}
-
-rt_bool_t dc_event_handler(struct rtgui_object *object, rtgui_event_t *event)
-{
-    rt_bool_t err;
-    struct rtgui_win *win = RTGUI_WIN(object);
-
-    err = rtgui_win_event_handler(RTGUI_OBJECT(win), event);
-    if (event->type == RTGUI_EVENT_PAINT)
-        show_demo(win);
-
-    return err;
-}
-
-static void rt_gui_demo_entry(void *parameter)
-{
-    struct rtgui_win *main_win;
-    struct rtgui_app *app;
-
-    /* create gui app */
-    app = rtgui_app_create("gui_demo");
-    if (app == RT_NULL)
-        return;
-
-    main_win = rtgui_mainwin_create(RT_NULL, "UiWindow", RTGUI_WIN_STYLE_NO_TITLE);
-    if (main_win == RT_NULL)
-    {
-        rtgui_app_destroy(app);
-        return;
-    }
-    rtgui_object_set_event_handler(RTGUI_OBJECT(main_win), dc_event_handler);
-    rtgui_win_show(main_win, RT_FALSE);
-
-    rtgui_app_run(app);
-    rtgui_win_destroy(main_win);
-    rtgui_app_destroy(app);
-}
-
-int rt_gui_demo_init(void)
-{
-    rt_thread_t tid;
-    
-    tid = rt_thread_create("mygui",
-        rt_gui_demo_entry, RT_NULL,
-        2048, 25, 10);
-
-    if (tid != RT_NULL)
-        rt_thread_startup(tid);
-
-    return 0;
-}
-INIT_APP_EXPORT(rt_gui_demo_init);
-#endif /* RT_USING_RTGUI */

+ 0 - 1400
components/gui/example/resources.c

@@ -1,1400 +0,0 @@
-const unsigned char _picture_png[] = {
-    0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48,0x44,0x52,
-    0x00,0x00,0x00,0xbe,0x00,0x00,0x00,0x4a,0x08,0x06,0x00,0x00,0x00,0x05,0x77,0xee,
-    0x92,0x00,0x00,0x00,0x09,0x70,0x48,0x59,0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b,
-    0x13,0x01,0x00,0x9a,0x9c,0x18,0x00,0x00,0x0a,0x4d,0x69,0x43,0x43,0x50,0x50,0x68,
-    0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x20,0x49,0x43,0x43,0x20,0x70,0x72,0x6f,0x66,
-    0x69,0x6c,0x65,0x00,0x00,0x78,0xda,0x9d,0x53,0x77,0x58,0x93,0xf7,0x16,0x3e,0xdf,
-    0xf7,0x65,0x0f,0x56,0x42,0xd8,0xf0,0xb1,0x97,0x6c,0x81,0x00,0x22,0x23,0xac,0x08,
-    0xc8,0x10,0x59,0xa2,0x10,0x92,0x00,0x61,0x84,0x10,0x12,0x40,0xc5,0x85,0x88,0x0a,
-    0x56,0x14,0x15,0x11,0x9c,0x48,0x55,0xc4,0x82,0xd5,0x0a,0x48,0x9d,0x88,0xe2,0xa0,
-    0x28,0xb8,0x67,0x41,0x8a,0x88,0x5a,0x8b,0x55,0x5c,0x38,0xee,0x1f,0xdc,0xa7,0xb5,
-    0x7d,0x7a,0xef,0xed,0xed,0xfb,0xd7,0xfb,0xbc,0xe7,0x9c,0xe7,0xfc,0xce,0x79,0xcf,
-    0x0f,0x80,0x11,0x12,0x26,0x91,0xe6,0xa2,0x6a,0x00,0x39,0x52,0x85,0x3c,0x3a,0xd8,
-    0x1f,0x8f,0x4f,0x48,0xc4,0xc9,0xbd,0x80,0x02,0x15,0x48,0xe0,0x04,0x20,0x10,0xe6,
-    0xcb,0xc2,0x67,0x05,0xc5,0x00,0x00,0xf0,0x03,0x79,0x78,0x7e,0x74,0xb0,0x3f,0xfc,
-    0x01,0xaf,0x6f,0x00,0x02,0x00,0x70,0xd5,0x2e,0x24,0x12,0xc7,0xe1,0xff,0x83,0xba,
-    0x50,0x26,0x57,0x00,0x20,0x91,0x00,0xe0,0x22,0x12,0xe7,0x0b,0x01,0x90,0x52,0x00,
-    0xc8,0x2e,0x54,0xc8,0x14,0x00,0xc8,0x18,0x00,0xb0,0x53,0xb3,0x64,0x0a,0x00,0x94,
-    0x00,0x00,0x6c,0x79,0x7c,0x42,0x22,0x00,0xaa,0x0d,0x00,0xec,0xf4,0x49,0x3e,0x05,
-    0x00,0xd8,0xa9,0x93,0xdc,0x17,0x00,0xd8,0xa2,0x1c,0xa9,0x08,0x00,0x8d,0x01,0x00,
-    0x99,0x28,0x47,0x24,0x02,0x40,0xbb,0x00,0x60,0x55,0x81,0x52,0x2c,0x02,0xc0,0xc2,
-    0x00,0xa0,0xac,0x40,0x22,0x2e,0x04,0xc0,0xae,0x01,0x80,0x59,0xb6,0x32,0x47,0x02,
-    0x80,0xbd,0x05,0x00,0x76,0x8e,0x58,0x90,0x0f,0x40,0x60,0x00,0x80,0x99,0x42,0x2c,
-    0xcc,0x00,0x20,0x38,0x02,0x00,0x43,0x1e,0x13,0xcd,0x03,0x20,0x4c,0x03,0xa0,0x30,
-    0xd2,0xbf,0xe0,0xa9,0x5f,0x70,0x85,0xb8,0x48,0x01,0x00,0xc0,0xcb,0x95,0xcd,0x97,
-    0x4b,0xd2,0x33,0x14,0xb8,0x95,0xd0,0x1a,0x77,0xf2,0xf0,0xe0,0xe2,0x21,0xe2,0xc2,
-    0x6c,0xb1,0x42,0x61,0x17,0x29,0x10,0x66,0x09,0xe4,0x22,0x9c,0x97,0x9b,0x23,0x13,
-    0x48,0xe7,0x03,0x4c,0xce,0x0c,0x00,0x00,0x1a,0xf9,0xd1,0xc1,0xfe,0x38,0x3f,0x90,
-    0xe7,0xe6,0xe4,0xe1,0xe6,0x66,0xe7,0x6c,0xef,0xf4,0xc5,0xa2,0xfe,0x6b,0xf0,0x6f,
-    0x22,0x3e,0x21,0xf1,0xdf,0xfe,0xbc,0x8c,0x02,0x04,0x00,0x10,0x4e,0xcf,0xef,0xda,
-    0x5f,0xe5,0xe5,0xd6,0x03,0x70,0xc7,0x01,0xb0,0x75,0xbf,0x6b,0xa9,0x5b,0x00,0xda,
-    0x56,0x00,0x68,0xdf,0xf9,0x5d,0x33,0xdb,0x09,0xa0,0x5a,0x0a,0xd0,0x7a,0xf9,0x8b,
-    0x79,0x38,0xfc,0x40,0x1e,0x9e,0xa1,0x50,0xc8,0x3c,0x1d,0x1c,0x0a,0x0b,0x0b,0xed,
-    0x25,0x62,0xa1,0xbd,0x30,0xe3,0x8b,0x3e,0xff,0x33,0xe1,0x6f,0xe0,0x8b,0x7e,0xf6,
-    0xfc,0x40,0x1e,0xfe,0xdb,0x7a,0xf0,0x00,0x71,0x9a,0x40,0x99,0xad,0xc0,0xa3,0x83,
-    0xfd,0x71,0x61,0x6e,0x76,0xae,0x52,0x8e,0xe7,0xcb,0x04,0x42,0x31,0x6e,0xf7,0xe7,
-    0x23,0xfe,0xc7,0x85,0x7f,0xfd,0x8e,0x29,0xd1,0xe2,0x34,0xb1,0x5c,0x2c,0x15,0x8a,
-    0xf1,0x58,0x89,0xb8,0x50,0x22,0x4d,0xc7,0x79,0xb9,0x52,0x91,0x44,0x21,0xc9,0x95,
-    0xe2,0x12,0xe9,0x7f,0x32,0xf1,0x1f,0x96,0xfd,0x09,0x93,0x77,0x0d,0x00,0xac,0x86,
-    0x4f,0xc0,0x4e,0xb6,0x07,0xb5,0xcb,0x6c,0xc0,0x7e,0xee,0x01,0x02,0x8b,0x0e,0x58,
-    0xd2,0x76,0x00,0x40,0x7e,0xf3,0x2d,0x8c,0x1a,0x0b,0x91,0x00,0x10,0x67,0x34,0x32,
-    0x79,0xf7,0x00,0x00,0x93,0xbf,0xf9,0x8f,0x40,0x2b,0x01,0x00,0xcd,0x97,0xa4,0xe3,
-    0x00,0x00,0xbc,0xe8,0x18,0x5c,0xa8,0x94,0x17,0x4c,0xc6,0x08,0x00,0x00,0x44,0xa0,
-    0x81,0x2a,0xb0,0x41,0x07,0x0c,0xc1,0x14,0xac,0xc0,0x0e,0x9c,0xc1,0x1d,0xbc,0xc0,
-    0x17,0x02,0x61,0x06,0x44,0x40,0x0c,0x24,0xc0,0x3c,0x10,0x42,0x06,0xe4,0x80,0x1c,
-    0x0a,0xa1,0x18,0x96,0x41,0x19,0x54,0xc0,0x3a,0xd8,0x04,0xb5,0xb0,0x03,0x1a,0xa0,
-    0x11,0x9a,0xe1,0x10,0xb4,0xc1,0x31,0x38,0x0d,0xe7,0xe0,0x12,0x5c,0x81,0xeb,0x70,
-    0x17,0x06,0x60,0x18,0x9e,0xc2,0x18,0xbc,0x86,0x09,0x04,0x41,0xc8,0x08,0x13,0x61,
-    0x21,0x3a,0x88,0x11,0x62,0x8e,0xd8,0x22,0xce,0x08,0x17,0x99,0x8e,0x04,0x22,0x61,
-    0x48,0x34,0x92,0x80,0xa4,0x20,0xe9,0x88,0x14,0x51,0x22,0xc5,0xc8,0x72,0xa4,0x02,
-    0xa9,0x42,0x6a,0x91,0x5d,0x48,0x23,0xf2,0x2d,0x72,0x14,0x39,0x8d,0x5c,0x40,0xfa,
-    0x90,0xdb,0xc8,0x20,0x32,0x8a,0xfc,0x8a,0xbc,0x47,0x31,0x94,0x81,0xb2,0x51,0x03,
-    0xd4,0x02,0x75,0x40,0xb9,0xa8,0x1f,0x1a,0x8a,0xc6,0xa0,0x73,0xd1,0x74,0x34,0x0f,
-    0x5d,0x80,0x96,0xa2,0x6b,0xd1,0x1a,0xb4,0x1e,0x3d,0x80,0xb6,0xa2,0xa7,0xd1,0x4b,
-    0xe8,0x75,0x74,0x00,0x7d,0x8a,0x8e,0x63,0x80,0xd1,0x31,0x0e,0x66,0x8c,0xd9,0x61,
-    0x5c,0x8c,0x87,0x45,0x60,0x89,0x58,0x1a,0x26,0xc7,0x16,0x63,0xe5,0x58,0x35,0x56,
-    0x8f,0x35,0x63,0x1d,0x58,0x37,0x76,0x15,0x1b,0xc0,0x9e,0x61,0xef,0x08,0x24,0x02,
-    0x8b,0x80,0x13,0xec,0x08,0x5e,0x84,0x10,0xc2,0x6c,0x82,0x90,0x90,0x47,0x58,0x4c,
-    0x58,0x43,0xa8,0x25,0xec,0x23,0xb4,0x12,0xba,0x08,0x57,0x09,0x83,0x84,0x31,0xc2,
-    0x27,0x22,0x93,0xa8,0x4f,0xb4,0x25,0x7a,0x12,0xf9,0xc4,0x78,0x62,0x3a,0xb1,0x90,
-    0x58,0x46,0xac,0x26,0xee,0x21,0x1e,0x21,0x9e,0x25,0x5e,0x27,0x0e,0x13,0x5f,0x93,
-    0x48,0x24,0x0e,0xc9,0x92,0xe4,0x4e,0x0a,0x21,0x25,0x90,0x32,0x49,0x0b,0x49,0x6b,
-    0x48,0xdb,0x48,0x2d,0xa4,0x53,0xa4,0x3e,0xd2,0x10,0x69,0x9c,0x4c,0x26,0xeb,0x90,
-    0x6d,0xc9,0xde,0xe4,0x08,0xb2,0x80,0xac,0x20,0x97,0x91,0xb7,0x90,0x0f,0x90,0x4f,
-    0x92,0xfb,0xc9,0xc3,0xe4,0xb7,0x14,0x3a,0xc5,0x88,0xe2,0x4c,0x09,0xa2,0x24,0x52,
-    0xa4,0x94,0x12,0x4a,0x35,0x65,0x3f,0xe5,0x04,0xa5,0x9f,0x32,0x42,0x99,0xa0,0xaa,
-    0x51,0xcd,0xa9,0x9e,0xd4,0x08,0xaa,0x88,0x3a,0x9f,0x5a,0x49,0x6d,0xa0,0x76,0x50,
-    0x2f,0x53,0x87,0xa9,0x13,0x34,0x75,0x9a,0x25,0xcd,0x9b,0x16,0x43,0xcb,0xa4,0x2d,
-    0xa3,0xd5,0xd0,0x9a,0x69,0x67,0x69,0xf7,0x68,0x2f,0xe9,0x74,0xba,0x09,0xdd,0x83,
-    0x1e,0x45,0x97,0xd0,0x97,0xd2,0x6b,0xe8,0x07,0xe9,0xe7,0xe9,0x83,0xf4,0x77,0x0c,
-    0x0d,0x86,0x0d,0x83,0xc7,0x48,0x62,0x28,0x19,0x6b,0x19,0x7b,0x19,0xa7,0x18,0xb7,
-    0x19,0x2f,0x99,0x4c,0xa6,0x05,0xd3,0x97,0x99,0xc8,0x54,0x30,0xd7,0x32,0x1b,0x99,
-    0x67,0x98,0x0f,0x98,0x6f,0x55,0x58,0x2a,0xf6,0x2a,0x7c,0x15,0x91,0xca,0x12,0x95,
-    0x3a,0x95,0x56,0x95,0x7e,0x95,0xe7,0xaa,0x54,0x55,0x73,0x55,0x3f,0xd5,0x79,0xaa,
-    0x0b,0x54,0xab,0x55,0x0f,0xab,0x5e,0x56,0x7d,0xa6,0x46,0x55,0xb3,0x50,0xe3,0xa9,
-    0x09,0xd4,0x16,0xab,0xd5,0xa9,0x1d,0x55,0xbb,0xa9,0x36,0xae,0xce,0x52,0x77,0x52,
-    0x8f,0x50,0xcf,0x51,0x5f,0xa3,0xbe,0x5f,0xfd,0x82,0xfa,0x63,0x0d,0xb2,0x86,0x85,
-    0x46,0xa0,0x86,0x48,0xa3,0x54,0x63,0xb7,0xc6,0x19,0x8d,0x21,0x16,0xc6,0x32,0x65,
-    0xf1,0x58,0x42,0xd6,0x72,0x56,0x03,0xeb,0x2c,0x6b,0x98,0x4d,0x62,0x5b,0xb2,0xf9,
-    0xec,0x4c,0x76,0x05,0xfb,0x1b,0x76,0x2f,0x7b,0x4c,0x53,0x43,0x73,0xaa,0x66,0xac,
-    0x66,0x91,0x66,0x9d,0xe6,0x71,0xcd,0x01,0x0e,0xc6,0xb1,0xe0,0xf0,0x39,0xd9,0x9c,
-    0x4a,0xce,0x21,0xce,0x0d,0xce,0x7b,0x2d,0x03,0x2d,0x3f,0x2d,0xb1,0xd6,0x6a,0xad,
-    0x66,0xad,0x7e,0xad,0x37,0xda,0x7a,0xda,0xbe,0xda,0x62,0xed,0x72,0xed,0x16,0xed,
-    0xeb,0xda,0xef,0x75,0x70,0x9d,0x40,0x9d,0x2c,0x9d,0xf5,0x3a,0x6d,0x3a,0xf7,0x75,
-    0x09,0xba,0x36,0xba,0x51,0xba,0x85,0xba,0xdb,0x75,0xcf,0xea,0x3e,0xd3,0x63,0xeb,
-    0x79,0xe9,0x09,0xf5,0xca,0xf5,0x0e,0xe9,0xdd,0xd1,0x47,0xf5,0x6d,0xf4,0xa3,0xf5,
-    0x17,0xea,0xef,0xd6,0xef,0xd1,0x1f,0x37,0x30,0x34,0x08,0x36,0x90,0x19,0x6c,0x31,
-    0x38,0x63,0xf0,0xcc,0x90,0x63,0xe8,0x6b,0x98,0x69,0xb8,0xd1,0xf0,0x84,0xe1,0xa8,
-    0x11,0xcb,0x68,0xba,0x91,0xc4,0x68,0xa3,0xd1,0x49,0xa3,0x27,0xb8,0x26,0xee,0x87,
-    0x67,0xe3,0x35,0x78,0x17,0x3e,0x66,0xac,0x6f,0x1c,0x62,0xac,0x34,0xde,0x65,0xdc,
-    0x6b,0x3c,0x61,0x62,0x69,0x32,0xdb,0xa4,0xc4,0xa4,0xc5,0xe4,0xbe,0x29,0xcd,0x94,
-    0x6b,0x9a,0x66,0xba,0xd1,0xb4,0xd3,0x74,0xcc,0xcc,0xc8,0x2c,0xdc,0xac,0xd8,0xac,
-    0xc9,0xec,0x8e,0x39,0xd5,0x9c,0x6b,0x9e,0x61,0xbe,0xd9,0xbc,0xdb,0xfc,0x8d,0x85,
-    0xa5,0x45,0x9c,0xc5,0x4a,0x8b,0x36,0x8b,0xc7,0x96,0xda,0x96,0x7c,0xcb,0x05,0x96,
-    0x4d,0x96,0xf7,0xac,0x98,0x56,0x3e,0x56,0x79,0x56,0xf5,0x56,0xd7,0xac,0x49,0xd6,
-    0x5c,0xeb,0x2c,0xeb,0x6d,0xd6,0x57,0x6c,0x50,0x1b,0x57,0x9b,0x0c,0x9b,0x3a,0x9b,
-    0xcb,0xb6,0xa8,0xad,0x9b,0xad,0xc4,0x76,0x9b,0x6d,0xdf,0x14,0xe2,0x14,0x8f,0x29,
-    0xd2,0x29,0xf5,0x53,0x6e,0xda,0x31,0xec,0xfc,0xec,0x0a,0xec,0x9a,0xec,0x06,0xed,
-    0x39,0xf6,0x61,0xf6,0x25,0xf6,0x6d,0xf6,0xcf,0x1d,0xcc,0x1c,0x12,0x1d,0xd6,0x3b,
-    0x74,0x3b,0x7c,0x72,0x74,0x75,0xcc,0x76,0x6c,0x70,0xbc,0xeb,0xa4,0xe1,0x34,0xc3,
-    0xa9,0xc4,0xa9,0xc3,0xe9,0x57,0x67,0x1b,0x67,0xa1,0x73,0x9d,0xf3,0x35,0x17,0xa6,
-    0x4b,0x90,0xcb,0x12,0x97,0x76,0x97,0x17,0x53,0x6d,0xa7,0x8a,0xa7,0x6e,0x9f,0x7a,
-    0xcb,0x95,0xe5,0x1a,0xee,0xba,0xd2,0xb5,0xd3,0xf5,0xa3,0x9b,0xbb,0x9b,0xdc,0xad,
-    0xd9,0x6d,0xd4,0xdd,0xcc,0x3d,0xc5,0x7d,0xab,0xfb,0x4d,0x2e,0x9b,0x1b,0xc9,0x5d,
-    0xc3,0x3d,0xef,0x41,0xf4,0xf0,0xf7,0x58,0xe2,0x71,0xcc,0xe3,0x9d,0xa7,0x9b,0xa7,
-    0xc2,0xf3,0x90,0xe7,0x2f,0x5e,0x76,0x5e,0x59,0x5e,0xfb,0xbd,0x1e,0x4f,0xb3,0x9c,
-    0x26,0x9e,0xd6,0x30,0x6d,0xc8,0xdb,0xc4,0x5b,0xe0,0xbd,0xcb,0x7b,0x60,0x3a,0x3e,
-    0x3d,0x65,0xfa,0xce,0xe9,0x03,0x3e,0xc6,0x3e,0x02,0x9f,0x7a,0x9f,0x87,0xbe,0xa6,
-    0xbe,0x22,0xdf,0x3d,0xbe,0x23,0x7e,0xd6,0x7e,0x99,0x7e,0x07,0xfc,0x9e,0xfb,0x3b,
-    0xfa,0xcb,0xfd,0x8f,0xf8,0xbf,0xe1,0x79,0xf2,0x16,0xf1,0x4e,0x05,0x60,0x01,0xc1,
-    0x01,0xe5,0x01,0xbd,0x81,0x1a,0x81,0xb3,0x03,0x6b,0x03,0x1f,0x04,0x99,0x04,0xa5,
-    0x07,0x35,0x05,0x8d,0x05,0xbb,0x06,0x2f,0x0c,0x3e,0x15,0x42,0x0c,0x09,0x0d,0x59,
-    0x1f,0x72,0x93,0x6f,0xc0,0x17,0xf2,0x1b,0xf9,0x63,0x33,0xdc,0x67,0x2c,0x9a,0xd1,
-    0x15,0xca,0x08,0x9d,0x15,0x5a,0x1b,0xfa,0x30,0xcc,0x26,0x4c,0x1e,0xd6,0x11,0x8e,
-    0x86,0xcf,0x08,0xdf,0x10,0x7e,0x6f,0xa6,0xf9,0x4c,0xe9,0xcc,0xb6,0x08,0x88,0xe0,
-    0x47,0x6c,0x88,0xb8,0x1f,0x69,0x19,0x99,0x17,0xf9,0x7d,0x14,0x29,0x2a,0x32,0xaa,
-    0x2e,0xea,0x51,0xb4,0x53,0x74,0x71,0x74,0xf7,0x2c,0xd6,0xac,0xe4,0x59,0xfb,0x67,
-    0xbd,0x8e,0xf1,0x8f,0xa9,0x8c,0xb9,0x3b,0xdb,0x6a,0xb6,0x72,0x76,0x67,0xac,0x6a,
-    0x6c,0x52,0x6c,0x63,0xec,0x9b,0xb8,0x80,0xb8,0xaa,0xb8,0x81,0x78,0x87,0xf8,0x45,
-    0xf1,0x97,0x12,0x74,0x13,0x24,0x09,0xed,0x89,0xe4,0xc4,0xd8,0xc4,0x3d,0x89,0xe3,
-    0x73,0x02,0xe7,0x6c,0x9a,0x33,0x9c,0xe4,0x9a,0x54,0x96,0x74,0x63,0xae,0xe5,0xdc,
-    0xa2,0xb9,0x17,0xe6,0xe9,0xce,0xcb,0x9e,0x77,0x3c,0x59,0x35,0x59,0x90,0x7c,0x38,
-    0x85,0x98,0x12,0x97,0xb2,0x3f,0xe5,0x83,0x20,0x42,0x50,0x2f,0x18,0x4f,0xe5,0xa7,
-    0x6e,0x4d,0x1d,0x13,0xf2,0x84,0x9b,0x85,0x4f,0x45,0xbe,0xa2,0x8d,0xa2,0x51,0xb1,
-    0xb7,0xb8,0x4a,0x3c,0x92,0xe6,0x9d,0x56,0x95,0xf6,0x38,0xdd,0x3b,0x7d,0x43,0xfa,
-    0x68,0x86,0x4f,0x46,0x75,0xc6,0x33,0x09,0x4f,0x52,0x2b,0x79,0x91,0x19,0x92,0xb9,
-    0x23,0xf3,0x4d,0x56,0x44,0xd6,0xde,0xac,0xcf,0xd9,0x71,0xd9,0x2d,0x39,0x94,0x9c,
-    0x94,0x9c,0xa3,0x52,0x0d,0x69,0x96,0xb4,0x2b,0xd7,0x30,0xb7,0x28,0xb7,0x4f,0x66,
-    0x2b,0x2b,0x93,0x0d,0xe4,0x79,0xe6,0x6d,0xca,0x1b,0x93,0x87,0xca,0xf7,0xe4,0x23,
-    0xf9,0x73,0xf3,0xdb,0x15,0x6c,0x85,0x4c,0xd1,0xa3,0xb4,0x52,0xae,0x50,0x0e,0x16,
-    0x4c,0x2f,0xa8,0x2b,0x78,0x5b,0x18,0x5b,0x78,0xb8,0x48,0xbd,0x48,0x5a,0xd4,0x33,
-    0xdf,0x66,0xfe,0xea,0xf9,0x23,0x0b,0x82,0x16,0x7c,0xbd,0x90,0xb0,0x50,0xb8,0xb0,
-    0xb3,0xd8,0xb8,0x78,0x59,0xf1,0xe0,0x22,0xbf,0x45,0xbb,0x16,0x23,0x8b,0x53,0x17,
-    0x77,0x2e,0x31,0x5d,0x52,0xba,0x64,0x78,0x69,0xf0,0xd2,0x7d,0xcb,0x68,0xcb,0xb2,
-    0x96,0xfd,0x50,0xe2,0x58,0x52,0x55,0xf2,0x6a,0x79,0xdc,0xf2,0x8e,0x52,0x83,0xd2,
-    0xa5,0xa5,0x43,0x2b,0x82,0x57,0x34,0x95,0xa9,0x94,0xc9,0xcb,0x6e,0xae,0xf4,0x5a,
-    0xb9,0x63,0x15,0x61,0x95,0x64,0x55,0xef,0x6a,0x97,0xd5,0x5b,0x56,0x7f,0x2a,0x17,
-    0x95,0x5f,0xac,0x70,0xac,0xa8,0xae,0xf8,0xb0,0x46,0xb8,0xe6,0xe2,0x57,0x4e,0x5f,
-    0xd5,0x7c,0xf5,0x79,0x6d,0xda,0xda,0xde,0x4a,0xb7,0xca,0xed,0xeb,0x48,0xeb,0xa4,
-    0xeb,0x6e,0xac,0xf7,0x59,0xbf,0xaf,0x4a,0xbd,0x6a,0x41,0xd5,0xd0,0x86,0xf0,0x0d,
-    0xad,0x1b,0xf1,0x8d,0xe5,0x1b,0x5f,0x6d,0x4a,0xde,0x74,0xa1,0x7a,0x6a,0xf5,0x8e,
-    0xcd,0xb4,0xcd,0xca,0xcd,0x03,0x35,0x61,0x35,0xed,0x5b,0xcc,0xb6,0xac,0xdb,0xf2,
-    0xa1,0x36,0xa3,0xf6,0x7a,0x9d,0x7f,0x5d,0xcb,0x56,0xfd,0xad,0xab,0xb7,0xbe,0xd9,
-    0x26,0xda,0xd6,0xbf,0xdd,0x77,0x7b,0xf3,0x0e,0x83,0x1d,0x15,0x3b,0xde,0xef,0x94,
-    0xec,0xbc,0xb5,0x2b,0x78,0x57,0x6b,0xbd,0x45,0x7d,0xf5,0x6e,0xd2,0xee,0x82,0xdd,
-    0x8f,0x1a,0x62,0x1b,0xba,0xbf,0xe6,0x7e,0xdd,0xb8,0x47,0x77,0x4f,0xc5,0x9e,0x8f,
-    0x7b,0xa5,0x7b,0x07,0xf6,0x45,0xef,0xeb,0x6a,0x74,0x6f,0x6c,0xdc,0xaf,0xbf,0xbf,
-    0xb2,0x09,0x6d,0x52,0x36,0x8d,0x1e,0x48,0x3a,0x70,0xe5,0x9b,0x80,0x6f,0xda,0x9b,
-    0xed,0x9a,0x77,0xb5,0x70,0x5a,0x2a,0x0e,0xc2,0x41,0xe5,0xc1,0x27,0xdf,0xa6,0x7c,
-    0x7b,0xe3,0x50,0xe8,0xa1,0xce,0xc3,0xdc,0xc3,0xcd,0xdf,0x99,0x7f,0xb7,0xf5,0x08,
-    0xeb,0x48,0x79,0x2b,0xd2,0x3a,0xbf,0x75,0xac,0x2d,0xa3,0x6d,0xa0,0x3d,0xa1,0xbd,
-    0xef,0xe8,0x8c,0xa3,0x9d,0x1d,0x5e,0x1d,0x47,0xbe,0xb7,0xff,0x7e,0xef,0x31,0xe3,
-    0x63,0x75,0xc7,0x35,0x8f,0x57,0x9e,0xa0,0x9d,0x28,0x3d,0xf1,0xf9,0xe4,0x82,0x93,
-    0xe3,0xa7,0x64,0xa7,0x9e,0x9d,0x4e,0x3f,0x3d,0xd4,0x99,0xdc,0x79,0xf7,0x4c,0xfc,
-    0x99,0x6b,0x5d,0x51,0x5d,0xbd,0x67,0x43,0xcf,0x9e,0x3f,0x17,0x74,0xee,0x4c,0xb7,
-    0x5f,0xf7,0xc9,0xf3,0xde,0xe7,0x8f,0x5d,0xf0,0xbc,0x70,0xf4,0x22,0xf7,0x62,0xdb,
-    0x25,0xb7,0x4b,0xad,0x3d,0xae,0x3d,0x47,0x7e,0x70,0xfd,0xe1,0x48,0xaf,0x5b,0x6f,
-    0xeb,0x65,0xf7,0xcb,0xed,0x57,0x3c,0xae,0x74,0xf4,0x4d,0xeb,0x3b,0xd1,0xef,0xd3,
-    0x7f,0xfa,0x6a,0xc0,0xd5,0x73,0xd7,0xf8,0xd7,0x2e,0x5d,0x9f,0x79,0xbd,0xef,0xc6,
-    0xec,0x1b,0xb7,0x6e,0x26,0xdd,0x1c,0xb8,0x25,0xba,0xf5,0xf8,0x76,0xf6,0xed,0x17,
-    0x77,0x0a,0xee,0x4c,0xdc,0x5d,0x7a,0x8f,0x78,0xaf,0xfc,0xbe,0xda,0xfd,0xea,0x07,
-    0xfa,0x0f,0xea,0x7f,0xb4,0xfe,0xb1,0x65,0xc0,0x6d,0xe0,0xf8,0x60,0xc0,0x60,0xcf,
-    0xc3,0x59,0x0f,0xef,0x0e,0x09,0x87,0x9e,0xfe,0x94,0xff,0xd3,0x87,0xe1,0xd2,0x47,
-    0xcc,0x47,0xd5,0x23,0x46,0x23,0x8d,0x8f,0x9d,0x1f,0x1f,0x1b,0x0d,0x1a,0xbd,0xf2,
-    0x64,0xce,0x93,0xe1,0xa7,0xb2,0xa7,0x13,0xcf,0xca,0x7e,0x56,0xff,0x79,0xeb,0x73,
-    0xab,0xe7,0xdf,0xfd,0xe2,0xfb,0x4b,0xcf,0x58,0xfc,0xd8,0xf0,0x0b,0xf9,0x8b,0xcf,
-    0xbf,0xae,0x79,0xa9,0xf3,0x72,0xef,0xab,0xa9,0xaf,0x3a,0xc7,0x23,0xc7,0x1f,0xbc,
-    0xce,0x79,0x3d,0xf1,0xa6,0xfc,0xad,0xce,0xdb,0x7d,0xef,0xb8,0xef,0xba,0xdf,0xc7,
-    0xbd,0x1f,0x99,0x28,0xfc,0x40,0xfe,0x50,0xf3,0xd1,0xfa,0x63,0xc7,0xa7,0xd0,0x4f,
-    0xf7,0x3e,0xe7,0x7c,0xfe,0xfc,0x2f,0xf7,0x84,0xf3,0xfb,0x25,0xd2,0x9f,0x33,0x00,
-    0x00,0x3b,0xe1,0x69,0x54,0x58,0x74,0x58,0x4d,0x4c,0x3a,0x63,0x6f,0x6d,0x2e,0x61,
-    0x64,0x6f,0x62,0x65,0x2e,0x78,0x6d,0x70,0x00,0x00,0x00,0x00,0x00,0x3c,0x3f,0x78,
-    0x70,0x61,0x63,0x6b,0x65,0x74,0x20,0x62,0x65,0x67,0x69,0x6e,0x3d,0x22,0xef,0xbb,
-    0xbf,0x22,0x20,0x69,0x64,0x3d,0x22,0x57,0x35,0x4d,0x30,0x4d,0x70,0x43,0x65,0x68,
-    0x69,0x48,0x7a,0x72,0x65,0x53,0x7a,0x4e,0x54,0x63,0x7a,0x6b,0x63,0x39,0x64,0x22,
-    0x3f,0x3e,0x0a,0x3c,0x78,0x3a,0x78,0x6d,0x70,0x6d,0x65,0x74,0x61,0x20,0x78,0x6d,
-    0x6c,0x6e,0x73,0x3a,0x78,0x3d,0x22,0x61,0x64,0x6f,0x62,0x65,0x3a,0x6e,0x73,0x3a,
-    0x6d,0x65,0x74,0x61,0x2f,0x22,0x20,0x78,0x3a,0x78,0x6d,0x70,0x74,0x6b,0x3d,0x22,
-    0x41,0x64,0x6f,0x62,0x65,0x20,0x58,0x4d,0x50,0x20,0x43,0x6f,0x72,0x65,0x20,0x35,
-    0x2e,0x36,0x2d,0x63,0x31,0x33,0x38,0x20,0x37,0x39,0x2e,0x31,0x35,0x39,0x38,0x32,
-    0x34,0x2c,0x20,0x32,0x30,0x31,0x36,0x2f,0x30,0x39,0x2f,0x31,0x34,0x2d,0x30,0x31,
-    0x3a,0x30,0x39,0x3a,0x30,0x31,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x3e,
-    0x0a,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x52,0x44,0x46,0x20,0x78,0x6d,0x6c,
-    0x6e,0x73,0x3a,0x72,0x64,0x66,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,
-    0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x31,0x39,0x39,0x39,0x2f,0x30,
-    0x32,0x2f,0x32,0x32,0x2d,0x72,0x64,0x66,0x2d,0x73,0x79,0x6e,0x74,0x61,0x78,0x2d,
-    0x6e,0x73,0x23,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,
-    0x3a,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x20,0x72,0x64,0x66,
-    0x3a,0x61,0x62,0x6f,0x75,0x74,0x3d,0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x6d,0x70,0x3d,
-    0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64,0x6f,0x62,0x65,
-    0x2e,0x63,0x6f,0x6d,0x2f,0x78,0x61,0x70,0x2f,0x31,0x2e,0x30,0x2f,0x22,0x0a,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,
-    0x3a,0x64,0x63,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x70,0x75,0x72,0x6c,
-    0x2e,0x6f,0x72,0x67,0x2f,0x64,0x63,0x2f,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,
-    0x2f,0x31,0x2e,0x31,0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,
-    0x6f,0x70,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64,
-    0x6f,0x62,0x65,0x2e,0x63,0x6f,0x6d,0x2f,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,
-    0x70,0x2f,0x31,0x2e,0x30,0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x6d,0x70,0x4d,0x4d,0x3d,
-    0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64,0x6f,0x62,0x65,
-    0x2e,0x63,0x6f,0x6d,0x2f,0x78,0x61,0x70,0x2f,0x31,0x2e,0x30,0x2f,0x6d,0x6d,0x2f,
-    0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78,0x6d,
-    0x6c,0x6e,0x73,0x3a,0x73,0x74,0x45,0x76,0x74,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,
-    0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64,0x6f,0x62,0x65,0x2e,0x63,0x6f,0x6d,0x2f,0x78,
-    0x61,0x70,0x2f,0x31,0x2e,0x30,0x2f,0x73,0x54,0x79,0x70,0x65,0x2f,0x52,0x65,0x73,
-    0x6f,0x75,0x72,0x63,0x65,0x45,0x76,0x65,0x6e,0x74,0x23,0x22,0x0a,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x74,
-    0x69,0x66,0x66,0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61,
-    0x64,0x6f,0x62,0x65,0x2e,0x63,0x6f,0x6d,0x2f,0x74,0x69,0x66,0x66,0x2f,0x31,0x2e,
-    0x30,0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x65,0x78,0x69,0x66,0x3d,0x22,0x68,0x74,0x74,0x70,
-    0x3a,0x2f,0x2f,0x6e,0x73,0x2e,0x61,0x64,0x6f,0x62,0x65,0x2e,0x63,0x6f,0x6d,0x2f,
-    0x65,0x78,0x69,0x66,0x2f,0x31,0x2e,0x30,0x2f,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x3a,0x43,0x72,0x65,0x61,0x74,0x6f,
-    0x72,0x54,0x6f,0x6f,0x6c,0x3e,0x41,0x64,0x6f,0x62,0x65,0x20,0x50,0x68,0x6f,0x74,
-    0x6f,0x73,0x68,0x6f,0x70,0x20,0x43,0x43,0x20,0x32,0x30,0x31,0x37,0x20,0x28,0x57,
-    0x69,0x6e,0x64,0x6f,0x77,0x73,0x29,0x3c,0x2f,0x78,0x6d,0x70,0x3a,0x43,0x72,0x65,
-    0x61,0x74,0x6f,0x72,0x54,0x6f,0x6f,0x6c,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x3a,0x43,0x72,0x65,0x61,0x74,0x65,0x44,0x61,
-    0x74,0x65,0x3e,0x32,0x30,0x31,0x37,0x2d,0x30,0x38,0x2d,0x31,0x31,0x54,0x30,0x38,
-    0x3a,0x32,0x34,0x3a,0x33,0x38,0x2b,0x30,0x38,0x3a,0x30,0x30,0x3c,0x2f,0x78,0x6d,
-    0x70,0x3a,0x43,0x72,0x65,0x61,0x74,0x65,0x44,0x61,0x74,0x65,0x3e,0x0a,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x3a,0x4d,0x6f,0x64,0x69,
-    0x66,0x79,0x44,0x61,0x74,0x65,0x3e,0x32,0x30,0x31,0x37,0x2d,0x31,0x32,0x2d,0x30,
-    0x36,0x54,0x31,0x39,0x3a,0x35,0x35,0x3a,0x33,0x32,0x2b,0x30,0x38,0x3a,0x30,0x30,
-    0x3c,0x2f,0x78,0x6d,0x70,0x3a,0x4d,0x6f,0x64,0x69,0x66,0x79,0x44,0x61,0x74,0x65,
-    0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x3a,
-    0x4d,0x65,0x74,0x61,0x64,0x61,0x74,0x61,0x44,0x61,0x74,0x65,0x3e,0x32,0x30,0x31,
-    0x37,0x2d,0x31,0x32,0x2d,0x30,0x36,0x54,0x31,0x39,0x3a,0x35,0x35,0x3a,0x33,0x32,
-    0x2b,0x30,0x38,0x3a,0x30,0x30,0x3c,0x2f,0x78,0x6d,0x70,0x3a,0x4d,0x65,0x74,0x61,
-    0x64,0x61,0x74,0x61,0x44,0x61,0x74,0x65,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x3c,0x64,0x63,0x3a,0x66,0x6f,0x72,0x6d,0x61,0x74,0x3e,0x69,0x6d,
-    0x61,0x67,0x65,0x2f,0x70,0x6e,0x67,0x3c,0x2f,0x64,0x63,0x3a,0x66,0x6f,0x72,0x6d,
-    0x61,0x74,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x70,0x68,
-    0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3a,0x43,0x6f,0x6c,0x6f,0x72,0x4d,0x6f,0x64,
-    0x65,0x3e,0x33,0x3c,0x2f,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3a,0x43,
-    0x6f,0x6c,0x6f,0x72,0x4d,0x6f,0x64,0x65,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x3c,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3a,0x49,0x43,
-    0x43,0x50,0x72,0x6f,0x66,0x69,0x6c,0x65,0x3e,0x73,0x52,0x47,0x42,0x20,0x49,0x45,
-    0x43,0x36,0x31,0x39,0x36,0x36,0x2d,0x32,0x2e,0x31,0x3c,0x2f,0x70,0x68,0x6f,0x74,
-    0x6f,0x73,0x68,0x6f,0x70,0x3a,0x49,0x43,0x43,0x50,0x72,0x6f,0x66,0x69,0x6c,0x65,
-    0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x4d,
-    0x4d,0x3a,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3e,0x78,0x6d,0x70,
-    0x2e,0x69,0x69,0x64,0x3a,0x33,0x64,0x34,0x65,0x61,0x31,0x62,0x62,0x2d,0x31,0x35,
-    0x31,0x37,0x2d,0x37,0x39,0x34,0x33,0x2d,0x62,0x35,0x63,0x32,0x2d,0x31,0x39,0x66,
-    0x32,0x37,0x36,0x34,0x34,0x64,0x63,0x64,0x34,0x3c,0x2f,0x78,0x6d,0x70,0x4d,0x4d,
-    0x3a,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3e,0x0a,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x4d,0x4d,0x3a,0x44,0x6f,0x63,
-    0x75,0x6d,0x65,0x6e,0x74,0x49,0x44,0x3e,0x61,0x64,0x6f,0x62,0x65,0x3a,0x64,0x6f,
-    0x63,0x69,0x64,0x3a,0x70,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x3a,0x34,0x64,
-    0x36,0x38,0x38,0x38,0x30,0x35,0x2d,0x64,0x61,0x37,0x63,0x2d,0x31,0x31,0x65,0x37,
-    0x2d,0x39,0x38,0x37,0x33,0x2d,0x66,0x35,0x66,0x38,0x61,0x34,0x38,0x61,0x39,0x39,
-    0x37,0x31,0x3c,0x2f,0x78,0x6d,0x70,0x4d,0x4d,0x3a,0x44,0x6f,0x63,0x75,0x6d,0x65,
-    0x6e,0x74,0x49,0x44,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,
-    0x78,0x6d,0x70,0x4d,0x4d,0x3a,0x4f,0x72,0x69,0x67,0x69,0x6e,0x61,0x6c,0x44,0x6f,
-    0x63,0x75,0x6d,0x65,0x6e,0x74,0x49,0x44,0x3e,0x78,0x6d,0x70,0x2e,0x64,0x69,0x64,
-    0x3a,0x33,0x30,0x30,0x38,0x31,0x62,0x32,0x30,0x2d,0x66,0x31,0x30,0x31,0x2d,0x31,
-    0x61,0x34,0x63,0x2d,0x38,0x36,0x63,0x38,0x2d,0x61,0x34,0x33,0x33,0x64,0x65,0x61,
-    0x63,0x32,0x39,0x66,0x37,0x3c,0x2f,0x78,0x6d,0x70,0x4d,0x4d,0x3a,0x4f,0x72,0x69,
-    0x67,0x69,0x6e,0x61,0x6c,0x44,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x49,0x44,0x3e,
-    0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x78,0x6d,0x70,0x4d,0x4d,
-    0x3a,0x48,0x69,0x73,0x74,0x6f,0x72,0x79,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x53,0x65,0x71,0x3e,0x0a,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,
-    0x72,0x64,0x66,0x3a,0x6c,0x69,0x20,0x72,0x64,0x66,0x3a,0x70,0x61,0x72,0x73,0x65,
-    0x54,0x79,0x70,0x65,0x3d,0x22,0x52,0x65,0x73,0x6f,0x75,0x72,0x63,0x65,0x22,0x3e,
-    0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x61,0x63,0x74,0x69,0x6f,0x6e,
-    0x3e,0x63,0x72,0x65,0x61,0x74,0x65,0x64,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,
-    0x61,0x63,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,
-    0x3a,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3e,0x78,0x6d,0x70,0x2e,
-    0x69,0x69,0x64,0x3a,0x33,0x30,0x30,0x38,0x31,0x62,0x32,0x30,0x2d,0x66,0x31,0x30,
-    0x31,0x2d,0x31,0x61,0x34,0x63,0x2d,0x38,0x36,0x63,0x38,0x2d,0x61,0x34,0x33,0x33,
-    0x64,0x65,0x61,0x63,0x32,0x39,0x66,0x37,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,
-    0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3e,0x0a,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,
-    0x74,0x45,0x76,0x74,0x3a,0x77,0x68,0x65,0x6e,0x3e,0x32,0x30,0x31,0x37,0x2d,0x30,
-    0x38,0x2d,0x31,0x31,0x54,0x30,0x38,0x3a,0x32,0x34,0x3a,0x33,0x38,0x2b,0x30,0x38,
-    0x3a,0x30,0x30,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x77,0x68,0x65,0x6e,0x3e,
-    0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x73,0x6f,0x66,0x74,0x77,0x61,
-    0x72,0x65,0x41,0x67,0x65,0x6e,0x74,0x3e,0x41,0x64,0x6f,0x62,0x65,0x20,0x50,0x68,
-    0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x20,0x43,0x43,0x20,0x28,0x57,0x69,0x6e,0x64,
-    0x6f,0x77,0x73,0x29,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x73,0x6f,0x66,0x74,
-    0x77,0x61,0x72,0x65,0x41,0x67,0x65,0x6e,0x74,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a,
-    0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x6c,0x69,0x20,0x72,0x64,0x66,0x3a,0x70,
-    0x61,0x72,0x73,0x65,0x54,0x79,0x70,0x65,0x3d,0x22,0x52,0x65,0x73,0x6f,0x75,0x72,
-    0x63,0x65,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x61,0x63,
-    0x74,0x69,0x6f,0x6e,0x3e,0x73,0x61,0x76,0x65,0x64,0x3c,0x2f,0x73,0x74,0x45,0x76,
-    0x74,0x3a,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,
-    0x76,0x74,0x3a,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3e,0x78,0x6d,
-    0x70,0x2e,0x69,0x69,0x64,0x3a,0x65,0x34,0x31,0x38,0x64,0x32,0x39,0x65,0x2d,0x31,
-    0x32,0x31,0x36,0x2d,0x64,0x32,0x34,0x35,0x2d,0x62,0x66,0x33,0x32,0x2d,0x35,0x37,
-    0x61,0x34,0x31,0x66,0x34,0x62,0x66,0x30,0x65,0x61,0x3c,0x2f,0x73,0x74,0x45,0x76,
-    0x74,0x3a,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3e,0x0a,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x77,0x68,0x65,0x6e,0x3e,0x32,0x30,0x31,0x37,
-    0x2d,0x30,0x38,0x2d,0x31,0x31,0x54,0x31,0x30,0x3a,0x32,0x34,0x3a,0x31,0x33,0x2b,
-    0x30,0x38,0x3a,0x30,0x30,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x77,0x68,0x65,
-    0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x73,0x6f,0x66,0x74,
-    0x77,0x61,0x72,0x65,0x41,0x67,0x65,0x6e,0x74,0x3e,0x41,0x64,0x6f,0x62,0x65,0x20,
-    0x50,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x20,0x43,0x43,0x20,0x28,0x57,0x69,
-    0x6e,0x64,0x6f,0x77,0x73,0x29,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x73,0x6f,
-    0x66,0x74,0x77,0x61,0x72,0x65,0x41,0x67,0x65,0x6e,0x74,0x3e,0x0a,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,
-    0x73,0x74,0x45,0x76,0x74,0x3a,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x3e,0x2f,0x3c,
-    0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x3e,0x0a,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,
-    0x2f,0x72,0x64,0x66,0x3a,0x6c,0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x64,0x66,0x3a,0x6c,0x69,0x20,
-    0x72,0x64,0x66,0x3a,0x70,0x61,0x72,0x73,0x65,0x54,0x79,0x70,0x65,0x3d,0x22,0x52,
-    0x65,0x73,0x6f,0x75,0x72,0x63,0x65,0x22,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,
-    0x76,0x74,0x3a,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3e,0x73,0x61,0x76,0x65,0x64,0x3c,
-    0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x61,0x63,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,
-    0x49,0x44,0x3e,0x78,0x6d,0x70,0x2e,0x69,0x69,0x64,0x3a,0x33,0x64,0x34,0x65,0x61,
-    0x31,0x62,0x62,0x2d,0x31,0x35,0x31,0x37,0x2d,0x37,0x39,0x34,0x33,0x2d,0x62,0x35,
-    0x63,0x32,0x2d,0x31,0x39,0x66,0x32,0x37,0x36,0x34,0x34,0x64,0x63,0x64,0x34,0x3c,
-    0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,
-    0x44,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,0x77,0x68,0x65,0x6e,
-    0x3e,0x32,0x30,0x31,0x37,0x2d,0x31,0x32,0x2d,0x30,0x36,0x54,0x31,0x39,0x3a,0x35,
-    0x35,0x3a,0x33,0x32,0x2b,0x30,0x38,0x3a,0x30,0x30,0x3c,0x2f,0x73,0x74,0x45,0x76,
-    0x74,0x3a,0x77,0x68,0x65,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,
-    0x3a,0x73,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x41,0x67,0x65,0x6e,0x74,0x3e,0x41,
-    0x64,0x6f,0x62,0x65,0x20,0x50,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f,0x70,0x20,0x43,
-    0x43,0x20,0x32,0x30,0x31,0x37,0x20,0x28,0x57,0x69,0x6e,0x64,0x6f,0x77,0x73,0x29,
-    0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,0x3a,0x73,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,
-    0x41,0x67,0x65,0x6e,0x74,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x73,0x74,0x45,0x76,0x74,0x3a,
-    0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x3e,0x2f,0x3c,0x2f,0x73,0x74,0x45,0x76,0x74,
-    0x3a,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x6c,
-    0x69,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,
-    0x2f,0x72,0x64,0x66,0x3a,0x53,0x65,0x71,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x3c,0x2f,0x78,0x6d,0x70,0x4d,0x4d,0x3a,0x48,0x69,0x73,0x74,0x6f,
-    0x72,0x79,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x74,0x69,
-    0x66,0x66,0x3a,0x4f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x3e,0x31,
-    0x3c,0x2f,0x74,0x69,0x66,0x66,0x3a,0x4f,0x72,0x69,0x65,0x6e,0x74,0x61,0x74,0x69,
-    0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x74,0x69,
-    0x66,0x66,0x3a,0x58,0x52,0x65,0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x3e,0x37,
-    0x32,0x30,0x30,0x30,0x30,0x2f,0x31,0x30,0x30,0x30,0x30,0x3c,0x2f,0x74,0x69,0x66,
-    0x66,0x3a,0x58,0x52,0x65,0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x74,0x69,0x66,0x66,0x3a,0x59,0x52,
-    0x65,0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x3e,0x37,0x32,0x30,0x30,0x30,0x30,
-    0x2f,0x31,0x30,0x30,0x30,0x30,0x3c,0x2f,0x74,0x69,0x66,0x66,0x3a,0x59,0x52,0x65,
-    0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x3c,0x74,0x69,0x66,0x66,0x3a,0x52,0x65,0x73,0x6f,0x6c,0x75,0x74,
-    0x69,0x6f,0x6e,0x55,0x6e,0x69,0x74,0x3e,0x32,0x3c,0x2f,0x74,0x69,0x66,0x66,0x3a,
-    0x52,0x65,0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x55,0x6e,0x69,0x74,0x3e,0x0a,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x65,0x78,0x69,0x66,0x3a,0x43,
-    0x6f,0x6c,0x6f,0x72,0x53,0x70,0x61,0x63,0x65,0x3e,0x31,0x3c,0x2f,0x65,0x78,0x69,
-    0x66,0x3a,0x43,0x6f,0x6c,0x6f,0x72,0x53,0x70,0x61,0x63,0x65,0x3e,0x0a,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x65,0x78,0x69,0x66,0x3a,0x50,0x69,0x78,
-    0x65,0x6c,0x58,0x44,0x69,0x6d,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x3e,0x31,0x39,0x30,
-    0x3c,0x2f,0x65,0x78,0x69,0x66,0x3a,0x50,0x69,0x78,0x65,0x6c,0x58,0x44,0x69,0x6d,
-    0x65,0x6e,0x73,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x3c,0x65,0x78,0x69,0x66,0x3a,0x50,0x69,0x78,0x65,0x6c,0x59,0x44,0x69,0x6d,
-    0x65,0x6e,0x73,0x69,0x6f,0x6e,0x3e,0x37,0x34,0x3c,0x2f,0x65,0x78,0x69,0x66,0x3a,
-    0x50,0x69,0x78,0x65,0x6c,0x59,0x44,0x69,0x6d,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x3e,
-    0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x64,0x66,0x3a,0x44,0x65,0x73,
-    0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x3e,0x0a,0x20,0x20,0x20,0x3c,0x2f,0x72,
-    0x64,0x66,0x3a,0x52,0x44,0x46,0x3e,0x0a,0x3c,0x2f,0x78,0x3a,0x78,0x6d,0x70,0x6d,
-    0x65,0x74,0x61,0x3e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-    0x20,0x20,0x20,0x20,0x0a,0x3c,0x3f,0x78,0x70,0x61,0x63,0x6b,0x65,0x74,0x20,0x65,
-    0x6e,0x64,0x3d,0x22,0x77,0x22,0x3f,0x3e,0x27,0x9a,0x26,0x8f,0x00,0x00,0x00,0x20,
-    0x63,0x48,0x52,0x4d,0x00,0x00,0x7a,0x25,0x00,0x00,0x80,0x83,0x00,0x00,0xf9,0xff,
-    0x00,0x00,0x80,0xe9,0x00,0x00,0x75,0x30,0x00,0x00,0xea,0x60,0x00,0x00,0x3a,0x98,
-    0x00,0x00,0x17,0x6f,0x92,0x5f,0xc5,0x46,0x00,0x00,0x10,0x46,0x49,0x44,0x41,0x54,
-    0x78,0xda,0xec,0x5d,0x69,0xb4,0x16,0xc5,0x11,0x9d,0x6f,0x64,0x91,0x20,0x2a,0xbb,
-    0x3b,0x16,0x98,0xa0,0x46,0x05,0x51,0xa3,0x88,0x0b,0x75,0x54,0x8c,0x9e,0x63,0xd4,
-    0x18,0x15,0xb7,0xa8,0x71,0x49,0xa2,0xb8,0x45,0x13,0xc5,0x93,0xc4,0x5d,0x0e,0x20,
-    0x49,0x44,0x81,0x28,0x04,0x45,0x0c,0x26,0x44,0xa3,0x71,0xc5,0x28,0xe0,0x1a,0x35,
-    0xe2,0x46,0xc4,0x88,0x89,0x81,0x57,0x28,0x3b,0x8f,0x4d,0x65,0x53,0x5e,0x7e,0xcc,
-    0x9d,0xf3,0x9a,0xa6,0x7b,0xa6,0x67,0xf9,0xde,0x82,0xfd,0xe3,0x9e,0x07,0xf3,0xcd,
-    0xf4,0xf4,0x74,0xdf,0xae,0xae,0xae,0xaa,0xae,0x0e,0xea,0xea,0xea,0x02,0x0f,0x8f,
-    0xaf,0x1b,0x7c,0x23,0x78,0x78,0xe2,0x7b,0x78,0x78,0xe2,0x7b,0x78,0x78,0xe2,0x7b,
-    0x78,0x78,0xe2,0x7b,0x78,0x78,0xe2,0x7b,0x78,0x78,0xe2,0x7b,0x78,0x78,0xe2,0x7b,
-    0x78,0x78,0xe2,0x7b,0x78,0x34,0x2d,0xe2,0x33,0x49,0xa5,0x11,0x11,0x18,0xb0,0x15,
-    0x93,0xb4,0x66,0x92,0x6f,0x30,0x49,0x7b,0x26,0xd9,0x87,0x49,0x8e,0x65,0x92,0x8b,
-    0x99,0xe4,0x36,0x26,0x19,0xc3,0x24,0x93,0x98,0xe4,0x49,0x26,0x79,0x99,0x49,0xde,
-    0x61,0x92,0x0f,0x98,0xe4,0x3f,0x4c,0xf2,0x31,0xfe,0xce,0x62,0x92,0x19,0x4c,0x32,
-    0x8d,0x49,0x1e,0x63,0x92,0x07,0x98,0xe4,0x4e,0x26,0x19,0xcc,0x24,0xa7,0x33,0xc9,
-    0xa1,0x4c,0xb2,0x1b,0x93,0xb4,0x63,0x92,0xad,0x99,0xa4,0xa5,0xa5,0x2e,0x15,0x8f,
-    0x2d,0x13,0x49,0x9d,0x1b,0x02,0x69,0x85,0x84,0x19,0xca,0xd0,0xff,0x6f,0x22,0x1b,
-    0x31,0xc9,0x61,0x4c,0x32,0x90,0x49,0xae,0x67,0x92,0x71,0x4c,0xf2,0x28,0x93,0xbc,
-    0x0a,0x52,0x2f,0x60,0x92,0x55,0x4c,0xf2,0x25,0x93,0xd4,0x39,0x60,0x1d,0x93,0x2c,
-    0x67,0x92,0x79,0x4c,0x32,0x93,0x49,0xfe,0x8e,0x81,0xf3,0x5b,0x26,0xf9,0x29,0x06,
-    0xd5,0x7e,0x4c,0xd2,0x36,0x81,0xfc,0xa6,0xef,0x48,0xfb,0xb7,0x6b,0x7b,0xb8,0x94,
-    0x11,0x1a,0x9e,0x37,0xf5,0x4f,0x96,0xba,0x54,0x1c,0xca,0x49,0xaa,0x6f,0xde,0xf2,
-    0xc3,0x84,0x7b,0x42,0x47,0xae,0x85,0x29,0xe5,0xa4,0xb6,0x47,0x90,0x70,0x83,0x6b,
-    0xc3,0x26,0xbd,0xc8,0x54,0x86,0x4e,0xac,0xbd,0x99,0xe4,0x1c,0x26,0x19,0xca,0x24,
-    0x8f,0x33,0xc9,0xbb,0x4c,0xf2,0x29,0x93,0x6c,0x70,0x24,0x76,0x51,0xd4,0x62,0x40,
-    0x4d,0xc7,0x20,0xbb,0x8a,0x49,0xfa,0x19,0xea,0x6a,0x6b,0xe0,0xd0,0xf0,0xbd,0x2e,
-    0xbf,0xe5,0x69,0xc3,0xbc,0xc4,0x0f,0x53,0xde,0x17,0x26,0x10,0x31,0x4c,0xb8,0xee,
-    0x32,0x70,0x43,0xc7,0x7a,0x87,0x8e,0xe5,0xb8,0x0c,0xc8,0xb4,0xb6,0x0e,0x83,0x02,
-    0x52,0x21,0xaf,0x5a,0xd3,0x1e,0xd2,0x7c,0x04,0x93,0x3c,0xc5,0x24,0x1f,0x42,0x2a,
-    0xd7,0x35,0x21,0xcc,0x63,0x92,0xa9,0x4c,0x32,0x92,0x49,0x7e,0xc8,0x24,0x5d,0x0c,
-    0x03,0x36,0x2c,0x59,0xe5,0xf3,0x2a,0x48,0x23,0xa9,0x3a,0x45,0x3a,0x32,0x4c,0xb9,
-    0x16,0x40,0x9d,0xf8,0x0b,0x93,0xbc,0x05,0x55,0xa5,0xae,0x99,0xe0,0x0b,0xcc,0x42,
-    0x0f,0x62,0xc0,0xb6,0xb2,0xa8,0x42,0x59,0xd5,0xc0,0xb2,0xda,0xb9,0x1a,0xcf,0x54,
-    0x32,0xaa,0x6f,0xae,0x3c,0x28,0xeb,0xbd,0xa1,0xa3,0x5a,0x17,0xe6,0xd1,0xf1,0xcb,
-    0x6c,0xd0,0x80,0x49,0xf6,0x64,0x92,0xc5,0xcd,0x88,0xf0,0x26,0xac,0xc4,0x62,0x7a,
-    0x2c,0x16,0xc8,0x7e,0x31,0xdc,0xf4,0xe0,0xa4,0x9d,0x54,0xa3,0xb3,0x6c,0x64,0x08,
-    0x99,0xe4,0x47,0x1a,0x91,0x5e,0xc0,0xb5,0x99,0xcd,0x70,0x10,0xcc,0x47,0xfd,0xcf,
-    0xf2,0x03,0x60,0xcb,0xb2,0xea,0x14,0x21,0xfd,0x81,0x58,0x24,0x76,0x50,0x88,0x10,
-    0x9b,0x2a,0xc7,0x33,0xc9,0x14,0x48,0xcc,0xce,0xb8,0x7e,0x25,0x93,0xac,0x69,0xa6,
-    0xb3,0xc0,0x2a,0x26,0x99,0x0d,0x0b,0x54,0xeb,0x94,0x01,0x10,0x7a,0xd2,0x35,0x2d,
-    0xe2,0x87,0x25,0x2d,0xce,0x8e,0x67,0x92,0x17,0x99,0x64,0x19,0x70,0x8e,0x66,0x9f,
-    0xdf,0x99,0x49,0xf6,0x67,0x92,0xed,0x35,0x82,0xb4,0x63,0x92,0xf7,0x9b,0xb9,0x1a,
-    0xb4,0x8e,0x49,0x3e,0x61,0x92,0x9b,0xb1,0x80,0xaf,0x14,0x9c,0x01,0x42,0x3f,0x50,
-    0xaa,0xb7,0x3e,0x0a,0x4a,0x94,0xf4,0x21,0x93,0x5c,0xa2,0x91,0x61,0x2a,0xa4,0x60,
-    0x4f,0x26,0x99,0xc8,0x24,0x2b,0x30,0x30,0x76,0xd0,0x66,0x82,0x80,0x49,0x7e,0xcc,
-    0x24,0x9f,0x37,0x73,0xf2,0xd7,0xc1,0x0c,0xbb,0x84,0x49,0xae,0x61,0x92,0xed,0xbc,
-    0x0a,0xd4,0xf8,0xa8,0xab,0xab,0x0b,0xaa,0xa5,0xea,0xc4,0x1d,0xdb,0x86,0x49,0x5e,
-    0xd1,0x16,0x83,0xa7,0x41,0x0a,0xaa,0xe4,0xb8,0x0c,0x03,0x45,0x27,0xff,0x54,0x26,
-    0xd9,0x58,0x80,0x74,0xeb,0x31,0x78,0x56,0xc1,0x69,0xb5,0x0c,0x0b,0xea,0x85,0x4c,
-    0x32,0x97,0x49,0x3e,0x62,0x92,0x7f,0x03,0xb3,0x71,0x6d,0x01,0xee,0x59,0x86,0x67,
-    0x56,0xa1,0x8c,0xf5,0x05,0x07,0xc0,0x57,0x4c,0x22,0x4c,0x72,0xa6,0x36,0xc3,0x79,
-    0x32,0x6e,0x21,0x3a,0x7e,0xdc,0xa1,0xdb,0x32,0xc9,0x8e,0x4c,0x72,0x0a,0x93,0x7c,
-    0x06,0x32,0xbd,0x0e,0x6b,0xce,0x5e,0x1a,0x91,0xe6,0x33,0x49,0x2f,0x4d,0x1a,0xb6,
-    0x65,0x92,0x5f,0x33,0xc9,0xda,0x14,0x42,0x6d,0x44,0xf9,0x8b,0x40,0xdc,0x99,0x4c,
-    0xf2,0x0c,0x93,0xdc,0xc7,0x24,0xbf,0x62,0x92,0xf3,0x99,0xe4,0x24,0x26,0x61,0x26,
-    0xe9,0xc3,0x24,0x3d,0x60,0x87,0x57,0xc3,0x13,0x5a,0x62,0x26,0x6a,0x87,0x75,0x46,
-    0x77,0x26,0xe9,0xcd,0x24,0xfd,0x99,0xe4,0x7b,0x4c,0x72,0x1e,0xca,0x1a,0x8f,0xb2,
-    0xdf,0x67,0x92,0x1a,0x48,0xf2,0x3c,0x6b,0x91,0x17,0x99,0xe4,0x10,0x6d,0x0d,0xe0,
-    0x09,0xd8,0x88,0x2a,0x4f,0x19,0x1d,0xb0,0x13,0x48,0x36,0x89,0x49,0xde,0x66,0x92,
-    0x03,0x98,0xe4,0x02,0x90,0x2e,0x50,0x88,0x35,0x5e,0xb1,0x8b,0xcf,0x64,0x92,0x23,
-    0x40,0xc0,0x1e,0x4c,0x32,0x00,0x26,0xc2,0x45,0x16,0xc9,0xb9,0x04,0x12,0xfa,0x05,
-    0x38,0xbe,0x2e,0x66,0x92,0xbe,0x4c,0xd2,0xc9,0x12,0x66,0x50,0x0d,0xec,0xc8,0x24,
-    0x47,0x31,0xc9,0x15,0xa8,0xeb,0x0c,0x0c,0xbc,0xd5,0x19,0x06,0xc0,0x50,0x26,0xe9,
-    0xe6,0xc9,0xdf,0xbc,0x25,0x7e,0xdc,0x79,0x37,0x6a,0x9d,0x7b,0x37,0xae,0xef,0xca,
-    0x24,0x27,0x32,0xc9,0x4b,0x08,0x45,0x38,0x9a,0x49,0x1e,0x61,0x92,0x4b,0x95,0x67,
-    0x77,0x02,0xa1,0x75,0x82,0xac,0x80,0x94,0x7d,0x94,0x49,0x6e,0xc0,0xa2,0xb9,0x83,
-    0x03,0x39,0x1b,0x22,0x88,0x4e,0x45,0x4f,0xcc,0x0e,0x63,0xa0,0xe2,0xd5,0x38,0x90,
-    0x7f,0x36,0x93,0x9c,0xc0,0x24,0x2d,0xb6,0x20,0xf2,0x87,0x55,0xba,0xb7,0x41,0xac,
-    0x3a,0x59,0x02,0xd2,0x42,0x85,0x18,0xfd,0xa0,0x27,0xab,0xe6,0xbd,0x3d,0x10,0x04,
-    0xa6,0x76,0xf8,0xa5,0x06,0xe2,0x6c,0xcb,0x24,0x4f,0xe3,0xf7,0xb5,0x50,0x8d,0xee,
-    0x65,0x92,0x53,0x99,0xa4,0x63,0x0a,0xc1,0x5d,0x83,0x9a,0xc2,0x8c,0xf7,0xa6,0xc5,
-    0xba,0x24,0x0d,0x84,0x3e,0x50,0x91,0xa6,0x60,0x3d,0x91,0x34,0x00,0x46,0x20,0x42,
-    0xd4,0x16,0x02,0x91,0x16,0xdf,0x52,0x34,0xa8,0x30,0xcc,0x49,0xd8,0xd0,0xc1,0x43,
-    0x5b,0x76,0xbf,0x94,0x3e,0x68,0x82,0x0c,0x41,0x46,0x95,0x84,0x80,0xb3,0xa1,0x1a,
-    0xf1,0x2f,0x84,0xbe,0xac,0xea,0xeb,0x4b,0x98,0x64,0x5f,0x4d,0xca,0x05,0xb8,0xf6,
-    0x27,0x3c,0xb3,0x75,0x0a,0xd1,0x5d,0xdd,0xd9,0x0d,0x25,0xd9,0xc2,0x84,0x99,0x61,
-    0x6f,0x84,0x41,0x3f,0x91,0xe0,0xb1,0x7e,0x83,0x49,0x8e,0xd4,0xc8,0xef,0x1a,0x75,
-    0xe8,0x1a,0x90,0x56,0xc9,0x11,0x0d,0xda,0x90,0xa6,0xd5,0xac,0x91,0x9e,0x69,0x81,
-    0x6e,0x4e,0x9c,0x08,0x52,0x3a,0xd4,0x85,0x60,0x01,0x24,0xfc,0x74,0xa8,0x32,0x67,
-    0x42,0xf7,0x6e,0xc1,0x24,0x0f,0x29,0x9d,0xbc,0x5a,0xb3,0xeb,0x27,0x91,0xa6,0x68,
-    0x38,0x6d,0x1e,0xf2,0xba,0x44,0x0c,0xba,0x0e,0x34,0xfd,0x7b,0x06,0x30,0xc9,0x68,
-    0x26,0x79,0xd3,0x62,0x89,0xba,0xc4,0xe2,0xe9,0x0e,0x4b,0x22,0x5e,0xd6,0x76,0x0a,
-    0x73,0x4a,0x6b,0xd7,0xf8,0x99,0x3c,0x6d,0x5e,0x6a,0xcc,0x51,0x50,0xa0,0xc1,0x74,
-    0xe2,0x9a,0x22,0x18,0x0f,0x83,0xee,0x7b,0x27,0x24,0x5b,0x1b,0x43,0xe7,0x96,0xa9,
-    0x9f,0x17,0xd9,0x3f,0x10,0x3a,0x48,0xd6,0x2c,0x01,0x7a,0x26,0xb5,0x68,0x67,0x78,
-    0xa9,0x9f,0x33,0x0c,0x80,0x7b,0x14,0x4f,0x76,0xd9,0x52,0xb6,0x1a,0xc4,0xaf,0x34,
-    0x31,0xe2,0x87,0x59,0x34,0x81,0xc0,0xa1,0x03,0xb3,0x2e,0x02,0xf5,0xe7,0xbb,0x1a,
-    0xc2,0x79,0xcb,0xea,0xd4,0xb0,0x91,0x17,0x6a,0x59,0xca,0xd3,0xd7,0x36,0x17,0x60,
-    0x77,0x98,0x1e,0xbb,0xd4,0xcb,0x51,0x18,0x84,0x4d,0xfc,0xbb,0x1b,0x32,0xca,0x34,
-    0xcc,0x5a,0x6e,0x59,0xc4,0x77,0x1d,0x10,0x65,0xeb,0x8a,0x21,0x37,0x61,0xcb,0x81,
-    0x83,0x2a,0xd4,0x06,0xea,0xdf,0xf3,0x0a,0xf9,0x3f,0x62,0x92,0x63,0x1c,0xc8,0xef,
-    0x89,0x5f,0xa0,0xbc,0xe6,0x6a,0x4e,0x0b,0xb9,0x19,0x98,0xcc,0x32,0x08,0x85,0x2e,
-    0x70,0xbc,0xcd,0x54,0x3c,0xde,0xe7,0x7b,0x7b,0x7f,0x75,0xcd,0x99,0x21,0xbb,0xef,
-    0xf3,0x2c,0x3a,0x5a,0xd3,0x74,0x42,0xd7,0x51,0x9d,0x67,0x0b,0x5f,0xd1,0x41,0xe6,
-    0xba,0xd5,0xae,0x88,0x0a,0xd4,0x83,0x49,0x7e,0xae,0x48,0xff,0x6b,0x1c,0x37,0xbc,
-    0xe4,0x6d,0xff,0xbc,0x56,0x9b,0x32,0x17,0xa1,0x69,0x16,0x9a,0x30,0xe3,0x3a,0xa1,
-    0xea,0xd1,0x99,0x3e,0x72,0xb0,0x7a,0x33,0xc0,0x41,0x4c,0xf2,0x37,0x90,0xff,0x37,
-    0x0d,0x28,0xf9,0xc3,0xaf,0x93,0xc4,0xaf,0xa6,0xe9,0x30,0xab,0x54,0xaf,0x34,0xa0,
-    0xfe,0x1f,0x96,0xac,0x4a,0x95,0x65,0x89,0x88,0x49,0xbe,0x3d,0x93,0x5c,0x04,0xf2,
-    0x3f,0xce,0x24,0xdb,0x24,0xec,0xf5,0x0d,0xab,0x4c,0xe2,0xb0,0xa0,0x04,0x6f,0x92,
-    0xc4,0x2f,0x03,0x65,0xb8,0xff,0xab,0xfd,0xfe,0xa6,0x50,0xb7,0x2c,0x75,0x8f,0x7f,
-    0xdf,0x87,0xa3,0x2c,0x10,0x2f,0x69,0x1b,0x7b,0x3c,0x32,0x84,0x25,0x9b,0x12,0x4a,
-    0x35,0x14,0x11,0x3d,0xf1,0xb3,0xd7,0x5f,0x0d,0x90,0x1b,0xc6,0x24,0xc3,0x95,0xc0,
-    0x3c,0x4f,0xea,0x82,0xc4,0x1f,0xc2,0x24,0xf7,0x33,0xc9,0x28,0x05,0x77,0x03,0xa3,
-    0x94,0xbf,0xea,0xf5,0xf8,0xda,0x68,0x8e,0x52,0x70,0x5c,0x8d,0xed,0x86,0x6d,0xb4,
-    0xce,0x8c,0xff,0x7d,0x0a,0x93,0xfc,0x15,0xf7,0xdf,0x6d,0x79,0x87,0x09,0xa3,0x12,
-    0x7e,0x1f,0xc9,0x24,0x7f,0x44,0x38,0xf2,0x9e,0x39,0xc9,0x10,0x30,0xc9,0xb7,0x99,
-    0x64,0x02,0x36,0xca,0x8c,0x4c,0xa8,0x47,0xda,0x75,0xf5,0xdf,0x77,0x31,0xc9,0xef,
-    0x99,0xe4,0x61,0x04,0xa4,0xc5,0xed,0x70,0x12,0xbc,0xd9,0xf7,0x72,0x7d,0x46,0xb8,
-    0xfe,0x0e,0x75,0x0f,0x10,0xd2,0xfc,0x5d,0x26,0xf9,0x0e,0x76,0xb3,0x79,0xf2,0xbb,
-    0x6d,0x40,0xe9,0x00,0x81,0x31,0x11,0xfd,0x72,0x3f,0x93,0xdc,0x1a,0x20,0x36,0x3e,
-    0x8e,0x73,0xcf,0x8b,0x0d,0x88,0x53,0x7f,0x0d,0x1e,0xda,0xad,0x34,0x89,0x36,0xa4,
-    0x84,0x77,0x98,0x10,0x5b,0x3f,0x8e,0xe3,0x7c,0xb9,0x6e,0x02,0xc4,0xdf,0xd7,0x55,
-    0xb1,0x7e,0x37,0x2a,0xed,0x30,0x5c,0x7b,0xcf,0x3a,0x26,0x19,0x94,0x62,0xb5,0x51,
-    0xbd,0xc0,0x21,0xf6,0x2d,0x6c,0x65,0xf0,0x80,0x37,0x64,0xbc,0x52,0x63,0xe8,0xf0,
-    0x99,0x7d,0x36,0x20,0x7e,0x77,0x25,0x02,0x38,0xee,0x93,0x1a,0x95,0xf8,0x65,0x61,
-    0x35,0x93,0xfc,0x44,0x23,0xfe,0xed,0x55,0xde,0xee,0x77,0x5c,0x01,0x89,0x7f,0x42,
-    0x95,0xeb,0x76,0x93,0xd2,0x0e,0x77,0x18,0xf6,0xe9,0x5e,0x9a,0x63,0x9d,0xe4,0x25,
-    0xba,0xbb,0xc4,0x27,0x43,0xa4,0x6c,0x4d,0xc0,0x51,0xba,0xbe,0xb2,0x3b,0x7b,0x19,
-    0x93,0x1c,0xac,0x74,0xd4,0x88,0x2a,0x93,0xeb,0x84,0x02,0xc4,0x3f,0xb9,0xca,0x75,
-    0x1b,0xa2,0x49,0x7c,0x75,0xa6,0x5a,0x9b,0x91,0xf8,0x1e,0xf9,0x88,0xaf,0xef,0xf9,
-    0x98,0x6b,0x23,0xfe,0x67,0x1c,0x25,0x4e,0x7a,0x97,0xa3,0x4c,0xc4,0xb3,0x14,0xbc,
-    0xcf,0x51,0xda,0xbf,0xe5,0x29,0x1d,0x3e,0x59,0xe9,0xf0,0xab,0xf0,0xcc,0x2c,0x0d,
-    0x71,0xd9,0x6f,0x5a,0x42,0x77,0xbf,0x84,0x45,0x63,0x86,0xa1,0x1e,0xb3,0xb0,0x77,
-    0xf6,0x03,0x26,0x39,0xbc,0x00,0xf1,0xfb,0x2b,0xfb,0x70,0x4d,0xf5,0x7b,0x93,0x49,
-    0xfe,0x87,0x9d,0x60,0xfa,0x16,0xc8,0x4f,0x10,0x5a,0x6c,0xaa,0xdb,0x2c,0x7c,0xf3,
-    0x20,0x4f,0xfc,0xc6,0x51,0xa1,0xf2,0x10,0xff,0x39,0x74,0x46,0x0b,0x58,0x11,0xda,
-    0x03,0xdb,0xc3,0x9e,0xdc,0x15,0x9b,0x45,0x5e,0x49,0x20,0xfe,0x5c,0x44,0x23,0xc6,
-    0xfb,0x69,0x77,0x50,0xca,0x88,0xcb,0xeb,0x80,0xbf,0x71,0x4c,0xff,0x46,0xc3,0xcc,
-    0xd1,0x17,0xbf,0xab,0xf5,0x88,0xcb,0xe9,0xa2,0x84,0x40,0xe7,0x25,0x7e,0x4b,0x44,
-    0x45,0x76,0xd6,0xea,0xd6,0x5e,0xb1,0xa0,0x1c,0x87,0x5d,0x61,0x75,0x1a,0x69,0x2f,
-    0xc3,0xef,0x1d,0xb5,0xe7,0x62,0xec,0xc0,0x9b,0x66,0x61,0x2e,0x93,0xf8,0xd5,0xb6,
-    0xdd,0x37,0x7b,0xa7,0x56,0x1e,0xe2,0x3f,0xee,0x68,0xaa,0x6b,0x8f,0x59,0xc1,0xa6,
-    0xee,0x9c,0x9c,0xc1,0xec,0x77,0xab,0x41,0xaa,0x2e,0x56,0x36,0xaf,0x54,0xcb,0xa4,
-    0xe9,0x52,0x76,0x7f,0x7c,0x8f,0x5a,0xb7,0xcf,0x0d,0x6b,0x99,0x34,0xe8,0xc4,0x5f,
-    0xc3,0x24,0xe7,0x16,0x30,0xdb,0x86,0x5c,0xbe,0xf9,0x37,0x2c,0x60,0xe2,0x0d,0x0b,
-    0xd4,0x29,0x4f,0x68,0x46,0xea,0x01,0x10,0x1c,0xa5,0x78,0x99,0xe5,0x4a,0xfc,0xa7,
-    0x32,0xd8,0x98,0x6f,0x60,0x73,0xae,0xfa,0xcf,0x39,0xca,0x3f,0x9f,0xb6,0xbb,0x48,
-    0xb5,0xfc,0xe8,0xc4,0x5f,0x82,0xcd,0xeb,0x41,0xc6,0x98,0xfa,0x32,0xa7,0xd8,0x00,
-    0xd1,0x92,0xb5,0xbc,0x79,0x32,0xd9,0x41,0x0e,0xdf,0x57,0x49,0x20,0xfe,0x3a,0xcc,
-    0x74,0xbd,0x39,0xca,0xc2,0xa0,0xe3,0x50,0x98,0x2f,0x77,0x65,0x7b,0xa6,0xe6,0x4e,
-    0xd8,0xec,0xdf,0xcf,0x52,0xc6,0x21,0xd8,0x17,0x71,0x98,0x16,0x22,0x9e,0x14,0x83,
-    0xa5,0x26,0x01,0xeb,0x89,0x3a,0xd8,0xca,0x3e,0x18,0x33,0x62,0x77,0xe5,0xf9,0x5d,
-    0xb0,0xc7,0xba,0x1f,0x7e,0x3f,0x24,0x01,0x7d,0x71,0x4f,0xf7,0x94,0xf0,0x76,0xdb,
-    0xa0,0xdc,0x0d,0xa6,0xf4,0xbe,0x80,0x5a,0xee,0xfe,0xb0,0xda,0xd5,0x14,0x21,0xbe,
-    0xed,0x50,0x87,0x8b,0xd9,0x9c,0x08,0x6a,0x0d,0x93,0x5c,0x9e,0x61,0x00,0x65,0x21,
-    0x7e,0x43,0xc7,0xd0,0xb8,0x10,0xdf,0x65,0x56,0x19,0x66,0x50,0xe7,0x56,0xa2,0x63,
-    0x96,0xe2,0x7b,0x63,0x2c,0xc5,0x3b,0x17,0x32,0xc9,0x3f,0x38,0x3a,0x0d,0xa6,0x8f,
-    0x61,0xeb,0xe6,0xf7,0xb9,0x3e,0x8f,0xd0,0x12,0x0b,0x56,0x02,0x53,0x11,0xf8,0xd6,
-    0xc6,0xd2,0xbf,0xf1,0xb5,0xae,0x10,0x5a,0x13,0xb0,0xa6,0x5b,0x88,0xfa,0x2c,0x35,
-    0x94,0x1d,0xaf,0xcd,0x6e,0x56,0x9e,0xff,0x05,0xd4,0xb8,0xe5,0xf8,0xdd,0x56,0xaf,
-    0xb8,0xcc,0xc5,0x1c,0x65,0xd1,0x1e,0x02,0x12,0x07,0x16,0x73,0xad,0x4a,0xf8,0x53,
-    0x61,0x25,0x7b,0x0d,0x1c,0xd6,0xeb,0xb7,0x94,0xa3,0xbc,0x46,0x8b,0x0d,0xbc,0x2a,
-    0x85,0xf8,0xd7,0xb1,0xf9,0x10,0x07,0x5d,0x15,0x68,0x6a,0xc4,0x0f,0x9a,0x08,0xf1,
-    0xb3,0x60,0x0e,0xd7,0x67,0x69,0x8e,0xcb,0x3d,0xc7,0xd0,0x6e,0x69,0x98,0xcc,0xf5,
-    0x59,0xde,0xf4,0x3a,0x1e,0xcd,0x51,0x1e,0xa0,0xac,0x75,0x1b,0xa1,0x94,0x53,0xc4,
-    0x7c,0x2d,0x90,0xd2,0x81,0xa5,0x1d,0x77,0xe1,0xfa,0x54,0x35,0x79,0x51,0x58,0xc7,
-    0x0f,0x38,0x3a,0x87,0xca,0x54,0xf8,0x52,0x47,0x33,0x63,0xd9,0xc4,0xcf,0xa3,0x93,
-    0x36,0x14,0xf1,0x87,0x17,0x24,0x7e,0x1d,0x66,0x07,0x52,0xca,0x1c,0xc8,0xf9,0x52,
-    0x2f,0x5e,0x6d,0x68,0x8f,0x63,0xd1,0x6f,0x79,0xea,0x35,0x4a,0xf9,0xd6,0xa2,0xe6,
-    0xeb,0xd5,0xda,0x26,0xfc,0x18,0x3b,0x70,0x94,0x89,0xa3,0xae,0x5a,0xc4,0x7f,0x46,
-    0x79,0x59,0x6b,0xae,0xcf,0x3e,0xd6,0x12,0x44,0x69,0x8d,0xd0,0xd9,0x49,0x9c,0x7c,
-    0xaa,0x48,0x47,0x4e,0x3e,0x46,0xa7,0x4c,0x1d,0x3f,0x54,0x2c,0x2c,0x17,0x70,0x94,
-    0x8b,0xf3,0x6c,0x48,0xc4,0x18,0x67,0x41,0x35,0xbb,0x1c,0xa1,0x0a,0x2e,0x59,0x0b,
-    0x5c,0x88,0xef,0xe2,0x59,0x34,0x49,0xfc,0x8d,0x58,0x78,0x4d,0x86,0x1a,0xf2,0x3c,
-    0x47,0x07,0xd6,0x4d,0x81,0xf0,0x59,0x60,0x69,0xdb,0x61,0x5c,0x9f,0x91,0xc2,0x44,
-    0xfc,0xf9,0x1c,0xe5,0x24,0x7a,0x04,0x6a,0x92,0xa9,0x8c,0xd7,0x35,0x9d,0x7f,0x2f,
-    0xf4,0x99,0x29,0x19,0xee,0xc3,0x70,0xf9,0x4f,0xb0,0xe0,0x11,0x26,0x39,0x43,0x29,
-    0xeb,0x64,0x84,0x66,0x3c,0x98,0xf0,0xcc,0x7d,0x1c,0x25,0xe6,0x7a,0xd6,0x52,0xbf,
-    0xe9,0xbc,0x79,0x72,0xe1,0x24,0xbe,0xbd,0xc3,0xd1,0x81,0x80,0xcf,0xa1,0x2d,0xa7,
-    0x73,0x74,0x10,0xc9,0x34,0xde,0x3c,0xfb,0x9d,0x95,0xf8,0xb5,0x1c,0xe5,0xbb,0x79,
-    0x16,0x51,0x81,0x2f,0x28,0x98,0x86,0xa9,0x70,0x4e,0xca,0xa8,0xba,0x2f,0xa3,0x34,
-    0x2c,0x43,0xe2,0x07,0x58,0xd8,0x2c,0x52,0xcc,0x85,0xeb,0x14,0xac,0x55,0x88,0x77,
-    0x6d,0x86,0xfa,0x55,0x4b,0xe2,0xaf,0xc5,0xc6,0x93,0xb6,0x20,0x61,0x57,0x48,0xb5,
-    0x4e,0xe8,0xf4,0x03,0x30,0x08,0xf4,0xb6,0x9d,0xc1,0x51,0x32,0x2e,0x1b,0xf1,0x1f,
-    0xc2,0xbe,0xde,0x76,0x58,0xfc,0xdd,0x66,0x28,0x63,0x01,0x47,0xa7,0xd4,0xc4,0x75,
-    0xfb,0x83,0xe1,0x9e,0x0f,0x39,0xca,0x78,0xb7,0x0d,0x84,0x5d,0x2b,0x08,0xbf,0x56,
-    0x0a,0x5a,0xe2,0x3d,0xad,0xb4,0xc1,0xde,0x56,0x79,0xc6,0x84,0x16,0xb8,0xb7,0x33,
-    0x54,0x62,0x53,0x16,0x3d,0xd5,0x09,0x7a,0x8c,0x45,0xa5,0x5b,0xc6,0x51,0x66,0x8f,
-    0x1e,0x30,0x8f,0x77,0x41,0x3b,0xee,0x88,0x7a,0xf7,0xe2,0xe8,0x34,0x4c,0x27,0xe2,
-    0x17,0xc5,0x1c,0xde,0x34,0x23,0x72,0x43,0x12,0xff,0x30,0x3c,0x97,0x56,0xc7,0x1b,
-    0x9b,0x00,0xf1,0xd7,0x70,0x94,0x4f,0x28,0x49,0x1d,0x3b,0xc2,0x40,0x8a,0x39,0xe8,
-    0x68,0x1b,0xf1,0xc7,0x6a,0x65,0xec,0xca,0x24,0xff,0x35,0x98,0x8a,0x7b,0x2b,0x96,
-    0x91,0x1a,0xc3,0x1a,0xed,0xa2,0x1c,0xaa,0x63,0x5e,0x53,0xe8,0x64,0x43,0x1f,0xa9,
-    0xa6,0xde,0x07,0x2c,0x02,0xfa,0xa4,0x14,0x73,0x66,0x17,0x38,0x18,0xab,0x4e,0xfc,
-    0xd9,0x30,0x23,0x65,0x8d,0x3f,0x29,0x8b,0xf8,0x87,0xc3,0xf3,0x9c,0x56,0xcf,0x5b,
-    0x9a,0x88,0xc4,0xbf,0x34,0x25,0x94,0xbb,0x9b,0xc1,0x57,0x32,0x37,0x85,0xf8,0x13,
-    0x78,0xf3,0x23,0x54,0xdf,0x33,0x78,0xe7,0xfb,0x28,0xd1,0xb3,0xab,0x0c,0xea,0x52,
-    0xc7,0x2a,0x84,0x60,0xdb,0xf0,0x3b,0x43,0x1f,0x5d,0xab,0x98,0x55,0x4d,0xe7,0x27,
-    0x3c,0xa0,0x10,0xbc,0x14,0x07,0x56,0x1e,0xcc,0x82,0xee,0xdc,0x8d,0x93,0xb3,0x9f,
-    0x15,0xd5,0xf1,0xc3,0x94,0xdd,0x4b,0x9d,0xa1,0xcb,0x5f,0xc8,0x51,0x5e,0x4b,0x15,
-    0xe7,0x42,0xff,0xbf,0x58,0x9b,0xe6,0x8b,0xea,0xf8,0x79,0xad,0x3a,0x2e,0xc4,0xef,
-    0x01,0xfd,0x35,0x8b,0xc4,0xd7,0x89,0xbf,0x1d,0xcc,0x98,0x63,0x60,0x76,0xbc,0x0b,
-    0x33,0x5e,0xac,0xe3,0x0f,0xe6,0xcd,0xd3,0xa2,0xaf,0x80,0xf5,0x64,0x2c,0xd4,0x20,
-    0x13,0xc6,0xe1,0xef,0x34,0xac,0xa7,0x74,0x32,0xef,0xc7,0x51,0x06,0xec,0x09,0x08,
-    0x07,0xd6,0x9f,0x1f,0x8f,0x10,0xed,0xd1,0x6c,0x4e,0xb9,0xf8,0x4b,0x65,0x46,0xaa,
-    0x35,0xd4,0xef,0x34,0x1b,0xe9,0xf3,0x12,0xff,0x6d,0x38,0x45,0x06,0x70,0x94,0xdf,
-    0x7e,0x20,0xf4,0xad,0x81,0x88,0x4f,0x31,0x11,0xff,0x2e,0x2d,0x1c,0xb9,0xd2,0x08,
-    0x12,0xbf,0x92,0x53,0x42,0x25,0x6d,0xad,0x6c,0x6c,0x89,0xbf,0x87,0x41,0xe2,0xa7,
-    0x11,0xff,0x7e,0x43,0xbd,0xe2,0xd3,0xe2,0x5b,0xc2,0x8e,0xdf,0x5a,0x79,0x87,0x49,
-    0xda,0x66,0xb5,0x3e,0xdd,0xa1,0x94,0xd7,0x06,0x03,0x66,0x3e,0x17,0x3b,0x67,0x60,
-    0xb0,0xb2,0x6e,0x5b,0x65,0x30,0x9e,0x1c,0x64,0x21,0x7e,0xc8,0x24,0x61,0x1e,0xe2,
-    0x3f,0x91,0x12,0x5a,0x60,0xaa,0xe4,0x22,0x58,0x7a,0xb2,0xda,0xdc,0xab,0x61,0xc7,
-    0x2f,0x7b,0xcb,0xe4,0x96,0x40,0xfc,0xa4,0x76,0x18,0x59,0xc2,0x8c,0x3f,0x5c,0x79,
-    0xdf,0x9f,0x4b,0xd2,0x22,0x62,0xe2,0xf7,0x83,0x03,0x4e,0xb7,0xf7,0xef,0x5f,0xb6,
-    0xc4,0x7f,0x32,0xa1,0x91,0x76,0x63,0x92,0x7f,0x59,0x2a,0xfa,0x10,0x6f,0x7a,0xd2,
-    0x49,0x63,0x11,0xbf,0xa9,0x7a,0x6e,0x1b,0x93,0xf8,0x49,0xf5,0xba,0xc5,0x10,0x76,
-    0xf2,0x25,0xd4,0x89,0x15,0x90,0xb6,0x49,0x58,0xad,0x18,0x0b,0x4e,0xb5,0xac,0xb1,
-    0xd6,0x80,0xbc,0xfa,0xb3,0x2b,0xe1,0xe1,0x5d,0x9f,0x40,0xfc,0x7d,0x0d,0x41,0x82,
-    0x0b,0x99,0xe4,0xa8,0xb2,0x89,0xff,0x54,0xca,0x82,0xe5,0x67,0x96,0xa9,0x70,0x15,
-    0x3c,0x7f,0x9e,0xf8,0xcd,0x8b,0xf8,0x17,0x1a,0xc8,0xba,0x10,0xea,0x6d,0x37,0x18,
-    0x2b,0x7a,0x59,0xb0,0x1f,0x54,0x91,0x78,0x21,0x3c,0xd1,0x62,0x3a,0x3d,0x0b,0xf1,
-    0x38,0xfb,0x2a,0xcf,0xf6,0x01,0x31,0x3b,0x73,0x7d,0x3a,0x15,0x9d,0xf8,0x15,0x04,
-    0x43,0x7e,0x6a,0x88,0x8e,0xbd,0xb6,0xec,0xc5,0xed,0xd3,0x09,0x0d,0x17,0x3b,0x89,
-    0xde,0xb2,0x48,0xfd,0x29,0x5a,0x98,0x70,0x5a,0xf2,0x9f,0x32,0x83,0xd4,0x8a,0x26,
-    0xc4,0x32,0xdd,0x9b,0xc5,0x81,0x15,0x56,0x61,0x71,0x9b,0x87,0xf8,0x13,0x0c,0x06,
-    0x06,0x5b,0x9a,0x97,0x00,0x6d,0xbc,0xd8,0xe0,0x79,0x3f,0x30,0x87,0x75,0xe6,0x65,
-    0xc3,0xcc,0x71,0xbb,0xc3,0x73,0x63,0x13,0x88,0x1f,0xc0,0x87,0xa4,0xff,0xfe,0x1e,
-    0x93,0xb4,0x4d,0x31,0x67,0xee,0x0e,0x7f,0x44,0x66,0x89,0x6f,0x4a,0x0b,0x1d,0x70,
-    0x74,0x30,0xb3,0x29,0x2a,0xf3,0x0b,0xae,0x3f,0xf4,0xd8,0x94,0x56,0xda,0x96,0x71,
-    0x39,0x8d,0xf8,0x49,0xd9,0x8c,0x93,0xac,0x47,0xb6,0xf7,0xbb,0x3e,0x9b,0x95,0xf8,
-    0xb6,0xf6,0x4a,0x23,0xbe,0xa9,0x7e,0xd5,0x24,0xbe,0x3e,0x28,0x5f,0xe3,0xcd,0x4f,
-    0x6f,0x1c,0x05,0x47,0x58,0x16,0xe2,0xbf,0xca,0x9b,0x1f,0xe5,0x34,0xce,0xe1,0xb9,
-    0xd1,0x06,0x2e,0x5d,0xaf,0xb4,0xc3,0x4d,0x16,0x41,0x3b,0x8e,0x49,0x76,0x4f,0x20,
-    0x7e,0xa7,0x2c,0xc4,0x7f,0x32,0x21,0x3c,0x34,0x54,0x6c,0xab,0xb6,0x38,0x9d,0x37,
-    0x14,0x97,0x7a,0x52,0x78,0x69,0x1e,0xe2,0xbb,0x9e,0x9a,0x11,0x72,0x7a,0xfa,0x3f,
-    0x57,0xab,0xce,0x80,0x8c,0xaa,0x4e,0x98,0x43,0xe2,0x87,0x16,0x52,0x96,0xa9,0xea,
-    0x24,0xcd,0xb8,0x67,0x5b,0xfa,0x72,0x22,0x47,0x67,0x7f,0x1d,0x00,0x87,0x57,0x1f,
-    0x60,0x7f,0x05,0x47,0x2a,0xa1,0xd3,0x93,0x2c,0x61,0x0f,0x57,0x60,0x06,0xd1,0xcb,
-    0xe8,0x0d,0x3c,0x6a,0x91,0xf8,0x31,0xdf,0xbe,0x65,0xf1,0xee,0xc6,0x89,0x76,0xaf,
-    0x64,0x92,0x1f,0x30,0xc9,0xe9,0x10,0xbc,0xe7,0xa1,0x5e,0x17,0x1a,0x9e,0x73,0x52,
-    0x75,0x92,0xa4,0xd8,0xf1,0x96,0xc8,0xcc,0x24,0x49,0x56,0xb1,0x94,0xe5,0x42,0xfc,
-    0x4a,0xca,0xec,0x91,0x45,0xca,0xbb,0xde,0x57,0x54,0xe2,0xab,0xdf,0x38,0xbc,0x91,
-    0x24,0x7e,0x1a,0xe2,0xbe,0xbe,0x9f,0xd3,0x0f,0xb1,0xfe,0x0a,0xf8,0x12,0x7d,0xbf,
-    0x41,0x31,0x67,0xc6,0x8b,0xdb,0xa4,0x32,0xd6,0x6a,0x65,0xe8,0xa1,0x24,0x36,0x89,
-    0x1f,0x70,0x94,0x48,0xb7,0x0c,0x6b,0xd1,0xdc,0xc0,0x12,0x08,0xf5,0x4c,0xca,0xae,
-    0x1f,0xb5,0x32,0xd3,0x2d,0x85,0x7f,0xc8,0xf5,0x87,0x45,0xb8,0x04,0xa9,0x99,0xb6,
-    0x1e,0x2e,0x51,0xf4,0xcc,0xb4,0x63,0x8a,0xca,0xd8,0x92,0x67,0x73,0x8a,0x0d,0x30,
-    0xec,0x31,0xfe,0x42,0xd9,0x7a,0x18,0xa4,0x94,0x97,0xb4,0xb8,0x1d,0x94,0xe0,0x53,
-    0x08,0x98,0xe4,0x9b,0x16,0xcf,0xed,0x1e,0xf8,0xfd,0x0c,0x03,0xf1,0x27,0x5a,0x9c,
-    0x73,0x69,0x33,0x5b,0x6b,0x8e,0x72,0x15,0xe5,0x21,0xd3,0x30,0xe5,0x3b,0x1e,0x2b,
-    0x89,0xa0,0xd7,0x1b,0x76,0x74,0x0d,0x36,0x58,0x78,0x32,0x87,0x3e,0x07,0x09,0xaa,
-    0x4a,0x92,0xc4,0x57,0x3b,0xf4,0xd0,0x84,0x17,0x4c,0x72,0x28,0x27,0x6e,0xf4,0x31,
-    0x96,0x32,0xfa,0x3a,0xd4,0x23,0x2b,0x2a,0x19,0x66,0x84,0xa4,0x14,0x24,0xd7,0x65,
-    0x94,0xf8,0xf7,0x24,0xb8,0xe5,0x6d,0xb3,0x4d,0x4f,0x43,0xa8,0xf0,0x06,0x5c,0x0f,
-    0xe0,0x89,0xb6,0x85,0x95,0x57,0x32,0xb4,0x89,0xea,0x7c,0xbc,0x0c,0x11,0x8e,0x59,
-    0x8e,0x32,0xbd,0x47,0xf9,0xce,0x4e,0xf0,0xcc,0x2e,0x2e,0x48,0xd0,0xa1,0xbc,0x69,
-    0x4e,0xa1,0xb8,0x7e,0x27,0x62,0x70,0xe5,0x2d,0x7f,0x7d,0x80,0x48,0xbf,0x5a,0x04,
-    0x29,0xcd,0xc7,0xbf,0xef,0xcb,0x40,0xfc,0x6d,0xb1,0xe2,0xae,0x85,0x37,0xad,0x06,
-    0xde,0xdd,0xe5,0x08,0x4b,0x35,0x6d,0x97,0x33,0x91,0xe2,0x3a,0x48,0xf8,0x05,0x70,
-    0x4e,0x2c,0x85,0xee,0xb6,0x4f,0x8a,0xaa,0x53,0x06,0xf1,0x6d,0xf5,0x0a,0x95,0xf8,
-    0x9f,0x8f,0xa1,0x2b,0xd6,0xc0,0xd4,0xf7,0x89,0x12,0x44,0xe5,0x72,0x94,0x50,0x00,
-    0x09,0x16,0x7f,0xe3,0xa7,0x68,0xef,0x73,0x2d,0x3a,0x7e,0xa8,0xf8,0x4d,0x5e,0x44,
-    0xfb,0xce,0xc1,0xdf,0x7f,0x72,0xfd,0x89,0x89,0x27,0xa2,0x2e,0x71,0x99,0xb5,0x5c,
-    0x9f,0x61,0x39,0xab,0x0a,0x18,0xf7,0x55,0x3b,0x0c,0xf6,0x89,0x10,0x82,0x1f,0xa3,
-    0x6f,0xe7,0xa1,0x6f,0x62,0xd4,0xe0,0x5a,0xad,0x12,0x5e,0x10,0xbf,0x77,0x6f,0x8e,
-    0xb2,0xca,0xbd,0x83,0x7b,0xf5,0x67,0x6d,0x50,0xcb,0xbc,0xc2,0xb0,0x69,0x28,0xc0,
-    0xfa,0xf1,0x60,0x94,0xff,0x2a,0x78,0x32,0xcf,0xf1,0x1d,0xb5,0x4c,0xf2,0x5a,0xea,
-    0x66,0x5d,0x0f,0x8f,0x2d,0x11,0xbe,0x11,0x3c,0x3c,0xf1,0x3d,0x3c,0x3c,0xf1,0x3d,
-    0x3c,0x3c,0xf1,0x3d,0x3c,0x3c,0xf1,0x3d,0x3c,0x3c,0xf1,0x3d,0x3c,0x3c,0xf1,0x3d,
-    0x3c,0x3c,0xf1,0x3d,0x3c,0x3c,0xf1,0x3d,0x3c,0x3c,0xf1,0x3d,0x3c,0x1a,0x1b,0xff,
-    0x1f,0x00,0x4b,0xa8,0x7e,0x3f,0xd2,0x12,0x11,0x79,0x00,0x00,0x00,0x00,0x49,0x45,
-    0x4e,0x44,0xae,0x42,0x60,0x82,
-};
-
-int _picture_png_length_get(void)
-{
-    return sizeof(_picture_png);
-}

+ 0 - 13
components/gui/include/SConscript

@@ -1,13 +0,0 @@
-# RT-Thread building script for gui
-
-from building import *
-
-cwd = GetCurrentDir()
-src = Glob('*.c') + Glob('*.cpp')
-CPPPATH = [ cwd,
-			cwd + '/rtgui',
-			cwd + '/rtgui/widgets']
-
-group = DefineGroup('GuiEngine', src, depend = [''], CPPPATH = CPPPATH)
-
-Return('group')

+ 0 - 224
components/gui/include/rtgui/blit.h

@@ -1,224 +0,0 @@
-/*
- * File      : blit.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2013-10-04     Bernard      porting SDL software render to RT-Thread GUI
- */
-
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef __RTGUI_BLIT_H__
-#define __RTGUI_BLIT_H__
-
-#include <rtgui/rtgui.h>
-#include <rtgui/dc.h>
-
-/* Assemble R-G-B values into a specified pixel format and store them */
-#define RGB565_FROM_RGB(Pixel, r, g, b)                                 \
-{                                                                       \
-    Pixel = ((r>>3)<<11)|((g>>2)<<5)|(b>>3);                            \
-}
-#define BGR565_FROM_RGB(Pixel, r, g, b)                                 \
-{                                                                       \
-    Pixel = ((b>>3)<<11)|((g>>2)<<5)|(r>>3);                            \
-}
-#define RGB555_FROM_RGB(Pixel, r, g, b)                                 \
-{                                                                       \
-    Pixel = ((r>>3)<<10)|((g>>3)<<5)|(b>>3);                            \
-}
-#define RGB888_FROM_RGB(Pixel, r, g, b)                                 \
-{                                                                       \
-    Pixel = (r<<16)|(g<<8)|b;                                           \
-}
-#define ARGB8888_FROM_RGBA(Pixel, r, g, b, a)                           \
-{                                                                       \
-    Pixel = (a<<24)|(r<<16)|(g<<8)|b;                                   \
-}
-#define RGBA8888_FROM_RGBA(Pixel, r, g, b, a)                           \
-{                                                                       \
-    Pixel = (r<<24)|(g<<16)|(b<<8)|a;                                   \
-}
-#define ABGR8888_FROM_RGBA(Pixel, r, g, b, a)                           \
-{                                                                       \
-    Pixel = (a<<24)|(b<<16)|(g<<8)|r;                                   \
-}
-#define BGRA8888_FROM_RGBA(Pixel, r, g, b, a)                           \
-{                                                                       \
-    Pixel = (b<<24)|(g<<16)|(r<<8)|a;                                   \
-}
-#define ARGB2101010_FROM_RGBA(Pixel, r, g, b, a)                        \
-{                                                                       \
-    r = r ? ((r << 2) | 0x3) : 0;                                       \
-    g = g ? ((g << 2) | 0x3) : 0;                                       \
-    b = b ? ((b << 2) | 0x3) : 0;                                       \
-    a = (a * 3) / 255;                                                  \
-    Pixel = (a<<30)|(r<<20)|(g<<10)|b;                                  \
-}
-
-/* Load pixel of the specified format from a buffer and get its R-G-B values */
-#define RGB_FROM_RGB565(Pixel, r, g, b)                                 \
-    {                                                                   \
-    r = rtgui_blit_expand_byte[3][((Pixel&0xF800)>>11)];                \
-    g = rtgui_blit_expand_byte[2][((Pixel&0x07E0)>>5)];                 \
-    b = rtgui_blit_expand_byte[3][(Pixel&0x001F)];                      \
-}
-#define RGB_FROM_BGR565(Pixel, r, g, b)                                 \
-    {                                                                   \
-    b = rtgui_blit_expand_byte[3][((Pixel&0xF800)>>11)];                \
-    g = rtgui_blit_expand_byte[2][((Pixel&0x07E0)>>5)];                 \
-    r = rtgui_blit_expand_byte[3][(Pixel&0x001F)];                      \
-}
-#define RGB_FROM_RGB555(Pixel, r, g, b)                                 \
-{                                                                       \
-    r = rtgui_blit_expand_byte[3][((Pixel&0x7C00)>>10)];                \
-    g = rtgui_blit_expand_byte[3][((Pixel&0x03E0)>>5)];                 \
-    b = rtgui_blit_expand_byte[3][(Pixel&0x001F)];                      \
-}
-#define RGB_FROM_RGB888(Pixel, r, g, b)                                 \
-{                                                                       \
-    r = ((Pixel&0xFF0000)>>16);                                         \
-    g = ((Pixel&0xFF00)>>8);                                            \
-    b = (Pixel&0xFF);                                                   \
-}
-
-#define RGBA_FROM_RGBA8888(Pixel, r, g, b, a)                           \
-{                                                                       \
-    r = (Pixel>>24);                                                    \
-    g = ((Pixel>>16)&0xFF);                                             \
-    b = ((Pixel>>8)&0xFF);                                              \
-    a = (Pixel&0xFF);                                                   \
-}
-#define RGBA_FROM_ARGB8888(Pixel, r, g, b, a)                           \
-{                                                                       \
-    r = ((Pixel>>16)&0xFF);                                             \
-    g = ((Pixel>>8)&0xFF);                                              \
-    b = (Pixel&0xFF);                                                   \
-    a = (Pixel>>24);                                                    \
-}
-#define RGBA_FROM_ABGR8888(Pixel, r, g, b, a)                           \
-{                                                                       \
-    r = (Pixel&0xFF);                                                   \
-    g = ((Pixel>>8)&0xFF);                                              \
-    b = ((Pixel>>16)&0xFF);                                             \
-    a = (Pixel>>24);                                                    \
-}
-#define RGBA_FROM_BGRA8888(Pixel, r, g, b, a)                           \
-{                                                                       \
-    r = ((Pixel>>8)&0xFF);                                              \
-    g = ((Pixel>>16)&0xFF);                                             \
-    b = (Pixel>>24);                                                    \
-    a = (Pixel&0xFF);                                                   \
-}
-#define RGBA_FROM_ARGB2101010(Pixel, r, g, b, a)                        \
-{                                                                       \
-    r = ((Pixel>>22)&0xFF);                                             \
-    g = ((Pixel>>12)&0xFF);                                             \
-    b = ((Pixel>>2)&0xFF);                                              \
-    a = rtgui_blit_expand_byte[6][(Pixel>>30)];                         \
-}
-
-/* 4-times unrolled loop */
-#define DUFFS_LOOP4(pixel_copy_increment, width)                        \
-{ int n = (width+3)/4;                                                  \
-    switch (width & 3) {                                                \
-    case 0: do {    pixel_copy_increment;                               \
-    case 3:     pixel_copy_increment;                                   \
-    case 2:     pixel_copy_increment;                                   \
-    case 1:     pixel_copy_increment;                                   \
-        } while (--n > 0);                                              \
-    }                                                                   \
-}
-
-/* 8-times unrolled loop */
-#define DUFFS_LOOP8(pixel_copy_increment, width)                        \
-{ int n = (width+7)/8;                                                  \
-    switch (width & 7) {                                                \
-    case 0: do {    pixel_copy_increment;                               \
-    case 7:     pixel_copy_increment;                                   \
-    case 6:     pixel_copy_increment;                                   \
-    case 5:     pixel_copy_increment;                                   \
-    case 4:     pixel_copy_increment;                                   \
-    case 3:     pixel_copy_increment;                                   \
-    case 2:     pixel_copy_increment;                                   \
-    case 1:     pixel_copy_increment;                                   \
-        } while ( --n > 0 );                                            \
-    }                                                                   \
-}
-
-/* Use the 8-times version of the loop by default */
-#define DUFFS_LOOP(pixel_copy_increment, width)                         \
-    DUFFS_LOOP8(pixel_copy_increment, width)
-
-struct rtgui_blit_info
-{
-    rt_uint8_t *src;
-    int src_w, src_h;
-    int src_pitch;
-    int src_skip;
-
-    rt_uint8_t *dst;
-    int dst_w, dst_h;
-    int dst_pitch;
-    int dst_skip;
-
-    rt_uint8_t src_fmt;
-    rt_uint8_t dst_fmt;
-    rt_uint8_t r, g, b, a;
-};
-
-struct rtgui_image_info
-{
-    rt_uint8_t *pixels;
-    int src_pitch;
-
-    rt_uint8_t src_fmt;
-    rt_uint8_t a;
-};
-
-extern const rt_uint8_t* rtgui_blit_expand_byte[9];
-
-typedef void (*rtgui_blit_line_func)(rt_uint8_t *dst, rt_uint8_t *src, int line);
-rtgui_blit_line_func rtgui_blit_line_get(int dst_bpp, int src_bpp);
-rtgui_blit_line_func rtgui_blit_line_get_inv(int dst_bpp, int src_bpp);
-
-void rtgui_blit(struct rtgui_blit_info * info);
-void rtgui_image_info_blit(struct rtgui_image_info* image, struct rtgui_dc* dc, struct rtgui_rect *dc_rect);
-
-#endif
-

+ 0 - 192
components/gui/include/rtgui/color.h

@@ -1,192 +0,0 @@
-/*
- * File      : color.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-16     Bernard      first version
- * 2012-01-24     onelife      add mono color support
- */
-#ifndef __RTGUI_COLOR_H__
-#define __RTGUI_COLOR_H__
-
-#include <rtgui/rtgui.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * The color used in the GUI:
- *
- *         bit        bit
- * RGB565  15 R,G,B   0
- * BGR565  15 B,G,R   0
- * RGB888  23 R,G,B   0
- * ARGB888 31 A,R,G,B 0
- * RGBA888 31 R,G,B,A 0
- * ABGR888 31 A,B,G,R 0
- *
- * The rtgui_color is defined as ARGB888.
- *        bit31 A,R,G,B bit0
- */
-#define RTGUI_ARGB(a, r, g, b)  \
-        ((rtgui_color_t)(((rt_uint8_t)(b)|\
-        (((unsigned long)(rt_uint8_t)(g))<<8))|\
-        (((unsigned long)(rt_uint8_t)(r))<<16)|\
-        (((unsigned long)(rt_uint8_t)(a))<<24)))
-#define RTGUI_RGB(r, g, b)  RTGUI_ARGB(255, (r), (g), (b))
-
-#define RTGUI_RGB_B(c)  ((c) & 0xff)
-#define RTGUI_RGB_G(c)  (((c) >> 8)  & 0xff)
-#define RTGUI_RGB_R(c)  (((c) >> 16) & 0xff)
-#define RTGUI_RGB_A(c)  (((c) >> 24) & 0xff)
-
-extern const rtgui_color_t default_foreground;
-extern const rtgui_color_t default_background;
-
-/* it's better use these color definitions */
-#define RED                RTGUI_RGB(0xff, 0x00, 0x00)
-#define GREEN              RTGUI_RGB(0x00, 0xff, 0x00)
-#define BLUE               RTGUI_RGB(0x00, 0x00, 0xff)
-#define BLACK              RTGUI_RGB(0x00, 0x00, 0x00)
-#define WHITE              RTGUI_RGB(0xff, 0xff, 0xff)
-#define HIGH_LIGHT         RTGUI_RGB(0xfc, 0xfc, 0xfc)
-#define DARK_GREY          RTGUI_RGB(0x7f, 0x7f, 0x7f)
-#define LIGHT_GREY         RTGUI_RGB(0xc0, 0xc0, 0xc0)
-
-#ifdef  TRANSPARENT
-#undef  TRANSPARENT
-#endif
-#define TRANSPARENT        RTGUI_ARGB(0, 0, 0, 0)
-
-extern const rtgui_color_t red;
-extern const rtgui_color_t green;
-extern const rtgui_color_t blue;
-extern const rtgui_color_t black;
-extern const rtgui_color_t white;
-extern const rtgui_color_t high_light;
-extern const rtgui_color_t dark_grey;
-extern const rtgui_color_t light_grey;
-
-/*
- * RTGUI default color format: ARGB
- * AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB
- * 31                                    0
- */
-
-/* convert rtgui color to mono */
-rt_inline rt_uint8_t rtgui_color_to_mono(rtgui_color_t c)
-{
-    rt_uint8_t pixel;
-
-    pixel = (RTGUI_RGB_R(c) | RTGUI_RGB_G(c) | RTGUI_RGB_B(c)) ? 0x01 : 0x00;
-    return pixel;
-}
-
-rt_inline rtgui_color_t rtgui_color_from_mono(rt_uint8_t pixel)
-{
-    rtgui_color_t color;
-
-    if (pixel)
-    {
-        color = white;
-    }
-    else
-    {
-        color = black;
-    }
-    return color;
-}
-
-/* convert rtgui color to RRRRRGGGGGGBBBBB */
-rt_inline rt_uint16_t rtgui_color_to_565(rtgui_color_t c)
-{
-    rt_uint16_t pixel;
-
-    pixel = (rt_uint16_t)(((RTGUI_RGB_R(c) >> 3) << 11) | ((RTGUI_RGB_G(c) >> 2) << 5) | (RTGUI_RGB_B(c) >> 3));
-
-    return pixel;
-}
-
-rt_inline rtgui_color_t rtgui_color_from_565(rt_uint16_t pixel)
-{
-    rt_uint16_t r, g, b;
-    rtgui_color_t color;
-
-    r = (pixel >> 11) & 0x1f;
-    g = (pixel >> 5)  & 0x3f;
-    b = pixel & 0x1f;
-
-    color = b * 255 / 31 + ((g * 255 / 63) << 8) + ((r * 255 / 31) << 16);
-
-    return color;
-}
-
-/* convert rtgui color to BBBBBGGGGGGRRRRR */
-rt_inline rt_uint16_t rtgui_color_to_565p(rtgui_color_t c)
-{
-    rt_uint16_t pixel;
-
-    pixel = (rt_uint16_t)(((RTGUI_RGB_B(c) >> 3) << 11) | ((RTGUI_RGB_G(c) >> 2) << 5) | (RTGUI_RGB_R(c) >> 3));
-    return pixel;
-}
-
-rt_inline rtgui_color_t rtgui_color_from_565p(rt_uint16_t pixel)
-{
-    rt_uint8_t r, g, b;
-    rtgui_color_t color;
-
-    r = pixel & 0x1f;
-    g = (pixel >> 5) & 0x3f;
-    b = (pixel >> 11) & 0x1f;
-
-    color = b * 255 / 31 + ((g * 255 / 63) << 8) + ((r * 255 / 31) << 16);
-
-    return color;
-}
-
-/* convert rtgui color to RGB */
-rt_inline rt_uint32_t rtgui_color_to_888(rtgui_color_t c)
-{
-    rt_uint32_t pixel;
-
-    pixel = RTGUI_RGB_R(c) << 16 | RTGUI_RGB_G(c) << 8 | RTGUI_RGB_B(c);
-    return pixel;
-}
-
-rt_inline rtgui_color_t rtgui_color_from_888(rt_uint32_t pixel)
-{
-    rtgui_color_t color;
-
-    color = RTGUI_RGB(((pixel >> 16) & 0xff), ((pixel >> 8) & 0xff), pixel & 0xff);
-
-    return color;
-}
-
-/* get the bits of specified pixle format */
-rt_uint8_t rtgui_color_get_bits(rt_uint8_t pixel_format) RTGUI_PURE;
-/* get the bytes of specified pixle format */
-rt_uint8_t rtgui_color_get_bpp(rt_uint8_t pixel_format) RTGUI_PURE;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-

+ 0 - 299
components/gui/include/rtgui/dc.h

@@ -1,299 +0,0 @@
-/*
- * File      : dc.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-16     Bernard      first version
- */
-#ifndef __RTGUI_DC_H__
-#define __RTGUI_DC_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtgui/rtgui.h>
-#include <rtgui/font.h>
-#include <rtgui/driver.h>
-#include <rtgui/widgets/widget.h>
-
-#define RTGUI_DC(dc)        ((struct rtgui_dc*)(dc))
-
-#ifndef M_PI
-#define M_PI    3.14159265358979323846
-#endif
-
-enum rtgui_dc_type
-{
-    RTGUI_DC_HW,
-    RTGUI_DC_CLIENT,
-    RTGUI_DC_BUFFER,
-};
-
-struct rtgui_dc_engine
-{
-    /* interface */
-    void (*draw_point)(struct rtgui_dc *dc, int x, int y);
-    void (*draw_color_point)(struct rtgui_dc *dc, int x, int y, rtgui_color_t color);
-    void (*draw_vline)(struct rtgui_dc *dc, int x, int y1, int y2);
-    void (*draw_hline)(struct rtgui_dc *dc, int x1, int x2, int y);
-    void (*fill_rect)(struct rtgui_dc *dc, rtgui_rect_t *rect);
-    void (*blit_line)(struct rtgui_dc *dc, int x1, int x2, int y, rt_uint8_t *line_data);
-    void (*blit)(struct rtgui_dc *dc, struct rtgui_point *dc_point, struct rtgui_dc *dest, rtgui_rect_t *rect);
-
-    rt_bool_t (*fini)(struct rtgui_dc *dc);
-};
-
-/*
- * The abstract device context
- *
- * Normally, a DC is a drawable canvas, user can draw point/line/cycle etc
- * on the DC.
- *
- * There are several kinds of DC:
- * - Hardware DC;
- * - Client DC;
- * - Buffer DC;
- */
-struct rtgui_dc
-{
-    /* type of device context */
-    rt_uint32_t type;
-
-    /* dc engine */
-    const struct rtgui_dc_engine *engine;
-};
-
-/*
- * The hardware device context
- *
- * The hardware DC is a context based on hardware device, for examle the
- * LCD device. The operations on the hardware DC are reflected to the real
- * hardware.
- *
- */
-struct rtgui_dc_hw
-{
-    struct rtgui_dc parent;
-    rtgui_widget_t *owner;
-    const struct rtgui_graphic_driver *hw_driver;
-};
-
-/**
- * The buffer dc is a device context with memory buffer.
- *
- * All the operations on this device context is reflected to the memory buffer.
- */
-struct rtgui_dc_buffer
-{
-    struct rtgui_dc parent;
-
-    /* graphic context */
-    rtgui_gc_t gc;
-
-    /* pixel format */
-    rt_uint8_t pixel_format;
-    rt_uint8_t blend_mode;		/* RTGUI_BLENDMODE: None/Blend/Add/Mod */
-
-    /* width and height */
-    rt_uint16_t width, height;
-    /* pitch */
-    rt_uint16_t pitch;
-
-#ifdef RTGUI_IMAGE_CONTAINER
-    /* image dc */
-    struct rtgui_image_item *image_item;
-#endif
-
-	/* pixel alpha */
-    rt_uint8_t pixel_alpha;
-    /* pixel data */
-    rt_uint8_t *pixel;
-};
-
-#define RTGUI_DC_FC(dc)         (rtgui_dc_get_gc(RTGUI_DC(dc))->foreground)
-#define RTGUI_DC_BC(dc)         (rtgui_dc_get_gc(RTGUI_DC(dc))->background)
-#define RTGUI_DC_FONT(dc)       (rtgui_dc_get_gc(RTGUI_DC(dc))->font)
-#define RTGUI_DC_TEXTALIGN(dc)  (rtgui_dc_get_gc(RTGUI_DC(dc))->textalign)
-
-/* create a buffer dc */
-struct rtgui_dc *rtgui_dc_buffer_create(int width, int height);
-struct rtgui_dc *rtgui_dc_buffer_create_pixformat(rt_uint8_t pixel_format, int w, int h);
-#ifdef RTGUI_IMAGE_CONTAINER
-struct rtgui_dc *rtgui_img_dc_create_pixformat(rt_uint8_t pixel_format, rt_uint8_t *pixel, 
-    struct rtgui_image_item *image_item);
-#endif
-struct rtgui_dc *rtgui_dc_buffer_create_from_dc(struct rtgui_dc* dc);
-void rtgui_dc_buffer_set_alpha(struct rtgui_dc* dc, rt_uint8_t pixel_alpha);
-
-/* create a widget dc */
-struct rtgui_dc *rtgui_dc_widget_create(struct rtgui_widget * owner);
-
-/* begin and end a drawing */
-struct rtgui_dc *rtgui_dc_begin_drawing(rtgui_widget_t *owner);
-void rtgui_dc_end_drawing(struct rtgui_dc *dc, rt_bool_t update);
-
-/* destroy a dc */
-void rtgui_dc_destory(struct rtgui_dc *dc);
-
-/* create a hardware dc */
-struct rtgui_dc *rtgui_dc_hw_create(rtgui_widget_t *owner);
-
-/* create a client dc */
-struct rtgui_dc *rtgui_dc_client_create(rtgui_widget_t *owner);
-void rtgui_dc_client_init(rtgui_widget_t *owner);
-
-rt_uint8_t *rtgui_dc_buffer_get_pixel(struct rtgui_dc *dc);
-
-void rtgui_dc_draw_line(struct rtgui_dc *dc, int x1, int y1, int x2, int y2);
-void rtgui_dc_draw_rect(struct rtgui_dc *dc, struct rtgui_rect *rect);
-void rtgui_dc_fill_rect_forecolor(struct rtgui_dc *dc, struct rtgui_rect *rect);
-void rtgui_dc_draw_round_rect(struct rtgui_dc *dc, struct rtgui_rect *rect, int r);
-void rtgui_dc_fill_round_rect(struct rtgui_dc *dc, struct rtgui_rect *rect, int r);
-/** Fill a vertical gradient rect from @c1 to @c2 */
-void rtgui_dc_fill_gradient_rectv(struct rtgui_dc *dc, rtgui_rect_t *rect,
-                                  rtgui_color_t c1, rtgui_color_t c2);
-void rtgui_dc_draw_annulus(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r1, rt_int16_t r2, rt_int16_t start, rt_int16_t end);
-void rtgui_dc_draw_pie(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r, rt_int16_t start, rt_int16_t end);
-void rtgui_dc_fill_pie(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r, rt_int16_t start, rt_int16_t end);
-
-void rtgui_dc_draw_text(struct rtgui_dc *dc, const char *text, struct rtgui_rect *rect);
-void rtgui_dc_draw_text_stroke(struct rtgui_dc *dc, const char *text, struct rtgui_rect *rect,
-                               rtgui_color_t color_stroke, rtgui_color_t color_core);
-
-void rtgui_dc_draw_mono_bmp(struct rtgui_dc *dc, int x, int y, int w, int h, const rt_uint8_t *data);
-void rtgui_dc_draw_byte(struct rtgui_dc *dc, int x, int y, int h, const rt_uint8_t *data);
-void rtgui_dc_draw_word(struct rtgui_dc *dc, int x, int y, int h, const rt_uint8_t *data);
-
-void rtgui_dc_draw_border(struct rtgui_dc *dc, rtgui_rect_t *rect, int flag);
-void rtgui_dc_draw_horizontal_line(struct rtgui_dc *dc, int x1, int x2, int y);
-void rtgui_dc_draw_vertical_line(struct rtgui_dc *dc, int x, int y1, int y2);
-void rtgui_dc_draw_focus_rect(struct rtgui_dc *dc, rtgui_rect_t *rect);
-
-void rtgui_dc_draw_polygon(struct rtgui_dc *dc, const int *vx, const int *vy, int count);
-void rtgui_dc_fill_polygon(struct rtgui_dc *dc, const int *vx, const int *vy, int count);
-
-void rtgui_dc_draw_circle(struct rtgui_dc *dc, int x, int y, int r);
-void rtgui_dc_fill_circle(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r);
-void rtgui_dc_draw_arc(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r, rt_int16_t start, rt_int16_t end);
-
-void rtgui_dc_draw_ellipse(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t rx, rt_int16_t ry);
-void rtgui_dc_fill_ellipse(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t rx, rt_int16_t ry);
-
-/* alpha blending functions */
-void rtgui_dc_draw_aa_line(struct rtgui_dc * dst,int x1,int y1,int x2,int y2);
-void rtgui_dc_draw_aa_lines(struct rtgui_dc * dst,const struct rtgui_point * points,int count);
-
-void rtgui_dc_blend_point(struct rtgui_dc * dst,int x,int y,enum RTGUI_BLENDMODE blendMode,rt_uint8_t r,rt_uint8_t g,rt_uint8_t b,rt_uint8_t a);
-void rtgui_dc_blend_points(struct rtgui_dc * dst,const rtgui_point_t * points,int count,enum RTGUI_BLENDMODE blendMode,rt_uint8_t r,rt_uint8_t g,rt_uint8_t b,rt_uint8_t a);
-
-void rtgui_dc_blend_line(struct rtgui_dc * dst,int x1,int y1,int x2,int y2,enum RTGUI_BLENDMODE blendMode,rtgui_color_t color);
-void rtgui_dc_blend_lines(struct rtgui_dc * dst,const rtgui_point_t * points,int count,enum RTGUI_BLENDMODE blendMode,rtgui_color_t color);
-
-void rtgui_dc_blend_fill_rect(struct rtgui_dc * dst,const rtgui_rect_t * rect,enum RTGUI_BLENDMODE blendMode,rtgui_color_t color);
-void rtgui_dc_blend_fill_rects(struct rtgui_dc * dst,const rtgui_rect_t * rects,int count,enum RTGUI_BLENDMODE blendMode,rtgui_color_t color);
-
-void rtgui_dc_draw_aa_circle(struct rtgui_dc *dc, rt_int16_t x, rt_int16_t y, rt_int16_t r);
-void rtgui_dc_draw_aa_ellipse(struct rtgui_dc *dc, rt_int16_t  x, rt_int16_t y, rt_int16_t rx, rt_int16_t ry);
-
-int rtgui_dc_draw_thick_line(struct rtgui_dc * dst, rt_int16_t x1, rt_int16_t y1, rt_int16_t x2, rt_int16_t y2, rt_uint8_t width);
-
-/*
- * dc inline function
- *
- * Note:
- * In order to improve drawing speed, put most of common function of dc to inline
- */
-
-/*
- * draw a point on dc
- */
-rt_inline void rtgui_dc_draw_point(struct rtgui_dc *dc, int x, int y)
-{
-    dc->engine->draw_point(dc, x, y);
-}
-
-/*
- * draw a color point on dc
- */
-rt_inline void rtgui_dc_draw_color_point(struct rtgui_dc *dc, int x, int y, rtgui_color_t color)
-{
-    dc->engine->draw_color_point(dc, x, y, color);
-}
-
-/*
- * draw a vertical line on dc
- */
-rt_inline void rtgui_dc_draw_vline(struct rtgui_dc *dc, int x, int y1, int y2)
-{
-    dc->engine->draw_vline(dc, x, y1, y2);
-}
-
-/*
- * draw a horizontal line on dc
- */
-rt_inline void rtgui_dc_draw_hline(struct rtgui_dc *dc, int x1, int x2, int y)
-{
-    dc->engine->draw_hline(dc, x1, x2, y);
-}
-
-/*
- * fill a rect with background color
- */
-rt_inline void rtgui_dc_fill_rect(struct rtgui_dc *dc, struct rtgui_rect *rect)
-{
-    dc->engine->fill_rect(dc, rect);
-}
-
-/*
- * blit a dc (x, y) on another dc(rect)
- */
-rt_inline void rtgui_dc_blit(struct rtgui_dc *dc, struct rtgui_point *dc_point, struct rtgui_dc *dest, rtgui_rect_t *rect)
-{
-    dc->engine->blit(dc, dc_point, dest, rect);
-}
-
-/* set gc of dc */
-void rtgui_dc_set_gc(struct rtgui_dc *dc, rtgui_gc_t *gc);
-/* get gc of dc */
-rtgui_gc_t *rtgui_dc_get_gc(struct rtgui_dc *dc);
-/* get visible status of dc */
-rt_bool_t rtgui_dc_get_visible(struct rtgui_dc *dc);
-/* get rect of dc */
-void rtgui_dc_get_rect(struct rtgui_dc *dc, rtgui_rect_t *rect);
-/* get pixel format */
-rt_uint8_t rtgui_dc_get_pixel_format(struct rtgui_dc *dc);
-/* coordinate conversion */
-void rtgui_dc_logic_to_device(struct rtgui_dc* dc, struct rtgui_point *point);
-void rtgui_dc_rect_to_device(struct rtgui_dc* dc, struct rtgui_rect* rect);
-
-/* dc rotation and zoom operations */
-struct rtgui_dc *rtgui_dc_shrink(struct rtgui_dc *dc, int factorx, int factory);
-struct rtgui_dc *rtgui_dc_zoom(struct rtgui_dc *dc, double zoomx, double zoomy, int smooth);
-struct rtgui_dc *rtgui_dc_rotozoom(struct rtgui_dc *dc, double angle, double zoomx, double zoomy, int smooth);
-
-/* dc buffer dump to file */
-void rtgui_dc_buffer_dump(struct rtgui_dc *self, char *fn);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-

+ 0 - 551
components/gui/include/rtgui/dc_draw.h

@@ -1,551 +0,0 @@
-/*
- * File      : dc_draw.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2013-10-04     Bernard      porting SDL software render to RT-Thread GUI
- */
-
-/*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-*/
-
-#ifndef __DC_DRAW_H__
-#define __DC_DRAW_H__
-
-#include <rtgui/blit.h>
-
-/* This code assumes that r, g, b, a are the source color,
- * and in the blend and add case, the RGB values are premultiplied by a.
- */
-
-#define DRAW_MUL(_a, _b) (((unsigned)(_a)*(_b))/256)
-
-#define DRAW_FASTSETPIXEL(type) \
-    *pixel = (type) color
-
-#define DRAW_FASTSETPIXEL1 DRAW_FASTSETPIXEL(rt_uint8_t)
-#define DRAW_FASTSETPIXEL2 DRAW_FASTSETPIXEL(rt_uint16_t)
-#define DRAW_FASTSETPIXEL4 DRAW_FASTSETPIXEL(rt_uint32_t)
-
-#define DRAW_FASTSETPIXELXY(x, y, type, bpp, color) \
-    *(type *)(_dc_get_pixel(dst, x, y))= (type) color
-
-#define DRAW_FASTSETPIXELXY1(x, y) DRAW_FASTSETPIXELXY(x, y, rt_uint8_t, 1, color)
-#define DRAW_FASTSETPIXELXY2(x, y) DRAW_FASTSETPIXELXY(x, y, rt_uint16_t, 2, color)
-#define DRAW_FASTSETPIXELXY4(x, y) DRAW_FASTSETPIXELXY(x, y, rt_uint32_t, 4, color)
-
-#define DRAW_SETPIXEL(setpixel) \
-do { \
-    unsigned sr = r, sg = g, sb = b, sa = a; (void) sa; \
-    setpixel; \
-} while (0)
-
-#define DRAW_SETPIXEL_BLEND(getpixel, setpixel) \
-do { \
-    unsigned sr, sg, sb, sa; (void) sa; \
-    getpixel; \
-    sr = DRAW_MUL(inva, sr) + r; \
-    sg = DRAW_MUL(inva, sg) + g; \
-    sb = DRAW_MUL(inva, sb) + b; \
-    setpixel; \
-} while (0)
-
-#define DRAW_SETPIXEL_ADD(getpixel, setpixel) \
-do { \
-    unsigned sr, sg, sb, sa; (void) sa; \
-    getpixel; \
-    sr += r; if (sr > 0xff) sr = 0xff; \
-    sg += g; if (sg > 0xff) sg = 0xff; \
-    sb += b; if (sb > 0xff) sb = 0xff; \
-    setpixel; \
-} while (0)
-
-#define DRAW_SETPIXEL_MOD(getpixel, setpixel) \
-do { \
-    unsigned sr, sg, sb, sa; (void) sa; \
-    getpixel; \
-    sr = DRAW_MUL(sr, r); \
-    sg = DRAW_MUL(sg, g); \
-    sb = DRAW_MUL(sb, b); \
-    setpixel; \
-} while (0)
-
-#define DRAW_SETPIXELXY(x, y, type, bpp, op) \
-do { \
-    type *pixel = (type *)(_dc_get_pixel(dst, x, y));\
-    op; \
-} while (0)
-
-/*
- * Define draw operators for RGB555
- */
-
-#define DRAW_SETPIXEL_RGB555 \
-    DRAW_SETPIXEL(RGB555_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_BLEND_RGB555 \
-    DRAW_SETPIXEL_BLEND(RGB_FROM_RGB555(*pixel, sr, sg, sb), \
-                        RGB555_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_ADD_RGB555 \
-    DRAW_SETPIXEL_ADD(RGB_FROM_RGB555(*pixel, sr, sg, sb), \
-                      RGB555_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_MOD_RGB555 \
-    DRAW_SETPIXEL_MOD(RGB_FROM_RGB555(*pixel, sr, sg, sb), \
-                      RGB555_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXELXY_RGB555(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_RGB555)
-
-#define DRAW_SETPIXELXY_BLEND_RGB555(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_BLEND_RGB555)
-
-#define DRAW_SETPIXELXY_ADD_RGB555(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_ADD_RGB555)
-
-#define DRAW_SETPIXELXY_MOD_RGB555(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_MOD_RGB555)
-
-/*
- * Define draw operators for RGB565
- */
-
-#define DRAW_SETPIXEL_RGB565 \
-    DRAW_SETPIXEL(RGB565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_BLEND_RGB565 \
-    DRAW_SETPIXEL_BLEND(RGB_FROM_RGB565(*pixel, sr, sg, sb), \
-                        RGB565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_ADD_RGB565 \
-    DRAW_SETPIXEL_ADD(RGB_FROM_RGB565(*pixel, sr, sg, sb), \
-                      RGB565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_MOD_RGB565 \
-    DRAW_SETPIXEL_MOD(RGB_FROM_RGB565(*pixel, sr, sg, sb), \
-                      RGB565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXELXY_RGB565(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_RGB565)
-
-#define DRAW_SETPIXELXY_BLEND_RGB565(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_BLEND_RGB565)
-
-#define DRAW_SETPIXELXY_ADD_RGB565(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_ADD_RGB565)
-
-#define DRAW_SETPIXELXY_MOD_RGB565(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_MOD_RGB565)
-
-/*
- * Define draw operators for BGR565
- */
-
-#define DRAW_SETPIXEL_BGR565 \
-    DRAW_SETPIXEL(BGR565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_BLEND_BGR565 \
-    DRAW_SETPIXEL_BLEND(RGB_FROM_BGR565(*pixel, sr, sg, sb), \
-                        BGR565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_ADD_BGR565 \
-    DRAW_SETPIXEL_ADD(RGB_FROM_BGR565(*pixel, sr, sg, sb), \
-                      BGR565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_MOD_BGR565 \
-    DRAW_SETPIXEL_MOD(RGB_FROM_BGR565(*pixel, sr, sg, sb), \
-                      BGR565_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXELXY_BGR565(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_BGR565)
-
-#define DRAW_SETPIXELXY_BLEND_BGR565(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_BLEND_BGR565)
-
-#define DRAW_SETPIXELXY_ADD_BGR565(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_ADD_BGR565)
-
-#define DRAW_SETPIXELXY_MOD_BGR565(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint16_t, 2, DRAW_SETPIXEL_MOD_BGR565)
-
-/*
- * Define draw operators for RGB888
- */
-
-#define DRAW_SETPIXEL_RGB888 \
-    DRAW_SETPIXEL(RGB888_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_BLEND_RGB888 \
-    DRAW_SETPIXEL_BLEND(RGB_FROM_RGB888(*pixel, sr, sg, sb), \
-                        RGB888_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_ADD_RGB888 \
-    DRAW_SETPIXEL_ADD(RGB_FROM_RGB888(*pixel, sr, sg, sb), \
-                      RGB888_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXEL_MOD_RGB888 \
-    DRAW_SETPIXEL_MOD(RGB_FROM_RGB888(*pixel, sr, sg, sb), \
-                      RGB888_FROM_RGB(*pixel, sr, sg, sb))
-
-#define DRAW_SETPIXELXY_RGB888(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_RGB888)
-
-#define DRAW_SETPIXELXY_BLEND_RGB888(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_BLEND_RGB888)
-
-#define DRAW_SETPIXELXY_ADD_RGB888(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_ADD_RGB888)
-
-#define DRAW_SETPIXELXY_MOD_RGB888(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_MOD_RGB888)
-
-/*
- * Define draw operators for ARGB8888
- */
-
-#define DRAW_SETPIXEL_ARGB8888 \
-    DRAW_SETPIXEL(ARGB8888_FROM_RGBA(*pixel, sr, sg, sb, sa))
-
-#define DRAW_SETPIXEL_BLEND_ARGB8888 \
-    DRAW_SETPIXEL_BLEND(RGBA_FROM_ARGB8888(*pixel, sr, sg, sb, sa), \
-                        ARGB8888_FROM_RGBA(*pixel, sr, sg, sb, sa))
-
-#define DRAW_SETPIXEL_ADD_ARGB8888 \
-    DRAW_SETPIXEL_ADD(RGBA_FROM_ARGB8888(*pixel, sr, sg, sb, sa), \
-                      ARGB8888_FROM_RGBA(*pixel, sr, sg, sb, sa))
-
-#define DRAW_SETPIXEL_MOD_ARGB8888 \
-    DRAW_SETPIXEL_MOD(RGBA_FROM_ARGB8888(*pixel, sr, sg, sb, sa), \
-                      ARGB8888_FROM_RGBA(*pixel, sr, sg, sb, sa))
-
-#define DRAW_SETPIXELXY_ARGB8888(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_ARGB8888)
-
-#define DRAW_SETPIXELXY_BLEND_ARGB8888(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_BLEND_ARGB8888)
-
-#define DRAW_SETPIXELXY_ADD_ARGB8888(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_ADD_ARGB8888)
-
-#define DRAW_SETPIXELXY_MOD_ARGB8888(x, y) \
-    DRAW_SETPIXELXY(x, y, rt_uint32_t, 4, DRAW_SETPIXEL_MOD_ARGB8888)
-
-/*
- * Define line drawing macro
- */
-
-#define ABS(_x) ((_x) < 0 ? -(_x) : (_x))
-
-/* Horizontal line */
-#define HLINE(type, op, draw_end) \
-{ \
-    int length; \
-    type *pixel; \
-    if (x1 <= x2) { \
-        pixel = (type *)_dc_get_pixel(dst, x1, y1); \
-        length = draw_end ? (x2-x1+1) : (x2-x1); \
-    } else { \
-        pixel = (type *)_dc_get_pixel(dst, x2, y1); \
-        if (!draw_end) { \
-            ++pixel; \
-        } \
-        length = draw_end ? (x1-x2+1) : (x1-x2); \
-    } \
-    while (length--) { \
-        op; \
-        ++pixel; \
-    } \
-}
-
-/* Vertical line */
-#define VLINE(type, op, draw_end) \
-{ \
-    int length; \
-    int pitch = _dc_get_pitch(dst)/(_UI_BITBYTES(_dc_get_bits_per_pixel(dst))); \
-    type *pixel; \
-    if (y1 <= y2) { \
-        pixel = (type *)_dc_get_pixel(dst, x1, y1); \
-        length = draw_end ? (y2-y1+1) : (y2-y1); \
-    } else { \
-        pixel = (type *)_dc_get_pixel(dst, x1, y2); \
-        if (!draw_end) { \
-            pixel += pitch; \
-        } \
-        length = draw_end ? (y1-y2+1) : (y1-y2); \
-    } \
-    while (length--) { \
-        op; \
-        pixel += pitch; \
-    } \
-}
-
-/* Diagonal line */
-#define DLINE(type, op, draw_end) \
-{ \
-    int length; \
-    int pitch = _dc_get_pitch(dst)/(_UI_BITBYTES(_dc_get_bits_per_pixel(dst))); \
-    type *pixel; \
-    if (y1 <= y2) { \
-        pixel = (type *)_dc_get_pixel(dst, x1, y1); \
-        if (x1 <= x2) { \
-            ++pitch; \
-        } else { \
-            --pitch; \
-        } \
-        length = (y2-y1); \
-    } else { \
-        pixel = (type *)_dc_get_pixel(dst, x2, y2); \
-        if (x2 <= x1) { \
-            ++pitch; \
-        } else { \
-            --pitch; \
-        } \
-        if (!draw_end) { \
-            pixel += pitch; \
-        } \
-        length = (y1-y2); \
-    } \
-    if (draw_end) { \
-        ++length; \
-    } \
-    while (length--) { \
-        op; \
-        pixel += pitch; \
-    } \
-}
-
-/* Bresenham's line algorithm */
-#define BLINE(x1, y1, x2, y2, op, draw_end) \
-{ \
-    int i, deltax, deltay, numpixels; \
-    int d, dinc1, dinc2; \
-    int x, xinc1, xinc2; \
-    int y, yinc1, yinc2; \
- \
-    deltax = ABS(x2 - x1); \
-    deltay = ABS(y2 - y1); \
- \
-    if (deltax >= deltay) { \
-        numpixels = deltax + 1; \
-        d = (2 * deltay) - deltax; \
-        dinc1 = deltay * 2; \
-        dinc2 = (deltay - deltax) * 2; \
-        xinc1 = 1; \
-        xinc2 = 1; \
-        yinc1 = 0; \
-        yinc2 = 1; \
-    } else { \
-        numpixels = deltay + 1; \
-        d = (2 * deltax) - deltay; \
-        dinc1 = deltax * 2; \
-        dinc2 = (deltax - deltay) * 2; \
-        xinc1 = 0; \
-        xinc2 = 1; \
-        yinc1 = 1; \
-        yinc2 = 1; \
-    } \
- \
-    if (x1 > x2) { \
-        xinc1 = -xinc1; \
-        xinc2 = -xinc2; \
-    } \
-    if (y1 > y2) { \
-        yinc1 = -yinc1; \
-        yinc2 = -yinc2; \
-    } \
- \
-    x = x1; \
-    y = y1; \
- \
-    if (!draw_end) { \
-        --numpixels; \
-    } \
-    for (i = 0; i < numpixels; ++i) { \
-        op(x, y); \
-        if (d < 0) { \
-            d += dinc1; \
-            x += xinc1; \
-            y += yinc1; \
-        } else { \
-            d += dinc2; \
-            x += xinc2; \
-            y += yinc2; \
-        } \
-    } \
-}
-
-/* Xiaolin Wu's line algorithm, based on Michael Abrash's implementation */
-#define WULINE(x1, y1, x2, y2, opaque_op, blend_op, draw_end) \
-{ \
-    rt_uint16_t ErrorAdj, ErrorAcc; \
-    rt_uint16_t ErrorAccTemp, Weighting; \
-    int DeltaX, DeltaY, Temp, XDir; \
-    unsigned r, g, b, a, inva; \
-	\
-	/* remove compiling warning */ \
-	r = 0; g = 0; b = 0; a = 0; \
-	inva = 0; inva = inva; \
-    /* Draw the initial pixel, which is always exactly intersected by \
-       the line and so needs no weighting */ \
-    opaque_op(x1, y1); \
-	\
-    /* Draw the final pixel, which is always exactly intersected by the line \
-       and so needs no weighting */ \
-    if (draw_end) { \
-        opaque_op(x2, y2); \
-    } \
-	\
-    /* Make sure the line runs top to bottom */ \
-    if (y1 > y2) { \
-        Temp = y1; y1 = y2; y2 = Temp; \
-        Temp = x1; x1 = x2; x2 = Temp; \
-    } \
-    DeltaY = y2 - y1; \
- \
-    if ((DeltaX = x2 - x1) >= 0) { \
-        XDir = 1; \
-    } else { \
-        XDir = -1; \
-        DeltaX = -DeltaX; /* make DeltaX positive */ \
-    } \
- \
-    /* line is not horizontal, diagonal, or vertical */ \
-    ErrorAcc = 0;  /* initialize the line error accumulator to 0 */ \
- \
-    /* Is this an X-major or Y-major line? */ \
-    if (DeltaY > DeltaX) { \
-        /* Y-major line; calculate 16-bit fixed-point fractional part of a \
-          pixel that X advances each time Y advances 1 pixel, truncating the \
-          result so that we won't overrun the endpoint along the X axis */ \
-        ErrorAdj = ((unsigned long) DeltaX << 16) / (unsigned long) DeltaY; \
-        /* Draw all pixels other than the first and last */ \
-        while (--DeltaY) { \
-            ErrorAccTemp = ErrorAcc;   /* remember current accumulated error */ \
-            ErrorAcc += ErrorAdj;      /* calculate error for next pixel */ \
-            if (ErrorAcc <= ErrorAccTemp) { \
-                /* The error accumulator turned over, so advance the X coord */ \
-                x1 += XDir; \
-            } \
-            y1++; /* Y-major, so always advance Y */ \
-            /* The IntensityBits most significant bits of ErrorAcc give us the \
-             intensity weighting for this pixel, and the complement of the \
-             weighting for the paired pixel */ \
-            Weighting = ErrorAcc >> 8; \
-            { \
-                a = DRAW_MUL(_a, (Weighting ^ 255)); \
-                r = DRAW_MUL(_r, a); \
-                g = DRAW_MUL(_g, a); \
-                b = DRAW_MUL(_b, a); \
-                inva = (a ^ 0xFF); \
-                blend_op(x1, y1); \
-            } \
-            { \
-                a = DRAW_MUL(_a, Weighting); \
-                r = DRAW_MUL(_r, a); \
-                g = DRAW_MUL(_g, a); \
-                b = DRAW_MUL(_b, a); \
-                inva = (a ^ 0xFF); \
-                blend_op(x1 + XDir, y1); \
-            } \
-        } \
-    } else { \
-        /* X-major line; calculate 16-bit fixed-point fractional part of a \
-           pixel that Y advances each time X advances 1 pixel, truncating the \
-           result to avoid overrunning the endpoint along the X axis */ \
-        ErrorAdj = ((unsigned long) DeltaY << 16) / (unsigned long) DeltaX; \
-        /* Draw all pixels other than the first and last */ \
-        while (--DeltaX) { \
-            ErrorAccTemp = ErrorAcc;   /* remember currrent accumulated error */ \
-            ErrorAcc += ErrorAdj;      /* calculate error for next pixel */ \
-            if (ErrorAcc <= ErrorAccTemp) { \
-                /* The error accumulator turned over, so advance the Y coord */ \
-                y1++; \
-            } \
-            x1 += XDir; /* X-major, so always advance X */ \
-            /* The IntensityBits most significant bits of ErrorAcc give us the \
-              intensity weighting for this pixel, and the complement of the \
-              weighting for the paired pixel */ \
-            Weighting = ErrorAcc >> 8; \
-            { \
-                a = DRAW_MUL(_a, (Weighting ^ 255)); \
-                r = DRAW_MUL(_r, a); \
-                g = DRAW_MUL(_g, a); \
-                b = DRAW_MUL(_b, a); \
-                inva = (a ^ 0xFF); \
-                blend_op(x1, y1); \
-            } \
-            { \
-                a = DRAW_MUL(_a, Weighting); \
-                r = DRAW_MUL(_r, a); \
-                g = DRAW_MUL(_g, a); \
-                b = DRAW_MUL(_b, a); \
-                inva = (a ^ 0xFF); \
-                blend_op(x1, y1 + 1); \
-            } \
-        } \
-    } \
-}
-
-#define AALINE(x1, y1, x2, y2, opaque_op, blend_op, draw_end) \
-            WULINE(x1, y1, x2, y2, opaque_op, blend_op, draw_end)
-
-/*
- * Define fill rect macro
- */
-#define FILLRECT(type, op) \
-do { \
-    int width = rect->x2 - rect->x1; \
-    int height = rect->y2 - rect->y1; \
-    int pitch = _dc_get_pitch(dst)/(_UI_BITBYTES(_dc_get_bits_per_pixel(dst))); \
-    int skip = pitch - width; \
-    type *pixel = (type *)_dc_get_pixel(dst, rect->x1, rect->y1); \
-    while (height--) { \
-        { int n = (width+3)/4; \
-            switch (width & 3) { \
-            case 0: do {   op; pixel++; \
-            case 3:        op; pixel++; \
-            case 2:        op; pixel++; \
-            case 1:        op; pixel++; \
-                    } while ( --n > 0 ); \
-            } \
-        } \
-        pixel += skip; \
-    } \
-} while (0)
-
-#endif

+ 0 - 64
components/gui/include/rtgui/dc_trans.h

@@ -1,64 +0,0 @@
-/*
- * File      : dc_trans.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2010-04-10     Bernard      first version
- */
-
-#ifndef __RTGUI_DC_TRANS_H__
-#define __RTGUI_DC_TRANS_H__
-
-#include <rtgui/dc.h>
-#include <rtgui/matrix.h>
-
-struct rtgui_dc_trans;
-
-/** Create a dc translator on the dc @owner
- *
- * @return RT_NULL is there is no memory.
- */
-struct rtgui_dc_trans* rtgui_dc_trans_create(struct rtgui_dc *owner);
-
-/** Rotate the dc clockwise.
- *
- * @param degree the degree to rotate.
- */
-void rtgui_dc_trans_rotate(struct rtgui_dc_trans *dct, double degree);
-
-void rtgui_dc_trans_set_aa(struct rtgui_dc_trans *dct, int use_aa);
-
-void rtgui_dc_trans_scale(struct rtgui_dc_trans *dct, double sx, double sy);
-
-/** Move the dc
- *
- * The unit of @dx and @dy is pixel.
- */
-void rtgui_dc_trans_move(struct rtgui_dc_trans *dct, int dx, int dy);
-
-void rtgui_dc_trans_get_new_wh(struct rtgui_dc_trans *dct, int *new_w, int *new_h);
-
-void rtgui_dc_trans_blit(struct rtgui_dc_trans *dct,
-                         struct rtgui_point *dc_point,
-                         struct rtgui_dc *dest,
-                         struct rtgui_rect *rect);
-
-void rtgui_dc_trans_destroy(struct rtgui_dc_trans *dct);
-
-#endif

+ 0 - 117
components/gui/include/rtgui/driver.h

@@ -1,117 +0,0 @@
-/*
- * File      : driver.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-04     Bernard      first version
- */
-#ifndef __RTGUI_DRIVER_H__
-#define __RTGUI_DRIVER_H__
-
-#include <rtgui/list.h>
-#include <rtgui/color.h>
-
-/* graphic driver operations */
-struct rtgui_graphic_driver_ops
-{
-    /* set and get pixel in (x, y) */
-    void (*set_pixel)(rtgui_color_t *c, int x, int y);
-    void (*get_pixel)(rtgui_color_t *c, int x, int y);
-
-    void (*draw_hline)(rtgui_color_t *c, int x1, int x2, int y);
-    void (*draw_vline)(rtgui_color_t *c, int x , int y1, int y2);
-
-    /* draw raw hline */
-    void (*draw_raw_hline)(rt_uint8_t *pixels, int x1, int x2, int y);
-};
-
-/* graphic extension operations */
-struct rtgui_graphic_ext_ops
-{
-    /* some 2D operations */
-    void (*draw_line)(rtgui_color_t *c, int x1, int y1, int x2, int y2);
-
-    void (*draw_rect)(rtgui_color_t *c, int x1, int y1, int x2, int y2);
-    void (*fill_rect)(rtgui_color_t *c, int x1, int y1, int x2, int y2);
-
-    void (*draw_circle)(rtgui_color_t *c, int x, int y, int r);
-    void (*fill_circle)(rtgui_color_t *c, int x, int y, int r);
-
-    void (*draw_ellipse)(rtgui_color_t *c, int x, int y, int rx, int ry);
-    void (*fill_ellipse)(rtgui_color_t *c, int x, int y, int rx, int ry);
-};
-
-struct rtgui_graphic_driver
-{
-    /* pixel format and byte per pixel */
-    rt_uint8_t pixel_format;
-    rt_uint8_t bits_per_pixel;
-    rt_uint16_t pitch;
-
-    /* screen width and height */
-    rt_uint16_t width;
-    rt_uint16_t height;
-
-    /* framebuffer address and ops */
-    rt_uint8_t *framebuffer;
-    struct rt_device* device;
-
-    const struct rtgui_graphic_driver_ops *ops;
-    const struct rtgui_graphic_ext_ops *ext_ops;
-};
-
-struct rtgui_graphic_driver *rtgui_graphic_driver_get_default(void);
-
-void rtgui_graphic_driver_get_rect(const struct rtgui_graphic_driver *driver, rtgui_rect_t *rect);
-void rtgui_graphic_driver_screen_update(const struct rtgui_graphic_driver *driver, rtgui_rect_t *rect);
-rt_uint8_t *rtgui_graphic_driver_get_framebuffer(const struct rtgui_graphic_driver *driver);
-
-rt_err_t rtgui_graphic_set_device(rt_device_t device);
-void rtgui_graphic_driver_set_framebuffer(void *fb);
-
-rt_inline struct rtgui_graphic_driver *rtgui_graphic_get_device()
-{
-    return rtgui_graphic_driver_get_default();
-}
-
-#ifdef RTGUI_USING_HW_CURSOR
-/*
- * hardware cursor
- */
-enum rtgui_cursor_type
-{
-    RTGUI_CURSOR_ARROW,
-    RTGUI_CURSOR_HAND,
-};
-
-void rtgui_cursor_set_device(const char* device_name);
-void rtgui_cursor_set_position(rt_uint16_t x, rt_uint16_t y);
-void rtgui_cursor_set_image(enum rtgui_cursor_type type);
-#endif
-
-#ifdef RTGUI_USING_VFRAMEBUFFER
-void rtgui_graphic_driver_vmode_enter(void);
-void rtgui_graphic_driver_vmode_exit(void);
-struct rtgui_dc* rtgui_graphic_driver_get_rect_buffer(const struct rtgui_graphic_driver *driver, struct rtgui_rect *rect);
-#endif
-
-rt_bool_t rtgui_graphic_driver_is_vmode(void);
-
-#endif
-

+ 0 - 580
components/gui/include/rtgui/event.h

@@ -1,580 +0,0 @@
-/*
- * File      : event.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-04     Bernard      first version
- */
-#ifndef __RTGUI_EVENT_H__
-#define __RTGUI_EVENT_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtdevice.h>
-#include <rtgui/rtgui.h>
-#include <rtgui/kbddef.h>
-
-/* NOTE: if you create a new event type, remember to add it into the union
- * rtgui_event_generic */
-enum _rtgui_event_type
-{
-    /* applications event */
-    RTGUI_EVENT_APP_CREATE,            /* create an application */
-    RTGUI_EVENT_APP_DESTROY,           /* destroy an application */
-    RTGUI_EVENT_APP_ACTIVATE,          /* activate an application */
-
-    /* window event */
-    RTGUI_EVENT_WIN_CREATE,            /* create a window       */
-    RTGUI_EVENT_WIN_DESTROY,           /* destroy a window      */
-    RTGUI_EVENT_WIN_SHOW,              /* show a window         */
-    RTGUI_EVENT_WIN_HIDE,              /* hide a window         */
-    RTGUI_EVENT_WIN_ACTIVATE,          /* activate a window     */
-    RTGUI_EVENT_WIN_DEACTIVATE,        /* deactivate a window   */
-    RTGUI_EVENT_WIN_CLOSE,             /* close a window        */
-    RTGUI_EVENT_WIN_MOVE,              /* move a window         */
-    RTGUI_EVENT_WIN_RESIZE,            /* resize a window       */
-    RTGUI_EVENT_WIN_UPDATE_END,        /* update done for window */
-    RTGUI_EVENT_WIN_MODAL_ENTER,       /* the window is entering modal mode.
-                                          This event should be sent after the
-                                          window got setup and before the
-                                          application got setup. */
-
-    /* WM event */
-    RTGUI_EVENT_SET_WM,                /* set window manager    */
-
-    RTGUI_EVENT_UPDATE_BEGIN,          /* update a rect         */
-    RTGUI_EVENT_UPDATE_END,            /* update a rect         */
-    RTGUI_EVENT_MONITOR_ADD,           /* add a monitor rect    */
-    RTGUI_EVENT_MONITOR_REMOVE,        /* remove a monitor rect */
-    RTGUI_EVENT_SHOW,                  /* the widget is going to be shown */
-    RTGUI_EVENT_HIDE,                  /* the widget is going to be hidden */
-    RTGUI_EVENT_PAINT,                 /* paint on screen       */
-    RTGUI_EVENT_TIMER,                 /* timer                 */
-    RTGUI_EVENT_UPDATE_TOPLVL,         /* update the toplevel   */
-
-    /* virtual paint event */
-    RTGUI_EVENT_VPAINT_REQ,            /* virtual paint request (server -> client) */
-
-    /* clip rect information */
-    RTGUI_EVENT_CLIP_INFO,             /* clip rect info        */
-
-    /* mouse and keyboard event */
-    RTGUI_EVENT_MOUSE_MOTION,          /* mouse motion          */
-    RTGUI_EVENT_MOUSE_BUTTON,          /* mouse button info     */
-    RTGUI_EVENT_KBD,                   /* keyboard info         */
-    RTGUI_EVENT_TOUCH,                 /* touch event to server */
-    RTGUI_EVENT_GESTURE,               /* gesture event         */
-
-    /* widget event */
-    RTGUI_EVENT_FOCUSED,               /* widget focused        */
-    RTGUI_EVENT_SCROLLED,              /* scroll bar scrolled   */
-    RTGUI_EVENT_RESIZE,                /* widget resize         */
-    RTGUI_EVENT_SELECTED,              /* widget selected       */
-    RTGUI_EVENT_UNSELECTED,            /* widget un-selected    */
-    RTGUI_EVENT_MV_MODEL,              /* data of a model has been changed */
-
-    WBUS_NOTIFY_EVENT,
-
-    /* user command event. It should always be the last command type. */
-    RTGUI_EVENT_COMMAND = 0x0100,      /* user command          */
-};
-typedef enum _rtgui_event_type rtgui_event_type;
-
-enum
-{
-    RTGUI_STATUS_OK = 0,        /* status ok         */
-    RTGUI_STATUS_ERROR,         /* generic error     */
-    RTGUI_STATUS_NRC,           /* no resource       */
-};
-
-struct rtgui_event
-{
-    /* the event type */
-    enum _rtgui_event_type type;
-    /* user field of event */
-    rt_uint16_t user;
-
-    /* the event sender */
-    struct rtgui_app *sender;
-
-    /* mailbox to acknowledge request */
-    rt_mailbox_t ack;
-};
-typedef struct rtgui_event rtgui_event_t;
-#define RTGUI_EVENT(e)  ((struct rtgui_event*)(e))
-
-extern struct rtgui_app* rtgui_app_self(void);
-
-#define RTGUI_EVENT_INIT(e, t)  do      \
-{                                       \
-    (e)->type = (t);                    \
-    (e)->user = 0;                      \
-    (e)->sender = rtgui_app_self();     \
-    (e)->ack = RT_NULL;                 \
-} while (0)
-
-/*
- * RTGUI Application Event
- */
-struct rtgui_event_application
-{
-    struct rtgui_event parent;
-
-    struct rtgui_app *app;
-};
-
-/* gui application init */
-#define RTGUI_EVENT_APP_CREATE_INIT(e)      RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_APP_CREATE)
-#define RTGUI_EVENT_APP_DESTROY_INIT(e)      RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_APP_DESTROY)
-#define RTGUI_EVENT_APP_ACTIVATE_INIT(e)      RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_APP_ACTIVATE)
-
-/*
- * RTGUI Window Event
- */
-#define _RTGUI_EVENT_WIN_ELEMENTS \
-    struct rtgui_event parent; \
-    struct rtgui_win *wid;
-
-/*
- * RTGUI Window Event
- */
-struct rtgui_event_win
-{
-    _RTGUI_EVENT_WIN_ELEMENTS
-};
-
-struct rtgui_event_win_create
-{
-    _RTGUI_EVENT_WIN_ELEMENTS
-    struct rtgui_win *parent_window;
-};
-
-struct rtgui_event_win_move
-{
-    _RTGUI_EVENT_WIN_ELEMENTS
-    rt_int16_t x, y;
-};
-
-struct rtgui_event_win_resize
-{
-    _RTGUI_EVENT_WIN_ELEMENTS
-
-    rtgui_rect_t rect;
-};
-
-struct rtgui_event_win_update_end
-{
-    _RTGUI_EVENT_WIN_ELEMENTS
-
-    rtgui_rect_t rect;
-};
-
-#define rtgui_event_win_destroy      rtgui_event_win
-#define rtgui_event_win_show         rtgui_event_win
-#define rtgui_event_win_hide         rtgui_event_win
-#define rtgui_event_win_activate     rtgui_event_win
-#define rtgui_event_win_deactivate   rtgui_event_win
-#define rtgui_event_win_close        rtgui_event_win
-#define rtgui_event_win_modal_enter  rtgui_event_win
-
-/* window event init */
-#define RTGUI_EVENT_WIN_CREATE_INIT(e)      RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_CREATE)
-#define RTGUI_EVENT_WIN_DESTROY_INIT(e)     RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_DESTROY)
-#define RTGUI_EVENT_WIN_SHOW_INIT(e)        RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_SHOW)
-#define RTGUI_EVENT_WIN_HIDE_INIT(e)        RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_HIDE)
-#define RTGUI_EVENT_WIN_ACTIVATE_INIT(e)    RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_ACTIVATE)
-#define RTGUI_EVENT_WIN_DEACTIVATE_INIT(e)  RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_DEACTIVATE)
-#define RTGUI_EVENT_WIN_CLOSE_INIT(e)       RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_CLOSE)
-#define RTGUI_EVENT_WIN_MOVE_INIT(e)        RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_MOVE)
-#define RTGUI_EVENT_WIN_RESIZE_INIT(e)      RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_RESIZE)
-#define RTGUI_EVENT_WIN_UPDATE_END_INIT(e)  RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_UPDATE_END)
-#define RTGUI_EVENT_WIN_MODAL_ENTER_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_WIN_MODAL_ENTER)
-
-/*
- * RTGUI set window manager
- */
-struct rtgui_event_set_wm
-{
-    struct rtgui_event parent;
-    struct rtgui_app *app;
-};
-#define RTGUI_EVENT_SET_WM_INIT(e)          RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_SET_WM);
-
-/*
- * RTGUI Other Event
- */
-struct rtgui_event_update_begin
-{
-    struct rtgui_event parent;
-
-    /* the update rect */
-    rtgui_rect_t rect;
-};
-
-struct rtgui_event_update_end
-{
-    struct rtgui_event parent;
-
-    /* the update rect */
-    rtgui_rect_t rect;
-};
-
-struct rtgui_event_monitor
-{
-    _RTGUI_EVENT_WIN_ELEMENTS
-
-    /* the monitor rect */
-    rtgui_rect_t rect;
-};
-
-struct rtgui_event_paint
-{
-    _RTGUI_EVENT_WIN_ELEMENTS
-
-    rtgui_rect_t rect;      /* rect to be updated */
-};
-
-struct rtgui_timer;
-struct rtgui_event_timer
-{
-    struct rtgui_event parent;
-
-    struct rtgui_timer *timer;
-};
-typedef struct rtgui_event_timer rtgui_event_timer_t;
-
-
-struct rtgui_event_clip_info
-{
-    _RTGUI_EVENT_WIN_ELEMENTS
-
-    /* the number of rects */
-    //rt_uint32_t num_rect;
-
-    /* rtgui_rect_t *rects */
-};
-#define RTGUI_EVENT_GET_RECT(e, i)          &(((rtgui_rect_t*)(e + 1))[i])
-
-#define RTGUI_EVENT_UPDATE_BEGIN_INIT(e)    RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_UPDATE_BEGIN)
-#define RTGUI_EVENT_UPDATE_END_INIT(e)      RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_UPDATE_END)
-#define RTGUI_EVENT_MONITOR_ADD_INIT(e)     RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MONITOR_ADD)
-#define RTGUI_EVENT_MONITOR_REMOVE_INIT(e)  RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MONITOR_REMOVE)
-#define RTGUI_EVENT_CLIP_INFO_INIT(e)       RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_CLIP_INFO)
-#define RTGUI_EVENT_PAINT_INIT(e)           RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_PAINT)
-#define RTGUI_EVENT_TIMER_INIT(e)           RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_TIMER)
-
-#define rtgui_event_show rtgui_event
-#define rtgui_event_hide rtgui_event
-
-#define RTGUI_EVENT_SHOW_INIT(e)            RTGUI_EVENT_INIT((e), RTGUI_EVENT_SHOW)
-#define RTGUI_EVENT_HIDE_INIT(e)            RTGUI_EVENT_INIT((e), RTGUI_EVENT_HIDE)
-
-struct rtgui_event_update_toplvl
-{
-    struct rtgui_event parent;
-    struct rtgui_win   *toplvl;
-};
-
-#define RTGUI_EVENT_UPDATE_TOPLVL_INIT(e)   \
-    do { \
-        RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_UPDATE_TOPLVL); \
-        (e)->toplvl = RT_NULL; \
-    } while (0)
-
-struct rtgui_event_vpaint_req
-{
-    _RTGUI_EVENT_WIN_ELEMENTS
-
-    struct rtgui_event_vpaint_req *sender;
-    struct rt_completion *cmp;
-    struct rtgui_dc* buffer;
-};
-
-#define RTGUI_EVENT_VPAINT_REQ_INIT(e, win, cm) \
-    do { \
-        RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_VPAINT_REQ); \
-        (e)->wid = win; \
-        (e)->cmp = cm; \
-        (e)->sender = (e); \
-        (e)->buffer = RT_NULL; \
-        rt_completion_init((e)->cmp); \
-    } while (0)
-
-/**
- * RTGUI Gesture Event
- */
-enum rtgui_gesture_type
-{
-    RTGUI_GESTURE_NONE      = 0x0000,
-    RTGUI_GESTURE_TAP       = 0x0001,
-    /* Usually used to zoom in and out. */
-    RTGUI_GESTURE_PINCH     = 0x0002,
-    RTGUI_GESTURE_DRAG      = 0x0004,
-    RTGUI_GESTURE_LONGPRESS = 0x0008,
-    RTGUI_GESTURE_DRAGGED   = 0x0001 | 0x0004 | 0x0008,
-    /* PINCH, DRAG finished. */
-    RTGUI_GESTURE_FINISH    = 0x8000,
-    /* The corresponding gesture should be canceled. */
-    RTGUI_GESTURE_CANCEL    = 0x4000,
-    RTGUI_GESTURE_TYPE_MASK = 0x0FFF,
-};
-
-struct rtgui_event_gesture
-{
-    _RTGUI_EVENT_WIN_ELEMENTS
-
-    enum rtgui_gesture_type type;
-
-    rt_uint32_t	win_acti_cnt;		/* window activate count */
-};
-
-/*
- * RTGUI Mouse and Keyboard Event
- */
-struct rtgui_event_mouse
-{
-    _RTGUI_EVENT_WIN_ELEMENTS
-
-    rt_uint16_t x, y;
-    rt_uint16_t button;
-
-    /* Timestamp of this event sampled in driver. */
-    rt_tick_t ts;
-    /* id of touch session(from down to up). Different session should have
-     * different id. id should never be 0. */
-    rt_uint32_t id;
-
-    rt_uint32_t	win_acti_cnt;		/* window activate count */
-};
-#define RTGUI_MOUSE_BUTTON_LEFT         0x01
-#define RTGUI_MOUSE_BUTTON_RIGHT        0x02
-#define RTGUI_MOUSE_BUTTON_MIDDLE       0x03
-#define RTGUI_MOUSE_BUTTON_WHEELUP      0x04
-#define RTGUI_MOUSE_BUTTON_WHEELDOWN    0x08
-
-#define RTGUI_MOUSE_BUTTON_DOWN         0x10
-#define RTGUI_MOUSE_BUTTON_UP           0x20
-
-#define RTGUI_EVENT_GESTURE_INIT(e, gtype) \
-    do { \
-        RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_GESTURE); \
-        (e)->type = gtype; \
-    } while (0)
-
-struct rtgui_event_kbd
-{
-    _RTGUI_EVENT_WIN_ELEMENTS
-
-    rt_uint32_t	win_acti_cnt;		/* window activate count */
-
-    rt_uint16_t type;       /* key down or up */
-    rt_uint16_t key;        /* current key */
-    rt_uint16_t mod;        /* current key modifiers */
-    rt_uint16_t unicode;    /* translated character */
-};
-#define RTGUI_KBD_IS_SET_CTRL(e)    ((e)->mod & (RTGUI_KMOD_LCTRL | RTGUI_KMOD_RCTRL))
-#define RTGUI_KBD_IS_SET_ALT(e)     ((e)->mod & (RTGUI_KMOD_LALT  | RTGUI_KMOD_RALT))
-#define RTGUI_KBD_IS_SET_SHIFT(e)   ((e)->mod & (RTGUI_KMOD_LSHIFT| RTGUI_KMOD_RSHIFT))
-#define RTGUI_KBD_IS_UP(e)          ((e)->type == RTGUI_KEYUP)
-#define RTGUI_KBD_IS_DOWN(e)        ((e)->type == RTGUI_KEYDOWN)
-
-#define RTGUI_EVENT_MOUSE_MOTION_INIT(e)    RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MOUSE_MOTION)
-#define RTGUI_EVENT_MOUSE_BUTTON_INIT(e)    RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MOUSE_BUTTON)
-#define RTGUI_EVENT_KBD_INIT(e)             RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_KBD)
-
-/**
- * RTGUI Touch Event
- * NOTE: There is not touch event to user applications, it's handled by server.
- */
-struct rtgui_event_touch
-{
-    struct rtgui_event parent;
-
-    rt_uint16_t x, y;
-    rt_uint16_t up_down;
-    rt_uint16_t resv;
-};
-#define RTGUI_TOUCH_UP                  0x01
-#define RTGUI_TOUCH_DOWN                0x02
-#define RTGUI_TOUCH_MOTION              0x03
-#define RTGUI_EVENT_TOUCH_INIT(e)       RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_TOUCH)
-
-struct rtgui_event_command
-{
-    _RTGUI_EVENT_WIN_ELEMENTS
-
-    /* command type */
-    rt_int32_t type;
-
-    /* command id */
-    rt_int32_t command_id;
-
-    /* command string */
-    char command_string[RTGUI_NAME_MAX];
-};
-#define RTGUI_EVENT_COMMAND_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_COMMAND)
-
-#define RTGUI_CMD_UNKNOWN       0x00
-#define RTGUI_CMD_WM_CLOSE      0x10
-
-#define RTGUI_CMD_USER_INT      0x20
-#define RTGUI_CMD_USER_STRING   0x21
-
-/************************************************************************/
-/* Widget Event                                                         */
-/************************************************************************/
-#define RTGUI_WIDGET_EVENT_INIT(e, t)   do      \
-{                                       \
-    (e)->type = (t);                    \
-    (e)->sender = RT_NULL;              \
-    (e)->ack = RT_NULL;                 \
-} while (0)
-
-/*
- * RTGUI Scrollbar Event
- */
-struct rtgui_event_scrollbar
-{
-    struct rtgui_event parent;
-
-    rt_uint8_t event;
-};
-#define RTGUI_SCROLL_LINEUP             0x01
-#define RTGUI_SCROLL_LINEDOWN           0x02
-#define RTGUI_SCROLL_PAGEUP             0x03
-#define RTGUI_SCROLL_PAGEDOWN           0x04
-#define RTGUI_EVENT_SCROLLED_INIT(e)    RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_SCROLLED)
-
-/*
- * RTGUI Widget Focused Event
- */
-struct rtgui_event_focused
-{
-    struct rtgui_event parent;
-
-    struct rtgui_widget *widget;
-};
-#define RTGUI_EVENT_FOCUSED_INIT(e)     RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_FOCUSED)
-
-/*
- * RTGUI Widget Resize Event
- */
-struct rtgui_event_resize
-{
-    struct rtgui_event parent;
-    rt_int16_t x, y;
-    rt_int16_t w, h;
-};
-#define RTGUI_EVENT_RESIZE_INIT(e) RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_RESIZE)
-
-/*
- * RTGUI Model/View Event
- */
-enum rtgui_event_model_mode
-{
-    RTGUI_MV_DATA_ADDED,
-    RTGUI_MV_DATA_CHANGED,
-    RTGUI_MV_DATA_DELETED,
-};
-
-struct rtgui_event_mv_model
-{
-    struct rtgui_event parent;
-    struct rtgui_mv_model *model;
-    struct rtgui_mv_view  *view;
-    rt_size_t first_data_changed_idx;
-    rt_size_t last_data_changed_idx;
-};
-
-#define _RTGUI_EVENT_MV_INIT_TYPE(T) \
-rt_inline void RTGUI_EVENT_MV_MODEL_##T##_INIT(struct rtgui_event_mv_model *e) \
-{ \
-    RTGUI_EVENT_INIT(&((e)->parent), RTGUI_EVENT_MV_MODEL); \
-    (e)->parent.user = RTGUI_MV_DATA_##T; \
-} \
-/* useless struct to allow trailing semicolon */ \
-struct dummy
-
-_RTGUI_EVENT_MV_INIT_TYPE(ADDED);
-_RTGUI_EVENT_MV_INIT_TYPE(CHANGED);
-_RTGUI_EVENT_MV_INIT_TYPE(DELETED);
-#undef _RTGUI_EVENT_MV_INIT_TYPE
-
-#define _RTGUI_EVENT_MV_IS_TYPE(T) \
-rt_inline rt_bool_t RTGUI_EVENT_MV_MODEL_IS_##T(struct rtgui_event_mv_model *e) \
-{ \
-    return e->parent.user == RTGUI_MV_DATA_##T; \
-} \
-/* useless struct to allow trailing semicolon */ \
-struct dummy
-
-_RTGUI_EVENT_MV_IS_TYPE(ADDED);
-_RTGUI_EVENT_MV_IS_TYPE(CHANGED);
-_RTGUI_EVENT_MV_IS_TYPE(DELETED);
-#undef _RTGUI_EVENT_MV_IS_TYPE
-
-#undef _RTGUI_EVENT_WIN_ELEMENTS
-
-union rtgui_event_generic
-{
-    struct rtgui_event base;
-
-    struct rtgui_event_application app_create;
-    struct rtgui_event_application app_destroy;
-    struct rtgui_event_application app_activate;
-
-    struct rtgui_event_set_wm set_wm;
-    struct rtgui_event_win win_base;
-    struct rtgui_event_win_create win_create;
-    struct rtgui_event_win_move win_move;
-    struct rtgui_event_win_resize win_resize;
-    struct rtgui_event_win_destroy win_destroy;
-    struct rtgui_event_win_show win_show;
-    struct rtgui_event_win_hide win_hide;
-    struct rtgui_event_win_activate win_activate;
-    struct rtgui_event_win_deactivate win_deactivate;
-    struct rtgui_event_win_close win_close;
-    struct rtgui_event_win_modal_enter win_modal_enter;
-    struct rtgui_event_update_begin update_begin;
-    struct rtgui_event_update_end update_end;
-    struct rtgui_event_monitor monitor;
-    struct rtgui_event_paint paint;
-    struct rtgui_event_timer timer;
-    struct rtgui_event_update_toplvl update_toplvl;
-    struct rtgui_event_vpaint_req vpaint_req;
-    struct rtgui_event_clip_info clip_info;
-    struct rtgui_event_mouse mouse;
-    struct rtgui_event_kbd kbd;
-    struct rtgui_event_touch touch;
-    struct rtgui_event_gesture gesture;
-    struct rtgui_event_scrollbar scrollbar;
-    struct rtgui_event_focused focused;
-    struct rtgui_event_resize resize;
-    struct rtgui_event_mv_model model;
-    struct rtgui_event_command command;
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-

+ 0 - 78
components/gui/include/rtgui/filerw.h

@@ -1,78 +0,0 @@
-/*
- * File      : filerw.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-16     Bernard      first version
- */
-#ifndef __RTGUI_FILERW_H__
-#define __RTGUI_FILERW_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef RTGUI_USING_DFS_FILERW
-#ifdef _WIN32_NATIVE
-#pragma warning(disable: 4996)
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <io.h>
-#else
-#include <dfs_posix.h>
-#endif
-#endif
-
-#include <rtgui/rtgui.h>
-
-#define RTGUI_FILE_SEEK_SET 0
-#define RTGUI_FILE_SEEK_CUR 1
-#define RTGUI_FILE_SEEK_END 2
-
-struct rtgui_filerw
-{
-    int (*seek)(struct rtgui_filerw *context, rt_off_t offset, int whence);
-    int (*read)(struct rtgui_filerw *context, void *buffer, rt_size_t size, rt_size_t count);
-    int (*write)(struct rtgui_filerw *context, const void *buffer, rt_size_t size, rt_size_t count);
-    int (*tell)(struct rtgui_filerw *context);
-    int (*eof)(struct rtgui_filerw *context);
-    int (*close)(struct rtgui_filerw *context);
-};
-typedef struct rtgui_filerw rtgui_filerw_t;
-
-struct rtgui_filerw *rtgui_filerw_create_file(const char *filename, const char *mode);
-struct rtgui_filerw *rtgui_filerw_create_mem(const rt_uint8_t *mem, rt_size_t size);
-
-int rtgui_filerw_seek(struct rtgui_filerw *context, rt_off_t offset, int whence);
-int rtgui_filerw_read(struct rtgui_filerw *context, void *buffer, rt_size_t size, rt_size_t count);
-int rtgui_filerw_write(struct rtgui_filerw *context, const void *buffer, rt_size_t size, rt_size_t count);
-int rtgui_filerw_tell(struct rtgui_filerw *context);
-int rtgui_filerw_eof(struct rtgui_filerw *context);
-int rtgui_filerw_close(struct rtgui_filerw *context);
-int rtgui_filerw_unlink(const char *filename);
-
-/* get memory data from filerw memory object */
-const rt_uint8_t *rtgui_filerw_mem_getdata(struct rtgui_filerw *context);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif

+ 0 - 154
components/gui/include/rtgui/font.h

@@ -1,154 +0,0 @@
-/*
- * File      : font.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-16     Bernard      first version
- */
-#ifndef __RTGUI_FONT_H__
-#define __RTGUI_FONT_H__
-
-#include <rtgui/rtgui.h>
-#include <rtgui/list.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rtgui_font;
-struct rtgui_dc;
-struct rtgui_rect;
-
-struct rtgui_font_engine
-{
-    /* font engine function */
-    void (*font_init)(struct rtgui_font *font);
-    void (*font_load)(struct rtgui_font *font);
-
-    void (*font_draw_text)(struct rtgui_font *font, struct rtgui_dc *dc, const char *text,
-                           rt_ubase_t len, struct rtgui_rect *rect);
-    void (*font_get_metrics)(struct rtgui_font *font, const char *text, struct rtgui_rect *rect);
-};
-
-/*
- * bitmap font engine
- */
-struct rtgui_font_bitmap
-{
-    const rt_uint8_t  *bmp;         /* bitmap font data */
-    const rt_uint8_t  *char_width;  /* each character width, NULL for fixed font */
-    const rt_uint32_t *offset;      /* offset for each character */
-
-    rt_uint16_t width;              /* font width  */
-    rt_uint16_t height;             /* font height */
-
-    rt_uint8_t first_char;
-    rt_uint8_t last_char;
-};
-extern const struct rtgui_font_engine bmp_font_engine;
-
-#include <rtgui/tree.h>
-SPLAY_HEAD(cache_tree, hz_cache);
-struct hz_cache
-{
-    SPLAY_ENTRY(hz_cache) hz_node;
-
-    rt_uint16_t hz_id;
-};
-
-struct rtgui_hz_file_font
-{
-    struct cache_tree cache_root;
-    rt_uint16_t cache_size;
-
-    /* font size */
-    rt_uint16_t font_size;
-    rt_uint16_t font_data_size;
-
-    /* file descriptor */
-    int fd;
-
-    /* font file name */
-    const char *font_fn;
-};
-extern const struct rtgui_font_engine rtgui_hz_file_font_engine;
-
-struct rtgui_font
-{
-    /* font name */
-    char *family;
-
-    /* font height */
-    rt_uint16_t height;
-
-    /* refer count */
-    rt_uint32_t refer_count;
-
-    /* font engine */
-    const struct rtgui_font_engine *engine;
-
-    /* font private data */
-    void *data;
-
-    /* the font list */
-    rtgui_list_t list;
-};
-typedef struct rtgui_font rtgui_font_t;
-
-void rtgui_font_system_init(void);
-void rtgui_font_system_add_font(struct rtgui_font *font);
-void rtgui_font_system_remove_font(struct rtgui_font *font);
-struct rtgui_font *rtgui_font_default(void);
-void rtgui_font_set_defaut(struct rtgui_font *font);
-
-struct rtgui_font *rtgui_font_refer(const char *family, rt_uint16_t height);
-void rtgui_font_derefer(struct rtgui_font *font);
-
-/* draw a text */
-void rtgui_font_draw(struct rtgui_font *font, struct rtgui_dc *dc, const char *text, rt_ubase_t len, struct rtgui_rect *rect);
-int  rtgui_font_get_string_width(struct rtgui_font *font, const char *text);
-void rtgui_font_get_metrics(struct rtgui_font *font, const char *text, struct rtgui_rect *rect);
-
-/* used by stract font */
-#define FONT_BMP_DATA_BEGIN
-#define FONT_BMP_DATA_END
-
-struct rtgui_char_position
-{
-    /* Keep the size of this struct within 4 bytes so it can be passed by
-     * value. */
-    /* How long this char is. */
-    rt_uint16_t char_width;
-    /* How many bytes remaining from current pointer. At least, it will be 1. */
-    rt_uint16_t remain;
-};
-
-/*
- * @len the length of @str.
- * @offset the char offset on the string to check with.
- */
-struct rtgui_char_position _string_char_width(char *str, rt_size_t len, rt_size_t offset);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-

+ 0 - 62
components/gui/include/rtgui/font_fnt.h

@@ -1,62 +0,0 @@
-/*
- * File      : font_fnt.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2010-04-10     Bernard      first version
- */
-
-#ifndef __FONT_FNT_H__
-#define __FONT_FNT_H__
-
-#include <rtgui/font.h>
-#include <rtgui/dc.h>
-
-/* fnt font header */
-struct fnt_header
-{
-    rt_uint8_t version[4];
-    rt_uint16_t max_width;
-    rt_uint16_t height;
-    rt_uint16_t ascent;
-    rt_uint16_t depth;
-
-    rt_uint32_t first_char;
-    rt_uint32_t default_char;
-    rt_uint32_t size;
-    rt_uint32_t nbits;
-    rt_uint32_t noffset;
-    rt_uint32_t nwidth;
-};
-typedef rt_uint8_t MWIMAGEBITS;
-
-struct fnt_font
-{
-    struct fnt_header header;
-
-    const MWIMAGEBITS *bits;   /* nbits */
-    const rt_uint16_t *offset; /* noffset */
-    const rt_uint8_t  *width;  /* nwidth */
-};
-extern const struct rtgui_font_engine fnt_font_engine;
-
-struct rtgui_font *fnt_font_create(const char* filename);
-
-#endif
-

+ 0 - 44
components/gui/include/rtgui/font_freetype.h

@@ -1,44 +0,0 @@
-/*
- * File      : font_freetype.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2010-04-10     Bernard      first version
- */
-
-#ifndef __RTGUI_FONT_TTF_H__
-#define __RTGUI_FONT_TTF_H__
-
-#include <rtgui/dc.h>
-#include <rtgui/font.h>
-#include <rtgui/filerw.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void rtgui_ttf_system_init(void);
-rtgui_font_t *rtgui_freetype_font_create(const char *filename, rt_size_t size);
-void rtgui_freetype_font_destroy(rtgui_font_t *font);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif

+ 0 - 100
components/gui/include/rtgui/image.h

@@ -1,100 +0,0 @@
-/*
- * File      : image.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-16     Bernard      first version
- */
-#ifndef __RTGUI_IMAGE_H__
-#define __RTGUI_IMAGE_H__
-
-#include <rtgui/dc.h>
-#include <rtgui/filerw.h>
-#include <rtgui/region.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rtgui_image;
-struct rtgui_image_engine
-{
-    const char *name;
-    struct rtgui_list_node list;
-
-    /* image engine function */
-    rt_bool_t (*image_check)(struct rtgui_filerw *file);
-
-    rt_bool_t (*image_load)(struct rtgui_image *image, struct rtgui_filerw *file, rt_bool_t load);
-    void (*image_unload)(struct rtgui_image *image);
-
-    void (*image_blit)(struct rtgui_image *image, struct rtgui_dc *dc, struct rtgui_rect *rect);
-};
-
-struct rtgui_image_palette
-{
-    rtgui_color_t *colors;
-    rt_uint32_t ncolors;
-};
-typedef struct rtgui_image_palette rtgui_image_palette_t;
-
-struct rtgui_image
-{
-    /* image metrics */
-    rt_uint16_t w, h;
-
-    /* image engine */
-    const struct rtgui_image_engine *engine;
-
-    /* image palette */
-    rtgui_image_palette_t *palette;
-
-    /* image private data */
-    void *data;
-};
-typedef struct rtgui_image rtgui_image_t;
-
-/* init rtgui image system */
-void rtgui_system_image_init(void);
-
-#if defined(RTGUI_USING_DFS_FILERW)
-struct rtgui_image_engine *rtgui_image_get_engine_by_filename(const char *fn);
-struct rtgui_image *rtgui_image_create_from_file(const char *type, const char *filename, rt_bool_t load);
-struct rtgui_image *rtgui_image_create(const char *filename, rt_bool_t load);
-#endif
-
-struct rtgui_image *rtgui_image_create_from_mem(const char *type, const rt_uint8_t *data, rt_size_t length, rt_bool_t load);
-void rtgui_image_destroy(struct rtgui_image *image);
-
-/* get image's rect */
-void rtgui_image_get_rect(struct rtgui_image *image, struct rtgui_rect *rect);
-
-/* register an image engine */
-void rtgui_image_register_engine(struct rtgui_image_engine *engine);
-
-/* blit an image on DC */
-void rtgui_image_blit(struct rtgui_image *image, struct rtgui_dc *dc, struct rtgui_rect *rect);
-struct rtgui_image_palette *rtgui_image_palette_create(rt_uint32_t ncolors);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-

+ 0 - 56
components/gui/include/rtgui/image_bmp.h

@@ -1,56 +0,0 @@
-/*
- * File      : image_bmp.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2010-08-10     Bernard      first version
- */
-#ifndef __RTGUI_IMAGE_BMP_H__
-#define __RTGUI_IMAGE_BMP_H__
-
-#pragma pack(push)
-#pragma pack(2)
-
-struct rtgui_image_bmp_header
-{
-    /* The Win32 BMP file header (14 bytes) */
-    rt_uint16_t bfType;
-    rt_uint32_t bfSize;
-    rt_uint16_t bfReserved1;
-    rt_uint16_t bfReserved2;
-    rt_uint32_t bfOffBits;
-
-    /* The Win32 BITMAPINFOHEADER struct (40 bytes) */
-    rt_uint32_t biSize;
-    rt_int32_t  biWidth;
-    rt_int32_t  biHeight;
-    rt_uint16_t biPlanes;
-    rt_uint16_t biBitCount;
-    rt_uint32_t biCompression;
-    rt_uint32_t biSizeImage;
-    rt_int32_t  biXPelsPerMeter;
-    rt_int32_t  biYPelsPerMeter;
-    rt_uint32_t biClrUsed;
-    rt_uint32_t biClrImportant;
-};
-#pragma pack(pop)
-
-void rtgui_image_bmp_init(void);
-
-#endif

+ 0 - 58
components/gui/include/rtgui/image_container.h

@@ -1,58 +0,0 @@
-/*
- * File      : image_container.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2010-04-10     Bernard      first version
- */
-
-#ifndef __RTGUI_IMAGE_CONTAINER_H__
-#define __RTGUI_IMAGE_CONTAINER_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtgui/rtgui.h>
-#include <rtgui/image.h>
-
-#if defined(RTGUI_IMAGE_CONTAINER)
-/* image item in image container */
-struct rtgui_image_item
-{
-    rtgui_image_t *image;
-    char *filename;
-
-    rt_uint32_t refcount;
-};
-typedef struct rtgui_image_item rtgui_image_item_t;
-
-void rtgui_system_image_container_init(void);
-
-struct rtgui_image_item *rtgui_image_container_get(const char *filename);
-void rtgui_image_container_put(struct rtgui_image_item *item);
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-

+ 0 - 62
components/gui/include/rtgui/image_hdc.h

@@ -1,62 +0,0 @@
-/*
- * File      : image_hdc.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-16     Bernard      first version
- */
-#ifndef __RTGUI_IMAGE_HDC_H__
-#define __RTGUI_IMAGE_HDC_H__
-
-#include <rtgui/image.h>
-
-struct rtgui_image_hdcmm
-{
-    struct rtgui_image parent;
-
-    /* hdc image information */
-    rt_uint16_t byte_per_pixel;
-    rt_uint16_t pitch;
-
-    rt_uint8_t *pixels;
-};
-
-struct rtgui_image_hdc
-{
-    rt_bool_t is_loaded;
-
-    /* hdc image information */
-    rt_uint16_t byte_per_pixel;
-    rt_uint16_t pitch;
-    rt_uint8_t  pixel_format;
-
-    rt_size_t   pixel_offset;
-    rt_uint8_t *pixels;
-
-    struct rtgui_filerw *filerw;
-};
-
-void rtgui_image_hdc_init(void);
-extern const struct rtgui_image_engine rtgui_image_hdcmm_engine;
-
-#define HDC_HEADER_SIZE     (5 * 4)
-#define RTGUI_IMAGE_HDC_DEF(bpp, w, h, pixels)  \
-    {{w, h, &rtgui_image_hdcmm_engine, RT_NULL}, bpp, (bpp * w), ((rt_uint8_t*)pixels + HDC_HEADER_SIZE)}
-
-#endif

+ 0 - 305
components/gui/include/rtgui/kbddef.h

@@ -1,305 +0,0 @@
-/*
- * File      : kbddef.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-16     Bernard      first version
- */
-#ifndef __KBD_DEF_H__
-#define __KBD_DEF_H__
-
-/* The keyboard key have been cleverly chosen to map to ASCII */
-typedef enum
-{
-    RTGUIK_UNKNOWN      = 0,
-    RTGUIK_FIRST        = 0,
-    RTGUIK_BACKSPACE    = 8,
-    RTGUIK_TAB          = 9,
-    RTGUIK_CLEAR        = 12,
-    RTGUIK_RETURN       = 13,
-    RTGUIK_PAUSE        = 19,
-    RTGUIK_ESCAPE       = 27,
-    RTGUIK_SPACE        = 32,
-    RTGUIK_EXCLAIM      = 33,
-    RTGUIK_QUOTEDBL     = 34,
-    RTGUIK_HASH         = 35,
-    RTGUIK_DOLLAR       = 36,
-    RTGUIK_AMPERSAND    = 38,
-    RTGUIK_QUOTE        = 39,
-    RTGUIK_LEFTPAREN    = 40,
-    RTGUIK_RIGHTPAREN   = 41,
-    RTGUIK_ASTERISK     = 42,
-    RTGUIK_PLUS         = 43,
-    RTGUIK_COMMA        = 44,
-    RTGUIK_MINUS        = 45,
-    RTGUIK_PERIOD       = 46,
-    RTGUIK_SLASH        = 47,
-    RTGUIK_0            = 48,
-    RTGUIK_1            = 49,
-    RTGUIK_2            = 50,
-    RTGUIK_3            = 51,
-    RTGUIK_4            = 52,
-    RTGUIK_5            = 53,
-    RTGUIK_6            = 54,
-    RTGUIK_7            = 55,
-    RTGUIK_8            = 56,
-    RTGUIK_9            = 57,
-    RTGUIK_COLON        = 58,
-    RTGUIK_SEMICOLON    = 59,
-    RTGUIK_LESS         = 60,
-    RTGUIK_EQUALS       = 61,
-    RTGUIK_GREATER      = 62,
-    RTGUIK_QUESTION     = 63,
-    RTGUIK_AT           = 64,
-
-    /*
-       Skip uppercase letters
-     */
-    RTGUIK_LEFTBRACKET  = 91,
-    RTGUIK_BACKSLASH    = 92,
-    RTGUIK_RIGHTBRACKET = 93,
-    RTGUIK_CARET        = 94,
-    RTGUIK_UNDERSCORE   = 95,
-    RTGUIK_BACKQUOTE    = 96,
-    RTGUIK_a            = 97,
-    RTGUIK_b            = 98,
-    RTGUIK_c            = 99,
-    RTGUIK_d            = 100,
-    RTGUIK_e            = 101,
-    RTGUIK_f            = 102,
-    RTGUIK_g            = 103,
-    RTGUIK_h            = 104,
-    RTGUIK_i            = 105,
-    RTGUIK_j            = 106,
-    RTGUIK_k            = 107,
-    RTGUIK_l            = 108,
-    RTGUIK_m            = 109,
-    RTGUIK_n            = 110,
-    RTGUIK_o            = 111,
-    RTGUIK_p            = 112,
-    RTGUIK_q            = 113,
-    RTGUIK_r            = 114,
-    RTGUIK_s            = 115,
-    RTGUIK_t            = 116,
-    RTGUIK_u            = 117,
-    RTGUIK_v            = 118,
-    RTGUIK_w            = 119,
-    RTGUIK_x            = 120,
-    RTGUIK_y            = 121,
-    RTGUIK_z            = 122,
-    RTGUIK_DELETE       = 127,
-
-    /* International keyboard */
-    RTGUIK_WORLD_0      = 160,      /* 0xA0 */
-    RTGUIK_WORLD_1      = 161,
-    RTGUIK_WORLD_2      = 162,
-    RTGUIK_WORLD_3      = 163,
-    RTGUIK_WORLD_4      = 164,
-    RTGUIK_WORLD_5      = 165,
-    RTGUIK_WORLD_6      = 166,
-    RTGUIK_WORLD_7      = 167,
-    RTGUIK_WORLD_8      = 168,
-    RTGUIK_WORLD_9      = 169,
-    RTGUIK_WORLD_10     = 170,
-    RTGUIK_WORLD_11     = 171,
-    RTGUIK_WORLD_12     = 172,
-    RTGUIK_WORLD_13     = 173,
-    RTGUIK_WORLD_14     = 174,
-    RTGUIK_WORLD_15     = 175,
-    RTGUIK_WORLD_16     = 176,
-    RTGUIK_WORLD_17     = 177,
-    RTGUIK_WORLD_18     = 178,
-    RTGUIK_WORLD_19     = 179,
-    RTGUIK_WORLD_20     = 180,
-    RTGUIK_WORLD_21     = 181,
-    RTGUIK_WORLD_22     = 182,
-    RTGUIK_WORLD_23     = 183,
-    RTGUIK_WORLD_24     = 184,
-    RTGUIK_WORLD_25     = 185,
-    RTGUIK_WORLD_26     = 186,
-    RTGUIK_WORLD_27     = 187,
-    RTGUIK_WORLD_28     = 188,
-    RTGUIK_WORLD_29     = 189,
-    RTGUIK_WORLD_30     = 190,
-    RTGUIK_WORLD_31     = 191,
-    RTGUIK_WORLD_32     = 192,
-    RTGUIK_WORLD_33     = 193,
-    RTGUIK_WORLD_34     = 194,
-    RTGUIK_WORLD_35     = 195,
-    RTGUIK_WORLD_36     = 196,
-    RTGUIK_WORLD_37     = 197,
-    RTGUIK_WORLD_38     = 198,
-    RTGUIK_WORLD_39     = 199,
-    RTGUIK_WORLD_40     = 200,
-    RTGUIK_WORLD_41     = 201,
-    RTGUIK_WORLD_42     = 202,
-    RTGUIK_WORLD_43     = 203,
-    RTGUIK_WORLD_44     = 204,
-    RTGUIK_WORLD_45     = 205,
-    RTGUIK_WORLD_46     = 206,
-    RTGUIK_WORLD_47     = 207,
-    RTGUIK_WORLD_48     = 208,
-    RTGUIK_WORLD_49     = 209,
-    RTGUIK_WORLD_50     = 210,
-    RTGUIK_WORLD_51     = 211,
-    RTGUIK_WORLD_52     = 212,
-    RTGUIK_WORLD_53     = 213,
-    RTGUIK_WORLD_54     = 214,
-    RTGUIK_WORLD_55     = 215,
-    RTGUIK_WORLD_56     = 216,
-    RTGUIK_WORLD_57     = 217,
-    RTGUIK_WORLD_58     = 218,
-    RTGUIK_WORLD_59     = 219,
-    RTGUIK_WORLD_60     = 220,
-    RTGUIK_WORLD_61     = 221,
-    RTGUIK_WORLD_62     = 222,
-    RTGUIK_WORLD_63     = 223,
-    RTGUIK_WORLD_64     = 224,
-    RTGUIK_WORLD_65     = 225,
-    RTGUIK_WORLD_66     = 226,
-    RTGUIK_WORLD_67     = 227,
-    RTGUIK_WORLD_68     = 228,
-    RTGUIK_WORLD_69     = 229,
-    RTGUIK_WORLD_70     = 230,
-    RTGUIK_WORLD_71     = 231,
-    RTGUIK_WORLD_72     = 232,
-    RTGUIK_WORLD_73     = 233,
-    RTGUIK_WORLD_74     = 234,
-    RTGUIK_WORLD_75     = 235,
-    RTGUIK_WORLD_76     = 236,
-    RTGUIK_WORLD_77     = 237,
-    RTGUIK_WORLD_78     = 238,
-    RTGUIK_WORLD_79     = 239,
-    RTGUIK_WORLD_80     = 240,
-    RTGUIK_WORLD_81     = 241,
-    RTGUIK_WORLD_82     = 242,
-    RTGUIK_WORLD_83     = 243,
-    RTGUIK_WORLD_84     = 244,
-    RTGUIK_WORLD_85     = 245,
-    RTGUIK_WORLD_86     = 246,
-    RTGUIK_WORLD_87     = 247,
-    RTGUIK_WORLD_88     = 248,
-    RTGUIK_WORLD_89     = 249,
-    RTGUIK_WORLD_90     = 250,
-    RTGUIK_WORLD_91     = 251,
-    RTGUIK_WORLD_92     = 252,
-    RTGUIK_WORLD_93     = 253,
-    RTGUIK_WORLD_94     = 254,
-    RTGUIK_WORLD_95     = 255,      /* 0xFF */
-
-    /* Numeric keypad */
-    RTGUIK_KP0          = 256,
-    RTGUIK_KP1          = 257,
-    RTGUIK_KP2          = 258,
-    RTGUIK_KP3          = 259,
-    RTGUIK_KP4          = 260,
-    RTGUIK_KP5          = 261,
-    RTGUIK_KP6          = 262,
-    RTGUIK_KP7          = 263,
-    RTGUIK_KP8          = 264,
-    RTGUIK_KP9          = 265,
-    RTGUIK_KP_PERIOD    = 266,
-    RTGUIK_KP_DIVIDE    = 267,
-    RTGUIK_KP_MULTIPLY  = 268,
-    RTGUIK_KP_MINUS     = 269,
-    RTGUIK_KP_PLUS      = 270,
-    RTGUIK_KP_ENTER     = 271,
-    RTGUIK_KP_EQUALS    = 272,
-
-    /* Arrows + Home/End pad */
-    RTGUIK_UP           = 273,
-    RTGUIK_DOWN         = 274,
-    RTGUIK_RIGHT        = 275,
-    RTGUIK_LEFT         = 276,
-    RTGUIK_INSERT       = 277,
-    RTGUIK_HOME         = 278,
-    RTGUIK_END          = 279,
-    RTGUIK_PAGEUP       = 280,
-    RTGUIK_PAGEDOWN     = 281,
-
-    /* Function keys */
-    RTGUIK_F1           = 282,
-    RTGUIK_F2           = 283,
-    RTGUIK_F3           = 284,
-    RTGUIK_F4           = 285,
-    RTGUIK_F5           = 286,
-    RTGUIK_F6           = 287,
-    RTGUIK_F7           = 288,
-    RTGUIK_F8           = 289,
-    RTGUIK_F9           = 290,
-    RTGUIK_F10          = 291,
-    RTGUIK_F11          = 292,
-    RTGUIK_F12          = 293,
-    RTGUIK_F13          = 294,
-    RTGUIK_F14          = 295,
-    RTGUIK_F15          = 296,
-
-    /* Key state modifier keys */
-    RTGUIK_NUMLOCK      = 300,
-    RTGUIK_CAPSLOCK     = 301,
-    RTGUIK_SCROLLOCK    = 302,
-    RTGUIK_RSHIFT       = 303,
-    RTGUIK_LSHIFT       = 304,
-    RTGUIK_RCTRL        = 305,
-    RTGUIK_LCTRL        = 306,
-    RTGUIK_RALT         = 307,
-    RTGUIK_LALT         = 308,
-    RTGUIK_RMETA        = 309,
-    RTGUIK_LMETA        = 310,
-    RTGUIK_LSUPER       = 311,      /* Left "Windows" key */
-    RTGUIK_RSUPER       = 312,      /* Right "Windows" key */
-    RTGUIK_MODE         = 313,      /* "Alt Gr" key */
-    RTGUIK_COMPOSE      = 314,      /* Multi-key compose key */
-
-    /* Miscellaneous function keys */
-    RTGUIK_HELP         = 315,
-    RTGUIK_PRINT        = 316,
-    RTGUIK_SYSREQ       = 317,
-    RTGUIK_BREAK        = 318,
-    RTGUIK_MENU         = 319,
-    RTGUIK_POWER        = 320,      /* Power key */
-
-    RTGUIK_LAST
-} RTGUI_KBD_KEY;
-
-/* Enumeration of valid key mods (possibly OR'd together) */
-typedef enum
-{
-    RTGUI_KMOD_NONE     = 0x0000,
-    RTGUI_KMOD_LSHIFT   = 0x0001,
-    RTGUI_KMOD_RSHIFT   = 0x0002,
-    RTGUI_KMOD_LCTRL    = 0x0040,
-    RTGUI_KMOD_RCTRL    = 0x0080,
-    RTGUI_KMOD_LALT     = 0x0100,
-    RTGUI_KMOD_RALT     = 0x0200,
-    RTGUI_KMOD_LMETA    = 0x0400,
-    RTGUI_KMOD_RMETA    = 0x0800,
-    RTGUI_KMOD_NUM      = 0x1000,
-    RTGUI_KMOD_CAPS     = 0x2000,
-    RTGUI_KMOD_MODE     = 0x4000,
-    RTGUI_KMOD_RESERVED = 0x8000
-} RTGUI_KBD_MOD;
-
-typedef enum
-{
-    RTGUI_KEYDOWN,          /* Keys pressed */
-    RTGUI_KEYUP,            /* Keys released */
-} RTGUI_KBD_TYPE;
-
-#endif

+ 0 - 76
components/gui/include/rtgui/list.h

@@ -1,76 +0,0 @@
-/*
- * File      : list.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-16     Bernard      first version
- */
-#ifndef __RTGUI_LIST_H__
-#define __RTGUI_LIST_H__
-
-#include <rtgui/rtgui.h>
-
-struct rtgui_list_node
-{
-    struct rtgui_list_node *next;
-};
-typedef struct rtgui_list_node rtgui_list_t;
-
-rt_inline void rtgui_list_init(rtgui_list_t *l)
-{
-    l->next = (struct rtgui_list_node *)0;
-}
-
-rt_inline void rtgui_list_append(rtgui_list_t *l, rtgui_list_t *n)
-{
-    struct rtgui_list_node *node;
-
-    node = l;
-    while (node->next) node = node->next;
-
-    /* append the node to the tail */
-    node->next = n;
-    n->next = (struct rtgui_list_node *) 0;
-}
-
-rt_inline void rtgui_list_insert(rtgui_list_t *l, rtgui_list_t *n)
-{
-    n->next = l->next;
-    l->next = n;
-}
-
-rt_inline rtgui_list_t *rtgui_list_remove(rtgui_list_t *l, rtgui_list_t *n)
-{
-    /* remove slist head */
-    struct rtgui_list_node *node = l;
-    while (node->next && node->next != n) node = node->next;
-
-    /* remove node */
-    if (node->next != (rtgui_list_t *)0) node->next = node->next->next;
-
-    return l;
-}
-
-#define rtgui_list_entry(node, type, member)    \
-    ((type *)((char*)(node)-(unsigned long)(&((type *)0)->member)))
-
-#define rtgui_list_foreach(node, list)  \
-    for ((node) = (list)->next; (node) != RT_NULL; (node) = (node)->next)
-
-#endif

+ 0 - 186
components/gui/include/rtgui/matrix.h

@@ -1,186 +0,0 @@
-/*
- * File      : matrix.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2010-04-10     Grissiom     The first version
- */
-
-#ifndef __MATRIX_H__
-#define __MATRIX_H__
-
-/* Port from ejoy2d: https://github.com/cloudwu/ejoy2d/blob/master/LICENSE
- * Original License:
- *
- * The MIT License (MIT)
- *
- * Copyright (c) 2013 Ejoy.com Inc.
- *
- * Permission is hereby granted,  free of charge,  to any person obtaining a copy of
- * this software and associated documentation files (the "Software"),  to deal in
- * the Software without restriction,  including without limitation the rights to
- * use,  copy,  modify,  merge,  publish,  distribute,  sublicense,  and/or sell copies of
- * the Software,  and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS",  WITHOUT WARRANTY OF ANY KIND,  EXPRESS OR
- * IMPLIED,  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  FITNESS
- * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,  DAMAGES OR OTHER LIABILITY,  WHETHER
- * IN AN ACTION OF CONTRACT,  TORT OR OTHERWISE,  ARISING FROM,  OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/* Port to RTGUI and modified by Grissiom */
-
-#ifdef _MSC_VER
-typedef __int32 int32_t;
-typedef unsigned __int32 uint32_t;
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-#else
-#include <stdint.h>
-#endif
-
-#define RTGUI_MATRIX_FRAC_BITS   11
-#define RTGUI_MATRIX_FRAC      (1 << RTGUI_MATRIX_FRAC_BITS)
-
-struct rtgui_matrix
-{
-    /* The matrix format is :
-     *
-     * | m[0] m[1] 0 |
-     * | m[2] m[3] 0 |
-     * | m[4] m[5] 1 |
-     *
-     * The format of the coordinate of a point is:
-     *
-     * | x y 1 |
-     *
-     * So, if you want to transform a point p with a matrix m, do:
-     *
-     * p * m
-     *
-     * Note: m[0-3] is in fix presentation that has 10 bits decimal
-     * fraction(m/RTGUI_MATRIX_FRAC). While the unit of m[4-5] is pixel.
-     *
-     */
-    int m[6];
-};
-
-rt_inline int32_t _rtgui_matrix_round_div32(int32_t n, int32_t d)
-{
-    if (n == 0)
-        return 0;
-
-    if (d < 0)
-    {
-        d = -d;
-        n = -n;
-    }
-    if (n > 0)
-        return (n + d / 2) / d;
-    else
-        return (n - d / 2) / d;
-}
-
-rt_inline int32_t _rtgui_matrix_round_div6432(int64_t n, int32_t d)
-{
-    if (n == 0)
-        return 0;
-
-    if (d < 0)
-    {
-        d = -d;
-        n = -n;
-    }
-    if (n > 0)
-        return (n + d / 2) / d;
-    else
-        return (n - d / 2) / d;
-}
-
-/* mm = mm1 * mm2 */
-rt_inline void rtgui_matrix_mul(struct rtgui_matrix *mm,
-                                const struct rtgui_matrix *mm1,
-                                const struct rtgui_matrix *mm2)
-{
-    int *m = mm->m;
-    const int *m1 = mm1->m;
-    const int *m2 = mm2->m;
-
-    m[0] = _rtgui_matrix_round_div32(m1[0] * m2[0] + m1[1] * m2[2], RTGUI_MATRIX_FRAC);
-    m[1] = _rtgui_matrix_round_div32(m1[0] * m2[1] + m1[1] * m2[3], RTGUI_MATRIX_FRAC);
-    m[2] = _rtgui_matrix_round_div32(m1[2] * m2[0] + m1[3] * m2[2], RTGUI_MATRIX_FRAC);
-    m[3] = _rtgui_matrix_round_div32(m1[2] * m2[1] + m1[3] * m2[3], RTGUI_MATRIX_FRAC);
-    m[4] = _rtgui_matrix_round_div32(m1[4] * m2[0] + m1[5] * m2[2], RTGUI_MATRIX_FRAC) + m2[4];
-    m[5] = _rtgui_matrix_round_div32(m1[4] * m2[1] + m1[5] * m2[3], RTGUI_MATRIX_FRAC) + m2[5];
-}
-
-/* Matrix multiply point[(p) = (x, y) * m], ignore the movement components. */
-rt_inline void rtgui_matrix_mul_point_nomove(struct rtgui_point *p,
-        int x, int y,
-        struct rtgui_matrix *m)
-{
-    int *mm = m->m;
-
-    p->x = _rtgui_matrix_round_div32(x * mm[0] + y * mm[2], RTGUI_MATRIX_FRAC);
-    p->y = _rtgui_matrix_round_div32(x * mm[1] + y * mm[3], RTGUI_MATRIX_FRAC);
-}
-
-/* Matrix multiply point[(p) = (x, y) * m]. */
-rt_inline void rtgui_matrix_mul_point(struct rtgui_point *p,
-                                      int x, int y,
-                                      struct rtgui_matrix *m)
-{
-    int *mm = m->m;
-
-    p->x = _rtgui_matrix_round_div32(x * mm[0] + y * mm[2], RTGUI_MATRIX_FRAC) + mm[4];
-    p->y = _rtgui_matrix_round_div32(x * mm[1] + y * mm[3], RTGUI_MATRIX_FRAC) + mm[5];
-}
-
-/** Set @mm to an identity matrix. */
-rt_inline void rtgu_matrix_identity(struct rtgui_matrix *mm)
-{
-    int *mat = mm->m;
-    mat[0] = RTGUI_MATRIX_FRAC;
-    mat[1] = 0;
-    mat[2] = 0;
-    mat[3] = RTGUI_MATRIX_FRAC;
-    mat[4] = 0;
-    mat[5] = 0;
-}
-
-/** Save the inversed matrix of @mm to @mo.
- *
- * @return If the matrix is not inversale, return 1. Otherwise, return 0. */
-int rtgui_matrix_inverse(const struct rtgui_matrix *mm, struct rtgui_matrix *mo);
-
-/** @degree range from 0 ~ 512. */
-void rtgui_matrix_rotate(struct rtgui_matrix *m, int degree);
-/** The unit is fixed point number. RTGUI_MATRIX_FRAC means 1.0. */
-void rtgui_matrix_scale(struct rtgui_matrix *m, int sx, int sy);
-/** The unit is pixel. Not the fixed point number. */
-void rtgui_matrix_move(struct rtgui_matrix *m, int dx, int dy);
-
-#endif /* end of include guard: __MATRIX_H__ */
-

+ 0 - 132
components/gui/include/rtgui/region.h

@@ -1,132 +0,0 @@
-/*
- * File      : region.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-16     Bernard      first version
- */
-#ifndef __RTGUI_REGION_H__
-#define __RTGUI_REGION_H__
-
-#include <rtgui/rtgui.h>
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-typedef struct rtgui_region_data rtgui_region_data_t;
-struct rtgui_dc;
-
-struct rtgui_region_data
-{
-    rt_uint32_t size;
-    rt_uint32_t numRects;
-    /* XXX: And why, exactly, do we have this bogus struct definition? */
-    /* rtgui_rect_t rects[size]; in memory but not explicitly declared */
-};
-
-typedef struct rtgui_region
-{
-    rtgui_rect_t          extents;
-    rtgui_region_data_t  *data;
-} rtgui_region_t;
-
-typedef enum
-{
-    RTGUI_REGION_STATUS_FAILURE,
-    RTGUI_REGION_STATUS_SUCCESS
-} rtgui_region_status_t;
-
-/* creation/destruction */
-
-void rtgui_region_init(rtgui_region_t *region);
-void rtgui_region_init_rect(rtgui_region_t *region,
-                            int x, int y, unsigned int width, unsigned int height);
-void rtgui_region_init_with_extents(rtgui_region_t *region, const rtgui_rect_t *extents);
-void rtgui_region_fini(rtgui_region_t *region);
-
-void rtgui_region_translate(rtgui_region_t *region, int x, int y);
-
-rtgui_region_status_t rtgui_region_copy(rtgui_region_t *dest, rtgui_region_t *source);
-
-rtgui_region_status_t rtgui_region_intersect(rtgui_region_t *newReg, rtgui_region_t *reg1, rtgui_region_t *reg2);
-rtgui_region_status_t rtgui_region_intersect_rect(rtgui_region_t *newReg, rtgui_region_t *reg1, rtgui_rect_t *rect);
-rtgui_region_status_t rtgui_region_union(rtgui_region_t *newReg, rtgui_region_t *reg1, rtgui_region_t *reg2);
-rtgui_region_status_t rtgui_region_union_rect(rtgui_region_t *dest, rtgui_region_t *source, rtgui_rect_t *rect);
-rtgui_region_status_t rtgui_region_subtract(rtgui_region_t *regD, rtgui_region_t *regM, rtgui_region_t *regS);
-rtgui_region_status_t rtgui_region_subtract_rect(rtgui_region_t *regD, rtgui_region_t *regM, rtgui_rect_t *rect);
-rtgui_region_status_t rtgui_region_inverse(rtgui_region_t *newReg, rtgui_region_t *reg1, rtgui_rect_t *invRect);
-
-int rtgui_region_num_rects(rtgui_region_t *region);
-
-rtgui_rect_t *rtgui_region_rects(rtgui_region_t *region);
-
-#define RTGUI_REGION_OUT    0
-#define RTGUI_REGION_IN     1
-#define RTGUI_REGION_PART   2
-
-int rtgui_region_contains_point(rtgui_region_t *region, int x, int y, rtgui_rect_t *box);
-int rtgui_region_contains_rectangle(rtgui_region_t *rtgui_region_t, rtgui_rect_t *prect);
-
-int rtgui_region_not_empty(rtgui_region_t *region);
-rtgui_rect_t *rtgui_region_extents(rtgui_region_t *region);
-
-rtgui_region_status_t rtgui_region_append(rtgui_region_t *dest, rtgui_region_t *region);
-rtgui_region_status_t rtgui_region_validate(rtgui_region_t *badreg, int *pOverlap);
-
-void rtgui_region_reset(rtgui_region_t *region, rtgui_rect_t *rect);
-void rtgui_region_empty(rtgui_region_t *region);
-void rtgui_region_dump(rtgui_region_t *region);
-void rtgui_region_draw_clip(rtgui_region_t *region, struct rtgui_dc *dc);
-int rtgui_region_is_flat(rtgui_region_t *region);
-
-/* rect functions */
-extern rtgui_rect_t rtgui_empty_rect;
-
-void rtgui_rect_move(rtgui_rect_t *rect, int x, int y);
-void rtgui_rect_move_to_point(rtgui_rect_t *rect, int x, int y);
-void rtgui_rect_move_to_align(const rtgui_rect_t *rect, rtgui_rect_t *to, int align);
-void rtgui_rect_inflate(rtgui_rect_t *rect, int d);
-void rtgui_rect_intersect(rtgui_rect_t *src, rtgui_rect_t *dest);
-int  rtgui_rect_contains_point(const rtgui_rect_t *rect, int x, int y);
-int  rtgui_rect_is_intersect(const rtgui_rect_t *rect1, const rtgui_rect_t *rect2);
-int  rtgui_rect_is_equal(const rtgui_rect_t *rect1, const rtgui_rect_t *rect2);
-rtgui_rect_t *rtgui_rect_set(rtgui_rect_t *rect, int x, int y, int w, int h);
-rt_bool_t rtgui_rect_is_empty(const rtgui_rect_t *rect);
-void rtgui_rect_union(rtgui_rect_t *src, rtgui_rect_t *dest);
-
-rt_inline void rtgui_rect_init(rtgui_rect_t* rect, int x, int y, int width, int height)
-{
-    rect->x1 = x;
-    rect->y1 = y;
-    rect->x2 = x + width;
-    rect->y2 = y + height;
-}
-
-#define RTGUI_RECT(rect, x, y, w, h)	\
-	do { \
-	rect.x1 = x; rect.y1 = y; \
-	rect.x2 = (x) + (w); rect.y2 = (y) + (h); \
-	} while (0)
-
-#if defined(__cplusplus) || defined(c_plusplus)
-}
-#endif
-
-#endif /* _PIXMAN_H_ */

+ 0 - 187
components/gui/include/rtgui/rtgui.h

@@ -1,187 +0,0 @@
-/*
- * File      : rtgui.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-04     Bernard      first version
- */
-#ifndef __RT_GUI_H__
-#define __RT_GUI_H__
-
-#include <rtthread.h>
-#include <rtgui/rtgui_config.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define _UI_MIN(x, y)           (((x)<(y))?(x):(y))
-#define _UI_MAX(x, y)           (((x)>(y))?(x):(y))
-#define _UI_BITBYTES(bits)      ((bits + 7)/8)
-#define _UI_ABS(x)              ((x)>=0? (x):-(x))
-
-/* MDK, GCC and MSVC all support __restrict keyword. */
-#define RTGUI_RESTRICT      __restrict
-#ifdef _MSC_VER
-#define RTGUI_PURE
-#else
-/* GCC and MDK share the same attributes.
- * TODO: IAR attributes. */
-#define RTGUI_PURE __attribute__((pure))
-#endif
-
-struct rtgui_event;
-
-struct rtgui_object;
-struct rtgui_widget;
-struct rtgui_win;
-struct rtgui_font;
-
-typedef struct rtgui_win rtgui_win_t;
-typedef rt_bool_t (*rtgui_event_handler_ptr)(struct rtgui_object *object, struct rtgui_event *event);
-typedef void (*rtgui_onbutton_func_t)(struct rtgui_object *object, struct rtgui_event *event);
-
-/**
- * Coordinate point
- */
-struct rtgui_point
-{
-    rt_int16_t x, y;
-};
-typedef struct rtgui_point rtgui_point_t;
-extern rtgui_point_t rtgui_empty_point;
-
-/**
- * Rectangle structure
- */
-struct rtgui_rect
-{
-    rt_int16_t x1, y1, x2, y2;
-};
-typedef struct rtgui_rect rtgui_rect_t;
-#define rtgui_rect_width(r)     ((r).x2 - (r).x1)
-#define rtgui_rect_height(r)    ((r).y2 - (r).y1)
-
-typedef unsigned long rtgui_color_t;
-
-/**
- * Graphic context
- */
-struct rtgui_gc
-{
-    /* foreground and background color */
-    rtgui_color_t foreground, background;
-
-    /* text style */
-    rt_uint16_t textstyle;
-    /* text align */
-    rt_uint16_t textalign;
-
-    /* font */
-    struct rtgui_font *font;
-};
-typedef struct rtgui_gc rtgui_gc_t;
-
-enum RTGUI_MARGIN_STYLE
-{
-    RTGUI_MARGIN_LEFT   = 0x01,
-    RTGUI_MARGIN_RIGHT  = 0x02,
-    RTGUI_MARGIN_TOP    = 0x04,
-    RTGUI_MARGIN_BOTTOM = 0x08,
-    RTGUI_MARGIN_ALL = RTGUI_MARGIN_LEFT | RTGUI_MARGIN_RIGHT | RTGUI_MARGIN_TOP | RTGUI_MARGIN_BOTTOM
-};
-
-/**
- * Border style
- */
-enum RTGUI_BORDER_STYLE
-{
-    RTGUI_BORDER_NONE = 0,
-    RTGUI_BORDER_SIMPLE,
-    RTGUI_BORDER_RAISE,
-    RTGUI_BORDER_SUNKEN,
-    RTGUI_BORDER_BOX,
-    RTGUI_BORDER_STATIC,
-    RTGUI_BORDER_EXTRA,
-    RTGUI_BORDER_UP,
-    RTGUI_BORDER_DOWN
-};
-#define RTGUI_BORDER_DEFAULT_WIDTH  2
-#define RTGUI_WIDGET_DEFAULT_MARGIN 3
-
-/**
- * Blend mode
- */
-enum RTGUI_BLENDMODE
-{
-    RTGUI_BLENDMODE_NONE = 0x00,
-    RTGUI_BLENDMODE_BLEND,
-    RTGUI_BLENDMODE_ADD,
-    RTGUI_BLENDMODE_MOD,
-};
-
-/**
- * Orientation
- */
-enum RTGUI_ORIENTATION
-{
-    RTGUI_HORIZONTAL        = 0x01,
-    RTGUI_VERTICAL          = 0x02,
-    RTGUI_ORIENTATION_BOTH  = RTGUI_HORIZONTAL | RTGUI_VERTICAL
-};
-
-enum RTGUI_ALIGN
-{
-    RTGUI_ALIGN_NOT                 = 0x00,
-    RTGUI_ALIGN_CENTER_HORIZONTAL   = 0x01,
-    RTGUI_ALIGN_LEFT                = RTGUI_ALIGN_NOT,
-    RTGUI_ALIGN_TOP                 = RTGUI_ALIGN_NOT,
-    RTGUI_ALIGN_RIGHT               = 0x02,
-    RTGUI_ALIGN_BOTTOM              = 0x04,
-    RTGUI_ALIGN_CENTER_VERTICAL     = 0x08,
-    RTGUI_ALIGN_CENTER              = RTGUI_ALIGN_CENTER_HORIZONTAL | RTGUI_ALIGN_CENTER_VERTICAL,
-    RTGUI_ALIGN_EXPAND              = 0x10,
-    RTGUI_ALIGN_STRETCH             = 0x20,
-    RTGUI_ALIGN_TTF_SIZE			= 0x40,
-};
-
-enum RTGUI_TEXTSTYLE
-{
-    RTGUI_TEXTSTYLE_NORMAL          = 0x00,
-    RTGUI_TEXTSTYLE_DRAW_BACKGROUND = 0x01,
-    RTGUI_TEXTSTYLE_SHADOW          = 0x02,
-    RTGUI_TEXTSTYLE_OUTLINE         = 0x04,
-};
-
-enum RTGUI_MODAL_CODE
-{
-    RTGUI_MODAL_OK,
-    RTGUI_MODAL_CANCEL,
-    RTGUI_MODAL_MAX = 0xFFFF,
-};
-typedef enum RTGUI_MODAL_CODE rtgui_modal_code_t;
-
-#include <rtgui/rtgui_object.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-

+ 0 - 128
components/gui/include/rtgui/rtgui_app.h

@@ -1,128 +0,0 @@
-/*
- * File      : rtgui_app.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2012-01-13     Grissiom     first version
- */
-
-#ifndef __RTGUI_APP_H__
-#define __RTGUI_APP_H__
-
-#include <rtthread.h>
-#include <rtgui/rtgui.h>
-#include <rtgui/event.h>
-#include <rtgui/rtgui_system.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-DECLARE_CLASS_TYPE(application);
-
-/** Gets the type of a application */
-#define RTGUI_APP_TYPE       (RTGUI_TYPE(application))
-/** Casts the object to an rtgui_workbench */
-#define RTGUI_APP(obj)       (RTGUI_OBJECT_CAST((obj), RTGUI_APP_TYPE, struct rtgui_app))
-/** Checks if the object is an rtgui_workbench */
-#define RTGUI_IS_APP(obj)    (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_APP_TYPE))
-
-enum rtgui_app_flag
-{
-    RTGUI_APP_FLAG_EXITED  = 0x04,
-    RTGUI_APP_FLAG_SHOWN   = 0x08,
-    RTGUI_APP_FLAG_KEEP    = 0x80,
-};
-
-typedef void (*rtgui_idle_func_t)(struct rtgui_object *obj, struct rtgui_event *event);
-
-struct rtgui_app
-{
-    struct rtgui_object parent;
-
-    /* application name */
-    unsigned char *name;
-    struct rtgui_image *icon;
-
-    enum rtgui_app_flag state_flag;
-
-    rt_uint16_t ref_count;
-    rt_uint16_t exit_code;
-
-    /* the thread id */
-    rt_thread_t tid;
-    /* the message queue of thread */
-    rt_mq_t mq;
-    /* event buffer */
-    rt_uint8_t event_buffer[sizeof(union rtgui_event_generic)];
-
-    /* if not RT_NULL, the main_object is the one will be activated when the
-     * app recieves activate event. By default, it is the first window shown in
-     * the app. */
-    struct rtgui_object *main_object;
-
-    /* on idle event handler */
-    rtgui_idle_func_t on_idle;
-
-    unsigned int window_cnt;
-    /* window activate count */
-    unsigned int win_acti_cnt;
-
-    void *user_data;
-};
-
-/**
- * create an application named @myname on current thread.
- *
- * @param name the name of the application
- *
- * @return a pointer to struct rtgui_app on success. RT_NULL on failure.
- */
-struct rtgui_app *rtgui_app_create(const char *name);
-void rtgui_app_destroy(struct rtgui_app *app);
-rt_bool_t rtgui_app_event_handler(struct rtgui_object *obj, rtgui_event_t *event);
-
-rt_base_t rtgui_app_run(struct rtgui_app *app);
-void rtgui_app_exit(struct rtgui_app *app, rt_uint16_t code);
-void rtgui_app_activate(struct rtgui_app *app);
-void rtgui_app_close(struct rtgui_app *app);
-void rtgui_app_sleep(struct rtgui_app *app, int millisecond);
-
-void rtgui_app_set_onidle(struct rtgui_app *app, rtgui_idle_func_t onidle);
-rtgui_idle_func_t rtgui_app_get_onidle(struct rtgui_app *app);
-
-/**
- * return the rtgui_app struct on current thread
- */
-struct rtgui_app *rtgui_app_self(void);
-
-rt_err_t rtgui_app_set_as_wm(struct rtgui_app *app);
-
-void rtgui_app_set_main_win(struct rtgui_app *app, struct rtgui_win *win);
-struct rtgui_win* rtgui_app_get_main_win(struct rtgui_app *app);
-
-/* get the topwin belong app window activate count */
-unsigned int rtgui_app_get_win_acti_cnt(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* end of include guard: __RTGUI_APP_H__ */
-

+ 0 - 81
components/gui/include/rtgui/rtgui_config.h

@@ -1,81 +0,0 @@
-/*
- * File      : rtgui_config.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-16     Bernard      first version
- * 2010-02-08     Bernard      move some RTGUI options to bsp
- */
-
-#ifndef __RTGUI_CONFIG_H__
-#define __RTGUI_CONFIG_H__
-
-/* RTGUI options */
-
-#ifndef RT_USING_DFS
-#undef RTGUI_USING_DFS_FILERW
-#undef RTGUI_USING_HZ_FILE
-#endif
-
-#ifdef RT_USING_DFS
-/* if file system is used, the DFS_FILERW will be defined */
-#ifndef RTGUI_USING_DFS_FILERW
-#define RTGUI_USING_DFS_FILERW
-#endif
-#endif
-
-#if RTGUI_DEFAULT_FONT_SIZE == 0
-#define RTGUI_DEFAULT_FONT_SIZE 12
-#endif
-
-#define RTGUI_SVR_THREAD_PRIORITY       15
-#define RTGUI_SVR_THREAD_TIMESLICE      5
-#ifndef RTGUI_SVR_THREAD_STACK_SIZE
-#ifdef RTGUI_USING_SMALL_SIZE
-#define RTGUI_SVR_THREAD_STACK_SIZE     1024
-#else
-#define RTGUI_SVR_THREAD_STACK_SIZE     2048
-#endif
-#endif
-
-#define RTGUI_APP_THREAD_PRIORITY       25
-#define RTGUI_APP_THREAD_TIMESLICE      5
-#ifdef RTGUI_USING_SMALL_SIZE
-#define RTGUI_APP_THREAD_STACK_SIZE     1024
-#else
-#define RTGUI_APP_THREAD_STACK_SIZE     2048
-#endif
-
-// #define RTGUI_USING_CAST_CHECK
-
-// #define RTGUI_USING_DESKTOP_WINDOW
-// #undef RTGUI_USING_SMALL_SIZE
-
-//#define RTGUI_USING_CALIBRATION
-
-#define RTGUI_USING_VFRAMEBUFFER
-
-#ifdef DEBUG_MEMLEAK
-#define rtgui_malloc     rt_malloc
-#define rtgui_realloc    rt_realloc
-#define rtgui_free       rt_free
-#endif
-
-#endif
-

+ 0 - 177
components/gui/include/rtgui/rtgui_object.h

@@ -1,177 +0,0 @@
-/*
- * File      : rtgui_object.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-04     Bernard      first version
- */
-#ifndef __RTGUI_OBJECT_H__
-#define __RTGUI_OBJECT_H__
-
-
-#include <rtthread.h>
-#include <rtgui/rtgui.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* rtgui object type */
-#define RTGUI_CONTAINER_OF(obj, type, member)   \
-	((type *)((char *)(obj) - (unsigned long)(&((type *)0)->member)))
-
-/** Casts the function pointer to an rtgui_constructor */
-#define RTGUI_CONSTRUCTOR(constructor)                ((rtgui_constructor_t)(constructor))
-/** Casts the function pointer to an rtgui_constructor */
-#define RTGUI_DESTRUCTOR(destructor)                  ((rtgui_destructor_t)(destructor))
-
-/* pre-definition */
-struct rtgui_object;
-struct rtgui_app;
-
-typedef struct rtgui_object rtgui_object_t;
-typedef void (*rtgui_constructor_t)(rtgui_object_t *object);
-typedef void (*rtgui_destructor_t)(rtgui_object_t *object);
-
-/* rtgui type structure */
-struct rtgui_type
-{
-    /* type name */
-    char *name;
-
-    /* parent type link */
-    const struct rtgui_type *parent;
-
-    /* constructor and destructor */
-    rtgui_constructor_t constructor;
-    rtgui_destructor_t destructor;
-
-    /* size of type */
-    int size;
-};
-typedef struct rtgui_type rtgui_type_t;
-#define RTGUI_TYPE(type)            (_rtgui_##type##_get_type())
-#define RTGUI_PARENT_TYPE(type)		(const struct rtgui_type*)(&_rtgui_##type)
-
-#define DECLARE_CLASS_TYPE(type)    \
-	const rtgui_type_t *_rtgui_##type##_get_type(void); \
-	extern const struct rtgui_type _rtgui_##type
-
-#define DEFINE_CLASS_TYPE(type, name, parent, constructor, destructor, size) \
-	const struct rtgui_type _rtgui_##type = { \
-	name, \
-	parent, \
-	RTGUI_CONSTRUCTOR(constructor), \
-	RTGUI_DESTRUCTOR(destructor), \
-	size }; \
-	const rtgui_type_t *_rtgui_##type##_get_type(void) { return &_rtgui_##type; } \
-	RTM_EXPORT(_rtgui_##type##_get_type)
-
-void          rtgui_type_object_construct(const rtgui_type_t *type, rtgui_object_t *object);
-void          rtgui_type_destructors_call(const rtgui_type_t *type, rtgui_object_t *object);
-rt_bool_t     rtgui_type_inherits_from(const rtgui_type_t *type, const rtgui_type_t *parent);
-const rtgui_type_t  *rtgui_type_parent_type_get(const rtgui_type_t *type);
-const char    *rtgui_type_name_get(const rtgui_type_t *type);
-const rtgui_type_t *rtgui_object_object_type_get(rtgui_object_t *object);
-
-#ifdef RTGUI_USING_CAST_CHECK
-#define RTGUI_OBJECT_CAST(obj, obj_type, c_type) \
-	 	((c_type *)rtgui_object_check_cast((rtgui_object_t *)(obj), (obj_type), __FUNCTION__, __LINE__))
-#else
-#define RTGUI_OBJECT_CAST(obj, obj_type, c_type)     ((c_type *)(obj))
-#endif
-
-#define RTGUI_OBJECT_CHECK_TYPE(_obj, _type) \
-	(rtgui_type_inherits_from(((rtgui_object_t *)(_obj))->type, (_type)))
-
-DECLARE_CLASS_TYPE(object);
-/** Gets the type of an object */
-#define RTGUI_OBJECT_TYPE       RTGUI_TYPE(object)
-/** Casts the object to an rtgui_object_t */
-#define RTGUI_OBJECT(obj)       (RTGUI_OBJECT_CAST((obj), RTGUI_OBJECT_TYPE, struct rtgui_object))
-/** Checks if the object is an rtgui_Object */
-#define RTGUI_IS_OBJECT(obj)    (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_OBJECT_TYPE))
-
-enum rtgui_object_flag
-{
-    RTGUI_OBJECT_FLAG_NONE     = 0x0000,
-    RTGUI_OBJECT_FLAG_STATIC   = 0x0001,
-    RTGUI_OBJECT_FLAG_DISABLED = 0x0002,
-    /* When an object is created, it's flag is set to valid. When an object is
-     * deleted, the valid bits will be cleared. */
-    RTGUI_OBJECT_FLAG_VALID    = 0xAB00,
-};
-
-/* rtgui base object */
-struct rtgui_object
-{
-    /* object type */
-    const rtgui_type_t *type;
-
-    /* the event handler */
-    rtgui_event_handler_ptr event_handler;
-
-    enum rtgui_object_flag flag;
-
-    rt_uint32_t id;
-};
-
-rtgui_object_t *rtgui_object_create(const rtgui_type_t *object_type);
-void rtgui_object_destroy(rtgui_object_t *object);
-
-/* set the event handler of object */
-void rtgui_object_set_event_handler(struct rtgui_object *object, rtgui_event_handler_ptr handler);
-/* object default event handler */
-rt_bool_t rtgui_object_event_handler(struct rtgui_object *object, struct rtgui_event *event);
-/* helper micro. widget event handlers could use this. */
-#define RTGUI_WIDGET_EVENT_HANDLER_PREPARE \
-	struct rtgui_widget *widget;  \
-	RT_ASSERT(object != RT_NULL); \
-	RT_ASSERT(event != RT_NULL);  \
-	widget = RTGUI_WIDGET(object); \
-	/* supress compiler warning */ \
-	widget = widget;
-
-/** handle @param event on @param object's own event handler
- *
- * If the @param object does not have an event handler, which means the object
- * does not interested in any event, it will return RT_FALSE. Otherwise, the
- * return code of that handler is returned.
- */
-rt_inline rt_bool_t rtgui_object_handle(struct rtgui_object *object, struct rtgui_event *event)
-{
-    if (object->event_handler)
-        return object->event_handler(object, event);
-    return RT_FALSE;
-}
-
-rtgui_object_t *rtgui_object_check_cast(rtgui_object_t *object, const rtgui_type_t *type, const char *func, int line);
-const rtgui_type_t *rtgui_object_object_type_get(rtgui_object_t *object);
-
-void rtgui_object_set_id(struct rtgui_object *obj, rt_uint32_t id);
-rt_uint32_t rtgui_object_get_id(struct rtgui_object *obj);
-struct rtgui_object* rtgui_get_object(struct rtgui_app *app, rt_uint32_t id);
-struct rtgui_object* rtgui_get_self_object(rt_uint32_t id);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-

+ 0 - 96
components/gui/include/rtgui/rtgui_server.h

@@ -1,96 +0,0 @@
-/*
- * File      : rtgui_server.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-04     Bernard      first version
- */
-#ifndef __RTGUI_SERVER_H__
-#define __RTGUI_SERVER_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtservice.h>
-#include <rtgui/list.h>
-
-/* RTGUI server definitions */
-
-/* top window definitions in server */
-enum rtgui_topwin_flag
-{
-    WINTITLE_INIT       =  0x00,
-    WINTITLE_ACTIVATE   =  0x01,
-    WINTITLE_NOFOCUS    =  0x02,
-    /* window is hidden by default */
-    WINTITLE_SHOWN      =  0x04,
-    /* window is modaled by other window */
-    WINTITLE_MODALED    =  0x08,
-    /* window is modaling other window */
-    WINTITLE_MODALING   = 0x100,
-    WINTITLE_ONTOP      = 0x200,
-    WINTITLE_ONBTM      = 0x400,
-};
-
-struct rtgui_topwin
-{
-    /* the window flag */
-    enum rtgui_topwin_flag flag;
-    /* event mask */
-    rt_uint32_t mask;
-
-    struct rtgui_wintitle *title;
-
-    /* the window id */
-    struct rtgui_win *wid;
-
-    /* which app I belong */
-    struct rtgui_app *app;
-
-    /* the extent information */
-    rtgui_rect_t extent;
-
-    struct rtgui_topwin *parent;
-
-    /* we need to iterate the topwin list with usual order(get target window)
-     * or reversely(painting). So it's better to use a double linked list */
-    rt_list_t list;
-    rt_list_t child_list;
-
-    /* the monitor rect list */
-    rtgui_list_t monitor_list;
-};
-
-/* top win manager init */
-void rtgui_topwin_init(void);
-void rtgui_server_init(void);
-
-void rtgui_server_install_show_win_hook(void (*hk)(void));
-void rtgui_server_install_act_win_hook(void (*hk)(void));
-
-/* post an event to server */
-rt_err_t rtgui_server_post_event(struct rtgui_event *event, rt_size_t size);
-rt_err_t rtgui_server_post_event_sync(struct rtgui_event *event, rt_size_t size);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif

+ 0 - 108
components/gui/include/rtgui/rtgui_system.h

@@ -1,108 +0,0 @@
-/*
- * File      : rtgui_system.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-04     Bernard      first version
- */
-#ifndef __RTGUI_SYSTEM_H__
-#define __RTGUI_SYSTEM_H__
-
-#include <rtthread.h>
-#include <rtgui/rtgui.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rtgui_dc;
-struct rtgui_event;
-struct rtgui_widget;
-
-struct rtgui_timer;
-typedef void (*rtgui_timeout_func)(struct rtgui_timer *timer, void *parameter);
-
-enum rtgui_timer_state
-{
-    RTGUI_TIMER_ST_INIT,
-    RTGUI_TIMER_ST_RUNNING,
-    RTGUI_TIMER_ST_DESTROY_PENDING,
-};
-
-struct rtgui_timer
-{
-    /* the rtgui application it runs on */
-    struct rtgui_app* app;
-    /* rt timer */
-    struct rt_timer timer;
-    /* How many events are pending on the queue. */
-    int pending_cnt;
-    enum rtgui_timer_state state;
-
-    /* timeout function and user data */
-    rtgui_timeout_func timeout;
-    void *user_data;
-};
-typedef struct rtgui_timer rtgui_timer_t;
-
-rtgui_timer_t *rtgui_timer_create(rt_int32_t time, rt_base_t flag, rtgui_timeout_func timeout, void *parameter);
-void rtgui_timer_destory(rtgui_timer_t *timer);
-
-void rtgui_timer_set_timeout(rtgui_timer_t *timer, rt_int32_t time);
-void rtgui_timer_start(rtgui_timer_t *timer);
-void rtgui_timer_stop(rtgui_timer_t *timer);
-
-/* rtgui system initialization function */
-int rtgui_system_server_init(void);
-
-void *rtgui_malloc(rt_size_t size);
-void rtgui_free(void *ptr);
-void *rtgui_realloc(void *ptr, rt_size_t size);
-
-#ifdef _WIN32_NATIVE
-#define rtgui_enter_critical()
-#define rtgui_exit_critical()
-#else
-#define rtgui_enter_critical    rt_enter_critical
-#define rtgui_exit_critical     rt_exit_critical
-#endif
-
-struct rtgui_app* rtgui_get_server(void);
-void rtgui_set_mainwin_rect(struct rtgui_rect *rect);
-void rtgui_get_mainwin_rect(struct rtgui_rect *rect);
-void rtgui_get_screen_rect(struct rtgui_rect *rect);
-
-void rtgui_screen_lock(rt_int32_t timeout);
-void rtgui_screen_unlock(void);
-int rtgui_screen_lock_freeze(void);
-void rtgui_screen_lock_thaw(int value);
-
-struct rtgui_event;
-rt_err_t rtgui_send(struct rtgui_app* app, struct rtgui_event *event, rt_size_t event_size);
-rt_err_t rtgui_send_urgent(struct rtgui_app* app, struct rtgui_event *event, rt_size_t event_size);
-rt_err_t rtgui_send_sync(struct rtgui_app* app, struct rtgui_event *event, rt_size_t event_size);
-rt_err_t rtgui_ack(struct rtgui_event *event, rt_int32_t status);
-rt_err_t rtgui_recv(struct rtgui_event *event, rt_size_t event_size, rt_int32_t timeout);
-rt_err_t rtgui_recv_filter(rt_uint32_t type, struct rtgui_event *event, rt_size_t event_size);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif

+ 0 - 748
components/gui/include/rtgui/tree.h

@@ -1,748 +0,0 @@
-/*  $NetBSD: tree.h,v 1.8 2004/03/28 19:38:30 provos Exp $  */
-/*  $OpenBSD: tree.h,v 1.7 2002/10/17 21:51:54 art Exp $    */
-/* $FreeBSD$ */
-
-/*-
- * Copyright 2002 Niels Provos <provos@citi.umich.edu>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _SYS_TREE_H_
-#define _SYS_TREE_H_
-
-#ifndef NULL
-#define NULL RT_NULL
-#endif
-// #include <sys/cdefs.h>
-
-/*
- * This file defines data structures for different types of trees:
- * splay trees and red-black trees.
- *
- * A splay tree is a self-organizing data structure.  Every operation
- * on the tree causes a splay to happen.  The splay moves the requested
- * node to the root of the tree and partly rebalances it.
- *
- * This has the benefit that request locality causes faster lookups as
- * the requested nodes move to the top of the tree.  On the other hand,
- * every lookup causes memory writes.
- *
- * The Balance Theorem bounds the total access time for m operations
- * and n inserts on an initially empty tree as O((m + n)lg n).  The
- * amortized cost for a sequence of m accesses to a splay tree is O(lg n);
- *
- * A red-black tree is a binary search tree with the node color as an
- * extra attribute.  It fulfills a set of conditions:
- *  - every search path from the root to a leaf consists of the
- *    same number of black nodes,
- *  - each red node (except for the root) has a black parent,
- *  - each leaf node is black.
- *
- * Every operation on a red-black tree is bounded as O(lg n).
- * The maximum height of a red-black tree is 2lg (n+1).
- */
-
-#define SPLAY_HEAD(name, type)                      \
-struct name {                               \
-    struct type *sph_root; /* root of the tree */           \
-}
-
-#define SPLAY_INITIALIZER(root)                     \
-    { NULL }
-
-#define SPLAY_INIT(root) do {                       \
-    (root)->sph_root = NULL;                    \
-} while (/*CONSTCOND*/ 0)
-
-#define SPLAY_ENTRY(type)                       \
-struct {                                \
-    struct type *spe_left; /* left element */           \
-    struct type *spe_right; /* right element */         \
-}
-
-#define SPLAY_LEFT(elm, field)      (elm)->field.spe_left
-#define SPLAY_RIGHT(elm, field)     (elm)->field.spe_right
-#define SPLAY_ROOT(head)        (head)->sph_root
-#define SPLAY_EMPTY(head)       (SPLAY_ROOT(head) == NULL)
-
-/* SPLAY_ROTATE_{LEFT,RIGHT} expect that tmp hold SPLAY_{RIGHT,LEFT} */
-#define SPLAY_ROTATE_RIGHT(head, tmp, field) do {           \
-    SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(tmp, field);  \
-    SPLAY_RIGHT(tmp, field) = (head)->sph_root;         \
-    (head)->sph_root = tmp;                     \
-} while (/*CONSTCOND*/ 0)
-
-#define SPLAY_ROTATE_LEFT(head, tmp, field) do {            \
-    SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(tmp, field);  \
-    SPLAY_LEFT(tmp, field) = (head)->sph_root;          \
-    (head)->sph_root = tmp;                     \
-} while (/*CONSTCOND*/ 0)
-
-#define SPLAY_LINKLEFT(head, tmp, field) do {               \
-    SPLAY_LEFT(tmp, field) = (head)->sph_root;          \
-    tmp = (head)->sph_root;                     \
-    (head)->sph_root = SPLAY_LEFT((head)->sph_root, field);     \
-} while (/*CONSTCOND*/ 0)
-
-#define SPLAY_LINKRIGHT(head, tmp, field) do {              \
-    SPLAY_RIGHT(tmp, field) = (head)->sph_root;         \
-    tmp = (head)->sph_root;                     \
-    (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field);    \
-} while (/*CONSTCOND*/ 0)
-
-#define SPLAY_ASSEMBLE(head, node, left, right, field) do {     \
-    SPLAY_RIGHT(left, field) = SPLAY_LEFT((head)->sph_root, field); \
-    SPLAY_LEFT(right, field) = SPLAY_RIGHT((head)->sph_root, field);\
-    SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(node, field); \
-    SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(node, field); \
-} while (/*CONSTCOND*/ 0)
-
-/* Generates prototypes and inline functions */
-
-#define SPLAY_PROTOTYPE(name, type, field, cmp)             \
-void name##_SPLAY(struct name *, struct type *);            \
-void name##_SPLAY_MINMAX(struct name *, int);               \
-struct type *name##_SPLAY_INSERT(struct name *, struct type *);     \
-struct type *name##_SPLAY_REMOVE(struct name *, struct type *);     \
-                                    \
-/* Finds the node with the same key as elm */               \
-rt_inline struct type *                     \
-name##_SPLAY_FIND(struct name *head, struct type *elm)          \
-{                                   \
-    if (SPLAY_EMPTY(head))                      \
-        return(NULL);                       \
-    name##_SPLAY(head, elm);                    \
-    if ((cmp)(elm, (head)->sph_root) == 0)              \
-        return (head->sph_root);                \
-    return (NULL);                          \
-}                                   \
-                                    \
-rt_inline struct type *                     \
-name##_SPLAY_NEXT(struct name *head, struct type *elm)          \
-{                                   \
-    name##_SPLAY(head, elm);                    \
-    if (SPLAY_RIGHT(elm, field) != NULL) {              \
-        elm = SPLAY_RIGHT(elm, field);              \
-        while (SPLAY_LEFT(elm, field) != NULL) {        \
-            elm = SPLAY_LEFT(elm, field);           \
-        }                           \
-    } else                              \
-        elm = NULL;                     \
-    return (elm);                           \
-}                                   \
-                                    \
-rt_inline struct type *                     \
-name##_SPLAY_MIN_MAX(struct name *head, int val)            \
-{                                   \
-    name##_SPLAY_MINMAX(head, val);                 \
-        return (SPLAY_ROOT(head));                  \
-}
-
-/* Main splay operation.
- * Moves node close to the key of elm to top
- */
-#define SPLAY_GENERATE(name, type, field, cmp)              \
-struct type *                               \
-name##_SPLAY_INSERT(struct name *head, struct type *elm)        \
-{                                   \
-    if (SPLAY_EMPTY(head)) {                        \
-        SPLAY_LEFT(elm, field) = SPLAY_RIGHT(elm, field) = NULL;    \
-    } else {                                \
-        int __comp;                         \
-        name##_SPLAY(head, elm);                    \
-        __comp = (cmp)(elm, (head)->sph_root);          \
-        if(__comp < 0) {                        \
-            SPLAY_LEFT(elm, field) = SPLAY_LEFT((head)->sph_root, field);\
-            SPLAY_RIGHT(elm, field) = (head)->sph_root;     \
-            SPLAY_LEFT((head)->sph_root, field) = NULL;     \
-        } else if (__comp > 0) {                    \
-            SPLAY_RIGHT(elm, field) = SPLAY_RIGHT((head)->sph_root, field);\
-            SPLAY_LEFT(elm, field) = (head)->sph_root;      \
-            SPLAY_RIGHT((head)->sph_root, field) = NULL;    \
-        } else                          \
-            return ((head)->sph_root);              \
-    }                                   \
-    (head)->sph_root = (elm);                       \
-    return (NULL);                          \
-}                                   \
-                                    \
-struct type *                               \
-name##_SPLAY_REMOVE(struct name *head, struct type *elm)        \
-{                                   \
-    struct type *__tmp;                     \
-    if (SPLAY_EMPTY(head))                      \
-        return (NULL);                      \
-    name##_SPLAY(head, elm);                    \
-    if ((cmp)(elm, (head)->sph_root) == 0) {            \
-        if (SPLAY_LEFT((head)->sph_root, field) == NULL) {  \
-            (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field);\
-        } else {                        \
-            __tmp = SPLAY_RIGHT((head)->sph_root, field);   \
-            (head)->sph_root = SPLAY_LEFT((head)->sph_root, field);\
-            name##_SPLAY(head, elm);            \
-            SPLAY_RIGHT((head)->sph_root, field) = __tmp;   \
-        }                           \
-        return (elm);                       \
-    }                               \
-    return (NULL);                          \
-}                                   \
-                                    \
-void                                    \
-name##_SPLAY(struct name *head, struct type *elm)           \
-{                                   \
-    struct type __node, *__left, *__right, *__tmp;          \
-    int __comp;                         \
-\
-    SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\
-    __left = __right = &__node;                 \
-\
-    while ((__comp = (cmp)(elm, (head)->sph_root)) != 0) {      \
-        if (__comp < 0) {                   \
-            __tmp = SPLAY_LEFT((head)->sph_root, field);    \
-            if (__tmp == NULL)              \
-                break;                  \
-            if ((cmp)(elm, __tmp) < 0){         \
-                SPLAY_ROTATE_RIGHT(head, __tmp, field); \
-                if (SPLAY_LEFT((head)->sph_root, field) == NULL)\
-                    break;              \
-            }                       \
-            SPLAY_LINKLEFT(head, __right, field);       \
-        } else if (__comp > 0) {                \
-            __tmp = SPLAY_RIGHT((head)->sph_root, field);   \
-            if (__tmp == NULL)              \
-                break;                  \
-            if ((cmp)(elm, __tmp) > 0){         \
-                SPLAY_ROTATE_LEFT(head, __tmp, field);  \
-                if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\
-                    break;              \
-            }                       \
-            SPLAY_LINKRIGHT(head, __left, field);       \
-        }                           \
-    }                               \
-    SPLAY_ASSEMBLE(head, &__node, __left, __right, field);      \
-}                                   \
-                                    \
-/* Splay with either the minimum or the maximum element         \
- * Used to find minimum or maximum element in tree.         \
- */                                 \
-void name##_SPLAY_MINMAX(struct name *head, int __comp) \
-{                                   \
-    struct type __node, *__left, *__right, *__tmp;          \
-\
-    SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\
-    __left = __right = &__node;                 \
-\
-    while (1) {                         \
-        if (__comp < 0) {                   \
-            __tmp = SPLAY_LEFT((head)->sph_root, field);    \
-            if (__tmp == NULL)              \
-                break;                  \
-            if (__comp < 0){                \
-                SPLAY_ROTATE_RIGHT(head, __tmp, field); \
-                if (SPLAY_LEFT((head)->sph_root, field) == NULL)\
-                    break;              \
-            }                       \
-            SPLAY_LINKLEFT(head, __right, field);       \
-        } else if (__comp > 0) {                \
-            __tmp = SPLAY_RIGHT((head)->sph_root, field);   \
-            if (__tmp == NULL)              \
-                break;                  \
-            if (__comp > 0) {               \
-                SPLAY_ROTATE_LEFT(head, __tmp, field);  \
-                if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\
-                    break;              \
-            }                       \
-            SPLAY_LINKRIGHT(head, __left, field);       \
-        }                           \
-    }                               \
-    SPLAY_ASSEMBLE(head, &__node, __left, __right, field);      \
-}
-
-#define SPLAY_NEGINF    -1
-#define SPLAY_INF   1
-
-#define SPLAY_INSERT(name, x, y)    name##_SPLAY_INSERT(x, y)
-#define SPLAY_REMOVE(name, x, y)    name##_SPLAY_REMOVE(x, y)
-#define SPLAY_FIND(name, x, y)      name##_SPLAY_FIND(x, y)
-#define SPLAY_NEXT(name, x, y)      name##_SPLAY_NEXT(x, y)
-#define SPLAY_MIN(name, x)      (SPLAY_EMPTY(x) ? NULL  \
-                    : name##_SPLAY_MIN_MAX(x, SPLAY_NEGINF))
-#define SPLAY_MAX(name, x)      (SPLAY_EMPTY(x) ? NULL  \
-                    : name##_SPLAY_MIN_MAX(x, SPLAY_INF))
-
-#define SPLAY_FOREACH(x, name, head)                    \
-    for ((x) = SPLAY_MIN(name, head);               \
-         (x) != NULL;                       \
-         (x) = SPLAY_NEXT(name, head, x))
-
-/* Macros that define a red-black tree */
-#define RB_HEAD(name, type)                     \
-struct name {                               \
-    struct type *rbh_root; /* root of the tree */           \
-}
-
-#define RB_INITIALIZER(root)                        \
-    { NULL }
-
-#define RB_INIT(root) do {                      \
-    (root)->rbh_root = NULL;                    \
-} while (/*CONSTCOND*/ 0)
-
-#define RB_BLACK    0
-#define RB_RED      1
-#define RB_ENTRY(type)                          \
-struct {                                \
-    struct type *rbe_left;      /* left element */      \
-    struct type *rbe_right;     /* right element */     \
-    struct type *rbe_parent;    /* parent element */        \
-    int rbe_color;          /* node color */        \
-}
-
-#define RB_LEFT(elm, field)     (elm)->field.rbe_left
-#define RB_RIGHT(elm, field)        (elm)->field.rbe_right
-#define RB_PARENT(elm, field)       (elm)->field.rbe_parent
-#define RB_COLOR(elm, field)        (elm)->field.rbe_color
-#define RB_ROOT(head)           (head)->rbh_root
-#define RB_EMPTY(head)          (RB_ROOT(head) == NULL)
-
-#define RB_SET(elm, parent, field) do {                 \
-    RB_PARENT(elm, field) = parent;                 \
-    RB_LEFT(elm, field) = RB_RIGHT(elm, field) = NULL;      \
-    RB_COLOR(elm, field) = RB_RED;                  \
-} while (/*CONSTCOND*/ 0)
-
-#define RB_SET_BLACKRED(black, red, field) do {             \
-    RB_COLOR(black, field) = RB_BLACK;              \
-    RB_COLOR(red, field) = RB_RED;                  \
-} while (/*CONSTCOND*/ 0)
-
-#ifndef RB_AUGMENT
-#define RB_AUGMENT(x)   do {} while (0)
-#endif
-
-#define RB_ROTATE_LEFT(head, elm, tmp, field) do {          \
-    (tmp) = RB_RIGHT(elm, field);                   \
-    if ((RB_RIGHT(elm, field) = RB_LEFT(tmp, field)) != NULL) { \
-        RB_PARENT(RB_LEFT(tmp, field), field) = (elm);      \
-    }                               \
-    RB_AUGMENT(elm);                        \
-    if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) {  \
-        if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \
-            RB_LEFT(RB_PARENT(elm, field), field) = (tmp);  \
-        else                            \
-            RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \
-    } else                              \
-        (head)->rbh_root = (tmp);               \
-    RB_LEFT(tmp, field) = (elm);                    \
-    RB_PARENT(elm, field) = (tmp);                  \
-    RB_AUGMENT(tmp);                        \
-    if ((RB_PARENT(tmp, field)))                    \
-        RB_AUGMENT(RB_PARENT(tmp, field));          \
-} while (/*CONSTCOND*/ 0)
-
-#define RB_ROTATE_RIGHT(head, elm, tmp, field) do {         \
-    (tmp) = RB_LEFT(elm, field);                    \
-    if ((RB_LEFT(elm, field) = RB_RIGHT(tmp, field)) != NULL) { \
-        RB_PARENT(RB_RIGHT(tmp, field), field) = (elm);     \
-    }                               \
-    RB_AUGMENT(elm);                        \
-    if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) {  \
-        if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \
-            RB_LEFT(RB_PARENT(elm, field), field) = (tmp);  \
-        else                            \
-            RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \
-    } else                              \
-        (head)->rbh_root = (tmp);               \
-    RB_RIGHT(tmp, field) = (elm);                   \
-    RB_PARENT(elm, field) = (tmp);                  \
-    RB_AUGMENT(tmp);                        \
-    if ((RB_PARENT(tmp, field)))                    \
-        RB_AUGMENT(RB_PARENT(tmp, field));          \
-} while (/*CONSTCOND*/ 0)
-
-/* Generates prototypes and inline functions */
-#define RB_PROTOTYPE(name, type, field, cmp)                \
-    RB_PROTOTYPE_INTERNAL(name, type, field, cmp,)
-#define RB_PROTOTYPE_STATIC(name, type, field, cmp)         \
-    RB_PROTOTYPE_INTERNAL(name, type, field, cmp, __unused static)
-#define RB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr)     \
-attr void name##_RB_INSERT_COLOR(struct name *, struct type *);     \
-attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *);\
-attr struct type *name##_RB_REMOVE(struct name *, struct type *);   \
-attr struct type *name##_RB_INSERT(struct name *, struct type *);   \
-attr struct type *name##_RB_FIND(struct name *, struct type *);     \
-attr struct type *name##_RB_NFIND(struct name *, struct type *);    \
-attr struct type *name##_RB_NEXT(struct type *);            \
-attr struct type *name##_RB_PREV(struct type *);            \
-attr struct type *name##_RB_MINMAX(struct name *, int);         \
-                                    \
- 
-/* Main rb operation.
- * Moves node close to the key of elm to top
- */
-#define RB_GENERATE(name, type, field, cmp)             \
-    RB_GENERATE_INTERNAL(name, type, field, cmp,)
-#define RB_GENERATE_STATIC(name, type, field, cmp)          \
-    RB_GENERATE_INTERNAL(name, type, field, cmp, __unused static)
-#define RB_GENERATE_INTERNAL(name, type, field, cmp, attr)      \
-attr void                               \
-name##_RB_INSERT_COLOR(struct name *head, struct type *elm)     \
-{                                   \
-    struct type *parent, *gparent, *tmp;                \
-    while ((parent = RB_PARENT(elm, field)) != NULL &&      \
-        RB_COLOR(parent, field) == RB_RED) {            \
-        gparent = RB_PARENT(parent, field);         \
-        if (parent == RB_LEFT(gparent, field)) {        \
-            tmp = RB_RIGHT(gparent, field);         \
-            if (tmp && RB_COLOR(tmp, field) == RB_RED) {    \
-                RB_COLOR(tmp, field) = RB_BLACK;    \
-                RB_SET_BLACKRED(parent, gparent, field);\
-                elm = gparent;              \
-                continue;               \
-            }                       \
-            if (RB_RIGHT(parent, field) == elm) {       \
-                RB_ROTATE_LEFT(head, parent, tmp, field);\
-                tmp = parent;               \
-                parent = elm;               \
-                elm = tmp;              \
-            }                       \
-            RB_SET_BLACKRED(parent, gparent, field);    \
-            RB_ROTATE_RIGHT(head, gparent, tmp, field); \
-        } else {                        \
-            tmp = RB_LEFT(gparent, field);          \
-            if (tmp && RB_COLOR(tmp, field) == RB_RED) {    \
-                RB_COLOR(tmp, field) = RB_BLACK;    \
-                RB_SET_BLACKRED(parent, gparent, field);\
-                elm = gparent;              \
-                continue;               \
-            }                       \
-            if (RB_LEFT(parent, field) == elm) {        \
-                RB_ROTATE_RIGHT(head, parent, tmp, field);\
-                tmp = parent;               \
-                parent = elm;               \
-                elm = tmp;              \
-            }                       \
-            RB_SET_BLACKRED(parent, gparent, field);    \
-            RB_ROTATE_LEFT(head, gparent, tmp, field);  \
-        }                           \
-    }                               \
-    RB_COLOR(head->rbh_root, field) = RB_BLACK;         \
-}                                   \
-                                    \
-attr void                               \
-name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, struct type *elm) \
-{                                   \
-    struct type *tmp;                       \
-    while ((elm == NULL || RB_COLOR(elm, field) == RB_BLACK) && \
-        elm != RB_ROOT(head)) {                 \
-        if (RB_LEFT(parent, field) == elm) {            \
-            tmp = RB_RIGHT(parent, field);          \
-            if (RB_COLOR(tmp, field) == RB_RED) {       \
-                RB_SET_BLACKRED(tmp, parent, field);    \
-                RB_ROTATE_LEFT(head, parent, tmp, field);\
-                tmp = RB_RIGHT(parent, field);      \
-            }                       \
-            if ((RB_LEFT(tmp, field) == NULL ||     \
-                RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\
-                (RB_RIGHT(tmp, field) == NULL ||        \
-                RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\
-                RB_COLOR(tmp, field) = RB_RED;      \
-                elm = parent;               \
-                parent = RB_PARENT(elm, field);     \
-            } else {                    \
-                if (RB_RIGHT(tmp, field) == NULL || \
-                    RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK) {\
-                    struct type *oleft;     \
-                    if ((oleft = RB_LEFT(tmp, field)) \
-                        != NULL)            \
-                        RB_COLOR(oleft, field) = RB_BLACK;\
-                    RB_COLOR(tmp, field) = RB_RED;  \
-                    RB_ROTATE_RIGHT(head, tmp, oleft, field);\
-                    tmp = RB_RIGHT(parent, field);  \
-                }                   \
-                RB_COLOR(tmp, field) = RB_COLOR(parent, field);\
-                RB_COLOR(parent, field) = RB_BLACK; \
-                if (RB_RIGHT(tmp, field))       \
-                    RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK;\
-                RB_ROTATE_LEFT(head, parent, tmp, field);\
-                elm = RB_ROOT(head);            \
-                break;                  \
-            }                       \
-        } else {                        \
-            tmp = RB_LEFT(parent, field);           \
-            if (RB_COLOR(tmp, field) == RB_RED) {       \
-                RB_SET_BLACKRED(tmp, parent, field);    \
-                RB_ROTATE_RIGHT(head, parent, tmp, field);\
-                tmp = RB_LEFT(parent, field);       \
-            }                       \
-            if ((RB_LEFT(tmp, field) == NULL ||     \
-                RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) &&\
-                (RB_RIGHT(tmp, field) == NULL ||        \
-                RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) {\
-                RB_COLOR(tmp, field) = RB_RED;      \
-                elm = parent;               \
-                parent = RB_PARENT(elm, field);     \
-            } else {                    \
-                if (RB_LEFT(tmp, field) == NULL ||  \
-                    RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) {\
-                    struct type *oright;        \
-                    if ((oright = RB_RIGHT(tmp, field)) \
-                        != NULL)            \
-                        RB_COLOR(oright, field) = RB_BLACK;\
-                    RB_COLOR(tmp, field) = RB_RED;  \
-                    RB_ROTATE_LEFT(head, tmp, oright, field);\
-                    tmp = RB_LEFT(parent, field);   \
-                }                   \
-                RB_COLOR(tmp, field) = RB_COLOR(parent, field);\
-                RB_COLOR(parent, field) = RB_BLACK; \
-                if (RB_LEFT(tmp, field))        \
-                    RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK;\
-                RB_ROTATE_RIGHT(head, parent, tmp, field);\
-                elm = RB_ROOT(head);            \
-                break;                  \
-            }                       \
-        }                           \
-    }                               \
-    if (elm)                            \
-        RB_COLOR(elm, field) = RB_BLACK;            \
-}                                   \
-                                    \
-attr struct type *                          \
-name##_RB_REMOVE(struct name *head, struct type *elm)           \
-{                                   \
-    struct type *child, *parent, *old = elm;            \
-    int color;                          \
-    if (RB_LEFT(elm, field) == NULL)                \
-        child = RB_RIGHT(elm, field);               \
-    else if (RB_RIGHT(elm, field) == NULL)              \
-        child = RB_LEFT(elm, field);                \
-    else {                              \
-        struct type *left;                  \
-        elm = RB_RIGHT(elm, field);             \
-        while ((left = RB_LEFT(elm, field)) != NULL)        \
-            elm = left;                 \
-        child = RB_RIGHT(elm, field);               \
-        parent = RB_PARENT(elm, field);             \
-        color = RB_COLOR(elm, field);               \
-        if (child)                      \
-            RB_PARENT(child, field) = parent;       \
-        if (parent) {                       \
-            if (RB_LEFT(parent, field) == elm)      \
-                RB_LEFT(parent, field) = child;     \
-            else                        \
-                RB_RIGHT(parent, field) = child;    \
-            RB_AUGMENT(parent);             \
-        } else                          \
-            RB_ROOT(head) = child;              \
-        if (RB_PARENT(elm, field) == old)           \
-            parent = elm;                   \
-        (elm)->field = (old)->field;                \
-        if (RB_PARENT(old, field)) {                \
-            if (RB_LEFT(RB_PARENT(old, field), field) == old)\
-                RB_LEFT(RB_PARENT(old, field), field) = elm;\
-            else                        \
-                RB_RIGHT(RB_PARENT(old, field), field) = elm;\
-            RB_AUGMENT(RB_PARENT(old, field));      \
-        } else                          \
-            RB_ROOT(head) = elm;                \
-        RB_PARENT(RB_LEFT(old, field), field) = elm;        \
-        if (RB_RIGHT(old, field))               \
-            RB_PARENT(RB_RIGHT(old, field), field) = elm;   \
-        if (parent) {                       \
-            left = parent;                  \
-            do {                        \
-                RB_AUGMENT(left);           \
-            } while ((left = RB_PARENT(left, field)) != NULL); \
-        }                           \
-        goto color;                     \
-    }                               \
-    parent = RB_PARENT(elm, field);                 \
-    color = RB_COLOR(elm, field);                   \
-    if (child)                          \
-        RB_PARENT(child, field) = parent;           \
-    if (parent) {                           \
-        if (RB_LEFT(parent, field) == elm)          \
-            RB_LEFT(parent, field) = child;         \
-        else                            \
-            RB_RIGHT(parent, field) = child;        \
-        RB_AUGMENT(parent);                 \
-    } else                              \
-        RB_ROOT(head) = child;                  \
-color:                                  \
-    if (color == RB_BLACK)                      \
-        name##_RB_REMOVE_COLOR(head, parent, child);        \
-    return (old);                           \
-}                                   \
-                                    \
-/* Inserts a node into the RB tree */                   \
-attr struct type *                          \
-name##_RB_INSERT(struct name *head, struct type *elm)           \
-{                                   \
-    struct type *tmp;                       \
-    struct type *parent = NULL;                 \
-    int comp = 0;                           \
-    tmp = RB_ROOT(head);                        \
-    while (tmp) {                           \
-        parent = tmp;                       \
-        comp = (cmp)(elm, parent);              \
-        if (comp < 0)                       \
-            tmp = RB_LEFT(tmp, field);          \
-        else if (comp > 0)                  \
-            tmp = RB_RIGHT(tmp, field);         \
-        else                            \
-            return (tmp);                   \
-    }                               \
-    RB_SET(elm, parent, field);                 \
-    if (parent != NULL) {                       \
-        if (comp < 0)                       \
-            RB_LEFT(parent, field) = elm;           \
-        else                            \
-            RB_RIGHT(parent, field) = elm;          \
-        RB_AUGMENT(parent);                 \
-    } else                              \
-        RB_ROOT(head) = elm;                    \
-    name##_RB_INSERT_COLOR(head, elm);              \
-    return (NULL);                          \
-}                                   \
-                                    \
-/* Finds the node with the same key as elm */               \
-attr struct type *                          \
-name##_RB_FIND(struct name *head, struct type *elm)         \
-{                                   \
-    struct type *tmp = RB_ROOT(head);               \
-    int comp;                           \
-    while (tmp) {                           \
-        comp = cmp(elm, tmp);                   \
-        if (comp < 0)                       \
-            tmp = RB_LEFT(tmp, field);          \
-        else if (comp > 0)                  \
-            tmp = RB_RIGHT(tmp, field);         \
-        else                            \
-            return (tmp);                   \
-    }                               \
-    return (NULL);                          \
-}                                   \
-                                    \
-/* Finds the first node greater than or equal to the search key */  \
-attr struct type *                          \
-name##_RB_NFIND(struct name *head, struct type *elm)            \
-{                                   \
-    struct type *tmp = RB_ROOT(head);               \
-    struct type *res = NULL;                    \
-    int comp;                           \
-    while (tmp) {                           \
-        comp = cmp(elm, tmp);                   \
-        if (comp < 0) {                     \
-            res = tmp;                  \
-            tmp = RB_LEFT(tmp, field);          \
-        }                           \
-        else if (comp > 0)                  \
-            tmp = RB_RIGHT(tmp, field);         \
-        else                            \
-            return (tmp);                   \
-    }                               \
-    return (res);                           \
-}                                   \
-                                    \
-/* ARGSUSED */                              \
-attr struct type *                          \
-name##_RB_NEXT(struct type *elm)                    \
-{                                   \
-    if (RB_RIGHT(elm, field)) {                 \
-        elm = RB_RIGHT(elm, field);             \
-        while (RB_LEFT(elm, field))             \
-            elm = RB_LEFT(elm, field);          \
-    } else {                            \
-        if (RB_PARENT(elm, field) &&                \
-            (elm == RB_LEFT(RB_PARENT(elm, field), field))) \
-            elm = RB_PARENT(elm, field);            \
-        else {                          \
-            while (RB_PARENT(elm, field) &&         \
-                (elm == RB_RIGHT(RB_PARENT(elm, field), field)))\
-                elm = RB_PARENT(elm, field);        \
-            elm = RB_PARENT(elm, field);            \
-        }                           \
-    }                               \
-    return (elm);                           \
-}                                   \
-                                    \
-/* ARGSUSED */                              \
-attr struct type *                          \
-name##_RB_PREV(struct type *elm)                    \
-{                                   \
-    if (RB_LEFT(elm, field)) {                  \
-        elm = RB_LEFT(elm, field);              \
-        while (RB_RIGHT(elm, field))                \
-            elm = RB_RIGHT(elm, field);         \
-    } else {                            \
-        if (RB_PARENT(elm, field) &&                \
-            (elm == RB_RIGHT(RB_PARENT(elm, field), field)))    \
-            elm = RB_PARENT(elm, field);            \
-        else {                          \
-            while (RB_PARENT(elm, field) &&         \
-                (elm == RB_LEFT(RB_PARENT(elm, field), field)))\
-                elm = RB_PARENT(elm, field);        \
-            elm = RB_PARENT(elm, field);            \
-        }                           \
-    }                               \
-    return (elm);                           \
-}                                   \
-                                    \
-attr struct type *                          \
-name##_RB_MINMAX(struct name *head, int val)                \
-{                                   \
-    struct type *tmp = RB_ROOT(head);               \
-    struct type *parent = NULL;                 \
-    while (tmp) {                           \
-        parent = tmp;                       \
-        if (val < 0)                        \
-            tmp = RB_LEFT(tmp, field);          \
-        else                            \
-            tmp = RB_RIGHT(tmp, field);         \
-    }                               \
-    return (parent);                        \
-}
-
-#define RB_NEGINF   -1
-#define RB_INF  1
-
-#define RB_INSERT(name, x, y)   name##_RB_INSERT(x, y)
-#define RB_REMOVE(name, x, y)   name##_RB_REMOVE(x, y)
-#define RB_FIND(name, x, y) name##_RB_FIND(x, y)
-#define RB_NFIND(name, x, y)    name##_RB_NFIND(x, y)
-#define RB_NEXT(name, x, y) name##_RB_NEXT(y)
-#define RB_PREV(name, x, y) name##_RB_PREV(y)
-#define RB_MIN(name, x)     name##_RB_MINMAX(x, RB_NEGINF)
-#define RB_MAX(name, x)     name##_RB_MINMAX(x, RB_INF)
-
-#define RB_FOREACH(x, name, head)                   \
-    for ((x) = RB_MIN(name, head);                  \
-         (x) != NULL;                       \
-         (x) = name##_RB_NEXT(x))
-
-#define RB_FOREACH_REVERSE(x, name, head)               \
-    for ((x) = RB_MAX(name, head);                  \
-         (x) != NULL;                       \
-         (x) = name##_RB_PREV(x))
-
-#endif  /* _SYS_TREE_H_ */

+ 0 - 65
components/gui/include/rtgui/widgets/box.h

@@ -1,65 +0,0 @@
-/*
- * File      : box.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-16     Bernard      first version
- */
-#ifndef __RTGUI_BOX_H__
-#define __RTGUI_BOX_H__
-
-#include <rtgui/rtgui.h>
-#include <rtgui/widgets/widget.h>
-#include <rtgui/widgets/container.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-DECLARE_CLASS_TYPE(box);
-
-/** Gets the type of a box */
-#define RTGUI_BOX_TYPE       (RTGUI_TYPE(box))
-/** Casts the object to an rtgui_box */
-#define RTGUI_BOX(obj)       (RTGUI_OBJECT_CAST((obj), RTGUI_BOX_TYPE, rtgui_box_t))
-/** Checks if the object is an rtgui_box */
-#define RTGUI_IS_BOX(obj)    (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_BOX_TYPE))
-
-struct rtgui_box
-{
-    struct rtgui_object parent;
-
-    rt_uint16_t orient;
-    rt_uint16_t border_size;
-
-    struct rtgui_container *container;
-};
-typedef struct rtgui_box rtgui_box_t;
-
-struct rtgui_box *rtgui_box_create(int orientation, int border_size);
-void rtgui_box_destroy(struct rtgui_box *box);
-
-void rtgui_box_layout(rtgui_box_t *box);
-void rtgui_box_layout_rect(rtgui_box_t *box, struct rtgui_rect *rect);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif

+ 0 - 80
components/gui/include/rtgui/widgets/container.h

@@ -1,80 +0,0 @@
-/*
- * File      : container.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-16     Bernard      first version
- */
-#ifndef __RTGUI_CONTAINER_H__
-#define __RTGUI_CONTAINER_H__
-
-#include <rtgui/widgets/widget.h>
-#include <rtgui/widgets/box.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-DECLARE_CLASS_TYPE(container);
-/** Gets the type of a container */
-#define RTGUI_CONTAINER_TYPE       (RTGUI_TYPE(container))
-/** Casts the object to an rtgui_container */
-#define RTGUI_CONTAINER(obj)       (RTGUI_OBJECT_CAST((obj), RTGUI_CONTAINER_TYPE, rtgui_container_t))
-/** Checks if the object is an rtgui_container */
-#define RTGUI_IS_CONTAINER(obj)    (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_CONTAINER_TYPE))
-
-/*
- * the container widget
- */
-struct rtgui_container
-{
-    struct rtgui_widget parent;
-
-    /* layout box */
-    struct rtgui_box *layout_box;
-
-    rtgui_list_t children;
-};
-typedef struct rtgui_container rtgui_container_t;
-
-rtgui_container_t *rtgui_container_create(void);
-void rtgui_container_destroy(rtgui_container_t *container);
-
-rt_bool_t rtgui_container_event_handler(struct rtgui_object *widget, struct rtgui_event *event);
-
-/* set layout box */
-void rtgui_container_set_box(struct rtgui_container *container, struct rtgui_box *box);
-void rtgui_container_layout(struct rtgui_container *container);
-
-void rtgui_container_add_child(rtgui_container_t *container, rtgui_widget_t *child);
-void rtgui_container_remove_child(rtgui_container_t *container, rtgui_widget_t *child);
-void rtgui_container_destroy_children(rtgui_container_t *container);
-rtgui_widget_t *rtgui_container_get_first_child(rtgui_container_t *container);
-
-rt_bool_t rtgui_container_event_handler(struct rtgui_object *widget, rtgui_event_t *event);
-
-rt_bool_t rtgui_container_dispatch_event(rtgui_container_t *container, rtgui_event_t *event);
-rt_bool_t rtgui_container_dispatch_mouse_event(rtgui_container_t *container, struct rtgui_event_mouse *event);
-
-struct rtgui_object* rtgui_container_get_object(struct rtgui_container *container, rt_uint32_t id);
-#ifdef __cplusplus
-}
-#endif
-
-#endif

+ 0 - 48
components/gui/include/rtgui/widgets/title.h

@@ -1,48 +0,0 @@
-/*
- * File      : title.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-16     Bernard      first version
- */
-#ifndef __RTGUI_TITLE__
-#define __RTGUI_TITLE__
-
-#include <rtgui/widgets/widget.h>
-
-DECLARE_CLASS_TYPE(wintitle);
-/** Gets the type of a title */
-#define RTGUI_WINTITLE_TYPE       (RTGUI_TYPE(wintitle))
-/** Casts the object to an rtgui_wintitle */
-#define RTGUI_WINTITLE(obj)       (RTGUI_OBJECT_CAST((obj), RTGUI_WINTITLE_TYPE, rtgui_wintitle_t))
-/** Checks if the object is an rtgui_wintitle */
-#define RTGUI_IS_WINTITLE(obj)    (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_WINTITLE_TYPE))
-
-struct rtgui_wintitle
-{
-    struct rtgui_widget parent;
-};
-typedef struct rtgui_wintitle rtgui_wintitle_t;
-
-rtgui_wintitle_t *rtgui_wintitle_create(struct rtgui_win *window);
-void rtgui_wintitle_destroy(rtgui_wintitle_t *wintitle);
-
-rt_bool_t rtgui_wintile_event_handler(struct rtgui_object *object, rtgui_event_t *event);
-
-#endif

+ 0 - 209
components/gui/include/rtgui/widgets/widget.h

@@ -1,209 +0,0 @@
-/*
- * File      : widget.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-04     Bernard      first version
- */
-#ifndef __RTGUI_WIDGET_H__
-#define __RTGUI_WIDGET_H__
-
-#include <rtgui/rtgui.h>
-#include <rtgui/list.h>
-#include <rtgui/region.h>
-#include <rtgui/event.h>
-#include <rtgui/color.h>
-#include <rtgui/font.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define RTGUI_WIDGET_FLAG_DEFAULT       0x0000
-#define RTGUI_WIDGET_FLAG_SHOWN         0x0001
-#define RTGUI_WIDGET_FLAG_DISABLE       0x0002
-#define RTGUI_WIDGET_FLAG_FOCUS         0x0004
-#define RTGUI_WIDGET_FLAG_TRANSPARENT   0x0008
-#define RTGUI_WIDGET_FLAG_FOCUSABLE     0x0010
-#define RTGUI_WIDGET_FLAG_DC_VISIBLE    0x0100
-#define RTGUI_WIDGET_FLAG_IN_ANIM       0x0200
-
-/* rtgui widget attribute */
-#define RTGUI_WIDGET_FOREGROUND(w)      (RTGUI_WIDGET(w)->gc.foreground)
-#define RTGUI_WIDGET_BACKGROUND(w)      (RTGUI_WIDGET(w)->gc.background)
-#define RTGUI_WIDGET_TEXTALIGN(w)       (RTGUI_WIDGET(w)->gc.textalign)
-#define RTGUI_WIDGET_FONT(w)            (RTGUI_WIDGET(w)->gc.font)
-#define RTGUI_WIDGET_FLAG(w)            (RTGUI_WIDGET(w)->flag)
-#define RTGUI_WIDGET_ALIGN(w)           (RTGUI_WIDGET(w)->align)
-#define RTGUI_WIDGET_BORDER(w)          (RTGUI_WIDGET(w)->border)
-#define RTGUI_WIDGET_BORDER_STYLE(w)    (RTGUI_WIDGET(w)->border_style)
-
-#define RTGUI_WIDGET_UNHIDE(w)          RTGUI_WIDGET_FLAG(w) |= RTGUI_WIDGET_FLAG_SHOWN
-#define RTGUI_WIDGET_HIDE(w)            RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_SHOWN
-#define RTGUI_WIDGET_IS_HIDE(w)         (!(RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_SHOWN))
-
-#define RTGUI_WIDGET_ENABLE(w)          RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_DISABLE
-#define RTGUI_WIDGET_DISABLE(w)         RTGUI_WIDGET_FLAG(w) |= RTGUI_WIDGET_FLAG_DISABLE
-#define RTGUI_WIDGET_IS_ENABLE(w)       (!((RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_DISABLE)))
-
-#define RTGUI_WIDGET_UNFOCUS(w)         RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_FOCUS
-#define RTGUI_WIDGET_FOCUS(w)           RTGUI_WIDGET_FLAG(w) |= RTGUI_WIDGET_FLAG_FOCUS
-#define RTGUI_WIDGET_IS_FOCUSED(w)      (RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_FOCUS)
-
-#define RTGUI_WIDGET_IS_FOCUSABLE(w)    (RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_FOCUSABLE)
-#define RTGUI_WIDGET_SET_UNFOCUSABLE(w) RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_FOCUSABLE
-
-#define RTGUI_WIDGET_IS_DC_VISIBLE(w)   (RTGUI_WIDGET_FLAG(w) & RTGUI_WIDGET_FLAG_DC_VISIBLE)
-#define RTGUI_WIDGET_DC_SET_VISIBLE(w)  RTGUI_WIDGET_FLAG(w) |= RTGUI_WIDGET_FLAG_DC_VISIBLE
-#define RTGUI_WIDGET_DC_SET_UNVISIBLE(w) RTGUI_WIDGET_FLAG(w) &= ~RTGUI_WIDGET_FLAG_DC_VISIBLE
-#define RTGUI_WIDGET_DC(w)              ((struct rtgui_dc*)&((w)->dc_type))
-
-DECLARE_CLASS_TYPE(widget);
-
-/** Gets the type of a widget */
-#define RTGUI_WIDGET_TYPE       (RTGUI_TYPE(widget))
-/** Casts the object to a rtgui_widget */
-#define RTGUI_WIDGET(obj)       (RTGUI_OBJECT_CAST((obj), RTGUI_WIDGET_TYPE, rtgui_widget_t))
-/** Check if the object is a rtgui_widget */
-#define RTGUI_IS_WIDGET(obj)    (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_WIDGET_TYPE))
-
-/*
- * the base widget object
- */
-struct rtgui_widget
-{
-    /* inherit from rtgui_object */
-    struct rtgui_object object;
-
-    /* the widget that contains this widget */
-    struct rtgui_widget *parent;
-    /* the window that contains this widget */
-    struct rtgui_win *toplevel;
-    /* the widget children and sibling */
-    rtgui_list_t sibling;
-
-    /* widget flag */
-    rt_int32_t flag;
-
-    /* hardware device context */
-    rt_uint32_t dc_type;
-    const struct rtgui_dc_engine *dc_engine;
-
-    /* the graphic context of widget */
-    rtgui_gc_t gc;
-
-    /* the widget extent */
-    rtgui_rect_t extent;
-    /* the visiable extent (includes the rectangles of children) */
-    rtgui_rect_t extent_visiable;
-    /* the rect clip information */
-    rtgui_region_t clip;
-
-    /* minimal width and height of widget */
-    rt_int16_t min_width, min_height;
-    /* widget align */
-    rt_int32_t align;
-    rt_uint16_t border;
-    rt_uint16_t border_style;
-
-    /* call back */
-    rt_bool_t (*on_focus_in)(struct rtgui_object *widget, struct rtgui_event *event);
-    rt_bool_t (*on_focus_out)(struct rtgui_object *widget, struct rtgui_event *event);
-
-    /* user private data */
-    rt_uint32_t user_data;
-};
-typedef struct rtgui_widget rtgui_widget_t;
-
-rtgui_widget_t *rtgui_widget_create(const rtgui_type_t *widget_type);
-void rtgui_widget_destroy(rtgui_widget_t *widget);
-
-rt_bool_t rtgui_widget_event_handler(struct rtgui_object *object, rtgui_event_t *event);
-
-/* focus and unfocus */
-void rtgui_widget_focus(rtgui_widget_t *widget);
-void rtgui_widget_unfocus(rtgui_widget_t *widget);
-
-/* event handler for each command */
-void rtgui_widget_set_onfocus(rtgui_widget_t *widget, rtgui_event_handler_ptr handler);
-void rtgui_widget_set_onunfocus(rtgui_widget_t *widget, rtgui_event_handler_ptr handler);
-
-/* get and set rect of widget */
-void rtgui_widget_get_rect(rtgui_widget_t *widget, rtgui_rect_t *rect);
-void rtgui_widget_set_border(rtgui_widget_t *widget, rt_uint32_t style);
-void rtgui_widget_set_rect(rtgui_widget_t *widget, const rtgui_rect_t *rect);
-void rtgui_widget_set_rectangle(rtgui_widget_t *widget, int x, int y, int width, int height);
-void rtgui_widget_get_extent(rtgui_widget_t *widget, rtgui_rect_t *rect);
-
-void rtgui_widget_set_minsize(rtgui_widget_t *widget, int width, int height);
-void rtgui_widget_set_minwidth(rtgui_widget_t *widget, int width);
-void rtgui_widget_set_minheight(rtgui_widget_t *widget, int height);
-
-void rtgui_widget_set_parent(rtgui_widget_t *widget, rtgui_widget_t *parent);
-
-/* get the physical position of a logic point on widget */
-void rtgui_widget_point_to_device(rtgui_widget_t *widget, rtgui_point_t *point);
-/* get the physical position of a logic rect on widget */
-void rtgui_widget_rect_to_device(rtgui_widget_t *widget, rtgui_rect_t *rect);
-
-/* get the logic position of a physical point on widget */
-void rtgui_widget_point_to_logic(rtgui_widget_t *widget, rtgui_point_t *point);
-/* get the logic position of a physical rect on widget */
-void rtgui_widget_rect_to_logic(rtgui_widget_t *widget, rtgui_rect_t *rect);
-
-void rtgui_widget_clip_parent(rtgui_widget_t *widget);
-void rtgui_widget_clip_return(rtgui_widget_t *widget);
-
-/* move widget and its children to a logic point */
-void rtgui_widget_move_to_logic(rtgui_widget_t *widget, int dx, int dy);
-
-/* update the clip info of widget */
-void rtgui_widget_update_clip(rtgui_widget_t *widget);
-
-/* get the toplevel widget of widget */
-struct rtgui_win *rtgui_widget_get_toplevel(rtgui_widget_t *widget);
-rt_bool_t rtgui_widget_onupdate_toplvl(struct rtgui_object *object, struct rtgui_event *event);
-
-void rtgui_widget_show(rtgui_widget_t *widget);
-rt_bool_t rtgui_widget_onshow(struct rtgui_object *object, struct rtgui_event *event);
-void rtgui_widget_hide(rtgui_widget_t *widget);
-rt_bool_t rtgui_widget_onhide(struct rtgui_object *object, struct rtgui_event *event);
-void rtgui_widget_update(rtgui_widget_t *widget);
-rt_bool_t rtgui_widget_onpaint(struct rtgui_object *object, struct rtgui_event *event);
-
-/* get parent color */
-rtgui_color_t rtgui_widget_get_parent_foreground(rtgui_widget_t *widget);
-rtgui_color_t rtgui_widget_get_parent_background(rtgui_widget_t *widget);
-
-/* get the next sibling of widget */
-rtgui_widget_t *rtgui_widget_get_next_sibling(rtgui_widget_t *widget);
-/* get the prev sibling of widget */
-rtgui_widget_t *rtgui_widget_get_prev_sibling(rtgui_widget_t *widget);
-
-rt_bool_t rtgui_widget_is_in_animation(rtgui_widget_t *widget);
-
-/* dump widget information */
-void rtgui_widget_dump(rtgui_widget_t *widget);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-

+ 0 - 215
components/gui/include/rtgui/widgets/window.h

@@ -1,215 +0,0 @@
-/*
- * File      : window.h
- * This file is part of RT-Thread GUI Engine
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date           Author       Notes
- * 2009-10-04     Bernard      first version
- * 2010-05-03     Bernard      add win close function
- */
-#ifndef __RTGUI_WINDOW_H__
-#define __RTGUI_WINDOW_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtgui/rtgui.h>
-#include <rtgui/list.h>
-#include <rtgui/dc.h>
-#include <rtgui/widgets/widget.h>
-#include <rtgui/widgets/box.h>
-
-DECLARE_CLASS_TYPE(win);
-/** Gets the type of a win */
-#define RTGUI_WIN_TYPE       (RTGUI_TYPE(win))
-/** Casts the object to an rtgui_win */
-#define RTGUI_WIN(obj)       (RTGUI_OBJECT_CAST((obj), RTGUI_WIN_TYPE, rtgui_win_t))
-/** Checks if the object is an rtgui_win */
-#define RTGUI_IS_WIN(obj)    (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_WIN_TYPE))
-
-#define RTGUI_WIN_STYLE_NO_FOCUS            0x0001  /* non-focused window            */
-#define RTGUI_WIN_STYLE_NO_TITLE            0x0002  /* no title window               */
-#define RTGUI_WIN_STYLE_NO_BORDER           0x0004  /* no border window              */
-#define RTGUI_WIN_STYLE_CLOSEBOX            0x0008  /* window has the close button   */
-#define RTGUI_WIN_STYLE_MINIBOX             0x0010  /* window has the mini button    */
-
-#define RTGUI_WIN_STYLE_DESTROY_ON_CLOSE    0x0020  /* window is destroyed when closed */
-#define RTGUI_WIN_STYLE_ONTOP               0x0040  /* window is in the top layer    */
-#define RTGUI_WIN_STYLE_ONBTM               0x0080  /* window is in the bottom layer */
-#define RTGUI_WIN_STYLE_MAINWIN             0x0106  /* window is a main window       */
-
-#define RTGUI_WIN_MAGIC						0xA5A55A5A		/* win magic flag */
-
-#define RTGUI_WIN_STYLE_DEFAULT     (RTGUI_WIN_STYLE_CLOSEBOX | RTGUI_WIN_STYLE_MINIBOX)
-
-#define WINTITLE_HEIGHT         20
-#define WINTITLE_CB_WIDTH       16
-#define WINTITLE_CB_HEIGHT      16
-#define WINTITLE_BORDER_SIZE    2
-
-enum rtgui_win_flag
-{
-    RTGUI_WIN_FLAG_INIT        = 0x00,  /* init state              */
-    RTGUI_WIN_FLAG_MODAL       = 0x01,  /* modal mode window       */
-    RTGUI_WIN_FLAG_CLOSED      = 0x02,  /* window is closed        */
-    RTGUI_WIN_FLAG_ACTIVATE    = 0x04,  /* window is activated     */
-    RTGUI_WIN_FLAG_UNDER_MODAL = 0x08,  /* window is under modal
-                                           show(modaled by other)  */
-    RTGUI_WIN_FLAG_CONNECTED   = 0x10,  /* connected to server */
-    /* window is event_key dispatcher(dispatch it to the focused widget in
-     * current window) _and_ a key handler(it should be able to handle keys
-     * such as ESC). Both of dispatching and handling are in the same
-     * function(rtgui_win_event_handler). So we have to distinguish between the
-     * two modes.
-     *
-     * If this flag is set, we are in key-handling mode.
-     */
-    RTGUI_WIN_FLAG_HANDLE_KEY  = 0x20,
-
-    RTGUI_WIN_FLAG_CB_PRESSED  = 0x40,
-};
-
-struct rtgui_win
-{
-    /* inherit from container */
-    rtgui_container_t parent;
-
-    /* update count */
-    rt_base_t update;
-
-    /* drawing count */
-    rt_base_t drawing;
-    struct rtgui_rect drawing_rect;
-
-    /* parent window. RT_NULL if the window is a top level window */
-    struct rtgui_win *parent_window;
-
-    struct rtgui_region outer_clip;
-    struct rtgui_rect outer_extent;
-
-    /* the widget that will grab the focus in current window */
-    struct rtgui_widget *focused_widget;
-
-    /* which app I belong */
-    struct rtgui_app *app;
-
-    /* window style */
-    rt_uint16_t style;
-
-    /* window state flag */
-    enum rtgui_win_flag flag;
-
-    rtgui_modal_code_t modal_code;
-
-    /* last mouse event handled widget */
-    rtgui_widget_t *last_mevent_widget;
-
-    /* window title */
-    char *title;
-    struct rtgui_wintitle *_title_wgt;
-
-    /* call back */
-    rt_bool_t (*on_activate)(struct rtgui_object *widget, struct rtgui_event *event);
-    rt_bool_t (*on_deactivate)(struct rtgui_object *widget, struct rtgui_event *event);
-    rt_bool_t (*on_close)(struct rtgui_object *widget, struct rtgui_event *event);
-    /* the key is sent to the focused widget by default. If the focused widget
-     * and all of it's parents didn't handle the key event, it will be handled
-     * by @func on_key
-     *
-     * If you want to handle key event on your own, it's better to overload
-     * this function other than handle EVENT_KBD in event_handler.
-     */
-    rt_bool_t (*on_key)(struct rtgui_object *widget, struct rtgui_event *event);
-
-    /* reserved user data */
-    void *user_data;
-
-    /* Private data. */
-    rt_base_t (*_do_show)(struct rtgui_win *win);
-
-    /* app ref_count */
-    rt_uint16_t app_ref_count;
-
-    /* win magic flag, magic value is 0xA5A55A5A */
-    rt_uint32_t	magic;
-};
-
-rtgui_win_t *rtgui_win_create(struct rtgui_win *parent_window, const char *title,
-                              rtgui_rect_t *rect, rt_uint16_t style);
-rtgui_win_t *rtgui_mainwin_create(struct rtgui_win *parent_window, const char *title, rt_uint16_t style);
-
-void rtgui_win_destroy(rtgui_win_t *win);
-
-int rtgui_win_init(struct rtgui_win *win, struct rtgui_win *parent_window,
-                   const char *title,
-                   rtgui_rect_t *rect,
-                   rt_uint16_t style);
-int rtgui_win_fini(struct rtgui_win* win);
-
-/** Close window.
- *
- * @param win the window you want to close
- *
- * @return RT_TRUE if the window is closed. RT_FALSE if not. If the onclose
- * callback returns RT_FALSE, the window won't be closed.
- *
- * \sa rtgui_win_set_onclose .
- */
-rt_bool_t rtgui_win_close(struct rtgui_win *win);
-
-rt_base_t rtgui_win_show(struct rtgui_win *win, rt_bool_t is_modal);
-rt_base_t rtgui_win_do_show(struct rtgui_win *win);
-rt_base_t rtgui_win_enter_modal(struct rtgui_win *win);
-
-void rtgui_win_hide(rtgui_win_t *win);
-void rtgui_win_end_modal(rtgui_win_t *win, rtgui_modal_code_t modal_code);
-rt_err_t rtgui_win_activate(struct rtgui_win *win);
-rt_bool_t rtgui_win_is_activated(struct rtgui_win *win);
-
-void rtgui_win_move(struct rtgui_win *win, int x, int y);
-
-/* reset extent of window */
-void rtgui_win_set_rect(rtgui_win_t *win, rtgui_rect_t *rect);
-void rtgui_win_update_clip(struct rtgui_win *win);
-
-void rtgui_win_set_onactivate(rtgui_win_t *win, rtgui_event_handler_ptr handler);
-void rtgui_win_set_ondeactivate(rtgui_win_t *win, rtgui_event_handler_ptr handler);
-void rtgui_win_set_onclose(rtgui_win_t *win, rtgui_event_handler_ptr handler);
-void rtgui_win_set_onkey(rtgui_win_t *win, rtgui_event_handler_ptr handler);
-
-rt_bool_t rtgui_win_event_handler(struct rtgui_object *win, struct rtgui_event *event);
-
-void rtgui_win_event_loop(rtgui_win_t *wnd);
-
-void rtgui_win_set_title(rtgui_win_t *win, const char *title);
-char *rtgui_win_get_title(rtgui_win_t *win);
-
-struct rtgui_dc *rtgui_win_get_drawing(rtgui_win_t * win);
-
-struct rtgui_win* rtgui_win_get_topmost_shown(void);
-struct rtgui_win* rtgui_win_get_next_shown(void);
-
-void rtgui_theme_draw_win(struct rtgui_wintitle *wint);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-

+ 0 - 15
components/gui/libraries/SConscript

@@ -1,15 +0,0 @@
-# RT-Thread building script for bridge
-
-import os
-from building import *
-
-cwd  = GetCurrentDir()
-objs = []
-list = os.listdir(cwd)
-
-for d in list:
-    path = os.path.join(cwd, d)
-    if os.path.isfile(os.path.join(path, 'SConscript')):
-        objs = objs + SConscript(os.path.join(d, 'SConscript'))
-
-Return('objs')

+ 0 - 436
components/gui/libraries/freetype-2.6.2/CMakeLists.txt

@@ -1,436 +0,0 @@
-# CMakeLists.txt
-#
-# Copyright 2013-2015 by
-# David Turner, Robert Wilhelm, and Werner Lemberg.
-#
-# Written originally by John Cary <cary@txcorp.com>
-#
-# This file is part of the FreeType project, and may only be used, modified,
-# and distributed under the terms of the FreeType project license,
-# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
-# indicate that you have read the license and understand and accept it
-# fully.
-#
-#
-# As a preliminary, create a compilation directory and change into it, for
-# example
-#
-#   mkdir ~/freetype2.compiled
-#   cd ~/freetype2.compiled
-#
-# Now you can say
-#
-#   cmake <path-to-freetype2-src-dir>
-#
-# to create a Makefile that builds a static version of the library.
-#
-# For a dynamic library, use
-#
-#   cmake <path-to-freetype2-src-dir> -D BUILD_SHARED_LIBS:BOOL=true
-#
-# For a framework on OS X, use
-#
-#   cmake <path-to-freetype2-src-dir> -D BUILD_FRAMEWORK:BOOL=true -G Xcode
-#
-# instead.
-#
-# For an iOS static library, use
-#
-#   cmake <path-to-freetype2-src-dir> -D IOS_PLATFORM=OS -G Xcode
-#
-# or
-#
-#   cmake <path-to-freetype2-src-dir> -D IOS_PLATFORM=SIMULATOR -G Xcode
-#
-# Please refer to the cmake manual for further options, in particular, how
-# to modify compilation and linking parameters.
-#
-# Some notes.
-#
-# . `cmake' creates configuration files in
-#
-#     <build-directory>/include/freetype/config
-#
-#   which should be further modified if necessary.
-#
-# . You can use `cmake' directly on a freshly cloned FreeType git
-#   repository.
-#
-# . `CMakeLists.txt' is provided as-is since it is normally not used by the
-#   developer team.
-#
-# . If you want to disable the automatic generation of the distribution
-#   targets, add the `-D FREETYPE_NO_DIST=true' command line argument.
-#
-# . Set the `WITH_ZLIB', `WITH_BZip2', `WITH_PNG', and `WITH_HarfBuzz'
-#   CMake variables to `ON' or `OFF' to force or skip using a dependency.
-#   Leave a variable undefined (which is the default) to use the dependency
-#   only if it is available.  Example:
-#
-#     cmake ... -DWITH_ZLIB=ON -DWITH_HarfBuzz=OFF ...
-
-
-cmake_minimum_required(VERSION 2.6)
-
-
-include(CheckIncludeFile)
-
-
-# CMAKE_TOOLCHAIN_FILE must be set before `project' is called, which
-# configures the base build environment and references the toolchain file
-if (APPLE)
-  if (DEFINED IOS_PLATFORM)
-    if (NOT "${IOS_PLATFORM}" STREQUAL "OS"
-        AND NOT "${IOS_PLATFORM}" STREQUAL "SIMULATOR")
-      message(FATAL_ERROR
-        "IOS_PLATFORM must be set to either OS or SIMULATOR")
-    endif ()
-    if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode")
-      message(AUTHOR_WARNING
-        "You should use Xcode generator with IOS_PLATFORM enabled to get Universal builds.")
-    endif ()
-    if (BUILD_SHARED_LIBS)
-      message(FATAL_ERROR
-        "BUILD_SHARED_LIBS can not be on with IOS_PLATFORM enabled")
-    endif ()
-    if (BUILD_FRAMEWORK)
-      message(FATAL_ERROR
-        "BUILD_FRAMEWORK can not be on with IOS_PLATFORM enabled")
-    endif ()
-
-    # iOS only uses static libraries
-    set(BUILD_SHARED_LIBS OFF)
-
-    set(CMAKE_TOOLCHAIN_FILE
-      ${PROJECT_SOURCE_DIR}/builds/cmake/iOS.cmake)
-  endif ()
-else ()
-  if (DEFINED IOS_PLATFORM)
-    message(FATAL_ERROR "IOS_PLATFORM is not supported on this platform")
-  endif ()
-endif ()
-
-
-project(freetype)
-
-
-if (WIN32 AND NOT MINGW AND BUILD_SHARED_LIBS)
-  message(FATAL_ERROR "Building shared libraries on Windows needs MinGW")
-endif ()
-
-# Disallow in-source builds
-if ("${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
-  message(FATAL_ERROR
-    "
-In-source builds are not permitted!  Make a separate folder for"
-    " building, e.g.,"
-    "
-  mkdir build; cd build; cmake .."
-    "
-Before that, remove the files created by this failed run with"
-    "
-  rm -rf CMakeCache.txt CMakeFiles")
-endif ()
-
-
-# Add local cmake modules
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/builds/cmake)
-
-
-if (BUILD_FRAMEWORK)
-  if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode")
-    message(FATAL_ERROR
-      "You should use Xcode generator with BUILD_FRAMEWORK enabled")
-  endif ()
-  set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_64_BIT)")
-  set(BUILD_SHARED_LIBS ON)
-endif ()
-
-
-set(VERSION_MAJOR "2")
-set(VERSION_MINOR "6")
-set(VERSION_PATCH "2")
-
-set(PROJECT_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
-set(SHARED_LIBRARY_VERSION ${VERSION_MAJOR}.${VERSION_MINOR})
-
-
-# Compiler definitions for building the library
-add_definitions(-DFT2_BUILD_LIBRARY)
-
-
-# Find dependencies
-foreach (d ZLIB BZip2 PNG HarfBuzz)
-  string(TOUPPER "${d}" D)
-
-  if (DEFINED WITH_${d} OR DEFINED WITH_${D})
-    if (WITH_${d} OR WITH_${D})
-      find_package(${d} QUIET REQUIRED)
-    endif ()
-  else ()
-    find_package(${d} QUIET)
-  endif ()
-
-  if (${d}_FOUND OR ${D}_FOUND)
-    message(STATUS "Building with ${d}")
-  endif()
-endforeach ()
-
-
-message(STATUS
-  "Creating directory ${PROJECT_BINARY_DIR}/include/freetype/config")
-file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/include/freetype/config")
-
-
-# Create the configuration file
-message(STATUS
-  "Creating file ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h")
-
-if (UNIX)
-  check_include_file("unistd.h" HAVE_UNISTD_H)
-  check_include_file("fcntl.h" HAVE_FCNTL_H)
-  check_include_file("stdint.h" HAVE_STDINT_H)
-
-  file(READ "${PROJECT_SOURCE_DIR}/builds/unix/ftconfig.in"
-    FTCONFIG_H)
-  if (HAVE_UNISTD_H)
-    string(REGEX REPLACE
-      "#undef +(HAVE_UNISTD_H)" "#define \\1"
-      FTCONFIG_H "${FTCONFIG_H}")
-  endif ()
-  if (HAVE_FCNTL_H)
-    string(REGEX REPLACE
-      "#undef +(HAVE_FCNTL_H)" "#define \\1"
-      FTCONFIG_H "${FTCONFIG_H}")
-  endif ()
-  if (HAVE_STDINT_H)
-    string(REGEX REPLACE
-      "#undef +(HAVE_STDINT_H)" "#define \\1"
-      FTCONFIG_H "${FTCONFIG_H}")
-  endif ()
-  string(REPLACE "/undef " "#undef "
-    FTCONFIG_H "${FTCONFIG_H}")
-  file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h"
-    "${FTCONFIG_H}")
-else ()
-  file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftconfig.h"
-    FTCONFIG_H)
-  file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h"
-    "${FTCONFIG_H}")
-endif ()
-
-
-# Create the options file
-message(STATUS
-  "Creating file ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h")
-
-file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftoption.h"
-  FTOPTION_H)
-if (ZLIB_FOUND)
-  string(REGEX REPLACE
-    "/\\* +(#define +FT_CONFIG_OPTION_SYSTEM_ZLIB) +\\*/" "\\1"
-    FTOPTION_H "${FTOPTION_H}")
-endif ()
-if (BZIP2_FOUND)
-  string(REGEX REPLACE
-    "/\\* +(#define +FT_CONFIG_OPTION_USE_BZIP2) +\\*/" "\\1"
-    FTOPTION_H "${FTOPTION_H}")
-endif ()
-if (PNG_FOUND)
-  string(REGEX REPLACE
-    "/\\* +(#define +FT_CONFIG_OPTION_USE_PNG) +\\*/" "\\1"
-    FTOPTION_H "${FTOPTION_H}")
-endif ()
-if (HARFBUZZ_FOUND)
-  string(REGEX REPLACE
-    "/\\* +(#define +FT_CONFIG_OPTION_USE_HARFBUZZ) +\\*/" "\\1"
-    FTOPTION_H "${FTOPTION_H}")
-endif ()
-file(WRITE "${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h"
-  "${FTOPTION_H}")
-
-
-# Specify library include directories
-include_directories("${PROJECT_SOURCE_DIR}/include")
-include_directories(BEFORE "${PROJECT_BINARY_DIR}/include")
-
-
-file(GLOB PUBLIC_HEADERS "include/ft2build.h" "include/freetype/*.h")
-file(GLOB PUBLIC_CONFIG_HEADERS "include/freetype/config/*.h")
-file(GLOB PRIVATE_HEADERS "include/freetype/internal/*.h")
-
-
-set(BASE_SRCS
-  src/autofit/autofit.c
-  src/base/ftbase.c
-  src/base/ftbbox.c
-  src/base/ftbdf.c
-  src/base/ftbitmap.c
-  src/base/ftcid.c
-  src/base/ftfntfmt.c
-  src/base/ftfstype.c
-  src/base/ftgasp.c
-  src/base/ftglyph.c
-  src/base/ftgxval.c
-  src/base/ftinit.c
-  src/base/ftlcdfil.c
-  src/base/ftmm.c
-  src/base/ftotval.c
-  src/base/ftpatent.c
-  src/base/ftpfr.c
-  src/base/ftstroke.c
-  src/base/ftsynth.c
-  src/base/ftsystem.c
-  src/base/fttype1.c
-  src/base/ftwinfnt.c
-  src/bdf/bdf.c
-  src/bzip2/ftbzip2.c
-  src/cache/ftcache.c
-  src/cff/cff.c
-  src/cid/type1cid.c
-  src/gzip/ftgzip.c
-  src/lzw/ftlzw.c
-  src/pcf/pcf.c
-  src/pfr/pfr.c
-  src/psaux/psaux.c
-  src/pshinter/pshinter.c
-  src/psnames/psnames.c
-  src/raster/raster.c
-  src/sfnt/sfnt.c
-  src/smooth/smooth.c
-  src/truetype/truetype.c
-  src/type1/type1.c
-  src/type42/type42.c
-  src/winfonts/winfnt.c
-)
-
-if (WIN32)
-  set(BASE_SRCS ${BASE_SRCS} builds/windows/ftdebug.c)
-elseif (WINCE)
-  set(BASE_SRCS ${BASE_SRCS} builds/wince/ftdebug.c)
-else ()
-  set(BASE_SRCS ${BASE_SRCS} src/base/ftdebug.c)
-endif ()
-
-
-if (BUILD_FRAMEWORK)
-  set(BASE_SRCS
-    ${BASE_SRCS}
-    builds/mac/freetype-Info.plist
-  )
-endif ()
-
-set(CMAKE_DEBUG_POSTFIX d)
-
-add_library(freetype
-  ${PUBLIC_HEADERS}
-  ${PUBLIC_CONFIG_HEADERS}
-  ${PRIVATE_HEADERS}
-  ${BASE_SRCS}
-)
-
-
-if (BUILD_SHARED_LIBS)
-  set_target_properties(freetype PROPERTIES
-    VERSION ${PROJECT_VERSION}
-    SOVERSION ${SHARED_LIBRARY_VERSION}
-    COMPILE_DEFINITIONS freetype_EXPORTS
-  )
-endif ()
-
-
-if (BUILD_FRAMEWORK)
-  set_property(SOURCE ${PUBLIC_CONFIG_HEADERS}
-    PROPERTY MACOSX_PACKAGE_LOCATION Headers/config
-  )
-  set_target_properties(freetype PROPERTIES
-    FRAMEWORK TRUE
-    MACOSX_FRAMEWORK_INFO_PLIST builds/mac/freetype-Info.plist
-    PUBLIC_HEADER "${PUBLIC_HEADERS}"
-    XCODE_ATTRIBUTE_INSTALL_PATH "@rpath"
-  )
-endif ()
-
-if (NOT CMAKE_VERSION VERSION_LESS 2.8.11)
-  target_include_directories(freetype
-    PUBLIC $<INSTALL_INTERFACE:include/freetype2>)
-endif ()
-
-if (CMAKE_VERSION VERSION_LESS 2.8.12)
-  set(MAYBE_PRIVATE "")
-else ()
-  set(MAYBE_PRIVATE "PRIVATE")
-endif ()
-
-if (ZLIB_FOUND)
-  target_link_libraries(freetype ${MAYBE_PRIVATE} ${ZLIB_LIBRARIES})
-  include_directories(${ZLIB_INCLUDE_DIRS})
-endif ()
-if (BZIP2_FOUND)
-  target_link_libraries(freetype ${MAYBE_PRIVATE} ${BZIP2_LIBRARIES})
-  include_directories(${BZIP2_INCLUDE_DIR}) # not BZIP2_INCLUDE_DIRS
-endif ()
-if (PNG_FOUND)
-  add_definitions(${PNG_DEFINITIONS})
-  target_link_libraries(freetype ${MAYBE_PRIVATE} ${PNG_LIBRARIES})
-  include_directories(${PNG_INCLUDE_DIRS})
-endif ()
-if (HARFBUZZ_FOUND)
-  target_link_libraries(freetype ${MAYBE_PRIVATE} ${HARFBUZZ_LIBRARIES})
-  include_directories(${HARFBUZZ_INCLUDE_DIRS})
-endif ()
-
-
-# Installations
-# Note the trailing slash in the argument to the `DIRECTORY' directive
-install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/
-  DESTINATION include/freetype2
-  PATTERN "internal" EXCLUDE
-  PATTERN "ftconfig.h" EXCLUDE
-  PATTERN "ftoption.h" EXCLUDE
-)
-install(FILES
-  ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h
-  ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h
-  DESTINATION include/freetype2/freetype/config
-)
-install(TARGETS freetype
-  EXPORT freetype-targets
-  RUNTIME DESTINATION bin
-  LIBRARY DESTINATION lib
-  ARCHIVE DESTINATION lib
-  FRAMEWORK DESTINATION Library/Frameworks
-)
-install(EXPORT freetype-targets
-  DESTINATION lib/cmake/freetype
-  FILE freetype-config.cmake
-)
-
-
-# Packaging
-# CPack version numbers for release tarball name.
-set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
-set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
-set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH}})
-if (NOT DEFINED CPACK_PACKAGE_DESCRIPTION_SUMMARY)
-  set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${CMAKE_PROJECT_NAME}")
-endif ()
-if (NOT DEFINED CPACK_SOURCE_PACKAGE_FILE_NAME)
-  set(CPACK_SOURCE_PACKAGE_FILE_NAME
-    "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION}-r${PROJECT_REV}"
-    CACHE INTERNAL "tarball basename"
-  )
-endif ()
-set(CPACK_SOURCE_GENERATOR TGZ)
-set(CPACK_SOURCE_IGNORE_FILES
-  "/CVS/;/.svn/;.swp$;.#;/#;/build/;/serial/;/ser/;/parallel/;/par/;~;/preconfig.out;/autom4te.cache/;/.config")
-set(CPACK_GENERATOR TGZ)
-include(CPack)
-
-
-# Add `make dist' target if FREETYPE_DIST is set (which is the default)
-if (NOT DEFINED FREETYPE_NO_DIST)
-  add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
-endif ()
-
-# eof

部分文件因为文件数量过多而无法显示