Merge remote-tracking branch 'contiki-gtk/master'
diff --git a/contiki-gtk/Makefile b/contiki-gtk/Makefile
new file mode 100644
index 0000000..dd8813f
--- /dev/null
+++ b/contiki-gtk/Makefile
@@ -0,0 +1,108 @@
+# Copyright (c) 2002-2004, Adam Dunkels.
+# 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.
+# 3. The name of the author may not be used to endorse or promote
+# products derived from this software without specific prior
+# written permission.
+#
+# 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.
+#
+# This file is part of the Contiki desktop environment
+#
+# $Id: Makefile,v 1.18 2005/04/19 22:18:48 oliverschmidt Exp $
+#
+
+all: contiki
+
+CONTIKI=../contiki
+SDIRS = apps conf ctk lib uip
+CSDIRS = ${addprefix $(CONTIKI)/,apps ctk ek lib uip}
+
+include $(CONTIKI)/Makefile.common
+-include Makefile.depend
+
+CC=gcc
+CFLAGS=-Wall -Wstrict-prototypes -Wmissing-prototypes \
+ -g \
+ ${addprefix -I,$(CSDIRS)} \
+ ${addprefix -I,$(SDIRS)} \
+ `pkg-config --cflags gtk+-2.0`\
+ -DWITH_ETHERNET -DWITH_TAPDEV -DWITH_ASCII \
+ -DWITH_WWW -DWITH_EMAIL -DWITH_UIP \
+ -DWITH_CTKGTK
+LDFLAGS= `pkg-config --libs gtk+-2.0`
+
+vpath %.c ${SDIRS} $(CSDIRS) ${filter-out CVS,${wildcard labs/*}}
+
+%.o: %.c
+ $(CC) $(CFLAGS) -c $(<:.o=.c)
+
+CTKGTK=ctk-gtksim.o ctk-draw.o ctk-gtksim-service.o libconio.o ctk-gtksim-draw.o
+CTKVNC=ctk-vncserver.o libconio.o vnc-server.o vnc-out.o ctk-vncfont.o
+CTKTERM=libconio.o ctk-term.o ctk-term-in.o ctk-term-out.o ctk-termtelnet.o
+
+POP=pop.o popc.o popc-strings.o
+
+contiki: contiki-main.o ek.o arg.o ek-service.o \
+ tcpip.o uip.o uip_arch.o uip-fw.o uip-split.o \
+ timer.o uiplib.o resolv.o resolv.o uipbuf.o \
+ cfs.o cfs-posix.o codeprop.o \
+ tapdev-service.o tapdev.o uip_arp.o uip-fw.o uip-fw-service.o \
+ ctk.o $(CTKGTK) program-handler.o \
+ $(FTP) ftp-dsc.o \
+ $(EDITOR) editor-dsc.o \
+ $(WWW) www-dsc.o \
+ $(SHELL_) shell-dsc.o \
+ $(DHCP) dhcp-dsc.o \
+ processes.o processes-dsc.o \
+ calc.o calc-dsc.o \
+ about.o about-dsc.o \
+ netconf.o netconf-dsc.o \
+ $(TELNET) $(EMAIL) $(IRC) $(VNCVIEWER) $(WEBSERVER) \
+# sock-httpd.o socket.o list.o filecache.o \
+# program-handler.o about.o netconf.o processes.o \
+# about-dsc.o netconf-dsc.o processes-dsc.o \
+# $(CTKGTK) \
+# ctk.o dispatcher.o arg.o \
+# uip.o uip_arch.o uip_arp.o uip-signal.o resolv.o uipbuf.o uip-split.o uip-fw.o\
+# uiplib.o tapdev.o tapdev-drv.o $(WEBSERVER) $(WWW) \
+# mailget.o popclient.o nntpc.o nntpc-strings.o \
+# newslog.o nntpd.o nntpd-strings.o\
+# $(EMAIL) email-dsc.o $(WEBSERVER) $(TELNET) telnet-dsc.o \
+# vnc.o vnc-viewer.o vnc-draw.o \
+# calc.o calc-dsc.o \
+# $(WWW) telnetd.o telnetd-dsc.o shell.o memb.o\
+# mt.o mtarch.o mtp.o \
+# coderecv.o\
+ #maze.o maze-dsc.o
+ gcc $(LDFLAGS) -o $@ $^
+
+clean:
+ rm -f *.o *~ *core contiki *.s
+
+depend:
+ gcc $(CCDEPFLAGS) -MM \
+ ${addprefix -I,$(CSDIRS)} \
+ ${addprefix -I,$(SDIRS)} \
+ ${addsuffix /*.c, $(CSDIRS)} \
+ ${addsuffix /*.c, $(SDIRS)} \
+ *.c > Makefile.depend
+
diff --git a/contiki-gtk/Makefile.depend b/contiki-gtk/Makefile.depend
new file mode 100644
index 0000000..6afde3a
--- /dev/null
+++ b/contiki-gtk/Makefile.depend
@@ -0,0 +1,621 @@
+contiki-main.o: contiki-main.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/lib/clock.h conf/clock-conf.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ctk/ctk-vncserver.h \
+ ../contiki/ctk/ctk-termtelnet.h ../contiki/lib/cfs-posix.h \
+ ../contiki/uip/uip-fw.h ../contiki/apps/about-dsc.h \
+ ../contiki/ek/dsc.h ../contiki/apps/calc-dsc.h \
+ ../contiki/apps/dhcp-dsc.h ../contiki/apps/editor-dsc.h \
+ ../contiki/apps/email-dsc.h ../contiki/apps/ftp-dsc.h \
+ ../contiki/apps/irc-dsc.h ../contiki/apps/netconf-dsc.h \
+ ../contiki/apps/processes-dsc.h ../contiki/apps/shell-dsc.h \
+ ../contiki/apps/vnc-dsc.h ../contiki/apps/www-dsc.h \
+ ../contiki/apps/cmdd.h ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uiplib.h ../contiki/uip/resolv.h ../contiki/lib/memb.h \
+ ../contiki/lib/timer.h
+html-test.o: html-test.c ../contiki/apps/htmlparser.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+pt-test-cpp.o: pt-test-cpp.c
+pt-test.o: pt-test.c ../contiki/ek/pt.h ../contiki/ek/lc.h \
+ ../contiki/ek/lc-switch.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h
+pttest.o: pttest.c ../contiki/ek/pt.h ../contiki/ek/lc.h \
+ ../contiki/ek/lc-switch.h
+smtp-pre.o: smtp-pre.c
+smtp-pre2.o: smtp-pre2.c
+smtp-socket-2.o: smtp-socket-2.c ../contiki/apps/smtp.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/apps/smtp-strings.h \
+ ../contiki/uip/socket-2.h ../contiki/ek/pt-2.h ../contiki/ek/lc.h \
+ ../contiki/ek/lc-switch.h ../contiki/uip/uipbuf.h \
+ ../contiki/lib/memb.h
+test-sem.o: test-sem.c ../contiki/ek/pt-sem.h ../contiki/ek/pt.h \
+ ../contiki/ek/lc.h ../contiki/ek/lc-switch.h
+test-stack.o: test-stack.c lib/lc.h
+codeprop.o: apps/codeprop.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h apps/codeprop.h
+http-user-agent-string.o: apps/http-user-agent-string.c
+httpd-fsdata.o: apps/httpd-fsdata.c
+nntpc-strings.o: apps/nntpc-strings.c
+nntpd-strings.o: apps/nntpd-strings.c
+nntpd.o: apps/nntpd.c ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h apps/nntpd-strings.h apps/nntpd.h
+presenter-dsc.o: apps/presenter-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+presenter-parser.o: apps/presenter-parser.c apps/presenter-parser.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+shell.o: apps/shell.c ../contiki/apps/program-handler.h \
+ ../contiki/ek/dsc.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/lib/cfs.h \
+ ../contiki/lib/cfs-service.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/resolv.h ../contiki/apps/shell.h
+sidcomposer.o: apps/sidcomposer.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h
+test-httpd.o: apps/test-httpd.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/ek/pt.h \
+ ../contiki/ek/lc.h ../contiki/ek/lc-switch.h
+test-proto.o: apps/test-proto.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/ek/pt.h \
+ ../contiki/ek/lc.h ../contiki/ek/lc-switch.h apps/filecache.h
+vnc-draw.o: apps/vnc-draw.c ../contiki/apps/vnc-draw.h uip/uip_arch.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h conf/vnc-conf.h
+wget-dsc.o: apps/wget-dsc.c ../contiki/ek/dsc.h ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+ctk-gtksim-conio.o: ctk/ctk-gtksim-conio.c ../contiki/lib/libconio.h \
+ conf/libconio-conf.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk-draw.h
+ctk-gtksim-draw.o: ctk/ctk-gtksim-draw.c ctk/ctk-gtksim.h \
+ ctk/ctk-gtksim-draw.h
+ctk-gtksim-service.o: ctk/ctk-gtksim-service.c \
+ ../contiki/ctk/ctk-draw-service.h ../contiki/ek/ek-service.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h ctk/ctk-gtksim-draw.h
+ctk-gtksim.o: ctk/ctk-gtksim.c ../contiki/lib/libconio.h \
+ conf/libconio-conf.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk-mouse.h
+lc.o: lib/lc.c lib/lc.h
+mtarch.o: lib/mtarch.c ../contiki/ek/mt.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h lib/mtarch.h
+tapdev-service.o: uip/tapdev-service.c ../contiki/uip/packet-service.h \
+ ../contiki/ek/ek-service.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h uip/tapdev.h \
+ ../contiki/uip/uip_arp.h
+tapdev.o: uip/tapdev.c ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip_arp.h
+uip_arch.o: uip/uip_arch.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h uip/uip_arch.h
+about-dsc.o: ../contiki/apps/about-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+calc-dsc.o: ../contiki/apps/calc-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+calc.o: ../contiki/apps/calc.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ctk/ctk-gtksim.h
+cmdd.o: ../contiki/apps/cmdd.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/uip/psock.h \
+ ../contiki/ek/pt.h ../contiki/ek/lc.h ../contiki/ek/lc-switch.h \
+ ../contiki/uip/uipbuf.h
+dhcp-dsc.o: ../contiki/apps/dhcp-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+dhcp.o: ../contiki/apps/dhcp.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/uip/dhcpc.h
+directory.o: ../contiki/apps/directory.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk-draw.h ../contiki/lib/cfs.h \
+ ../contiki/lib/cfs-service.h ../contiki/ek/ek-service.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h
+editor-dsc.o: ../contiki/apps/editor-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+editor.o: ../contiki/apps/editor.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/lib/cfs.h \
+ ../contiki/lib/cfs-service.h ../contiki/lib/ctk-filedialog.h
+email-dsc.o: ../contiki/apps/email-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+ftp-dsc.o: ../contiki/apps/ftp-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+ftp.o: ../contiki/apps/ftp.c ../contiki/apps/ftpc.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uiplib.h ../contiki/uip/resolv.h ../contiki/lib/memb.h \
+ ../contiki/lib/timer.h ../contiki/lib/clock.h conf/clock-conf.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/lib/cfs.h ../contiki/lib/cfs-service.h
+ftpc-socket.o: ../contiki/apps/ftpc-socket.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/apps/ftpc.h
+ftpc.o: ../contiki/apps/ftpc.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/apps/ftpc.h
+html-strings.o: ../contiki/apps/html-strings.c
+htmlparser.o: ../contiki/apps/htmlparser.c \
+ ../contiki/apps/htmlparser.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h \
+ ../contiki/apps/html-strings.h conf/www-conf.h
+http-strings.o: ../contiki/apps/http-strings.c
+http-user-agent-string.o: ../contiki/apps/http-user-agent-string.c
+httpd-fs.o: ../contiki/apps/httpd-fs.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/apps/httpd.h \
+ ../contiki/ek/contiki.h ../contiki/ek/contiki-version.h \
+ ../contiki/ek/ek-service.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/uip/psock.h \
+ ../contiki/ek/pt.h ../contiki/ek/lc.h ../contiki/ek/lc-switch.h \
+ ../contiki/uip/uipbuf.h ../contiki/apps/httpd-fs.h \
+ ../contiki/apps/httpd-fsdata.h ../contiki/apps/httpd-fsdata.c
+httpd-fsdata.o: ../contiki/apps/httpd-fsdata.c
+httpd.o: ../contiki/apps/httpd.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/apps/httpd.h \
+ ../contiki/uip/psock.h ../contiki/ek/pt.h ../contiki/ek/lc.h \
+ ../contiki/ek/lc-switch.h ../contiki/uip/uipbuf.h \
+ ../contiki/apps/httpd-fs.h ../contiki/apps/httpd-cgi.h
+irc-dsc.o: ../contiki/apps/irc-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+ircc-strings.o: ../contiki/apps/ircc-strings.c
+netconf-dsc.o: ../contiki/apps/netconf-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+netconf.o: ../contiki/apps/netconf.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ctk/ctk-draw.h
+pop.o: ../contiki/apps/pop.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/apps/popc.h \
+ ../contiki/uip/psock.h ../contiki/ek/pt.h ../contiki/ek/lc.h \
+ ../contiki/ek/lc-switch.h ../contiki/uip/uipbuf.h
+popc-strings.o: ../contiki/apps/popc-strings.c
+popc.o: ../contiki/apps/popc.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/apps/popc.h \
+ ../contiki/uip/psock.h ../contiki/ek/pt.h ../contiki/ek/lc.h \
+ ../contiki/ek/lc-switch.h ../contiki/uip/uipbuf.h \
+ ../contiki/apps/popc-strings.h
+processes-dsc.o: ../contiki/apps/processes-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+processes.o: ../contiki/apps/processes.c ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ctk/ctk-gtksim.h
+program-handler.o: ../contiki/apps/program-handler.c \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ek/log.h conf/log-conf.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ conf/program-handler-conf.h
+shell-dsc.o: ../contiki/apps/shell-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+shell-gui.o: ../contiki/apps/shell-gui.c ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/apps/program-handler.h \
+ ../contiki/ek/dsc.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h \
+ ../contiki/apps/shell.h conf/shell-gui-conf.h
+smtp-socket.o: ../contiki/apps/smtp-socket.c ../contiki/apps/smtp.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/apps/smtp-strings.h \
+ ../contiki/uip/psock.h ../contiki/ek/pt.h ../contiki/ek/lc.h \
+ ../contiki/ek/lc-switch.h ../contiki/uip/uipbuf.h \
+ ../contiki/lib/memb.h
+smtp-strings.o: ../contiki/apps/smtp-strings.c
+smtp.o: ../contiki/apps/smtp.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/apps/smtp.h \
+ ../contiki/apps/smtp-strings.h
+telnet-dsc.o: ../contiki/apps/telnet-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+telnet.o: ../contiki/apps/telnet.c ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/apps/telnet.h
+telnetd-dsc.o: ../contiki/apps/telnetd-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+vnc-dsc.o: ../contiki/apps/vnc-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+vnc-viewer.o: ../contiki/apps/vnc-viewer.c ../contiki/apps/vnc-draw.h \
+ uip/uip_arch.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/apps/vnc-viewer.h
+webclient.o: ../contiki/apps/webclient.c ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/tcpip.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/apps/webclient.h \
+ ../contiki/apps/http-strings.h \
+ ../contiki/apps/http-user-agent-string.h ../contiki/uip/resolv.h \
+ ../contiki/uip/uiplib.h conf/www-conf.h
+webserver-dsc.o: ../contiki/apps/webserver-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+webserver.o: ../contiki/apps/webserver.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/apps/http-strings.h \
+ ../contiki/apps/webserver.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/apps/httpd.h ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uiplib.h ../contiki/uip/resolv.h ../contiki/lib/memb.h \
+ ../contiki/lib/timer.h ../contiki/lib/clock.h conf/clock-conf.h \
+ ../contiki/uip/psock.h ../contiki/ek/pt.h ../contiki/ek/lc.h \
+ ../contiki/ek/lc-switch.h ../contiki/uip/uipbuf.h \
+ ../contiki/apps/httpd-fs.h
+www-dsc.o: ../contiki/apps/www-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+ctk-conio-service.o: ../contiki/ctk/ctk-conio-service.c \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk-draw-service.h ../contiki/ek/ek-service.h \
+ conf/ctk-conio-conf.h
+ctk-conio.o: ../contiki/ctk/ctk-conio.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk-draw.h \
+ conf/ctk-conio-conf.h
+ctk-draw.o: ../contiki/ctk/ctk-draw.c ../contiki/ek/ek-service.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ctk/ctk-draw-service.h
+ctk-mouse.o: ../contiki/ctk/ctk-mouse.c ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk-mouse.h
+ctk-term-in.o: ../contiki/ctk/ctk-term-in.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk-term.h \
+ ../contiki/ctk/ctk-term-int.h ../contiki/ctk/ctk-term-ascii.h
+ctk-term-out.o: ../contiki/ctk/ctk-term-out.c \
+ ../contiki/lib/libconio.h conf/libconio-conf.h \
+ ../contiki/ctk/ctk-term-int.h
+ctk-term.o: ../contiki/ctk/ctk-term.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ek/contiki.h ../contiki/ek/contiki-version.h \
+ ../contiki/ek/ek-service.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/uip/uiplib.h ../contiki/uip/resolv.h ../contiki/lib/memb.h \
+ ../contiki/lib/timer.h ../contiki/lib/clock.h conf/clock-conf.h \
+ ../contiki/ctk/ctk-term.h ../contiki/ctk/ctk-term-int.h \
+ ../contiki/ctk/ctk-term-out.h conf/ctk-term-conf.h \
+ ../contiki/lib/libconio.h conf/libconio-conf.h
+ctk-termtelnet.o: ../contiki/ctk/ctk-termtelnet.c \
+ ../contiki/ek/contiki.h ../contiki/ek/contiki-version.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/ctk/ctk-term.h \
+ conf/ctk-term-conf.h
+ctk-vncfont.o: ../contiki/ctk/ctk-vncfont.c
+ctk-vncserver-service.o: ../contiki/ctk/ctk-vncserver-service.c \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk-draw-service.h ../contiki/ek/ek-service.h \
+ ../contiki/ek/contiki.h ../contiki/ek/contiki-version.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/ctk/vnc-server.h \
+ ../contiki/ctk/vnc-out.h ../contiki/ctk/ctk-vncfont.h \
+ ../contiki/ctk/ctk-vncserver.h conf/ctk-vncserver-conf.h
+ctk-vncserver.o: ../contiki/ctk/ctk-vncserver.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ek/contiki.h ../contiki/ek/contiki-version.h \
+ ../contiki/ek/ek-service.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/uip/uiplib.h ../contiki/uip/resolv.h ../contiki/lib/memb.h \
+ ../contiki/lib/timer.h ../contiki/lib/clock.h conf/clock-conf.h \
+ ../contiki/ctk/vnc-server.h ../contiki/ctk/vnc-out.h \
+ ../contiki/ctk/ctk-vncfont.h ../contiki/ctk/ctk-vncserver.h \
+ conf/ctk-vncserver-conf.h ../contiki/lib/libconio.h \
+ conf/libconio-conf.h
+ctk.o: ../contiki/ctk/ctk.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk-mouse.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h
+vnc-out.o: ../contiki/ctk/vnc-out.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h \
+ ../contiki/ctk/vnc-server.h ../contiki/ctk/vnc-out.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h \
+ ../contiki/lib/libconio.h conf/libconio-conf.h \
+ conf/ctk-vncserver-conf.h ../contiki/ctk/ctk-vncfont.h \
+ ../contiki/ctk/ctk-mouse.h
+vnc-server.o: ../contiki/ctk/vnc-server.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h \
+ ../contiki/ctk/vnc-server.h ../contiki/ctk/vnc-out.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h ctk/ctk-gtksim.h
+arg.o: ../contiki/ek/arg.c ../contiki/ek/arg.h
+ek-service.o: ../contiki/ek/ek-service.c ../contiki/ek/ek-service.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/ek/log.h \
+ conf/log-conf.h
+ek.o: ../contiki/ek/ek.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+mt.o: ../contiki/ek/mt.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/mt.h lib/mtarch.h
+cfs-posix.o: ../contiki/lib/cfs-posix.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/lib/cfs.h \
+ ../contiki/lib/cfs-service.h
+cfs.o: ../contiki/lib/cfs.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/lib/cfs.h \
+ ../contiki/lib/cfs-service.h
+conio-portlib.o: ../contiki/lib/conio-portlib.c
+ctk-filedialog.o: ../contiki/lib/ctk-filedialog.c \
+ ../contiki/ek/contiki.h ../contiki/ek/contiki-version.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h \
+ ../contiki/lib/ctk-filedialog.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/lib/cfs.h \
+ ../contiki/lib/cfs-service.h
+ctk-textedit.o: ../contiki/lib/ctk-textedit.c \
+ ../contiki/lib/ctk-textedit.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ctk/ctk-gtksim.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+libconio.o: ../contiki/lib/libconio.c ../contiki/lib/libconio.h \
+ conf/libconio-conf.h
+list.o: ../contiki/lib/list.c ../contiki/lib/list.h
+memb.o: ../contiki/lib/memb.c ../contiki/lib/memb.h
+petsciiconv.o: ../contiki/lib/petsciiconv.c
+readelf.o: ../contiki/lib/readelf.c
+strncasecmp.o: ../contiki/lib/strncasecmp.c
+timer.o: ../contiki/lib/timer.c ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h
+dhcpc.o: ../contiki/uip/dhcpc.c ../contiki/ek/contiki.h \
+ ../contiki/ek/contiki-version.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/uip/uiplib.h \
+ ../contiki/uip/resolv.h ../contiki/lib/memb.h ../contiki/lib/timer.h \
+ ../contiki/lib/clock.h conf/clock-conf.h ../contiki/uip/dhcpc.h \
+ ../contiki/uip/uip_arp.h ../contiki/ek/pt.h ../contiki/ek/lc.h \
+ ../contiki/ek/lc-switch.h
+psock.o: ../contiki/uip/psock.c ../contiki/uip/psock.h \
+ ../contiki/ek/pt.h ../contiki/ek/lc.h ../contiki/ek/lc-switch.h \
+ ../contiki/uip/uipbuf.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/tcpip.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/lib/memb.h
+resolv.o: ../contiki/uip/resolv.c ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/tcpip.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/resolv.h
+slipdev.o: ../contiki/uip/slipdev.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip-fw.h \
+ ../contiki/uip/slipdev.h
+tcpdump.o: ../contiki/uip/tcpdump.c ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h
+tcpip.o: ../contiki/uip/tcpip.c ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/ek-service.h \
+ ../contiki/uip/uip-fw.h ../contiki/lib/timer.h ../contiki/lib/clock.h \
+ conf/clock-conf.h ../contiki/uip/packet-service.h \
+ ../contiki/uip/uip-split.h
+uip-fw-service.o: ../contiki/uip/uip-fw-service.c \
+ ../contiki/uip/packet-service.h ../contiki/ek/ek-service.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/uip/uip-fw.h
+uip-fw.o: ../contiki/uip/uip-fw.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip_arch.h \
+ ../contiki/uip/uip-fw.h
+uip-pt.o: ../contiki/uip/uip-pt.c
+uip-split.o: ../contiki/uip/uip-split.c ../contiki/uip/uip-split.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip-fw.h \
+ ../contiki/uip/uip_arch.h
+uip.o: ../contiki/uip/uip.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip_arch.h
+uip_arp.o: ../contiki/uip/uip_arp.c ../contiki/uip/uip_arp.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+uipbuf.o: ../contiki/uip/uipbuf.c ../contiki/uip/uipbuf.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/uip/tcpip.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ek/loader.h
+uiplib.o: ../contiki/uip/uiplib.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/tcpip.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ek/loader.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/uiplib.h
diff --git a/contiki-gtk/apps/http-user-agent-string b/contiki-gtk/apps/http-user-agent-string
new file mode 100644
index 0000000..948c6bc
--- /dev/null
+++ b/contiki-gtk/apps/http-user-agent-string
@@ -0,0 +1 @@
+http_user_agent_fields "Connection: close\r\nUser-Agent: Contiki/pre-1.1 (GTK simulation; http://dunkels.com/adam/contiki/)\r\n\r\n"
diff --git a/contiki-gtk/apps/http-user-agent-string.c b/contiki-gtk/apps/http-user-agent-string.c
new file mode 100644
index 0000000..a59438d
--- /dev/null
+++ b/contiki-gtk/apps/http-user-agent-string.c
@@ -0,0 +1,3 @@
+char http_user_agent_fields[102] =
+/* "Connection: close\r\nUser-Agent: Contiki/pre-1.1 (GTK simulation; http://dunkels.com/adam/contiki/)\r\n\r\n" */
+{0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31, 0x20, 0x28, 0x47, 0x54, 0x4b, 0x20, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x29, 0xd, 0xa, 0xd, 0xa, };
diff --git a/contiki-gtk/apps/http-user-agent-string.h b/contiki-gtk/apps/http-user-agent-string.h
new file mode 100644
index 0000000..42f8123
--- /dev/null
+++ b/contiki-gtk/apps/http-user-agent-string.h
@@ -0,0 +1 @@
+extern char http_user_agent_fields[102];
diff --git a/contiki-gtk/apps/httpd-fsdata.c b/contiki-gtk/apps/httpd-fsdata.c
new file mode 100644
index 0000000..fc267e6
--- /dev/null
+++ b/contiki-gtk/apps/httpd-fsdata.c
@@ -0,0 +1,1210 @@
+static const unsigned char data_cgi_files[] = {
+ /* /cgi/files */
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0,
+ 0x69, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e,
+ 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x74, 0x20, 0x3c, 0x68, 0x31,
+ 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74,
+ 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68, 0x31,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x74, 0x61, 0x62, 0x6c,
+ 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x31,
+ 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa, 0x74, 0x20, 0x3c, 0x74,
+ 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x3c,
+ 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74,
+ 0x64, 0x3e, 0xa, 0x63, 0x20, 0x61, 0x20, 0x2f, 0x69, 0x6e,
+ 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x74,
+ 0x20, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72,
+ 0x3e, 0x20, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e,
+ 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f,
+ 0x63, 0x67, 0x69, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22,
+ 0x3e, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x66, 0x69, 0x6c, 0x65,
+ 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e,
+ 0x3c, 0x74, 0x64, 0x3e, 0xa, 0x63, 0x20, 0x61, 0x20, 0x2f,
+ 0x63, 0x67, 0x69, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0xa,
+ 0x74, 0x20, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74,
+ 0x72, 0x3e, 0x20, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64,
+ 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0x22, 0x3e,
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0x3c, 0x2f,
+ 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64,
+ 0x3e, 0xa, 0x63, 0x20, 0x61, 0x20, 0x2f, 0x63, 0x67, 0x69,
+ 0x2f, 0x74, 0x63, 0x70, 0xa, 0x74, 0x20, 0x3c, 0x2f, 0x74,
+ 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x20, 0x3c, 0x74,
+ 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f,
+ 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22,
+ 0x3e, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x63,
+ 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
+ 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa, 0x63,
+ 0x20, 0x61, 0x20, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70, 0x72,
+ 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0xa, 0x74, 0x20,
+ 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e,
+ 0x20, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c,
+ 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63,
+ 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2e, 0x63, 0x73, 0x73,
+ 0x22, 0x3e, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69,
+ 0x2e, 0x63, 0x73, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f,
+ 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa, 0x63, 0x20,
+ 0x61, 0x20, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69,
+ 0x2e, 0x63, 0x73, 0x73, 0xa, 0x74, 0x20, 0x3c, 0x2f, 0x74,
+ 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x20, 0x3c, 0x74,
+ 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x34, 0x30, 0x34, 0x2e,
+ 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x34, 0x30, 0x34,
+ 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
+ 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa, 0x63,
+ 0x20, 0x61, 0x20, 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74,
+ 0x6d, 0x6c, 0xa, 0x74, 0x20, 0x3c, 0x2f, 0x74, 0x64, 0x3e,
+ 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x20, 0x3c, 0x74, 0x72, 0x3e,
+ 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
+ 0x66, 0x3d, 0x22, 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x73, 0x63,
+ 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x70,
+ 0x6e, 0x67, 0x22, 0x3e, 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x73,
+ 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e,
+ 0x70, 0x6e, 0x67, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74,
+ 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa, 0x63, 0x20, 0x61,
+ 0x20, 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x73, 0x63, 0x72, 0x65,
+ 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x70, 0x6e, 0x67,
+ 0xa, 0x74, 0x20, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f,
+ 0x74, 0x72, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x3e, 0xa, 0x69, 0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65,
+ 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xa, 0x2e, };
+
+static const unsigned char data_cgi_tcp[] = {
+ /* /cgi/tcp */
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0,
+ 0x69, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e,
+ 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x74, 0x20, 0x3c, 0x68, 0x31,
+ 0x3e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x63,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74,
+ 0x68, 0x3d, 0x22, 0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa,
+ 0x74, 0x20, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x68, 0x3e,
+ 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x3c, 0x2f, 0x74, 0x68, 0x3e,
+ 0x3c, 0x74, 0x68, 0x3e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65,
+ 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x53,
+ 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c,
+ 0x74, 0x68, 0x3e, 0x52, 0x65, 0x74, 0x72, 0x61, 0x6e, 0x73,
+ 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f,
+ 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x69, 0x6d,
+ 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68,
+ 0x3e, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x3c, 0x2f, 0x74, 0x68,
+ 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x63, 0x20, 0x62,
+ 0xa, 0x74, 0x20, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x3e, 0xa, 0x69, 0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65,
+ 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0xa, 0x2e, };
+
+static const unsigned char data_img_screenshot_png[] = {
+ /* /img/screenshot.png */
+ 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x70, 0x6e, 0x67, 0,
+ 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00,
+ 00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 0x1, 0x80,
+ 00, 00, 0x1, 0xf, 0x4, 0x3, 00, 00, 00, 0xb9,
+ 0xf, 0xe, 0x81, 00, 00, 00, 0x30, 0x50, 0x4c, 0x54,
+ 0x45, 0x10, 0x10, 0x10, 0xff, 0xff, 0xff, 0xe0, 0x40, 0x40,
+ 0x60, 0xff, 0xff, 0xe0, 0x60, 0xe0, 0x40, 0xe0, 0x40, 0x40,
+ 0x40, 0xe0, 0xff, 0xff, 0x40, 0xe0, 0xa0, 0x40, 0x9c, 0x74,
+ 0x48, 0xff, 0xa0, 0xa0, 0x54, 0x54, 0x54, 0x88, 0x88, 0x88,
+ 0xa0, 0xff, 0xa0, 0xa0, 0xa0, 0xff, 0xc0, 0xc0, 0xc0, 0xe,
+ 0x8c, 0x9e, 0x90, 00, 00, 00, 0x9, 0x70, 0x48, 0x59,
+ 0x73, 00, 00, 0xf, 0xa0, 00, 00, 0xf, 0xa0, 0x1,
+ 0xa0, 0x6a, 0x8c, 0x77, 00, 00, 0x7, 0xcc, 0x49, 0x44,
+ 0x41, 0x54, 0x78, 0xda, 0xed, 0x5d, 0x4b, 0x8e, 0xa4, 0x38,
+ 0x10, 0xb5, 0x57, 0x6c, 0xed, 0x6d, 0x6f, 0xea, 0x32, 0xad,
+ 0x59, 0xf4, 0x39, 0x46, 0xb3, 0xa6, 0x57, 0x48, 0x75, 0x9b,
+ 0x92, 0x5a, 0x6a, 0xa9, 0xae, 0xc0, 0x22, 0xf, 0x96, 0xb,
+ 0xc6, 0xe1, 0x1f, 0x86, 0xcc, 0x82, 0x20, 0xe5, 0x24, 0x1c,
+ 0x59, 0x11, 0xee, 0x4c, 0x30, 0x55, 0xe0, 0x78, 0xf1, 0xfc,
+ 0xfc, 0xc1, 0x54, 0xa3, 0xfe, 0x63, 0x6e, 0x8a, 0xda, 0x1,
+ 0x1, 0x40, 0xed, 0x80, 00, 0xa0, 0x76, 0x40, 00, 0x50,
+ 0x3b, 0x20, 00, 0xa8, 0x1d, 0x10, 00, 0xd4, 0xe, 0x8,
+ 00, 0x6a, 0x7, 0x4, 00, 0xb5, 0x3, 0x2, 0x80, 0xda,
+ 0x1, 0x1, 0x40, 0xed, 0x80, 00, 0xa0, 0x76, 0x40, 00,
+ 0x50, 0x3b, 0x20, 00, 0xa8, 0x1d, 0x10, 00, 0xd4, 0xe,
+ 0x8, 00, 0x6a, 0x7, 0x4, 00, 0xb5, 0x3, 0x2, 0x80,
+ 0xda, 0x1, 0x1, 0xb0, 0x3e, 0x30, 0x80, 0x29, 0x35, 0x50,
+ 0x59, 0xaf, 0xba, 0xcd, 0x9f, 0xa3, 00, 0xf4, 0x5d, 0x3f,
+ 0x5f, 0x5, 0x76, 0xdd, 0xc7, 0x1f, 0xe9, 0xb7, 0x2f, 0x5e,
+ 0x5, 0x40, 0xa7, 0x8a, 0xfd, 0xdb, 0x32, 0x91, 00, 0x6,
+ 0xcf, 0x42, 0x1f, 0x3e, 0xdd, 0x30, 0x9c, 0xe2, 0xfb, 0x90,
+ 0x83, 0x7, 0x35, 0xc0, 0x95, 0xeb, 0x63, 0x7, 0xe5, 0x47,
+ 0x5f, 0xe, 0x1, 0x80, 0xb, 0xf9, 0x8b, 0x41, 0x46, 0x75,
+ 0x21, 0x32, 0x3b, 0xf4, 0xd6, 0x2, 0x10, 0x4b, 0xe, 0x65,
+ 0x7a, 0x17, 0xd2, 0x91, 0x47, 0x1, 0xc0, 0x46, 0x75, 0x27,
+ 0x55, 0x21, 0x97, 0x72, 0xd4, 0xbb, 0x47, 0x1, 0x14, 0x71,
+ 0xc8, 0x1a, 0x50, 0xa7, 0x69, 0x20, 0x14, 0x3, 0xa5, 0x17,
+ 0xc, 0x1c, 0xa9, 0x42, 0xb1, 0xe, 0x46, 0x31, 0xc7, 0x68,
+ 0xa4, 0xba, 0xf9, 0x6c, 00, 0x10, 0xf5, 0xa4, 0xbf, 0x45,
+ 0xf9, 0xc3, 0x1, 00, 0xd, 0x1a, 0x1a, 00, 0x37, 0x13,
+ 00, 0xd4, 0x26, 00, 0xa8, 0x4d, 00, 0x50, 0x9b, 00,
+ 0x78, 0xb6, 0xd9, 0xc2, 0x70, 00, 0xfe, 0x69, 0x2b, 0x19,
+ 0x95, 0x4d, 0xfb, 0x23, 0xdc, 0x18, 0x30, 0xd6, 0x2a, 0x88,
+ 0xbe, 0xfb, 0xd2, 0x28, 0x6, 0xc8, 0x43, 0xbe, 0x4a, 0xc6,
+ 0xb9, 0xee, 0x58, 0xd0, 0x6e, 0xa3, 0xef, 0x10, 0xc0, 0x80,
+ 0x1, 0xa3, 0x83, 00, 0x8c, 0xc6, 0x31, 0x40, 0x1e, 0xf2,
+ 0xb5, 0x6, 0x1c, 0x5, 0xde, 0xac, 0x66, 0xaa, 0x1, 0x9d,
+ 0xda, 0x20, 0xc3, 0x54, 0x3, 0x3a, 0x35, 0x42, 0x86, 0xa9,
+ 0x6, 0xe6, 0x6e, 00, 0xc9, 0x40, 0x63, 0x66, 0x72, 0x47,
+ 0xa0, 0x35, 0xe4, 0x85, 0x1, 0x2a, 0x6, 0x9c, 0x96, 0x99,
+ 0x33, 00, 0x43, 0x9, 0xc6, 0xc, 0x40, 0x67, 0xc0, 0x9a,
+ 0x1, 0xa3, 0xd8, 0x32, 0x60, 0x13, 0x1, 0x58, 0x6, 0xfe,
+ 0x6d, 0x2b, 0x85, 0x9e, 0xd8, 0xc0, 0x68, 0x4e, 0xfb, 0x23,
+ 0xec, 0x18, 0xd0, 0x30, 0x16, 0x35, 0xa, 0x86, 0x12, 0x28,
+ 0x6, 0xc8, 0x43, 0xbe, 0x4a, 0xc6, 0x84, 0x26, 0x8, 00,
+ 0xdc, 0x21, 0x80, 0x1, 0x3, 0x40, 0x81, 0x56, 0x78, 0x6,
+ 0xc8, 0x43, 0xbe, 0xd6, 0x80, 0x9f, 0x90, 0x29, 0xc6, 0x1a,
+ 0xf0, 0xb3, 0x49, 0x85, 0x6f, 0x85, 0xc8, 0x43, 0xbe, 0xd6,
+ 0x40, 0x31, 0xa9, 0x67, 0xa9, 0x81, 0xf2, 0xb6, 0xa, 0x8e,
+ 0x1, 0x42, 0x83, 0xd6, 0x7e, 0xcf, 0x9a, 0x66, 0xc0, 0xcd,
+ 0xbe, 0xa0, 0xb1, 0x59, 0x7a, 0xbc, 0xca, 0xb7, 0xcd, 0x80,
+ 0x4e, 0xfd, 0xae, 0xa, 0x4d, 0xbf, 0x4a, 0xb7, 0x54, 0xfc,
+ 0xd6, 0xc2, 0xcf, 0x1b, 0x67, 0xc0, 0x40, 0x6b, 0xe9, 0x1d,
+ 0xd, 0x29, 0x30, 0x30, 0xe7, 0x11, 00, 0xc8, 0x19, 0x8,
+ 0xff, 0x7c, 0xe4, 0x97, 00, 0x2c, 0x7, 0x6, 0x94, 0xcd,
+ 00, 0xe2, 0xa7, 0x4, 0x70, 0x6f, 0x52, 0xd3, 0x16, 0x3,
+ 0xd0, 0xa, 0xf9, 0xba, 0x6e, 0xb3, 0x6, 0xac, 0x8d, 0x1a,
+ 0xd0, 0xe1, 0xe, 0x69, 0xd3, 0xc, 0xec, 0x35, 0xa1, 00,
+ 0xb0, 0x69, 0x6, 0x30, 0xb6, 0xcf, 0xc0, 0xcf, 0xb6, 0xd3,
+ 0xeb, 0x33, 0x40, 0x1e, 0xe2, 0x9d, 0xf4, 0xfa, 0xc, 0x90,
+ 0x87, 0x58, 0x34, 0x40, 0x1d, 0xe2, 0x57, 0xd3, 0x40, 0xd9,
+ 0x91, 0xe1, 0x18, 0x68, 0xcc, 0xc, 0xdc, 0x14, 0x82, 0x21,
+ 0xb5, 0x31, 0x1a, 0xf2, 0xec, 0x18, 0x30, 0x61, 0x46, 0xf,
+ 0x23, 0x21, 0xcd, 0x94, 0x81, 0x70, 0x73, 0x14, 0x8c, 0x29,
+ 0x3, 0x26, 0x1, 0xe0, 0xca, 0x80, 0x79, 0x5, 0x6, 0x34,
+ 0xe3, 0x56, 0xc8, 0xaf, 0x13, 0xfb, 0x9b, 0xa3, 0xc8, 0x56,
+ 0xe8, 0x67, 0x5b, 0xc9, 0x58, 0xd, 0x13, 0x19, 0x3f, 0x21,
+ 0x83, 0x3c, 0x3f, 0x6, 0xac, 0xb2, 0x51, 0x2, 0x38, 0xd,
+ 0x90, 0x87, 0x7c, 0x95, 0xcc, 0xac, 0x61, 0xb, 0x79, 0x7e,
+ 0xc, 0x94, 00, 0x30, 0xc, 0x90, 0x87, 0x7c, 0x95, 0x8a,
+ 0x46, 0x88, 0xa7, 0x6, 0xf2, 0x40, 0x82, 0xab, 0x6, 0x6c,
+ 0x7e, 0xd2, 0x80, 0xa9, 0x6, 0xac, 0x3d, 0x38, 0x16, 0x3a,
+ 0x70, 0x61, 0x3b, 0xd9, 0xb7, 0xb7, 0xeb, 0x65, 0x1a, 0x27,
+ 0x94, 0x5d, 0xa7, 0x34, 0xae, 0x87, 0xf3, 0xca, 0x63, 0x5b,
+ 0xe5, 0x1c, 0x1e, 0x4a, 0x1c, 0x2, 0xe0, 0xdc, 0x48, 00,
+ 0xdc, 0x16, 0xf, 0xe0, 0x6d, 0x71, 0x6c, 0xda, 0x4, 0x10,
+ 0x6, 0x73, 0xbe, 0xe, 0xd5, 0x5, 00, 0xe5, 0x27, 00,
+ 0xe3, 0x38, 0x3, 0x18, 0xc7, 0x8b, 0xcf, 0xfb, 0x63, 0xd7,
+ 0xbc, 0xf, 0xce, 0x66, 0xf3, 0xe7, 0xc1, 0x19, 0xe1, 0xd8,
+ 0x36, 0x3, 0xbe, 0xe, 0xe9, 0xfa, 0xc, 0x4c, 0x89, 0x81,
+ 0xcb, 0x8, 0xce, 0x4, 0x27, 0x3, 0x13, 0x3e, 0xbf, 0x4a,
+ 0x37, 0xc, 0x44, 0x50, 0x2e, 0xb7, 0xc3, 0x40, 0x90, 0xf1,
+ 0x13, 00, 0xc4, 0x48, 0x8e, 0xe3, 0xe8, 0x3e, 0xd1, 0xc9,
+ 0xe0, 0x58, 0xc8, 0x47, 0x20, 0x71, 0x7f, 0xcd, 0x40, 0xa0,
+ 0xc, 0xc3, 0x80, 0x36, 0xcf, 0x2, 0x10, 0x18, 0x70, 0xee,
+ 0x27, 0x67, 0x63, 0xbd, 0x8e, 0xce, 0x47, 0x30, 0x69, 0xff,
+ 0x2b, 0x6, 0xf6, 00, 0x84, 0x47, 0x6d, 0x60, 0x52, 0xfc,
+ 0x64, 0xd, 0xa4, 0x2a, 0x4, 0xdb, 0xa4, 0x9, 0xf8, 0xca,
+ 0xfa, 0x78, 0x54, 0x3, 0x30, 0x98, 0x33, 0x9e, 0x83, 0xa7,
+ 00, 0xc0, 0xda, 0xf5, 0x3a, 0x2e, 00, 0x94, 0xc7, 0x36,
+ 0xcb, 0x29, 0xac, 0x3a, 00, 0x58, 0x92, 0xdb, 0x5d, 0xd8,
+ 0xbd, 0x67, 0x6a, 0x3e, 0x6d, 0x9a, 0x2e, 0xe3, 0x91, 0x53,
+ 0xf7, 0x1, 0xfc, 0xc1, 0xa5, 0x12, 0xc0, 0x7a, 0x69, 0xf7,
+ 0xfe, 0xf2, 0x8a, 0x2e, 0x76, 0xe7, 0x8c, 0x7, 0xb0, 0xba,
+ 0xc0, 0xcd, 0xf5, 0x8a, 0x3, 0xf5, 0x19, 0xc8, 0xeb, 0x57,
+ 0x36, 0x3e, 0x54, 0x32, 0xaf, 0xe9, 0xa6, 0xfd, 0x22, 0xf2,
+ 0x3a, 0x1, 0x48, 0xc7, 0x1, 0x40, 0x5c, 0x91, 0x54, 0xf3,
+ 0xb9, 0x37, 0xd7, 0xd3, 0xe9, 0x9c, 0x5d, 00, 0x48, 0x2,
+ 0x22, 00, 0xad, 0x4a, 0x67, 0xd2, 0x52, 0xe8, 0x3a, 0x5,
+ 0x67, 0xb4, 0x9d, 0x9f, 0xa4, 0x9f, 0x8f, 0x27, 0x6, 0xf2,
+ 0xb5, 0x7c, 0x5a, 0x5e, 0xaf, 0x5c, 0x2b, 0xae, 0xcb, 0x80,
+ 0xf2, 0xed, 0x43, 0xe1, 0xa4, 0xca, 0xeb, 0xbb, 0x11, 0xd8,
+ 0x5c, 0x59, 0x60, 0x27, 0x3, 0xbd, 0x3, 0xc0, 0x3f, 0xde,
+ 0x1d, 0xd7, 0x83, 0xd3, 0xf8, 0x39, 0xad, 0xd4, 0x1f, 0x2,
+ 0x70, 0x44, 0x3, 0xce, 0xfd, 0x1c, 0xa5, 0xa2, 0x76, 0xa7,
+ 0x65, 0xd2, 0xbc, 0x9f, 0xeb, 0xb1, 0xd1, 0x5f, 0x1, 0xb0,
+ 0xa9, 0x9a, 0xf8, 0x73, 0x94, 0x2d, 0xaf, 0x97, 0x1, 0x60,
+ 0xaa, 0xd0, 0x43, 0x1a, 0x48, 0x91, 0x4d, 0xcf, 0x37, 0xe8,
+ 0x39, 0xe2, 0x45, 0x7d, 0x9e, 0xf5, 0x90, 0x34, 0x92, 0x5b,
+ 0x21, 0xa8, 0xeb, 0x46, 0xcf, 0xa0, 0x57, 0xcf, 0x4c, 0x84,
+ 0xb5, 0x62, 0x7f, 0xb4, 0xaa, 0x6, 0x8e, 0x34, 0x7f, 0x5f,
+ 0xd9, 0x91, 0x66, 0x14, 0x5, 0xe0, 0x50, 0x47, 0x56, 0xc5,
+ 0x2e, 0x23, 0xb6, 0x4c, 0x54, 0x47, 0xf6, 0x7, 0x69, 0x35,
+ 0x1, 0x60, 0xcb, 0x4, 0x13, 0x6, 0x84, 0x1, 0x61, 0x40,
+ 0x18, 0x68, 0x9d, 0x81, 0x5f, 0xb8, 0x54, 0x95, 0x81, 0xad,
+ 0x72, 0xa, 0x83, 0x3c, 0x3b, 0x6, 0x4c, 0x1a, 0x82, 0xbb,
+ 0x2d, 0x8a, 0x1, 0x24, 0x1, 0x55, 0x35, 0xb0, 0x55, 0x8e,
+ 0xb1, 0xf9, 0xde, 0xa2, 0x86, 0x3c, 0x43, 0x6, 0x60, 0x24,
+ 0x67, 0xfd, 0x86, 0xa5, 0x6, 0xc, 0xc, 0xe1, 0x14, 0xdc,
+ 0x60, 0xb4, 0x9a, 0xa7, 0x6, 0x60, 0xc4, 0x6e, 0x35, 0x6c,
+ 0x78, 0x6a, 0xa0, 0x98, 0x87, 0x5a, 0x96, 0x1a, 0xb0, 0x2e,
+ 0xf6, 0x7e, 0xb6, 0x6c, 0xb5, 0xc5, 0x31, 0x80, 0xb4, 0xaa,
+ 0xc, 0x6c, 0x95, 0x93, 0x6f, 0x6a, 0x28, 0xb, 0x79, 0x7e,
+ 0xc, 0x68, 0x98, 0x79, 0x6b, 0x2f, 0x3, 0x9e, 0xc, 0x38,
+ 0xc7, 0x5d, 0x5f, 0xa0, 0x61, 0xcb, 0x94, 0x81, 0x3c, 0x23,
+ 0x66, 0xca, 0x80, 0xa, 0x55, 0x48, 0xf3, 0x65, 0x60, 0xae,
+ 0x42, 0x3c, 0x19, 0x28, 0xaa, 0x10, 0x4f, 0x6, 0xa0, 0x23,
+ 0x86, 0x9e, 0xc0, 0x6d, 0x78, 0x32, 00, 0x3d, 0x18, 0x24,
+ 0xf7, 0xf, 0xc7, 0xc0, 0x27, 0x2e, 0x55, 0x65, 0x60, 0xab,
+ 0x1c, 0x7f, 0x53, 0xd4, 0xfa, 0x31, 0x1d, 0xe4, 0xd9, 0x31,
+ 0x60, 0x52, 0x57, 0xec, 0xba, 0x32, 0x14, 0x3, 0x48, 0x2,
+ 0xaa, 0x6a, 0x60, 0xab, 0x1c, 0xe3, 0xef, 0x55, 0x7b, 0x2,
+ 0x34, 0xe4, 0xf9, 0x31, 0xa0, 0xd3, 0x84, 0xc6, 0xe0, 0x18,
+ 0x68, 0x4d, 0x3, 0xe5, 0x94, 0x92, 0xa7, 0x6, 0xe6, 0x35,
+ 0x5, 0x9e, 0x1a, 0x28, 0x6f, 0xab, 0xd4, 0xd7, 00, 0x3c,
+ 0xf7, 0x33, 0xa6, 0x5, 0xec, 0xeb, 0xbe, 0xaf, 0x8b, 0xdf,
+ 0x4f, 0xe7, 0x5c, 0xc6, 0x23, 0xeb, 0xcd, 0xfb, 0xc, 0x20,
+ 0x6d, 0x7e, 0xd4, 0x20, 0x3f, 0x23, 0xb1, 0xf, 0x20, 0xff,
+ 0xfe, 0x18, 0x3f, 0x4b, 00, 0xc5, 0xec, 0xf1, 0x71, 00,
+ 0x87, 0x18, 0x78, 0xcb, 0x4f, 0xa4, 0x1c, 0x3, 0x90, 0x9f,
+ 00, 0x29, 00, 0x14, 0xeb, 0x69, 0xf1, 0xaf, 0x59, 0xd3,
+ 0x1a, 0x9b, 0x2a, 0xd7, 0x9f, 0x9f, 0xc2, 0x40, 0xf9, 0xe0,
+ 0x6, 0xa, 0x40, 0x78, 0x28, 0xaa, 0x60, 0x60, 0xb5, 0xde,
+ 0x1c, 0x17, 0x1, 0x43, 0xd2, 0xaa, 0x5c, 0x7f, 0x7e, 0xe,
+ 0x3, 0x47, 0x1, 0xac, 0x19, 0x58, 0xad, 0x37, 0x97, 0x7f,
+ 0x3f, 0x6c, 0xc2, 0x7f, 0xd, 0x93, 0xd7, 0x9f, 0xdb, 0x60,
+ 0xe0, 0x6, 0xc0, 0x72, 0xbd, 0xb9, 0x4, 0x10, 0x1e, 0x4f,
+ 0x98, 0xd7, 0x9f, 0xab, 0x33, 0x30, 0xa5, 0x67, 0xe3, 0x90,
+ 00, 0x7c, 0x2b, 0xf4, 0x95, 0x6, 0x16, 0x55, 0xc8, 0xc6,
+ 0xbf, 0x29, 0x8e, 0x55, 0x2b, 0x1e, 0xab, 0xce, 0x40, 0xb2,
+ 0xc5, 0xf3, 0x40, 0x5b, 00, 0xa6, 0xf5, 0x39, 0x95, 0x1f,
+ 0xb7, 0xf9, 0xf5, 0x89, 0x4b, 0x55, 0x7b, 0x62, 0x64, 0x99,
+ 0x90, 0xea, 0x32, 0x50, 0x9, 00, 0xb6, 0x4c, 0xb0, 0x7d,
+ 00, 0xc8, 0x50, 0x54, 0x5, 0x70, 0x80, 0x82, 0xd7, 0x67,
+ 0xe0, 0x88, 0x6, 0xc6, 0x2a, 0xc6, 0x5e, 0x3, 0x13, 0x8d,
+ 0x6, 0xde, 0xaa, 0x31, 0x30, 0xd2, 0x68, 0x60, 0xaa, 0x9,
+ 0xa0, 0x2a, 0x3, 0x8d, 0x99, 0x2a, 0x8c, 0x25, 0x80, 0xae,
+ 0x78, 0x9, 0x4, 0x4f, 00, 0x2e, 0xf2, 0x5d, 0xd7, 0xf7,
+ 0x6e, 0xc3, 0x16, 00, 0x60, 0x50, 0x3d, 0x5f, 00, 0x5d,
+ 0x10, 0x40, 0xcf, 0x16, 0x40, 0x1f, 00, 0x74, 0x6c, 0x1,
+ 0xa8, 0xf0, 0x56, 0x1c, 0xb6, 0x55, 0xa8, 0xf3, 0xf5, 0x1f,
+ 0xbe, 0x99, 0x2, 0x38, 0x2c, 0xe2, 0xf7, 0x2a, 0xe9, 0xf7,
+ 0x8f, 0x3a, 0xd7, 0x79, 0xef, 0xfa, 0xd4, 0x8d, 0x75, 0x3d,
+ 0xe4, 0xcf, 0x62, 0xe0, 0x43, 0xd7, 0x63, 0xa0, 0xf, 0x1a,
+ 0x46, 0x32, 0x50, 0x29, 0x70, 0x1f, 0xaa, 0x12, 0x5, 0x8e,
+ 0x81, 0xde, 0x5, 0xdf, 0x1, 0xe8, 0x7a, 0xc8, 0x9f, 0xc6,
+ 0x80, 0xaa, 0x44, 0x41, 0x9, 00, 0xc5, 0x40, 0x2d, 0xd,
+ 0xa8, 0x4a, 0x14, 0x2c, 0xaa, 0xd0, 0x99, 0x1a, 0x50, 0x95,
+ 0x28, 0xf0, 0x22, 0x8e, 0x5f, 0x28, 0x6, 0xaa, 0x69, 0x40,
+ 0xdb, 0x3a, 0x1a, 0x50, 0xbe, 0xf6, 0xf8, 0x66, 0xf4, 0x54,
+ 0xd, 0x68, 0xf5, 0xa3, 0xe, 0x3, 0xe, 0xc1, 0xa0, 0x3a,
+ 0x7c, 0x47, 0xf6, 0x5e, 0xc7, 0x7e, 0x5b, 0xa7, 0x81, 0x1a,
+ 0x16, 0x86, 0x12, 0xa1, 0x2f, 0x83, 0xfc, 0x59, 0xc, 0x7c,
+ 0x7e, 0xd8, 0x4a, 0xc, 0xa8, 0x3e, 0xbe, 0xa5, 0x12, 0xdb,
+ 0xf, 0x34, 0x66, 0x30, 0x9c, 0xee, 00, 0x45, 0x7f, 0x32,
+ 0x3, 0xb5, 0xc, 0x44, 0xdc, 0xd, 0x7d, 0x8f, 0x1e, 0xb,
+ 0x51, 0x47, 0xfc, 0x96, 0x1, 0xff, 0x6e, 0xd5, 0xfe, 0x74,
+ 0xd, 0x54, 0x63, 0x60, 0xf0, 0xe1, 0xef, 0x3a, 0xec, 0xa4,
+ 0x9e, 0x3a, 0xe2, 0x6b, 0xb, 0xf3, 0x99, 0xd0, 0xc, 0xe1,
+ 0x18, 0xf8, 0x4b, 0x93, 0x5c, 0x5f, 0x35, 0x28, 0x84, 0x35,
+ 0xcb, 0x40, 0x2, 0x30, 0x8f, 0xff, 0x1f, 0x4, 0x40, 0x44,
+ 0xc0, 0xa7, 0x7, 00, 0x2f, 0x62, 0x4d, 00, 0x40, 0xb8,
+ 0xe1, 0x85, 0xc2, 0xca, 0xbf, 0x5b, 0x36, 0xee, 0x37, 0xcc,
+ 0x40, 0x3f, 0xc4, 0x77, 0xf8, 0xaa, 0xc4, 0x44, 0xd7, 0xdf,
+ 0xa6, 0x76, 0x35, 00, 0x4a, 0xcd, 0xaf, 0x27, 0xe, 0x77,
+ 0x22, 0x42, 0x3e, 0x2, 0x89, 0xfb, 0xed, 0x32, 0xe0, 0xdc,
+ 0x4f, 0xce, 0xa6, 0x39, 0x70, 0xc8, 0x47, 0x30, 0x71, 0xbf,
+ 0x7d, 0xd, 0xa4, 0x2a, 0x14, 0xdf, 0x92, 0x9c, 0xe7, 0x3,
+ 0x71, 0xbf, 0x59, 0x6, 0x30, 0x4d, 0x28, 0xae, 0x15, 0x6a,
+ 0xdc, 0x9a, 0x65, 00, 0x6b, 0xc2, 00, 0xb5, 0x9, 0x3,
+ 0xd4, 0x26, 0xc, 0x50, 0xdb, 0x37, 0x60, 0x60, 0x68, 0x3b,
+ 0xbd, 0x3e, 0x3, 0xe4, 0x21, 0xde, 0x49, 0xaf, 0xcf, 00,
+ 0x79, 0x88, 0x45, 0x3, 0xd4, 0x21, 0xfe, 0xf6, 0x1a, 0x18,
+ 0x1a, 0x37, 0x61, 0x80, 0xda, 0x84, 0x1, 0x6a, 0x13, 0x6,
+ 0xa8, 0x6d, 0x9f, 0x81, 0xa1, 0xed, 0xf4, 0xfa, 0xc, 0x90,
+ 0x87, 0x78, 0x27, 0xbd, 0x3e, 0x3, 0xe4, 0x21, 0x16, 0xd,
+ 0x50, 0x87, 0xf8, 0xdb, 0x6b, 0x80, 0x9b, 0x9, 00, 0x6a,
+ 0x13, 00, 0xd4, 0x26, 00, 0xa8, 0x4d, 00, 0x50, 0x9b,
+ 00, 0xa0, 0x36, 0x1, 0x40, 0x6d, 0x2, 0x80, 0xda, 0x4,
+ 00, 0xb5, 0x9, 00, 0x6a, 0x13, 00, 0xd4, 0x26, 00,
+ 0xa8, 0x4d, 00, 0x50, 0x9b, 00, 0xa0, 0x36, 0x1, 0x40,
+ 0x6d, 0x2, 0x80, 0xda, 0x4, 00, 0xb5, 0x9, 00, 0x6a,
+ 0x63, 0xf, 0xe0, 0x7f, 0xaa, 0x34, 0x79, 0xbd, 0xcc, 0x79,
+ 0xa3, 0xc, 00, 00, 00, 00, 0x49, 0x45, 0x4e, 0x44,
+ 0xae, 0x42, 0x60, 0x82, };
+
+static const unsigned char data_img_bb_png[] = {
+ /* /img/bb.png */
+ 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x62, 0x62, 0x2e, 0x70, 0x6e, 0x67, 0,
+ 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00,
+ 00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x10,
+ 00, 00, 00, 0x10, 0x8, 0x2, 00, 00, 00, 0x90,
+ 0x91, 0x68, 0x36, 00, 00, 00, 0x9, 0x70, 0x48, 0x59,
+ 0x73, 00, 00, 0xf, 0x9f, 00, 00, 0xf, 0x9f, 0x1,
+ 0xd, 0x98, 0x13, 0x33, 00, 00, 00, 0x7, 0x74, 0x49,
+ 0x4d, 0x45, 0x7, 0xd3, 0x4, 0xf, 0xc, 0x1a, 0x2c, 0x7e,
+ 0x72, 0x1d, 0xeb, 00, 00, 00, 0x28, 0x49, 0x44, 0x41,
+ 0x54, 0x78, 0x9c, 0x63, 0x3c, 0x70, 0xe0, 00, 0x3, 0x29,
+ 0x80, 0x89, 0x24, 0xd5, 0xa3, 0x1a, 0x88, 0x4, 0x2c, 0xa7,
+ 0x4e, 0x9d, 0xa2, 0xb1, 0x6, 0x33, 0x33, 0x33, 0x1a, 0x6b,
+ 0xa0, 0xb9, 0x1f, 0x68, 0x1f, 0xf, 00, 0x58, 0xb2, 0xd,
+ 0x28, 0xc6, 0x77, 0x29, 0x2, 00, 00, 00, 00, 0x49,
+ 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, };
+
+static const unsigned char data_img_bbl_png[] = {
+ /* /img/bbl.png */
+ 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x62, 0x62, 0x6c, 0x2e, 0x70, 0x6e, 0x67, 0,
+ 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00,
+ 00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x10,
+ 00, 00, 00, 0x10, 0x8, 0x2, 00, 00, 00, 0x90,
+ 0x91, 0x68, 0x36, 00, 00, 00, 0x9, 0x70, 0x48, 0x59,
+ 0x73, 00, 00, 0xf, 0x9f, 00, 00, 0xf, 0x9f, 0x1,
+ 0xd, 0x98, 0x13, 0x33, 00, 00, 00, 0x7, 0x74, 0x49,
+ 0x4d, 0x45, 0x7, 0xd3, 0x4, 0xf, 0xc, 0x1b, 0x12, 0xa6,
+ 0x8, 0x31, 0x1, 00, 00, 00, 0x42, 0x49, 0x44, 0x41,
+ 0x54, 0x78, 0x9c, 0xed, 0x92, 0xb1, 0x11, 00, 0x20, 0x8,
+ 0x3, 0xd5, 0x73, 0xff, 0x19, 0xc9, 0x6, 0xc9, 0x4, 0x58,
+ 0xa0, 0x96, 0x4a, 0xaf, 0xdf, 0xa4, 0xe0, 0x9e, 0x50, 0x50,
+ 0xdd, 0xbd, 0x2c, 00, 0x98, 0x59, 0x39, 0xd2, 0xce, 0xe3,
+ 0x2f, 0xbc, 0x2b, 0xf4, 0x8, 0x92, 0x92, 0x48, 0x66, 0x5,
+ 0x49, 0xd7, 0xb7, 0x9b, 0x2, 0x80, 0x68, 0xc8, 0x9e, 0x94,
+ 0x5c, 0xbc, 0x19, 0xa4, 0xc8, 0x1e, 0x61, 0x37, 0x86, 0x6a,
+ 0x96, 00, 00, 00, 00, 0x49, 0x45, 0x4e, 0x44, 0xae,
+ 0x42, 0x60, 0x82, };
+
+static const unsigned char data_img_bbr_png[] = {
+ /* /img/bbr.png */
+ 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x62, 0x62, 0x72, 0x2e, 0x70, 0x6e, 0x67, 0,
+ 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00,
+ 00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x10,
+ 00, 00, 00, 0x10, 0x8, 0x2, 00, 00, 00, 0x90,
+ 0x91, 0x68, 0x36, 00, 00, 00, 0x9, 0x70, 0x48, 0x59,
+ 0x73, 00, 00, 0xf, 0x9f, 00, 00, 0xf, 0x9f, 0x1,
+ 0xd, 0x98, 0x13, 0x33, 00, 00, 00, 0x7, 0x74, 0x49,
+ 0x4d, 0x45, 0x7, 0xd3, 0x4, 0xf, 0xc, 0x1a, 0x10, 0x51,
+ 0x1d, 0x61, 0x6c, 00, 00, 00, 0x4a, 0x49, 0x44, 0x41,
+ 0x54, 0x78, 0x9c, 0x63, 0x3c, 0x70, 0xe0, 00, 0x3, 0x36,
+ 0x70, 0xea, 0xd4, 0xa9, 0x53, 0xa7, 0x4e, 0x99, 0x99, 0x99,
+ 0x99, 0x99, 0x99, 0x41, 0xd8, 0x10, 0x71, 0x26, 0xac, 0xaa,
+ 0xf1, 0x80, 0x51, 0xd, 0xc4, 00, 0x16, 0x78, 00, 0xa3,
+ 0x81, 0xa7, 0x4f, 0x9f, 0x92, 0xa6, 0x1, 0xa7, 0xd, 0x66,
+ 0x66, 0x66, 0x78, 0xa4, 0xa5, 0xa5, 0xa5, 0x49, 0xd3, 0x40,
+ 0xa6, 0x93, 0x90, 0xfd, 0x43, 0xb2, 0x1f, 0x68, 0x1f, 0xf,
+ 00, 0xa4, 0x1d, 0x1d, 0x93, 0x22, 0x42, 0x2a, 0xa0, 00,
+ 00, 00, 00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60,
+ 0x82, };
+
+static const unsigned char data_img_bl_png[] = {
+ /* /img/bl.png */
+ 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x62, 0x6c, 0x2e, 0x70, 0x6e, 0x67, 0,
+ 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00,
+ 00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x10,
+ 00, 00, 00, 0x10, 0x8, 0x2, 00, 00, 00, 0x90,
+ 0x91, 0x68, 0x36, 00, 00, 00, 0x9, 0x70, 0x48, 0x59,
+ 0x73, 00, 00, 0xf, 0x9f, 00, 00, 0xf, 0x9f, 0x1,
+ 0xd, 0x98, 0x13, 0x33, 00, 00, 00, 0x7, 0x74, 0x49,
+ 0x4d, 0x45, 0x7, 0xd3, 0x4, 0xf, 0xc, 0x1e, 0x26, 0xfa,
+ 0xcb, 0x31, 0xf1, 00, 00, 00, 0x22, 0x49, 0x44, 0x41,
+ 0x54, 0x78, 0x9c, 0x63, 0xfc, 0xff, 0xff, 0x3f, 0x3, 0xc,
+ 0x3c, 0x7c, 0xf8, 0xf0, 0xc1, 0x83, 0x7, 0xc, 0x78, 0x1,
+ 0x13, 0x7e, 0xe9, 0x51, 0xd, 0xa3, 0x1a, 0x86, 0xb2, 0x6,
+ 00, 0x22, 0x3, 0x8, 0x60, 0x96, 0x7a, 0x39, 0x8b, 00,
+ 00, 00, 00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60,
+ 0x82, };
+
+static const unsigned char data_img_br_png[] = {
+ /* /img/br.png */
+ 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x62, 0x72, 0x2e, 0x70, 0x6e, 0x67, 0,
+ 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00,
+ 00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x10,
+ 00, 00, 00, 0x10, 0x8, 0x2, 00, 00, 00, 0x90,
+ 0x91, 0x68, 0x36, 00, 00, 00, 0x9, 0x70, 0x48, 0x59,
+ 0x73, 00, 00, 0xf, 0x9f, 00, 00, 0xf, 0x9f, 0x1,
+ 0xd, 0x98, 0x13, 0x33, 00, 00, 00, 0x7, 0x74, 0x49,
+ 0x4d, 0x45, 0x7, 0xd3, 0x4, 0xf, 0xc, 0x19, 0x2a, 0xbc,
+ 0x3c, 0xeb, 0x1d, 00, 00, 00, 0x2b, 0x49, 0x44, 0x41,
+ 0x54, 0x78, 0x9c, 0x63, 0x3c, 0x70, 0xe0, 00, 0x3, 0x36,
+ 0x70, 0xea, 0xd4, 0xa9, 0x53, 0xa7, 0x4e, 0x99, 0x99, 0x99,
+ 0x99, 0x99, 0x99, 0x41, 0xd8, 0x10, 0x71, 0x26, 0xac, 0xaa,
+ 0xf1, 0x80, 0x51, 0xd, 0xa3, 0x1a, 0x86, 0x8e, 0x6, 00,
+ 0x8d, 0xf0, 0xd, 0x1c, 0xe2, 0x5c, 0x1e, 0x25, 00, 00,
+ 00, 00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
+};
+
+static const unsigned char data_img_bt_png[] = {
+ /* /img/bt.png */
+ 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x62, 0x74, 0x2e, 0x70, 0x6e, 0x67, 0,
+ 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00,
+ 00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x10,
+ 00, 00, 00, 0x10, 0x8, 0x2, 00, 00, 00, 0x90,
+ 0x91, 0x68, 0x36, 00, 00, 00, 0x9, 0x70, 0x48, 0x59,
+ 0x73, 00, 00, 0xf, 0x9f, 00, 00, 0xf, 0x9f, 0x1,
+ 0xd, 0x98, 0x13, 0x33, 00, 00, 00, 0x7, 0x74, 0x49,
+ 0x4d, 0x45, 0x7, 0xd3, 0x4, 0xf, 0xc, 0x17, 0x38, 0xd1,
+ 0x6, 0xb7, 0xdb, 00, 00, 00, 0x2f, 0x49, 0x44, 0x41,
+ 0x54, 0x78, 0x9c, 0x63, 0xfc, 0xff, 0xff, 0x3f, 0x3, 0x29,
+ 0x80, 0x89, 0x24, 0xd5, 0x74, 0xd1, 0xc0, 0xf2, 0xf0, 0xe1,
+ 0x43, 0xd2, 0x34, 0x3c, 0x78, 0xf0, 0x80, 0x24, 0xd, 0x8c,
+ 0x24, 0x6b, 0x20, 0x35, 0x58, 0x47, 0xfd, 0x40, 0xc, 0xa0,
+ 0x7d, 0x5a, 0x2, 00, 0xe2, 0xfb, 0x1e, 0x28, 0xbf, 0xa1,
+ 0x89, 0x2f, 00, 00, 00, 00, 0x49, 0x45, 0x4e, 0x44,
+ 0xae, 0x42, 0x60, 0x82, };
+
+static const unsigned char data_img_btl_png[] = {
+ /* /img/btl.png */
+ 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x62, 0x74, 0x6c, 0x2e, 0x70, 0x6e, 0x67, 0,
+ 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00,
+ 00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x10,
+ 00, 00, 00, 0x10, 0x8, 0x2, 00, 00, 00, 0x90,
+ 0x91, 0x68, 0x36, 00, 00, 00, 0x9, 0x70, 0x48, 0x59,
+ 0x73, 00, 00, 0xf, 0x9f, 00, 00, 0xf, 0x9f, 0x1,
+ 0xd, 0x98, 0x13, 0x33, 00, 00, 00, 0x7, 0x74, 0x49,
+ 0x4d, 0x45, 0x7, 0xd3, 0x4, 0xf, 0xc, 0x17, 0x9, 0x80,
+ 0xd8, 0xb7, 0xe1, 00, 00, 00, 0x57, 0x49, 0x44, 0x41,
+ 0x54, 0x78, 0x9c, 0xbd, 0xd2, 0xc1, 0x9, 0xc0, 0x50, 0x8,
+ 0x3, 0xd0, 0xb6, 0x74, 0x80, 0x6c, 0xe0, 0xfe, 0x5b, 0x39,
+ 0x42, 0x32, 0x81, 0xbd, 0x7d, 0x3c, 0xb4, 0x60, 0xe, 0xfd,
+ 0xb9, 0x9, 0x3e, 0x88, 0xe0, 0x59, 0x55, 0x87, 0x93, 0xcb,
+ 0xda, 0xde, 0x2, 0xee, 0x3e, 0x90, 0x94, 0x64, 00, 0x49,
+ 0x99, 0x69, 0x80, 0x1e, 00, 00, 0x3c, 0x10, 0x11, 0x6,
+ 0x20, 0xe9, 0x55, 0x22, 0xf9, 0x6a, 0x3e, 0x41, 0x4f, 0xbf,
+ 0x67, 0xa, 0xd6, 0x3d, 0x23, 0xd0, 0xbb, 0x4d, 0xc1, 0x32,
+ 0xff, 0xff, 0xd2, 0x3, 0xa2, 0xea, 0x21, 0x1, 0x72, 0x67,
+ 0x21, 0x34, 00, 00, 00, 00, 0x49, 0x45, 0x4e, 0x44,
+ 0xae, 0x42, 0x60, 0x82, };
+
+static const unsigned char data_img_btr_png[] = {
+ /* /img/btr.png */
+ 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x62, 0x74, 0x72, 0x2e, 0x70, 0x6e, 0x67, 0,
+ 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 00, 00,
+ 00, 0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x10,
+ 00, 00, 00, 0x10, 0x8, 0x2, 00, 00, 00, 0x90,
+ 0x91, 0x68, 0x36, 00, 00, 00, 0x9, 0x70, 0x48, 0x59,
+ 0x73, 00, 00, 0xf, 0x9f, 00, 00, 0xf, 0x9f, 0x1,
+ 0xd, 0x98, 0x13, 0x33, 00, 00, 00, 0x7, 0x74, 0x49,
+ 0x4d, 0x45, 0x7, 0xd3, 0x4, 0xf, 0xc, 0x18, 0x3a, 0xb8,
+ 0x90, 0xca, 0x38, 00, 00, 00, 0x63, 0x49, 0x44, 0x41,
+ 0x54, 0x78, 0x9c, 0xa5, 0x92, 0xd1, 0xd, 0x80, 0x30, 0x8,
+ 0x44, 0xaf, 0xc6, 0x3d, 0xd8, 0x7f, 0x2b, 0xd8, 00, 0x26,
+ 0xc0, 0x1f, 0x23, 0xd5, 0x48, 0xa, 0xca, 0xf7, 0xbd, 0xde,
+ 0xbd, 0xa4, 0xc3, 0xdd, 0xd1, 0xb9, 0xad, 0x95, 0x6, 0xb0,
+ 0x57, 0x42, 0xaa, 0x6a, 0x66, 0xd, 0xc0, 0xcc, 0x98, 0xf9,
+ 0x4, 0x44, 0xa4, 0xd2, 0x10, 0x93, 0x2e, 0xb4, 0x78, 0x23,
+ 0x3, 0x54, 0x75, 0x7e, 0x38, 0x1a, 0x88, 0xa8, 0xb2, 0x24,
+ 0x80, 0xcc, 0xe1, 0x35, 0x8d, 0xbf, 0xe, 0xd9, 0xee, 0x5b,
+ 0xc3, 0xc3, 0x61, 0xd, 0xcc, 0xe, 0xcb, 0x34, 0x3e, 0x38,
+ 0xb4, 0x3f, 0x5f, 0x1b, 0x38, 00, 0x4e, 0xf7, 0x3d, 0x58,
+ 0x37, 0x83, 0x84, 0x6d, 00, 00, 00, 00, 0x49, 0x45,
+ 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, };
+
+static const unsigned char data_footer_plain[] = {
+ /* /footer.plain */
+ 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0,
+ 0x9, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0xa, 0x20, 0x20, 0x3c,
+ 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68,
+ 0x74, 0x6d, 0x6c, 0x3e, };
+
+static const unsigned char data_404_html[] = {
+ /* /404.html */
+ 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+ 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x3c, 0x62, 0x6f, 0x64,
+ 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d,
+ 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x3e, 0x3c, 0x63,
+ 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0x3c, 0x74, 0x61, 0x62,
+ 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22,
+ 0x36, 0x30, 0x30, 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65,
+ 0x72, 0x3d, 0x22, 0x30, 0x22, 0x3e, 0x3c, 0x74, 0x72, 0x3e,
+ 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30,
+ 0x34, 0x20, 0x2d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e,
+ 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f,
+ 0x68, 0x31, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x3c, 0x2f,
+ 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x3e, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e,
+ 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x3c, 0x2f, 0x68,
+ 0x74, 0x6d, 0x6c, 0x3e, };
+
+static const unsigned char data_contiki_css[] = {
+ /* /contiki.css */
+ 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2e, 0x63, 0x73, 0x73, 0,
+ 0x62, 0x6f, 0x64, 0x79, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x6d,
+ 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x6c, 0x65, 0x66, 0x74,
+ 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d,
+ 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x72, 0x69, 0x67, 0x68,
+ 0x74, 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20,
+ 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x74, 0x6f, 0x70,
+ 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d,
+ 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x62, 0x6f, 0x74, 0x74,
+ 0x6f, 0x6d, 0x3a, 0x31, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20,
+ 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e,
+ 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23,
+ 0x34, 0x30, 0x34, 0x30, 0x65, 0x30, 0x3b, 0xa, 0x20, 0x20,
+ 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x77, 0x68, 0x69, 0x74,
+ 0x65, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d,
+ 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x61, 0x72, 0x69,
+ 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69,
+ 0x63, 0x61, 0x2c, 0x6c, 0x75, 0x63, 0x69, 0x64, 0x61, 0x3b,
+ 0xa, 0x7d, 0xa, 0xa, 0x61, 0x3a, 0x6c, 0x69, 0x6e, 0x6b,
+ 0xa, 0x7b, 0x20, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x3a, 0x20, 0x23, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
+ 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x61, 0x3a, 0x76, 0x69, 0x73,
+ 0x69, 0x74, 0x65, 0x64, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x65, 0x30, 0x65,
+ 0x30, 0x66, 0x66, 0x3b, 0x20, 0x20, 0xa, 0x7d, 0xa, 0xa,
+ 0x61, 0x3a, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0xa, 0x7b,
+ 0x20, 0xa, 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a,
+ 0x20, 0x23, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3b, 0xa,
+ 0x7d, 0xa, 0xa, 0x68, 0x31, 0xa, 0x7b, 0xa, 0x20, 0x20,
+ 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e,
+ 0x3a, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3b, 0xa, 0x7d,
+ 0xa, 0xa, 0x74, 0x64, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x66,
+ 0x6f, 0x6e, 0x74, 0x2d, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79,
+ 0x3a, 0x68, 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69, 0x63, 0x61,
+ 0x2c, 0x61, 0x72, 0x69, 0x61, 0x6c, 0x3b, 0xa, 0x20, 0x20,
+ 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x3a,
+ 0x31, 0x30, 0x70, 0x74, 0x3b, 0xa, 0x7d, 0xa, 0xa, 0x74,
+ 0x64, 0x2e, 0x62, 0x74, 0x6c, 0xa, 0x7b, 0xa, 0x20, 0x20,
+ 0x6d, 0x61, 0x78, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a,
+ 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20,
+ 0x6d, 0x61, 0x78, 0x2d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
+ 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20,
+ 0x20, 0x6d, 0x69, 0x6e, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68,
+ 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20,
+ 0x20, 0x6d, 0x69, 0x6e, 0x2d, 0x68, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa,
+ 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x31,
+ 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x68, 0x65,
+ 0x69, 0x67, 0x68, 0x74, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70,
+ 0x78, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67,
+ 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x3a, 0x20, 0x23, 0x34, 0x30, 0x34, 0x30, 0x65, 0x30,
+ 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72,
+ 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x69, 0x6d, 0x61, 0x67, 0x65,
+ 0x3a, 0x75, 0x72, 0x6c, 0x28, 0x2f, 0x69, 0x6d, 0x67, 0x2f,
+ 0x62, 0x74, 0x6c, 0x2e, 0x70, 0x6e, 0x67, 0x29, 0x3b, 0xa,
+ 0x7d, 0x20, 0xa, 0xa, 0x74, 0x64, 0x2e, 0x62, 0x74, 0xa,
+ 0x7b, 0xa, 0x20, 0x20, 0x6d, 0x61, 0x78, 0x2d, 0x68, 0x65,
+ 0x69, 0x67, 0x68, 0x74, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70,
+ 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x69, 0x6e, 0x2d, 0x68,
+ 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x20, 0x31, 0x36, 0x20,
+ 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x68, 0x65, 0x69, 0x67,
+ 0x68, 0x74, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b,
+ 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f,
+ 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a,
+ 0x20, 0x23, 0x34, 0x30, 0x34, 0x30, 0x65, 0x30, 0x3b, 0xa,
+ 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75,
+ 0x6e, 0x64, 0x2d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x75,
+ 0x72, 0x6c, 0x28, 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x62, 0x74,
+ 0x2e, 0x70, 0x6e, 0x67, 0x29, 0x3b, 0xa, 0x7d, 0x20, 0xa,
+ 0xa, 0x74, 0x64, 0x2e, 0x62, 0x74, 0x72, 0xa, 0x7b, 0xa,
+ 0x20, 0x20, 0x6d, 0x61, 0x78, 0x2d, 0x77, 0x69, 0x64, 0x74,
+ 0x68, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa,
+ 0x20, 0x20, 0x6d, 0x61, 0x78, 0x2d, 0x68, 0x65, 0x69, 0x67,
+ 0x68, 0x74, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b,
+ 0xa, 0x20, 0x20, 0x6d, 0x69, 0x6e, 0x2d, 0x77, 0x69, 0x64,
+ 0x74, 0x68, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b,
+ 0xa, 0x20, 0x20, 0x6d, 0x69, 0x6e, 0x2d, 0x68, 0x65, 0x69,
+ 0x67, 0x68, 0x74, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78,
+ 0x3b, 0xa, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a,
+ 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20,
+ 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x20, 0x31, 0x36,
+ 0x20, 0x70, 0x78, 0x3b, 0x20, 0x20, 0xa, 0x20, 0x20, 0x62,
+ 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d,
+ 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x34, 0x30,
+ 0x34, 0x30, 0x65, 0x30, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61,
+ 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x69,
+ 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x75, 0x72, 0x6c, 0x28, 0x2f,
+ 0x69, 0x6d, 0x67, 0x2f, 0x62, 0x74, 0x72, 0x2e, 0x70, 0x6e,
+ 0x67, 0x29, 0x3b, 0xa, 0x7d, 0x20, 0xa, 0xa, 0x74, 0x64,
+ 0x2e, 0x62, 0x6c, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x6d, 0x61,
+ 0x78, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x31,
+ 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x69,
+ 0x6e, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x31,
+ 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x77, 0x69,
+ 0x64, 0x74, 0x68, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78,
+ 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72,
+ 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x3a, 0x20, 0x23, 0x34, 0x30, 0x34, 0x30, 0x65, 0x30, 0x3b,
+ 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f,
+ 0x75, 0x6e, 0x64, 0x2d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a,
+ 0x75, 0x72, 0x6c, 0x28, 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x62,
+ 0x6c, 0x2e, 0x70, 0x6e, 0x67, 0x29, 0x3b, 0xa, 0x7d, 0x20,
+ 0xa, 0xa, 0x74, 0x64, 0x2e, 0x62, 0x72, 0xa, 0x7b, 0xa,
+ 0x20, 0x20, 0x6d, 0x61, 0x78, 0x2d, 0x77, 0x69, 0x64, 0x74,
+ 0x68, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa,
+ 0x20, 0x20, 0x6d, 0x69, 0x6e, 0x2d, 0x77, 0x69, 0x64, 0x74,
+ 0x68, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa,
+ 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x31,
+ 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61,
+ 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x34, 0x30, 0x34,
+ 0x30, 0x65, 0x30, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63,
+ 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x69, 0x6d,
+ 0x61, 0x67, 0x65, 0x3a, 0x75, 0x72, 0x6c, 0x28, 0x2f, 0x69,
+ 0x6d, 0x67, 0x2f, 0x62, 0x72, 0x2e, 0x70, 0x6e, 0x67, 0x29,
+ 0x3b, 0xa, 0x7d, 0x20, 0xa, 0xa, 0x74, 0x64, 0x2e, 0x62,
+ 0x62, 0x6c, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x6d, 0x61, 0x78,
+ 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x31, 0x36,
+ 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x61, 0x78,
+ 0x2d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x20, 0x31,
+ 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x69,
+ 0x6e, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x31,
+ 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d, 0x69,
+ 0x6e, 0x2d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a, 0x20,
+ 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x77,
+ 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70,
+ 0x78, 0x3b, 0xa, 0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa,
+ 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75,
+ 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20,
+ 0x23, 0x34, 0x30, 0x34, 0x30, 0x65, 0x30, 0x3b, 0xa, 0x20,
+ 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e,
+ 0x64, 0x2d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x75, 0x72,
+ 0x6c, 0x28, 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x62, 0x62, 0x6c,
+ 0x2e, 0x70, 0x6e, 0x67, 0x29, 0x3b, 0xa, 0x7d, 0x20, 0xa,
+ 0xa, 0x74, 0x64, 0x2e, 0x62, 0x62, 0xa, 0x7b, 0xa, 0x20,
+ 0x20, 0x6d, 0x61, 0x78, 0x2d, 0x68, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa,
+ 0x20, 0x20, 0x6d, 0x69, 0x6e, 0x2d, 0x68, 0x65, 0x69, 0x67,
+ 0x68, 0x74, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b,
+ 0xa, 0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a,
+ 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20,
+ 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64,
+ 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x34,
+ 0x30, 0x34, 0x30, 0x65, 0x30, 0x3b, 0xa, 0x20, 0x20, 0x62,
+ 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d,
+ 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x75, 0x72, 0x6c, 0x28,
+ 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x62, 0x62, 0x2e, 0x70, 0x6e,
+ 0x67, 0x29, 0x3b, 0xa, 0x7d, 0x20, 0xa, 0xa, 0x74, 0x64,
+ 0x2e, 0x62, 0x62, 0x72, 0xa, 0x7b, 0xa, 0x20, 0x20, 0x6d,
+ 0x61, 0x78, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20,
+ 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x6d,
+ 0x61, 0x78, 0x2d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3a,
+ 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20,
+ 0x6d, 0x69, 0x6e, 0x2d, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a,
+ 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20,
+ 0x6d, 0x69, 0x6e, 0x2d, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
+ 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20,
+ 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3a, 0x20, 0x31, 0x36,
+ 0x20, 0x70, 0x78, 0x3b, 0xa, 0x20, 0x20, 0x68, 0x65, 0x69,
+ 0x67, 0x68, 0x74, 0x3a, 0x20, 0x31, 0x36, 0x20, 0x70, 0x78,
+ 0x3b, 0x20, 0x20, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b,
+ 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x63, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x34, 0x30, 0x34, 0x30, 0x65,
+ 0x30, 0x3b, 0xa, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67,
+ 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2d, 0x69, 0x6d, 0x61, 0x67,
+ 0x65, 0x3a, 0x75, 0x72, 0x6c, 0x28, 0x2f, 0x69, 0x6d, 0x67,
+ 0x2f, 0x62, 0x62, 0x72, 0x2e, 0x70, 0x6e, 0x67, 0x29, 0x3b,
+ 0xa, 0x7d, 0x20, 0xa, 0xa, 0x74, 0x64, 0x2e, 0x63, 0x6f,
+ 0x6e, 0x74, 0x65, 0x6e, 0x74, 0xa, 0x7b, 0xa, 0x20, 0x20,
+ 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x6c, 0x65,
+ 0x66, 0x74, 0x3a, 0x32, 0x30, 0x70, 0x78, 0x3b, 0xa, 0x20,
+ 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x72,
+ 0x69, 0x67, 0x68, 0x74, 0x3a, 0x32, 0x30, 0x70, 0x78, 0x3b,
+ 0xa, 0x20, 0x20, 0xa, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74,
+ 0x2d, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x6c, 0x65, 0x66,
+ 0x74, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d,
+ 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x61, 0x72, 0x69,
+ 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69,
+ 0x63, 0x61, 0x2c, 0x6c, 0x75, 0x63, 0x69, 0x64, 0x61, 0x3b,
+ 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69,
+ 0x7a, 0x65, 0x3a, 0x31, 0x30, 0x70, 0x74, 0x3b, 0xa, 0x7d,
+ 0x20, 0xa, 0xa, 0x74, 0x64, 0x2e, 0x6d, 0x65, 0x6e, 0x75,
+ 0xa, 0x7b, 0xa, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2d,
+ 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x6c, 0x65, 0x66, 0x74,
+ 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x66,
+ 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x61, 0x72, 0x69, 0x61,
+ 0x6c, 0x2c, 0x68, 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69, 0x63,
+ 0x61, 0x2c, 0x6c, 0x75, 0x63, 0x69, 0x64, 0x61, 0x3b, 0xa,
+ 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69, 0x7a,
+ 0x65, 0x3a, 0x31, 0x34, 0x70, 0x74, 0x3b, 0xa, 0x20, 0x20,
+ 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x77, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x3a, 0x62, 0x6f, 0x6c, 0x64, 0x3b, 0x20, 0x20, 0xa,
+ 0x20, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23,
+ 0x34, 0x30, 0x34, 0x30, 0x35, 0x30, 0x3b, 0xa, 0x20, 0x20,
+ 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64,
+ 0x2d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3a, 0x20, 0x23, 0x63,
+ 0x30, 0x63, 0x30, 0x63, 0x30, 0x3b, 0xa, 0x20, 0x20, 0x70,
+ 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x2d, 0x74, 0x6f, 0x70,
+ 0x3a, 0x20, 0x32, 0x70, 0x78, 0x3b, 0xa, 0x7d, 0xa, 0xa,
+ 0x70, 0x2e, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0xa, 0x7b, 0xa,
+ 0x20, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x6c,
+ 0x65, 0x66, 0x74, 0x3a, 0x32, 0x30, 0x70, 0x78, 0x3b, 0xa,
+ 0x20, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x72,
+ 0x69, 0x67, 0x68, 0x74, 0x3a, 0x32, 0x30, 0x70, 0x78, 0x3b,
+ 0xa, 0x20, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d,
+ 0x74, 0x6f, 0x70, 0x3a, 0x32, 0x30, 0x70, 0x78, 0x3b, 0xa,
+ 0x20, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2d, 0x62,
+ 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x3a, 0x32, 0x30, 0x70, 0x78,
+ 0x3b, 0xa, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2d, 0x61,
+ 0x6c, 0x69, 0x67, 0x6e, 0x3a, 0x63, 0x65, 0x6e, 0x74, 0x65,
+ 0x72, 0x3b, 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d,
+ 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x3a, 0x61, 0x72, 0x69,
+ 0x61, 0x6c, 0x2c, 0x68, 0x65, 0x6c, 0x76, 0x65, 0x74, 0x69,
+ 0x63, 0x61, 0x2c, 0x6c, 0x75, 0x63, 0x69, 0x64, 0x61, 0x3b,
+ 0xa, 0x20, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x73, 0x69,
+ 0x7a, 0x65, 0x3a, 0x31, 0x30, 0x70, 0x74, 0x3b, 0xa, 0x20,
+ 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2d, 0x77, 0x65, 0x69, 0x67,
+ 0x68, 0x74, 0x3a, 0x62, 0x6f, 0x6c, 0x64, 0x3b, 0xa, 0x7d,
+ 0xa, };
+
+static const unsigned char data_header_html[] = {
+ /* /header.html */
+ 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+ 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
+ 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
+ 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
+ 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
+ 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
+ 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
+ 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
+ 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
+ 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
+ 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa,
+ 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e,
+ 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x20, 0x77, 0x65, 0x62, 0x20, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x21, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c,
+ 0x65, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6c, 0x69,
+ 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65, 0x74, 0x22, 0x20,
+ 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74,
+ 0x2f, 0x63, 0x73, 0x73, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69,
+ 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x20, 0x20, 0xa, 0x20,
+ 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20,
+ 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x34, 0x30, 0x34,
+ 0x30, 0x65, 0x30, 0x22, 0x20, 0x74, 0x65, 0x78, 0x74, 0x3d,
+ 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x3e, 0xa, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20,
+ 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x31, 0x30, 0x30,
+ 0x25, 0x22, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x70, 0x61,
+ 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x30, 0x20, 0x63, 0x65, 0x6c,
+ 0x6c, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3d, 0x30,
+ 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x30, 0x3e,
+ 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x72,
+ 0x20, 0x76, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74,
+ 0x6f, 0x70, 0x22, 0x3e, 0xa, 0x9, 0x3c, 0x74, 0x64, 0x20,
+ 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x32, 0x35, 0x25,
+ 0x22, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22,
+ 0x74, 0x6f, 0x70, 0x22, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c,
+ 0x62, 0x72, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x74, 0x61,
+ 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d,
+ 0x22, 0x31, 0x30, 0x30, 0x25, 0x22, 0x20, 0x63, 0x65, 0x6c,
+ 0x6c, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x30,
+ 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x70, 0x61, 0x64, 0x64, 0x69,
+ 0x6e, 0x67, 0x3d, 0x30, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65,
+ 0x72, 0x3d, 0x30, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x3c, 0x74, 0x72, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x3d, 0x22, 0x62, 0x74, 0x6c, 0x22, 0x20, 0x77, 0x69,
+ 0x64, 0x74, 0x68, 0x3d, 0x31, 0x36, 0x20, 0x68, 0x65, 0x69,
+ 0x67, 0x68, 0x74, 0x3d, 0x31, 0x36, 0x3e, 0x26, 0x6e, 0x62,
+ 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x64, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x62, 0x74, 0x22,
+ 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x31, 0x36,
+ 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x74,
+ 0x64, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
+ 0x22, 0x62, 0x74, 0x72, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74,
+ 0x68, 0x3d, 0x31, 0x36, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x3d, 0x31, 0x36, 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70,
+ 0x3b, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x9, 0x20, 0x20,
+ 0x20, 0x20, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x74, 0x72, 0x3e, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x64, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x62, 0x6c, 0x22, 0x20,
+ 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x31, 0x36, 0x3e, 0x26,
+ 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x74, 0x64, 0x3e,
+ 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74,
+ 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d,
+ 0x65, 0x6e, 0x75, 0x22, 0x3e, 0xa, 0x9, 0x9, 0x3c, 0x62,
+ 0x72, 0x3e, 0xa, 0x9, 0x9, 0x3c, 0x61, 0x20, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x6f,
+ 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x9, 0x9, 0x3c, 0x62,
+ 0x72, 0x3e, 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0xa, 0x9, 0x9, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x66, 0x69, 0x6c,
+ 0x65, 0x73, 0x22, 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x73,
+ 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c,
+ 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x9, 0x9,
+ 0x3c, 0x62, 0x72, 0x3e, 0x9, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x9, 0x9, 0x9, 0x20, 0x20, 0xa, 0x9, 0x9,
+ 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f,
+ 0x63, 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0x22, 0x3e, 0x43,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f,
+ 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x9, 0x9, 0x3c,
+ 0x62, 0x72, 0x3e, 0x9, 0x9, 0x9, 0xa, 0x9, 0x9, 0x3c,
+ 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63,
+ 0x67, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
+ 0x65, 0x73, 0x22, 0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d,
+ 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73,
+ 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x9,
+ 0x9, 0x3c, 0x62, 0x72, 0x3e, 0x9, 0x9, 0x9, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x74, 0x64,
+ 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c,
+ 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22,
+ 0x62, 0x72, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d,
+ 0x31, 0x36, 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c,
+ 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x3c, 0x74, 0x72, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x62, 0x62, 0x6c, 0x22, 0x20, 0x77,
+ 0x69, 0x64, 0x74, 0x68, 0x3d, 0x31, 0x36, 0x20, 0x68, 0x65,
+ 0x69, 0x67, 0x68, 0x74, 0x3d, 0x31, 0x36, 0x3e, 0x26, 0x6e,
+ 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa,
+ 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x64,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x62, 0x62,
+ 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x31,
+ 0x36, 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f,
+ 0x74, 0x64, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x62, 0x62, 0x72, 0x22, 0x20, 0x77, 0x69, 0x64,
+ 0x74, 0x68, 0x3d, 0x31, 0x36, 0x20, 0x68, 0x65, 0x69, 0x67,
+ 0x68, 0x74, 0x3d, 0x31, 0x36, 0x3e, 0x26, 0x6e, 0x62, 0x73,
+ 0x70, 0x3b, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x9,
+ 0x20, 0x20, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e,
+ 0xa, 0x9, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x9, 0x3c,
+ 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22,
+ 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x3e, 0xa,
+};
+
+static const unsigned char data_index_html[] = {
+ /* /index.html */
+ 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+ 0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
+ 0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
+ 0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
+ 0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
+ 0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
+ 0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
+ 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
+ 0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
+ 0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
+ 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa,
+ 0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e,
+ 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x20, 0x77, 0x65, 0x62, 0x20, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x21, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c,
+ 0x65, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6c, 0x69,
+ 0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x74,
+ 0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65, 0x74, 0x22, 0x20,
+ 0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74,
+ 0x2f, 0x63, 0x73, 0x73, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69,
+ 0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x20, 0x20, 0xa, 0x20,
+ 0x20, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20,
+ 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x34, 0x30, 0x34,
+ 0x30, 0x65, 0x30, 0x22, 0x20, 0x74, 0x65, 0x78, 0x74, 0x3d,
+ 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x3e, 0xa, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20,
+ 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x31, 0x30, 0x30,
+ 0x25, 0x22, 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x73, 0x70, 0x61,
+ 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x30, 0x20, 0x63, 0x65, 0x6c,
+ 0x6c, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x3d, 0x30,
+ 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3d, 0x30, 0x3e,
+ 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x72,
+ 0x20, 0x76, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74,
+ 0x6f, 0x70, 0x22, 0x3e, 0xa, 0x9, 0x3c, 0x74, 0x64, 0x20,
+ 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22, 0x32, 0x35, 0x25,
+ 0x22, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22,
+ 0x74, 0x6f, 0x70, 0x22, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c,
+ 0x62, 0x72, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x74, 0x61,
+ 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d,
+ 0x22, 0x31, 0x30, 0x30, 0x25, 0x22, 0x20, 0x63, 0x65, 0x6c,
+ 0x6c, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x3d, 0x30,
+ 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x70, 0x61, 0x64, 0x64, 0x69,
+ 0x6e, 0x67, 0x3d, 0x30, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65,
+ 0x72, 0x3d, 0x30, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x3c, 0x74, 0x72, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x3d, 0x22, 0x62, 0x74, 0x6c, 0x22, 0x20, 0x77, 0x69,
+ 0x64, 0x74, 0x68, 0x3d, 0x31, 0x36, 0x20, 0x68, 0x65, 0x69,
+ 0x67, 0x68, 0x74, 0x3d, 0x31, 0x36, 0x3e, 0x26, 0x6e, 0x62,
+ 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x64, 0x20,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x62, 0x74, 0x22,
+ 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x31, 0x36,
+ 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x74,
+ 0x64, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
+ 0x22, 0x62, 0x74, 0x72, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74,
+ 0x68, 0x3d, 0x31, 0x36, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x3d, 0x31, 0x36, 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70,
+ 0x3b, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x9, 0x20, 0x20,
+ 0x20, 0x20, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x74, 0x72, 0x3e, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x64, 0x20, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x62, 0x6c, 0x22, 0x20,
+ 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x31, 0x36, 0x3e, 0x26,
+ 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x74, 0x64, 0x3e,
+ 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74,
+ 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d,
+ 0x65, 0x6e, 0x75, 0x22, 0x3e, 0xa, 0x9, 0x9, 0x3c, 0x62,
+ 0x72, 0x3e, 0xa, 0x9, 0x9, 0x3c, 0x61, 0x20, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x6f,
+ 0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x9, 0x9, 0x3c, 0x62,
+ 0x72, 0x3e, 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0xa, 0x9, 0x9, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x66, 0x69, 0x6c,
+ 0x65, 0x73, 0x22, 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x73,
+ 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c,
+ 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x9, 0x9,
+ 0x3c, 0x62, 0x72, 0x3e, 0x9, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x9, 0x9, 0x9, 0x20, 0x20, 0xa, 0x9, 0x9,
+ 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f,
+ 0x63, 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0x22, 0x3e, 0x43,
+ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x6e,
+ 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f,
+ 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x9, 0x9, 0x3c,
+ 0x62, 0x72, 0x3e, 0x9, 0x9, 0x9, 0xa, 0x9, 0x9, 0x3c,
+ 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63,
+ 0x67, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
+ 0x65, 0x73, 0x22, 0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d,
+ 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73,
+ 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x9,
+ 0x9, 0x3c, 0x62, 0x72, 0x3e, 0x9, 0x9, 0x9, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x74, 0x64,
+ 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c,
+ 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22,
+ 0x62, 0x72, 0x22, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d,
+ 0x31, 0x36, 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c,
+ 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x3c, 0x74, 0x72, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x62, 0x62, 0x6c, 0x22, 0x20, 0x77,
+ 0x69, 0x64, 0x74, 0x68, 0x3d, 0x31, 0x36, 0x20, 0x68, 0x65,
+ 0x69, 0x67, 0x68, 0x74, 0x3d, 0x31, 0x36, 0x3e, 0x26, 0x6e,
+ 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa,
+ 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x74, 0x64,
+ 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x62, 0x62,
+ 0x22, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x31,
+ 0x36, 0x3e, 0x26, 0x6e, 0x62, 0x73, 0x70, 0x3b, 0x3c, 0x2f,
+ 0x74, 0x64, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
+ 0x3d, 0x22, 0x62, 0x62, 0x72, 0x22, 0x20, 0x77, 0x69, 0x64,
+ 0x74, 0x68, 0x3d, 0x31, 0x36, 0x20, 0x68, 0x65, 0x69, 0x67,
+ 0x68, 0x74, 0x3d, 0x31, 0x36, 0x3e, 0x26, 0x6e, 0x62, 0x73,
+ 0x70, 0x3b, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x9,
+ 0x20, 0x20, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e,
+ 0xa, 0x9, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x9, 0x3c,
+ 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22,
+ 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x3e, 0xa,
+ 0x9, 0x20, 0x20, 0x3c, 0x68, 0x31, 0x3e, 0x57, 0x65, 0x6c,
+ 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x3c, 0x61, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65,
+ 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61,
+ 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f,
+ 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x3c,
+ 0x2f, 0x61, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x77, 0x65, 0x62, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x21, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0xa, 0x9, 0x20,
+ 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d,
+ 0x22, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x22, 0x3e, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x77, 0x65,
+ 0x62, 0x20, 0x70, 0x61, 0x67, 0x65, 0x73, 0x20, 0x79, 0x6f,
+ 0x75, 0x20, 0x61, 0x72, 0x65, 0x20, 0x77, 0x61, 0x74, 0x63,
+ 0x68, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61,
+ 0x20, 0x3c, 0x61, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a,
+ 0x2f, 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e,
+ 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x63,
+ 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x61, 0x70, 0x70,
+ 0x73, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x77, 0x65,
+ 0x62, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x72, 0x75,
+ 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x6e, 0x64, 0x65,
+ 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x61, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
+ 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 0x75, 0x6e,
+ 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61,
+ 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b,
+ 0x69, 0x2f, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b,
+ 0x69, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e,
+ 0x67, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x73, 0x79, 0x73,
+ 0x74, 0x65, 0x6d, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x6f, 0x6e,
+ 0x20, 0x61, 0x6e, 0x20, 0x75, 0x6e, 0x65, 0x78, 0x70, 0x61,
+ 0x6e, 0x64, 0x65, 0x64, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x64, 0x6f, 0x72, 0x65, 0x20, 0x36, 0x34, 0x20, 0x65, 0x71,
+ 0x75, 0x69, 0x70, 0x70, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74,
+ 0x68, 0x20, 0x61, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x63,
+ 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x20, 0x62, 0x75, 0x69, 0x6c,
+ 0x74, 0x20, 0x3c, 0x61, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
+ 0x3a, 0x2f, 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73,
+ 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f,
+ 0x74, 0x66, 0x65, 0x2f, 0x22, 0x3e, 0x45, 0x74, 0x68, 0x65,
+ 0x72, 0x6e, 0x65, 0x74, 0x20, 0x63, 0x61, 0x72, 0x64, 0x3c,
+ 0x2f, 0x61, 0x3e, 0x2e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x2f,
+ 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20, 0xa, 0x9, 0x20, 0x20,
+ 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73,
+ 0x72, 0x63, 0x3d, 0x22, 0x69, 0x6d, 0x67, 0x2f, 0x73, 0x63,
+ 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x70,
+ 0x6e, 0x67, 0x22, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72,
+ 0x3d, 0x22, 0x32, 0x22, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c,
+ 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa, 0x9, 0x20, 0x20,
+ 0x3c, 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x54,
+ 0x68, 0x65, 0x20, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73,
+ 0x68, 0x6f, 0x74, 0x20, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x20,
+ 0x73, 0x68, 0x6f, 0x77, 0x73, 0x20, 0x77, 0x68, 0x61, 0x74,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x73, 0x6b, 0x74,
+ 0x6f, 0x70, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x6c,
+ 0x69, 0x6b, 0x65, 0x20, 0x6f, 0x6e, 0xa, 0x9, 0x20, 0x20,
+ 0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x36, 0x34, 0x20,
+ 0x6f, 0x6e, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x77, 0x65, 0x62, 0x20, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e,
+ 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x20, 0x50, 0x6c, 0x65, 0x61,
+ 0x73, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x65, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68,
+ 0x69, 0x73, 0x20, 0x77, 0x65, 0x62, 0x20, 0x70, 0x61, 0x67,
+ 0x65, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x72,
+ 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2c, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63,
+ 0x61, 0x6c, 0x20, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0xa,
+ 0x9, 0x20, 0x20, 0x20, 0x20, 0x61, 0x72, 0x6f, 0x75, 0x6e,
+ 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, 0x6e, 0x75,
+ 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65,
+ 0x66, 0x74, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x20,
+ 0x74, 0x68, 0x61, 0x74, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72,
+ 0x61, 0x74, 0x65, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63,
+ 0x20, 0x70, 0x61, 0x67, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72,
+ 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73,
+ 0x22, 0x3e, 0x66, 0x69, 0x6c, 0x65, 0xa, 0x9, 0x20, 0x20,
+ 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69,
+ 0x63, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x2c, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d,
+ 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0x22,
+ 0x3e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x6c, 0x79,
+ 0x20, 0x6f, 0x70, 0x65, 0x6e, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x61, 0x6e, 0x64,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70,
+ 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x3e,
+ 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0xa, 0x9, 0x20, 0x20,
+ 0x20, 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65,
+ 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x61, 0x6c, 0x6c, 0x20,
+ 0x61, 0x72, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,
+ 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x43,
+ 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x77, 0x65, 0x62,
+ 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0xa, 0x9,
+ 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0xa, 0x9, 0x20,
+ 0x20, 0x3c, 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x46, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x69,
+ 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x6f,
+ 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x73,
+ 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2c, 0xa, 0x9, 0x20, 0x20,
+ 0x20, 0x20, 0x73, 0x65, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x77, 0x65,
+ 0x62, 0x20, 0x73, 0x69, 0x74, 0x65, 0x3a, 0xa, 0x9, 0x20,
+ 0x20, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c,
+ 0x70, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x63,
+ 0x65, 0x6e, 0x74, 0x65, 0x72, 0x22, 0x3e, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x74, 0x74, 0x3e, 0x3c, 0x61, 0x20,
+ 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
+ 0x3a, 0x2f, 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73,
+ 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f,
+ 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x22, 0x3e,
+ 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64, 0x75, 0x6e,
+ 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61,
+ 0x64, 0x61, 0x6d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b,
+ 0x69, 0x2f, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x74,
+ 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x3e, 0xa,
+ 0xa, 0x9, 0x20, 0x20, 0x3c, 0x70, 0x3e, 0xa, 0x9, 0x20,
+ 0x20, 0x20, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x70, 0x69, 0x63,
+ 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x64, 0x6f,
+ 0x72, 0x65, 0x20, 0x36, 0x34, 0x20, 0x6f, 0x6e, 0x20, 0x77,
+ 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x69, 0x73, 0xa,
+ 0x9, 0x20, 0x20, 0x20, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69,
+ 0x6e, 0x67, 0x2c, 0x20, 0x73, 0x65, 0x65, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x3c, 0x61, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20,
+ 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70,
+ 0x3a, 0x2f, 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73,
+ 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f,
+ 0x74, 0x66, 0x65, 0x2f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72,
+ 0x65, 0x73, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x22,
+ 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x3c,
+ 0x2f, 0x61, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x73,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x54, 0x46, 0x45, 0x20, 0x28, 0x54,
+ 0x68, 0x65, 0x20, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x45,
+ 0x74, 0x68, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x63, 0x61,
+ 0x72, 0x74, 0x72, 0x69, 0x64, 0x67, 0x65, 0x29, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x68, 0x6f, 0x6d, 0x65, 0x70, 0x61,
+ 0x67, 0x65, 0x3a, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x2f, 0x70,
+ 0x3e, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x61, 0x6c,
+ 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x63, 0x65, 0x6e, 0x74, 0x65,
+ 0x72, 0x22, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x3c,
+ 0x74, 0x74, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64,
+ 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x74, 0x66, 0x65, 0x2f,
+ 0x22, 0x3e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x64,
+ 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x74, 0x66, 0x65, 0x2f,
+ 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x74, 0x3e, 0xa,
+ 0x9, 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x9, 0x20,
+ 0x20, 0x3c, 0x70, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d,
+ 0x22, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, 0xa, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x2f, 0x3c, 0x61, 0x20, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
+ 0x2f, 0x64, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x2f, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x22, 0x3e,
+ 0x41, 0x64, 0x61, 0x6d, 0x20, 0x44, 0x75, 0x6e, 0x6b, 0x65,
+ 0x6c, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x9, 0x20, 0x20,
+ 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x9, 0x3c, 0x2f, 0x74, 0x64,
+ 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f,
+ 0x74, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0x20, 0x20, 0x20,
+ 0x20, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79,
+ 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, };
+
+const struct httpd_fsdata_file file_cgi_files[] = {{NULL, data_cgi_files, data_cgi_files + 11, sizeof(data_cgi_files) - 11}};
+
+const struct httpd_fsdata_file file_cgi_tcp[] = {{file_cgi_files, data_cgi_tcp, data_cgi_tcp + 9, sizeof(data_cgi_tcp) - 9}};
+
+const struct httpd_fsdata_file file_img_screenshot_png[] = {{file_cgi_tcp, data_img_screenshot_png, data_img_screenshot_png + 20, sizeof(data_img_screenshot_png) - 20}};
+
+const struct httpd_fsdata_file file_img_bb_png[] = {{file_img_screenshot_png, data_img_bb_png, data_img_bb_png + 12, sizeof(data_img_bb_png) - 12}};
+
+const struct httpd_fsdata_file file_img_bbl_png[] = {{file_img_bb_png, data_img_bbl_png, data_img_bbl_png + 13, sizeof(data_img_bbl_png) - 13}};
+
+const struct httpd_fsdata_file file_img_bbr_png[] = {{file_img_bbl_png, data_img_bbr_png, data_img_bbr_png + 13, sizeof(data_img_bbr_png) - 13}};
+
+const struct httpd_fsdata_file file_img_bl_png[] = {{file_img_bbr_png, data_img_bl_png, data_img_bl_png + 12, sizeof(data_img_bl_png) - 12}};
+
+const struct httpd_fsdata_file file_img_br_png[] = {{file_img_bl_png, data_img_br_png, data_img_br_png + 12, sizeof(data_img_br_png) - 12}};
+
+const struct httpd_fsdata_file file_img_bt_png[] = {{file_img_br_png, data_img_bt_png, data_img_bt_png + 12, sizeof(data_img_bt_png) - 12}};
+
+const struct httpd_fsdata_file file_img_btl_png[] = {{file_img_bt_png, data_img_btl_png, data_img_btl_png + 13, sizeof(data_img_btl_png) - 13}};
+
+const struct httpd_fsdata_file file_img_btr_png[] = {{file_img_btl_png, data_img_btr_png, data_img_btr_png + 13, sizeof(data_img_btr_png) - 13}};
+
+const struct httpd_fsdata_file file_footer_plain[] = {{file_img_btr_png, data_footer_plain, data_footer_plain + 14, sizeof(data_footer_plain) - 14}};
+
+const struct httpd_fsdata_file file_404_html[] = {{file_footer_plain, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}};
+
+const struct httpd_fsdata_file file_contiki_css[] = {{file_404_html, data_contiki_css, data_contiki_css + 13, sizeof(data_contiki_css) - 13}};
+
+const struct httpd_fsdata_file file_header_html[] = {{file_contiki_css, data_header_html, data_header_html + 13, sizeof(data_header_html) - 13}};
+
+const struct httpd_fsdata_file file_index_html[] = {{file_header_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}};
+
+#define HTTPD_FS_ROOT file_index_html
+
+#define HTTPD_FS_NUMFILES 16
\ No newline at end of file
diff --git a/contiki-gtk/apps/makestrings b/contiki-gtk/apps/makestrings
new file mode 100755
index 0000000..b81b9b9
--- /dev/null
+++ b/contiki-gtk/apps/makestrings
@@ -0,0 +1,41 @@
+#!/usr/bin/perl
+
+
+sub stringify {
+ my $name = shift(@_);
+ open(OUTPUTC, "> $name.c");
+ open(OUTPUTH, "> $name.h");
+
+ open(FILE, "$name");
+
+ while(<FILE>) {
+ if(/(.+) "(.+)"/) {
+ $var = $1;
+ $data = $2;
+
+ $datan = $data;
+ $datan =~ s/\\r/\r/g;
+ $datan =~ s/\\n/\n/g;
+ $datan =~ s/\\0/\0/g;
+
+ printf(OUTPUTC "char $var\[%d] = \n", length($datan) + 1);
+ printf(OUTPUTC "/* \"$data\" */\n");
+ printf(OUTPUTC "{");
+ for($j = 0; $j < length($datan); $j++) {
+ printf(OUTPUTC "%#02x, ", unpack("C", substr($datan, $j, 1)));
+ }
+ printf(OUTPUTC "};\n");
+
+ printf(OUTPUTH "extern char $var\[%d];\n", length($datan) + 1);
+
+ }
+ }
+ close(OUTPUTC);
+ close(OUTPUTH);
+}
+stringify("http-user-agent-string");
+stringify("nntpc-strings");
+stringify("nntpd-strings");
+
+exit 0;
+
diff --git a/contiki-gtk/apps/vnc-draw.c b/contiki-gtk/apps/vnc-draw.c
new file mode 100644
index 0000000..f3c2902
--- /dev/null
+++ b/contiki-gtk/apps/vnc-draw.c
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the Contiki VNC client
+ *
+ * $Id: vnc-draw.c,v 1.2 2004/07/04 21:15:53 adamdunkels Exp $
+ *
+ */
+
+
+
+#include "vnc-draw.h"
+
+#include "vnc-conf.h"
+
+
+static unsigned char conv[256];
+
+static unsigned char oratab[8] =
+ { 0x80, 0x40, 0x20, 0x10,
+ 0x08, 0x04, 0x02, 0x01 };
+static unsigned char andtab[8] =
+ { 0x7f, 0xbf, 0xdf, 0xef,
+ 0xf7, 0xfb, 0xfd, 0xfe };
+
+static u8_t *bitmapptrtab[VNC_CONF_VIEWPORT_HEIGHT];
+
+static unsigned short viewport_x,
+ viewport_y, viewport_w, viewport_h;
+
+u8_t vnc_draw_bitmap[(VNC_CONF_VIEWPORT_WIDTH / 8) *
+ VNC_CONF_VIEWPORT_HEIGHT];
+
+
+
+u16_t vnc_draw_x;
+u16_t vnc_draw_y;
+u8_t *vnc_draw_dataptr;
+u8_t *vnc_draw_bitmapptr;
+u16_t vnc_draw_datalen;
+
+/*-----------------------------------------------------------------------------------*/
+void
+vnc_draw_pixel(u16_t x, u8_t y, u8_t c)
+{
+ u8_t o, a;
+
+ vnc_draw_bitmapptr = bitmapptrtab[y] + (x & 0x1f8);
+
+ if(c) {
+ o = oratab[x & 7];
+ *vnc_draw_bitmapptr = *vnc_draw_bitmapptr | o;
+ } else {
+ a = andtab[x & 7];
+ *vnc_draw_bitmapptr = *vnc_draw_bitmapptr & a;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+vnc_draw_pixelline(u16_t x, u16_t y, u8_t *data, u16_t datalen)
+{
+ u8_t o, a;
+ register u8_t *bitmapptr;
+
+ vnc_draw_x = x - viewport_x;
+ vnc_draw_y = y - viewport_y;
+
+ /* if(vnc_draw_y & 1) {
+ return;
+ } else {
+ vnc_draw_y /= 2;
+ }*/
+
+
+
+ if(vnc_draw_y >= VNC_CONF_VIEWPORT_HEIGHT ||
+ vnc_draw_x >= VNC_CONF_VIEWPORT_WIDTH) {
+ return;
+ }
+
+ vnc_draw_datalen = datalen;
+
+ if(vnc_draw_datalen + vnc_draw_x >= VNC_CONF_VIEWPORT_WIDTH) {
+ vnc_draw_datalen = VNC_CONF_VIEWPORT_WIDTH - vnc_draw_x;
+ if(vnc_draw_datalen == 0) {
+ return;
+ }
+ }
+
+ vnc_draw_dataptr = data;
+
+ /* vnc_draw_bitmapptr = bitmaptab[vnc_draw_y] +
+ (vnc_draw_x & 0x1f8);*/
+
+ for(; vnc_draw_datalen > 0; --vnc_draw_datalen) {
+ /* vnc_draw_pixel(vnc_draw_x, vnc_draw_y,
+ conv[*vnc_draw_dataptr]);*/
+
+ bitmapptr = bitmapptrtab[vnc_draw_y] + (vnc_draw_x & 0x1f8);
+
+ if(conv[*vnc_draw_dataptr]) {
+ o = oratab[vnc_draw_x & 7];
+ *bitmapptr = *bitmapptr | o;
+ } else {
+ a = andtab[vnc_draw_x & 7];
+ *bitmapptr = *bitmapptr & a;
+ }
+ ++vnc_draw_dataptr;
+ ++vnc_draw_x;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+vnc_draw_init(void)
+{
+ unsigned int tmp;
+ unsigned int i;
+ unsigned short ptr;
+
+
+ /* Create color conversion table. */
+ for(i = 0; i < 256; ++i) {
+ if(((i & 0xc0) > 0xc0) ||
+ ((i & 0x38) > 0x18) ||
+ ((i & 0x07) > 0x03)) {
+ conv[i] = 0;
+ } else {
+ conv[i] = 1;
+ }
+ }
+
+ memset(vnc_draw_bitmap, 0, sizeof(vnc_draw_bitmap));
+
+ for(i = 0; i < VNC_CONF_VIEWPORT_HEIGHT; ++i) {
+ bitmapptrtab[i] = (u8_t *)((u8_t *)vnc_draw_bitmap +
+ ((i & 0xfff8)/8) * VNC_CONF_VIEWPORT_WIDTH +
+ (i & 7));
+ }
+
+ viewport_x = 0;
+ viewport_y = 0;
+
+ viewport_w = VNC_CONF_VIEWPORT_WIDTH;
+ viewport_h = VNC_CONF_VIEWPORT_HEIGHT;
+
+ return;
+}
+/*-----------------------------------------------------------------------------------*/
+u16_t
+vnc_draw_viewport_x(void)
+{
+ return viewport_x;
+}
+/*-----------------------------------------------------------------------------------*/
+u16_t
+vnc_draw_viewport_y(void)
+{
+ return viewport_y;
+}
+/*-----------------------------------------------------------------------------------*/
+u16_t
+vnc_draw_viewport_w(void)
+{
+ return viewport_w;
+}
+/*-----------------------------------------------------------------------------------*/
+u16_t
+vnc_draw_viewport_h(void)
+{
+ return viewport_h;
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-gtk/apps/wget-dsc.c b/contiki-gtk/apps/wget-dsc.c
new file mode 100644
index 0000000..e357af1
--- /dev/null
+++ b/contiki-gtk/apps/wget-dsc.c
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: wget-dsc.c,v 1.4 2005/04/19 22:02:32 oliverschmidt Exp $
+ *
+ */
+
+#include "dsc.h"
+
+extern struct ctk_icon wget_icon;
+/*-----------------------------------------------------------------------------------*/
+DSC(wget_dsc,
+ "Downloads files or D64 disks from the web",
+ "wget.prg",
+ wget_init,
+ &wget_icon);
+/*-----------------------------------------------------------------------------------*/
+#if CTK_CONF_ICON_BITMAPS
+static unsigned char wgeticon_bitmap[3*3*8] = {
+ 0x00, 0x7e, 0x40, 0x73, 0x46, 0x4c, 0x18, 0x13,
+ 0x00, 0x00, 0xff, 0x81, 0x34, 0xc9, 0x00, 0xb6,
+ 0x00, 0x7e, 0x02, 0xce, 0x72, 0x32, 0x18, 0x48,
+
+ 0x30, 0x27, 0x24, 0x20, 0x37, 0x24, 0x20, 0x33,
+ 0x00, 0x7b, 0x42, 0x00, 0x7b, 0x42, 0x00, 0x3b,
+ 0x0c, 0x24, 0x24, 0x04, 0xa4, 0x24, 0x04, 0x4c,
+
+ 0x12, 0x19, 0x4c, 0x46, 0x63, 0x40, 0x7c, 0x00,
+ 0x22, 0x91, 0x00, 0xc4, 0x81, 0xff, 0x00, 0x00,
+ 0x08, 0x18, 0x32, 0x62, 0xc6, 0x02, 0x3e, 0x00
+};
+#endif /* CTK_CONF_ICON_BITMAPS */
+
+#if CTK_CONF_ICON_TEXTMAPS
+static char wgeticon_textmap[9] = {
+ 'w', 'e', 'b',
+ 'p', 'r', 'g',
+ 'd', '6', '4'
+};
+#endif /* CTK_CONF_ICON_TEXTMAPS */
+
+#if CTK_CONF_ICONS
+static struct ctk_icon wget_icon =
+ {CTK_ICON("Web downloader", wgeticon_bitmap, wgeticon_textmap)};
+#endif /* CTK_CONF_ICONS */
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-gtk/apps/wget-dsc.h b/contiki-gtk/apps/wget-dsc.h
new file mode 100644
index 0000000..a0d45cb
--- /dev/null
+++ b/contiki-gtk/apps/wget-dsc.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: wget-dsc.h,v 1.1 2003/08/20 22:36:44 adamdunkels Exp $
+ *
+ */
+#ifndef __WGET_DSC_H__
+#define __WGET_DSC_H__
+
+#include "dsc.h"
+
+DSC_HEADER(wget_dsc);
+
+#endif /* __WGET_DSC_H__ */
diff --git a/contiki-gtk/apps/wget.c b/contiki-gtk/apps/wget.c
new file mode 100644
index 0000000..b55c388
--- /dev/null
+++ b/contiki-gtk/apps/wget.c
@@ -0,0 +1,475 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: wget.c,v 1.3 2005/04/10 19:23:47 oliverschmidt Exp $
+ *
+ */
+
+
+#include "ctk.h"
+#include "dispatcher.h"
+#include "webclient.h"
+#include "resolv.h"
+#include "petsciiconv.h"
+#include "uip_main.h"
+#include "loader.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <fcntl.h>
+
+
+static struct ctk_window window;
+
+static struct ctk_label urllabel =
+ {CTK_LABEL(0, 1, 4, 1, "URL:")};
+static char url[80];
+static char urledit[80];
+struct ctk_textentry urltextentry =
+ {CTK_TEXTENTRY(5, 1, 29, 1, urledit, 78)};
+
+/*static struct ctk_label hostlabel =
+ {CTK_LABEL(0, 1, 7, 1, "Server:")};
+static char hostedit[40];
+static char host[40];
+static struct ctk_textentry hosttextentry =
+ {CTK_TEXTENTRY(8, 1, 26, 1, hostedit, 38)};
+
+static struct ctk_label filelabel =
+ {CTK_LABEL(0, 3, 5, 1, "File:")};
+static char fileedit[40];
+static char file[40];
+static struct ctk_textentry filetextentry =
+{CTK_TEXTENTRY(8, 3, 26, 1, fileedit, 38)};*/
+
+
+static struct ctk_label savefilenamelabel =
+ {CTK_LABEL(0, 3, 14, 1, "Save filename:")};
+static char savefilename[40];
+static struct ctk_textentry savefilenametextentry =
+ {CTK_TEXTENTRY(15, 3, 19, 1, savefilename, 38)};
+
+static struct ctk_button filebutton =
+ {CTK_BUTTON(0, 5, 13, "Download file")};
+
+static struct ctk_button d64button =
+ {CTK_BUTTON(17, 5, 18, "Download D64 disk")};
+
+static struct ctk_label statustext =
+ {CTK_LABEL(0, 7, 36, 1, "")};
+static char statusmsg[40];
+
+static struct ctk_window d64dialog;
+static struct ctk_label overwritelabel =
+ {CTK_LABEL(0, 1, 36, 1, "This will overwrite the entire disk!")};
+static struct ctk_label makesurelabel1 =
+ {CTK_LABEL(7, 3, 22, 1, "Make sure you have the")};
+static struct ctk_label makesurelabel2 =
+ {CTK_LABEL(6, 4, 24, 1, "right disk in the drive!")};
+static struct ctk_button overwritebutton =
+ {CTK_BUTTON(2, 6, 14, "Overwrite disk")};
+static struct ctk_button cancelbutton =
+ {CTK_BUTTON(26, 6, 6, "Cancel")};
+
+static DISPATCHER_SIGHANDLER(wget_sighandler, s, data);
+static struct dispatcher_proc p =
+ {DISPATCHER_PROC("Web downloader", NULL, wget_sighandler, webclient_appcall)};
+static ek_id_t id;
+
+/* State */
+
+#define DLOAD_NONE 0
+#define DLOAD_FILE 1
+#define DLOAD_D64 2
+static u8_t dload_state;
+static unsigned long dload_bytes;
+
+int d64file;
+
+struct drv_state {
+ u8_t track;
+ u8_t sect;
+};
+
+static struct drv_state ds;
+
+static char buffer[256];
+static u16_t bufferptr;
+
+/*-----------------------------------------------------------------------------------*/
+/* wget_init();
+ *
+ * Initializes and starts the web browser. Called either at startup or
+ * to open the browser window.
+ */
+LOADER_INIT_FUNC(wget_init)
+{
+ if(id == EK_ID_NONE) {
+ id = dispatcher_start(&p);
+
+ /* Create the main window. */
+ ctk_window_new(&window, 36, 8, "Web downloader");
+
+ /* CTK_WIDGET_ADD(&window, &hostlabel);
+ CTK_WIDGET_ADD(&window, &hosttextentry);
+
+ CTK_WIDGET_ADD(&window, &filelabel);
+ CTK_WIDGET_ADD(&window, &filetextentry);*/
+
+ CTK_WIDGET_ADD(&window, &urllabel);
+ CTK_WIDGET_ADD(&window, &urltextentry);
+
+ CTK_WIDGET_ADD(&window, &savefilenamelabel);
+ CTK_WIDGET_ADD(&window, &savefilenametextentry);
+
+ CTK_WIDGET_ADD(&window, &filebutton);
+
+ CTK_WIDGET_ADD(&window, &d64button);
+
+ CTK_WIDGET_ADD(&window, &statustext);
+
+ /* memset(hostedit, 0, sizeof(hostedit));
+ memset(fileedit, 0, sizeof(fileedit));*/
+ dload_state = DLOAD_NONE;
+
+ memset(savefilename, 0, sizeof(savefilename));
+ memset(url, 0, sizeof(url));
+
+ ctk_dialog_new(&d64dialog, 36, 8);
+ CTK_WIDGET_ADD(&d64dialog, &overwritelabel);
+ CTK_WIDGET_ADD(&d64dialog, &makesurelabel1);
+ CTK_WIDGET_ADD(&d64dialog, &makesurelabel2);
+ CTK_WIDGET_ADD(&d64dialog, &overwritebutton);
+ CTK_WIDGET_ADD(&d64dialog, &cancelbutton);
+
+
+ /* Attach as a listener to a number of signals ("Button activate",
+ "Hyperlink activate" and "Hyperlink hover", and the resolver's
+ signal. */
+ dispatcher_listen(ctk_signal_window_close);
+ dispatcher_listen(ctk_signal_button_activate);
+ dispatcher_listen(ctk_signal_hyperlink_activate);
+ dispatcher_listen(resolv_signal_found);
+ }
+ ctk_window_open(&window);
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+show_statustext(char *text)
+{
+ ctk_label_set_text(&statustext, text);
+ CTK_WIDGET_REDRAW(&statustext);
+}
+/*-----------------------------------------------------------------------------------*/
+/* open_url():
+ *
+ * Called when the URL present in the global "url" variable should be
+ * opened. It will call the hostname resolver as well as the HTTP
+ * client requester.
+ */
+static void
+start_get(void)
+{
+ u16_t addr[2];
+ unsigned char i;
+ static char host[32];
+ char *file;
+ register char *urlptr;
+ unsigned short port;
+
+ /* Trim off any spaces in the end of the url. */
+ urlptr = url + strlen(url) - 1;
+ while(*urlptr == ' ' && urlptr > url) {
+ *urlptr = 0;
+ --urlptr;
+ }
+
+ /* Don't even try to go further if the URL is empty. */
+ if(urlptr == url) {
+ return;
+ }
+
+ /* See if the URL starts with http://, otherwise prepend it. */
+ if(strncmp(url, http_http, 7) != 0) {
+ while(urlptr >= url) {
+ *(urlptr + 7) = *urlptr;
+ --urlptr;
+ }
+ strncpy(url, http_http, 7);
+ }
+
+ /* Find host part of the URL. */
+ urlptr = &url[7];
+ for(i = 0; i < sizeof(host); ++i) {
+ if(*urlptr == 0 ||
+ *urlptr == '/' ||
+ *urlptr == ' ' ||
+ *urlptr == ':') {
+ host[i] = 0;
+ break;
+ }
+ host[i] = *urlptr;
+ ++urlptr;
+ }
+
+ /* XXX: Here we should find the port part of the URL, but this isn't
+ currently done because of laziness from the programmer's side
+ :-) */
+
+ /* Find file part of the URL. */
+ while(*urlptr != '/' && *urlptr != 0) {
+ ++urlptr;
+ }
+ if(*urlptr == '/') {
+ file = urlptr;
+ } else {
+ file = "/";
+ }
+
+
+ /* First check if the host is an IP address. */
+ if(uip_main_ipaddrconv(host, (unsigned char *)addr) == 0) {
+
+ /* Try to lookup the hostname. If it fails, we initiate a hostname
+ lookup and print out an informative message on the
+ statusbar. */
+ if(resolv_lookup(host) == NULL) {
+ resolv_query(host);
+ show_statustext("Resolving host...");
+ return;
+ }
+ }
+
+ /* The hostname we present in the hostname table, so we send out the
+ initial GET request. */
+ if(webclient_get(host, 80, file) == 0) {
+ show_statustext("Out of memory error.");
+ } else {
+ show_statustext("Connecting...");
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static
+DISPATCHER_SIGHANDLER(wget_sighandler, s, data)
+{
+ int ret;
+ static unsigned char i;
+ DISPATCHER_SIGHANDLER_ARGS(s, data);
+
+ if(s == ctk_signal_button_activate) {
+ if(data == (void *)&filebutton) {
+ /* ret = cbm_open(2, 8, 2, savefilename);*/
+ if(ret == -1) {
+ sprintf(statusmsg, "Open error with '%s'", savefilename);
+ show_statustext(statusmsg);
+ } else {
+ /* strncpy(host, hostedit, sizeof(host));
+ strncpy(file, fileedit, sizeof(file));*/
+ /* petsciiconv_toascii(host, sizeof(host));
+ petsciiconv_toascii(file, sizeof(file));*/
+ strncpy(url, urledit, sizeof(url));
+ petsciiconv_toascii(url, sizeof(url));
+ start_get();
+ dload_bytes = 0;
+ dload_state = DLOAD_FILE;
+ }
+ } else if(data == (void *)&d64button) {
+ ctk_dialog_open(&d64dialog);
+ } else if(data == (void *)&cancelbutton) {
+ ctk_dialog_close();
+ } else if(data == (void *)&overwritebutton) {
+ ctk_dialog_close();
+ /* strncpy(host, hostedit, sizeof(host));
+ strncpy(file, fileedit, sizeof(file));
+ petsciiconv_toascii(host, sizeof(host));
+ petsciiconv_toascii(file, sizeof(file));*/
+ strncpy(url, urledit, sizeof(url));
+ petsciiconv_toascii(url, sizeof(url));
+ start_get();
+ dload_bytes = 0;
+ dload_state = DLOAD_D64;
+ d64file = open("d64.d64", O_CREAT|O_TRUNC|O_WRONLY);
+ ds.track = 1;
+ ds.sect = 0;
+ bufferptr = 0;
+ }
+ } else if(s == ctk_signal_hyperlink_activate) {
+ if(dload_state == DLOAD_NONE) {
+ /* open_link(w->widget.hyperlink.url);*/
+ strncpy(urledit,
+ ((struct ctk_widget *)data)->widget.hyperlink.url, sizeof(urledit));
+ petsciiconv_topetscii(urledit, sizeof(urledit));
+ CTK_WIDGET_REDRAW(&urltextentry);
+ CTK_WIDGET_FOCUS(&window, &urltextentry);
+ }
+ } else if(s == resolv_signal_found) {
+ /* Either found a hostname, or not. */
+ if((char *)data != NULL &&
+ resolv_lookup((char *)data) != NULL) {
+ start_get();
+ } else {
+ show_statustext("Host not found.");
+ }
+ } else if(s == ctk_signal_window_close) {
+ dispatcher_exit(&p);
+ id = EK_ID_NONE;
+ LOADER_UNLOAD();
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+/* webclient_aborted():
+ *
+ * Callback function. Called from the webclient when the HTTP
+ * connection was abruptly aborted.
+ */
+void
+webclient_aborted(void)
+{
+ show_statustext("Connection reset by peer");
+}
+/*-----------------------------------------------------------------------------------*/
+/* webclient_timedout():
+ *
+ * Callback function. Called from the webclient when the HTTP
+ * connection timed out.
+ */
+void
+webclient_timedout(void)
+{
+ show_statustext("Connection timed out");
+ if(dload_state == DLOAD_FILE) {
+ /* cbm_close(2);*/
+ }
+
+}
+/*-----------------------------------------------------------------------------------*/
+/* webclient_closed():
+ *
+ * Callback function. Called from the webclient when the HTTP
+ * connection was closed after a request from the "webclient_close()"
+ * function. .
+ */
+void
+webclient_closed(void)
+{
+ show_statustext("Done.");
+}
+/*-----------------------------------------------------------------------------------*/
+/* webclient_closed():
+ *
+ * Callback function. Called from the webclient when the HTTP
+ * connection is connected.
+ */
+void
+webclient_connected(void)
+{
+ show_statustext("Request sent...");
+}
+/*-----------------------------------------------------------------------------------*/
+/*-----------------------------------------------------------------------------------*/
+static void
+write_buffer(void)
+{
+ char buf2[256];
+ int i;
+
+ for(i = 0; i < 256; ++i) {
+ buf2[i] = i;
+ }
+
+ write(d64file, buf2, 256);
+ write(d64file, buffer, 256);
+ /* write_sector(8, ds.track, ds.sect, buffer);
+ if(next_sector() != 0) {
+ dload_state = DLOAD_NONE;
+ }*/
+}
+static void
+handle_d64_data(char *data, u16_t len)
+{
+ u16_t bufferlen;
+
+ while(dload_state == DLOAD_D64 &&
+ len > 0) {
+ bufferlen = sizeof(buffer) - bufferptr;
+ if(len < bufferlen) {
+ bufferlen = len;
+ }
+
+ memcpy(&buffer[bufferptr], data, bufferlen);
+
+ data += bufferlen;
+ bufferptr += bufferlen;
+ len -= bufferlen;
+
+ if(bufferptr == sizeof(buffer)) {
+ write_buffer();
+ bufferptr = 0;
+ }
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+/* webclient_datahandler():
+ *
+ * Callback function. Called from the webclient module when HTTP data
+ * has arrived.
+ */
+void
+webclient_datahandler(char *data, u16_t len)
+{
+ int ret;
+
+ if(len > 0) {
+ dload_bytes += len;
+ sprintf(statusmsg, "Downloading (%lu bytes)", dload_bytes);
+ show_statustext(statusmsg);
+ if(dload_state == DLOAD_D64) {
+ handle_d64_data(data, len);
+ } else if(dload_state == DLOAD_FILE) {
+ /* ret = cbm_write(2, data, len); */
+ if(ret != len) {
+ sprintf(statusmsg, "Wrote only %d bytes", ret);
+ show_statustext(statusmsg);
+ }
+ }
+ }
+
+ if(data == NULL) {
+ if(dload_state == DLOAD_FILE) {
+ /* cbm_close(2);*/
+ }
+ close(d64file);
+ dload_state = DLOAD_NONE;
+ sprintf(statusmsg, "Finished downloading %lu bytes", dload_bytes);
+ show_statustext(statusmsg);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-gtk/background.png b/contiki-gtk/background.png
new file mode 100644
index 0000000..bd53886
--- /dev/null
+++ b/contiki-gtk/background.png
Binary files differ
diff --git a/contiki-gtk/conf/cc-conf.h b/contiki-gtk/conf/cc-conf.h
new file mode 100644
index 0000000..84db2b8
--- /dev/null
+++ b/contiki-gtk/conf/cc-conf.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the Contiki desktop OS
+ *
+ * $Id: cc-conf.h,v 1.2 2004/07/04 21:15:53 adamdunkels Exp $
+ *
+ */
+#ifndef __CC_CONF_H__
+#define __CC_CONF_H__
+
+#define CC_CONF_REGISTER_ARGS 1
+#define CC_CONF_FUNCTION_POINTER_ARGS 1
+#define CC_CONF_FASTCALL
+
+#endif /* __CC_CONF_H__ */
+
diff --git a/contiki-gtk/conf/clock-conf.h b/contiki-gtk/conf/clock-conf.h
new file mode 100644
index 0000000..1f8ad10
--- /dev/null
+++ b/contiki-gtk/conf/clock-conf.h
@@ -0,0 +1,7 @@
+#ifndef __CLOCK_CONF_H__
+#define __CLOCK_CONF_H__
+
+typedef unsigned long clock_time_t;
+#define CLOCK_CONF_SECOND 1000
+
+#endif /* __CLOCK_CONF_H__ */
diff --git a/contiki-gtk/conf/ctk-conf.h b/contiki-gtk/conf/ctk-conf.h
new file mode 100644
index 0000000..3d5c19b
--- /dev/null
+++ b/contiki-gtk/conf/ctk-conf.h
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the "ctk" console GUI toolkit for cc65
+ *
+ * $Id: ctk-conf.h,v 1.5 2004/07/04 21:15:53 adamdunkels Exp $
+ *
+ */
+
+#ifndef __CTK_CONF_H__
+#define __CTK_CONF_H__
+
+/*
+ * This file is used for setting various compile time settings for the
+ * CTK GUI toolkit.
+*/
+
+/* Toggles mouse support (must have support functions in the
+architecture specific files to work). */
+#define CTK_CONF_MOUSE_SUPPORT 1
+
+/* Defines which key that is to be used for activating the menus */
+#define CTK_CONF_MENU_KEY CH_F1
+
+/* Defines which key that is to be used for switching the frontmost
+ window. */
+#define CTK_CONF_WINDOWSWITCH_KEY CH_F3
+
+/* Defines which key that is to be used for switching to the next
+ widget. */
+#define CTK_CONF_WIDGETDOWN_KEY CH_TAB
+
+/* Defines which key that is to be used for switching to the prevoius
+ widget. */
+#define CTK_CONF_WIDGETUP_KEY CH_F5
+
+/* Toggles support for icons. */
+#define CTK_CONF_ICONS 1 /* 107 bytes */
+
+/* Toggles support for icon bitmaps. */
+#define CTK_CONF_ICON_BITMAPS 1
+
+/* Toggles support for icon textmaps. */
+#define CTK_CONF_ICON_TEXTMAPS 1
+
+/* Toggles support for movable windows. */
+#define CTK_CONF_WINDOWMOVE 1 /* 333 bytes */
+
+/* Toggles support for closable windows. */
+#define CTK_CONF_WINDOWCLOSE 1 /* 14 bytes */
+
+/* Toggles support for menus. */
+#define CTK_CONF_MENUS 1 /* 1384 bytes */
+
+/* Defines the default width of a menu. */
+#define CTK_CONF_MENUWIDTH 16
+/* The maximum number of menu items in each menu. */
+#define CTK_CONF_MAXMENUITEMS 10
+
+#define CTK_CONF_WIDGET_FLAGS 1
+
+#endif /* __CTK_CONF_H__ */
diff --git a/contiki-gtk/conf/ctk-conio-conf.h b/contiki-gtk/conf/ctk-conio-conf.h
new file mode 100644
index 0000000..0f70aa8
--- /dev/null
+++ b/contiki-gtk/conf/ctk-conio-conf.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the "ctk" console GUI toolkit for cc65
+ *
+ * $Id: ctk-conio-conf.h,v 1.3 2004/08/12 22:00:16 oliverschmidt Exp $
+ *
+ */
+
+#ifndef __CTK_CONIO_CONF_H__
+#define __CTK_CONIO_CONF_H__
+
+#define COLOR_BLACK 0
+#define COLOR_WHITE 1
+
+#define BORDERCOLOR COLOR_BLACK
+#define SCREENCOLOR COLOR_BLACK
+#define BACKGROUNDCOLOR COLOR_BLACK
+
+#define WINDOWCOLOR_FOCUS COLOR_WHITE
+#define WINDOWCOLOR COLOR_WHITE
+
+#define DIALOGCOLOR COLOR_WHITE
+
+#define WIDGETCOLOR_HLINK COLOR_WHITE
+#define WIDGETCOLOR_FWIN COLOR_WHITE
+#define WIDGETCOLOR COLOR_WHITE
+#define WIDGETCOLOR_DIALOG COLOR_WHITE
+#define WIDGETCOLOR_FOCUS COLOR_WHITE
+
+#define MENUCOLOR COLOR_WHITE
+#define OPENMENUCOLOR COLOR_WHITE
+#define ACTIVEMENUITEMCOLOR COLOR_WHITE
+
+#endif /* __CTK_CONIO_CONF_H__ */
diff --git a/contiki-gtk/conf/ctk-vncserver-conf.h b/contiki-gtk/conf/ctk-vncserver-conf.h
new file mode 100644
index 0000000..a557cf5
--- /dev/null
+++ b/contiki-gtk/conf/ctk-vncserver-conf.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the Contiki desktop OS
+ *
+ * $Id: ctk-vncserver-conf.h,v 1.3 2004/09/01 20:32:48 adamdunkels Exp $
+ *
+ */
+#ifndef __CTK_VNCSERVER_CONF_H__
+#define __CTK_VNCSERVER_CONF_H__
+
+#define CTK_VNCSERVER_CONF_NUMCONNS 10
+
+#define CTK_VNCSERVER_CONF_MAX_ICONS 16
+
+#endif /* __CTK_VNCSERVER_CONF_H__ */
+
diff --git a/contiki-gtk/conf/ek-conf.h b/contiki-gtk/conf/ek-conf.h
new file mode 100644
index 0000000..a5a07d4
--- /dev/null
+++ b/contiki-gtk/conf/ek-conf.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the "ek" event kernel.
+ *
+ * $Id: ek-conf.h,v 1.2 2004/07/04 21:15:53 adamdunkels Exp $
+ *
+ */
+
+
+#ifndef __EK_CONF_H__
+#define __EK_CONF_H__
+
+#include <time.h>
+
+typedef void *ek_data_t;
+
+typedef unsigned char ek_signal_t;
+typedef unsigned char ek_event_t;
+typedef unsigned char ek_id_t;
+
+/* ek_ticks_t: should be defined to be the largest type that fits the
+ highest timeout value used by the system. For example, if all
+ timeouts are between 1 and 150, the ek_ticks_t can be typedef'd as
+ "unsigned char", but if the maximum timeout is over 256, "unsigned
+ short" is a better choise. */
+typedef unsigned short ek_ticks_t;
+
+/* ek_clock_t: should be defined to be the native clock ticks type
+ used by the underlying system. (Look for time_t or similar.) */
+typedef unsigned long ek_clock_t;
+
+#define EK_CONF_NUMLISTENERS 32 /* Must be 2^n */
+typedef unsigned char ek_num_listeners_t;
+
+#define EK_CONF_MAXPROCS 32
+
+#define EK_CONF_NUMEVENTS 32
+typedef unsigned char ek_num_events_t;
+
+#endif /* __EK_CONF_H__ */
diff --git a/contiki-gtk/conf/email-conf.h b/contiki-gtk/conf/email-conf.h
new file mode 100644
index 0000000..d29b50a
--- /dev/null
+++ b/contiki-gtk/conf/email-conf.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2004, Adam Dunkels.
+ * 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.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``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 INSTITUTE OR CONTRIBUTORS 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.
+ *
+ * This file is part of the Contiki operating system.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: email-conf.h,v 1.1 2004/12/22 09:42:33 oliverschmidt Exp $
+ */
+#ifndef __EMAIL_CONF_H__
+#define __EMAIL_CONF_H__
+
+#define EMAIL_CONF_WIDTH 76
+#define EMAIL_CONF_HEIGHT 25
+
+#endif /* __EMAIL_CONF_H__ */
diff --git a/contiki-gtk/conf/libconio-conf.h b/contiki-gtk/conf/libconio-conf.h
new file mode 100644
index 0000000..96493ed
--- /dev/null
+++ b/contiki-gtk/conf/libconio-conf.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the Contiki desktop OS
+ *
+ * $Id: libconio-conf.h,v 1.3 2004/07/04 21:15:53 adamdunkels Exp $
+ *
+ */
+#ifndef __LIBCONIO_CONF_H__
+#define __LIBCONIO_CONF_H__
+
+#define LIBCONIO_CONF_SCREEN_WIDTH 80
+#define LIBCONIO_CONF_SCREEN_HEIGHT 45
+
+#endif /* __LIBCONIO_CONF_H__ */
+
diff --git a/contiki-gtk/conf/log-conf.h b/contiki-gtk/conf/log-conf.h
new file mode 100644
index 0000000..9ff4810
--- /dev/null
+++ b/contiki-gtk/conf/log-conf.h
@@ -0,0 +1,6 @@
+#ifndef __LOG_CONF_H__
+#define __LOG_CONF_H__
+
+#define LOG_CONF_ENABLED 0
+
+#endif /* __LOG_CONF__H__ */
diff --git a/contiki-gtk/conf/program-handler-conf.h b/contiki-gtk/conf/program-handler-conf.h
new file mode 100644
index 0000000..9e95053
--- /dev/null
+++ b/contiki-gtk/conf/program-handler-conf.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2004, Adam Dunkels.
+ * 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.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``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 INSTITUTE OR CONTRIBUTORS 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.
+ *
+ * This file is part of the Contiki operating system.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: program-handler-conf.h,v 1.1 2005/02/15 14:59:07 oliverschmidt Exp $
+ */
+#ifndef __PROGRAM_HANDLER_CONF_H__
+#define __PROGRAM_HANDLER_CONF_H__
+
+#define PROGRAM_HANDLER_CONF_MAX_NUMDSCS 10
+
+#endif /* __PROGRAM_HANDLER_CONF_H__ */
diff --git a/contiki-gtk/conf/shell-gui-conf.h b/contiki-gtk/conf/shell-gui-conf.h
new file mode 100644
index 0000000..45846b0
--- /dev/null
+++ b/contiki-gtk/conf/shell-gui-conf.h
@@ -0,0 +1,8 @@
+#ifndef __SHELL_GUI_CONF_H__
+#define __SHELL_GUI_CONF_H__
+
+#define SHELL_GUI_CONF_XSIZE 46
+#define SHELL_GUI_CONF_YSIZE 22
+
+
+#endif /* __SHELL_GUI_CONF_H__ */
diff --git a/contiki-gtk/conf/telnetd-conf.h b/contiki-gtk/conf/telnetd-conf.h
new file mode 100644
index 0000000..095cc50
--- /dev/null
+++ b/contiki-gtk/conf/telnetd-conf.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the Contiki Destop OS
+ *
+ * $Id: telnetd-conf.h,v 1.1 2004/02/16 21:14:39 adamdunkels Exp $
+ *
+ */
+#ifndef __TELNETD_CONF_H__
+
+#define TELNETD_CONF_LINELEN 36
+#define TELNETD_CONF_NUMLINES 16
+
+#endif /* __TELNETD_CONF_H__ */
+
+
+
+
+
+
+
+
diff --git a/contiki-gtk/conf/uip-conf.h b/contiki-gtk/conf/uip-conf.h
new file mode 100644
index 0000000..888e37e
--- /dev/null
+++ b/contiki-gtk/conf/uip-conf.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the Contiki Destop OS
+ *
+ * $Id: uip-conf.h,v 1.2 2004/07/04 21:15:53 adamdunkels Exp $
+ *
+ */
+#ifndef __UIP_CONF_H__
+
+#define UIP_CONF_MAX_CONNECTIONS 40
+#define UIP_CONF_MAX_LISTENPORTS 40
+#define UIP_CONF_BUFFER_SIZE 800
+
+#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN
+
+#endif /* __UIP_CONF_H__ */
diff --git a/contiki-gtk/conf/vnc-conf.h b/contiki-gtk/conf/vnc-conf.h
new file mode 100644
index 0000000..bad8c37
--- /dev/null
+++ b/contiki-gtk/conf/vnc-conf.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the Contiki VNC client
+ *
+ * $Id: vnc-conf.h,v 1.2 2004/07/04 21:15:53 adamdunkels Exp $
+ *
+ */
+
+
+#ifndef __VNC_CONF_H__
+
+#define VNC_CONF_VIEWPORT_WIDTH (32*8)
+#define VNC_CONF_VIEWPORT_HEIGHT (16*8)
+
+#define VNC_CONF_REFRESH_ROWS 8
+
+#endif /* __VNC_CONF_H__ */
diff --git a/contiki-gtk/conf/www-conf.h b/contiki-gtk/conf/www-conf.h
new file mode 100644
index 0000000..9b7858c
--- /dev/null
+++ b/contiki-gtk/conf/www-conf.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: www-conf.h,v 1.4 2004/07/04 21:15:53 adamdunkels Exp $
+ *
+ */
+#ifndef __WWW_CONF_H__
+#define __WWW_CONF_H__
+
+/* The size of the HTML viewing area. */
+#define WWW_CONF_WEBPAGE_WIDTH 76
+#define WWW_CONF_WEBPAGE_HEIGHT 30
+
+/* The size of the "Back" history. */
+#define WWW_CONF_HISTORY_SIZE 40
+
+/* Defines the maximum length of an URL */
+#define WWW_CONF_MAX_URLLEN 200
+
+/* The maxiumum number of widgets (i.e., hyperlinks, form elements) on
+ a page. */
+#define WWW_CONF_MAX_NUMPAGEWIDGETS 80
+
+/* Turns <center> support on or off; must be on for forms to work. */
+#define WWW_CONF_RENDERSTATE 1
+
+/* Toggles support for HTML forms. */
+#define WWW_CONF_FORMS 1
+
+/* Maximum lengths for various HTML form parameters. */
+#define WWW_CONF_MAX_FORMACTIONLEN 400
+#define WWW_CONF_MAX_FORMNAMELEN 200
+#define WWW_CONF_MAX_INPUTNAMELEN 200
+#define WWW_CONF_MAX_INPUTVALUELEN 340
+
+#define WWW_CONF_PAGEVIEW 1
+
+#endif /* __WWW_CONF_H__ */
diff --git a/contiki-gtk/contiki-main.c b/contiki-gtk/contiki-main.c
new file mode 100644
index 0000000..9c7d74b
--- /dev/null
+++ b/contiki-gtk/contiki-main.c
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: contiki-main.c,v 1.14 2004/09/01 20:34:18 adamdunkels Exp $
+ *
+ */
+
+#include "ek.h"
+#include "clock.h"
+
+#include <gdk/gdktypes.h>
+#include <gtk/gtk.h>
+
+#include "uip.h"
+#include "ctk.h"
+
+#include "ctk-vncserver.h"
+#include "ctk-termtelnet.h"
+
+#include "cfs-posix.h"
+
+#include "uip-fw.h"
+
+#include "about-dsc.h"
+#include "calc-dsc.h"
+#include "editor-dsc.h"
+#include "email-dsc.h"
+#include "ftp-dsc.h"
+#include "irc-dsc.h"
+#include "netconf-dsc.h"
+#include "processes-dsc.h"
+#include "shell-dsc.h"
+#include "www-dsc.h"
+
+
+
+void tapdev_send(void);
+static struct uip_fw_netif tapif =
+ {UIP_FW_NETIF(0,0,0,0, 0,0,0,0, tapdev_send)};
+
+
+static gint
+idle_callback(gpointer data)
+{
+
+ ek_run();
+ return TRUE;
+}
+/*-----------------------------------------------------------------------------------*/
+int
+main(int argc, char **argv)
+{
+ u16_t addr[2];
+
+ /* html_test();*/
+
+ gtk_init(&argc, &argv);
+
+ ek_init();
+
+ tcpip_init(NULL);
+
+ ctk_gtksim_service_init(NULL);
+ ctk_init();
+
+ /* ctk_vncserver_init(NULL); */
+ /* ctk_termtelnet_init(NULL);*/
+
+ uip_init();
+ uip_ipaddr(addr, 192,168,2,2);
+ uip_sethostaddr(addr);
+
+ uip_ipaddr(addr, 192,168,2,1);
+ uip_setdraddr(addr);
+
+ uip_ipaddr(addr, 255,255,255,0);
+ uip_setnetmask(addr);
+
+
+ resolv_init(NULL);
+
+ tapdev_init();
+ uip_fw_service_init();
+ uip_fw_init();
+ uip_fw_default(&tapif);
+
+ /* tapdev_service_init(NULL);*/
+
+
+ program_handler_init();
+ program_handler_add(&about_dsc, "About", 1);
+ program_handler_add(&netconf_dsc, "Network setup", 1);
+ program_handler_add(&ftp_dsc, "FTP client", 1);
+ program_handler_add(&editor_dsc, "Editor", 1);
+ program_handler_add(&www_dsc, "Web browser", 1);
+ program_handler_add(&processes_dsc, "Processes", 1);
+ program_handler_add(&shell_dsc, "Command shell", 1);
+ program_handler_add(&calc_dsc, "Calculator", 1);
+ program_handler_add(&email_dsc, "E-mail", 1);
+
+ program_handler_add(&irc_dsc, "IRC", 1);
+
+ gtk_timeout_add(20, idle_callback, NULL);
+
+
+ cfs_posix_init(NULL);
+
+ /* sock_httpd_init(NULL);*/
+
+ gtk_main();
+
+
+ return 0;
+
+ argv = argv;
+ argc = argc;
+}
+/*-----------------------------------------------------------------------------------*/
+#include <sys/time.h>
+
+clock_time_t
+clock_time(void)
+{
+ struct timeval tv;
+ struct timezone tz;
+
+ gettimeofday(&tv, &tz);
+
+ return tv.tv_sec * 1000 + tv.tv_usec / 1000;
+}
+/*-----------------------------------------------------------------------------------*/
+
+void nntpc_done(int i) {}
+
+void log_message(char *m1, char *m2)
+{
+ printf("%s%s\n", m1, m2);
+}
diff --git a/contiki-gtk/ctk/conio.h b/contiki-gtk/ctk/conio.h
new file mode 100644
index 0000000..de89d5e
--- /dev/null
+++ b/contiki-gtk/ctk/conio.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the Contiki desktop environment
+ *
+ * $Id: conio.h,v 1.2 2004/07/04 21:15:54 adamdunkels Exp $
+ *
+ */
+#ifndef __CONIO_H__
+#define __CONIO_H__
+
+
+#define CH_ULCORNER '+'
+#define CH_URCORNER '+'
+#define CH_LLCORNER '+'
+#define CH_LRCORNER '+'
+
+#include "libconio.h"
+
+#endif /* __CONIO_H__ */
+
diff --git a/contiki-gtk/ctk/ctk-arch.h b/contiki-gtk/ctk/ctk-arch.h
new file mode 100644
index 0000000..c9c0c5b
--- /dev/null
+++ b/contiki-gtk/ctk/ctk-arch.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * $Id: ctk-arch.h,v 1.3 2004/07/04 21:15:54 adamdunkels Exp $
+ *
+ */
+
+#ifndef __CTK_ARCH_H__
+#define __CTK_ARCH_H__
+
+#if WITH_CTKVNC
+#include "ctk-vncarch.h"
+#else
+#include "ctk-gtksim.h"
+#endif
+
+#define ctk_arch_isprint(x) isprint(x)
+
+#endif /* __CTK_ARCH_H__ */
diff --git a/contiki-gtk/ctk/ctk-gtksim-conio.c b/contiki-gtk/ctk/ctk-gtksim-conio.c
new file mode 100644
index 0000000..73ff969
--- /dev/null
+++ b/contiki-gtk/ctk/ctk-gtksim-conio.c
@@ -0,0 +1,359 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * 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.
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the "ctk" console GUI toolkit for cc65
+ *
+ * $Id: ctk-gtksim-conio.c,v 1.1 2004/07/04 20:54:13 adamdunkels Exp $
+ *
+ */
+
+/* This file provides a very simple implementation of CTK using the
+ GTK (Gimp toolkit) under FreeBSD/Linux. */
+
+#include <gtk/gtk.h>
+
+#include "libconio.h"
+
+#include "ctk.h"
+#include "ctk-draw.h"
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define FONT_HEIGHT 14
+#define FONT_WIDTH 8
+#define FONT_HEIGHT_BASELINE 11
+
+#define SCREEN_WIDTH LIBCONIO_CONF_SCREEN_WIDTH
+#define SCREEN_HEIGHT LIBCONIO_CONF_SCREEN_HEIGHT
+
+static GdkPixmap *pixmap = NULL;
+static GtkWidget *drawing_area;
+static GdkFont *font;
+
+static int mouse_x, mouse_y, mouse_button;
+
+/*-----------------------------------------------------------------------------------*/
+void
+ctk_arch_draw_char(char c,
+ unsigned char x, unsigned char y,
+ unsigned char reversed,
+ unsigned char color)
+{
+ char str[2];
+
+ str[0] = c;
+ str[1] = 0;
+
+ if(reversed) {
+ gdk_draw_rectangle(pixmap,
+ drawing_area->style->black_gc,
+ TRUE,
+ x * FONT_WIDTH,
+ y * FONT_HEIGHT,
+ FONT_WIDTH, FONT_HEIGHT);
+
+ gdk_draw_string(pixmap,
+ font,
+ drawing_area->style->white_gc,
+ x * FONT_WIDTH, FONT_HEIGHT_BASELINE + y * FONT_HEIGHT,
+ str);
+ } else {
+ gdk_draw_rectangle(pixmap,
+ drawing_area->style->white_gc,
+ TRUE,
+ x * FONT_WIDTH,
+ y * FONT_HEIGHT,
+ FONT_WIDTH, FONT_HEIGHT);
+
+ gdk_draw_string(pixmap,
+ font,
+ drawing_area->style->black_gc,
+ x * FONT_WIDTH, FONT_HEIGHT_BASELINE + y * FONT_HEIGHT,
+ str);
+ }
+
+ gdk_draw_pixmap(drawing_area->window,
+ drawing_area->style->fg_gc[GTK_WIDGET_STATE (drawing_area)],
+ pixmap,
+ x * FONT_WIDTH,
+ y * FONT_HEIGHT,
+ x * FONT_WIDTH,
+ y * FONT_HEIGHT,
+ FONT_WIDTH, FONT_HEIGHT);
+
+}
+/*-----------------------------------------------------------------------------------*/
+#define NUMKEYS 100
+static ctk_arch_key_t keys[NUMKEYS];
+static int firstkey, lastkey;
+
+unsigned char
+ctk_arch_keyavail(void)
+{
+ return firstkey != lastkey;
+}
+/*-----------------------------------------------------------------------------------*/
+ctk_arch_key_t
+ctk_arch_getkey(void)
+{
+ ctk_arch_key_t key;
+ key = keys[firstkey];
+
+ if(firstkey != lastkey) {
+ ++firstkey;
+ if(firstkey >= NUMKEYS) {
+ firstkey = 0;
+ }
+ }
+
+ return key;
+}
+/*-----------------------------------------------------------------------------------*/
+static gint
+configure_event(GtkWidget *widget, GdkEventConfigure *event)
+{
+ if(pixmap != NULL) {
+ gdk_pixmap_unref(pixmap);
+ }
+
+ pixmap = gdk_pixmap_new(widget->window,
+ widget->allocation.width,
+ widget->allocation.height,
+ -1);
+
+ if(pixmap == NULL) {
+ printf("gdk_pixmap_new == NULL\n");
+ exit(1);
+ }
+ gdk_draw_rectangle(pixmap,
+ widget->style->white_gc,
+ TRUE,
+ 0, 0,
+ widget->allocation.width,
+ widget->allocation.height);
+
+ return TRUE;
+}
+
+/* Redraw the screen from the backing pixmap */
+static gint
+expose_event (GtkWidget * widget, GdkEventExpose * event)
+{
+ /* draw_screen();*/
+ gdk_draw_pixmap(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
+ pixmap,
+ event->area.x, event->area.y,
+ event->area.x, event->area.y,
+ event->area.width, event->area.height);
+ return FALSE;
+}
+
+static gint
+key_press_event (GtkWidget * widget, GdkEventKey * event)
+{
+ if(event->keyval == GDK_Shift_L ||
+ event->keyval == GDK_Shift_R) {
+ return TRUE;
+ }
+ keys[lastkey] = event->keyval;
+ ++lastkey;
+ if(lastkey >= NUMKEYS) {
+ lastkey = 0;
+ }
+
+ return TRUE;
+}
+
+static gint
+key_release_event (GtkWidget * widget, GdkEventKey * event)
+{
+ return TRUE;
+}
+
+static gint
+motion_notify_event (GtkWidget * widget, GdkEventMotion * event)
+{
+ mouse_x = event->x;
+ mouse_y = event->y;
+ return TRUE;
+}
+
+static gint
+button_press_event (GtkWidget * widget, GdkEventButton * event)
+{
+ mouse_button = event->button;
+ return TRUE;
+}
+
+static gint
+button_release_event (GtkWidget * widget, GdkEventButton * event)
+{
+ mouse_button = 0;
+ return TRUE;
+}
+
+static void
+quit(void)
+{
+ gtk_exit(0);
+}
+/*-----------------------------------------------------------------------------------*/
+void
+ctk_gtksim_init(int *argc, char **argv[])
+{
+ GtkWidget *window;
+#if 0
+ GtkWidget *vbox;
+#endif
+
+ gtk_init(argc, argv);
+
+ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(window, "Contiki GTKsim");
+
+#if 0
+ vbox = gtk_vbox_new(FALSE, 0);
+ gtk_container_add(GTK_CONTAINER (window), vbox);
+ gtk_widget_show(vbox);
+#endif
+ gtk_signal_connect(GTK_OBJECT (window), "destroy",
+ GTK_SIGNAL_FUNC (quit), NULL);
+
+ /* Create the drawing area */
+
+ drawing_area = gtk_drawing_area_new();
+ gtk_drawing_area_size(GTK_DRAWING_AREA (drawing_area),
+ SCREEN_WIDTH * FONT_WIDTH,
+ SCREEN_HEIGHT * FONT_HEIGHT);
+#if 0
+ gtk_box_pack_start(GTK_BOX(vbox), drawing_area, TRUE, TRUE, 0);
+#else
+ gtk_container_add(GTK_CONTAINER(window), drawing_area);
+#endif
+
+ gtk_widget_show(drawing_area);
+
+ /* Load a fixed width font. */
+ /* font = gdk_font_load("-*-gamow-medium-r-*-*-*-90-*-*-*-*-*-*");*/
+ /* font = gdk_font_load("-*-courier-*-r-normal-*-14-*-*-*-m-*-iso8859-1");*/
+ font = gdk_font_load("-*-courier-medium-r-*-*-12-*-*-*-*-*-iso8859-1");
+ if(font != NULL) {
+ printf("Font loaded OK\n");
+ } else {
+ printf("Font loading failed\n");
+ exit(1);
+ }
+
+
+ /* Signals used to handle backing pixmap */
+
+ gtk_signal_connect(GTK_OBJECT (drawing_area), "expose_event",
+ (GtkSignalFunc) expose_event, NULL);
+ gtk_signal_connect(GTK_OBJECT (drawing_area), "configure_event",
+ (GtkSignalFunc) configure_event, NULL);
+
+ /* Event signals */
+
+ gtk_signal_connect(GTK_OBJECT (window), "key_press_event",
+ (GtkSignalFunc) key_press_event, NULL);
+ gtk_signal_connect(GTK_OBJECT (window), "key_release_event",
+ (GtkSignalFunc) key_release_event, NULL);
+
+ gtk_signal_connect(GTK_OBJECT (drawing_area), "motion_notify_event",
+ (GtkSignalFunc) motion_notify_event, NULL);
+
+ gtk_signal_connect(GTK_OBJECT (drawing_area), "button_press_event",
+ (GtkSignalFunc) button_press_event, NULL);
+
+ gtk_signal_connect(GTK_OBJECT (drawing_area), "button_release_event",
+ (GtkSignalFunc) button_release_event, NULL);
+
+ gtk_widget_set_events(drawing_area, gtk_widget_get_events (drawing_area)
+ | GDK_KEY_PRESS_MASK
+ | GDK_KEY_RELEASE_MASK
+ | GDK_POINTER_MOTION_MASK
+ | GDK_BUTTON_PRESS_MASK
+ | GDK_BUTTON_RELEASE_MASK);
+
+ gtk_widget_show(window);
+
+}
+/*-----------------------------------------------------------------------------------*/
+void
+ctk_mouse_init(void)
+{
+
+}
+/*-----------------------------------------------------------------------------------*/
+unsigned short
+ctk_mouse_x(void)
+{
+ return mouse_x;
+}
+/*-----------------------------------------------------------------------------------*/
+unsigned short
+ctk_mouse_y(void)
+{
+ return mouse_y;
+}
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+ctk_mouse_xtoc(unsigned short x)
+{
+ return x / FONT_WIDTH;
+}
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+ctk_mouse_ytoc(unsigned short y)
+{
+ return y / FONT_HEIGHT;
+}
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+ctk_mouse_button(void)
+{
+ return mouse_button;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+ctk_mouse_hide(void)
+{
+}
+/*-----------------------------------------------------------------------------------*/
+void
+ctk_mouse_show(void)
+{
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-gtk/ctk/ctk-gtksim-draw.c b/contiki-gtk/ctk/ctk-gtksim-draw.c
new file mode 100644
index 0000000..868ff18
--- /dev/null
+++ b/contiki-gtk/ctk/ctk-gtksim-draw.c
@@ -0,0 +1,172 @@
+
+#include "ctk-gtksim.h"
+
+#include "ctk-gtksim-draw.h"
+
+#define RASTER_X 8
+
+#define FONT_BASELINE 8
+
+struct ctk_gtksim_draw_font {
+ /* GdkFont *font;*/
+ PangoFontDescription *font;
+};
+
+struct ctk_gtksim_draw_color {
+ GdkGC *color;
+};
+
+struct ctk_gtksim_draw_font ctk_gtksim_draw_font_normal,
+ ctk_gtksim_draw_font_bold,
+ ctk_gtksim_draw_font_menu,
+ ctk_gtksim_draw_font_monospace,
+ ctk_gtksim_draw_font_monospace_bold;
+
+struct ctk_gtksim_draw_color ctk_gtksim_draw_color_white,
+ ctk_gtksim_draw_color_lightgray,
+ ctk_gtksim_draw_color_midgray,
+ ctk_gtksim_draw_color_darkgray,
+ ctk_gtksim_draw_color_ddarkgray,
+ ctk_gtksim_draw_color_black,
+ ctk_gtksim_draw_color_blue;
+
+/*static GdkFont *font, *ctk_gtksim_draw_font_bold, *menufont, *ctk_gtksim_draw_font_monospace;*/
+
+static PangoLayout *layout;
+
+/*--------------------------------------------------------------------------*/
+int
+ctk_gtksim_draw_string_width(struct ctk_gtksim_draw_font *font,
+ char *str, int monospace)
+{
+ int width;
+ if(monospace) {
+ return strlen(str) * RASTER_X;
+ } else {
+ pango_layout_set_text(layout, str, -1);
+ pango_layout_set_font_description(layout, font->font);
+ pango_layout_get_size(layout, &width, NULL);
+ return width / PANGO_SCALE;
+ /* return gdk_string_width(font->font, str);*/
+ }
+}
+/*--------------------------------------------------------------------------*/
+void
+ctk_gtksim_draw_string(struct ctk_gtksim_draw_font *font,
+ struct ctk_gtksim_draw_color *color,
+ int x, int y, char *str,
+ int monospace)
+{
+ int i;
+ char text[2];
+
+ pango_layout_set_font_description(layout, font->font);
+
+ if(monospace) {
+ text[1] = 0;
+ for(i = 0; i < strlen(str); ++i) {
+ text[0] = str[i];
+ pango_layout_set_text(layout, text, 1);
+
+ gdk_draw_layout(ctk_gtksim_pixmap, color->color,
+ x, y, layout);
+ /* gdk_draw_string(ctk_gtksim_pixmap, font->font, color->color,
+ x, y + FONT_BASELINE, text);*/
+ x += RASTER_X;
+ }
+ } else {
+ pango_layout_set_text(layout, str, -1);
+
+ gdk_draw_layout(ctk_gtksim_pixmap, color->color,
+ x, y, layout);
+ /* gdk_draw_string(ctk_gtksim_pixmap, font->font, color->color,
+ x, y + FONT_BASELINE, str);*/
+ }
+}
+/*--------------------------------------------------------------------------*/
+static GdkGC *
+get_color(unsigned short r, unsigned short g, unsigned short b)
+{
+ GdkGCValues values;
+ GdkColor color;
+
+ color.pixel = 0;
+ color.red = r;
+ color.green = g;
+ color.blue = b;
+
+ if(gdk_colormap_alloc_color(gdk_colormap_get_system(),
+ &color, FALSE, TRUE)) {
+ }
+
+ values.foreground = color;
+
+ return gdk_gc_new_with_values(ctk_gtksim_drawing_area->window,
+ &values,
+ GDK_GC_FOREGROUND);
+}
+/*--------------------------------------------------------------------------*/
+void
+ctk_gtksim_draw_init(void)
+{
+ /*
+ ctk_gtksim_draw_font_normal.font =
+ gdk_font_load("-*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*");
+ if(ctk_gtksim_draw_font_normal.font != NULL) {
+ printf("ctk-gtksim-service: Font loaded OK\n");
+ } else {
+ printf("ctk-gtksim-service: Font loading failed\n");
+ exit(1);
+ }
+
+ ctk_gtksim_draw_font_bold.font =
+ gdk_font_load("-*-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*");
+ if(ctk_gtksim_draw_font_bold.font != NULL) {
+ printf("ctk-gtksim-service: Font loaded OK\n");
+ } else {
+ printf("ctk-gtksim-service: Font loading failed\n");
+ exit(1);
+ }
+
+ ctk_gtksim_draw_font_menu.font =
+ gdk_font_load("-*-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*");
+ if(ctk_gtksim_draw_font_menu.font != NULL) {
+ printf("ctk-gtksim-service: Font loaded OK\n");
+ } else {
+ printf("ctk-gtksim-service: Font loading failed\n");
+ exit(1);
+ }
+
+ ctk_gtksim_draw_font_monospace.font =
+ gdk_font_load("-*-courier-medium-r-*-*-*-120-*-*-*-*-*-*");
+ if(ctk_gtksim_draw_font_monospace.font != NULL) {
+ printf("ctk-gtksim-service: Font loaded OK\n");
+ } else {
+ printf("ctk-gtksim-service: Font loading failed\n");
+ exit(1);
+ }
+ */
+ ctk_gtksim_draw_color_blue.color = get_color(0, 0, 0xffff);
+ ctk_gtksim_draw_color_white.color = get_color(0xffff, 0xffff, 0xffff);
+ ctk_gtksim_draw_color_lightgray.color = get_color(0xefff, 0xefff, 0xefff);
+ ctk_gtksim_draw_color_midgray.color = get_color(0xdfff, 0xdfff, 0xdfff);
+ ctk_gtksim_draw_color_darkgray.color = get_color(0xcfff, 0xcfff, 0xcfff);
+ ctk_gtksim_draw_color_ddarkgray.color = get_color(0xafff, 0xafff, 0xafff);
+ ctk_gtksim_draw_color_black.color = get_color(0, 0, 0);
+
+ layout = pango_layout_new(gtk_widget_get_pango_context(ctk_gtksim_drawing_area));
+
+ ctk_gtksim_draw_font_normal.font =
+ pango_font_description_from_string("Arial 8");
+ ctk_gtksim_draw_font_bold.font =
+ pango_font_description_from_string("Arial bold 8");
+ ctk_gtksim_draw_font_menu.font =
+ pango_font_description_from_string("Arial bold 9");
+ ctk_gtksim_draw_font_monospace.font =
+ pango_font_description_from_string("Monospace 8");
+ ctk_gtksim_draw_font_monospace_bold.font =
+ pango_font_description_from_string("Monospace bold 8");
+
+
+}
+/*--------------------------------------------------------------------------*/
diff --git a/contiki-gtk/ctk/ctk-gtksim-draw.h b/contiki-gtk/ctk/ctk-gtksim-draw.h
new file mode 100644
index 0000000..ffb783c
--- /dev/null
+++ b/contiki-gtk/ctk/ctk-gtksim-draw.h
@@ -0,0 +1,37 @@
+#ifndef __CTK_GTKSIM_DRAW_H__
+#define __CTK_GTKSIM_DRAW_H__
+
+struct ctk_gtksim_draw_font;
+
+extern struct ctk_gtksim_draw_font ctk_gtksim_draw_font_normal,
+ ctk_gtksim_draw_font_bold,
+ ctk_gtksim_draw_font_menu,
+ ctk_gtksim_draw_font_monospace,
+ ctk_gtksim_draw_font_monospace_bold;
+
+struct ctk_gtksim_draw_color;
+
+extern struct ctk_gtksim_draw_color ctk_gtksim_draw_color_white,
+ ctk_gtksim_draw_color_lightgray,
+ ctk_gtksim_draw_color_midgray,
+ ctk_gtksim_draw_color_darkgray,
+ ctk_gtksim_draw_color_ddarkgray,
+ ctk_gtksim_draw_color_black,
+ ctk_gtksim_draw_color_blue;
+
+void ctk_gtksim_draw_init(void);
+
+int ctk_gtksim_draw_string_width(struct ctk_gtksim_draw_font *font,
+ char *str, int monospace);
+
+void ctk_gtksim_draw_string(struct ctk_gtksim_draw_font *font,
+ struct ctk_gtksim_draw_color *color,
+ int x, int y, char *str,
+ int monospace);
+
+void ctk_gtksim_draw_line(struct ctk_gtksim_draw_color *color,
+ int x1, int y1,
+ int x2, int y2);
+
+
+#endif /* __CTK_GTKSIM_DRAW_H__ */
diff --git a/contiki-gtk/ctk/ctk-gtksim-service.c b/contiki-gtk/ctk/ctk-gtksim-service.c
new file mode 100644
index 0000000..1aa6c8c
--- /dev/null
+++ b/contiki-gtk/ctk/ctk-gtksim-service.c
@@ -0,0 +1,849 @@
+
+#include "ctk-draw-service.h"
+
+#include "ctk-gtksim-draw.h"
+
+#include "ctk-gtksim.h"
+
+#include <string.h>
+
+
+#define WINDOWBORDER_WIDTH 1
+#define WINDOWBORDER_HEIGHT 1
+#define WINDOWTITLE_HEIGHT 3
+#define MENU_HEIGHT 1
+#define MENUBAR_HEIGHT 12
+
+#define FONT_BASELINE 12
+
+#define MENUBAR_FONT_BASELINE 7
+
+#define RASTER_X 8
+#define RASTER_Y 14
+
+#define BUTTON_HEIGHT 12
+#define BUTTON_X_BORDER 4
+#define BUTTON_Y_BORDER 1
+
+#define TEXTENTRY_HEIGHT 12
+#define TEXTENTRY_X_BORDER 4
+#define TEXTENTRY_Y_BORDER 1
+
+static GdkGC *white, *lightgray, *midgray, *darkgray, *ddarkgray, *black,
+ *blue;
+
+static GdkPixbuf *background, *windowborder, *menubar;
+
+static void
+draw_widget(struct ctk_widget *w,
+ unsigned char winx,
+ unsigned char winy,
+ unsigned char clipx,
+ unsigned char clipy,
+ unsigned char clipy1,
+ unsigned char clipy2,
+ unsigned char focus);
+
+/*--------------------------------------------------------------------------*/
+static void
+s_ctk_draw_init(void)
+{
+ GtkWidget *image;
+
+ image = gtk_image_new_from_file("background.png");
+ background = gtk_image_get_pixbuf(GTK_IMAGE(image));
+
+ image = gtk_image_new_from_file("windowborder.png");
+ windowborder = gtk_image_get_pixbuf(GTK_IMAGE(image));
+
+ image = gtk_image_new_from_file("menubar.png");
+ menubar = gtk_image_get_pixbuf(GTK_IMAGE(image));
+
+ ctk_gtksim_init();
+ ctk_gtksim_draw_init();
+
+
+ blue = get_color(0, 0, 0xffff);
+ white = get_color(0xffff, 0xffff, 0xffff);
+ lightgray = get_color(0xefff, 0xefff, 0xefff);
+ midgray = get_color(0xdfff, 0xdfff, 0xdfff);
+ darkgray = get_color(0xcfff, 0xcfff, 0xcfff);
+ ddarkgray = get_color(0xafff, 0xafff, 0xafff);
+ black = get_color(0, 0, 0);
+
+
+}
+/*--------------------------------------------------------------------------*/
+static void
+s_ctk_draw_clear(unsigned char y1, unsigned char y2)
+{
+ if(background == NULL) {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ darkgray,
+ TRUE,
+ 0,
+ y1 * RASTER_Y + MENUBAR_HEIGHT,
+ CTK_GTKSIM_SCREEN_WIDTH,
+ (y2 - y1) * RASTER_Y);
+ } else {
+ gdk_draw_pixbuf(ctk_gtksim_pixmap,
+ darkgray,
+ background,
+ 0,
+ y1 * RASTER_Y,
+ 0,
+ y1 * RASTER_Y + MENUBAR_HEIGHT,
+ CTK_GTKSIM_SCREEN_WIDTH,
+ (y2 - y1) * RASTER_Y,
+ GDK_RGB_DITHER_NONE, 0, 0);
+ }
+}
+/*--------------------------------------------------------------------------*/
+static void
+s_ctk_draw_clear_window(struct ctk_window *window,
+ unsigned char focus,
+ unsigned char clipy1,
+ unsigned char clipy2)
+{
+ int x, y;
+
+ x = window->x;
+ y = window->y + MENU_HEIGHT;
+
+ /* Clear window */
+ if(focus & CTK_FOCUS_WINDOW) {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ white,
+ TRUE,
+ x * RASTER_X - 1,
+ y * RASTER_Y - 1 + MENUBAR_HEIGHT,
+ (window->w + 2 * WINDOWBORDER_WIDTH) * RASTER_X + 2,
+ (window->h + WINDOWTITLE_HEIGHT +
+ WINDOWBORDER_HEIGHT) * RASTER_Y + 2);
+ } else {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ lightgray,
+ TRUE,
+ x * RASTER_X - 1,
+ y * RASTER_Y - 1 + MENUBAR_HEIGHT,
+ (window->w + 2 * WINDOWBORDER_WIDTH) * RASTER_X + 2,
+ (window->h + WINDOWTITLE_HEIGHT +
+ WINDOWBORDER_HEIGHT) * RASTER_Y + 2);
+ }
+}
+/*--------------------------------------------------------------------------*/
+static void
+s_ctk_draw_window(struct ctk_window *window,
+ unsigned char focus,
+ unsigned char clipy1,
+ unsigned char clipy2,
+ unsigned char draw_borders)
+{
+ struct ctk_widget *w;
+ unsigned char wfocus;
+ int x, y, x1, y1, x2, y2;
+
+ x = window->x;
+ y = window->y + MENU_HEIGHT;
+
+ x1 = x + WINDOWBORDER_WIDTH;
+ y1 = y + WINDOWTITLE_HEIGHT;
+ x2 = x1 + window->w;
+ y2 = y1 + window->h;
+
+ /* Draw window border */
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ darkgray,
+ FALSE,
+ x * RASTER_X,
+ y * RASTER_Y + MENUBAR_HEIGHT,
+ (window->w + 2 * WINDOWBORDER_WIDTH) * RASTER_X,
+ (window->h + WINDOWTITLE_HEIGHT +
+ WINDOWBORDER_HEIGHT) * RASTER_Y);
+
+ if(ctk_mode_get() == CTK_MODE_WINDOWMOVE) {
+ if(focus & CTK_FOCUS_WINDOW) {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ white,
+ TRUE,
+ x * RASTER_X + 1,
+ y * RASTER_Y + MENUBAR_HEIGHT + 1,
+ (window->w + 2 * WINDOWBORDER_WIDTH) * RASTER_X - 2,
+ (window->h + WINDOWTITLE_HEIGHT +
+ WINDOWBORDER_HEIGHT) * RASTER_Y - 2);
+ } else {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ midgray,
+ TRUE,
+ x * RASTER_X + 1,
+ y * RASTER_Y + MENUBAR_HEIGHT + 1,
+ (window->w + 2 * WINDOWBORDER_WIDTH) * RASTER_X - 2,
+ (window->h + WINDOWTITLE_HEIGHT +
+ WINDOWBORDER_HEIGHT) * RASTER_Y - 2);
+ }
+ return;
+ }
+
+ if(windowborder == NULL) {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ midgray,
+ TRUE,
+ x * RASTER_X,
+ y * RASTER_Y + MENUBAR_HEIGHT,
+ (window->w + 2 * WINDOWBORDER_WIDTH) * RASTER_X,
+ WINDOWTITLE_HEIGHT * RASTER_Y);
+ } else {
+ gdk_draw_pixbuf(ctk_gtksim_pixmap,
+ midgray,
+ windowborder,
+ 0, 0,
+ x * RASTER_X,
+ y * RASTER_Y + MENUBAR_HEIGHT,
+ (window->w + 2 * WINDOWBORDER_WIDTH) * RASTER_X,
+ WINDOWTITLE_HEIGHT * RASTER_Y,
+ GDK_RGB_DITHER_NONE, 0, 0);
+ }
+
+
+ gdk_draw_line(ctk_gtksim_pixmap,
+ darkgray,
+ x * RASTER_X,
+ (y + WINDOWTITLE_HEIGHT) * RASTER_Y - 1 + MENUBAR_HEIGHT,
+ (x + window->w + 2 * WINDOWBORDER_WIDTH) * RASTER_X,
+ (y + WINDOWTITLE_HEIGHT) * RASTER_Y - 1 + MENUBAR_HEIGHT);
+
+
+ /* Draw inactive widgets. */
+ for(w = window->inactive; w != NULL; w = w->next) {
+ draw_widget(w, x1, y1, x2, y2,
+ clipy1, clipy2,
+ focus);
+ }
+
+ /* Draw active widgets. */
+ for(w = window->active; w != NULL; w = w->next) {
+ wfocus = focus;
+ if(w == window->focused) {
+ wfocus |= CTK_FOCUS_WIDGET;
+ }
+
+ draw_widget(w, x1, y1, x2, y2,
+ clipy1, clipy2,
+ wfocus);
+ }
+
+ ctk_gtksim_set_redrawflag();
+}
+/*--------------------------------------------------------------------------*/
+static void
+s_ctk_draw_dialog(struct ctk_window *window)
+{
+ struct ctk_widget *w;
+ unsigned char wfocus, focus;
+ int x, y, x1, y1, x2, y2;
+
+ focus = CTK_FOCUS_DIALOG;
+
+ x = window->x;
+ y = window->y + MENU_HEIGHT;
+
+ x1 = x + WINDOWBORDER_WIDTH;
+ y1 = y + WINDOWTITLE_HEIGHT;
+ x2 = x1 + window->w;
+ y2 = y1 + window->h;
+
+ /* Draw window border */
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ black,
+ FALSE,
+ x * RASTER_X,
+ y * RASTER_Y + MENUBAR_HEIGHT,
+ (window->w + 2 * WINDOWBORDER_WIDTH) * RASTER_X,
+ (window->h + WINDOWTITLE_HEIGHT +
+ WINDOWBORDER_HEIGHT) * RASTER_Y);
+
+
+
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ white,
+ TRUE,
+ x * RASTER_X + 1,
+ y * RASTER_Y + 1 + MENUBAR_HEIGHT,
+ (window->w + 2 * WINDOWBORDER_WIDTH) * RASTER_X - 2,
+ (window->h + WINDOWTITLE_HEIGHT +
+ WINDOWBORDER_HEIGHT) * RASTER_Y - 2);
+
+ /* Draw inactive widgets. */
+ for(w = window->inactive; w != NULL; w = w->next) {
+ draw_widget(w, x1, y1, x2, y2,
+ y1, y2,
+ focus);
+ }
+
+ /* Draw active widgets. */
+ for(w = window->active; w != NULL; w = w->next) {
+ wfocus = focus;
+ if(w == window->focused) {
+ wfocus |= CTK_FOCUS_WIDGET;
+ }
+
+ draw_widget(w, x1, y1, x2, y2,
+ y1, y2,
+ wfocus);
+ }
+
+ ctk_gtksim_set_redrawflag();
+
+}
+/*--------------------------------------------------------------------------*/
+static void
+draw_widget(struct ctk_widget *w,
+ unsigned char winx, unsigned char winy,
+ unsigned char clipx,
+ unsigned char clipy,
+ unsigned char clipy1,
+ unsigned char clipy2,
+ unsigned char focus)
+{
+ unsigned char text[1000];
+ unsigned char x, y;
+ int width, xpos;
+ int i, j;
+ GdkGC *bgcol, *buttoncol, *color, *inv_color;
+ struct ctk_gtksim_draw_font *buttonfont, *textfont, *textfont_bold;
+ int monospace;
+ unsigned char *bitmap;
+
+ x = winx + w->x;
+ y = winy + w->y;
+
+ if(focus & CTK_FOCUS_WINDOW) {
+ bgcol = white;
+ } else {
+ bgcol = lightgray;
+ }
+
+ if(focus & CTK_FOCUS_WINDOW) {
+ buttoncol = lightgray;
+ } else {
+ buttoncol = midgray;
+ }
+
+ monospace = w->flags & CTK_WIDGET_FLAG_MONOSPACE;
+ if(monospace) {
+ textfont = &ctk_gtksim_draw_font_monospace;
+ textfont_bold = &ctk_gtksim_draw_font_monospace_bold;
+ } else {
+ textfont = &ctk_gtksim_draw_font_normal;
+ textfont_bold = &ctk_gtksim_draw_font_bold;
+ }
+
+ switch(w->type) {
+ case CTK_WIDGET_SEPARATOR:
+ gdk_draw_line(ctk_gtksim_pixmap,
+ darkgray,
+ x * RASTER_X,
+ y * RASTER_Y + RASTER_Y / 2 + MENUBAR_HEIGHT,
+ (x + w->w) * RASTER_X,
+ y * RASTER_Y + RASTER_Y / 2 + MENUBAR_HEIGHT);
+ break;
+ case CTK_WIDGET_LABEL:
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ bgcol,
+ TRUE,
+ x * RASTER_X,
+ y * RASTER_Y + MENUBAR_HEIGHT,
+ w->w * RASTER_X,
+ w->h * RASTER_Y);
+ for(i = 0; i < w->h; ++i) {
+ strncpy(text, &w->widget.label.text[i * w->w], w->w);
+ for(j = 0; j < w->w; ++j) {
+ if(text[j] >= 0x80) {
+ text[j] = text[j] & 0x7f;
+ }
+ if(text[j] == 0) {
+ text[j] = ' ';
+ }
+ }
+ text[w->w] = 0;
+ ctk_gtksim_draw_string(textfont,
+ &ctk_gtksim_draw_color_black,
+ RASTER_X * x,
+ RASTER_Y * (y + i) + MENUBAR_HEIGHT,
+ text, monospace);
+
+ strncpy(text, &w->widget.label.text[i * w->w], w->w);
+ for(j = 0; j < w->w; ++j) {
+ if(text[j] >= 0x80) {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ black,
+ FALSE,
+ (x + j) * RASTER_X - 2,
+ y * RASTER_Y + MENUBAR_HEIGHT,
+ RASTER_X + 2,
+ BUTTON_HEIGHT + 1);
+ }
+ }
+ }
+
+ break;
+ case CTK_WIDGET_BUTTON:
+ if(w == (struct ctk_widget *)&w->window->titlebutton) {
+ buttonfont = &ctk_gtksim_draw_font_bold;
+ } else {
+ buttonfont = textfont;
+ }
+
+ ++x;
+
+ width = ctk_gtksim_draw_string_width(buttonfont,
+ w->widget.button.text,
+ monospace);
+ if(focus == (CTK_FOCUS_WIDGET|CTK_FOCUS_WINDOW) ||
+ focus == (CTK_FOCUS_WIDGET|CTK_FOCUS_DIALOG)) {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ black,
+ FALSE,
+ x * RASTER_X - BUTTON_X_BORDER,
+ y * RASTER_Y - BUTTON_Y_BORDER + MENUBAR_HEIGHT,
+ w->w * RASTER_X + BUTTON_X_BORDER * 2,
+ BUTTON_HEIGHT + BUTTON_Y_BORDER);
+ /* gdk_draw_rectangle(ctk_gtksim_pixmap,
+ ctk_gtksim_drawing_area->style->black_gc,
+ FALSE,
+ x * RASTER_X - BUTTON_X_BORDER - 1,
+ y * RASTER_Y - BUTTON_Y_BORDER - 1,
+ w->w * RASTER_X + BUTTON_X_BORDER * 2 + 1,
+ RASTER_Y + BUTTON_Y_BORDER * 2 + 1);*/
+ } else {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ darkgray,
+ FALSE,
+ x * RASTER_X - BUTTON_X_BORDER,
+ y * RASTER_Y - BUTTON_Y_BORDER + MENUBAR_HEIGHT,
+ w->w * RASTER_X + BUTTON_X_BORDER * 2,
+ BUTTON_HEIGHT + BUTTON_Y_BORDER);
+ }
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ buttoncol,
+ TRUE,
+ x * RASTER_X - BUTTON_X_BORDER + 1,
+ y * RASTER_Y + MENUBAR_HEIGHT,
+ w->w * RASTER_X + BUTTON_X_BORDER * 2 - 2,
+ BUTTON_HEIGHT);
+
+ gdk_draw_line(ctk_gtksim_pixmap,
+ ddarkgray,
+ x * RASTER_X - BUTTON_X_BORDER + 1,
+ y * RASTER_Y + BUTTON_HEIGHT - 1 + MENUBAR_HEIGHT,
+ x * RASTER_X + w->w * RASTER_X + BUTTON_X_BORDER - 1,
+ y * RASTER_Y + BUTTON_HEIGHT - 1 + MENUBAR_HEIGHT);
+ gdk_draw_line(ctk_gtksim_pixmap,
+ ddarkgray,
+ x * RASTER_X + w->w * RASTER_X + BUTTON_X_BORDER - 1,
+ y * RASTER_Y + BUTTON_HEIGHT - 1 + MENUBAR_HEIGHT,
+ x * RASTER_X + w->w * RASTER_X + BUTTON_X_BORDER - 1,
+ y * RASTER_Y + MENUBAR_HEIGHT);
+
+ if(w != &w->window->closebutton) {
+ ctk_gtksim_draw_string(buttonfont,
+ &ctk_gtksim_draw_color_black,
+ RASTER_X * x +
+ (w->w * RASTER_X) / 2 - width / 2,
+ RASTER_Y * y + MENUBAR_HEIGHT,
+ w->widget.button.text,
+ monospace);
+ }
+ break;
+ case CTK_WIDGET_HYPERLINK:
+ strncpy(text, w->widget.hyperlink.text, w->w);
+ text[w->w] = 0;
+ width = ctk_gtksim_draw_string_width(textfont, text, monospace);
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ bgcol,
+ TRUE,
+ x * RASTER_X,
+ y * RASTER_Y + MENUBAR_HEIGHT,
+ width,
+ RASTER_Y);
+ if(focus & CTK_FOCUS_WIDGET) {
+ ctk_gtksim_draw_string(textfont_bold,
+ &ctk_gtksim_draw_color_blue,
+ RASTER_X * x,
+ RASTER_Y * y + MENUBAR_HEIGHT,
+ text, monospace);
+ } else {
+ ctk_gtksim_draw_string(textfont,
+ &ctk_gtksim_draw_color_blue,
+ RASTER_X * x,
+ RASTER_Y * y + MENUBAR_HEIGHT,
+ text, monospace);
+ }
+ gdk_draw_line(ctk_gtksim_pixmap,
+ blue,
+ x * RASTER_X,
+ y * RASTER_Y + FONT_BASELINE + 1 + MENUBAR_HEIGHT,
+ x * RASTER_X + width,
+ y * RASTER_Y + FONT_BASELINE + 1 + MENUBAR_HEIGHT);
+
+ break;
+ case CTK_WIDGET_TEXTENTRY:
+ strncpy(text, w->widget.textentry.text, sizeof(text));
+ text[w->widget.textentry.xpos] = 0;
+ width = ctk_gtksim_draw_string_width(textfont, text, monospace);
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ darkgray,
+ FALSE,
+ x * RASTER_X - TEXTENTRY_X_BORDER + RASTER_X,
+ y * RASTER_Y - TEXTENTRY_Y_BORDER + MENUBAR_HEIGHT,
+ w->w * RASTER_X + TEXTENTRY_X_BORDER * 2 - 1,
+ TEXTENTRY_HEIGHT + TEXTENTRY_Y_BORDER);
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ bgcol,
+ TRUE,
+ x * RASTER_X + RASTER_X,
+ y * RASTER_Y + MENUBAR_HEIGHT,
+ w->w * RASTER_X,
+ TEXTENTRY_HEIGHT);
+ ctk_gtksim_draw_string(textfont,
+ &ctk_gtksim_draw_color_black,
+ RASTER_X * x + RASTER_X,
+ RASTER_Y * y + MENUBAR_HEIGHT,
+ w->widget.textentry.text,
+ monospace);
+ if(focus == (CTK_FOCUS_WIDGET|CTK_FOCUS_WINDOW) ||
+ focus == (CTK_FOCUS_WIDGET|CTK_FOCUS_DIALOG)) {
+ gdk_draw_line(ctk_gtksim_pixmap,
+ black,
+ x * RASTER_X + width + RASTER_X,
+ y * RASTER_Y + MENUBAR_HEIGHT,
+ x * RASTER_X + width + RASTER_X,
+ y * RASTER_Y + TEXTENTRY_HEIGHT - 1 + MENUBAR_HEIGHT);
+ }
+ break;
+ case CTK_WIDGET_ICON:
+ width = ctk_gtksim_draw_string_width(&ctk_gtksim_draw_font_normal,
+ w->widget.icon.title, monospace);
+
+ if(x * RASTER_X + width >= CTK_GTKSIM_SCREEN_WIDTH - RASTER_X) {
+ xpos = CTK_GTKSIM_SCREEN_WIDTH - width - RASTER_X;
+ } else {
+ xpos = x * RASTER_X;
+ }
+
+ if((focus & CTK_FOCUS_WIDGET) == 0) {
+ color = black;
+ inv_color = bgcol;
+ } else {
+ color = bgcol;
+ inv_color = black;
+ }
+
+ bitmap = w->widget.icon.bitmap;
+ if (bitmap != NULL) {
+ int k, c;
+
+ for (c = 0; c < 9; ++c) {
+ for (i = 0; i < 8; ++i) {
+ unsigned char b = bitmap[i + c * 8];
+ for (k = 0; k < 8; k++) {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ (b >> k) & 1 > 0 ? color : inv_color,
+ TRUE,
+ x * RASTER_X + 8 * (c % 3) + (8 - k),
+ y * RASTER_Y + MENUBAR_HEIGHT +
+ 8 * (c / 3) + i,
+ 1, 1);
+ }
+ }
+ }
+ } else {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ color,
+ TRUE,
+ x * RASTER_X,
+ y * RASTER_Y + MENUBAR_HEIGHT,
+ 24, 24);
+ }
+
+ /* if((focus & CTK_FOCUS_WIDGET) == 0) {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ bgcol,
+ TRUE,
+ x * RASTER_X,
+ y * RASTER_Y + MENUBAR_HEIGHT,
+ 24, 24);
+ } else {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ black,
+ TRUE,
+ x * RASTER_X,
+ y * RASTER_Y + MENUBAR_HEIGHT,
+ 24, 24);
+ }*/
+
+ /* gdk_draw_rectangle(ctk_gtksim_pixmap,
+ white,
+ TRUE,
+ xpos,
+ RASTER_Y * y + 24 + 1 + MENUBAR_HEIGHT,
+ width,
+ RASTER_Y);*/
+
+ ctk_gtksim_draw_string(textfont,
+ &ctk_gtksim_draw_color_black,
+ xpos + 1,
+ RASTER_Y * y + 24 + 1 + MENUBAR_HEIGHT,
+ w->widget.icon.title,
+ monospace);
+ ctk_gtksim_draw_string(textfont,
+ &ctk_gtksim_draw_color_white,
+ xpos,
+ RASTER_Y * y + 24 + MENUBAR_HEIGHT,
+ w->widget.icon.title,
+ monospace);
+
+
+ break;
+ default:
+ break;
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+static void
+s_ctk_draw_widget(struct ctk_widget *w,
+ unsigned char focus,
+ unsigned char clipy1,
+ unsigned char clipy2)
+{
+ struct ctk_window *win = w->window;
+ unsigned char posx, posy;
+
+ posx = win->x + WINDOWBORDER_WIDTH;
+ posy = win->y + WINDOWTITLE_HEIGHT + MENU_HEIGHT;
+
+ if(w == win->focused) {
+ focus |= CTK_FOCUS_WIDGET;
+ }
+
+ draw_widget(w, posx, posy,
+ posx + win->w,
+ posy + win->h,
+ clipy1, clipy2,
+ focus);
+
+ ctk_gtksim_set_redrawflag();
+}
+/*--------------------------------------------------------------------------*/
+static void
+draw_menu(struct ctk_menu *m, int x, int open)
+{
+ int i;
+ int xpos;
+
+ if(x >= CTK_GTKSIM_SCREEN_WIDTH / RASTER_X - 16) {
+ xpos = CTK_GTKSIM_SCREEN_WIDTH / RASTER_X - 16;
+ } else {
+ xpos = x;
+ }
+
+ if(open) {
+
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ black,
+ TRUE,
+ RASTER_X * x, 0,
+ m->titlelen * RASTER_X,
+ RASTER_Y + MENUBAR_HEIGHT);
+
+ ctk_gtksim_draw_string(&ctk_gtksim_draw_font_menu,
+ &ctk_gtksim_draw_color_white,
+ RASTER_X * x + 2,
+ MENUBAR_FONT_BASELINE,
+ m->title, 0);
+
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ white,
+ TRUE,
+ xpos * RASTER_X,
+ RASTER_Y * MENU_HEIGHT + MENUBAR_HEIGHT,
+ (xpos + 16) * RASTER_X,
+ (m->nitems) * RASTER_Y);
+
+ for(i = 0; i < m->nitems; ++i) {
+ if(i == m->active) {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ black,
+ TRUE,
+ RASTER_X * xpos,
+ (MENU_HEIGHT + i) * RASTER_Y + MENUBAR_HEIGHT,
+ (xpos + 16) * RASTER_X,
+ RASTER_Y);
+ ctk_gtksim_draw_string(&ctk_gtksim_draw_font_normal,
+ &ctk_gtksim_draw_color_white,
+ RASTER_X * xpos + 2,
+ (MENU_HEIGHT + i) * RASTER_Y +
+ MENUBAR_HEIGHT,
+ m->items[i].title, 0);
+
+ } else {
+ ctk_gtksim_draw_string(&ctk_gtksim_draw_font_normal,
+ &ctk_gtksim_draw_color_black,
+ RASTER_X * xpos + 2,
+ (MENU_HEIGHT + i) * RASTER_Y + MENUBAR_HEIGHT,
+ m->items[i].title, 0);
+ }
+
+ }
+ } else {
+ /* gdk_draw_rectangle(ctk_gtksim_pixmap,
+ white,
+ TRUE,
+ RASTER_X * x, 0,
+ m->titlelen * RASTER_X, RASTER_Y);*/
+
+ ctk_gtksim_draw_string(&ctk_gtksim_draw_font_menu,
+ &ctk_gtksim_draw_color_black,
+ RASTER_X * x, MENUBAR_FONT_BASELINE,
+ m->title, 0);
+
+ }
+}
+/*--------------------------------------------------------------------------*/
+static void
+s_ctk_draw_menus(struct ctk_menus *menus)
+{
+ struct ctk_menu *m;
+ int x;
+
+ if(menubar != NULL) {
+ gdk_draw_pixbuf(ctk_gtksim_pixmap,
+ darkgray,
+ menubar,
+ 0, 0,
+ 0, 0,
+ CTK_GTKSIM_SCREEN_WIDTH,
+ RASTER_Y + MENUBAR_HEIGHT,
+ GDK_RGB_DITHER_NONE, 0, 0);
+ }
+
+ x = 1;
+ for(m = menus->menus->next; m != NULL; m = m->next) {
+ draw_menu(m, x, m == menus->open);
+ x += strlen(m->title);
+ }
+
+ x = CTK_GTKSIM_SCREEN_WIDTH / RASTER_X - strlen(menus->menus->title);
+ draw_menu(menus->menus, x, menus->menus == menus->open);
+
+
+
+ /* gdk_draw_line(ctk_gtksim_pixmap,
+ ctk_gtksim_drawing_area->style->black_gc,
+ 0, RASTER_Y,
+ CTK_GTKSIM_SCREEN_WIDTH,
+ RASTER_Y);*/
+
+ ctk_gtksim_set_redrawflag();
+}
+/*--------------------------------------------------------------------------*/
+static unsigned char
+s_ctk_draw_width(void)
+{
+ return CTK_GTKSIM_SCREEN_WIDTH / RASTER_X;
+}
+/*--------------------------------------------------------------------------*/
+static unsigned char
+s_ctk_draw_height(void)
+{
+ return CTK_GTKSIM_SCREEN_HEIGHT / RASTER_Y;
+}
+/*--------------------------------------------------------------------------*/
+static unsigned short
+s_ctk_mouse_xtoc(unsigned short x)
+{
+ return x / RASTER_X;
+}
+/*--------------------------------------------------------------------------*/
+static unsigned short
+s_ctk_mouse_ytoc(unsigned short y)
+{
+ if(y < MENUBAR_HEIGHT) {
+ return 0;
+ } else {
+ return (y - MENUBAR_HEIGHT) / RASTER_Y;
+ }
+}
+/*--------------------------------------------------------------------------*/
+static const struct ctk_draw_service_interface interface =
+ {CTK_DRAW_SERVICE_VERSION,
+ WINDOWBORDER_WIDTH,
+ WINDOWBORDER_HEIGHT,
+ WINDOWTITLE_HEIGHT,
+ s_ctk_draw_init,
+ s_ctk_draw_clear,
+ s_ctk_draw_clear_window,
+ s_ctk_draw_window,
+ s_ctk_draw_dialog,
+ s_ctk_draw_widget,
+ s_ctk_draw_menus,
+ s_ctk_draw_width,
+ s_ctk_draw_height,
+ s_ctk_mouse_xtoc,
+ s_ctk_mouse_ytoc,
+ };
+
+EK_POLLHANDLER(pollhandler);
+EK_EVENTHANDLER(eventhandler, ev, data);
+EK_PROCESS(proc, CTK_DRAW_SERVICE_NAME, EK_PRIO_NORMAL,
+ eventhandler, pollhandler, (void *)&interface);
+
+/*--------------------------------------------------------------------------*/
+EK_PROCESS_INIT(ctk_gtksim_service_init, arg)
+{
+ ek_service_start(CTK_DRAW_SERVICE_NAME, &proc);
+}
+/*--------------------------------------------------------------------------*/
+static GdkGC *
+get_color(unsigned short r, unsigned short g, unsigned short b)
+{
+ GdkGCValues values;
+ GdkColor color;
+
+ color.pixel = 0;
+ color.red = r;
+ color.green = g;
+ color.blue = b;
+
+ if(gdk_colormap_alloc_color(gdk_colormap_get_system(),
+ &color, FALSE, TRUE)) {
+ }
+
+ values.foreground = color;
+
+ return gdk_gc_new_with_values(ctk_gtksim_drawing_area->window,
+ &values,
+ GDK_GC_FOREGROUND);
+}
+/*--------------------------------------------------------------------------*/
+EK_EVENTHANDLER(eventhandler, ev, data)
+{
+ EK_EVENTHANDLER_ARGS(ev, data);
+
+ switch(ev) {
+ case EK_EVENT_INIT:
+ case EK_EVENT_REPLACE:
+ break;
+ case EK_EVENT_REQUEST_REPLACE:
+ ek_replace((struct ek_proc *)data, NULL);
+ LOADER_UNLOAD();
+ break;
+ }
+}
+/*--------------------------------------------------------------------------*/
+EK_POLLHANDLER(pollhandler)
+{
+ ctk_gtksim_redraw();
+}
+/*--------------------------------------------------------------------------*/
diff --git a/contiki-gtk/ctk/ctk-gtksim.c b/contiki-gtk/ctk/ctk-gtksim.c
new file mode 100644
index 0000000..28d897f
--- /dev/null
+++ b/contiki-gtk/ctk/ctk-gtksim.c
@@ -0,0 +1,371 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the "ctk" console GUI toolkit for cc65
+ *
+ * $Id: ctk-gtksim.c,v 1.5 2004/08/11 21:21:26 adamdunkels Exp $
+ *
+ */
+
+/* This file provides a very simple implementation of CTK using the
+ GTK (Gimp toolkit) under FreeBSD/Linux. */
+
+
+#include "libconio.h"
+
+#include "ctk.h"
+#include "ctk-draw.h"
+#include "ctk-mouse.h"
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define FONT_HEIGHT 14
+#define FONT_WIDTH 8
+#define FONT_HEIGHT_BASELINE 11
+
+GdkPixmap *ctk_gtksim_pixmap = NULL;
+GtkWidget *ctk_gtksim_drawing_area;
+static GdkFont *font;
+
+static int mouse_x, mouse_y, mouse_button;
+
+static int redrawflag;
+
+void
+ctk_gtksim_redraw(void)
+{
+ if(redrawflag) {
+ gdk_draw_pixmap(ctk_gtksim_drawing_area->window,
+ ctk_gtksim_drawing_area->style->fg_gc[GTK_WIDGET_STATE (ctk_gtksim_drawing_area)],
+ ctk_gtksim_pixmap,
+ 0,0,0,0,
+ CTK_GTKSIM_SCREEN_WIDTH, CTK_GTKSIM_SCREEN_HEIGHT);
+ redrawflag = 0;
+ }
+
+}
+/*-----------------------------------------------------------------------------------*/
+void
+ctk_gtksim_set_redrawflag(void)
+{
+ redrawflag = 1;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+ctk_arch_draw_char(char c,
+ unsigned char x, unsigned char y,
+ unsigned char reversed,
+ unsigned char color)
+{
+ char str[2];
+
+ str[0] = c;
+ str[1] = 0;
+
+ if(reversed) {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ ctk_gtksim_drawing_area->style->black_gc,
+ TRUE,
+ x * FONT_WIDTH,
+ y * FONT_HEIGHT,
+ FONT_WIDTH, FONT_HEIGHT);
+
+ gdk_draw_string(ctk_gtksim_pixmap,
+ font,
+ ctk_gtksim_drawing_area->style->white_gc,
+ x * FONT_WIDTH, FONT_HEIGHT_BASELINE + y * FONT_HEIGHT,
+ str);
+ } else {
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ ctk_gtksim_drawing_area->style->white_gc,
+ TRUE,
+ x * FONT_WIDTH,
+ y * FONT_HEIGHT,
+ FONT_WIDTH, FONT_HEIGHT);
+
+ gdk_draw_string(ctk_gtksim_pixmap,
+ font,
+ ctk_gtksim_drawing_area->style->black_gc,
+ x * FONT_WIDTH, FONT_HEIGHT_BASELINE + y * FONT_HEIGHT,
+ str);
+ }
+
+ gdk_draw_pixmap(ctk_gtksim_drawing_area->window,
+ ctk_gtksim_drawing_area->style->fg_gc[GTK_WIDGET_STATE (ctk_gtksim_drawing_area)],
+ ctk_gtksim_pixmap,
+ x * FONT_WIDTH,
+ y * FONT_HEIGHT,
+ x * FONT_WIDTH,
+ y * FONT_HEIGHT,
+ FONT_WIDTH, FONT_HEIGHT);
+
+}
+/*-----------------------------------------------------------------------------------*/
+#define NUMKEYS 100
+static ctk_arch_key_t keys[NUMKEYS];
+static int firstkey, lastkey;
+
+unsigned char
+ctk_arch_keyavail(void)
+{
+ return firstkey != lastkey;
+}
+/*-----------------------------------------------------------------------------------*/
+ctk_arch_key_t
+ctk_arch_getkey(void)
+{
+ ctk_arch_key_t key;
+ key = keys[firstkey];
+
+ if(firstkey != lastkey) {
+ ++firstkey;
+ if(firstkey >= NUMKEYS) {
+ firstkey = 0;
+ }
+ }
+
+ return key;
+}
+/*-----------------------------------------------------------------------------------*/
+static gint
+configure_event(GtkWidget *widget, GdkEventConfigure *event)
+{
+ if(ctk_gtksim_pixmap != NULL) {
+ gdk_pixmap_unref(ctk_gtksim_pixmap);
+ }
+
+ ctk_gtksim_pixmap = gdk_pixmap_new(widget->window,
+ widget->allocation.width,
+ widget->allocation.height,
+ -1);
+
+ if(ctk_gtksim_pixmap == NULL) {
+ printf("gdk_pixmap_new == NULL\n");
+ exit(1);
+ }
+ gdk_draw_rectangle(ctk_gtksim_pixmap,
+ widget->style->white_gc,
+ TRUE,
+ 0, 0,
+ widget->allocation.width,
+ widget->allocation.height);
+
+ return TRUE;
+}
+
+/* Redraw the screen from the backing pixmap */
+static gint
+expose_event (GtkWidget * widget, GdkEventExpose * event)
+{
+ /* draw_screen();*/
+ gdk_draw_pixmap(widget->window,
+ widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
+ ctk_gtksim_pixmap,
+ event->area.x, event->area.y,
+ event->area.x, event->area.y,
+ event->area.width, event->area.height);
+ return FALSE;
+}
+
+static gint
+key_press_event (GtkWidget * widget, GdkEventKey * event)
+{
+ if(event->keyval == GDK_Shift_L ||
+ event->keyval == GDK_Shift_R) {
+ return TRUE;
+ }
+ keys[lastkey] = event->keyval;
+ ++lastkey;
+ if(lastkey >= NUMKEYS) {
+ lastkey = 0;
+ }
+
+ return TRUE;
+}
+
+static gint
+key_release_event (GtkWidget * widget, GdkEventKey * event)
+{
+ return TRUE;
+}
+
+static gint
+motion_notify_event (GtkWidget * widget, GdkEventMotion * event)
+{
+ int x, y;
+ GdkModifierType state;
+
+ if (event->is_hint) {
+ gdk_window_get_pointer (event->window, &x, &y, &state);
+ } else {
+ x = event->x;
+ y = event->y;
+ }
+
+ mouse_x = x;
+ mouse_y = y;
+ return TRUE;
+}
+
+static gint
+button_press_event (GtkWidget * widget, GdkEventButton * event)
+{
+ mouse_button = event->button;
+ return TRUE;
+}
+
+static gint
+button_release_event (GtkWidget * widget, GdkEventButton * event)
+{
+ mouse_button = 0;
+ return TRUE;
+}
+
+static void
+quit(void)
+{
+ gtk_exit(0);
+}
+/*-----------------------------------------------------------------------------------*/
+void
+ctk_gtksim_init(void)
+{
+ GtkWidget *window;
+#if 0
+ GtkWidget *vbox;
+#endif
+
+ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title(window, "Contiki GTKsim");
+
+#if 0
+ vbox = gtk_vbox_new(FALSE, 0);
+ gtk_container_add(GTK_CONTAINER (window), vbox);
+ gtk_widget_show(vbox);
+#endif
+ gtk_signal_connect(GTK_OBJECT (window), "destroy",
+ GTK_SIGNAL_FUNC (quit), NULL);
+
+ /* Create the drawing area */
+
+ ctk_gtksim_drawing_area = gtk_drawing_area_new();
+ gtk_drawing_area_size(GTK_DRAWING_AREA (ctk_gtksim_drawing_area),
+ CTK_GTKSIM_SCREEN_WIDTH,
+ CTK_GTKSIM_SCREEN_HEIGHT);
+#if 0
+ gtk_box_pack_start(GTK_BOX(vbox), ctk_gtksim_drawing_area, TRUE, TRUE, 0);
+#else
+ gtk_container_add(GTK_CONTAINER(window), ctk_gtksim_drawing_area);
+#endif
+
+ gtk_widget_show(ctk_gtksim_drawing_area);
+
+ /* Load a fixed width font. */
+ /* font = gdk_font_load("-*-gamow-medium-r-*-*-*-90-*-*-*-*-*-*");*/
+ /* font = gdk_font_load("-*-courier-*-r-normal-*-14-*-*-*-m-*-iso8859-1");*/
+ font = gdk_font_load("-*-courier-medium-r-*-*-12-*-*-*-*-*-iso8859-1");
+ if(font != NULL) {
+ printf("Font loaded OK\n");
+ } else {
+ printf("Font loading failed\n");
+ exit(1);
+ }
+
+
+ /* Signals used to handle backing pixmap */
+
+ gtk_signal_connect(GTK_OBJECT (ctk_gtksim_drawing_area), "expose_event",
+ (GtkSignalFunc) expose_event, NULL);
+ gtk_signal_connect(GTK_OBJECT (ctk_gtksim_drawing_area), "configure_event",
+ (GtkSignalFunc) configure_event, NULL);
+
+ /* Event signals */
+
+ gtk_signal_connect(GTK_OBJECT (window), "key_press_event",
+ (GtkSignalFunc) key_press_event, NULL);
+ gtk_signal_connect(GTK_OBJECT (window), "key_release_event",
+ (GtkSignalFunc) key_release_event, NULL);
+
+ gtk_signal_connect(GTK_OBJECT (ctk_gtksim_drawing_area), "motion_notify_event",
+ (GtkSignalFunc) motion_notify_event, NULL);
+
+ gtk_signal_connect(GTK_OBJECT (ctk_gtksim_drawing_area), "button_press_event",
+ (GtkSignalFunc) button_press_event, NULL);
+
+ gtk_signal_connect(GTK_OBJECT (ctk_gtksim_drawing_area), "button_release_event",
+ (GtkSignalFunc) button_release_event, NULL);
+
+ gtk_widget_set_events(ctk_gtksim_drawing_area, gtk_widget_get_events (ctk_gtksim_drawing_area)
+ | GDK_KEY_PRESS_MASK
+ | GDK_KEY_RELEASE_MASK
+ | GDK_POINTER_MOTION_MASK
+ | GDK_POINTER_MOTION_HINT_MASK
+ | GDK_BUTTON_PRESS_MASK
+ | GDK_BUTTON_RELEASE_MASK);
+
+ gtk_widget_show(window);
+
+}
+/*-----------------------------------------------------------------------------------*/
+void
+ctk_mouse_init(void)
+{
+
+}
+/*-----------------------------------------------------------------------------------*/
+unsigned short
+ctk_mouse_x(void)
+{
+ return mouse_x;
+}
+/*-----------------------------------------------------------------------------------*/
+unsigned short
+ctk_mouse_y(void)
+{
+ return mouse_y;
+}
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+ctk_mouse_button(void)
+{
+ return mouse_button;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+ctk_mouse_hide(void)
+{
+}
+/*-----------------------------------------------------------------------------------*/
+void
+ctk_mouse_show(void)
+{
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-gtk/ctk/ctk-gtksim.h b/contiki-gtk/ctk/ctk-gtksim.h
new file mode 100644
index 0000000..03cd11f
--- /dev/null
+++ b/contiki-gtk/ctk/ctk-gtksim.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2002, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the "ctk" console GUI toolkit for cc65
+ *
+ * $Id: ctk-gtksim.h,v 1.5 2004/08/11 21:21:26 adamdunkels Exp $
+ *
+ */
+
+#ifndef __CTK_GTKSIM_H__
+#define __CTK_GTKSIM_H__
+
+#include <gdk/gdkkeysyms.h>
+#include <gdk/gdktypes.h>
+#include <gtk/gtk.h>
+
+typedef guint ctk_arch_key_t;
+
+unsigned char ctk_arch_keyavail(void);
+guint ctk_arch_getkey(void);
+
+#define CH_CURS_RIGHT GDK_Right
+#define CH_CURS_DOWN GDK_Down
+#define CH_CURS_LEFT GDK_Left
+#define CH_CURS_UP GDK_Up
+#define CH_ENTER GDK_Return
+#define CH_TAB GDK_Tab
+#define CH_F1 GDK_F1
+#define CH_F2 GDK_F2
+#define CH_F3 GDK_F3
+#define CH_F4 GDK_F4
+#define CH_F5 GDK_F5
+#define CH_DEL GDK_BackSpace
+#define CH_ESC GDK_Escape
+
+void ctk_gtksim_init(void);
+
+void ctk_gtksim_redraw(void);
+
+extern GdkPixmap *ctk_gtksim_pixmap;
+extern GtkWidget *ctk_gtksim_drawing_area;
+
+#define CTK_GTKSIM_SCREEN_WIDTH 640 /*1024*/
+#define CTK_GTKSIM_SCREEN_HEIGHT 400 /*768*/
+
+#endif /* __CTK_GTKSIM_H__ */
diff --git a/contiki-gtk/lib/lc.h b/contiki-gtk/lib/lc.h
new file mode 100644
index 0000000..8415c65
--- /dev/null
+++ b/contiki-gtk/lib/lc.h
@@ -0,0 +1,26 @@
+#ifndef __LC_H__
+#define __LC_H__
+
+typedef void * lc_t;
+
+#define LC_CONCAT2(s1, s2) s1##s2
+#define LC_CONCAT(s1, s2) LC_CONCAT2(s1, s2)
+
+#define LC_SET(s) \
+ do { \
+ LC_CONCAT(LC_LABEL, __LINE__): \
+ (s) = &&LC_CONCAT(LC_LABEL, __LINE__); \
+ } while(0)
+
+#define LC_RESUME(s) \
+ do { \
+ if(s != NULL) { \
+ goto *s; \
+ } \
+ } while(0)
+
+#define LC_END(s)
+
+#define LC_INIT(s) s = NULL
+
+#endif /* __LC_H__ */
diff --git a/contiki-gtk/lib/mtarch.c b/contiki-gtk/lib/mtarch.c
new file mode 100644
index 0000000..60f6264
--- /dev/null
+++ b/contiki-gtk/lib/mtarch.c
@@ -0,0 +1,101 @@
+
+#include <stdio.h>
+#include "mt.h"
+
+struct frame {
+ unsigned long flags;
+ unsigned long ebp;
+ unsigned long edi;
+ unsigned long esi;
+ unsigned long edx;
+ unsigned long ecx;
+ unsigned long ebx;
+ unsigned long eax;
+ unsigned long retaddr;
+ unsigned long retaddr2;
+ unsigned long data;
+};
+
+/*--------------------------------------------------------------------------*/
+void
+mtarch_init(void)
+{
+
+}
+/*--------------------------------------------------------------------------*/
+void
+mtarch_start(struct mtarch_thread *t,
+ void (*function)(void *), void *data)
+{
+ struct frame *f = (struct frame *)&t->stack[MTARCH_STACKSIZE - sizeof(struct frame)/4];
+ memset(f, 0, sizeof(struct frame));
+ f->retaddr = (unsigned long)function;
+ f->data = (unsigned long)data;
+ t->sp = (unsigned long)&f->flags;
+ f->ebp = (unsigned long)&f->eax;
+}
+/*--------------------------------------------------------------------------*/
+static unsigned long spsave, sptmp;
+static struct mtarch_thread *running_thread;
+
+static void
+sw(void)
+{
+
+ asm("pushl %eax");
+ asm("pushl %ebx");
+ asm("pushl %ecx");
+ asm("pushl %edx");
+ asm("pushl %esi");
+ asm("pushl %edi");
+ asm("pushl %ebp");
+ asm("pushl %ebp"); /* XXX: should push FPU flags here. */
+ asm("movl %esp, spsave");
+
+ sptmp = running_thread->sp;
+ running_thread->sp = spsave;
+
+ asm("movl sptmp, %esp");
+ asm("popl %ebp"); /* XXX: should pop FPU flags here. */
+ asm("popl %ebp");
+ asm("popl %edi");
+ asm("popl %esi");
+ asm("popl %edx");
+ asm("popl %ecx");
+ asm("popl %ebx");
+ asm("popl %eax");
+}
+
+/*--------------------------------------------------------------------------*/
+void
+mtarch_exec(struct mtarch_thread *t)
+{
+ running_thread = t;
+ sw();
+ running_thread = NULL;
+}
+/*--------------------------------------------------------------------------*/
+void
+mtarch_remove(void)
+{
+
+}
+/*--------------------------------------------------------------------------*/
+void
+mtarch_yield(void)
+{
+ sw();
+}
+/*--------------------------------------------------------------------------*/
+void
+mtarch_pstop(void)
+{
+
+}
+/*--------------------------------------------------------------------------*/
+void
+mtarch_pstart(void)
+{
+
+}
+/*--------------------------------------------------------------------------*/
diff --git a/contiki-gtk/lib/mtarch.h b/contiki-gtk/lib/mtarch.h
new file mode 100644
index 0000000..3a1fefa
--- /dev/null
+++ b/contiki-gtk/lib/mtarch.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * 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.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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 __MTARCH_H__
+#define __MTARCH_H__
+
+#define MTARCH_STACKSIZE 1024
+
+struct mtarch_thread {
+ /* Note: stack must be aligned on 4-byte boundary. */
+ unsigned long stack[MTARCH_STACKSIZE];
+ unsigned long sp;
+};
+
+#endif /* __MTARCH_H__ */
+
diff --git a/contiki-gtk/menubar.png b/contiki-gtk/menubar.png
new file mode 100644
index 0000000..dfc02e3
--- /dev/null
+++ b/contiki-gtk/menubar.png
Binary files differ
diff --git a/contiki-gtk/uip/tapdev-service.c b/contiki-gtk/uip/tapdev-service.c
new file mode 100644
index 0000000..6e378e5
--- /dev/null
+++ b/contiki-gtk/uip/tapdev-service.c
@@ -0,0 +1,54 @@
+
+#include "packet-service.h"
+#include "tapdev.h"
+
+static void output(u8_t *hdr, u16_t hdrlen, u8_t *data, u16_t datalen);
+
+static const struct packet_service_state state =
+ {
+ PACKET_SERVICE_VERSION,
+ output
+ };
+
+EK_EVENTHANDLER(eventhandler, ev, data);
+EK_POLLHANDLER(pollhandler);
+EK_PROCESS(proc, PACKET_SERVICE_NAME ": TAP", EK_PRIO_NORMAL,
+ eventhandler, pollhandler, (void *)&state);
+
+/*---------------------------------------------------------------------------*/
+EK_PROCESS_INIT(tapdev_service_init, arg)
+{
+ ek_service_start(PACKET_SERVICE_NAME, &proc);
+}
+/*---------------------------------------------------------------------------*/
+static void
+output(u8_t *hdr, u16_t hdrlen, u8_t *data, u16_t datalen)
+{
+ tapdev_send();
+}
+/*---------------------------------------------------------------------------*/
+EK_EVENTHANDLER(eventhandler, ev, data)
+{
+ printf("packet-service: event %d\n", ev);
+ switch(ev) {
+ case EK_EVENT_INIT:
+ case EK_EVENT_REPLACE:
+ tapdev_init();
+ break;
+ case EK_EVENT_REQUEST_REPLACE:
+ ek_replace((struct ek_proc *)data, NULL);
+ LOADER_UNLOAD();
+ break;
+ case EK_EVENT_REQUEST_EXIT:
+ ek_exit();
+ LOADER_UNLOAD();
+ break;
+ default:
+ break;
+ }
+}
+/*---------------------------------------------------------------------------*/
+EK_POLLHANDLER(pollhandler)
+{
+}
+/*---------------------------------------------------------------------------*/
diff --git a/contiki-gtk/uip/tapdev.c b/contiki-gtk/uip/tapdev.c
new file mode 100644
index 0000000..e8708df
--- /dev/null
+++ b/contiki-gtk/uip/tapdev.c
@@ -0,0 +1,288 @@
+/*
+ * Copyright (c) 2001, Swedish Institute of Computer Science.
+ * 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.
+ *
+ * 3. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``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 INSTITUTE OR CONTRIBUTORS 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.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: tapdev.c,v 1.5 2005/02/23 22:44:50 oliverschmidt Exp $
+ */
+
+
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/uio.h>
+#include <sys/socket.h>
+
+#include <gtk/gtk.h>
+
+#ifdef linux
+#include <sys/ioctl.h>
+#include <linux/if.h>
+#include <linux/if_tun.h>
+#define DEVTAP "/dev/net/tun"
+#else /* linux */
+#define DEVTAP "/dev/tap0"
+#endif /* linux */
+
+#include "uip.h"
+#include "uip_arp.h"
+
+
+#include "tcpip.h"
+
+#define DROP 0
+
+static int drop = 0;
+static int fd;
+
+static unsigned long lasttime;
+static struct timezone tz;
+
+#define BUF ((struct uip_eth_hdr *)&uip_buf[0])
+
+static void do_send(void);
+void tapdev_send(void);
+
+
+static void
+read_callback(gpointer data, gint source, GdkInputCondition condition)
+{
+ int ret;
+
+ ret = read(fd, uip_buf, UIP_BUFSIZE);
+
+ if(ret == -1) {
+ perror("tap_dev: tapdev_read: read");
+ }
+
+ uip_len = ret;
+
+ if(BUF->type == htons(UIP_ETHTYPE_IP)) {
+ uip_arp_ipin();
+ uip_len -= sizeof(struct uip_eth_hdr);
+ /* uip_input();*/
+ tcpip_input();
+ /* If the above function invocation resulted in data that
+ should be sent out on the network, the global variable
+ uip_len is set to a value > 0. */
+ } else if(BUF->type == htons(UIP_ETHTYPE_ARP)) {
+ uip_arp_arpin();
+ /* If the above function invocation resulted in data that
+ should be sent out on the network, the global variable
+ uip_len is set to a value > 0. */
+ if(uip_len > 0) {
+ do_send();
+ }
+ }
+
+
+}
+gint
+timeout_callback(gpointer data)
+{
+ static u8_t i, arptimer;
+
+ for(i = 0; i < UIP_CONNS; i++) {
+ uip_periodic(i);
+ /* If the above function invocation resulted in data that
+ should be sent out on the network, the global variable
+ uip_len is set to a value > 0. */
+ if(uip_len > 0) {
+ tcpip_output();
+ /* uip_split_output();*/
+ /* tapdev_send();*/
+ }
+ }
+
+ for(i = 0; i < UIP_UDP_CONNS; i++) {
+ uip_udp_periodic(i);
+ /* If the above function invocation resulted in data that
+ should be sent out on the network, the global variable
+ uip_len is set to a value > 0. */
+ if(uip_len > 0) {
+ /* uip_split_output(); */
+ /* tapdev_send();*/
+ tcpip_output();
+ }
+ }
+
+ /* Call the ARP timer function every 10 seconds. */
+ if(++arptimer == 20) {
+ uip_arp_timer();
+ arptimer = 0;
+ }
+
+ return TRUE;
+}
+
+/*-----------------------------------------------------------------------------------*/
+void
+tapdev_init(void)
+{
+ char buf[1024];
+
+ fd = open(DEVTAP, O_RDWR);
+ if(fd == -1) {
+ perror("tapdev: tapdev_init: open");
+ return;
+ }
+
+#ifdef linux
+ {
+ struct ifreq ifr;
+ memset(&ifr, 0, sizeof(ifr));
+ ifr.ifr_flags = IFF_TAP|IFF_NO_PI;
+ if (ioctl(fd, TUNSETIFF, (void *) &ifr) < 0) {
+ perror(buf);
+ exit(1);
+ }
+ }
+#endif /* Linux */
+
+ snprintf(buf, sizeof(buf), "ifconfig tap0 inet 192.168.2.1");
+ system(buf);
+ printf("%s\n", buf);
+
+ lasttime = 0;
+
+ gdk_input_add(fd, GDK_INPUT_READ,
+ read_callback, NULL);
+
+ gtk_timeout_add(500, timeout_callback, NULL);
+}
+/*-----------------------------------------------------------------------------------*/
+unsigned int
+tapdev_read(void)
+{
+ fd_set fdset;
+ struct timeval tv, now;
+ int ret;
+
+ if(lasttime >= 500000) {
+ lasttime = 0;
+ return 0;
+ }
+
+ tv.tv_sec = 0;
+ tv.tv_usec = 500000 - lasttime;
+
+
+ FD_ZERO(&fdset);
+ if(fd > 0) {
+ FD_SET(fd, &fdset);
+ }
+
+ gettimeofday(&now, &tz);
+ ret = select(fd + 1, &fdset, NULL, NULL, &tv);
+ if(ret == 0) {
+ lasttime = 0;
+ return 0;
+ }
+ ret = read(fd, uip_buf, UIP_BUFSIZE);
+ if(ret == -1) {
+ perror("tap_dev: tapdev_read: read");
+ }
+ gettimeofday(&tv, &tz);
+ lasttime += (tv.tv_sec - now.tv_sec) * 1000000 + (tv.tv_usec - now.tv_usec);
+
+#if DROP
+ drop++;
+ if(drop % 8 == 7) {
+ printf("Dropped an input packet!\n");
+ return 0;
+ }
+#endif /* DROP */
+
+ /* printf("--- tap_dev: tapdev_read: read %d bytes\n", ret);*/
+ /* {
+ int i;
+ for(i = 0; i < 20; i++) {
+ printf("%x ", uip_buf[i]);
+ }
+ printf("\n");
+ }*/
+ /* check_checksum(uip_buf, ret);*/
+ return ret;
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+do_send(void)
+{
+ int ret;
+ char tmpbuf[UIP_BUFSIZE];
+ int i;
+
+ if(fd <= 0) {
+ return;
+ }
+
+ /* printf("tapdev_send: sending %d bytes\n", size);*/
+ /* check_checksum(uip_buf, size);*/
+#if DROP
+ drop++;
+ if(drop % 8 == 7) {
+ printf("Dropped an output packet!\n");
+ return;
+ }
+#endif /* DROP */
+
+ for(i = 0; i < UIP_TCPIP_HLEN + UIP_LLH_LEN; i++) {
+ tmpbuf[i] = uip_buf[i];
+ }
+
+
+ for(; i < uip_len; i++) {
+ tmpbuf[i] = uip_appdata[i - UIP_TCPIP_HLEN - UIP_LLH_LEN];
+ }
+
+ ret = write(fd, tmpbuf, uip_len);
+
+ if(ret == -1) {
+ perror("tap_dev: tapdev_send: writev");
+ exit(1);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+tapdev_send(void)
+{
+
+ uip_arp_out();
+
+ do_send();
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-gtk/uip/tapdev.h b/contiki-gtk/uip/tapdev.h
new file mode 100644
index 0000000..2401da9
--- /dev/null
+++ b/contiki-gtk/uip/tapdev.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2003, Adam Dunkels.
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: tapdev.h,v 1.1 2003/05/28 05:22:40 adamdunkels Exp $
+ *
+ */
+#ifndef __TAPDEV_H__
+#define __TAPDEV_H__
+
+void tapdev_init(void);
+
+#endif /* __TAPDEV_H__ */
diff --git a/contiki-gtk/uip/uip_arch.c b/contiki-gtk/uip/uip_arch.c
new file mode 100644
index 0000000..645c039
--- /dev/null
+++ b/contiki-gtk/uip/uip_arch.c
@@ -0,0 +1,152 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: uip_arch.c,v 1.3 2005/02/24 22:06:56 oliverschmidt Exp $
+ *
+ */
+
+
+#include "uip.h"
+#include "uip_arch.h"
+
+#define BUF ((uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
+#define IP_PROTO_TCP 6
+
+/*-----------------------------------------------------------------------------------*/
+void
+uip_add32(u8_t *op32, u16_t op16)
+{
+
+ uip_acc32[3] = op32[3] + (op16 & 0xff);
+ uip_acc32[2] = op32[2] + (op16 >> 8);
+ uip_acc32[1] = op32[1];
+ uip_acc32[0] = op32[0];
+
+ if(uip_acc32[2] < (op16 >> 8)) {
+ ++uip_acc32[1];
+ if(uip_acc32[1] == 0) {
+ ++uip_acc32[0];
+ }
+ }
+
+
+ if(uip_acc32[3] < (op16 & 0xff)) {
+ ++uip_acc32[2];
+ if(uip_acc32[2] == 0) {
+ ++uip_acc32[1];
+ if(uip_acc32[1] == 0) {
+ ++uip_acc32[0];
+ }
+ }
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+u16_t
+uip_chksum(u16_t *sdata, u16_t len)
+{
+ u8_t *dataptr;
+ static u16_t acc, tmp;
+
+ dataptr = sdata;
+ for(acc = 0; len > 1; len -= 2) {
+ tmp = HTONS((((u16_t)*dataptr) << 8)) + HTONS((u16_t)*(dataptr + 1));
+ acc += tmp;
+ if(acc < tmp) {
+ ++acc;
+ }
+ dataptr += 2;
+ }
+
+ /* add up any odd byte */
+ if(len == 1) {
+ tmp = HTONS(((u16_t)(*dataptr)) << 8);
+ acc += tmp;
+ if(acc < tmp) {
+ ++acc;
+ }
+ }
+
+ return acc;
+}
+/*-----------------------------------------------------------------------------------*/
+u16_t
+uip_ipchksum(void)
+{
+ return uip_chksum((u16_t *)&uip_buf[UIP_LLH_LEN], UIP_IPH_LEN);
+}
+/*-----------------------------------------------------------------------------------*/
+u16_t
+uip_tcpchksum(void)
+{
+ u16_t hsum, sum;
+
+
+ /* Compute the checksum of the TCP header. */
+ hsum = uip_chksum((u16_t *)&uip_buf[UIP_LLH_LEN + UIP_IPH_LEN], UIP_TCPH_LEN);
+
+ /* Compute the checksum of the data in the TCP packet and add it to
+ the TCP header checksum. */
+ sum = uip_chksum((u16_t *)uip_appdata,
+ (u16_t)(((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) -
+ UIP_IPTCPH_LEN)));
+
+
+ if((sum += hsum) < hsum) {
+ ++sum;
+ }
+
+ if((sum += BUF->srcipaddr[0]) < BUF->srcipaddr[0]) {
+ ++sum;
+ }
+ if((sum += BUF->srcipaddr[1]) < BUF->srcipaddr[1]) {
+ ++sum;
+ }
+ if((sum += BUF->destipaddr[0]) < BUF->destipaddr[0]) {
+ ++sum;
+ }
+ if((sum += BUF->destipaddr[1]) < BUF->destipaddr[1]) {
+ ++sum;
+ }
+ if((sum += (u16_t)HTONS((u16_t)IP_PROTO_TCP)) < (u16_t)HTONS((u16_t)IP_PROTO_TCP)) {
+ ++sum;
+ }
+
+ hsum = (u16_t)HTONS((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - UIP_IPH_LEN);
+
+ if((sum += hsum) < hsum) {
+ ++sum;
+ }
+
+ return sum;
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-gtk/uip/uip_arch.h b/contiki-gtk/uip/uip_arch.h
new file mode 100644
index 0000000..cc33b24
--- /dev/null
+++ b/contiki-gtk/uip/uip_arch.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2001, Adam Dunkels.
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Adam Dunkels.
+ * 4. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * 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.
+ *
+ * This file is part of the uIP TCP/IP stack.
+ *
+ * $Id: uip_arch.h,v 1.2 2004/06/06 07:07:25 adamdunkels Exp $
+ *
+ */
+
+#ifndef __UIP_ARCH_H__
+#define __UIP_ARCH_H__
+
+#include "uip.h"
+
+void uip_add_rcv_nxt(u16_t n);
+void uip_add32(u8_t *op32, u16_t op16);
+
+u16_t uip_chksum(u16_t *data, u16_t len);
+u16_t uip_ipchksum(void);
+u16_t uip_tcpchksum(void);
+
+#endif /* __UIP_ARCH_H__ */
diff --git a/contiki-gtk/windowborder.png b/contiki-gtk/windowborder.png
new file mode 100644
index 0000000..9618b9a
--- /dev/null
+++ b/contiki-gtk/windowborder.png
Binary files differ