Merge remote-tracking branch 'contiki-msp430/master'
diff --git a/contiki-msp430/Makefile b/contiki-msp430/Makefile
new file mode 100644
index 0000000..de44e43
--- /dev/null
+++ b/contiki-msp430/Makefile
@@ -0,0 +1,139 @@
+# 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: Makefile,v 1.4 2005/04/18 22:46:02 oliverschmidt Exp $
+#
+
+all: contiki wireless-2 wireless-3
+
+CONTIKI=../contiki
+
+include $(CONTIKI)/Makefile.common
+include Makefile.depend
+
+CC=msp430-gcc
+LD=msp430-ld
+AS=msp430-as
+OBJCOPY=msp430-objcopy
+CFLAGS=-Os -I$(CONTIKI)/apps -I$(CONTIKI)/ctk -I$(CONTIKI)/ek \
+ -I$(CONTIKI)/lib -I$(CONTIKI)/uip \
+ -Iapps -Ictk -Imsp430 -Iuip -Iconf \
+ -DWITH_UIP -DWITH_ASCII \
+ -Wall -g -I../uip -I. -mmcu=msp430x149
+LDFLAGS=-mmcu=msp430x149 -Wl,-Map=contiki.map,--cref
+
+%.o: %.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.o: apps/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.o: msp430/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.o: uip/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.o: $(CONTIKICC65)/uip/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/apps/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/ctk/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/ek/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/lib/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+%.o: $(CONTIKI)/uip/%.c
+ $(CC) $(CFLAGS) -c $< -o $(notdir $(<:.c=.o))
+
+%.srec:
+ $(OBJCOPY) -O srec $< $@
+
+clean:
+ rm -f *.o *~ *core contiki contiki.srec *.lst *.map
+
+depend:
+ gcc $(CCDEPFLAGS) -MM -Iapps -Ictk -Imsp430 -Iuip -Iconf \
+ -I$(CONTIKI)/lib -I$(CONTIKI)/ek \
+ -I$(CONTIKI)/ctk -I$(CONTIKI)/apps -I$(CONTIKI)/uip \
+ *.c */*.c $(CONTIKI)/*/*.c > Makefile.depend
+
+contiki: contiki-main.o strncasecmp.o sensors.o msp430.o \
+ sensorcheck.o \
+ dispatcher.o \
+ uip.o uip_arch.o uip-signal.o uip_main.o uip-fw.o \
+ rs232.o rs232dev.o slip-tr1001-drv.o tr1001.o \
+# ctk.o ctk-vncserver.o libconio.o vnc-server.o vnc-out.o ctk-vncfont.o \
+# program-handler.o sensorview.o sensorview-dsc.o \
+# $(WEBSERVER)
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
+
+wireless-2: wireless-main-2.o strncasecmp.o sensors.o msp430.o \
+ sensorcheck.o \
+ dispatcher.o \
+ uip.o uip_arch.o uip-signal.o uip_main.o uip-fw.o \
+ rs232.o tr1001-drv.o tr1001.o \
+# ctk.o ctk-vncserver.o libconio.o vnc-server.o vnc-out.o ctk-vncfont.o \
+# program-handler.o sensorview.o sensorview-dsc.o \
+# $(WEBSERVER)
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
+
+wireless-3: wireless-main-3.o strncasecmp.o sensors.o msp430.o \
+ sensorcheck.o \
+ dispatcher.o \
+ uip.o uip_arch.o uip-signal.o uip_main.o uip-fw.o \
+ rs232.o tr1001-drv.o tr1001.o $(WEBSERVER) \
+# ctk.o ctk-vncserver.o libconio.o vnc-server.o vnc-out.o ctk-vncfont.o \
+# program-handler.o sensorview.o sensorview-dsc.o \
+# $(WEBSERVER)
+ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
+
+
+erase:
+ jtag/pyjtag/jtag.py -l /dev/ppi0 -e
+
+upload: erase
+ jtag/pyjtag/jtag.py -l /dev/ppi0 -D -D -S -R 2048 -p contiki
+ jtag/pyjtag/jtag.py -l /dev/ppi0 -D -r
+
+upload-wireless-2: erase
+ jtag/pyjtag/jtag.py -l /dev/ppi0 -D -D -S -R 2048 -p wireless-2
+ jtag/pyjtag/jtag.py -l /dev/ppi0 -D -r
+
+upload-wireless-3: erase
+ jtag/pyjtag/jtag.py -l /dev/ppi0 -D -D -S -R 2048 -p wireless-3
+ jtag/pyjtag/jtag.py -l /dev/ppi0 -D -r
+
+upload-remote: contiki
+ scp contiki sidewalker.sics.se:/tmp
+ ssh sidewalker.sics.se "/adam/contiki-msp430/jtag/pyjtag/jtag.py -l /dev/ppi0 -e"
+ ssh sidewalker.sics.se "/adam/contiki-msp430/jtag/pyjtag/jtag.py -l /dev/ppi0 -D -D -S -R 2048 -p /tmp/contiki"
+ ssh sidewalker.sics.se "/adam/contiki-msp430/jtag/pyjtag/jtag.py -l /dev/ppi0 -r"
+
diff --git a/contiki-msp430/Makefile.depend b/contiki-msp430/Makefile.depend
new file mode 100644
index 0000000..e48b154
--- /dev/null
+++ b/contiki-msp430/Makefile.depend
@@ -0,0 +1,427 @@
+contiki-main.o: contiki-main.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ctk/ctk-vncserver.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h apps/webserver.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/apps/about-dsc.h ../contiki/apps/netconf-dsc.h \
+ ../contiki/apps/processes-dsc.h ../contiki/apps/www-dsc.h \
+ ../contiki/apps/webserver-dsc.h apps/sensorview-dsc.h \
+ msp430/sensors.h msp430/msp430.h msp430/rs232.h
+test.o: test.c msp430/rs232.h
+httpd-cgi.o: apps/httpd-cgi.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/httpd.h apps/httpd-cgi.h \
+ apps/httpd-fs.h ../contiki/lib/petsciiconv.h msp430/sensors.h \
+ msp430/tr1001.h
+httpd-fs.o: apps/httpd-fs.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/httpd.h apps/httpd-fs.h \
+ apps/httpd-fsdata.h apps/httpd-fsdata.c
+httpd-fsdata.o: apps/httpd-fsdata.c
+httpd.o: apps/httpd.c ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/ek/dispatcher.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/apps/httpd.h apps/httpd-fs.h apps/httpd-fsdata.h \
+ apps/httpd-cgi.h
+procprint.o: apps/procprint.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/loader.h \
+ msp430/rs232.h
+sensorcheck.o: apps/sensorcheck.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/loader.h \
+ msp430/sensors.h ../contiki/uip/uip-signal.h
+sensorview-dsc.o: apps/sensorview-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+sensorview.o: apps/sensorview.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/loader.h \
+ msp430/sensors.h
+webclient.o: apps/webclient.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/webclient.h \
+ ../contiki/apps/http-strings.h \
+ ../contiki/apps/http-user-agent-string.h ../contiki/uip/resolv.h \
+ ../contiki/uip/uip_main.h conf/www-conf.h
+webserver.o: apps/webserver.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/apps/http-strings.h ../contiki/uip/uip_main.h \
+ ../contiki/lib/petsciiconv.h ../contiki/ek/loader.h apps/webserver.h \
+ ../contiki/apps/httpd.h
+slip-main.o: contiki-dtnsn/slip-main.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ctk/ctk-vncserver.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h apps/webserver.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/apps/about-dsc.h ../contiki/apps/netconf-dsc.h \
+ ../contiki/apps/processes-dsc.h ../contiki/apps/www-dsc.h \
+ ../contiki/apps/webserver-dsc.h apps/sensorview-dsc.h \
+ msp430/sensors.h msp430/msp430.h msp430/rs232.h
+slip-tr1001-drv.o: contiki-dtnsn/slip-tr1001-drv.c \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/uip-signal.h uip/rs232dev.h \
+ msp430/tr1001.h ../contiki/ek/loader.h ../contiki/uip/uip-fw.h
+wireless-main-2.o: contiki-dtnsn/wireless-main-2.c \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk-vncserver.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h msp430/msp430.h ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h apps/webserver.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/apps/about-dsc.h ../contiki/apps/netconf-dsc.h \
+ ../contiki/apps/processes-dsc.h ../contiki/apps/www-dsc.h \
+ ../contiki/apps/webserver-dsc.h apps/sensorview-dsc.h \
+ msp430/sensors.h msp430/rs232.h
+wireless-main-3.o: contiki-dtnsn/wireless-main-3.c \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk-vncserver.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/uip/uip_main.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/resolv.h apps/webserver.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/apps/about-dsc.h ../contiki/apps/netconf-dsc.h \
+ ../contiki/apps/processes-dsc.h ../contiki/apps/www-dsc.h \
+ ../contiki/apps/webserver-dsc.h apps/sensorview-dsc.h \
+ msp430/sensors.h msp430/msp430.h msp430/rs232.h
+wireless-main.o: contiki-dtnsn/wireless-main.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ctk/ctk-vncserver.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h msp430/msp430.h \
+ ../contiki/uip/uip_main.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/resolv.h apps/webserver.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/apps/about-dsc.h ../contiki/apps/netconf-dsc.h \
+ ../contiki/apps/processes-dsc.h ../contiki/apps/www-dsc.h \
+ ../contiki/apps/webserver-dsc.h apps/sensorview-dsc.h \
+ msp430/sensors.h msp430/rs232.h
+msp430.o: msp430/msp430.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ctk/ctk-vncserver.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h apps/webserver.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/apps/about-dsc.h ../contiki/apps/netconf-dsc.h \
+ ../contiki/apps/processes-dsc.h ../contiki/apps/www-dsc.h \
+ ../contiki/apps/webserver-dsc.h apps/sensorview-dsc.h \
+ msp430/sensors.h msp430/rs232.h
+rs232.o: msp430/rs232.c msp430/rs232.h
+sensors.o: msp430/sensors.c
+tr1001.o: msp430/tr1001.c msp430/tr1001.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h msp430/sensors.h
+rs232-backup.o: uip/rs232-backup.c msp430/rs232.h
+rs232dev.o: uip/rs232dev.c msp430/rs232.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h
+slip-drv.o: uip/slip-drv.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/uip-signal.h uip/rs232dev.h ../contiki/ek/loader.h
+tr1001-drv.o: uip/tr1001-drv.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/uip-signal.h msp430/tr1001.h ../contiki/ek/loader.h \
+ ../contiki/uip/uip-fw.h
+uip_arch.o: uip/uip_arch.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/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 \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+about.o: ../contiki/apps/about.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/lib/petsciiconv.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 \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+calc.o: ../contiki/apps/calc.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/loader.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 \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+email.o: ../contiki/apps/email.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/apps/smtp.h \
+ ../contiki/uip/uip_main.h ../contiki/lib/petsciiconv.h \
+ ../contiki/ek/loader.h ../contiki/lib/ctk-textedit.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/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.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-cgi.o: ../contiki/apps/httpd-cgi.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/httpd.h \
+ ../contiki/apps/httpd-cgi.h ../contiki/apps/httpd-fs.h \
+ ../contiki/lib/petsciiconv.h
+httpd-fs.o: ../contiki/apps/httpd-fs.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/httpd.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/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/httpd.h \
+ ../contiki/apps/httpd-fs.h ../contiki/apps/httpd-fsdata.h \
+ ../contiki/apps/httpd-cgi.h
+netconf-dsc.o: ../contiki/apps/netconf-dsc.c ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+netconf.o: ../contiki/apps/netconf.c ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ek/loader.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 \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+processes.o: ../contiki/apps/processes.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/loader.h
+program-handler.o: ../contiki/apps/program-handler.c \
+ ../contiki/lib/petsciiconv.h ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/uip/resolv.h ../contiki/ek/loader.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.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 \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+shell-gui.o: ../contiki/apps/shell-gui.c \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/loader.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h \
+ ../contiki/uip/uip_main.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/resolv.h ../contiki/apps/shell.h \
+ ../contiki/uip/uip-signal.h
+simpletelnet.o: ../contiki/apps/simpletelnet.c \
+ ../contiki/lib/petsciiconv.h ../contiki/uip/uip_main.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/uip/resolv.h \
+ ../contiki/apps/telnet.h ../contiki/apps/simpletelnet.h \
+ ../contiki/ek/loader.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/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.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 \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+telnet.o: ../contiki/apps/telnet.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.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 \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+telnetd.o: ../contiki/apps/telnetd.c ../contiki/apps/program-handler.h \
+ ../contiki/ek/dsc.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/loader.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/ek/dispatcher.h ../contiki/ek/arg.h \
+ ../contiki/uip/uip_main.h ../contiki/lib/petsciiconv.h \
+ ../contiki/uip/uip_arp.h ../contiki/uip/resolv.h \
+ ../contiki/lib/memb.h ../contiki/apps/shell.h \
+ ../contiki/uip/uip-signal.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 \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+vnc-viewer.o: ../contiki/apps/vnc-viewer.c ../contiki/apps/vnc-draw.h \
+ ../contiki/uip/uip_arch.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/vnc-viewer.h
+vnc.o: ../contiki/apps/vnc.c ../contiki/lib/petsciiconv.h \
+ ../contiki/uip/uip_main.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/uip/resolv.h \
+ ../contiki/apps/telnet.h ../contiki/apps/vnc.h \
+ ../contiki/apps/vnc-draw.h ../contiki/uip/uip_arch.h \
+ ../contiki/apps/vnc-viewer.h conf/vnc-conf.h ../contiki/ek/loader.h
+webclient.o: ../contiki/apps/webclient.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/apps/webclient.h \
+ ../contiki/apps/http-strings.h \
+ ../contiki/apps/http-user-agent-string.h ../contiki/uip/resolv.h \
+ ../contiki/uip/uip_main.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 \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+webserver.o: ../contiki/apps/webserver.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/apps/http-strings.h ../contiki/uip/uip_main.h \
+ ../contiki/lib/petsciiconv.h ../contiki/ek/loader.h \
+ ../contiki/apps/webserver.h ../contiki/apps/httpd.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 \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h
+www.o: ../contiki/apps/www.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.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/apps/htmlparser.h \
+ ../contiki/uip/resolv.h ../contiki/lib/petsciiconv.h \
+ ../contiki/apps/program-handler.h ../contiki/ek/dsc.h \
+ ../contiki/ek/loader.h conf/www-conf.h
+ctk-conio.o: ../contiki/ctk/ctk-conio.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h conf/ctk-conio-conf.h
+ctk-vncfont.o: ../contiki/ctk/ctk-vncfont.c
+ctk-vncserver.o: ../contiki/ctk/ctk-vncserver.c ../contiki/ctk/ctk.h \
+ conf/ctk-conf.h ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ctk/ctk-draw.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/ek/loader.h ../contiki/ctk/vnc-server.h \
+ ../contiki/ctk/vnc-out.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/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
+ conf/uip-conf.h ../contiki/ctk/ctk.h conf/ctk-conf.h ctk/ctk-arch.h \
+ ../contiki/ctk/ctk-vncarch.h ../contiki/ctk/ctk-draw.h \
+ ../contiki/ctk/ctk-mouse.h
+vnc-out.o: ../contiki/ctk/vnc-out.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ctk/vnc-server.h \
+ ../contiki/ctk/vnc-out.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.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/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/ctk/vnc-server.h \
+ ../contiki/ctk/vnc-out.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
+ ctk/ctk-arch.h ../contiki/ctk/ctk-vncarch.h
+arg.o: ../contiki/ek/arg.c ../contiki/ek/arg.h
+dispatcher.o: ../contiki/ek/dispatcher.c ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/ek/dispatcher.h ../contiki/lib/cc.h \
+ conf/cc-conf.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/uip/uip-signal.h
+ek.o: ../contiki/ek/ek.c ../contiki/ek/ek.h conf/ek-conf.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 ../contiki/ctk/ctk-vncarch.h ../contiki/ek/ek.h \
+ conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/arg.h ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h
+libconio.o: ../contiki/lib/libconio.c ../contiki/lib/libconio.h \
+ conf/libconio-conf.h
+memb.o: ../contiki/lib/memb.c ../contiki/lib/memb.h
+petsciiconv.o: ../contiki/lib/petsciiconv.c
+strncasecmp.o: ../contiki/lib/strncasecmp.c
+resolv.o: ../contiki/uip/resolv.c ../contiki/uip/resolv.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h \
+ ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/uip/uip-signal.h
+uip-fw.o: ../contiki/uip/uip-fw.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip_arch.h ../contiki/uip/uip-fw.h
+uip-signal.o: ../contiki/uip/uip-signal.c ../contiki/uip/uip-signal.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h \
+ ../contiki/uip/uip.h ../contiki/uip/uipopt.h conf/uip-conf.h
+uip.o: ../contiki/uip/uip.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.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/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
+ ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/arg.h
+uip_main.o: ../contiki/uip/uip_main.c ../contiki/uip/uip.h \
+ ../contiki/uip/uipopt.h conf/uip-conf.h ../contiki/ek/dispatcher.h \
+ ../contiki/ek/ek.h conf/ek-conf.h ../contiki/lib/cc.h conf/cc-conf.h \
+ ../contiki/ek/arg.h ../contiki/uip/uip_arp.h \
+ ../contiki/uip/uip_main.h
diff --git a/contiki-msp430/apps/httpd-cgi.c b/contiki-msp430/apps/httpd-cgi.c
new file mode 100644
index 0000000..f9cc3f1
--- /dev/null
+++ b/contiki-msp430/apps/httpd-cgi.c
@@ -0,0 +1,207 @@
+/*
+ * 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: httpd-cgi.c,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+/*
+ * This file includes functions that are called by the web server
+ * scripts. The functions takes no argument, and the return value is
+ * interpreted as follows. A zero means that the function did not
+ * complete and should be invoked for the next packet as well. A
+ * non-zero value indicates that the function has completed and that
+ * the web server should move along to the next script line.
+ *
+ */
+
+#include "uip.h"
+#include "httpd.h"
+#include "httpd-cgi.h"
+#include "httpd-fs.h"
+
+#include "petsciiconv.h"
+
+#ifdef __CBM__
+#include <cbm.h>
+#include <c64.h>
+#endif /* __CBM__ */
+
+#include <stdio.h>
+#include <string.h>
+
+#include "sensors.h"
+
+static u8_t sensors(void);
+static u8_t tcp_stats(void);
+static u8_t processes(void);
+
+const httpd_cgifunction httpd_cgitab[3] = {
+ sensors, /* CGI function "a" */
+ tcp_stats, /* CGI function "b" */
+ processes, /* CGI function "c" */
+};
+
+static const char closed[] = /* "CLOSED",*/
+{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0};
+static const char syn_rcvd[] = /* "SYN-RCVD",*/
+{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56,
+ 0x44, 0};
+static const char syn_sent[] = /* "SYN-SENT",*/
+{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e,
+ 0x54, 0};
+static const char established[] = /* "ESTABLISHED",*/
+{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48,
+ 0x45, 0x44, 0};
+static const char fin_wait_1[] = /* "FIN-WAIT-1",*/
+{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
+ 0x54, 0x2d, 0x31, 0};
+static const char fin_wait_2[] = /* "FIN-WAIT-2",*/
+{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
+ 0x54, 0x2d, 0x32, 0};
+static const char closing[] = /* "CLOSING",*/
+{0x43, 0x4c, 0x4f, 0x53, 0x49,
+ 0x4e, 0x47, 0};
+static const char time_wait[] = /* "TIME-WAIT,"*/
+{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41,
+ 0x49, 0x54, 0};
+static const char last_ack[] = /* "LAST-ACK"*/
+{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43,
+ 0x4b, 0};
+
+static const char * const states[] = {
+ closed,
+ syn_rcvd,
+ syn_sent,
+ established,
+ fin_wait_1,
+ fin_wait_2,
+ closing,
+ time_wait,
+ last_ack};
+
+
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+sensors(void)
+{
+ if(uip_acked()) {
+ return 1;
+ }
+ sprintf((char *)uip_appdata,
+ "<li>Microphone 0x%x<br><li>Battery 0x%x<br><li>Temp %d<br><li>Extern 0x%x<br>",
+ sensors_mic, sensors_battery, sensors_temp, sensors_extern);
+ uip_send(uip_appdata, strlen((char *)uip_appdata));
+ return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+tcp_stats(void)
+{
+ struct uip_conn *conn;
+
+ if(uip_acked()) {
+ /* If the previously sent data has been acknowledged, we move
+ forward one connection. */
+ if(++hs->count == UIP_CONNS) {
+ /* If all connections has been printed out, we are done and
+ return 1. */
+ return 1;
+ }
+ }
+
+ conn = &uip_conns[hs->count];
+ while((conn->tcpstateflags & TS_MASK) == CLOSED) {
+ if(++hs->count == UIP_CONNS) {
+ /* If all connections has been printed out, we are done and
+ return 1. */
+ return 1;
+ }
+ conn = &uip_conns[hs->count];
+ }
+
+ sprintf((char *)uip_appdata,
+ "<tr><td>%d</td><td>%u.%u.%u.%u:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n",
+ htons(conn->lport),
+ htons(conn->ripaddr[0]) >> 8,
+ htons(conn->ripaddr[0]) & 0xff,
+ htons(conn->ripaddr[1]) >> 8,
+ htons(conn->ripaddr[1]) & 0xff,
+ htons(conn->rport),
+ states[conn->tcpstateflags & TS_MASK],
+ conn->nrtx,
+ conn->timer,
+ (uip_outstanding(conn))? '*':' ',
+ (uip_stopped(conn))? '!':' ');
+ uip_send(uip_appdata, strlen((char *)uip_appdata));
+
+ return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+processes(void)
+{
+ u8_t i;
+ struct dispatcher_proc *p;
+
+
+ p = DISPATCHER_PROCS();
+ for(i = 0; i < hs->count; ++i) {
+ if(p != NULL) {
+ p = p->next;
+ }
+ }
+
+ if(uip_acked()) {
+ /* If the previously sent data has been acknowledged, we move
+ forward one connection. */
+ ++hs->count;
+ if(p != NULL) {
+ p = p->next;
+ }
+ if(p == NULL) {
+ /* If all processes have been printed out, we are done and
+ return 1. */
+ return 1;
+ }
+ }
+
+ sprintf((char *)uip_appdata,
+ "<tr align=\"center\"><td>%3d</td><td>%s</td><td>0x%04x</td><td>0x%04x</td><td>0x%04x</td></tr>\r\n",
+ p->id, p->name,
+ p->idle, p->signalhandler, p->uiphandler);
+ uip_send(uip_appdata, strlen((char *)uip_appdata));
+ return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/httpd-cgi.h b/contiki-msp430/apps/httpd-cgi.h
new file mode 100644
index 0000000..dd19d94
--- /dev/null
+++ b/contiki-msp430/apps/httpd-cgi.h
@@ -0,0 +1,45 @@
+/*
+ * 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: httpd-cgi.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+#ifndef __HTTPD_CGI_H__
+#define __HTTPD_CGI_H__
+
+typedef u8_t (* httpd_cgifunction)(void);
+
+extern const httpd_cgifunction httpd_cgitab[3];
+
+#endif /* __HTTPD_CGI_H__ */
diff --git a/contiki-msp430/apps/httpd-fs.c b/contiki-msp430/apps/httpd-fs.c
new file mode 100644
index 0000000..d97dcfb
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs.c
@@ -0,0 +1,133 @@
+/*
+ * 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. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the Swedish Institute
+ * of Computer Science and its contributors.
+ * 4. 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 lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: httpd-fs.c,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ */
+
+#include "uip.h"
+#include "httpd.h"
+#include "httpd-fs.h"
+#include "httpd-fsdata.h"
+
+#include "httpd-fsdata.c"
+
+#if HTTPD_FS_STATISTICS
+static u16_t count[HTTPD_FS_NUMFILES];
+#endif /* HTTPD_FS_STATISTICS */
+
+/*-----------------------------------------------------------------------------------*/
+static u8_t
+httpd_fs_strcmp(const char *str1, const char *str2)
+{
+ u8_t i;
+ i = 0;
+ loop:
+
+ if(str2[i] == 0 ||
+ str1[i] == '\r' ||
+ str1[i] == '\n') {
+ return 0;
+ }
+
+ if(str1[i] != str2[i]) {
+ return 1;
+ }
+
+
+ ++i;
+ goto loop;
+}
+/*-----------------------------------------------------------------------------------*/
+int
+httpd_fs_open(const char *name, struct httpd_fs_file *file)
+{
+#if HTTPD_FS_STATISTICS
+ u16_t i = 0;
+#endif /* HTTPD_FS_STATISTICS */
+ struct httpd_fsdata_file_noconst *f;
+
+ for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
+ f != NULL;
+ f = (struct httpd_fsdata_file_noconst *)f->next) {
+
+ if(httpd_fs_strcmp(name, f->name) == 0) {
+ file->data = f->data;
+ file->len = f->len;
+#if HTTPD_FS_STATISTICS
+ ++count[i];
+#endif /* HTTPD_FS_STATISTICS */
+ return 1;
+ }
+#if HTTPD_FS_STATISTICS
+ ++i;
+#endif /* HTTPD_FS_STATISTICS */
+
+ }
+ return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+httpd_fs_init(void)
+{
+#if HTTPD_FS_STATISTICS
+ u16_t i;
+ for(i = 0; i < HTTPD_FS_NUMFILES; i++) {
+ count[i] = 0;
+ }
+#endif /* HTTPD_FS_STATISTICS */
+}
+/*-----------------------------------------------------------------------------------*/
+#if HTTPD_FS_STATISTICS
+u16_t httpd_fs_count
+(char *name)
+{
+ struct httpd_fsdata_file_noconst *f;
+ u16_t i;
+
+ i = 0;
+ for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
+ f != NULL;
+ f = (struct httpd_fsdata_file_noconst *)f->next) {
+
+ if(httpd_fs_strcmp(name, f->name) == 0) {
+ return count[i];
+ }
+ ++i;
+ }
+ return 0;
+}
+#endif /* HTTPD_FS_STATISTICS */
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/httpd-fs.h b/contiki-msp430/apps/httpd-fs.h
new file mode 100644
index 0000000..5f07e57
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs.h
@@ -0,0 +1,65 @@
+/*
+ * 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. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the Swedish Institute
+ * of Computer Science and its contributors.
+ * 4. 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 lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: httpd-fs.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ */
+#ifndef __HTTPD_FS_H__
+#define __HTTPD_FS_H__
+
+#include "uip.h"
+
+#define HTTPD_FS_STATISTICS 0
+
+struct httpd_fs_file {
+ const unsigned char *data;
+ int len;
+};
+
+/* file must be allocated by caller and will be filled in
+ by the function. */
+int httpd_fs_open(const char *name, struct httpd_fs_file *file);
+
+#ifdef HTTPD_FS_STATISTICS
+#if HTTPD_FS_STATISTICS == 1
+u32_t httpd_fs_count(char *name);
+u32_t httpd_fs_total(void);
+void httpd_fs_inc(void);
+#endif /* HTTPD_FS_STATISTICS */
+#endif /* HTTPD_FS_STATISTICS */
+
+void httpd_fs_init(void);
+
+#endif /* __HTTPD_FS_H__ */
diff --git a/contiki-msp430/apps/httpd-fs/404.html b/contiki-msp430/apps/httpd-fs/404.html
new file mode 100644
index 0000000..a17711d
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/404.html
@@ -0,0 +1,8 @@
+<html>
+ <body bgcolor="white">
+ <center>
+ <h1>404 - file not found</h1>
+ <h3>Go <a href="/">here</a> instead.</h3>
+ </center>
+ </body>
+</html>
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fs/cgi/processes b/contiki-msp430/apps/httpd-fs/cgi/processes
new file mode 100644
index 0000000..22d144c
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/cgi/processes
@@ -0,0 +1,8 @@
+i /header.html
+#
+t <h1>System processes</h1><br><table width="100%">
+t <tr><th>ID</th><th>Name</th><th>Idle handler</th><th>Signal handler</th><th>TCP/IP handler</th> </tr>
+c c
+t </table>
+i /footer.plain
+.
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fs/cgi/sensors b/contiki-msp430/apps/httpd-fs/cgi/sensors
new file mode 100644
index 0000000..d4a911d
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/cgi/sensors
@@ -0,0 +1,7 @@
+i /header.html
+#
+t <h1>Sensors</h1><br> <ul>
+c a
+t </ul>
+i /footer.plain
+.
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fs/cgi/tcp b/contiki-msp430/apps/httpd-fs/cgi/tcp
new file mode 100644
index 0000000..26eda16
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/cgi/tcp
@@ -0,0 +1,8 @@
+i /header.html
+#
+t <h1>Current connections</h1><br> <table width="100%">
+t <tr><th>Local</th><th>Remote</th><th>State</th><th>Retransmissions</th><th>Timer</th><th>Flags</th> </tr>
+c b
+t </table>
+i /footer.plain
+.
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fs/footer.plain b/contiki-msp430/apps/httpd-fs/footer.plain
new file mode 100644
index 0000000..ac4a1f7
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/footer.plain
@@ -0,0 +1,11 @@
+<center>
+[<a href="/">Front page</a> |
+<a href="/cgi/tcp">Network connections</a> |
+<a href="/cgi/processes">Processes</a> |
+<a href="/cgi/sensors">Sensors</a>]
+</center><br>
+<p align="right">
+/<a href="http://www.sics.se/%7eadam/">Adam Dunkels</a>
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fs/header.html b/contiki-msp430/apps/httpd-fs/header.html
new file mode 100644
index 0000000..8302605
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/header.html
@@ -0,0 +1,2 @@
+<html><head><title>Contiki / uIP on MSP430 demo-server</title></head>
+<body bgcolor="white" text="black">
diff --git a/contiki-msp430/apps/httpd-fs/img/screenshot.png b/contiki-msp430/apps/httpd-fs/img/screenshot.png
new file mode 100644
index 0000000..1175867
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/img/screenshot.png
Binary files differ
diff --git a/contiki-msp430/apps/httpd-fs/index.html b/contiki-msp430/apps/httpd-fs/index.html
new file mode 100644
index 0000000..049ea5a
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/index.html
@@ -0,0 +1,41 @@
+<h1><a href="http://dunkels.com/adam/contiki/">Contiki</a> / <a
+href="http://dunkels.com/adam/uip/">uIP</a> on MSP430</h1>
+<p>
+The web pages you are watching are served by a <a
+href="http://dunkels.com/adam/contiki/apps/webserver.html">web
+server</a> running under the <a
+href="http://dunkels.com/adam/contiki/">Contiki operating system</a>
+on a small <a
+href="http://www.inf.fu-berlin.de/inst/ag-tech/esb/english/">sensor
+board</a> developed by <a
+href="http://www.inf.fu-berlin.de/inst/ag-tech/">the CST group</a> at
+<a href="http://www.fu-berlin.de">FU Berlin</a>. The sensor board is
+equipped with a TI MSP430 micrcontroller with 2048 bytes of RAM and 60
+kilobytes of flash ROM, as well as a number of sensors. The sensors
+can measure vibration, temperature, IR-light, sound, tilt and motion.
+</p>
+
+<h2>Internet connectivity</h2>
+<p>
+The sensor board is directly connected to the Internet through the
+RS232 interface on the board, and is running the <a
+href="http://dunkels.com/adam/uip/">uIP TCP/IP stack</a> on which
+Contiki is based.
+</p>
+
+<h2>Memory usage</h2>
+<p>
+The entire Contiki MSP430 system uses only about 1800 bytes RAM, of
+which 280 bytes is used for the virtual screen and 300 bytes for
+network buffers. All code and web pages are stored in the
+microcontroller's on-chip flash ROM.
+</p>
+<p align="right">
+/<a href="http://www.sics.se/%7eadam/">Adam Dunkels</a>
+</p>
+</td>
+</tr>
+</table>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fs/vnc.html b/contiki-msp430/apps/httpd-fs/vnc.html
new file mode 100644
index 0000000..75ee3a8
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/vnc.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<title>Contiki / uIP on MSP430 demo-server</title>
+</head>
+<body bgcolor="#e0e0e0" text="black">
+<table width="100%" cellspacing=0 cellpadding=0 border=0><tr valign="top">
+<td width="25%" valign="top">
+<br>
+<a href="/">Front page</a><br>
+<br>
+<a href="/vnc.html">Virtual desktop</a><br>
+<br>
+<a href="/cgi/tcp">Network connections</a><br>
+<br>
+<a href="/cgi/processes">Processes</a><br>
+<br>
+<a href="/cgi/sensors">Sensors</a><br>
+<br>
+<td class="content">
+<h1>Virtual Contiki Desktop</h1>
+
+<p>
+This small sensor board has no monitor or other kind of display, but
+it still is possible to access the Contiki system's virtual desktop
+using VNC.</p>
+
+<h3>Java client</h3>
+<p>
+The Java client makes it possible to access the virtual
+Contiki display directly from the web browser. It requires
+Java to be turned on in the browser.
+</p>
+<p>
+When asked for a password, just click the "Ok" button
+without typing in any password.
+</p>
+<center>
+<b><a href="#" onClick='window.open("vncjava.html",
+"Contiki",
+"toolbar=no,location=no,status=yes,menubar=no,scrollbars=yes,resizable=yes");'>Click
+here to launch in new window</a></b></center>
+<br>
+<center><b><a href="vncjava.html">Click here to launch in
+this window</a></b>
+</center>
+
+<p>
+The server can only have one connection at a time. In order to avoid
+monopolization of the connections, each user is only allowed to use
+the display for a short while.
+</p>
+
+<h3>Download VNC client</h3>
+<p>
+If you don't have Java installed, you can download a free VNC client
+program from <a href="http://www.realvnc.com">RealVNC</a>. Start the
+program with <b>193.10.67.150:0</b> as the display.
+</p>
+
+<h3>Unix/X clients</h3>
+<p>
+Unix/X VNC clients need the <tt>-bgr233</tt> option to work. Use the
+following command:
+</p>
+<center><tt>vncviewer -bgr233 193.10.67.150:0</tt></center>
+<p align="right">
+/<a href="http://dunkels.com/adam/">Adam Dunkels</a>
+</p>
+</td>
+</tr>
+</table>
+
+ </body>
+</html>
diff --git a/contiki-msp430/apps/httpd-fs/vncjava.html b/contiki-msp430/apps/httpd-fs/vncjava.html
new file mode 100644
index 0000000..42f1aab
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/vncjava.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <title>Virtual Contiki Screen</title>
+ </head>
+
+ <body>
+ <center>
+ <applet code="vncviewer.class" archive="vncviewer.jar"
+ width="280" height="160">
+ <param name="PORT" value="5900">
+ Java must be enabled in your web browser for this to work.
+ </applet>
+ </center>
+ </body>
+</html>
diff --git a/contiki-msp430/apps/httpd-fs/vncviewer.jar b/contiki-msp430/apps/httpd-fs/vncviewer.jar
new file mode 100644
index 0000000..c1ebd81
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fs/vncviewer.jar
Binary files differ
diff --git a/contiki-msp430/apps/httpd-fsdata.c b/contiki-msp430/apps/httpd-fsdata.c
new file mode 100644
index 0000000..e883f56
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fsdata.c
@@ -0,0 +1,2203 @@
+static const unsigned char data_img_screenshot_png[] __attribute__ ((aligned (2))) = {
+ /* /img/screenshot.png */
+ 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x70, 0x6e, 0x67, 0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 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, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x6e, 0x67,
+ 0xd, 0xa, 0xd, 0xa, 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa,
+ 0x1a, 0xa, 00, 00, 00, 0xd, 0x49, 0x48, 0x44, 0x52,
+ 00, 00, 00, 0x8c, 00, 00, 00, 0x48, 0x8, 0x2,
+ 00, 00, 00, 0xab, 0xdb, 0x8a, 0xcb, 00, 00, 0x3,
+ 0x2f, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xed, 0x9c, 0xd1,
+ 0x95, 0xdb, 0x20, 0x10, 0x45, 0x51, 0x4e, 0x4a, 0x49, 0x8a,
+ 0xa1, 0x80, 0x75, 0x17, 0xeb, 0x62, 0x5c, 0x86, 0xf2, 0x2f,
+ 0x8a, 0x71, 0x7a, 0xd1, 0x7e, 0x8c, 0x4c, 0xf0, 0x80, 0x6,
+ 0x18, 0x63, 0x69, 0xe7, 0xe4, 0xdd, 0xa3, 0xf, 0xaf, 0xc,
+ 0x32, 0xcc, 0xd5, 0x80, 0x8c, 0xa5, 0x9d, 0xd6, 0x75, 0x75,
+ 0xe0, 0x7b, 0xf3, 0xe3, 0xec, 0x6, 0x80, 0x3a, 0x90, 0x64,
+ 00, 0x48, 0x32, 00, 0x24, 0x19, 00, 0x92, 0xc, 00,
+ 0x49, 0x6, 0x80, 0x24, 0x3, 0x54, 0x25, 0x4d, 0x6c, 0xb,
+ 0x61, 0x8a, 0x84, 0x30, 0xe5, 0x5, 0x4c, 0x6c, 0xdf, 0xaf,
+ 0xb, 0x22, 0x6b, 0x5, 0xc7, 0x36, 0xe7, 0xdc, 0xb2, 0xfc,
+ 0x7b, 0x9d, 0x17, 0xd8, 0xdb, 0x96, 0xa5, 0x50, 0x3e, 0xdd,
+ 0x93, 0x1e, 0x79, 0xaf, 0xcc, 0xa8, 0x8d, 0x8e, 0x49, 0x4d,
+ 0x2a, 0x7e, 0xe8, 0x5e, 0xad, 0xbc, 0x70, 0xb1, 0x5f, 0xfd,
+ 0x5b, 0xc5, 0x41, 0xb7, 0xa4, 0x62, 0x2b, 0x9, 0xea, 0x3,
+ 0xbd, 0x60, 0x7b, 0x9e, 0xcf, 0x8c, 0x83, 0x64, 0xc8, 0x92,
+ 0xd2, 0x10, 0xe7, 0xbd, 0x28, 0xf6, 0x2b, 0x3f, 0xe, 0xeb,
+ 0x57, 0xb1, 0x16, 0xdb, 0x73, 0x82, 0x24, 0xd6, 0xab, 0xd8,
+ 0xac, 0xfc, 0x2c, 0x63, 0xad, 0x64, 0xc2, 0xf6, 0xaa, 0xbc,
+ 0x2f, 0x93, 0xd2, 0xd7, 0xf2, 0x1e, 0xa1, 0x85, 0xf9, 0xe8,
+ 0x92, 0x47, 0xa3, 0x21, 0xe7, 0xde, 0x2f, 0xa9, 0xda, 0xe1,
+ 0x62, 0xdd, 0xa2, 0xf, 0x26, 0x72, 0xd0, 0x60, 0x52, 0xcf,
+ 0xa4, 0xfc, 0x7c, 0x17, 0x72, 0x82, 0x25, 0x84, 0xdc, 0xdf,
+ 0x73, 0x24, 0xb1, 0x39, 0x49, 0x38, 0x77, 0x56, 0x71, 0xd6,
+ 0x61, 0x53, 0x42, 0x71, 0x9e, 0xe8, 0x9d, 0x36, 0xba, 0x24,
+ 0xa5, 0x7, 0x17, 0x3e, 0x85, 0xf5, 0x2b, 0x6f, 0x52, 0x35,
+ 0x93, 0x8e, 0x1e, 0xee, 0x7a, 0xc7, 0x6e, 0x21, 0xe2, 0x6c,
+ 0x8a, 0x62, 0x7, 0x64, 0x27, 0xef, 0x70, 0x49, 0x2c, 0x6a,
+ 0x69, 0x2f, 0x58, 0x99, 0x5c, 0xa4, 0x70, 0x26, 0xb5, 0xcc,
+ 0x64, 0xbd, 0x92, 0xa6, 0x75, 0xcd, 0xa6, 0xbf, 0x27, 0x6a,
+ 0x57, 0x87, 0xa0, 0xc6, 0x34, 0xb9, 0x65, 0x71, 0xde, 0xcb,
+ 0xa5, 0x24, 0xb, 0x15, 0x49, 0xbf, 0xa7, 0xcb, 0xd9, 0x7d,
+ 0xfc, 0x2f, 0xb8, 0xaf, 0xb3, 0xf0, 0x2e, 0x56, 0x1c, 0xc,
+ 00, 0x49, 0x6, 0x80, 0x24, 0x3, 0x40, 0x92, 0x1, 0x20,
+ 0xc9, 00, 0x90, 0x64, 00, 0x48, 0x32, 0xc0, 0xcf, 0xb3,
+ 0x1b, 0x60, 0x8a, 0x5f, 0x7f, 0xc6, 0x1c, 0xe7, 0xef, 0x47,
+ 0x57, 0x71, 0x48, 0xea, 0xc3, 0xfb, 0xf9, 0xc5, 0x23, 0x84,
+ 0xd0, 0xbd, 0x3e, 00, 0x49, 0xdd, 0xa4, 0x51, 0x26, 0x67,
+ 0x7b, 0x71, 0xcf, 0xdf, 0xd5, 0x39, 0x86, 0x24, 0x25, 0x4c,
+ 0x40, 0x1e, 0xfd, 0x10, 0x2e, 0xf4, 0xae, 0x2c, 0xb2, 0x5,
+ 0x48, 0xd2, 0x90, 0xc7, 0x5d, 0x70, 0x10, 0xc2, 0xc5, 0xfb,
+ 0xd9, 0xfb, 0x59, 0xed, 0x9, 0x92, 0x94, 0xa4, 0x59, 0x52,
+ 0x2d, 0x49, 0x9e, 0xd4, 0x9f, 0x5, 0x49, 0xdd, 0xa4, 0x39,
+ 0xd1, 0x9e, 0x1c, 0xaf, 0x78, 0x82, 0x24, 0x25, 0xbd, 0x11,
+ 0xc7, 0x9c, 0x74, 0x28, 0x14, 0x6e, 0x45, 0xd0, 0xd5, 0xc9,
+ 0x4, 0x49, 0x1a, 0x74, 0xb1, 0xc6, 0x85, 0xc3, 0xa1, 0xbc,
+ 0x32, 0x76, 0x29, 0x80, 0x24, 0xd, 0xed, 0x99, 0x34, 0x44,
+ 0x27, 0x24, 0x69, 0xe8, 0xa, 0xfd, 0xeb, 0x2b, 0x49, 0x90,
+ 0xa4, 0xa1, 0x1a, 0xf7, 0xf6, 0x6f, 0x51, 0x2d, 0x40, 0x92,
+ 0x86, 0x96, 0x4c, 0x1a, 0x65, 0xc8, 0x41, 0x92, 0x9a, 0x3d,
+ 0x7, 0x63, 0x73, 0x88, 0x80, 0xa4, 0x6e, 0x68, 0xc5, 0x41,
+ 0x48, 0xa6, 0xd4, 0x90, 0xb0, 0x2, 0xdb, 0xe, 0x24, 0xe9,
+ 0x29, 0xae, 0x7c, 0xef, 0xfd, 0x89, 0x65, 0xa1, 0x43, 0xa1,
+ 0x70, 0xef, 0x25, 0xd3, 0xd8, 0x81, 0x8e, 0x80, 0x24, 0x25,
+ 0x71, 0x99, 0xb5, 0x38, 0xb8, 0x8d, 0x5, 0x37, 0xa2, 0x68,
+ 0x60, 0xbf, 0xe6, 0xc5, 0x8d, 0x15, 0x4b, 0xfd, 0x61, 0x4e,
+ 0x3a, 0x81, 0xc6, 0x5f, 0x5d, 0x87, 0x8c, 0x7e, 0x90, 0xd4,
+ 0x4d, 0x1e, 0xf7, 0x77, 0xcc, 0x43, 0x29, 0x90, 0xd4, 0xc7,
+ 0xc1, 0x4b, 0xab, 0x4, 0x24, 0x6d, 0xf8, 0xcf, 0x8f, 0xf8,
+ 0x9c, 0x57, 0x8, 0x6f, 0x96, 0xd1, 0x79, 0xff, 0x1e, 0x2e,
+ 0x1c, 0x36, 0xbc, 0x77, 0x21, 0xb8, 0xeb, 0xf5, 0x12, 0x42,
+ 0xf5, 0xa9, 0xbc, 0xa3, 0x41, 0x26, 0x71, 0x42, 0xb8, 0x84,
+ 0xe0, 0x9c, 0x73, 0xde, 0xcf, 0x2c, 0xb7, 0x6e, 0xb7, 0x39,
+ 0x2a, 0xa4, 0x3d, 0x79, 0x19, 0x5d, 0x2d, 0xb9, 0x49, 0x90,
+ 0xb4, 0x41, 0x71, 0x7c, 0x5c, 0xad, 0x51, 0x28, 0xdd, 0xf5,
+ 0xba, 0x85, 0x8f, 0x2, 0xed, 0x9c, 0xa3, 0x9d, 0x14, 0x65,
+ 0xaa, 0x12, 0xcb, 0x10, 0xb4, 0x3f, 0x9a, 0x68, 0xac, 0x25,
+ 0x3, 0x49, 0x1b, 0x2c, 0x81, 0xe8, 0xf5, 0xed, 0x36, 0x3f,
+ 0xde, 0xdd, 0x8a, 0x51, 0x70, 0xe3, 0x1a, 0x4f, 0x8, 0x4f,
+ 0x65, 0xd2, 0xdb, 0x1f, 0xd2, 0x75, 0xa0, 0x58, 0x8b, 0x8e,
+ 0x53, 0xac, 0x25, 00, 0x49, 0x1b, 0x94, 0x2b, 0xd9, 0xe2,
+ 0x5b, 0x25, 0x82, 0x45, 0xb5, 0xb4, 0x18, 0x21, 0x5c, 0x97,
+ 0x17, 0x6b, 0x9, 0x40, 0xd2, 0x6, 0x1b, 0xee, 0xd8, 0x9e,
+ 0xe2, 0xe8, 0x94, 0x4e, 0x2d, 0xc5, 0x5a, 0x31, 0xfa, 0xec,
+ 0xf6, 0xd5, 0x98, 0x46, 0x69, 0x19, 0x1, 0xfc, 0x8b, 0x80,
+ 0x7, 0xa3, 0x1e, 0x6b, 0x51, 0x71, 0xbf, 0x4b, 0x16, 0x90,
+ 0x49, 0xf, 0x3a, 0x9f, 0x19, 0x3a, 0x12, 0x7c, 0x4f, 0x32,
+ 00, 0x24, 0x19, 00, 0x92, 0xc, 00, 0x49, 0x6, 0x80,
+ 0x24, 0x3, 0x40, 0x92, 0x1, 0x20, 0xc9, 00, 0xd5, 0x7f,
+ 0x4a, 0x8, 0xce, 0x7, 0x99, 0x64, 00, 0x48, 0x32, 00,
+ 0x24, 0x19, 00, 0x92, 0xc, 00, 0x49, 0x6, 0x80, 0x24,
+ 0x3, 0x40, 0x92, 0x1, 0xbe, 00, 0x25, 0xf7, 0xec, 0x34,
+ 0x6f, 0xda, 0x21, 0x5b, 00, 00, 00, 0x11, 0x74, 0x45,
+ 0x58, 0x74, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 00,
+ 0x56, 0x4e, 0x43, 0x3a, 0x20, 0x75, 0x56, 0x4e, 0x43, 0xe7,
+ 0x8d, 0x67, 0x90, 00, 00, 00, 00, 0x49, 0x45, 0x4e,
+ 0x44, 0xae, 0x42, 0x60, 0x82, };
+
+static const unsigned char data_cgi_sensors[] __attribute__ ((aligned (2))) = {
+ /* /cgi/sensors */
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0,
+0,
+ 0x69, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e,
+ 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x23, 0x20, 0xa, 0x74, 0x20,
+ 0x3c, 0x68, 0x31, 0x3e, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72,
+ 0x73, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e,
+ 0x20, 0x3c, 0x75, 0x6c, 0x3e, 0xa, 0x63, 0x20, 0x61, 0xa,
+ 0x74, 0x20, 0x3c, 0x2f, 0x75, 0x6c, 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_processes[] __attribute__ ((aligned (2))) = {
+ /* /cgi/processes */
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0,
+0,
+ 0x69, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e,
+ 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x23, 0x20, 0xa, 0x74, 0x20,
+ 0x3c, 0x68, 0x31, 0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d,
+ 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 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,
+ 0x49, 0x44, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68,
+ 0x3e, 0x4e, 0x61, 0x6d, 0x65, 0x3c, 0x2f, 0x74, 0x68, 0x3e,
+ 0x3c, 0x74, 0x68, 0x3e, 0x49, 0x64, 0x6c, 0x65, 0x20, 0x68,
+ 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68,
+ 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x53, 0x69, 0x67, 0x6e, 0x61,
+ 0x6c, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x3c,
+ 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54, 0x43,
+ 0x50, 0x2f, 0x49, 0x50, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c,
+ 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x20, 0x3c, 0x2f,
+ 0x74, 0x72, 0x3e, 0xa, 0x63, 0x20, 0x63, 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_cgi_tcp[] __attribute__ ((aligned (2))) = {
+ /* /cgi/tcp */
+ 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0,
+0,
+ 0x69, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e,
+ 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x23, 0x20, 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, 0x20, 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, 0x20, 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_header_html[] __attribute__ ((aligned (2))) = {
+ /* /header.html */
+ 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 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, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c,
+ 0xd, 0xa, 0xd, 0xa, 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, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
+ 0xa, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x43, 0x6f,
+ 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x2f, 0x20, 0x75, 0x49,
+ 0x50, 0x20, 0x6f, 0x6e, 0x20, 0x4d, 0x53, 0x50, 0x34, 0x33,
+ 0x30, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x2d, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65,
+ 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa,
+ 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f,
+ 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x65, 0x30, 0x65, 0x30,
+ 0x65, 0x30, 0x22, 0x20, 0x74, 0x65, 0x78, 0x74, 0x3d, 0x22,
+ 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22, 0x3e, 0xa, 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, 0x3c, 0x74, 0x72, 0x20, 0x76,
+ 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70,
+ 0x22, 0x3e, 0xa, 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, 0x3c, 0x62, 0x72, 0x3e, 0xa, 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, 0x3c,
+ 0x62, 0x72, 0x3e, 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d,
+ 0x22, 0x2f, 0x76, 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d, 0x6c,
+ 0x22, 0x3e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20,
+ 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e,
+ 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c,
+ 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63,
+ 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0x22, 0x3e, 0x4e, 0x65,
+ 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e,
+ 0x9, 0x9, 0x9, 0xa, 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, 0x50,
+ 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f,
+ 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72,
+ 0x3e, 0x9, 0x9, 0x9, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x73,
+ 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x22, 0x3e, 0x53, 0x65,
+ 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
+ 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x9, 0x9,
+ 0x9, 0xa, 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_404_html[] __attribute__ ((aligned (2))) = {
+ /* /404.html */
+ 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x34,
+ 0x30, 0x34, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f,
+ 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0xd, 0xa, 0x53,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e,
+ 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31,
+ 0x2e, 0x31, 0x20, 0x28, 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, 0x43,
+ 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70,
+ 0x65, 0x3a, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74,
+ 0x6d, 0x6c, 0xd, 0xa, 0xd, 0xa, 0x3c, 0x68, 0x74, 0x6d,
+ 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x62, 0x6f, 0x64, 0x79,
+ 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3d, 0x22,
+ 0x77, 0x68, 0x69, 0x74, 0x65, 0x22, 0x3e, 0xa, 0x20, 0x20,
+ 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e,
+ 0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 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, 0xa, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33, 0x3e, 0x47, 0x6f, 0x20,
+ 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f,
+ 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65, 0x3c, 0x2f, 0x61, 0x3e,
+ 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2e, 0x3c,
+ 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c,
+ 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20,
+ 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c,
+ 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, };
+
+static const unsigned char data_index_html[] __attribute__ ((aligned (2))) = {
+ /* /index.html */
+ 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 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, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c,
+ 0xd, 0xa, 0xd, 0xa, 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, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
+ 0xa, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x43, 0x6f,
+ 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x2f, 0x20, 0x75, 0x49,
+ 0x50, 0x20, 0x6f, 0x6e, 0x20, 0x4d, 0x53, 0x50, 0x34, 0x33,
+ 0x30, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x2d, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65,
+ 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa,
+ 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f,
+ 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x65, 0x30, 0x65, 0x30,
+ 0x65, 0x30, 0x22, 0x20, 0x74, 0x65, 0x78, 0x74, 0x3d, 0x22,
+ 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22, 0x3e, 0xa, 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, 0x3c, 0x74, 0x72, 0x20, 0x76,
+ 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70,
+ 0x22, 0x3e, 0xa, 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, 0x3c, 0x62, 0x72, 0x3e, 0xa, 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, 0x3c,
+ 0x62, 0x72, 0x3e, 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d,
+ 0x22, 0x2f, 0x76, 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d, 0x6c,
+ 0x22, 0x3e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20,
+ 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e,
+ 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c,
+ 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63,
+ 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0x22, 0x3e, 0x4e, 0x65,
+ 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e,
+ 0x9, 0x9, 0x9, 0xa, 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, 0x50,
+ 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f,
+ 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72,
+ 0x3e, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d,
+ 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x73, 0x65, 0x6e, 0x73,
+ 0x6f, 0x72, 0x73, 0x22, 0x3e, 0x53, 0x65, 0x6e, 0x73, 0x6f,
+ 0x72, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e,
+ 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x9, 0x9, 0x9, 0x20, 0x20,
+ 0x20, 0x20, 0xa, 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
+ 0x74, 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x31, 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, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x3c, 0x2f,
+ 0x61, 0x3e, 0x20, 0x2f, 0x20, 0x3c, 0x61, 0xa, 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, 0x75, 0x69,
+ 0x70, 0x2f, 0x22, 0x3e, 0x75, 0x49, 0x50, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x20, 0x6f, 0x6e, 0x20, 0x4d, 0x53, 0x50, 0x34, 0x33,
+ 0x30, 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0xa, 0x3c, 0x70, 0x3e,
+ 0xa, 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, 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, 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, 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, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
+ 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x6f, 0x6e, 0x20, 0x61, 0x20,
+ 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x20, 0x3c, 0x61, 0xa, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a,
+ 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x6e, 0x66, 0x2e,
+ 0x66, 0x75, 0x2d, 0x62, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x2e,
+ 0x64, 0x65, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x2f, 0x61, 0x67,
+ 0x2d, 0x74, 0x65, 0x63, 0x68, 0x2f, 0x65, 0x73, 0x62, 0x2f,
+ 0x65, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x2f, 0x22, 0x3e,
+ 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0xa, 0x62, 0x6f, 0x61,
+ 0x72, 0x64, 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x64, 0x65, 0x76,
+ 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20,
+ 0x3c, 0x61, 0xa, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68,
+ 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e,
+ 0x69, 0x6e, 0x66, 0x2e, 0x66, 0x75, 0x2d, 0x62, 0x65, 0x72,
+ 0x6c, 0x69, 0x6e, 0x2e, 0x64, 0x65, 0x2f, 0x69, 0x6e, 0x73,
+ 0x74, 0x2f, 0x61, 0x67, 0x2d, 0x74, 0x65, 0x63, 0x68, 0x2f,
+ 0x22, 0x3e, 0x74, 0x68, 0x65, 0x20, 0x43, 0x53, 0x54, 0x20,
+ 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3c, 0x2f, 0x61, 0x3e, 0x20,
+ 0x61, 0x74, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77,
+ 0x77, 0x77, 0x2e, 0x66, 0x75, 0x2d, 0x62, 0x65, 0x72, 0x6c,
+ 0x69, 0x6e, 0x2e, 0x64, 0x65, 0x22, 0x3e, 0x46, 0x55, 0x20,
+ 0x42, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x3c, 0x2f, 0x61, 0x3e,
+ 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x6e, 0x73,
+ 0x6f, 0x72, 0x20, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x20, 0x69,
+ 0x73, 0xa, 0x65, 0x71, 0x75, 0x69, 0x70, 0x70, 0x65, 0x64,
+ 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x54, 0x49,
+ 0x20, 0x4d, 0x53, 0x50, 0x34, 0x33, 0x30, 0x20, 0x6d, 0x69,
+ 0x63, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c,
+ 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x32, 0x30,
+ 0x34, 0x38, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6f,
+ 0x66, 0x20, 0x52, 0x41, 0x4d, 0x20, 0x61, 0x6e, 0x64, 0x20,
+ 0x36, 0x30, 0xa, 0x6b, 0x69, 0x6c, 0x6f, 0x62, 0x79, 0x74,
+ 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x6c, 0x61, 0x73,
+ 0x68, 0x20, 0x52, 0x4f, 0x4d, 0x2c, 0x20, 0x61, 0x73, 0x20,
+ 0x77, 0x65, 0x6c, 0x6c, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20,
+ 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20,
+ 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x2e, 0x20, 0x54,
+ 0x68, 0x65, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73,
+ 0xa, 0x63, 0x61, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x73, 0x75,
+ 0x72, 0x65, 0x20, 0x76, 0x69, 0x62, 0x72, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x2c, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x65, 0x72,
+ 0x61, 0x74, 0x75, 0x72, 0x65, 0x2c, 0x20, 0x49, 0x52, 0x2d,
+ 0x6c, 0x69, 0x67, 0x68, 0x74, 0x2c, 0x20, 0x73, 0x6f, 0x75,
+ 0x6e, 0x64, 0x2c, 0x20, 0x74, 0x69, 0x6c, 0x74, 0x20, 0x61,
+ 0x6e, 0x64, 0x20, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
+ 0xa, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0xa, 0x3c, 0x68, 0x32,
+ 0x3e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20,
+ 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69,
+ 0x74, 0x79, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0x9, 0x9, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x54,
+ 0x68, 0x65, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20,
+ 0x62, 0x6f, 0x61, 0x72, 0x64, 0x20, 0x69, 0x73, 0x20, 0x64,
+ 0x69, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, 0x63, 0x6f,
+ 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72,
+ 0x6e, 0x65, 0x74, 0x20, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67,
+ 0x68, 0x20, 0x74, 0x68, 0x65, 0xa, 0x52, 0x53, 0x32, 0x33,
+ 0x32, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63,
+ 0x65, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62,
+ 0x6f, 0x61, 0x72, 0x64, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20,
+ 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x61, 0xa, 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, 0x75, 0x69,
+ 0x70, 0x2f, 0x22, 0x3e, 0x75, 0x49, 0x50, 0x20, 0x54, 0x43,
+ 0x50, 0x2f, 0x49, 0x50, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b,
+ 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x6f, 0x6e, 0x20, 0x77, 0x68,
+ 0x69, 0x63, 0x68, 0xa, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b,
+ 0x69, 0x20, 0x69, 0x73, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64,
+ 0x2e, 0xa, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x9, 0x9, 0x9,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c, 0x68, 0x32,
+ 0x3e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x64,
+ 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x3c, 0x2f, 0x68, 0x32,
+ 0x3e, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x49, 0x6e, 0x20, 0x61,
+ 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f,
+ 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74,
+ 0x68, 0x69, 0x73, 0x20, 0x77, 0x65, 0x62, 0x20, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x2c, 0x20, 0x74, 0x68, 0x69, 0x73,
+ 0x20, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x65, 0x6e,
+ 0x73, 0x6f, 0x72, 0x20, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x20,
+ 0x61, 0x6c, 0x73, 0x6f, 0xa, 0x68, 0x61, 0x73, 0x20, 0x61,
+ 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x43,
+ 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x64, 0x65, 0x73,
+ 0x6b, 0x74, 0x6f, 0x70, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20,
+ 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x6d,
+ 0x6f, 0x74, 0x65, 0x6c, 0x79, 0x20, 0x61, 0x63, 0x63, 0x65,
+ 0x73, 0x73, 0x65, 0x64, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67,
+ 0x20, 0x56, 0x4e, 0x43, 0x2c, 0xa, 0x64, 0x69, 0x72, 0x65,
+ 0x63, 0x74, 0x6c, 0x79, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20,
+ 0x79, 0x6f, 0x75, 0x72, 0x20, 0x77, 0x65, 0x62, 0x20, 0x62,
+ 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x2e, 0x20, 0x42, 0x65,
+ 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x20,
+ 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74,
+ 0x73, 0x20, 0x6f, 0x66, 0xa, 0x74, 0x68, 0x65, 0x20, 0x73,
+ 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2c, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x64,
+ 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x20, 0x69, 0x73, 0x20,
+ 0x76, 0x65, 0x72, 0x79, 0x20, 0x73, 0x6d, 0x61, 0x6c, 0x6c,
+ 0x20, 0x28, 0x31, 0x32, 0x30, 0x78, 0x35, 0x36, 0x20, 0x70,
+ 0x69, 0x78, 0x65, 0x6c, 0x73, 0x29, 0x2e, 0x20, 0x53, 0x65,
+ 0x65, 0x20, 0x74, 0x68, 0x65, 0xa, 0x3c, 0x61, 0x20, 0x68,
+ 0x72, 0x65, 0x66, 0x3d, 0x22, 0x76, 0x6e, 0x63, 0x2e, 0x68,
+ 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x76, 0x69, 0x72, 0x74, 0x75,
+ 0x61, 0x6c, 0x20, 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70,
+ 0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x70, 0x61, 0x67, 0x65, 0x2e,
+ 0xa, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x3c, 0x63, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x3e, 0x3c, 0x69, 0x6d, 0x67, 0x20, 0x73,
+ 0x72, 0x63, 0x3d, 0x22, 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x73,
+ 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e,
+ 0x70, 0x6e, 0x67, 0x22, 0x3e, 0x3c, 0x2f, 0x63, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x3e, 0xa, 0x3c, 0x68, 0x32, 0x3e, 0x4d,
+ 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x20, 0x75, 0x73, 0x61, 0x67,
+ 0x65, 0x3c, 0x2f, 0x68, 0x32, 0x3e, 0xa, 0x3c, 0x70, 0x3e,
+ 0xa, 0x54, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x72,
+ 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20,
+ 0x4d, 0x53, 0x50, 0x34, 0x33, 0x30, 0x20, 0x73, 0x79, 0x73,
+ 0x74, 0x65, 0x6d, 0x20, 0x75, 0x73, 0x65, 0x73, 0x20, 0x6f,
+ 0x6e, 0x6c, 0x79, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20,
+ 0x31, 0x38, 0x30, 0x30, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73,
+ 0x20, 0x52, 0x41, 0x4d, 0x2c, 0x20, 0x6f, 0x66, 0xa, 0x77,
+ 0x68, 0x69, 0x63, 0x68, 0x20, 0x32, 0x38, 0x30, 0x20, 0x62,
+ 0x79, 0x74, 0x65, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73,
+ 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x73,
+ 0x63, 0x72, 0x65, 0x65, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20,
+ 0x33, 0x30, 0x30, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20,
+ 0x66, 0x6f, 0x72, 0xa, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72,
+ 0x6b, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x2e,
+ 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20,
+ 0x61, 0x6e, 0x64, 0x20, 0x77, 0x65, 0x62, 0x20, 0x70, 0x61,
+ 0x67, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x74,
+ 0x6f, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68,
+ 0x65, 0xa, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x63, 0x6f, 0x6e,
+ 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x27, 0x73, 0x20,
+ 0x6f, 0x6e, 0x2d, 0x63, 0x68, 0x69, 0x70, 0x20, 0x66, 0x6c,
+ 0x61, 0x73, 0x68, 0x20, 0x52, 0x4f, 0x4d, 0x2e, 0xa, 0x3c,
+ 0x2f, 0x70, 0x3e, 0xa, 0x3c, 0x70, 0x20, 0x61, 0x6c, 0x69,
+ 0x67, 0x6e, 0x3d, 0x22, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22,
+ 0x3e, 0xa, 0x2f, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77,
+ 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65,
+ 0x2f, 0x25, 0x37, 0x65, 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x22,
+ 0x3e, 0x41, 0x64, 0x61, 0x6d, 0x20, 0x44, 0x75, 0x6e, 0x6b,
+ 0x65, 0x6c, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x2f,
+ 0x70, 0x3e, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c,
+ 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x2f, 0x74, 0x61, 0x62,
+ 0x6c, 0x65, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c,
+ 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68,
+ 0x74, 0x6d, 0x6c, 0x3e, };
+
+static const unsigned char data_vnc_html[] __attribute__ ((aligned (2))) = {
+ /* /vnc.html */
+ 0x2f, 0x76, 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 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, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c,
+ 0xd, 0xa, 0xd, 0xa, 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, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e,
+ 0xa, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x43, 0x6f,
+ 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20, 0x2f, 0x20, 0x75, 0x49,
+ 0x50, 0x20, 0x6f, 0x6e, 0x20, 0x4d, 0x53, 0x50, 0x34, 0x33,
+ 0x30, 0x20, 0x64, 0x65, 0x6d, 0x6f, 0x2d, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65,
+ 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa,
+ 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f,
+ 0x6c, 0x6f, 0x72, 0x3d, 0x22, 0x23, 0x65, 0x30, 0x65, 0x30,
+ 0x65, 0x30, 0x22, 0x20, 0x74, 0x65, 0x78, 0x74, 0x3d, 0x22,
+ 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x22, 0x3e, 0xa, 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, 0x3c, 0x74, 0x72, 0x20, 0x76,
+ 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22, 0x74, 0x6f, 0x70,
+ 0x22, 0x3e, 0xa, 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, 0x3c, 0x62, 0x72, 0x3e, 0xa, 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, 0x3c,
+ 0x62, 0x72, 0x3e, 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d,
+ 0x22, 0x2f, 0x76, 0x6e, 0x63, 0x2e, 0x68, 0x74, 0x6d, 0x6c,
+ 0x22, 0x3e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20,
+ 0x64, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e,
+ 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c,
+ 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63,
+ 0x67, 0x69, 0x2f, 0x74, 0x63, 0x70, 0x22, 0x3e, 0x4e, 0x65,
+ 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e,
+ 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61,
+ 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e,
+ 0x9, 0x9, 0x9, 0xa, 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, 0x50,
+ 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f,
+ 0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72,
+ 0x3e, 0x9, 0x9, 0x9, 0xa, 0x3c, 0x61, 0x20, 0x68, 0x72,
+ 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x63, 0x67, 0x69, 0x2f, 0x73,
+ 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x22, 0x3e, 0x53, 0x65,
+ 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
+ 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0x9, 0x9,
+ 0x9, 0xa, 0x3c, 0x74, 0x64, 0x20, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
+ 0x22, 0x3e, 0xa, 0x3c, 0x68, 0x31, 0x3e, 0x56, 0x69, 0x72,
+ 0x74, 0x75, 0x61, 0x6c, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x20, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70,
+ 0x3c, 0x2f, 0x68, 0x31, 0x3e, 0x9, 0x9, 0x9, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa,
+ 0x54, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6d, 0x61, 0x6c, 0x6c,
+ 0x20, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x62, 0x6f,
+ 0x61, 0x72, 0x64, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6e, 0x6f,
+ 0x20, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x20, 0x6f,
+ 0x72, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6b, 0x69,
+ 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x64, 0x69, 0x73, 0x70,
+ 0x6c, 0x61, 0x79, 0x2c, 0x20, 0x62, 0x75, 0x74, 0xa, 0x69,
+ 0x74, 0x20, 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x20, 0x69, 0x73,
+ 0x20, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20,
+ 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b,
+ 0x69, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x27, 0x73,
+ 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x64,
+ 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0xa, 0x75, 0x73, 0x69,
+ 0x6e, 0x67, 0x20, 0x56, 0x4e, 0x43, 0x2e, 0x3c, 0x2f, 0x70,
+ 0x3e, 0xa, 0x9, 0x9, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0xa, 0x3c, 0x68, 0x33, 0x3e, 0x4a, 0x61, 0x76, 0x61,
+ 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x3c, 0x2f, 0x68,
+ 0x33, 0x3e, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x54, 0x68, 0x65,
+ 0x20, 0x4a, 0x61, 0x76, 0x61, 0x20, 0x63, 0x6c, 0x69, 0x65,
+ 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x20, 0x69,
+ 0x74, 0x20, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65,
+ 0x20, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
+ 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x69, 0x72, 0x74, 0x75,
+ 0x61, 0x6c, 0xa, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69,
+ 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x64,
+ 0x69, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x20, 0x66, 0x72,
+ 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x65, 0x62,
+ 0x20, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x2e, 0x20,
+ 0x49, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+ 0x73, 0xa, 0x4a, 0x61, 0x76, 0x61, 0x20, 0x74, 0x6f, 0x20,
+ 0x62, 0x65, 0x20, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20,
+ 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x2e, 0xa, 0x3c,
+ 0x2f, 0x70, 0x3e, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x57, 0x68,
+ 0x65, 0x6e, 0x20, 0x61, 0x73, 0x6b, 0x65, 0x64, 0x20, 0x66,
+ 0x6f, 0x72, 0x20, 0x61, 0x20, 0x70, 0x61, 0x73, 0x73, 0x77,
+ 0x6f, 0x72, 0x64, 0x2c, 0x20, 0x6a, 0x75, 0x73, 0x74, 0x20,
+ 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x22, 0x4f, 0x6b, 0x22, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6f,
+ 0x6e, 0xa, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20,
+ 0x74, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x20,
+ 0x61, 0x6e, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f,
+ 0x72, 0x64, 0x2e, 0xa, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x3c,
+ 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x3c, 0x62,
+ 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
+ 0x23, 0x22, 0x20, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x63, 0x6b,
+ 0x3d, 0x27, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x6f,
+ 0x70, 0x65, 0x6e, 0x28, 0x22, 0x76, 0x6e, 0x63, 0x6a, 0x61,
+ 0x76, 0x61, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x2c, 0xa,
+ 0x22, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x22, 0x2c,
+ 0xa, 0x22, 0x74, 0x6f, 0x6f, 0x6c, 0x62, 0x61, 0x72, 0x3d,
+ 0x6e, 0x6f, 0x2c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x3d, 0x6e, 0x6f, 0x2c, 0x73, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x3d, 0x79, 0x65, 0x73, 0x2c, 0x6d, 0x65, 0x6e, 0x75,
+ 0x62, 0x61, 0x72, 0x3d, 0x6e, 0x6f, 0x2c, 0x73, 0x63, 0x72,
+ 0x6f, 0x6c, 0x6c, 0x62, 0x61, 0x72, 0x73, 0x3d, 0x79, 0x65,
+ 0x73, 0x2c, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x61, 0x62, 0x6c,
+ 0x65, 0x3d, 0x79, 0x65, 0x73, 0x22, 0x29, 0x3b, 0x27, 0x3e,
+ 0x43, 0x6c, 0x69, 0x63, 0x6b, 0xa, 0x68, 0x65, 0x72, 0x65,
+ 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68,
+ 0x20, 0x69, 0x6e, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x77, 0x69,
+ 0x6e, 0x64, 0x6f, 0x77, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f,
+ 0x62, 0x3e, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
+ 0x3e, 0xa, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x3c, 0x63, 0x65,
+ 0x6e, 0x74, 0x65, 0x72, 0x3e, 0x3c, 0x62, 0x3e, 0x3c, 0x61,
+ 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x76, 0x6e, 0x63,
+ 0x6a, 0x61, 0x76, 0x61, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22,
+ 0x3e, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x20, 0x68, 0x65, 0x72,
+ 0x65, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63,
+ 0x68, 0x20, 0x69, 0x6e, 0xa, 0x74, 0x68, 0x69, 0x73, 0x20,
+ 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x3c, 0x2f, 0x61, 0x3e,
+ 0x3c, 0x2f, 0x62, 0x3e, 0xa, 0x3c, 0x2f, 0x63, 0x65, 0x6e,
+ 0x74, 0x65, 0x72, 0x3e, 0xa, 0xa, 0x3c, 0x70, 0x3e, 0xa,
+ 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+ 0x20, 0x63, 0x61, 0x6e, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20,
+ 0x68, 0x61, 0x76, 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x63,
+ 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+ 0x61, 0x74, 0x20, 0x61, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e,
+ 0x20, 0x49, 0x6e, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20,
+ 0x74, 0x6f, 0x20, 0x61, 0x76, 0x6f, 0x69, 0x64, 0xa, 0x6d,
+ 0x6f, 0x6e, 0x6f, 0x70, 0x6f, 0x6c, 0x69, 0x7a, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65,
+ 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x2c, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x75,
+ 0x73, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x6c,
+ 0x79, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20,
+ 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0xa, 0x74, 0x68, 0x65,
+ 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x66,
+ 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74,
+ 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x2e, 0xa, 0x3c, 0x2f,
+ 0x70, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c, 0x68,
+ 0x33, 0x3e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64,
+ 0x20, 0x56, 0x4e, 0x43, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e,
+ 0x74, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x3c, 0x70, 0x3e,
+ 0xa, 0x49, 0x66, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x64, 0x6f,
+ 0x6e, 0x27, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x4a,
+ 0x61, 0x76, 0x61, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c,
+ 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x63,
+ 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61,
+ 0x64, 0x20, 0x61, 0x20, 0x66, 0x72, 0x65, 0x65, 0x20, 0x56,
+ 0x4e, 0x43, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0xa,
+ 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x66, 0x72,
+ 0x6f, 0x6d, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
+ 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77,
+ 0x77, 0x77, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x76, 0x6e, 0x63,
+ 0x2e, 0x63, 0x6f, 0x6d, 0x22, 0x3e, 0x52, 0x65, 0x61, 0x6c,
+ 0x56, 0x4e, 0x43, 0x3c, 0x2f, 0x61, 0x3e, 0x2e, 0x20, 0x53,
+ 0x74, 0x61, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0xa, 0x70,
+ 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x77, 0x69, 0x74,
+ 0x68, 0x20, 0x3c, 0x62, 0x3e, 0x31, 0x39, 0x33, 0x2e, 0x31,
+ 0x30, 0x2e, 0x36, 0x37, 0x2e, 0x31, 0x35, 0x30, 0x3a, 0x30,
+ 0x3c, 0x2f, 0x62, 0x3e, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2e,
+ 0xa, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20,
+ 0xa, 0x3c, 0x68, 0x33, 0x3e, 0x55, 0x6e, 0x69, 0x78, 0x2f,
+ 0x58, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x3c,
+ 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x3c, 0x70, 0x3e, 0xa, 0x55,
+ 0x6e, 0x69, 0x78, 0x2f, 0x58, 0x20, 0x56, 0x4e, 0x43, 0x20,
+ 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x6e, 0x65,
+ 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x74, 0x74,
+ 0x3e, 0x2d, 0x62, 0x67, 0x72, 0x32, 0x33, 0x33, 0x3c, 0x2f,
+ 0x74, 0x74, 0x3e, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+ 0x20, 0x74, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x20,
+ 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0xa, 0x66, 0x6f,
+ 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x3a, 0xa, 0x3c, 0x2f, 0x70,
+ 0x3e, 0xa, 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e,
+ 0x3c, 0x74, 0x74, 0x3e, 0x76, 0x6e, 0x63, 0x76, 0x69, 0x65,
+ 0x77, 0x65, 0x72, 0x20, 0x2d, 0x62, 0x67, 0x72, 0x32, 0x33,
+ 0x33, 0x20, 0x31, 0x39, 0x33, 0x2e, 0x31, 0x30, 0x2e, 0x36,
+ 0x37, 0x2e, 0x31, 0x35, 0x30, 0x3a, 0x30, 0x3c, 0x2f, 0x74,
+ 0x74, 0x3e, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72,
+ 0x3e, 0xa, 0x3c, 0x70, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e,
+ 0x3d, 0x22, 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, 0xa,
+ 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, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x3c, 0x2f,
+ 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa,
+ 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, 0xa, };
+
+static const unsigned char data_vncjava_html[] __attribute__ ((aligned (2))) = {
+ /* /vncjava.html */
+ 0x2f, 0x76, 0x6e, 0x63, 0x6a, 0x61, 0x76, 0x61, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 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, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c,
+ 0xd, 0xa, 0xd, 0xa, 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, 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, 0x56, 0x69, 0x72, 0x74, 0x75,
+ 0x61, 0x6c, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69,
+ 0x20, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x3c, 0x2f, 0x74,
+ 0x69, 0x74, 0x6c, 0x65, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f,
+ 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c,
+ 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20,
+ 0x3c, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x61, 0x70, 0x70, 0x6c,
+ 0x65, 0x74, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x3d, 0x22, 0x76,
+ 0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x2e, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x22, 0x20, 0x61, 0x72, 0x63, 0x68,
+ 0x69, 0x76, 0x65, 0x3d, 0x22, 0x76, 0x6e, 0x63, 0x76, 0x69,
+ 0x65, 0x77, 0x65, 0x72, 0x2e, 0x6a, 0x61, 0x72, 0x22, 0xa,
+ 0x9, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64,
+ 0x74, 0x68, 0x3d, 0x22, 0x32, 0x38, 0x30, 0x22, 0x20, 0x68,
+ 0x65, 0x69, 0x67, 0x68, 0x74, 0x3d, 0x22, 0x31, 0x36, 0x30,
+ 0x22, 0x3e, 0xa, 0x9, 0x3c, 0x70, 0x61, 0x72, 0x61, 0x6d,
+ 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x50, 0x4f, 0x52,
+ 0x54, 0x22, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3d, 0x22,
+ 0x35, 0x39, 0x30, 0x30, 0x22, 0x3e, 0xa, 0x9, 0x20, 0x20,
+ 0x4a, 0x61, 0x76, 0x61, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20,
+ 0x62, 0x65, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
+ 0x20, 0x69, 0x6e, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, 0x77,
+ 0x65, 0x62, 0x20, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72,
+ 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20,
+ 0x74, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0xa, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x2f, 0x61, 0x70, 0x70,
+ 0x6c, 0x65, 0x74, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c,
+ 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x3e, 0xa, 0x20,
+ 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c,
+ 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, };
+
+static const unsigned char data_vncviewer_jar[] __attribute__ ((aligned (2))) = {
+ /* /vncviewer.jar */
+ 0x2f, 0x76, 0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x2e, 0x6a, 0x61, 0x72, 0,
+0,
+ 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x32,
+ 0x30, 0x30, 0x20, 0x4f, 0x4b, 0xd, 0xa, 0x53, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
+ 0x6b, 0x69, 0x2f, 0x70, 0x72, 0x65, 0x2d, 0x31, 0x2e, 0x31,
+ 0x20, 0x28, 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, 0x43, 0x6f, 0x6e,
+ 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a,
+ 0x20, 0x74, 0x65, 0x78, 0x74, 0x2f, 0x70, 0x6c, 0x61, 0x69,
+ 0x6e, 0xd, 0xa, 0xd, 0xa, 0x50, 0x4b, 0x3, 0x4, 0xa,
+ 00, 00, 00, 00, 00, 0x16, 0xa9, 0xda, 0x2c, 00,
+ 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
+ 00, 0x9, 00, 00, 00, 0x4d, 0x45, 0x54, 0x41, 0x2d,
+ 0x49, 0x4e, 0x46, 0x2f, 0x50, 0x4b, 0x3, 0x4, 0xa, 00,
+ 00, 00, 00, 00, 0x16, 0xa9, 0xda, 0x2c, 0x1e, 0xb9,
+ 0xd9, 0x17, 0x2d, 00, 00, 00, 0x2d, 00, 00, 00,
+ 0x14, 00, 00, 00, 0x4d, 0x45, 0x54, 0x41, 0x2d, 0x49,
+ 0x4e, 0x46, 0x2f, 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53,
+ 0x54, 0x2e, 0x4d, 0x46, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
+ 0x73, 0x74, 0x2d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x3a, 0x20, 0x31, 0x2e, 0x30, 0xa, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x2d, 0x42, 0x79, 0x3a, 0x20, 0x30, 0x2e,
+ 0x39, 0x32, 0x2d, 0x67, 0x63, 0x63, 0xa, 0xa, 00, 0x50,
+ 0x4b, 0x3, 0x4, 0xa, 00, 00, 00, 0x8, 00, 0xe3,
+ 0xa5, 0xda, 0x2c, 0x5f, 0xeb, 0x71, 0x9a, 0xd7, 0xd, 00,
+ 00, 0x8, 0x19, 00, 00, 0xf, 00, 00, 00, 0x76,
+ 0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x2e, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x8d, 0x57, 0xb, 0x7c, 0x5c, 0x65,
+ 0x95, 0xff, 0x9f, 0xcc, 0x24, 0xf7, 0xe6, 0xf6, 0xb6, 0x99,
+ 0x4e, 0x9b, 0xb4, 0xa1, 0x25, 0xc, 0x2d, 0xa5, 0xc9, 0xa4,
+ 0x69, 0xa4, 0x90, 0x82, 0xd, 0x6d, 0x69, 0xd2, 0xa6, 0x1d,
+ 0x48, 0x93, 0x90, 0xf4, 0x41, 0x5a, 0x1e, 0xbd, 0x99, 0xb9,
+ 0x49, 0xa6, 0x9d, 0xdc, 0x19, 0xee, 0xdc, 0x49, 0x9a, 0xf2,
+ 0x70, 0x15, 0x5d, 0x5d, 0xb5, 0x2e, 0xec, 0xaa, 0xbb, 0xc5,
+ 0x67, 0x5, 0xd, 0x50, 0x94, 0x16, 0x9a, 0x69, 0x35, 0x55,
+ 0x4, 0x56, 0x50, 0xc4, 0x15, 0x4, 0x77, 0x75, 0x57, 0x59,
+ 0x16, 0x9f, 0xab, 0xeb, 0x1b, 0xd7, 0x7d, 0x9, 0x9e, 0x73,
+ 0xef, 0xbc, 0x92, 0xe, 0xbf, 0x9f, 0xc9, 0x6f, 0xbe, 0xef,
+ 0xbb, 0xe7, 0x3b, 0xe7, 0x7c, 0xe7, 0xfd, 0x9d, 0xef, 0xd9,
+ 0xd7, 0xbf, 0xf0, 0x25, 0xf8, 0xd0, 0x42, 0xef, 0xd2, 0x30,
+ 0x89, 0x7, 0xaa, 0x71, 0x18, 0xf, 0xca, 0xf0, 0x90, 0xc6,
+ 0xc3, 0x9, 0x5, 0xf, 0x6b, 0xa8, 0xf4, 0xc0, 0x9f, 0x55,
+ 0xf0, 0x39, 0xd, 0x2a, 0x1e, 0x91, 0x8f, 0x93, 0xb2, 0x3a,
+ 0xa5, 0xe0, 0x51, 0xd, 0xba, 0xb7, 0xfd, 0x98, 0x86, 0xd3,
+ 0x98, 0x56, 0x90, 0xd5, 0x10, 0xf0, 0x20, 0x67, 0x14, 0x9c,
+ 0xd5, 0xb0, 0x8, 0x9f, 0x57, 0xf0, 0x5, 0x15, 0x33, 0x1a,
+ 0x6a, 0x71, 0x4e, 0xe0, 0x5f, 0xd4, 0xf0, 0x25, 0x3c, 0x2e,
+ 0xe8, 0x5f, 0x56, 0xf0, 0x84, 0x86, 0x65, 0x82, 0xbe, 0xc,
+ 0x4f, 0xca, 0xf0, 0x94, 0xf0, 0xfb, 0x7, 0x39, 0xfb, 0x2b,
+ 0x32, 0x3c, 0xad, 0xe0, 0x19, 0xd, 0x2b, 0xf0, 0x55, 0xd9,
+ 0xfb, 0x9a, 0xc, 0xcf, 0xa, 0xdd, 0xd7, 0x85, 0xc3, 0x73,
+ 0xb2, 0xf1, 0xd, 0x5, 0xff, 0xa8, 0xe1, 0x9b, 0x78, 0x5e,
+ 0x86, 0x17, 0x84, 0xe4, 0x5b, 0x82, 0xf5, 0xa2, 0xc, 0x2f,
+ 0x69, 0xf8, 0x36, 0xfe, 0x49, 0xc1, 0x3f, 0x2b, 0xf8, 0x8e,
+ 0x9c, 0xfb, 0x5d, 0x19, 0xfe, 0x45, 0xc3, 0x65, 0xf8, 0x57,
+ 0x59, 0x7d, 0x4f, 0x56, 0xdf, 0xaf, 0xc6, 0xcb, 0xf8, 0x37,
+ 0x5, 0xaf, 0x68, 0xb8, 0xa, 0xf, 0xa8, 0xf8, 0x77, 0x99,
+ 0x5f, 0xad, 0xe6, 0x9d, 0x1f, 0xc8, 0xea, 0x87, 0x2a, 0x7e,
+ 0x24, 0x1f, 0x3f, 0x96, 0xf, 0x66, 0xff, 0x13, 0xfc, 0x54,
+ 0xa8, 0xfe, 0x43, 0x86, 0x9f, 0xa9, 0xf8, 0xb9, 0xec, 0xfd,
+ 0xa7, 0x86, 0x5f, 0xe0, 0x97, 0xd5, 0x6c, 0xa6, 0x5f, 0x69,
+ 0xf8, 0x35, 0x7e, 0xa3, 0xe1, 0xb7, 0xf8, 0x9d, 0xc, 0xaf,
+ 0x89, 0xe9, 0x7e, 0x2f, 0xab, 0xff, 0x12, 0xbc, 0x3f, 0x68,
+ 0xf8, 0x6f, 0xfc, 0x8f, 0x20, 0xff, 0xaf, 0x8a, 0xff, 0x53,
+ 0xf1, 0xff, 0xa, 0xfe, 0xa8, 0xe2, 0x75, 0xd, 0xfd, 0x38,
+ 0xa7, 0xe2, 0xd, 0xd6, 0x8b, 0xa0, 0x12, 0x31, 0x6b, 0xaa,
+ 0x90, 0xc1, 0xa7, 0x92, 0x9f, 0xe9, 0xa8, 0x52, 0xa5, 0x2a,
+ 0x99, 0x15, 0x95, 0x54, 0x99, 0xab, 0x59, 0x4b, 0xd2, 0x58,
+ 0x3, 0x9a, 0x27, 0x9f, 0xba, 0xe0, 0xce, 0xaf, 0xa6, 0x5,
+ 0x54, 0xa3, 0x52, 0x40, 0xb8, 0x2c, 0x14, 0x48, 0x50, 0xa1,
+ 0x45, 0x2a, 0x2d, 0xd6, 0x30, 0x8a, 0x73, 0xec, 0x2b, 0xaa,
+ 0x55, 0xa9, 0x4e, 0x8, 0x97, 0xb0, 0x9b, 0x69, 0xa9, 0x46,
+ 0xf5, 0x74, 0x81, 0x4a, 0xcb, 0x58, 0x38, 0x5a, 0xae, 0xd2,
+ 0x85, 0x2a, 0x35, 0x68, 0x74, 0x11, 0x85, 0x64, 0xf3, 0x62,
+ 0x95, 0x56, 0x8, 0xc5, 0x4a, 0x85, 0x2e, 0x51, 0x68, 0x95,
+ 0x42, 0x97, 0x12, 0xfc, 0xa3, 0xc9, 0xb4, 0x43, 0x8, 0x76,
+ 0x1f, 0x34, 0xc6, 0x8d, 0xd6, 0x84, 0x61, 0x8d, 0xb4, 0xe,
+ 0x38, 0x76, 0xdc, 0x1a, 0x69, 0xe7, 0xbd, 0x54, 0xd2, 0xe6,
+ 0x3d, 0x8a, 0x10, 0x7c, 0xf6, 0xf0, 0x10, 0x41, 0xeb, 0xe6,
+ 0xa9, 0xcf, 0x4e, 0x3a, 0x49, 0xde, 0xad, 0xe6, 0xf5, 0xae,
+ 0x51, 0xdb, 0x34, 0x62, 0xb3, 0xc9, 0x3d, 0x18, 0x23, 0x28,
+ 0x23, 0x76, 0x3c, 0x36, 0x64, 0x8c, 0x10, 0x96, 0x7a, 0xdb,
+ 0xc6, 0x84, 0xd3, 0xba, 0x9d, 0x61, 0x1d, 0xc6, 0x48, 0xb7,
+ 0x31, 0x99, 0xcc, 0x38, 0x8c, 0x34, 0x6f, 0x28, 0xe3, 0x38,
+ 0x49, 0xab, 0xcf, 0xb0, 0xcc, 0x4, 0x21, 0x50, 0x44, 0x74,
+ 0x21, 0x8c, 0x10, 0x88, 0xc5, 0xd3, 0xd1, 0xa4, 0x65, 0x99,
+ 0x51, 0xa7, 0xc3, 0x45, 0x25, 0x2c, 0x2c, 0x62, 0x79, 0x20,
+ 0x46, 0x9b, 0x6f, 0x64, 0x9c, 0x51, 0xd3, 0x72, 0xe2, 0x51,
+ 0xc3, 0x49, 0xda, 0x84, 0xda, 0xee, 0x12, 0x40, 0x3c, 0x77,
+ 0x80, 0x48, 0x6d, 0x5a, 0xd1, 0x64, 0x8c, 0xf5, 0x4b, 0x13,
+ 0x2a, 0xf6, 0xb3, 0x66, 0x9a, 0xb5, 0xad, 0x8, 0x51, 0x47,
+ 0x92, 0x4e, 0x57, 0x32, 0x9a, 0xe1, 0x25, 0xed, 0x23, 0x54,
+ 0x5d, 0x1d, 0xb7, 0xe2, 0xce, 0x26, 0x56, 0xbf, 0xb1, 0x69,
+ 0xf, 0xdb, 0xa3, 0x33, 0x19, 0x33, 0x9, 0x35, 0xdd, 0x71,
+ 0xcb, 0xec, 0xc9, 0x8c, 0xd, 0x99, 0xf6, 0x2e, 0x63, 0x28,
+ 0xc1, 0x10, 0xbf, 0xa0, 0x31, 0x7a, 0x26, 0x15, 0x33, 0x1c,
+ 0xfe, 0xae, 0x6b, 0x2c, 0x55, 0xd8, 0x48, 0x8d, 0xc6, 0xa3,
+ 0xe9, 0x76, 0xe1, 0xe0, 0xb3, 0x33, 0x2c, 0x7f, 0x5d, 0x4e,
+ 0x9f, 0x2d, 0x56, 0x6c, 0x4b, 0x51, 0x48, 0xa6, 0xd3, 0xb6,
+ 0x1d, 0x8e, 0x9a, 0x29, 0x11, 0x97, 0x5, 0x58, 0x1a, 0x4b,
+ 0xba, 0xa6, 0x8e, 0x26, 0x13, 0x11, 0x66, 0x1f, 0x37, 0x12,
+ 0xf1, 0xb4, 0xab, 0xa, 0x41, 0x4f, 0x9b, 0x4e, 0x89, 0xd4,
+ 0x55, 0x46, 0xd4, 0x83, 0xaf, 0x2a, 0x39, 0x77, 0xdb, 0x38,
+ 0xf3, 0x6d, 0x2f, 0xf1, 0x4b, 0xef, 0xd0, 0x41, 0x3e, 0xb3,
+ 0xbd, 0x89, 0xf5, 0xaa, 0x4e, 0xb0, 0xd3, 0x73, 0x7a, 0xea,
+ 0x6c, 0x10, 0x7b, 0x32, 0xe5, 0x74, 0x4c, 0x3a, 0x26, 0x7f,
+ 0x2e, 0x69, 0xdc, 0xdf, 0x71, 0x7e, 0x2c, 0x88, 0xec, 0xb,
+ 0xc4, 0xad, 0x7d, 0x86, 0x6d, 0x8c, 0x99, 0x8e, 0x69, 0x33,
+ 0xea, 0xfc, 0x59, 00, 0xc2, 0xea, 0xc6, 0xf3, 0x9, 0xf7,
+ 0x35, 0x95, 0xb, 0x2c, 0x6d, 0xd8, 0x70, 0x8c, 0xc4, 0x36,
+ 0xdb, 0x76, 0x3d, 0x55, 0x86, 0x4c, 0xce, 0xd3, 0x6, 0x92,
+ 0x19, 0x3b, 0x6a, 0x76, 0xc5, 0xc5, 0xc2, 0xb, 0xc6, 0xad,
+ 0xe8, 0x78, 0xdc, 0x9c, 0x30, 0xed, 0xb5, 0x82, 0xac, 0xe3,
+ 0x6e, 0xdc, 0xa3, 0xe3, 0x7d, 0x78, 0xbf, 0x8e, 0xf, 0xe0,
+ 0xaf, 0x75, 0x1c, 0xc7, 0x3d, 0x84, 0x45, 0x65, 0x5c, 0xae,
+ 0xe3, 0xaf, 0xf0, 0x5e, 0x8e, 0xa2, 0xb9, 0xf1, 0xc9, 0x1c,
+ 0x68, 0xb5, 0x8e, 0xb7, 0xe3, 0x1d, 0x3a, 0x35, 0xa, 0x71,
+ 0x5d, 0xf9, 0x10, 0xd5, 0x71, 0x17, 0xde, 0xa9, 0x50, 0x93,
+ 0x4e, 0x61, 0x6a, 0x66, 0x39, 0x66, 0xc7, 0xa7, 0x8e, 0x77,
+ 0xe1, 0x2f, 0xf9, 0xe0, 0x2, 0xb4, 0x2b, 0x91, 0x9c, 0xc8,
+ 0x13, 0xde, 0x4d, 0x6b, 0x38, 0x58, 0xe6, 0x84, 0x2a, 0xeb,
+ 0xb5, 0xb5, 0x10, 0xd0, 0xa2, 0xc6, 0xa7, 0x75, 0xbc, 0x1b,
+ 0xef, 0x51, 0xa8, 0x45, 0xa7, 0xb5, 0xac, 0x13, 0xb5, 0xd2,
+ 0x5b, 0x8, 0xcb, 0xe6, 0xa, 0xd3, 0xc9, 0x21, 0xe1, 0xd8,
+ 0x46, 0xdc, 0x72, 0xd2, 0x3a, 0x5d, 0x86, 0x3b, 0x75, 0x5a,
+ 0x27, 0xc3, 0xe5, 0x74, 0x85, 0x8e, 0xbf, 0x17, 0x53, 0xdc,
+ 0x2b, 0x3a, 0x54, 0xb3, 0x95, 0x3a, 0xd, 0x6b, 0xdc, 0x48,
+ 0xcb, 0xe9, 0x6d, 0x3a, 0xad, 0xa7, 0x2b, 0x75, 0xba, 0x4a,
+ 0x86, 0xb7, 0xa, 0xef, 0xd, 0x32, 0xb4, 0xbb, 0xa6, 0x2a,
+ 0xda, 0xa3, 0x10, 0x73, 0xa, 0x5d, 0xad, 0xd3, 0x46, 0x41,
+ 0xd9, 0x44, 0x9b, 0x75, 0xdc, 0xcf, 0xa2, 0xd1, 0x35, 0x72,
+ 0xca, 0x16, 0xdc, 0xa9, 0x50, 0x87, 0x4e, 0x9d, 0x42, 0xd9,
+ 0x50, 0xa4, 0x8c, 0x58, 0xec, 0x77, 0x3b, 0x93, 0x72, 0xcc,
+ 0x58, 0x81, 0x9, 0xe7, 0x50, 0xbe, 0x46, 0xe8, 0xb8, 0xd,
+ 0xb7, 0xeb, 0xb8, 0x83, 0x59, 0xb0, 0x34, 0x5b, 0x75, 0xbc,
+ 0xd, 0x7f, 0xa1, 0xd3, 0x36, 0xdc, 0xa3, 0x50, 0x97, 0x4e,
+ 0xdb, 0x69, 0x47, 0xde, 0xe8, 0x25, 0x9e, 0xef, 0xc8, 0xc,
+ 0xf, 0x4b, 0x2c, 0xad, 0xea, 0xef, 0xea, 0x8, 0xa5, 0x4d,
+ 0x7b, 0xdc, 0xb4, 0x43, 0xe9, 0x4c, 0x4a, 0xa, 0x51, 0x3a,
+ 0x94, 0xca, 0xa5, 0x43, 0x88, 0xa1, 0x69, 0x3e, 0x2b, 0xa4,
+ 0x73, 0x69, 0xba, 0x56, 0xa7, 0xeb, 0x44, 0xc8, 0x8, 0x75,
+ 0x73, 0xd2, 0xae, 0xd5, 0x69, 0xa7, 0x48, 0xdb, 0xa3, 0x53,
+ 0xaf, 0xc8, 0xdf, 0x27, 0xea, 0x5c, 0x4f, 0xfd, 0x9c, 0x4e,
+ 0x3d, 0xc9, 0xd0, 0xec, 0xf8, 0x8, 0x59, 0xa6, 0x19, 0x33,
+ 0x63, 0x3a, 0xd, 0xd0, 0x2e, 0x85, 0x76, 0xeb, 0xb4, 0x87,
+ 0xf6, 0xea, 0x74, 0x3, 0xd, 0x2a, 0xb4, 0x4f, 0xa7, 0xfd,
+ 0xb4, 0x59, 0xa1, 0x1b, 0x75, 0xba, 0x89, 0xfa, 0x75, 0xba,
+ 0x99, 0x6e, 0xd1, 0xe9, 0x80, 0xf0, 0x32, 0x68, 0x48, 0xa7,
+ 0x28, 0xc5, 0x14, 0x32, 0x75, 0x1a, 0x16, 0x82, 0x11, 0xe1,
+ 0xbe, 0x7c, 0x4f, 0x4f, 0xe7, 0x5c, 0xf6, 0xe9, 0x4c, 0x34,
+ 0xea, 0x9e, 0x40, 0xa8, 0x2f, 0xb3, 0x3d, 0x6c, 0x70, 0x64,
+ 0xc7, 0xf2, 0xae, 0x88, 0x27, 0x5b, 0x23, 0xbd, 0x25, 0x56,
+ 0xc, 0xbf, 0x29, 0x45, 0xa8, 0x25, 0xe4, 0x24, 0x93, 0xa1,
+ 0x31, 0xc3, 0x9a, 0xc, 0xb1, 0xcd, 0x24, 0x69, 0x57, 0xec,
+ 0xb6, 0xe, 0x59, 0xc9, 0x9, 0x2b, 0x54, 0x86, 0xc8, 0x36,
+ 0xd3, 0x99, 0x84, 0xc3, 0xa6, 0x1a, 0xa5, 0x38, 0x1f, 0x96,
+ 0x36, 0x2d, 0xa9, 0x1a, 0xa1, 0x68, 0x22, 0xce, 0x48, 0x21,
+ 0x29, 0x5c, 0x3a, 0x1d, 0x14, 0xcd, 0xe, 0x89, 0x77, 0x3,
+ 0x5b, 0xcd, 0xf4, 0x21, 0x27, 0x99, 0xa, 0x59, 0x9c, 0xd5,
+ 0xa1, 0x78, 0x9a, 0xe9, 0x12, 0xb8, 0xbd, 0x4, 0x9e, 0x8e,
+ 0x1f, 0xc9, 0xc1, 0xc7, 0x70, 0x27, 0x17, 0xb4, 0xd0, 0x61,
+ 0x5e, 0x5a, 0xe2, 0xe2, 0x8f, 0x48, 0x18, 0x1e, 0x15, 0x57,
+ 0x24, 0x39, 0x23, 0x29, 0x45, 0xb7, 0x2a, 0x64, 0xeb, 0x94,
+ 0x26, 0xae, 0x8c, 0x5a, 0xb1, 0x88, 0xeb, 0x94, 0x91, 0xd3,
+ 0xc6, 0xe5, 0xb4, 0x62, 0x36, 0x75, 0x1b, 0x43, 0x52, 0xff,
+ 0xf5, 0x62, 0x6e, 0x88, 0x63, 0x26, 0x4, 0xc9, 0xbf, 0xa3,
+ 0x77, 0x60, 0x97, 0x8e, 0x4f, 0xe1, 0x3e, 0x9d, 0xe, 0xd3,
+ 0xa4, 0x42, 0x47, 0x74, 0xba, 0x8d, 0x36, 0x13, 0xa0, 0xd3,
+ 0xed, 0x74, 0x7, 0xdb, 0x5e, 0x10, 0x42, 0xa9, 0x7c, 0x21,
+ 0xa, 0x59, 0x49, 0x27, 0x94, 0x4e, 0x99, 0xd1, 0xf8, 0x70,
+ 0x5c, 0xec, 0xeb, 0xef, 0xeb, 0xed, 0x67, 0xff, 0xb2, 0x5c,
+ 0x6f, 0x23, 0x8e, 0xbf, 0xb7, 0xd3, 0x3b, 0x38, 0x18, 0xde,
+ 0xc, 0x5d, 0xa7, 0xbb, 0xe8, 0x9d, 0x5e, 0x22, 0x79, 0xe5,
+ 0x86, 0xef, 0x36, 0x4f, 0xc8, 0x54, 0x2a, 0x61, 0x3a, 0xad,
+ 0x5b, 0xdc, 0x29, 0xf, 0x74, 0x3, 0xb7, 0x3f, 0x63, 0x59,
+ 0xde, 0x35, 0xb0, 0xa4, 0xb4, 0x92, 0xe5, 0xc1, 0x6e, 0x2d,
+ 0xab, 0x4c, 0x3b, 0x86, 0x5d, 0x20, 0x13, 0x85, 0x39, 0xa1,
+ 0x1d, 0x4e, 0x67, 0x39, 0xa0, 0x9a, 0xab, 0xb9, 0x57, 0x33,
+ 0x38, 0xf1, 0x4b, 0x2a, 0xb8, 0x7, 0xdb, 0x69, 0x58, 0xc6,
+ 0x88, 0x69, 0xbb, 0x6c, 0xaa, 0x1a, 0x23, 0x91, 0x88, 0x2c,
+ 0x4a, 0xf9, 0x8c, 0xa5, 0x92, 0x16, 0xbb, 0x92, 0xef, 0x5b,
+ 0x36, 0xb2, 0x27, 0x88, 0xcf, 0x88, 0xb1, 0xe2, 0xe1, 0x12,
+ 0x5e, 0x5, 0xb4, 0xf6, 0xa6, 0x72, 0x40, 0x16, 0x42, 0x2e,
+ 0xeb, 0x89, 0x78, 0xcc, 0x19, 0x95, 0xfb, 0xc4, 0x8a, 0x8e,
+ 0x4a, 0x69, 0x5e, 0xc0, 0x92, 0x95, 0x54, 0x1e, 0xc2, 0x15,
+ 0x65, 0x59, 0x9e, 0x77, 0xbb, 0x97, 0xd0, 0x78, 0x57, 0x47,
+ 0x63, 0x77, 0xc1, 0xa0, 0x2e, 0x40, 0x99, 0x30, 0xe3, 0x23,
+ 0xa3, 0xce, 0x61, 0xce, 0xd8, 0xad, 0x85, 0xaf, 0x49, 0xae,
+ 0x1d, 0xe3, 0x7c, 0xcb, 0x79, 0x77, 0x68, 0x95, 0x99, 0xb3,
+ 0x6a, 0x2d, 0xa7, 0x7d, 0xd4, 0x4c, 0xa7, 0x7b, 0x92, 0xf6,
+ 0x98, 0x91, 0xc8, 0x5f, 0x89, 0xb3, 0x4a, 0x18, 0x97, 0xf4,
+ 0xe4, 0x84, 0x87, 0x5d, 0x93, 0xe2, 0x32, 0xe2, 0xc, 0x38,
+ 0x46, 0xf4, 0xd0, 0x2e, 0xdb, 0x88, 0x32, 0x44, 0x75, 0x92,
+ 0x5e, 0x6d, 0x21, 0x2c, 0x6e, 0x2c, 0x7b, 0x1d, 0x55, 0xc6,
+ 0x53, 0x46, 0xec, 0x70, 0x6e, 0x9e, 0x9c, 0x75, 0x59, 0x78,
+ 0x97, 0x26, 0x7, 0xd1, 0x84, 0x21, 0x37, 0xfc, 0xc5, 0x65,
+ 0xee, 0xaa, 0xc8, 0x1c, 0xdd, 0xdc, 0x7b, 0x72, 0x8f, 0x57,
+ 0xa1, 0x76, 0xa6, 0x47, 0x66, 0xb1, 0x1b, 0x98, 0x4c, 0x3b,
+ 0xe6, 0x18, 0x3b, 0xc8, 0x75, 0x76, 0x6d, 0x77, 0x3e, 0xf5,
+ 0xfb, 0x3c, 0xa1, 0x99, 0x72, 0xac, 0x5d, 0xec, 0x9f, 0x4a,
+ 0x71, 0x9a, 0x12, 0xd6, 0x94, 0xbb, 0x1a, 0xcf, 0x3, 0x79,
+ 0x35, 0x53, 0x7a, 0x29, 0xaf, 0x60, 0xee, 0x34, 0xe, 0x8a,
+ 0xf3, 0x96, 0x35, 0x46, 0xfe, 0xc, 0xdc, 0xb8, 0x25, 0xb8,
+ 0x8b, 0xca, 0x8, 0xc2, 0x7e, 0x71, 0x6d, 0x99, 0xe0, 0x6a,
+ 0x54, 0x33, 0x61, 0xc7, 0x1d, 0xb3, 0x54, 0x29, 0x57, 0x4b,
+ 0xe9, 0x5e, 0x6, 0xa2, 0xa3, 0xe6, 0x98, 0xe9, 0xb6, 0x48,
+ 0xdc, 0x4d, 0x55, 0xc4, 0x39, 0x4a, 0xea, 0xb, 0x7a, 0x6d,
+ 0xe5, 0x7b, 0x3e, 0x62, 0xa5, 0x32, 0x45, 0xdd, 0x96, 0xbc,
+ 0xc9, 0x96, 0xf4, 0x93, 0xcc, 0xb1, 0x2b, 0x93, 0x48, 0xb0,
+ 0x7, 0x2a, 0xb9, 0xb, 0x11, 0x5b, 0xaa, 0x29, 0x23, 0x9d,
+ 0x9e, 0x48, 0xda, 0x6c, 0x8b, 0xc5, 0xc5, 0x28, 0xdb, 0x65,
+ 0x1e, 0x76, 0xba, 0xe2, 0x66, 0x42, 0x9a, 0xcc, 0xba, 0x59,
+ 0xd0, 0xd2, 0x6c, 0x18, 0x31, 0x1d, 0x1, 0xcd, 0xb6, 0x7f,
+ 0x2e, 0x10, 0xaa, 0x12, 0xa6, 0x35, 0x22, 0xa1, 0x5e, 0x9d,
+ 0xce, 0xc, 0xa5, 0x73, 0xc0, 0x3a, 0xce, 0xae, 0xf2, 0xf1,
+ 0x61, 0x9b, 0x8e, 0x2d, 0xd1, 0xc9, 0x2c, 0x73, 0x6d, 0x92,
+ 0xca, 0xb8, 0xfb, 0x3b, 0xdc, 0x5c, 0xac, 0x48, 0xf2, 0x77,
+ 0x5d, 0x41, 0xe5, 0xde, 0x8c, 0x53, 0xaa, 0xef, 0xe2, 0x72,
+ 0x70, 0x66, 0xe9, 0x1a, 0x94, 0xa5, 0x14, 0xa5, 0x23, 0x22,
+ 0x6f, 0x95, 0x6d, 0x8e, 0x25, 0xc7, 0x4b, 0xaa, 0xc8, 0x9c,
+ 0xb4, 0xdd, 0x93, 0xf7, 0x42, 0xa7, 0x5b, 0xb9, 0x23, 0x6e,
+ 0xc7, 0xe9, 0x7a, 0x61, 0xc0, 0xf5, 0xa4, 0x7, 0x98, 0x17,
+ 0xf3, 0xea, 0x74, 0x8f, 0x21, 0x3e, 0x9, 0xc, 0x4b, 0x91,
+ 0x1b, 0x72, 0x7d, 0xbe, 0xd7, 0xcb, 0xed, 0x85, 0x25, 0xa0,
+ 0x1d, 0x6e, 0xda, 0x31, 0x5a, 0xdc, 0x9a, 0x9b, 0x5c, 0xb,
+ 0xdd, 0xa3, 0x6, 0x66, 0xb7, 0x99, 0x8d, 0xfb, 0xbd, 0xea,
+ 0x53, 0x2c, 0xdb, 0x6e, 0x93, 0xc9, 0x3b, 0x5c, 0xdd, 0x46,
+ 0xcc, 0x39, 0xcf, 0x88, 0x5c, 0xbf, 0xe9, 0x3a, 0x56, 0x34,
+ 0xdb, 0x92, 0x60, 0xbe, 0x95, 0x51, 0x6e, 0x3d, 0xa5, 0x63,
+ 0x4e, 0xb3, 0x90, 0x2c, 0xee, 0x88, 0x14, 0x98, 0x98, 0xd9,
+ 0x61, 0x8, 0x30, 0x90, 0x4f, 0x4f, 0x8b, 0x2b, 0xed, 0xee,
+ 0xfe, 0x6e, 0xa6, 0xd5, 0x4b, 0xbf, 0x3d, 0xa7, 0xee, 0x70,
+ 0x1f, 0x2c, 0x55, 0xe6, 0xad, 0x19, 0x23, 0x91, 0x9e, 0xd3,
+ 0x3e, 0x96, 0xf4, 0xb8, 0xb, 0x67, 0xf7, 0x29, 0x23, 0x52,
+ 0x69, 0x39, 0x9c, 0xec, 0xb4, 0xe9, 0x9a, 0xbb, 0x6c, 0xd7,
+ 0xc9, 0x1, 0xac, 0xf3, 0x9, 0x25, 0x3d, 0xed, 0xa5, 0x7f,
+ 0x56, 0x6, 0xca, 0xfb, 0x23, 0x9a, 0xb1, 0x6d, 0x36, 0x46,
+ 0xfe, 0x45, 0x34, 0xbb, 0xd4, 0xe4, 0xde, 0x44, 0xb8, 0x98,
+ 0x5f, 0xa7, 0x93, 0x20, 0x1c, 0xc1, 0x3c, 0x40, 0xda, 0x23,
+ 0xc8, 0x1f, 0x77, 0x48, 0xee, 0xcc, 0xfd, 0x91, 0x3b, 0x73,
+ 0x53, 0xea, 0xce, 0xdc, 0x79, 0xba, 0x33, 0xf7, 0x98, 0xee,
+ 0xcc, 0x7d, 0xa2, 0x3b, 0x73, 0x47, 0xeb, 0xce, 0xdc, 0xfe,
+ 0xba, 0xf3, 0xd1, 0x1c, 0x3d, 0x77, 0xc2, 0x3c, 0x2e, 0x60,
+ 0xfe, 0xdc, 0x1d, 0xf3, 0xf8, 0x37, 0xfc, 0xb5, 0x1e, 0x15,
+ 0xbc, 0x2, 0x82, 0xe1, 0x33, 0xa0, 0x70, 0x40, 0x3b, 0xa7,
+ 0x4d, 0xa3, 0x22, 0xec, 0x9b, 0x86, 0xef, 0x14, 0x43, 0x9,
+ 0x7f, 0x2b, 0x7b, 0xf0, 0xf3, 0x78, 0x21, 0xfc, 0x54, 0xc3,
+ 0x77, 0x6a, 0x1a, 0xb, 0x79, 0x4d, 0xf8, 0x60, 0x81, 0xc7,
+ 0x75, 0xbc, 0x2f, 0x3c, 0x56, 0x86, 0xb3, 0xf0, 0x87, 0x67,
+ 0x50, 0x39, 0x78, 0x6, 0x55, 0xd3, 0x50, 0x78, 0xa9, 0xe,
+ 0x32, 0xdf, 0xea, 0x69, 0x68, 0xe1, 0xd3, 0xd0, 0xb2, 0x98,
+ 0x57, 0x64, 0x5a, 0xc7, 0x4f, 0x64, 0xe0, 0x5a, 0x26, 0xed,
+ 0x41, 0xd, 0xfa, 0xf8, 0xd5, 0x7e, 0x3d, 0xbf, 0xea, 0xfb,
+ 0x79, 0xf7, 0x43, 0xf8, 0x70, 0x8e, 0x71, 0x3d, 0xff, 0x2a,
+ 0x84, 0xa2, 0x48, 0x56, 0xe5, 0x9e, 0xb4, 0x9b, 0xc7, 0xbf,
+ 0xcb, 0x9f, 0xcf, 0xfd, 0x67, 0x15, 0x7c, 0xc, 0x7d, 0x82,
+ 0xf, 0xd4, 0xf9, 0xec, 0xf9, 0xd3, 0x58, 0x10, 0xe6, 0x3,
+ 0x17, 0x64, 0x51, 0xc3, 0xa0, 00, 0x83, 0x16, 0x4e, 0xb3,
+ 0x86, 0xa7, 0x11, 0x9c, 0xc1, 0xa2, 0x41, 0x9f, 0xcf, 0x77,
+ 0x6, 0x8b, 0xbd, 0xbd, 0xda, 0xc1, 0x60, 0xdd, 0x19, 0x2c,
+ 0x99, 0xc6, 0x52, 0xde, 0x5d, 0x9a, 0x45, 0xbd, 0x20, 0x79,
+ 0xcb, 0xb, 0xf6, 0xce, 0x60, 0x19, 0x93, 0x2e, 0xef, 0x6e,
+ 0x66, 0x73, 0x5c, 0xd8, 0x1c, 0x8, 0x4e, 0xa3, 0x41, 0xb8,
+ 0xa, 0x4a, 0x73, 0x16, 0x17, 0xc9, 0x11, 0x41, 0xc1, 0x63,
+ 0xb5, 0x43, 0xfc, 0xbb, 0x78, 0x6, 0x2b, 0x44, 0xdd, 0x95,
+ 0x3b, 0x9b, 0x6b, 0xa6, 0x71, 0x89, 0xc, 0xab, 0x4, 0x7f,
+ 0x8d, 0x8b, 0xbc, 0x26, 0x87, 0x79, 0xa9, 0xc7, 0x7d, 0x35,
+ 0x7f, 0x37, 0x4e, 0x21, 0xb0, 0x93, 0xe7, 0xb0, 0x6c, 0x32,
+ 0xd2, 0x9a, 0x53, 0xac, 0xd0, 0x4, 0x4e, 0xe2, 0x31, 0x34,
+ 0xe5, 0xd4, 0x1d, 0x76, 0x6d, 0x70, 0x13, 0x87, 0xc3, 0xcd,
+ 0x58, 0x84, 0x3, 0x68, 0x80, 0x81, 0x56, 0xc, 0xe1, 0x6a,
+ 0x44, 0xd1, 0x89, 0x18, 0x7a, 0x61, 0x61, 0x2f, 0x92, 0xb8,
+ 0x11, 0x29, 0x86, 0xde, 0xca, 0x5f, 0x36, 0x73, 0xc8, 0x70,
+ 0xe8, 0x4c, 0x70, 0xb8, 0x4c, 0x72, 0x40, 0x1c, 0x61, 0xf7,
+ 0xdf, 0xc6, 0x66, 0xba, 0x9d, 0x1b, 0xb0, 0x3b, 0xf8, 0x1d,
+ 0x74, 0x17, 0x3e, 0xcd, 0xe1, 0xf2, 0x30, 0x87, 0xc8, 0x63,
+ 0xbc, 0x73, 0x96, 0x83, 0xe2, 0xcb, 0x6c, 0x48, 0xc8, 0x2b,
+ 0x81, 0x6d, 0xcd, 0xe6, 0xac, 0x78, 0x96, 0xcd, 0x59, 0xcd,
+ 0x66, 0x7d, 0xb9, 0x8c, 0xfe, 0x45, 0xcd, 0x9a, 0x3, 0xb1,
+ 0x69, 0xb4, 0x34, 0x7, 0xd6, 0x4d, 0x63, 0x6d, 0xce, 0x2a,
+ 0x4a, 0xde, 0x2a, 0x4a, 0x5e, 0x57, 0xdf, 0xc6, 0x29, 0x3a,
+ 0x2a, 0x80, 0x9e, 0x96, 0x27, 0x3d, 0x78, 0xeb, 0x14, 0x2a,
+ 0x37, 0xf8, 0x5b, 0x9e, 0x9a, 0x82, 0xb6, 0xa1, 0xb2, 0xe5,
+ 0xa9, 0xfa, 0xca, 0xc7, 0xd9, 0xb, 0x97, 0xd, 0xf2, 0xe6,
+ 0x3a, 0xfe, 0x5d, 0xce, 0xe6, 0xbb, 0x62, 0x1a, 0x6d, 0xbc,
+ 0x6c, 0xcb, 0x62, 0xfd, 0xa3, 0xb8, 0x72, 0x6, 0x57, 0xb1,
+ 0xc, 0x6f, 0xd, 0x6e, 0xc8, 0xa2, 0x5d, 0xa0, 0xa7, 0x71,
+ 0x75, 0x16, 0x1b, 0x83, 0x9b, 0xa, 0x9f, 0x9b, 0xf9, 0x33,
+ 0x8b, 0x6b, 0xb2, 0xd8, 0xe2, 0x11, 0x75, 0x78, 0x53, 0xe7,
+ 0x9, 0x89, 0x78, 0x5a, 0x9c, 0x8f, 0x20, 0xfe, 0x2d, 0xcb,
+ 0xad, 0x1b, 0x99, 0x6d, 0x70, 0x2b, 0x13, 0xf8, 0x37, 0x4e,
+ 0xe1, 0x57, 0x81, 0xc0, 0x39, 0x75, 0x83, 0xdf, 0xe3, 0xb5,
+ 0xad, 0xde, 0x9f, 0x45, 0x97, 0x8, 0x7a, 0x1a, 0xdb, 0xb3,
+ 0xd8, 0xb1, 0xa1, 0xb2, 0xbe, 0x32, 0x8b, 0x48, 0x40, 0xbd,
+ 0x1f, 0xf3, 0xeb, 0x2b, 0x7d, 0x1, 0x35, 0x8b, 0x6b, 0x73,
+ 0xb0, 0x7b, 0x31, 0xdf, 0x53, 0xe8, 0xba, 0x29, 0x9c, 0x8,
+ 0xa8, 0xcc, 0xa3, 0x8a, 0x31, 0xdc, 0xad, 0xfa, 0x2a, 0x5f,
+ 0x16, 0xdd, 0xee, 0x72, 0xbd, 0x32, 0x5, 0xbd, 0xbe, 0xaa,
+ 0x56, 0xf1, 0xed, 0xe2, 0x47, 0x62, 0xad, 0x12, 0x50, 0x8f,
+ 0xbf, 0xf1, 0x3b, 0xef, 0xac, 0x9d, 0x72, 0x56, 0x4f, 0xee,
+ 0xdc, 0x2c, 0x7a, 0xd7, 0xab, 0xb5, 0xea, 0x43, 0x6e, 0x9a,
+ 0x6e, 0x85, 0xf7, 0x57, 0x91, 0x93, 0xb9, 0x91, 0x7f, 0x1b,
+ 0x44, 0xe6, 0xbe, 0x9c, 0xcc, 0xed, 0xf2, 0x71, 0xbd, 0xa7,
+ 0xb1, 0x27, 0x41, 0xd3, 0xc, 0xfa, 0x7, 0x83, 0x3, 0x67,
+ 0xb0, 0xeb, 0x71, 0x59, 0xe5, 0x8d, 0xb6, 0x9b, 0xad, 0x54,
+ 0xab, 0x7a, 0x6, 0x92, 0xbd, 0xe5, 0xc7, 0x5e, 0xcf, 0xe4,
+ 0xfc, 0xb3, 0xe7, 0x14, 0xf3, 0xef, 0xe1, 0x44, 0xba, 0x1,
+ 0x6f, 0xe1, 0xf9, 0x16, 0xfe, 0xcf, 0xa7, 0xd8, 0xb3, 0x58,
+ 0xc7, 0xe3, 0xbd, 0x50, 0x39, 0x62, 0xe6, 0xe3, 0xa3, 0x1c,
+ 0x77, 0x1f, 0xc3, 0x52, 0x7c, 0x9c, 0x93, 0xfe, 0x13, 0x58,
+ 0x89, 0x4f, 0x72, 0x6c, 0x1e, 0x47, 0x1b, 0xf7, 0xdb, 0x9b,
+ 0x70, 0x1f, 0x3a, 0xf0, 0x20, 0xcb, 0x7b, 0x2, 0xdb, 0xf1,
+ 0x59, 0xe6, 0xf2, 0x8, 0x73, 0x3b, 0xc9, 0x9c, 0x1e, 0xe5,
+ 0xb8, 0x3d, 0xcd, 0x91, 0x97, 0xe5, 0x52, 0x75, 0x96, 0xa1,
+ 0x33, 0xbc, 0xfa, 0x22, 0xbe, 0xc3, 0x91, 0xf6, 0xa, 0x9e,
+ 0xc0, 0xab, 0x78, 0x12, 0x3f, 0xc2, 0x57, 0xf0, 0x73, 0x3c,
+ 0x8d, 0x3f, 0xe0, 0xab, 0xe4, 0xc3, 0xd7, 0x68, 0x9, 0xbe,
+ 0x4e, 0x17, 0xe1, 0x39, 0xba, 0x14, 0xdf, 0xa0, 0x26, 0x3c,
+ 0x4f, 0xad, 0x78, 0x81, 0x9f, 0x9a, 0x2f, 0xd2, 0x76, 0xbc,
+ 0xc4, 0xf, 0xb6, 0x17, 0x69, 0x2f, 0xbe, 0x47, 0x51, 0xbc,
+ 0xcc, 0x4f, 0x87, 0x57, 0xe8, 0xfd, 0x78, 0x95, 0x3e, 0x88,
+ 0x1f, 0xd0, 0x87, 0xf1, 0x43, 0x3a, 0x86, 0x1f, 0xd3, 0x71,
+ 0xfc, 0x84, 0x1e, 0xc0, 0x4f, 0xe9, 0x4, 0x7e, 0x46, 0xd3,
+ 0xf8, 0x5, 0xbd, 0x80, 0x13, 0xf4, 0x6d, 0xbc, 0x46, 0xdf,
+ 0xc7, 0xef, 0x71, 0x8c, 0x35, 0x91, 0xe2, 0xd4, 0xef, 0x6a,
+ 0x94, 0x8b, 0x70, 0x8e, 0x75, 0x9f, 0x1b, 0x11, 0xa3, 0x62,
+ 0xc8, 0xbd, 0x85, 0xd0, 0xb9, 0xc1, 0x9b, 0x6, 0x4b, 0xc2,
+ 0x6e, 0x5f, 0x21, 0xce, 0xf6, 0xf3, 0xca, 0x8b, 0xb3, 0x92,
+ 0xed, 0x1b, 0xb, 0xdb, 0x37, 0x49, 0x54, 0xde, 0x5c, 0xf8,
+ 0xbc, 0xa5, 0x18, 0x95, 0x59, 0x1c, 0x28, 0x96, 0xaf, 0x6,
+ 0x28, 0x3c, 0xfe, 0x91, 0x6d, 0xfb, 0x6, 0x6a, 0x88, 0xfb,
+ 0x2, 0xd6, 0xbe, 0x8d, 0xfc, 0x88, 0x92, 0x82, 0x11, 0x52,
+ 0x67, 0xc9, 0xfb, 0x91, 0x42, 0x81, 0xfd, 0x18, 0xd7, 0x4a,
+ 0x89, 0x6, 0x43, 0xa, 0xb3, 0xc1, 0x27, 0x54, 0x84, 0x7,
+ 0x4f, 0xc3, 0xd8, 0xe7, 0x3f, 0xc0, 0x9f, 0xfe, 0xde, 0x39,
+ 00, 0xdf, 0x5c, 0x40, 0xa5, 00, 0xda, 0x9e, 0xc6, 0x72,
+ 0x4f, 0xb6, 0xa1, 0x63, 0x6e, 0x89, 0x6b, 0x73, 0xb1, 0x18,
+ 0x29, 0x8b, 0xe8, 0x14, 0xd4, 0x6e, 0x4e, 0xde, 0xf0, 0x29,
+ 0xd7, 0x2c, 0x37, 0x60, 0x7f, 0xa1, 00, 0xad, 0x60, 0x51,
+ 0x25, 0x8d, 0x2a, 0xa9, 0x96, 0x85, 0xad, 0xc3, 0x6a, 0x76,
+ 0xd5, 0x55, 0xb4, 0x14, 0x11, 0xaa, 0xc7, 0x7e, 0x5a, 0x8e,
+ 0x3, 0xd4, 0xc0, 0xb7, 0xd6, 0x47, 0x59, 0x44, 0x4f, 0xd4,
+ 0xbb, 0xb9, 0x78, 0xc8, 0x6d, 0xd1, 0xd7, 0x7c, 0x1a, 0x31,
+ 0x29, 0x75, 0x9f, 0x41, 0x97, 0x58, 0xd9, 0xf4, 0x4c, 0x31,
+ 0xec, 0x99, 0x78, 0x24, 0xcc, 0x9e, 0x6a, 0x9b, 0xc1, 0xe8,
+ 0x60, 0x30, 0x7e, 0x6, 0x7, 0x7b, 0xc2, 0x6e, 0x5d, 0xe,
+ 0x34, 0x4, 0x1a, 0x72, 0x95, 0xb9, 0xa5, 0xa4, 0x5a, 0xf2,
+ 0xbd, 0x71, 0xc8, 0xf7, 0x70, 0xc1, 0x84, 0x6b, 0xe5, 0x6e,
+ 0xa4, 0x4d, 0x98, 0x47, 0xd7, 0x60, 0x11, 0x6d, 0xc3, 0x12,
+ 0xea, 0x42, 0x3, 0x7, 0xca, 0x4a, 0xda, 0x81, 0x16, 0x8a,
+ 0x60, 0x23, 0x5d, 0x8b, 0x4e, 0x7e, 0xf3, 0x6f, 0xa7, 0x6e,
+ 0xf4, 0xf0, 0xd3, 0x95, 0xb8, 0xc4, 0xe5, 0xa5, 0x5b, 0xc9,
+ 0x66, 0x94, 0x9b, 0x42, 0x9, 0xfb, 0xf9, 0x86, 0xf3, 0x17,
+ 0x99, 0x6a, 0x62, 0x5f, 0x7e, 0x74, 0x56, 0xf2, 0x9b, 0x92,
+ 0x38, 0xd6, 0xcf, 0x27, 0xf0, 0x95, 0x23, 0x38, 0xc2, 0x4,
+ 0xb7, 0xf1, 0xd7, 0x27, 0x38, 0x2d, 0x3c, 0x82, 0xdd, 0xec,
+ 0x2a, 0xb9, 0xd8, 0x9a, 0xa4, 0x26, 0xf4, 0xac, 0xf1, 0x71,
+ 0x65, 0x8f, 0xb4, 0x48, 0x3d, 0x90, 0xc5, 0x7a, 0xff, 0x14,
+ 0xe6, 0xb5, 0xd4, 0xfa, 0xb9, 0x1a, 0xf8, 0xa9, 0xd6, 0x2f,
+ 0xd5, 0xe0, 0xb5, 0x62, 0x6c, 0x5c, 0xc0, 0xa6, 0x3, 0xbd,
+ 0x97, 0x59, 0xbe, 0xf, 0x1, 0x3a, 0x8a, 0x7a, 0xfa, 00,
+ 0x2b, 0x76, 0x14, 0x8d, 0xf4, 0x21, 0xc6, 0x38, 0x5e, 0x88,
+ 0x6, 0x87, 0xd, 0x2c, 0xd1, 0x70, 0x4d, 0x38, 0x1c, 0x4c,
+ 0x30, 0xeb, 0xb1, 0x69, 0xb7, 0x76, 0xae, 0x7b, 0x86, 0x6f,
+ 0x21, 0x36, 0x99, 0x95, 0x45, 0x32, 0x7, 0x9, 0xa6, 0xb2,
+ 0xb8, 0xf5, 0x18, 0xaa, 0xc3, 0x41, 0x9b, 0x6f, 0x97, 0x70,
+ 0x30, 0xcd, 0x25, 0x67, 0xac, 0x3b, 0xdc, 0x7c, 0x16, 0xce,
+ 0x34, 0x2e, 0x2f, 0x9e, 0xec, 0x39, 0xf9, 0x93, 0x6c, 0xd2,
+ 0xe3, 0x8, 0xd2, 0xa7, 0x70, 0x21, 0xdd, 0x87, 0x26, 0xba,
+ 0x1f, 0xad, 0x9c, 0x57, 0x57, 0xd2, 0x83, 0xd8, 0x4c, 0xf,
+ 0x31, 0x26, 0xbf, 0xb0, 0xb, 0x17, 0xbe, 0xcf, 0x75, 0xf2,
+ 0xea, 0x30, 0x7, 0x4d, 0xa6, 0xa7, 0xe5, 0x19, 0x34, 0x2c,
+ 0x3f, 0x86, 0xb, 0xc2, 0xb9, 0xb4, 0x60, 0x60, 0x7b, 0x70,
+ 0x3c, 0x9f, 0x2f, 0x6b, 0x5a, 0x4e, 0xce, 0xee, 0x24, 0xe8,
+ 0x73, 0xa8, 0xa2, 0x47, 0xb0, 0x80, 0x4e, 0x62, 0x15, 0x3d,
+ 0xca, 0x3b, 0xf7, 0xf3, 0x95, 0xe4, 0x31, 0x8e, 0xe7, 0x6e,
+ 0xf2, 0x36, 0xe, 0x99, 0xe6, 0x5c, 0xc4, 0x48, 0x94, 0x34,
+ 0x73, 0x90, 0xec, 0x3c, 0x2f, 0x48, 0xa, 0x57, 0xea, 0x59,
+ 0x4c, 0x70, 0x8c, 0xcc, 0xd5, 0xe7, 0x39, 0x28, 0xf4, 0x4d,
+ 0xd6, 0xe9, 0x79, 0x2c, 0xa6, 0x6f, 0xe1, 0x12, 0x7a, 0x11,
+ 0x61, 0x7a, 0x9, 0x6b, 0xb9, 0x36, 0x5c, 0x41, 0xdf, 0x65,
+ 0xcc, 0xcf, 0xb8, 0x35, 0x76, 0xea, 0x4f, 0x50, 0x4b, 0x3,
+ 0x4, 0xa, 00, 00, 00, 0x8, 00, 0x16, 0xa9, 0xda,
+ 0x2c, 0xc9, 0xa0, 0xa1, 0x6c, 0x47, 0xf, 00, 00, 0x1f,
+ 0x1e, 00, 00, 0xe, 00, 00, 00, 0x72, 0x66, 0x62,
+ 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6c, 0x61, 0x73,
+ 0x73, 0x85, 0x57, 0xb, 0x7c, 0x54, 0xd5, 0x99, 0xff, 0xce,
+ 0x9d, 0xc7, 0xbd, 0x99, 0xdc, 0x90, 0x9b, 0x81, 0x49, 0x8,
+ 0x33, 0x81, 0x41, 0x4, 0xc2, 0x4c, 0x2, 0xd1, 0x20, 0xef,
+ 0x67, 0x22, 0x81, 0x48, 0x1e, 0x98, 0x4, 0x10, 0xf0, 0xc1,
+ 0x24, 0x73, 0x93, 0xc, 0x24, 0x33, 0x71, 0x66, 0x92, 0x40,
+ 0x5b, 0xa1, 0xf, 0xd9, 0x3e, 0x5c, 0xbb, 0x4b, 0x95, 0x5a,
+ 0xac, 0x94, 0xa0, 0x54, 0xdc, 0x15, 0x6d, 0xed, 0x92, 0x60,
+ 0x85, 0xea, 0x5a, 0x6b, 0x45, 0x57, 0xdd, 0x76, 0xeb, 0x76,
+ 0x77, 0xbb, 0xdb, 0x56, 0xd7, 0xdd, 0xfa, 0xd6, 0xee, 0x5a,
+ 0xbb, 0x8f, 0x3e, 0xe8, 0xff, 0xbb, 0xf7, 0xce, 0xdc, 0x99,
+ 0x21, 0xb4, 0xf3, 0xfb, 0xcd, 0xf7, 0x3a, 0xdf, 0xf9, 0xce,
+ 0xf9, 0x1e, 0xe7, 0x3b, 0xe7, 0xbe, 0xf0, 0xfb, 0x27, 0x9e,
+ 0x24, 0x7, 0xd5, 0x8a, 0x66, 0xf, 0x45, 0xe9, 0xa5, 0x22,
+ 0xea, 0xa1, 0x97, 0x19, 0xfc, 0x3d, 0x83, 0x1f, 0x30, 0xf8,
+ 0x21, 0x83, 0x7f, 0x60, 0xf0, 0x23, 0x99, 0x5e, 0xf1, 0x90,
+ 0x42, 0xff, 0xc8, 0xcc, 0x8f, 0x65, 0xfa, 0x27, 0x99, 0xfe,
+ 0x99, 0xf9, 0x7f, 0xf1, 0x90, 0x4a, 0x3f, 0xf1, 0x50, 0x31,
+ 0xfd, 0x2b, 0x8f, 0xfc, 0x1b, 0xcb, 0x7e, 0xca, 0xd4, 0xcf,
+ 0x98, 0xfa, 0xb9, 0x4c, 0xaf, 0x7a, 0xe8, 0x35, 0xfa, 0x77,
+ 0x56, 0x78, 0x5d, 0xa6, 0xff, 0x90, 0xe9, 0x3f, 0x3d, 0x34,
+ 0x9d, 0x5e, 0x52, 0xe8, 0x17, 0x8c, 0xdf, 0x50, 0xe8, 0x4d,
+ 0xc6, 0x6f, 0x29, 0xf4, 0x36, 0xe3, 0x77, 0x3c, 0x54, 0x41,
+ 0xef, 0xf2, 0xf4, 0xf7, 0x18, 0xbc, 0xaf, 0xd0, 0x7, 0x1e,
+ 0x9a, 0x4f, 0xbf, 0xf4, 0xd0, 0x7f, 0xd1, 0x7f, 0xb3, 0x8d,
+ 0xf, 0x65, 0xfa, 0x15, 0x4b, 0x3e, 0x52, 0xe8, 0xd7, 0x2c,
+ 0xfc, 0x1f, 0x16, 0xfe, 0x2f, 0xeb, 0xfe, 0x1f, 0x83, 0xff,
+ 0x67, 0xf6, 0x37, 0x4c, 0xfd, 0x96, 0xc1, 0xef, 0x18, 0xfc,
+ 0x9e, 0xc1, 0x45, 00, 0x41, 0xc, 0x4, 0x3, 0x89, 0x81,
+ 0x83, 0x81, 0x93, 0x81, 0xb, 0xd3, 0x84, 0x9b, 0x29, 0xd9,
+ 0x23, 0x14, 0x51, 0xc4, 0xac, 0x87, 0xd9, 0x62, 0x6, 0x2a,
+ 0x83, 0x12, 0x6, 0x53, 0x18, 0x94, 0x32, 0xd0, 0x14, 0x51,
+ 0xa6, 0x8, 0xaf, 0x22, 0xa6, 0x2a, 0x62, 0x9a, 0x22, 0x7c,
+ 0x2c, 0x2b, 0x67, 0x50, 0x51, 0x24, 0xa6, 0x8b, 0x4a, 0x6,
+ 0x33, 0x98, 0xf5, 0x7b, 00, 0x2, 0xcc, 0x56, 0x31, 0x98,
+ 0x89, 0x3d, 0x8b, 0x59, 0x4c, 0x5, 0x1d, 0x44, 0x17, 0xb7,
+ 0x30, 0xb8, 0x9e, 0x41, 0x7, 0x83, 0x4e, 0x6, 0x5d, 0xc,
+ 0x14, 0x6, 0x45, 0xc, 0x4a, 0x18, 0xf8, 0x19, 0x5c, 0x64,
+ 0x40, 0x6c, 0x6f, 0x36, 0x5b, 0xbe, 0x82, 0xd9, 0xd7, 0x19,
+ 0xbc, 0xc6, 0xe0, 0xd, 0x6, 0x6f, 0xc9, 0x62, 0x8e, 0x2c,
+ 0xae, 0x14, 0xe4, 0x19, 0xd1, 0x93, 0xa9, 0x58, 0x22, 0xde,
+ 0x9a, 0xea, 0x13, 0xe4, 0x6d, 0xd9, 0x13, 0x19, 0x89, 0x2c,
+ 0x1a, 0x88, 0xc4, 0xfb, 0x16, 0x75, 0xa6, 0x93, 0xb1, 0x78,
+ 0xdf, 0x4a, 0x41, 0x25, 0x8d, 0x89, 0x78, 0x2a, 0x1d, 0x89,
+ 0xa7, 0xb7, 0x45, 0x6, 0x86, 0x75, 0xcc, 00, 0x1f, 0x6f,
+ 0x8a, 0xc4, 0x6, 0xf4, 0xa8, 0x20, 0xd1, 0xc, 0x6b, 0x44,
+ 0x82, 0xdc, 0x6d, 0x89, 0xf5, 0xc3, 0xe9, 0x7e, 0xe6, 0x84,
+ 0x20, 0x79, 0x5b, 0xbc, 0x27, 0xc3, 0x4a, 0x88, 0xa6, 0xc5,
+ 0xb6, 0x6f, 0x86, 0x39, 0x8b, 0xce, 0x58, 0x98, 0x62, 0xf1,
+ 0x5d, 0x89, 0x44, 0x6b, 0x24, 0xbe, 0x5f, 0x50, 0x59, 0x53,
+ 0x32, 0x32, 0xa8, 0x77, 0xf, 0xf7, 0xf6, 0xea, 0xc9, 0xad,
+ 0x43, 0xd1, 0x48, 0x1a, 0x6b, 0x4e, 0xed, 0xd4, 0xd3, 0x8d,
+ 0x89, 0x81, 0xc4, 0x70, 0xb2, 0x35, 0x32, 0xb4, 0x21, 0x8e,
+ 0xad, 0xe9, 0x29, 0x41, 0xce, 0x6, 0x7d, 0x60, 00, 0x16,
+ 0x3b, 0xf5, 0x24, 0xbc, 0x68, 0x1c, 0x4e, 0x77, 0xe9, 0xfb,
+ 0xd2, 0xbc, 0xa4, 0x3, 0x66, 0x31, 0x63, 0x4b, 0x6c, 0x9f,
+ 0x3e, 0xd0, 0x94, 0x48, 0xe, 0x46, 0xd2, 0x30, 0xd1, 0x14,
+ 0xdb, 0x77, 0xa9, 0x9, 0x15, 0x6a, 0x1b, 0xe2, 0x3d, 0x89,
+ 0x28, 0x7c, 0x5, 0x3b, 0xfd, 0x92, 0xb5, 0x3b, 0xf4, 0x5b,
+ 0x87, 0xf5, 0x14, 0xe6, 0x2b, 0x9b, 0xf5, 0xfd, 0x1b, 0x46,
+ 0xf4, 0xb8, 0xb1, 0x80, 0x13, 0x33, 0xb7, 0x24, 0x62, 0xf1,
+ 0xb4, 0x9e, 0xcc, 0xca, 0x5c, 0x1c, 0xaa, 0x81, 0x18, 0xb8,
+ 0x9c, 0x9d, 0xb8, 0x5, 0x15, 0x67, 0xec, 0x77, 0x44, 0x46,
+ 0x5, 0x69, 0x19, 0xae, 0x31, 0x31, 0xb4, 0xbf, 0x43, 0xef,
+ 0x49, 0xe7, 0x2a, 0x74, 0x6c, 0x80, 0xd, 0x5b, 0xc1, 0xe0,
+ 0x4b, 0x33, 0xfc, 0x26, 0x98, 0x44, 0xc8, 0xe0, 0x76, 0x7f,
+ 0x82, 0x37, 0xe4, 0x1c, 0x4a, 0x24, 0x19, 0xa5, 0x12, 0x3d,
+ 0x7b, 0x11, 0x35, 0x33, 0x75, 0x71, 0x3d, 0xbd, 0xa8, 0x13,
+ 0x2, 0x3d, 0x8d, 0xcc, 0x49, 0x31, 0xb8, 0x54, 0x69, 0xe,
+ 0xc4, 0x12, 0x8b, 0xae, 0x8d, 0xa4, 0x23, 0xcd, 0xf1, 0xa1,
+ 0xe1, 0x34, 0x52, 0xab, 0x47, 0x6, 0x59, 0x21, 0x1, 0x85,
+ 0xf2, 0xac, 0x42, 0xfb, 0x70, 0x3a, 0x77, 0x54, 0x8b, 0xc5,
+ 0xdb, 0x38, 0x78, 0x3, 0x5b, 0x92, 0x89, 0x74, 0xa2, 0x27,
+ 0x81, 0x50, 0x8b, 0x9d, 0xf8, 0x8f, 0x60, 0xcb, 0x2d, 0x23,
+ 0xf1, 0x9e, 0x91, 0x98, 0x3e, 0xaa, 0x27, 0xa1, 0x58, 0x9c,
+ 0x32, 0x12, 0xd0, 0x1a, 0xd9, 0x93, 0x48, 0xda, 0x5c, 0x2c,
+ 0x6e, 0x70, 0x51, 0x3d, 0xb5, 0x37, 0x9d, 0x18, 0x6a, 0x43,
+ 0x5c, 0x61, 0xb2, 0xd7, 0x8e, 0xef, 0xf6, 0x58, 0x34, 0xdd,
+ 0x8f, 0x8d, 0xe7, 0x88, 0x36, 0xe9, 0xb1, 0xbe, 0x7e, 0xf8,
+ 0xa4, 0x76, 0xc7, 0xd2, 0xa9, 0x2d, 0x7a, 0xd2, 0x48, 0xa0,
+ 0x20, 0x57, 0x54, 0x1f, 0x62, 0xd5, 0xa2, 0xee, 0x58, 0xdf,
+ 0x86, 0x78, 0x34, 0x16, 0x89, 0xa3, 0xa, 0xd3, 0xc9, 0x61,
+ 0xdd, 0xcc, 0x27, 0x8a, 0x2f, 0xa9, 0x47, 0x5b, 0x23, 0xfb,
+ 0x90, 0xa4, 0xbe, 0xa4, 0xae, 0xc7, 0xd, 0x52, 0xee, 0x46,
+ 0xb5, 0x9a, 0x42, 0x8c, 0x76, 0xf6, 0xc7, 0x7a, 0x61, 0xd8,
+ 0x63, 0x8c, 0x5b, 0x4c, 0x11, 0x6b, 0x58, 0xb4, 0x3a, 0x6c,
+ 0x64, 0xbb, 0x8d, 0x33, 0x82, 0x98, 0x14, 0xf, 0x5b, 0xc9,
+ 0xef, 0x49, 0xdf, 0x90, 0xc7, 0xed, 0xc8, 0xe3, 0xb6, 0xe7,
+ 0x71, 0x9b, 0x70, 0x80, 0x6c, 0x2e, 0x93, 0x36, 0xd8, 0xee,
+ 0xb1, 0x52, 0xdd, 0x99, 0xec, 0xb9, 0x21, 0x9f, 0x85, 0x39,
+ 0x45, 0xe7, 0x2, 0x6a, 0x18, 0xee, 0x45, 0x3a, 0x76, 0x35,
+ 0xc0, 0x60, 0x86, 0x6f, 0xd1, 0xe1, 0x66, 0xf1, 0x90, 0x59,
+ 0x65, 0xad, 0x91, 0x14, 0x92, 0xac, 0x26, 0x6, 0xa2, 0xad,
+ 0xb0, 0xda, 0x1b, 0xc3, 0xa1, 0x85, 0xdb, 0xab, 0x62, 0xf1,
+ 0x58, 0x7a, 0x8d, 0xa0, 0xd9, 0xd5, 0x97, 0x1e, 0xdc, 0xe6,
+ 0x9c, 0x14, 0x2d, 0xd8, 0x86, 0x3a, 0x69, 0x4c, 0x44, 0x91,
+ 0x81, 0xd2, 0x96, 0x58, 0x5c, 0x6f, 0x1b, 0x1e, 0xec, 0xd6,
+ 0x93, 0x5d, 0x91, 0x6e, 0x2e, 0x27, 0xcf, 0x86, 0x7d, 0x3d,
+ 0x88, 0x2f, 0x7a, 00, 0x4c, 0xba, 0x7a, 0x6, 0x12, 0x29,
+ 0x8, 0x1d, 0xd5, 0x3c, 0x67, 0xa, 0x2a, 0x21, 0xba, 0x2d,
+ 0xa7, 0x41, 0x94, 0x8e, 0x26, 0x63, 0x69, 0x3d, 0x57, 0x62,
+ 0xa8, 0xf0, 0xf9, 0xed, 0xec, 0xe9, 0xd7, 0x7, 0xcd, 0x99,
+ 0xcd, 0x19, 0x45, 0xf3, 0x38, 0x34, 0x63, 0x93, 0x96, 0xa2,
+ 0x79, 0x52, 0x4d, 0x81, 0xcf, 0x16, 0xb4, 0xea, 0xa9, 0x54,
+ 0xa4, 0x4f, 0xef, 0xda, 0x3f, 0xa4, 0x5b, 0xf2, 0x49, 0x7a,
+ 0x40, 0x60, 0x52, 0xb9, 0x11, 0xf8, 0x28, 0x6a, 0x40, 0xe5,
+ 0x61, 0xfb, 0x50, 0x55, 0x19, 0x1b, 0xf8, 0x23, 0xc7, 0xb9,
+ 0xba, 0x19, 0xbf, 0x9d, 0xec, 0xe5, 0x54, 0x43, 0xb5, 0xb0,
+ 0x5f, 0x94, 0x40, 0x61, 0xe7, 0xce, 0x66, 0xe3, 0xc7, 0x5a,
+ 0x65, 0x19, 0xad, 0x9c, 0x76, 0xe1, 0xae, 0xde, 0x95, 0x3b,
+ 0x98, 0xdb, 0x11, 0x60, 0xd6, 0x4a, 0x4a, 0x64, 0x34, 0xbd,
+ 0xc8, 0x10, 0x19, 0x69, 0x28, 0x31, 0x34, 0x33, 0xbd, 0x4,
+ 0x1, 0xaf, 0x36, 0x37, 0x51, 0x6e, 0xc8, 0x33, 0xc9, 0xcd,
+ 0x8c, 0x73, 0x93, 0xab, 0x36, 0x56, 0xf0, 0x74, 0xa2, 0xd2,
+ 0x7b, 0xf4, 0x26, 0xa3, 0x3, 0x94, 0x24, 0x7b, 0xbb, 0x8d,
+ 0x43, 0xb9, 0x90, 0x57, 0x50, 0xe9, 0x51, 0x3a, 0xa3, 0xd2,
+ 0x17, 0xe9, 0x2f, 0x54, 0xfa, 0x2b, 0xfa, 0x6b, 0x95, 0x4e,
+ 0x53, 0x4c, 0xa5, 0xbf, 0xa4, 0xc3, 0x2a, 0xfd, 0x19, 0xf5,
+ 0xaa, 0xf4, 0x59, 0x8a, 0x21, 0x21, 0x5, 0xed, 0x1, 0x93,
+ 0xc4, 0x5c, 0x95, 0x3e, 0x47, 0x9f, 0x17, 0x54, 0x71, 0x99,
+ 0xe, 0x21, 0xc8, 0x9f, 0x19, 0x69, 0x30, 0x62, 0xa8, 0x47,
+ 0x73, 0x46, 0x55, 0x31, 0x4f, 0xcc, 0x67, 0x33, 0xd5, 0xc,
+ 0x16, 0xa8, 0xf4, 0x5, 0xba, 0x43, 0x15, 0x21, 0x11, 0x56,
+ 0xe9, 0xcf, 0xe9, 0x4e, 0x95, 0xfe, 0x86, 0xce, 0x20, 0x8,
+ 0x76, 0x5d, 0x66, 0xcb, 0x4c, 0x16, 0x35, 0xaa, 0xa8, 0xc5,
+ 0x96, 0xc5, 0x42, 0xb1, 0x28, 0xa3, 0x82, 0x35, 0x9a, 0xdb,
+ 0xb3, 0x2a, 0x88, 0x47, 0x61, 0x41, 0x9b, 0x3b, 0x40, 0xc0,
+ 0x36, 0xa1, 0xfb, 0x5, 0x55, 0x51, 0x27, 0xae, 0x42, 0x2,
+ 0x82, 0xdc, 0x4, 0xd, 0xee, 0x6a, 0x54, 0x4e, 0x30, 0x96,
+ 0xa, 0xc6, 0x13, 0xe9, 0x60, 0x24, 0x1e, 0xec, 0x68, 0x6a,
+ 0x8, 0x9a, 0x8d, 0x48, 0x15, 0xf5, 0x62, 0x31, 0x6f, 0xf1,
+ 0x1a, 0x95, 0xbe, 0xc4, 0x91, 0xb9, 0x8b, 0xe3, 0xa1, 0xb2,
+ 0x42, 0x5d, 0x5d, 0xfd, 0x42, 0xfc, 0x3d, 0xaa, 0x58, 0x22,
+ 0x96, 0xca, 0x62, 0x99, 0x2a, 0x96, 0x8b, 0x45, 0xaa, 0x58,
+ 0x41, 0x8f, 0xa3, 0x55, 0x15, 0x6e, 0x80, 0x4d, 0xa0, 0xd9,
+ 0x2d, 0xdc, 0x1a, 0xdf, 0x1b, 0x4f, 0x8c, 0xc6, 0x83, 0x11,
+ 0x14, 0x3d, 0x52, 0x14, 0xeb, 0x89, 0xf0, 0x8e, 0x83, 0x29,
+ 0xa3, 0xfe, 0x83, 0xbd, 0xc9, 0xc4, 0x60, 0xce, 0xe2, 0xd8,
+ 0xda, 0x72, 0x7a, 0x41, 0x15, 0xab, 0xe8, 0x71, 0x95, 0x8e,
+ 0xf0, 0xea, 0x5f, 0x6, 0x10, 0xab, 0x99, 0xbd, 0x87, 0xd9,
+ 0xaf, 0x30, 0x38, 0xca, 0xa9, 0xbb, 0x97, 0xc1, 0x57, 0x99,
+ 0xbd, 0x8f, 0xc1, 0x31, 0x6, 0x5f, 0x63, 0x70, 0x9c, 0xc1,
+ 0x18, 0x4f, 0x5b, 0x23, 0xd6, 0xaa, 0x74, 0x37, 0xf5, 0xca,
+ 0x62, 0x1d, 0x18, 0xd8, 0x10, 0xeb, 0x45, 0x83, 0x4a, 0x27,
+ 0x58, 0xe1, 0x7e, 0x6, 0xf, 0x30, 0x38, 0xc9, 0xe0, 0xeb,
+ 0xc, 0x1e, 0x64, 0x4f, 0xab, 0x73, 0xe, 0x41, 0xd0, 0xec,
+ 0x4f, 0xc1, 0x24, 0xce, 0x8, 0x3c, 0x1b, 0xd0, 0x83, 0xe9,
+ 0x44, 0x22, 0x38, 0x10, 0x49, 0xf6, 0xe9, 0x2b, 0x82, 0x68,
+ 0xed, 0xe8, 0x96, 0xae, 0x60, 0x24, 0x1d, 0xac, 0x6, 0x5d,
+ 0x83, 0x3f, 0xb2, 0x7a, 0x8a, 0xd, 0x3d, 0x44, 0x31, 0x59,
+ 0x34, 0xaa, 0xe2, 0x5a, 0xde, 0xc5, 0x6, 0x96, 0x3c, 0xcc,
+ 0xe0, 0x79, 0x76, 0xcd, 0xcb, 0xb2, 0x26, 0x6, 0xcb, 0xc5,
+ 0x46, 0x55, 0x6c, 0xe2, 0x81, 0xe7, 0xe8, 0x82, 0x4a, 0x8f,
+ 0xf0, 0xea, 0x4a, 0xa6, 0x54, 0xf3, 0x22, 0xda, 0xde, 0xbd,
+ 0xc7, 0x38, 0xa5, 0xe5, 0x93, 0x35, 0x2e, 0xa3, 0xf3, 0xf4,
+ 0xe9, 0xe9, 0xbc, 0x4a, 0xac, 0xa8, 0x5e, 0x90, 0xbd, 0xa7,
+ 0xf2, 0x2f, 0xb1, 0xca, 0xea, 0x49, 0x7, 0xc, 0x33, 0xd3,
+ 0x27, 0x1f, 0xe3, 0xa1, 0x52, 0xac, 0x90, 0x7b, 0xe1, 0xb1,
+ 0xf2, 0x82, 0xcb, 0x5d, 0x85, 0x39, 0x65, 0xdc, 0xd5, 0x9f,
+ 0x4c, 0x8c, 0x9a, 0x9d, 0xb3, 0x74, 0x8, 0x1b, 0x86, 0x52,
+ 0xa4, 0x67, 0x6f, 0x57, 0x32, 0xd2, 0x3, 0x49, 0x91, 0xd1,
+ 0xa3, 0x86, 0x7, 0x6, 0xf6, 0xf3, 0xc9, 0xde, 0xd5, 0xc0,
+ 0xb, 0xb9, 0x23, 0x43, 0x43, 0x7a, 0x1c, 0x2f, 0x9d, 0x9a,
+ 0x49, 0x9c, 0x5d, 0x70, 0x89, 0xc8, 0xac, 0x73, 0xac, 0xe9,
+ 0xc7, 0xc1, 0xbf, 0xfc, 0xa8, 0x92, 0x4e, 0x98, 0x12, 0x41,
+ 0xd3, 0xaa, 0x2f, 0xd5, 0x83, 0x86, 0x6f, 0xb2, 0xe5, 0xb6,
+ 0xf1, 0x1d, 0xa9, 0xa7, 0x1b, 0xf6, 0xa7, 0xf9, 0xf5, 0xc3,
+ 0x4d, 0x70, 0x57, 0x83, 0x11, 0xa9, 0x69, 0x93, 0x79, 0xe,
+ 0x27, 0x8c, 0xb6, 0x84, 0xdb, 0x94, 0x1d, 0x6b, 0xe6, 0x86,
+ 0x85, 0x9e, 0x67, 0xce, 0x28, 0x63, 0xd1, 0xd6, 0x78, 0x2a,
+ 0xd6, 0x17, 0xe7, 0xfb, 0xd5, 0x78, 0x8c, 0x68, 0xb9, 0x32,
+ 0x5e, 0x4, 0xfd, 0x8b, 0x45, 0x56, 0x34, 0x70, 0x31, 0x54,
+ 0x66, 0xd6, 0x41, 0x27, 0x4b, 0xf3, 0x55, 0x90, 0xb3, 0x98,
+ 0xc2, 0xaa, 0xe6, 0x2c, 0xdc, 0x22, 0xb8, 0xb, 0xa7, 0xe4,
+ 0x37, 0x50, 0x7e, 0xd1, 0xc0, 0x54, 0xd1, 0xa0, 0x7d, 0x5,
+ 0xa, 0x4, 0x5a, 0xe6, 0x1d, 0x19, 0x5b, 0x72, 0xec, 0xd5,
+ 0xf7, 0x53, 0x10, 0x8f, 0xf8, 0x28, 0x9e, 0x5e, 0xcb, 0xf1,
+ 0x95, 0xa0, 0x53, 0x2f, 0xde, 0xa6, 0x7d, 0xfc, 0xa, 0xa5,
+ 0x39, 0xe0, 0xfb, 0x29, 0x96, 0xe5, 0xf7, 0x80, 0xdf, 0x9b,
+ 0xc3, 0xf, 0x80, 0x1f, 0xcc, 0xe1, 0xe3, 0xe0, 0x13, 0x5,
+ 0xfa, 0x43, 0x5, 0xfa, 0xb7, 0x16, 0xe8, 0x27, 0xb, 0xf4,
+ 0x53, 0x5, 0xfa, 0xe9, 0x2, 0xfd, 0xe1, 0x1c, 0x7e, 0x4,
+ 0xfc, 0x68, 0xc1, 0xfc, 0x7d, 0x5, 0xf3, 0xf7, 0x17, 0xcc,
+ 0xff, 0x58, 0xc1, 0xfc, 0x8f, 0xe7, 0xf0, 0x9f, 00, 0x7f,
+ 0x5b, 0xe, 0x7f, 00, 0xfc, 0xc1, 0x1c, 0xfe, 0x93, 0xe0,
+ 0x3f, 0x55, 0xb0, 0xde, 0xa7, 0xb, 0xd6, 0xfb, 0x4c, 0xc1,
+ 0x7a, 0xb7, 0x17, 0xd8, 0x3f, 0x94, 0x67, 0x9f, 0xf8, 0xbe,
+ 0xe1, 0xcf, 0x1, 0xbe, 0x72, 0xc, 0x8c, 0xeb, 0xc5, 0xc0,
+ 0xb8, 0x1a, 0xc, 0x8c, 0x8b, 0xc1, 0xc0, 0xb8, 0xab, 0xc,
+ 0x8c, 0x4b, 0xca, 0xc0, 0x5f, 0xb2, 0xf4, 0xef, 0xb2, 0xf0,
+ 0xdd, 0x96, 0x9d, 0x23, 0x16, 0xff, 0x65, 0xb, 0xdf, 0x63,
+ 0xe1, 0xaf, 0x58, 0xf8, 0xa8, 0x65, 0xe7, 0x5e, 0xb, 0x7f,
+ 0xd5, 0x92, 0xdf, 0x67, 0xe1, 0x63, 0x16, 0xfe, 0x9a, 0x85,
+ 0x8f, 0x5b, 0x78, 0xcc, 0xc2, 0x27, 0x2c, 0x7c, 0xbf, 0x85,
+ 0x1f, 0xb0, 0xf0, 0x49, 0xb, 0x7f, 0xdd, 0xc2, 0xf, 0x5a,
+ 0xf8, 0x94, 0x85, 0x1f, 0xb2, 0x30, 0xae, 0x5b, 0x3, 0x3f,
+ 0x6c, 0xf1, 0xa7, 0x2d, 0xfc, 0x88, 0x81, 0xbd, 0xf8, 0x3f,
+ 0x4a, 0xdf, 0x40, 0x6c, 0xbe, 0x69, 0xac, 0x29, 0x93, 0x13,
+ 0x78, 0x77, 0xe8, 0x2c, 0x89, 0x90, 0x63, 0x9c, 0xa4, 0x90,
+ 0xb6, 0xe9, 0xbc, 0x32, 0x4e, 0xe, 0x66, 0x9c, 0xa1, 0xda,
+ 0x71, 0x72, 0x85, 0xc2, 0xe3, 0xe4, 0xe, 0x5, 0xc6, 0x49,
+ 0xe, 0x9d, 0x23, 0x65, 0x47, 0xe8, 0xc, 0xb8, 0x33, 0x24,
+ 0x9f, 0xa5, 0xa2, 0x71, 0xf2, 0x40, 0x54, 0xbc, 0xe3, 0x1c,
+ 0xa9, 0x2c, 0xf6, 0x4c, 0x50, 0x49, 0xd9, 0x3a, 0x3a, 0x4b,
+ 0x53, 0xce, 0x52, 0xe9, 0x38, 0x69, 0x21, 0x53, 0x56, 0x36,
+ 0x4e, 0xde, 0xc7, 0x88, 0xbf, 0xc7, 0x18, 0x2e, 0xc4, 0x27,
+ 0x2e, 0xd1, 0x66, 0xac, 0xda, 0x48, 0x45, 0xe2, 0x8, 0x95,
+ 0x89, 0xe3, 0x54, 0x4e, 0x2d, 0xe4, 0xa7, 0x56, 0x9c, 0x92,
+ 0x36, 0x9a, 0x4b, 0xed, 0xb4, 0x8c, 0xb6, 0x50, 0x17, 0x75,
+ 0xd0, 0x2d, 0xd4, 0x49, 0xdf, 0x82, 0xb6, 0x13, 0x73, 0x2b,
+ 0x80, 0x71, 0x7b, 0x83, 0xe2, 0x7d, 0x2f, 0x3, 0x96, 0x80,
+ 0x35, 0x73, 0x89, 0xa9, 0xa7, 0x48, 0x69, 0x9, 0x4f, 0x90,
+ 0xef, 0x31, 0xc8, 0x9, 0x3e, 0x79, 0x68, 0x9a, 0xb5, 0xde,
+ 0x14, 0xe2, 0x4f, 0x9e, 0x1b, 0x20, 0xd9, 0x49, 0xa5, 0x74,
+ 0x23, 0xe8, 0x71, 0x58, 0x31, 0xbc, 0x17, 0x1b, 0x61, 0x19,
+ 0x56, 0x44, 0x85, 0xa6, 0x9e, 0x57, 0x5a, 0x60, 0x4a, 0x83,
+ 0x8d, 0xf2, 0xb0, 0xa3, 0x5e, 0xeb, 0x18, 0xa3, 0x23, 0x61,
+ 0x67, 0xbd, 0xd6, 0x34, 0x46, 0x77, 0x86, 0x5d, 0xf5, 0x5a,
+ 0xc3, 0x18, 0x1d, 0xa, 0xbb, 0xeb, 0xb5, 0xe0, 0x18, 0xdd,
+ 0x16, 0x96, 0xeb, 0xb5, 0xba, 0x13, 0x34, 0xcc, 0x78, 0xf9,
+ 0x3, 0x34, 0x18, 0x56, 0xc, 0x5e, 0x67, 0xc, 0xfe, 0xa6,
+ 0xb0, 0xe6, 0x36, 0x4, 0x5d, 0x6, 0x1, 0xc9, 0xe6, 0xb0,
+ 0x6, 0xd5, 0x85, 0x63, 0xd4, 0x10, 0xd6, 0x4c, 0xdd, 0xe5,
+ 0x6, 0x81, 0xa1, 0xba, 0xb0, 0x56, 0x64, 0x48, 0xe6, 0x1b,
+ 0x4, 0x24, 0x33, 0xc3, 0x9a, 0xc7, 0x90, 0xf8, 0xc, 0x2,
+ 0x12, 0x35, 0xac, 0x15, 0xd7, 0x6b, 0x9e, 0xe3, 0x74, 0xf5,
+ 0x39, 0xaa, 0x40, 0xac, 0xa7, 0xef, 0x38, 0x4b, 0x95, 0xde,
+ 0x19, 0x13, 0xe4, 0xe7, 0x54, 00, 0x79, 0x3, 0x26, 0x2d,
+ 0x4f, 0x50, 0x95, 0x77, 0x26, 0xe8, 0x9, 0x9a, 0x75, 0x96,
+ 0x82, 0x4f, 0x85, 0x8c, 0x9d, 0x46, 0xb5, 0x68, 0xbf, 0xb1,
+ 0xc5, 0xa8, 0xe6, 0xe9, 0xdf, 0x6d, 0x6e, 0x2e, 0xba, 0x7b,
+ 0x9c, 0x66, 0x87, 0xcc, 0xdd, 0x18, 0xe3, 0xc6, 0x2e, 0x2c,
+ 0x5, 0x8f, 0xa5, 0x70, 0x85, 0x9d, 0xb4, 0x99, 0x8, 0x29,
+ 0xa1, 0xfc, 0x5d, 0x68, 0x56, 0x25, 0x38, 0x94, 0xa7, 0xd0,
+ 0x74, 0x7e, 0x8c, 0xc6, 0xf1, 0x11, 0xd, 0x8b, 0x72, 0x1c,
+ 0xf2, 0xdc, 0x24, 0x4d, 0x64, 0xc2, 0x4b, 0xab, 0xa0, 0xcf,
+ 0x49, 0x9a, 0x6e, 0x84, 0xd7, 0x3b, 0xc7, 0xa1, 0xa9, 0x61,
+ 0xc7, 0x4, 0x5d, 0x89, 0xad, 0x7a, 0x11, 0xe8, 0xb9, 0xb6,
+ 0x7d, 0xaf, 0x51, 0x84, 0x7, 0xa0, 0x7f, 0x10, 0x49, 0xfa,
+ 0x24, 0xec, 0x7c, 0x2a, 0xcf, 0xe6, 0x59, 0x7a, 0xdc, 0xb2,
+ 0x79, 0x2f, 0xb9, 0xd, 0xdd, 0x5e, 0xce, 0xd6, 0x4, 0xcd,
+ 0x5b, 0xe5, 0x37, 0x8b, 0xbd, 0x81, 0xcc, 0x1f, 0xaf, 0xe7,
+ 0xc7, 0x7f, 0x1d, 0xff, 0x2d, 0x9d, 0xd5, 0x81, 0xf3, 0x4a,
+ 0x1b, 0xd3, 0xb5, 0xc8, 0xae, 0x19, 0xc3, 0xf9, 0x3b, 0x6a,
+ 0x1d, 0x67, 0xa9, 0x9a, 0xa3, 0xe4, 0x3f, 0x9d, 0x1b, 0xd6,
+ 0x5, 0x8, 0x1f, 0xe2, 0x57, 0x65, 0x85, 0x30, 0xbb, 0xc3,
+ 0x2b, 0x48, 0x1, 0xfc, 0x3c, 0xe0, 0x1d, 0x74, 0x25, 0x5a,
+ 0x45, 0xd, 0xe, 0x77, 0x1d, 0x5a, 0xc5, 0x32, 0x34, 0x8b,
+ 0x66, 0xb4, 0x84, 0xcd, 0x38, 0xfe, 0xb9, 0x3b, 0xfe, 0x76,
+ 0x36, 0xa, 0x73, 0x81, 0xb9, 0x28, 0x8b, 0xd8, 0x6d, 0xb8,
+ 0x1f, 0xb2, 0xdd, 0xf6, 0x18, 0xdb, 0x45, 0xed, 0xe2, 0xc4,
+ 0xe6, 0x4e, 0x7e, 0x22, 0x5b, 0xa1, 0x35, 0x8, 0x9, 0xbb,
+ 0x7b, 0x21, 0x64, 0xfa, 0x82, 0xa3, 0x58, 0x63, 0x93, 0xb5,
+ 0x16, 0xb9, 0x70, 0x9c, 0x16, 0xd9, 0x64, 0x5d, 0x86, 0x3c,
+ 0x4a, 0xb2, 0xf3, 0x14, 0x39, 0x71, 0x90, 0xaf, 0xba, 0x54,
+ 0x74, 0xb5, 0x6d, 0xa6, 0xde, 0x26, 0x17, 0xdb, 0xe4, 0x35,
+ 0xb6, 0xc5, 0x25, 0x36, 0xb9, 0xd4, 0x26, 0x97, 0xb9, 0xed,
+ 0x43, 0xb3, 0x7c, 0xfb, 0x64, 0xb1, 0xe, 0x65, 0x3, 0x3d,
+ 0x4e, 0x2b, 0x42, 0x4e, 0x74, 0x17, 0xdb, 0xf7, 0xe, 0x9c,
+ 0x50, 0x42, 0x5a, 0x8b, 0x11, 0xaa, 0x72, 0x78, 0x3c, 0x9b,
+ 0xce, 0x21, 0xa8, 0xe7, 0x69, 0x2d, 0x7d, 0x7, 0x63, 0x4f,
+ 0xd2, 0x4d, 0xf4, 0x14, 0x8a, 0xed, 0x6f, 0x71, 0x5b, 0x3d,
+ 0x8d, 0xc2, 0xf8, 0x2e, 0x42, 0xff, 0xc, 0x3a, 0xf0, 0xf7,
+ 0x10, 0xe6, 0x67, 0xd1, 0x21, 0xbf, 0x8f, 0x2e, 0xf7, 0x1c,
+ 0x3a, 0xda, 0x5, 0x9c, 0xe6, 0xe7, 0x31, 0xfa, 0x77, 0xe0,
+ 0x5e, 0xcc, 0x8b, 0xe1, 0xb9, 0x6c, 0xc9, 0x4, 0x21, 0xe1,
+ 0x4, 0x28, 0xe6, 0x16, 0x57, 0x9e, 0xce, 0xee, 0xc1, 0x6d,
+ 0xc8, 0x5f, 0xc9, 0x9b, 0x77, 0x3e, 0x9b, 0xb8, 0xc5, 0x56,
+ 0xe2, 0xa6, 0x99, 0xf3, 0x56, 0x6d, 0xb7, 0x63, 0xb3, 0xda,
+ 0xf6, 0xc3, 0xec, 0x2f, 0x3f, 0x47, 0xe, 0x5f, 0xa5, 0xa9,
+ 0xf4, 0x5a, 0x9e, 0xad, 0xef, 0x64, 0x6d, 0xfd, 0xc8, 0x90,
+ 0xa1, 0xd7, 0xdb, 0x36, 0xd6, 0xd8, 0xe4, 0x5a, 0x9b, 0x5c,
+ 0x67, 0x93, 0xeb, 0x2d, 0x72, 0xde, 0x38, 0x35, 0x80, 0x5a,
+ 0x83, 0xff, 0xba, 0xdd, 00, 0x35, 0xf, 0xd0, 0x54, 0xa0,
+ 0xb5, 0xf8, 0xaf, 0x67, 0xbe, 0xf6, 0x24, 0x5d, 0x97, 0x5b,
+ 0xc2, 0x8d, 0x66, 0x37, 0x58, 0xc7, 0xdd, 0xe0, 0x5a, 0x93,
+ 0x5e, 0xcf, 0xf4, 0x6, 0x93, 0x5e, 0xc3, 0x74, 0x93, 0x49,
+ 0xaf, 0x65, 0x7a, 0xa3, 0xdd, 0x31, 0x6c, 0xb7, 0xcc, 0x7a,
+ 0x7f, 0x13, 0xe9, 0x79, 0xb, 0xe9, 0x79, 0x1b, 0xe9, 0x79,
+ 0x7, 0xe9, 0x79, 0x97, 0x96, 0xd2, 0xfb, 0xb4, 0x9d, 0x7e,
+ 0x89, 0xcb, 0xeb, 0x57, 0x79, 0xae, 0x3e, 0x99, 0x75, 0x75,
+ 0xa9, 0x15, 0xb6, 0xa, 0xdb, 0x93, 0x4d, 0x36, 0xd9, 0x5c,
+ 0x18, 0xb9, 0xdf, 0x60, 0x89, 0xdf, 0x62, 0x89, 0xdf, 0xe5,
+ 0x99, 0x7b, 0xa, 0x99, 0x37, 0xcd, 0xbd, 0x4, 0x19, 0x37,
+ 0x9f, 0x43, 0x9a, 0xe7, 0xbc, 0xb2, 0xc2, 0x5d, 0xe9, 0x76,
+ 0xb8, 0xbb, 0x2a, 0xdd, 0x4e, 0x9f, 0x2b, 0x53, 0xca, 0xe0,
+ 0x5c, 0x7e, 0x4d, 0xf9, 0x58, 0x19, 0x5d, 0x3c, 0x70, 0x18,
+ 0x8c, 0xdb, 0x9f, 0xa1, 0xe4, 0x40, 0x8e, 0x58, 0x9, 0x64,
+ 0x28, 0xcd, 0x5d, 0x95, 0x23, 0xd7, 0xe4, 0xaa, 0x2c, 0xa9,
+ 0xf8, 0x9c, 0xb9, 0x23, 0x45, 0x3e, 0xa7, 0x49, 0xf3, 0xc9,
+ 0xad, 0x74, 0xe7, 0x75, 0xac, 0x25, 0xe8, 0x83, 0x84, 0xde,
+ 0xe7, 0x16, 0xd3, 0xa9, 0x58, 0x54, 0x52, 0xa5, 0x98, 0x41,
+ 0xf3, 0x84, 0x9f, 0xea, 0x44, 0x80, 0x56, 0x8b, 0x2a, 0xda,
+ 0x28, 0x66, 0xd2, 0x56, 0x31, 0x8b, 0x76, 0x8b, 0x20, 0x25,
+ 0xc4, 0x6c, 0xfa, 0xb8, 0x98, 0x43, 0xb7, 0x8b, 0x2b, 0xf3,
+ 0x9c, 0x7c, 0x1a, 0x85, 0x6b, 0x3a, 0x79, 0x11, 0x32, 0x95,
+ 0x5b, 0x81, 0x36, 0xd, 0x4e, 0x16, 0x57, 0x16, 0x3b, 0xe0,
+ 0x56, 0xb1, 0xec, 0xc7, 0x36, 0x8a, 0x95, 00, 0x43, 0x6c,
+ 0xda, 0x76, 0xb8, 0x58, 0x93, 0x7d, 0xce, 0x5c, 0x56, 0xf1,
+ 0xb9, 0xec, 0x8d, 0x17, 0x63, 0xe3, 0xae, 0x2c, 0xed, 0xf1,
+ 0xb9, 0x73, 0x87, 0x8a, 0x7d, 0xee, 0x2c, 0xad, 0xfa, 0xe4,
+ 0xdc, 0xa1, 0x12, 0x9f, 0x9c, 0xa5, 0xa7, 0xf8, 0x14, 0x3,
+ 0x97, 0xfa, 0x8a, 0xc, 0xac, 0xf9, 0x3c, 0x56, 0x18, 0x8a,
+ 0xf3, 0xc2, 0xd0, 0x44, 0x65, 0x20, 0xaf, 0x42, 0x18, 0xea,
+ 0x11, 0x86, 0xc5, 0xb8, 0xcd, 0xaf, 0xa1, 0xa, 0xb1, 0x84,
+ 0xe6, 0x8a, 0xa5, 0xb4, 0x58, 0x2c, 0xa3, 0x46, 0x7c, 0x69,
+ 0xb6, 0xe3, 0xdb, 0xf5, 0x66, 0xb1, 0x92, 0xf6, 0xe0, 0x83,
+ 0x73, 0x3f, 0xbe, 0x32, 0xf, 0xe1, 0x2b, 0xf1, 0x4e, 0xb1,
+ 0x96, 0x8e, 0x88, 0x75, 0x74, 0x4c, 0x34, 0xd0, 0x83, 0xa2,
+ 0x31, 0x2f, 0x2c, 0xcf, 0xe0, 0x94, 0x9b, 0x61, 0x79, 0x11,
+ 0x32, 0x17, 0xf0, 0xe7, 0x64, 0x39, 0xd0, 0xbf, 0x1b, 0x8d,
+ 0xa5, 0xd6, 0xe1, 0xea, 0xaa, 0x75, 0xd9, 0x69, 0xad, 0x75,
+ 0x5b, 0x59, 0x75, 0x2c, 0x41, 0x2c, 0xb6, 0xd6, 0xca, 0x88,
+ 0xb, 0xae, 0x30, 0x9f, 0x73, 0xa1, 0x36, 0x3d, 0xa3, 0xa2,
+ 0xd8, 0x32, 0x2d, 0x23, 0xd3, 0xdc, 0xb6, 0x30, 0x6b, 0x4b,
+ 0xb3, 0x67, 0x9b, 0x92, 0xdb, 0x9d, 0xc2, 0xe7, 0xc, 0x9c,
+ 0xb8, 0xf8, 0x30, 0x3b, 0x5e, 0x9b, 0xe7, 0xf7, 0xd5, 0x9c,
+ 0x2e, 0x11, 0x23, 0x45, 0xec, 0x25, 0x55, 0xe0, 0x55, 0x2a,
+ 0x6, 0x69, 0xb6, 0x48, 0xd0, 0x7c, 0x31, 0x44, 0x2b, 0xc5,
+ 0xad, 0xf0, 0x39, 0x49, 0x51, 0x91, 0xa2, 0x11, 0xc8, 0xe,
+ 0x8a, 0x11, 0xfa, 0xac, 0x18, 0xcd, 0xf3, 0xf1, 0x59, 0x74,
+ 0x30, 0xb3, 0xc3, 0xdf, 0xd, 0xf, 0x71, 0xe, 0x44, 0x50,
+ 0x43, 0x3b, 0x6d, 0xd, 0x9f, 0xa1, 0xeb, 0xca, 0xc4, 0x47,
+ 0x63, 0x54, 0xcd, 0xed, 0xd2, 0x9, 0x76, 0xb3, 0xa6, 0x1c,
+ 0x38, 0x8a, 0xde, 0xe5, 0xb2, 0x58, 0x19, 0xdc, 0x8c, 0x90,
+ 0xc, 0xee, 0x14, 0x6e, 0x51, 0x43, 0xfd, 0xd7, 0x63, 0x18,
+ 0xe7, 0xe7, 0x5a, 0x78, 0x7, 0xeb, 0x7f, 0x78, 0x60, 0x9c,
+ 0x36, 0x33, 0xdf, 0x12, 0xe2, 0x9, 0x13, 0xc4, 0x56, 0xdb,
+ 0xee, 0x23, 0x25, 0xc, 0x59, 0x1b, 0xe8, 0x76, 0x8b, 0x6e,
+ 0x87, 0x5f, 0x8e, 0x10, 0xe6, 0xb4, 0xec, 0x74, 0xe2, 0xbe,
+ 0x6f, 0x51, 0xba, 0xa, 0x4, 0x60, 0x9d, 0x87, 0xb, 0x85,
+ 0x6c, 0x2c, 0x1b, 0xb4, 0x49, 0xc6, 0x2e, 0x37, 0xd0, 0xfe,
+ 0x47, 0x26, 0xb5, 0x67, 0x7, 0x9c, 0xf7, 0xb2, 0x2f, 0xd8,
+ 0x33, 0xc7, 0x9c, 0x15, 0x1d, 00, 0x2d, 0x13, 0xb4, 0xc5,
+ 0x8e, 0x7d, 0x37, 0xde, 0xf8, 0x24, 0x4e, 0x92, 0x4b, 0x3c,
+ 0x48, 0xa5, 0xe2, 0x14, 0x4d, 0x13, 0xf, 0xd1, 0x4c, 0x71,
+ 0x9a, 0xe6, 0x88, 0x47, 0xa9, 0x46, 0x7c, 0xb, 0x75, 0x87,
+ 0x26, 0x27, 0xc6, 0x51, 0x7b, 0x8f, 0x53, 0x9b, 0x78, 0x82,
+ 0x3a, 0xc5, 0x79, 0xda, 0x25, 0x9e, 0xa4, 0x3e, 0xf1, 0x14,
+ 0xa5, 0xc4, 0xd3, 0x38, 0x86, 0xdf, 0xa5, 0xa3, 0xe2, 0x19,
+ 0x1a, 0x17, 0xdf, 0xa3, 0x97, 0xc5, 0xb3, 0xf4, 0xb6, 0xf8,
+ 0xbe, 0x70, 0x88, 0x17, 0x85, 0x47, 0xbc, 0x24, 0x4a, 0xc5,
+ 0xf, 0xc4, 0x2c, 0xf1, 0xc3, 0xbc, 0x5c, 0x3d, 0x97, 0xcd,
+ 0xd5, 0xf3, 0x90, 0xe1, 0x36, 0x16, 0xb5, 0xd8, 0xf2, 0xf5,
+ 0xab, 0x1d, 0x6b, 0xcc, 0xf0, 0x1f, 0x3e, 0x4e, 0x25, 0x26,
+ 0x75, 0xd7, 0x18, 0xb9, 0x9c, 0x96, 0xf4, 0xae, 0xac, 0xf4,
+ 0xee, 0x31, 0xba, 0x3e, 0x60, 0xbc, 0x52, 0x5a, 0x88, 0x1c,
+ 0x6f, 0xe2, 0xff, 0x81, 0xf1, 0xe, 0x36, 0xf8, 0xec, 0x7f,
+ 0x85, 0x71, 0x9a, 0xf8, 0xd6, 0xc1, 0xc3, 0xc5, 0xdb, 0xb1,
+ 0xfa, 0x14, 0x1d, 0xf3, 0x76, 0x2, 0xde, 0xe3, 0xed, 0x2,
+ 0x3c, 0xec, 0xdd, 0xa, 0x78, 0x87, 0x77, 0x1b, 0xe0, 0xa1,
+ 0xc7, 0x2, 0x5a, 0xf0, 0x7e, 0xba, 0x99, 0x93, 0xeb, 0x42,
+ 0x35, 0x78, 0x6f, 0x97, 0x76, 0x7, 0xb4, 0x83, 0x63, 0x34,
+ 0xa0, 0xdd, 0x82, 0xe1, 0xde, 0xc0, 0xc3, 0xbc, 0xd6, 0x5a,
+ 0xc3, 0x3, 0x32, 0xda, 0x78, 0x88, 0x9f, 0x1f, 0xf8, 0xd7,
+ 0x19, 0x6f, 0xe, 0x6e, 0x5e, 0xe6, 0x23, 0x69, 0x95, 0x77,
+ 0x3b, 0x26, 0x78, 0xbd, 0x37, 00, 0xaa, 0xde, 0x1d, 0x80,
+ 0x6e, 0xef, 0x4e, 0xc0, 0x39, 0x81, 0x32, 0x81, 0xcf, 0x8f,
+ 0x52, 0xc3, 0x6a, 0xb9, 0x77, 0x17, 0x44, 0x5a, 0xc0, 0x7b,
+ 0xe3, 0x9, 0x2a, 0xa, 0x78, 0x77, 0x9d, 0x24, 0xe7, 0x63,
+ 0x79, 0xd5, 0x15, 0xa, 0xe0, 0xb5, 0x74, 0x53, 0xd5, 0x9f,
+ 0x4e, 0xdc, 0x17, 0x70, 0xab, 0x90, 0xf8, 0x29, 0x12, 0xf7,
+ 0x33, 0x92, 0xc5, 0xab, 0xe4, 0x17, 0xaf, 0x51, 0x95, 0x78,
+ 0x9d, 0xae, 0x12, 0x6f, 0xa3, 0x4f, 0xbe, 0x43, 0xbd, 0xe2,
+ 0x5d, 0x1a, 0x10, 0xef, 0x51, 0x52, 0xbc, 0x4f, 0xfb, 0xc4,
+ 0x7, 0x74, 00, 0xaf, 0xa3, 0x83, 0x92, 0x4a, 0x87, 0xa4,
+ 0x12, 0xfa, 0xa2, 0x34, 0x85, 0xe, 0x4b, 0xa5, 0x74, 0x8f,
+ 0xa4, 0xd1, 0x31, 0xc9, 0x4b, 0x17, 0xa4, 0xa9, 0xf4, 0xb2,
+ 0x34, 0x8d, 0x5e, 0x91, 0x7c, 0xf4, 0x13, 0xa9, 0x9c, 0x5e,
+ 0x95, 0x66, 0xd0, 0x1b, 0xd2, 0x4c, 0x7a, 0x4f, 0x9a, 0x45,
+ 0x1f, 0x4a, 0xf3, 0xe9, 0xa2, 0x54, 0x8d, 0x2f, 0x84, 0x1a,
+ 0xe1, 0x92, 0x16, 0x8a, 0x12, 0xa9, 0x4e, 0x4c, 0x95, 0x96,
+ 0x88, 0xa, 0x69, 0xa9, 0x8, 0x48, 0x2b, 0x44, 0x8d, 0xb4,
+ 0xb2, 0x20, 0xc1, 0x17, 0xac, 0x86, 0xf3, 0xb, 0xf3, 0x30,
+ 0xd2, 0xa3, 0x5, 0x25, 0x2a, 0x17, 0xd6, 0x6c, 0x20, 0xdb,
+ 0x7d, 0xb, 0x6, 0xfe, 0xb4, 0xc0, 0x9f, 0x6d, 0x4d, 0x97,
+ 0xc, 0x68, 0x97, 0x1b, 0xb8, 0xcc, 0xc9, 0xb1, 0x6e, 0x3a,
+ 0x3b, 0xc2, 0xf3, 0x38, 0xcd, 0xd2, 0x6, 0x2a, 0x93, 0x9a,
+ 0x28, 0x24, 0x6d, 0xa4, 0x95, 0xd2, 0x26, 0x6a, 0x91, 0x9a,
+ 0x49, 0x97, 0xae, 0x43, 0x34, 0x37, 0x23, 0x7a, 0x2d, 0xf4,
+ 0x88, 0xd4, 0x9a, 0xe7, 0xfd, 0xf3, 0xf4, 0x82, 0xe5, 0xfd,
+ 0xb7, 0xcd, 0xcf, 0x21, 0xba, 0xcd, 0xef, 0x3a, 0x80, 0x95,
+ 0x6e, 0x76, 0x1d, 0x38, 0x8e, 0xc7, 0x8f, 0xf7, 0x16, 0x3f,
+ 0x57, 0x99, 0xe9, 0x2e, 0x12, 0xed, 0x77, 0x1a, 0x83, 0x4e,
+ 0x73, 0x70, 0x37, 0xd8, 0xdc, 0x41, 0xd9, 0x18, 0x94, 0xcd,
+ 0xc1, 0x88, 0x5f, 0xce, 0x1b, 0x44, 0x2b, 0xe3, 0x51, 0xa0,
+ 0xe3, 0xe4, 0xb, 0x79, 0xbb, 0xfd, 0x46, 0x6f, 0xcb, 0x8e,
+ 0x87, 0xfc, 0xe3, 0x74, 0xb3, 0xed, 0x4c, 0x88, 0x6b, 0x55,
+ 0xda, 0x41, 0xaa, 0xb4, 0x93, 0xaa, 0xa4, 0x1b, 0x69, 0x81,
+ 0x74, 0x13, 0xad, 0x90, 0x6e, 0xa1, 0x26, 0x69, 0x37, 0x6d,
+ 0x97, 0xba, 0xe1, 0x54, 0xf, 0x8d, 0x4a, 0x3a, 0x7d, 0x42,
+ 0xea, 0xcd, 0x71, 0x48, 0xe0, 0x2d, 0xc8, 0x9f, 0x1, 0x2f,
+ 0xfe, 0x1, 0x50, 0x4b, 0x3, 0x4, 0xa, 00, 00, 00,
+ 0x8, 00, 0x55, 0x58, 0xda, 0x2c, 0x7a, 0x44, 0x1b, 0x63,
+ 0x14, 0x5, 00, 00, 0xb8, 0x8, 00, 00, 0x19, 00,
+ 00, 00, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69,
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x6e, 0x65,
+ 0x6c, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x7d, 0x55, 0x4d,
+ 0x74, 0x13, 0x55, 0x14, 0xfe, 0x5e, 0x93, 0x74, 0x92, 0xe9,
+ 0x10, 0x42, 0x28, 0xfd, 0xe1, 0xcf, 0x42, 0x29, 0xa4, 0x69,
+ 0x68, 0x51, 0xea, 0x1f, 0x41, 0xa0, 0xd, 0x2d, 0x94, 0x6,
+ 0x5a, 0x6c, 0x5, 0x83, 0x80, 0x4e, 0x93, 0x69, 0x32, 0x6d,
+ 0x98, 0x29, 0x93, 0x49, 0x4b, 0x15, 0xc5, 0x1f, 0xfc, 0x41,
+ 0x14, 0x7f, 0xf0, 0x9f, 0x8d, 0x1b, 0x5c, 0x71, 0x3c, 0x47,
+ 0xf, 0x49, 0xce, 0xb1, 0x1e, 0x77, 0x6e, 0x5c, 0xb8, 0x71,
+ 0xe3, 0xc2, 0x8d, 0x5b, 0xb7, 0x6e, 0x3d, 0x1e, 0xef, 0x9d,
+ 0x49, 0xdb, 0xb4, 0xf4, 0x98, 0x73, 0xf2, 0xe6, 0xbd, 0x7b,
+ 0xef, 0x77, 0xef, 0x7d, 0xf7, 0xbb, 0xef, 0xbd, 0x5f, 0xfe,
+ 0xfd, 0xe1, 0x27, 0x78, 0xb0, 0x17, 0x77, 0x64, 0xec, 0x43,
+ 0x9f, 0x84, 0x7e, 0x3f, 0x12, 0x32, 0xea, 0x70, 0x34, 0x80,
+ 0x1e, 0xc, 0x48, 0x18, 0xf4, 0xe3, 0x98, 0x8c, 0x7a, 0x1c,
+ 0x97, 0x31, 0x84, 0x13, 0x7e, 0xc, 0xb3, 0x3c, 0x29, 0xe1,
+ 0xa4, 0xc, 0x5, 0xa7, 0x78, 0x31, 0x12, 0xc0, 0x28, 0x4e,
+ 0xb3, 0xfa, 0x69, 0x9e, 0x8d, 0xc9, 0x18, 0xc7, 0x33, 0xac,
+ 0x3d, 0x23, 0xe1, 0xac, 0x1f, 0xcf, 0xca, 0x68, 0x44, 0x8a,
+ 0xd, 0xcf, 0xf9, 0xf1, 0x1c, 0x7f, 0xcf, 0xfb, 0x71, 0x41,
+ 0xc2, 0x45, 0x19, 0x5b, 0x38, 0xe0, 0xf3, 0x32, 0xb6, 0xa1,
+ 0x4f, 0xc6, 0xb, 0x50, 0x3, 0x34, 0x9b, 0x60, 0x71, 0x9a,
+ 0x97, 0x19, 0x5e, 0x6a, 0x3c, 0x4c, 0x4a, 0xc8, 0xca, 0xe8,
+ 0x40, 0x8e, 0x17, 0x3a, 0xf, 0x53, 0x1c, 0x6e, 0x3a, 0x80,
+ 0x3c, 0x2e, 0xc9, 0x30, 0x60, 0xfa, 0x31, 0xc3, 0x49, 0x5f,
+ 0xe6, 0xb0, 0x97, 0x25, 0x58, 0x12, 0xa, 0x2, 0x3e, 0x5b,
+ 0xb7, 0xf3, 0x9a, 0x40, 0x28, 0x39, 0xa5, 0xce, 0xaa, 0x3d,
+ 0xea, 0x9c, 0xdd, 0x93, 0x54, 0x27, 0xb4, 0x7c, 0x9c, 0x54,
+ 0x96, 0x66, 0x5b, 0xf3, 0x2, 0xf5, 0x33, 0x96, 0x79, 0x69,
+ 0xc6, 0x16, 0xf0, 0xcf, 0xa8, 0x85, 0xc2, 0x9c, 0x69, 0x65,
+ 0x4, 0x1a, 0x97, 0xcd, 0xc7, 0xb5, 0x2b, 0xf6, 0xa0, 0xae,
+ 0xe5, 0x33, 0x4, 0xa9, 0x33, 0xa7, 0x5, 0x36, 0x2c, 0xeb,
+ 0xfa, 0x8b, 0xb6, 0x6d, 0x1a, 0xa4, 0xa8, 0x3f, 0xa8, 0x1b,
+ 0xba, 0x7d, 0x48, 0xc0, 0x13, 0xe9, 0x3c, 0x23, 0xe0, 0x4d,
+ 0x98, 0x19, 0xa, 0xba, 0x3e, 0xa9, 0x1b, 0xda, 0xa9, 0xe2,
+ 0xa5, 0x9, 0xcd, 0x1a, 0x57, 0x27, 0x38, 0x8d, 0x7a, 0x35,
+ 0x6d, 0xeb, 0xa6, 0x21, 0xd0, 0x11, 0x59, 0xf6, 0x32, 0x30,
+ 0xab, 0x19, 0x76, 0xdc, 0x5d, 0xe7, 0x55, 0x23, 0xdb, 0x33,
+ 0x32, 0x31, 0xa5, 0xa5, 0xed, 0x78, 0xe7, 0x39, 0x1, 0x79,
+ 0xcc, 0x2c, 0x5a, 0x69, 0x6d, 0x50, 0x67, 0x74, 0x8b, 0x5a,
+ 0xb4, 0x73, 0x64, 0xab, 0xa7, 0x55, 0xf6, 0x32, 0xaa, 0x1a,
+ 0x5a, 0xbe, 0x9b, 0x61, 0xa, 0x9e, 0xc4, 0x1, 0x81, 0xe0,
+ 0xca, 0x3d, 0xa, 0x84, 0xcf, 0x9c, 0x4a, 0xb4, 0xf5, 0xad,
+ 00, 0xb1, 0xa9, 0xad, 0xe0, 0x61, 0x3c, 0x22, 0xb0, 0x6e,
+ 0xc9, 0x7e, 0xd0, 0x34, 0xa8, 00, 0x81, 0xe3, 0x5a, 0x7e,
+ 0x56, 0x63, 0x4b, 0xb6, 0x2a, 0x4a, 0x98, 0x55, 0x30, 0x87,
+ 0x2b, 0xa4, 0x18, 0xad, 0x56, 0xe6, 0x80, 0x82, 0x5e, 0x46,
+ 0x86, 0x1f, 0x2c, 0xf, 0x43, 0xe6, 0x15, 0x3c, 0x8a, 0xc7,
+ 0x24, 0xbc, 0xa8, 0xe0, 0x25, 0x5c, 0x55, 0xf0, 0x32, 0x5e,
+ 0x51, 0x70, 0xd, 0x57, 0x25, 0xbc, 0xaa, 0xe0, 0x35, 0x5e,
+ 0xbc, 0x8e, 0x37, 0xa8, 0x2e, 0xab, 0xa, 0x48, 0x85, 0x1d,
+ 0x19, 0x66, 0xfc, 0x75, 0x5, 0x8f, 0xe3, 0x9, 0x1, 0x62,
+ 0x70, 0x3f, 0x87, 0x91, 0x12, 0xb4, 0x7b, 0x5d, 0xb3, 0x4,
+ 0x9a, 0x96, 0x20, 0xc7, 0x2c, 0x3d, 0xd3, 0xaf, 0x66, 0x93,
+ 0xea, 0xbc, 0x59, 0xa4, 0x9c, 0xb7, 0xac, 0x56, 0x24, 0x4c,
+ 0xa3, 0x60, 0x5b, 0xaa, 0x6e, 0xd8, 0x5, 0x9, 0x6f, 0x2a,
+ 0x78, 0xb, 0x6f, 0x2b, 0x78, 0x7, 0x37, 0x14, 0xbc, 0x8b,
+ 0x9b, 0xa, 0xde, 0xc3, 0xfb, 0xa, 0x6e, 0xf1, 0xf2, 0x3,
+ 0xdc, 0xa8, 0x4d, 0x65, 0xc8, 0x28, 0x68, 0x76, 0x81, 0xb3,
+ 0xf8, 0x50, 0xc1, 0x47, 0xf8, 0x58, 0xc1, 0x6d, 0xb6, 0xfa,
+ 0x4, 0x7, 0x24, 0x7c, 0xaa, 0xe0, 0x33, 0x7c, 0x2e, 0xe1,
+ 0xb, 0x5, 0x5f, 0x72, 0xa1, 0x37, 0x8c, 0x99, 0x96, 0x35,
+ 0xdf, 0xdd, 0x36, 0x6e, 0xcd, 0xb7, 0xa9, 0x59, 0x8a, 0xd5,
+ 0xad, 0xe0, 0x2b, 0x5c, 0x17, 0xd8, 0xb8, 0x6, 0x43, 0xb5,
+ 0xbc, 0x54, 0x5, 0x4d, 0x91, 0x1a, 0xb6, 0xc7, 0x6c, 0x4b,
+ 0x37, 0xb2, 0xf1, 0x21, 0x6e, 0x9c, 0xe6, 0xb5, 0x14, 0x8e,
+ 0x66, 0xb9, 0xe2, 0x9, 0xea, 0x56, 0xd3, 0xd0, 0x98, 0x30,
+ 0x89, 0x52, 0x76, 0xa9, 0xb, 0xd7, 0xf4, 0x13, 0x4b, 0xe2,
+ 0x4e, 0x1b, 0x46, 0x1c, 0x68, 0xb0, 0x6, 0x9a, 0x37, 0xa9,
+ 0x98, 0xbe, 0x89, 0xbc, 0x9a, 0x9e, 0x5e, 0x71, 0x28, 0x1c,
+ 0xd, 0x35, 0xf2, 0x3a, 0xc7, 0xa3, 0xa5, 0x65, 0x2d, 0xb3,
+ 0x68, 0xd0, 0x41, 0xd8, 0x18, 0x59, 0x6d, 0xc3, 0x1e, 0x7d,
+ 0x73, 0x39, 0xdd, 0xd6, 0x6a, 0x59, 0xe1, 0x36, 0xa8, 0x49,
+ 0x8c, 0xdd, 0xf4, 0x53, 0x8c, 0x45, 0x37, 0x21, 0x5a, 0xf,
+ 0xa4, 0x73, 0x66, 0x22, 0xa7, 0x5a, 0x74, 0x4, 0x98, 0x51,
+ 0x6f, 0x24, 0xc1, 0xae, 0x36, 0xad, 0xb1, 0xe3, 0xd5, 0xfb,
+ 0x35, 0x6c, 0x2a, 0x31, 0x63, 0x2, 0xe4, 0x66, 0x89, 0xf8,
+ 0x48, 0xed, 0x91, 0x66, 0xd9, 0x49, 0xd5, 0x50, 0xb3, 0x9a,
+ 0x9b, 0x61, 0x20, 0x4b, 0xdd, 0x30, 0xa7, 0x67, 0xec, 0x9c,
+ 0x80, 0x18, 0xa2, 0x1a, 0x10, 0xb2, 0xa6, 0x33, 0x4, 0x7a,
+ 0x57, 0x6c, 0xac, 0x9a, 0x78, 0x3c, 0xf9, 0x3f, 0xdd, 0xe4,
+ 0xf8, 0xf5, 0xa8, 0x19, 0xda, 0x4e, 0x74, 0x4d, 0x70, 0xe7,
+ 0x5a, 0x42, 0xda, 0xe8, 0xa4, 0x9e, 0x27, 0xce, 0x7d, 0xfa,
+ 0x8c, 0x9a, 0xa1, 0xeb, 0x46, 0x8a, 0xc, 0xd, 0xb9, 0x94,
+ 0xd6, 0xeb, 0x4e, 0xcb, 0xad, 0xb8, 0x51, 0xdc, 0x2e, 0x8c,
+ 0x57, 0xcd, 0xe9, 0xe8, 0x29, 0x96, 0x76, 0xb9, 0xa8, 0x15,
+ 0x88, 0x94, 0x74, 0xb1, 0x50, 0xcb, 0xa5, 0x73, 0x6b, 0x90,
+ 0x13, 0x5b, 0xb5, 0xb2, 0x1a, 0x77, 0xc0, 0x83, 0x17, 0x8,
+ 0xd5, 0x7d, 0xb5, 0x8c, 00, 0x86, 0x69, 0xeb, 0x93, 0xf3,
+ 0x6e, 0xf3, 0x30, 0x6d, 0x68, 0xa3, 0xfb, 0x78, 0x1f, 00,
+ 0x1f, 0xfd, 0xe9, 0x5e, 00, 0xff, 0xf6, 0x57, 0xbf, 0xbd,
+ 0xd5, 0x2f, 0x1d, 0x6b, 0xe7, 0x4b, 0xc7, 0x93, 0x46, 0xf,
+ 0x4, 0xdf, 0x38, 0x34, 0xc6, 0x1, 0xf1, 0x7, 0x24, 0x92,
+ 0x40, 0x1c, 0x8c, 0x56, 0x20, 0xa2, 0xb, 0xa8, 0x4b, 0x85,
+ 0x3d, 0xde, 0xa, 0xbc, 0x25, 0xf8, 0xa2, 0xf7, 0xe1, 0x5b,
+ 0x40, 0x7d, 0x2a, 0x2c, 0x79, 0x43, 0xe1, 0xa, 0xfc, 0x65,
+ 0x4, 0x5c, 0x3, 0xd9, 0x35, 0x68, 0xa0, 0x95, 0x92, 0xa,
+ 0xc9, 0x15, 0xac, 0x2b, 0x21, 0x48, 0xd6, 0xc1, 0xef, 0xb1,
+ 0xbe, 0x8c, 0x90, 0x3b, 0xdb, 0x50, 0x46, 0x98, 0x67, 0xa1,
+ 0x68, 0x19, 0x1b, 0xc9, 0xb2, 0x31, 0x15, 0xde, 0x54, 0x41,
+ 0x53, 0x9, 0xcd, 0xae, 0x93, 0x16, 0xd7, 0x49, 0x2b, 0xd9,
+ 0xb4, 0x3a, 0x51, 0x36, 0x7b, 0x43, 0x21, 0x37, 0xca, 0x2,
+ 0xb6, 0xa4, 0x2a, 0xd8, 0x9a, 0x5c, 0xc0, 0x36, 0xfa, 0x6e,
+ 0x3f, 0x19, 0xed, 0x2a, 0xe3, 0xa1, 0x98, 0xa7, 0x84, 0xb6,
+ 0x2e, 0xce, 0x29, 0x56, 0xc6, 0x8e, 0x28, 0x4f, 0xca, 0xd8,
+ 0x79, 0x36, 0xe6, 0x2b, 0xa1, 0x9d, 0xc5, 0xad, 0x8b, 0xe2,
+ 0x56, 0x47, 0x4c, 0xd6, 0xed, 0x31, 0x6f, 0x15, 0xd2, 0xb0,
+ 0xa8, 0x6b, 0x60, 0x1d, 0x4b, 0x82, 0x8b, 0x92, 0xa0, 0x63,
+ 0x1d, 0x92, 0x4b, 0xd8, 0xe5, 0x44, 0x60, 0x4c, 0x7b, 0x6c,
+ 0x1, 0x1d, 0x29, 0x4f, 0xa8, 0xd1, 0xe3, 0xa9, 0x60, 0x77,
+ 0x9, 0x7b, 0x62, 0xa1, 0x48, 0x9, 0x11, 0xc6, 0x35, 0x2f,
+ 0xe2, 0x9a, 0x19, 0xe7, 0xe2, 0x3b, 0xbf, 0xa3, 0xaa, 0xa,
+ 0x1c, 0xa4, 0xf1, 0x16, 0xda, 0x69, 0xdc, 0x5, 0x2f, 0x76,
+ 0x23, 0x8c, 0x3d, 0xf4, 0xe4, 0x75, 0x12, 0x1b, 0x5d, 0x38,
+ 0x82, 0x18, 0x4e, 0xd0, 0x23, 0x3d, 0x8e, 0x6e, 0x5c, 0x20,
+ 0xbe, 0xa6, 0x88, 0x99, 0x2b, 0xa4, 0xb9, 0x49, 0xcc, 0xdc,
+ 0x26, 0x5e, 0xee, 0x10, 0x23, 0x5f, 0x13, 0x1f, 0x77, 0xc9,
+ 0xcb, 0xb7, 0x78, 0xa, 0x15, 0x1c, 0xc6, 0x8f, 0x84, 0xfa,
+ 0x19, 0x7d, 0xf8, 0x15, 0x9, 0xfc, 0x86, 0xa3, 0xf8, 0x1d,
+ 0x3, 0xf8, 0x13, 0x83, 0xf8, 0xb, 0xc7, 0xf1, 0x37, 0xbd,
+ 0x9e, 0xff, 0x60, 0x58, 0xd4, 0x21, 0x29, 0xe8, 0x29, 0x17,
+ 0xf4, 0x92, 0x8b, 0xad, 0x18, 0x11, 0x3b, 0x31, 0x2a, 0xba,
+ 0x70, 0x5a, 0xf4, 0x62, 0x4c, 0xc4, 0x29, 0xda, 0xe, 0xf2,
+ 0x75, 0xc8, 0x65, 0x1a, 0xfd, 0xf4, 0xbe, 0x12, 0xd3, 0xd8,
+ 0xde, 0x75, 0x1f, 0xce, 0xce, 0xef, 0x22, 0x58, 0x9d, 0x36,
+ 0x7f, 0x43, 0xd4, 0x96, 0xd1, 0xe5, 0xbd, 0xe7, 0xb9, 0xb7,
+ 0xb4, 0x97, 0x30, 0xed, 0x2, 0x38, 0x8f, 0x26, 0xca, 0x78,
+ 0x33, 0x2e, 0x62, 0x2b, 0x3d, 0xe9, 0x82, 0x72, 0xae, 0x76,
+ 0xe, 0xcd, 0xea, 0x68, 0x6, 0x22, 0x97, 0x6a, 0x1e, 0xa6,
+ 0xba, 0xec, 0x65, 0xa7, 0xe1, 0x96, 0x32, 0xba, 0x97, 0xb,
+ 0x12, 0x74, 0x42, 0xe6, 0x10, 0x80, 0x4e, 0xe, 0xa7, 0x48,
+ 0x7a, 0x98, 0xd6, 0x75, 0x38, 0xf2, 0x1f, 0x50, 0x4b, 0x3,
+ 0x4, 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58, 0xda,
+ 0x2c, 0xe7, 0x52, 0x7f, 0x83, 0x46, 0xb, 00, 00, 0xe7,
+ 0x14, 00, 00, 0xf, 00, 00, 00, 0x76, 0x6e, 0x63,
+ 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x2e, 0x63, 0x6c, 0x61,
+ 0x73, 0x73, 0x9d, 0x57, 0x79, 0x7c, 0x54, 0xf5, 0x11, 0xff,
+ 0xce, 0xdb, 0x4d, 0xde, 0xee, 0xe6, 0x5, 0x92, 0xc0, 0x62,
+ 0x62, 0x2, 0x4, 0x45, 0x5d, 0x2, 0x8, 0x42, 0x5, 0x91,
+ 0xc3, 0x92, 0x10, 0x60, 0x2b, 0xc1, 0x48, 0x82, 0x18, 0x50,
+ 0xcb, 0xb2, 0xfb, 0x92, 0x2c, 0xec, 0xe5, 0xdb, 0xdd, 0x84,
+ 0x58, 0xb5, 0x45, 0x53, 0xad, 0xe2, 0x51, 0x6f, 0xc1, 0x13,
+ 0xf, 0xd6, 0x8a, 0x17, 0x96, 0x6c, 0x54, 0x44, 0xad, 0xb6,
+ 0x5a, 0xad, 0x3d, 0xbc, 0xad, 0xb5, 0xf6, 0xb2, 0xb6, 0xf6,
+ 0xd0, 0x6a, 0x45, 0x5b, 0x5b, 0xa4, 0x33, 0xef, 0xbd, 0x64,
+ 0x77, 0x93, 0xe0, 0x1f, 0xcd, 0x27, 0x6f, 0xe6, 0xf7, 0x9b,
+ 0xdf, 0xfc, 0xe6, 0xfa, 0xcd, 0x6f, 0xe6, 0xb7, 0x2f, 0x7c,
+ 0xf1, 0xd8, 0x13, 0x70, 0x60, 0x3a, 0x4d, 0xf3, 0xa0, 0x15,
+ 0xe7, 0xbb, 0xd1, 0x82, 0x6f, 0xba, 0xf1, 0x2d, 0x6c, 0x91,
+ 0xd1, 0x16, 0x15, 0x17, 0x78, 0x50, 0x84, 0xb, 0x65, 0xd2,
+ 0xeb, 0xc1, 0xb7, 0x71, 0x91, 0x8a, 0x8b, 0x65, 0xf2, 0x1d,
+ 0xf, 0x2e, 0xc1, 0xa5, 0x1e, 0xb8, 0xb1, 0xd5, 0xcd, 0xe4,
+ 0xcb, 0x4, 0x5c, 0x2e, 0xb, 0x57, 0xa8, 0xb8, 0xd2, 0x83,
+ 0x32, 0x7c, 0x57, 0x26, 0x57, 0x79, 0x70, 0x35, 0xae, 0x91,
+ 0xd1, 0xb5, 0x32, 0xba, 0x4e, 0x46, 0xd7, 0x7b, 0x70, 0x3,
+ 0x6e, 0x94, 0xd1, 0x36, 0x15, 0xdb, 0x3d, 0xa8, 0xc2, 0x4d,
+ 0x1e, 0xdc, 0x8c, 0x5b, 0x44, 0xfa, 0xad, 0xc2, 0x65, 0xae,
+ 0xdd, 0x26, 0xe0, 0x76, 0xa1, 0xed, 0x10, 0x70, 0x87, 0x80,
+ 0x3b, 0x45, 0xc9, 0x5d, 0xc2, 0x7c, 0xb7, 0x8a, 0x9d, 0x32,
+ 0xc9, 0x8, 0xb8, 0x47, 0xc0, 0xf7, 0x4, 0xdc, 0xeb, 0xe1,
+ 0x4d, 0xbb, 0x84, 0xf5, 0x3e, 0x99, 0xde, 0x2f, 0xe0, 0x1,
+ 0xe1, 0x7f, 0x50, 0x46, 0xf, 0x79, 0xb0, 0x1b, 0xf, 0x7b,
+ 0xf0, 0x7d, 0xec, 0x11, 0x5a, 0x9f, 0x80, 0xac, 0x80, 0x7e,
+ 0x59, 0x78, 0x44, 0xc5, 0xa3, 0x2a, 0x1e, 0xf3, 0x60, 0x2e,
+ 0xce, 0x77, 0x61, 0xaf, 0xe0, 0xc7, 0x5, 0xec, 0x13, 0xf0,
+ 0x84, 0x7, 0x73, 0xf0, 0xa4, 0x8, 0x79, 0xca, 0x85, 0x1f,
+ 0xb8, 0xf1, 0x34, 0x9e, 0xf1, 0xe0, 0x87, 0xf8, 0x91, 0xa8,
+ 0x7a, 0xd6, 0x85, 0xe7, 0x44, 0xc0, 0x8f, 0xc5, 0xeb, 0xe7,
+ 0x45, 0xde, 0xb, 0x62, 0xfb, 0x4f, 0x64, 0xf4, 0xa2, 0x8c,
+ 0x7e, 0x2a, 0xa3, 0x9f, 0xc9, 0xe6, 0x9f, 0xbb, 0xf1, 0xb,
+ 0xbc, 0x24, 0xd1, 0x7d, 0x59, 0x1c, 0x7d, 0x45, 0xb6, 0xbf,
+ 0x2a, 0xe0, 0x35, 0x15, 0xaf, 0x7b, 0xf0, 0x6, 0xde, 0x54,
+ 0xf1, 0x4b, 0x15, 0x6f, 0x11, 0xa8, 0x8b, 0x50, 0xb2, 0xa2,
+ 0x2b, 0x16, 0xec, 0xa, 0xeb, 0xdd, 0xba, 0x31, 0x9f, 0xe0,
+ 0x30, 0xda, 0x37, 0x10, 0x3c, 0x2b, 0x18, 0x35, 0x1b, 0xf1,
+ 0x54, 0x9c, 0x49, 0x4a, 0x30, 0x4a, 0xa8, 0x5e, 0xb1, 0x31,
+ 0xd0, 0x15, 0x98, 0x11, 0xe8, 0x4e, 0xcd, 0x8, 0x47, 0x3,
+ 0x1d, 0xfa, 0x8c, 0x86, 0x78, 0x24, 0x6e, 0x34, 0xc5, 0x43,
+ 0x7a, 0x84, 0x59, 0x8a, 0x83, 0x32, 0x4b, 0x12, 0xca, 0xd7,
+ 0xe5, 0xf8, 0x4c, 0xe, 0x5e, 0x1c, 0x65, 0x4, 0xba, 0x9b,
+ 0xc3, 0x9b, 0xf5, 0x48, 0xd2, 0x2f, 0x3b, 0x9, 0x65, 0x39,
+ 0x1e, 0x93, 0xc2, 0x3c, 0xce, 0x40, 0x34, 0x9c, 0x14, 0x2d,
+ 0x81, 0x18, 0x8b, 0x4f, 0xe9, 0xa1, 0x26, 0x3d, 0x1a, 0x37,
+ 0x7a, 0xcc, 0xe5, 0x96, 0x78, 0xda, 0x8, 0xa, 0x53, 0x71,
+ 0xc2, 0x94, 0xc2, 0x16, 0xad, 0xab, 0x67, 0x90, 0xec, 0x20,
+ 0x8c, 0xc9, 0x89, 0x5a, 0x66, 0x4, 0x12, 0x9d, 0xe1, 0x60,
+ 0x52, 0x9c, 0x48, 0x76, 0xcc, 0x62, 0x27, 0x12, 0x81, 0x70,
+ 0x2c, 0x65, 0xeb, 0x74, 0x24, 0xc2, 0xcc, 0xee, 0x64, 0xc8,
+ 0x2b, 0xa3, 0x63, 0xba, 0x1e, 0x6a, 0x8d, 0xaf, 0xd2, 0x93,
+ 0x7a, 0xaa, 0x21, 0x12, 0x4e, 0x70, 0x20, 0xd6, 0xb2, 0xf8,
+ 0x5, 0xe1, 0x58, 0x38, 0xb5, 0x88, 0xd, 0xf6, 0xe5, 0x85,
+ 0x64, 0xca, 0x69, 0xbc, 0xad, 0x81, 0xfd, 0xe4, 0x6d, 0x2b,
+ 0xc2, 0x31, 0x7d, 0x65, 0x3a, 0xba, 0x41, 0x37, 0x5a, 0x3,
+ 0x1b, 0x22, 0x4c, 0xf1, 0x34, 0x6e, 0xe, 0xea, 0x89, 0x54,
+ 0x38, 0x1e, 0x63, 0xab, 0x4a, 0x13, 0x86, 0xde, 0xae, 0x1b,
+ 0x86, 0x1e, 0x6a, 0x9, 0x9f, 0xc3, 0x8b, 0xe3, 0x7c, 0x53,
+ 0x72, 0xd6, 0x2d, 0x9, 0x47, 0xf5, 0x58, 0x92, 0x19, 0xd9,
+ 0xbc, 0x92, 0x28, 0x2b, 0x8a, 0xa6, 0xa3, 0x16, 0x5b, 0x71,
+ 0x3a, 0x11, 0x62, 0x8f, 0x85, 0x7f, 0x4, 0x67, 0x44, 0x7d,
+ 0x91, 0xe9, 0x8, 0xc1, 0x9b, 0x30, 0xe2, 0x41, 0x3d, 0x99,
+ 0x5c, 0x19, 0x37, 0xa2, 0x81, 0x88, 0x79, 0x3c, 0x1c, 0x77,
+ 0xf6, 0xcd, 0x27, 0x5c, 0x25, 0x21, 0x8e, 0xf3, 0x2a, 0xfe,
+ 0xd7, 0x83, 0xcc, 0xab, 0xfa, 0xfc, 0xfc, 0x67, 0xd2, 0x3b,
+ 0x3, 0xb1, 0x50, 0x44, 0x6f, 0xec, 0xd2, 0x45, 0xc6, 0x98,
+ 0x3c, 0x25, 0x26, 0x69, 0xfe, 0x14, 0x76, 0xdd, 0x63, 0xc5,
+ 0x78, 0x69, 0x58, 0x9c, 0x1a, 0xc5, 0xce, 0x37, 0x4, 0x62,
+ 0x5d, 0x81, 0xe4, 0xb1, 0xc2, 0xaa, 0x61, 0x13, 0xba, 0x35,
+ 0xac, 0xc6, 0x69, 0x2a, 0x7e, 0xa5, 0x61, 0xd, 0x4e, 0x27,
+ 0x4c, 0x1c, 0x92, 0xc, 0x4b, 0xc2, 0x6, 0x6b, 0xcd, 0xa5,
+ 0x84, 0xec, 0xe9, 0xd1, 0xd0, 0x86, 0xb5, 0x2a, 0xde, 0xd6,
+ 0xf0, 0x6b, 0xbc, 0xc3, 0x62, 0xb, 0x13, 0x43, 0xc3, 0x3a,
+ 0x9c, 0xa1, 0xe2, 0x37, 0x1a, 0x7e, 0x8b, 0xdf, 0x9, 0xff,
+ 0xef, 0x35, 0xfc, 0x1, 0xef, 0x6a, 0xf8, 0xa3, 0x80, 00,
+ 0x38, 0xb, 0xab, 0xe, 0x99, 0xc, 0xc2, 0xff, 0x9e, 0x86,
+ 0xaf, 0x63, 0xbd, 0x8a, 0x3f, 0x69, 0xf8, 0x33, 0xde, 0xd7,
+ 0x70, 0x26, 0xce, 0x92, 0xd1, 0x5f, 0x34, 0xb4, 0xe3, 0x2c,
+ 0x15, 0x7f, 0xd5, 0xf0, 0x37, 0xfc, 0x5d, 0x43, 0x7, 0x42,
+ 0x84, 0x8a, 0xe1, 0xe7, 0x20, 0x22, 0x3e, 0x50, 0xf1, 0xa1,
+ 0x86, 0x7f, 0xe0, 0x23, 0xd, 0x1f, 0xe3, 0x9f, 0x1a, 0x82,
+ 0x8, 0x69, 0x8, 0x63, 0xa3, 0x86, 0x4f, 0xb0, 0x5f, 0xc3,
+ 0xa7, 0xe2, 0xf7, 0x67, 0x2, 0xfe, 0x25, 0x36, 0xfd, 0x1b,
+ 0x3d, 0x9c, 0xa1, 0xa6, 0xa4, 0x48, 0x20, 0xd6, 0x31, 0x63,
+ 0x65, 0xbc, 0x25, 0x1d, 0xec, 0x6c, 0xd2, 0x53, 0x9d, 0xf1,
+ 0x50, 0xa3, 0x61, 0x88, 0x4b, 0x9f, 0xb, 0xdf, 0x7f, 0x4,
+ 0xfc, 0x57, 0xc0, 0x1, 0x1, 0x9b, 0x25, 0x12, 0x5f, 0x88,
+ 0x94, 0x83, 0x3c, 0x25, 0x8, 0x20, 0x52, 0x34, 0x72, 0x90,
+ 0x53, 0xa5, 0x22, 0x8d, 0x8a, 0xb1, 0x5f, 0x25, 0x55, 0x23,
+ 0x17, 0xeb, 0x24, 0x37, 0x3e, 0xd0, 0xc8, 0x43, 0x25, 0x1a,
+ 0x69, 0xbc, 0x8f, 0x4a, 0xb1, 0x9f, 0xcf, 0xcc, 0xd4, 0x19,
+ 0x8e, 0xcf, 0xf0, 0x9f, 0x32, 0x98, 0x6f, 0x9c, 0x2e, 0x39,
+ 0x4b, 0x5a, 0x52, 0x46, 0x38, 0xd6, 0x51, 0x9f, 0x6e, 0xe7,
+ 0xf4, 0xe3, 0xc3, 0x59, 0x1d, 0xdb, 0x14, 0x8b, 0x77, 0xc7,
+ 0x6a, 0x57, 0x2d, 0xad, 0xaf, 0x95, 0x73, 0x61, 0x96, 0x88,
+ 0x5e, 0xab, 0xc7, 0x82, 0xf1, 0x10, 0xb3, 0xd5, 0x6a, 0x34,
+ 0x8a, 0x46, 0xb, 0x28, 0xd3, 0xa8, 0x9c, 0x2a, 0x38, 0x10,
+ 0x34, 0x46, 0xa3, 0xb1, 0x78, 0x97, 0xe0, 0xe3, 0x73, 0x3f,
+ 0x26, 0x55, 0x6b, 0x65, 0x4c, 0x6d, 0x8b, 0x6e, 0x1e, 0x69,
+ 0xda, 0x68, 0xa, 0x24, 0x1a, 0x63, 0xac, 0x43, 0x4f, 0xd6,
+ 0x46, 0x39, 0xff, 0xf8, 0x18, 0x54, 0xf2, 0x6a, 0x34, 0x8e,
+ 0xe, 0x53, 0xa9, 0x52, 0xa3, 0x2a, 0x3a, 0x5c, 0xa3, 0x6a,
+ 0xaa, 0xe0, 0x13, 0xcb, 0x57, 0x6d, 0xb3, 0xd6, 0xa6, 0x7a,
+ 0x12, 0x3a, 0x2b, 0xad, 0xa1, 0xf1, 0x1a, 0x4d, 0x10, 0xa7,
+ 0x26, 0xca, 0xb9, 0xe8, 0x1c, 0x6b, 0xaa, 0x95, 0xd8, 0x74,
+ 0xca, 0x68, 0x12, 0x7, 0x88, 0x8e, 0xc0, 0x46, 0x95, 0x8e,
+ 0xd4, 0x68, 0xb2, 0xc4, 0xe8, 0x28, 0x3e, 0x7, 0x3a, 0x5a,
+ 0xc8, 0xc7, 0x90, 0x4f, 0xa3, 0x29, 0xe4, 0x1b, 0x88, 0x84,
+ 0xe9, 0xf3, 0x60, 0x24, 0x54, 0xaa, 0xd3, 0x68, 0x2a, 0xba,
+ 0x9, 0xee, 0xc1, 0xc4, 0xe5, 0xbb, 0x9a, 0xcb, 0x36, 0x9b,
+ 0xe2, 0x1e, 0xbc, 0xd3, 0x4, 0xd7, 0x40, 0x79, 0x63, 0x91,
+ 0xdd, 0x46, 0x38, 0xa5, 0xb3, 0xab, 0x66, 0x89, 0x5a, 0x2a,
+ 0x57, 0x8b, 0xaf, 0x49, 0x29, 0x5f, 0x9f, 0xb5, 0x6b, 0xfd,
+ 0xfe, 0x81, 0x4b, 0x54, 0x75, 0xc8, 0xea, 0xc7, 0x17, 0xb8,
+ 0x43, 0x4f, 0xad, 0x5a, 0xc6, 0x15, 0xc9, 0xe9, 0xf3, 0x4f,
+ 0xf1, 0x5b, 0x88, 0xb7, 0x94, 0xb5, 0x1b, 0x81, 0xa8, 0xbe,
+ 0xc1, 0x3c, 0x94, 0x35, 0xe1, 0x50, 0xaa, 0x93, 0xab, 0xc,
+ 0xaf, 0x96, 0xe7, 0x91, 0x97, 0xeb, 0xe1, 0x8e, 0x4e, 0xd6,
+ 0x76, 0x4, 0x6b, 0xfb, 0x92, 0xfa, 0xba, 0xae, 0x5e, 0xe4,
+ 0x55, 0xe4, 0xdd, 0x9f, 0x68, 0x22, 0x1e, 0x33, 0xaf, 0x73,
+ 0x49, 0xd0, 0xd0, 0xf9, 0x86, 0xd8, 0x45, 0x6e, 0xa6, 0x6f,
+ 0xa8, 0x14, 0x73, 0x81, 0x3d, 0xd, 0xa5, 0x83, 0x52, 0xcb,
+ 0x86, 0x17, 0xde, 0xb1, 0xac, 0x7a, 0x4, 0xf2, 0xa8, 0x42,
+ 0xa, 0x2b, 0x62, 0x27, 0x7, 0x8a, 0x12, 0x57, 0xa2, 0xfc,
+ 0xd2, 0x96, 0x57, 0x78, 0x8b, 0x7c, 0x56, 0xb8, 0xca, 0x87,
+ 0x2d, 0x72, 0xfc, 0xa5, 0x3e, 0xd9, 0xd2, 0x66, 0xfb, 0x86,
+ 0xaa, 0x1c, 0x1e, 00, 0x93, 0x7e, 0xca, 0x86, 0xa4, 0x6e,
+ 0x74, 0x89, 0xe9, 0x5c, 0xa5, 0xc6, 0x9b, 0x47, 0xb5, 0x34,
+ 0x17, 0xbf, 0xd5, 0x66, 0xe5, 0x5c, 0xa5, 0x9f, 0x9d, 0xd6,
+ 0x93, 0x1c, 0xc, 0x97, 0x59, 0xf3, 0xd6, 0x8a, 0x1, 0x5e,
+ 0xe, 0x4b, 0xa8, 0xc5, 0xdc, 0xda, 0x64, 0xa5, 0x61, 0x2b,
+ 0x67, 0xa1, 0x59, 0x2a, 0xfd, 0xf6, 0xea, 0x30, 0x39, 0x84,
+ 0x9a, 0x11, 0xe9, 0x52, 0x50, 0x97, 0x87, 0x38, 0x6b, 0x2a,
+ 0xd2, 0x83, 0xf3, 0x46, 0xfb, 0x32, 0x71, 0xa1, 0x1d, 0xec,
+ 0x21, 0x25, 0xb9, 0xe5, 0xd3, 0xb, 0x66, 0x6d, 0x5, 0xb3,
+ 0x35, 0x5, 0xb3, 0xe5, 0x4, 0x4d, 0xb4, 0x36, 0xc4, 0x13,
+ 0x3d, 0x56, 0xe5, 0xd6, 0x82, 0xf6, 0xb0, 0xc5, 0x8, 0x9e,
+ 0x5e, 0x38, 0x65, 0x41, 0x2e, 0x99, 0x2e, 0xe6, 0x1d, 0x1c,
+ 0x50, 0x5f, 0x2e, 0x3f, 0x15, 0xe9, 0x9e, 0x55, 0x2b, 0x6,
+ 0xa, 0xc5, 0x92, 0x40, 0x2a, 0xe0, 0x8f, 0x25, 0xd2, 0x29,
+ 0xae, 0xc, 0x7a, 0x20, 0xca, 0x27, 0x73, 0xd8, 0x21, 0x96,
+ 0xd8, 0x1, 0x51, 0xef, 0x97, 0x64, 0xaa, 0x1a, 0xe0, 0xe1,
+ 0x3e, 0x90, 0xd2, 0x8d, 0x2, 0x2e, 0xa7, 0x70, 0xb1, 0xce,
+ 0x94, 0x11, 0x88, 0x25, 0x23, 0x66, 0xb4, 0x5c, 0x49, 0xab,
+ 0x3e, 0x18, 0x85, 0x5d, 0xc5, 0x6a, 0xfb, 0x62, 0x94, 0xab,
+ 0x3d, 0x1c, 0x89, 0x58, 0x4e, 0x95, 0xcb, 0xf6, 0xd5, 0x5c,
+ 0x78, 0x3b, 0x62, 0xdc, 0x1e, 0x3b, 0xe3, 0x6, 0xd3, 0x8a,
+ 0x3, 0x89, 0x84, 0x1e, 0x63, 0xa1, 0xd3, 0xec, 0xdd, 0x79,
+ 0xb5, 0x6c, 0x20, 0x55, 0x87, 0x95, 0x37, 0x76, 0xa5, 0xda,
+ 0xe7, 0xff, 0x92, 0x55, 0x57, 0x2a, 0x6e, 0x51, 0x24, 0xb7,
+ 0x87, 0xf3, 0xcd, 0x97, 0xe4, 0x1d, 0x41, 0x1d, 0x9b, 0xab,
+ 0x59, 0xa7, 0xb2, 0x52, 0x2c, 0xe6, 0x68, 0x96, 0xe5, 0x31,
+ 0xf5, 0x24, 0x53, 0x3a, 0x7, 0xc1, 0x11, 0x4f, 0x4b, 0x1b,
+ 0x1e, 0xc, 0x73, 0x33, 0xef, 0xcd, 0x85, 0x78, 0xcc, 0x8,
+ 0x64, 0x69, 0xde, 0x86, 0xd9, 0xbc, 0x9d, 0xbe, 0x6, 0xf3,
+ 0x66, 0xe4, 0x12, 0xb3, 0x21, 0x9d, 0x6a, 0xd5, 0x37, 0xf3,
+ 0x92, 0xdb, 0x4c, 0xbb, 0x74, 0x24, 0xd2, 0x23, 0x7d, 0x7b,
+ 0x5d, 0xbd, 0x75, 0xa4, 0xee, 0x98, 0x6e, 0x3f, 0x9b, 0xe4,
+ 0x7d, 0x65, 0x5e, 0x73, 0x39, 0x7e, 0x4e, 0x35, 0xbb, 0xc3,
+ 0x87, 0xc2, 0xc9, 0x44, 0x3c, 0x29, 0xef, 0xa9, 0x70, 0x6c,
+ 0xe8, 0x93, 0x20, 0x77, 0x7f, 0xed, 0xbe, 0xaf, 0x84, 0x39,
+ 0xd0, 0xae, 0x8e, 0x78, 0x6a, 0x69, 0x3c, 0x98, 0x4e, 0x9a,
+ 0x49, 0x67, 0xde, 0x1a, 0x7b, 0x5a, 0x6e, 0x5e, 0xad, 0xe6,
+ 0x38, 0x9b, 0xaa, 0x1b, 0x87, 0x7e, 0x2a, 0xb0, 0x59, 0xa5,
+ 0x26, 0xe7, 0xc9, 0x7a, 0xcf, 00, 0x57, 0x2e, 0x4c, 0xad,
+ 0x9d, 0x46, 0xbc, 0xdb, 0x7a, 0x18, 0x8d, 0x4e, 0x58, 0x31,
+ 0x8, 0x4, 0x37, 0xb5, 0x1a, 0x81, 0xa0, 0x8e, 0x5a, 0x7e,
+ 0xa1, 0xb6, 0x2, 0x28, 0xe5, 0x8f, 0x9f, 0x12, 0x90, 0x3f,
+ 0x7e, 0x4a, 0x98, 0x98, 0x9f, 0x9, 0x26, 0xe6, 0x7, 0x81,
+ 0x89, 0xb9, 0x93, 0x9b, 0x98, 0xdb, 0xbb, 0x89, 0xf9, 0x31,
+ 0x60, 0x62, 0x6e, 0xcf, 0x26, 0xd6, 0x6d, 0xdc, 0x6e, 0xf3,
+ 0x75, 0xd8, 0xf3, 0x4e, 0x1b, 0x73, 0x7, 0x67, 0xe8, 0xe2,
+ 0x6f, 0x13, 0x22, 0x50, 0x10, 0x5, 0xe8, 0x48, 0x94, 0xf0,
+ 0xcf, 0xf, 0xe0, 0x95, 0xba, 0x7e, 0x50, 0xdd, 0xd4, 0x3e,
+ 0x28, 0x75, 0x75, 0x7b, 0xa0, 0xec, 0x81, 0xa3, 0xf, 0xce,
+ 0xba, 0xbd, 0x28, 0x6a, 0x2b, 0x73, 0x95, 0xa9, 0x65, 0x27,
+ 0x94, 0xe3, 0xa9, 0x7e, 0x14, 0xf7, 0x41, 0xe5, 0x55, 0x27,
+ 0x93, 0x5c, 0xe, 0x27, 0x93, 0xd5, 0x62, 0x47, 0x71, 0x59,
+ 0x71, 0x16, 0xae, 0xba, 0x72, 0xc2, 0x3e, 0xb8, 0xfb, 0xe0,
+ 0x71, 0x2c, 0xcc, 0xa0, 0x9a, 0x99, 0x3c, 0x35, 0x7b, 0xe1,
+ 0x6e, 0xe3, 0x81, 0x5a, 0x93, 0x45, 0x49, 0x3f, 0xb4, 0x96,
+ 0x5e, 0x85, 0x6a, 0x98, 0x6d, 0xc7, 0xc1, 0x77, 0x45, 0x85,
+ 0x73, 0xf, 0x4a, 0x2d, 0x34, 0xaa, 0xf3, 0x71, 0x57, 0x1f,
+ 0x46, 0xb3, 0xb2, 0xb2, 0xb6, 0xc2, 0x5, 0xd9, 0xcd, 0xdf,
+ 0xe8, 0x7e, 0x94, 0xf7, 0xa1, 0xa2, 0x4e, 0xb6, 0x55, 0x64,
+ 0x31, 0xa6, 0xf, 0x63, 0x4d, 0x23, 0xb, 0x99, 0xb3, 0xf0,
+ 0xf6, 0x61, 0x9c, 0x2c, 0x8c, 0xcb, 0xe2, 0xb0, 0x3e, 0x54,
+ 0xee, 0x66, 0xb7, 0x8, 0x31, 0x86, 0x8b, 0x30, 0x9a, 0xe1,
+ 0x54, 0x38, 0x31, 0x8d, 0x7f, 0x31, 0x4d, 0xc7, 0x58, 0xcc,
+ 0x80, 0xf, 0xc7, 0x31, 0x7d, 0x36, 0x96, 0xe3, 0x78, 0x34,
+ 0xf1, 0xcf, 0x8b, 0xd, 0x8c, 0x23, 0x98, 0x87, 0x2d, 0x98,
+ 0x8f, 0x3b, 0xb0, 0x10, 0xf, 0xe0, 0x24, 0x3c, 0x87, 0xc5,
+ 0x78, 0x19, 0xf5, 0x88, 0xf3, 0x6e, 0x27, 0xcb, 0x9a, 0xc3,
+ 0x5f, 0x2, 0x67, 0x33, 0xe4, 0xd0, 0xe1, 0x58, 0x93, 0x6,
+ 0x8c, 0xdb, 0x8b, 0xaa, 0x21, 0x86, 0xf7, 0xe3, 0xf0, 0x87,
+ 0x6, 0xb5, 0x17, 0x9b, 0x5c, 0x8d, 0xc, 0x8d, 0xff, 0x73,
+ 0xaf, 0x9f, 0x61, 0x12, 0x29, 0x7b, 0x6f, 0x15, 0x7f, 0x8a,
+ 0x70, 0xec, 0x1e, 0xc2, 0xd6, 0xc4, 0x30, 0x3d, 0xc8, 0x36,
+ 0x85, 0x7f, 0x38, 0xa, 0x5b, 0xe9, 0x54, 0x9, 0x89, 0xc3,
+ 0x51, 0x97, 0x45, 0xf5, 0x9a, 0xdc, 0x16, 0x8f, 0xb9, 0xd8,
+ 0xc, 0xd, 0xa7, 0x32, 0xa5, 0xb, 0xdd, 0x56, 0x42, 0x38,
+ 0xe, 0x72, 0x82, 0x94, 0x30, 0x1e, 0x2d, 0xe6, 0xf0, 0xae,
+ 0x2, 0xdb, 0x1c, 0x59, 0xd4, 0xd4, 0xb1, 0xa0, 0xf1, 0x7d,
+ 0x98, 0x50, 0xc7, 0x19, 0x32, 0x31, 0x3, 0x93, 0x23, 0x8b,
+ 0xda, 0x5, 0xd5, 0xf7, 0x4a, 0x8e, 0x29, 0xcf, 0xc0, 0xfa,
+ 0x93, 0xa4, 0x9a, 0xc8, 0xf3, 0x3b, 0xf9, 0xbb, 0x9f, 0xbf,
+ 0x47, 0x2c, 0xbe, 0x49, 0x9c, 0x1f, 0xca, 0x6a, 0x6b, 0x7c,
+ 0x4, 0xa3, 0x89, 0xdb, 0xb0, 0xc4, 0x12, 0x7e, 0xe4, 0x36,
+ 0x9c, 0xc8, 0xa3, 0x9, 0x43, 0x75, 0x66, 0x31, 0x99, 0x47,
+ 0x95, 0x23, 0x90, 0x33, 0x70, 0xae, 0x34, 0xad, 0xb0, 0x5,
+ 0x88, 0x1, 0xf4, 0xa6, 0xad, 0x5f, 0xbc, 0x3b, 0x9c, 0xbf,
+ 0x85, 0xfc, 0xdd, 0x60, 0x27, 0xdc, 0xd1, 0x16, 0x3a, 0xc6,
+ 0x42, 0x3e, 0xb, 0x4d, 0xc9, 0xa2, 0x2e, 0x43, 0x4f, 0x5a,
+ 0x26, 0x49, 0xac, 0x2a, 0x2d, 0xfa, 0x34, 0xb, 0x4d, 0x2f,
+ 0x64, 0x2e, 0x10, 0x34, 0x2d, 0x54, 0x20, 0x70, 0x7a, 0x28,
+ 0x8b, 0x63, 0xc5, 0x85, 0xbc, 0x80, 0x67, 0x48, 0xb7, 0x16,
+ 0x67, 0x64, 0x31, 0x73, 0xd1, 0xe0, 0xf0, 0xb8, 0x39, 0x4e,
+ 0x9b, 0x31, 0xcf, 0xac, 0x2c, 0x66, 0xd9, 0x44, 0x8f, 0xd7,
+ 0x39, 0x2b, 0x8b, 0xd9, 0xf9, 0xe1, 0xc8, 0x59, 0xfb, 0x95,
+ 0x9c, 0x8d, 0x85, 0x3b, 0x2b, 0xb, 0x76, 0x56, 0x8e, 0xb0,
+ 0xd3, 0x31, 0xc7, 0x93, 0xc1, 0xb9, 0x79, 0x56, 0x14, 0xd,
+ 0x8e, 0x8f, 0x9f, 0x53, 0x9c, 0x37, 0x56, 0xf3, 0xc6, 0xae,
+ 0xbc, 0xb1, 0x7b, 0xd0, 0xc0, 0xa2, 0x1, 0x3, 0xbd, 0xc5,
+ 0x5e, 0xd5, 0xeb, 0xf2, 0xba, 0x73, 0x86, 0xe5, 0x16, 0x2b,
+ 0xf3, 0x16, 0x7b, 0x3d, 0xe4, 0xf5, 0x8c, 0xdf, 0x71, 0xb0,
+ 0x37, 0xcf, 0xf1, 0x94, 0x6d, 0x7f, 0x2a, 0xe7, 0xc0, 0x50,
+ 0x72, 0x6, 0x93, 0xf7, 0x62, 0x4e, 0xdb, 0x5e, 0xcc, 0x6d,
+ 0xeb, 0xc7, 0x9, 0x15, 0xf3, 0xb2, 0x66, 0x96, 0xc8, 0x71,
+ 0x67, 0x31, 0x3f, 0x8b, 0x5, 0xfd, 0x58, 0xf8, 0xa4, 0x54,
+ 0x16, 0x8b, 0xb8, 0x68, 0xc7, 0x81, 0x9d, 0x23, 0x25, 0x2e,
+ 0x1f, 0x6d, 0x4d, 0xe6, 0xc0, 0x1a, 0x91, 0x54, 0x71, 0x92,
+ 0x6c, 0x79, 0x18, 0x5f, 0x2d, 0x53, 0xb3, 0x58, 0x9c, 0x39,
+ 0x50, 0x6f, 0x9d, 0x7c, 0xfd, 0xca, 0xcc, 0x81, 0xb9, 0xf9,
+ 0x9a, 0x1a, 0x58, 0x53, 0x75, 0x4e, 0x7, 0x5f, 0x92, 0x14,
+ 0x17, 0x86, 0xbb, 0x71, 0x94, 0x7d, 0x81, 0x5e, 0xe7, 0x82,
+ 0x1, 0xae, 0xd0, 0x95, 0x5c, 0x97, 0x6b, 0xb9, 0x26, 0x1f,
+ 0xc5, 0xf5, 0xd7, 0xc7, 0xb5, 0x77, 0x26, 0xd7, 0xdb, 0x66,
+ 0xae, 0xb4, 0x6b, 0xb8, 0x9c, 0x9c, 0xc1, 0x57, 0x2a, 0xc8,
+ 0xe5, 0x23, 0xc5, 0x57, 0x7f, 0x2b, 0x5f, 0xe1, 0xbb, 0x79,
+ 0xb4, 0x93, 0x2f, 0xdb, 0x2e, 0xf4, 0xe0, 0x45, 0x9c, 0xcb,
+ 0xbf, 0xc4, 0xce, 0xc7, 0x87, 0x5c, 0x72, 0x3e, 0xc5, 0x5,
+ 0x34, 0x17, 0x97, 0xd1, 0x52, 0x5c, 0x41, 0x7e, 0x5c, 0x4d,
+ 0xad, 0xb8, 0x86, 0xd6, 0xe3, 0x3a, 0x4a, 0xe3, 0x7a, 0xba,
+ 0x10, 0x37, 0xd0, 0x76, 0xdc, 0x48, 0xf, 0x62, 0x1b, 0xed,
+ 0xc3, 0x76, 0x7a, 0x15, 0x37, 0xd1, 0x5b, 0xb8, 0x99, 0xde,
+ 0xc3, 0x2d, 0xf4, 0x31, 0x6e, 0xa5, 0x2f, 0x70, 0x9b, 0xe2,
+ 0xc1, 0xed, 0xca, 0x38, 0xec, 0x50, 0x26, 0xe3, 0xe, 0x65,
+ 0x36, 0xee, 0x54, 0x16, 0xe3, 0x2e, 0xa5, 0x19, 0x37, 0x29,
+ 0x6d, 0xd8, 0xa9, 0x24, 0x90, 0x51, 0x2e, 0xc6, 0x3d, 0xca,
+ 0xa5, 0x34, 0x4d, 0xd9, 0x85, 0x88, 0xf2, 0x28, 0xcd, 0x54,
+ 0x5e, 0xa2, 0x59, 0xca, 0xab, 0x74, 0xbc, 0xf2, 0xe, 0x9d,
+ 0xa0, 0xbc, 0x47, 0xf3, 0x94, 0xf7, 0x69, 0x81, 0xf2, 0x11,
+ 0x2d, 0x52, 0x3e, 0xa1, 0xc5, 0x79, 0xc5, 0xe, 0xf2, 0x1b,
+ 0xcd, 0xee, 0x13, 0xcb, 0xb8, 0x9a, 0xa8, 0x4c, 0x79, 0xa3,
+ 0x66, 0x4e, 0x51, 0x6, 0x93, 0xec, 0x94, 0x90, 0xe2, 0xec,
+ 0xb5, 0x73, 0xa8, 0xb4, 0xb3, 0x7a, 0xfd, 0xf8, 0x2c, 0x96,
+ 0xf4, 0x16, 0x91, 0xb7, 0xa8, 0xc6, 0xeb, 0x5c, 0xbf, 0xe3,
+ 0xe0, 0xdb, 0x52, 0xb0, 0xab, 0x6b, 0xc6, 0x7b, 0x39, 0xbe,
+ 0x8d, 0x72, 0xec, 0xf6, 0xd8, 0xbc, 0xd0, 0x83, 0x63, 0xa7,
+ 0x59, 0x47, 0x66, 0x9f, 0x58, 0x2c, 0xb7, 0x74, 0x42, 0x16,
+ 0x4b, 0xfb, 0xb0, 0x2c, 0x8f, 0x79, 0xb9, 0x90, 0x2b, 0x4d,
+ 0xb2, 0x3f, 0x6f, 0xdf, 0x72, 0x3b, 0x8d, 0xc6, 0xda, 0x17,
+ 0xcd, 0x4e, 0x9f, 0xbc, 0xe9, 0xb2, 0x67, 0xcd, 0xeb, 0xcc,
+ 0x12, 0xbf, 0x26, 0x22, 0x96, 0x49, 0xcd, 0x22, 0x4b, 0x76,
+ 0xa5, 0x4d, 0xf3, 0x73, 0x9b, 0x10, 0x9a, 0x7f, 0x37, 0x3b,
+ 0x3c, 0x8f, 0xdb, 0x6f, 0xdb, 0xe0, 0xf1, 0x9e, 0x6, 0x2f,
+ 0xbb, 0xdd, 0x86, 0x62, 0x5a, 0x8b, 0x49, 0x8c, 0xa7, 0xd3,
+ 0x99, 0x98, 0xc7, 0x87, 0xd2, 0x48, 0x1, 0x9c, 0x4a, 0x1b,
+ 0xd0, 0x46, 0x21, 0xb4, 0x93, 0xe, 0x83, 0xda, 0x71, 0x1e,
+ 0x75, 0xe0, 0x12, 0xda, 0xc8, 0x87, 0xb4, 0x9, 0x19, 0x8a,
+ 0xe2, 0x1, 0x8a, 0xa1, 0x8f, 0xe2, 0xd8, 0x47, 0x9, 0x3c,
+ 0x4d, 0x67, 0xe3, 0x79, 0x32, 0xf0, 0x12, 0x25, 0xf1, 0x3a,
+ 0x1f, 0x68, 0x7e, 0x2f, 0x39, 0x7, 0xdf, 0xb0, 0x8b, 0xf5,
+ 0x6b, 0x1c, 0x66, 0xa9, 0x98, 0x97, 0x4b, 0x2c, 0x9f, 0xc5,
+ 0xc5, 0x56, 0x48, 0x4f, 0xde, 0x86, 0xf3, 0xa6, 0xee, 0xc1,
+ 0x8a, 0x5d, 0x66, 0x45, 0x8b, 0x58, 0xcd, 0x9b, 0xae, 0x62,
+ 0xcc, 0xd, 0x9d, 0xae, 0xb6, 0xf1, 0x35, 0x36, 0xbe, 0xd6,
+ 0xc6, 0xfb, 0x19, 0x9f, 0xcc, 0xf8, 0x53, 0x1b, 0x7f, 0x66,
+ 0xe3, 0xcf, 0x5, 0x5b, 0xcd, 0xbd, 0x69, 0x1b, 0x37, 0xd6,
+ 0x2c, 0x56, 0x8a, 0x9a, 0xa9, 0x59, 0x9c, 0x92, 0x41, 0x89,
+ 0x3d, 0x6c, 0xce, 0xc0, 0xd5, 0x34, 0x2d, 0x8b, 0x55, 0xce,
+ 0xfb, 0x1c, 0xf7, 0xb1, 0x71, 0xe5, 0x9c, 0x9d, 0xbd, 0x66,
+ 0x8b, 0x88, 0x99, 0x6d, 0x8b, 0x5b, 0x3, 0xf5, 0xa2, 0x9c,
+ 0x2e, 0xc2, 0x7a, 0xda, 0x8a, 0x8d, 0x74, 0x19, 0x62, 0x74,
+ 0x5, 0xba, 0xe8, 0x4a, 0xf4, 0xb0, 0x1, 0x5b, 0xe8, 0x3a,
+ 0xf4, 0xd2, 0x8d, 0x1c, 0x8c, 0xed, 0xd8, 0x4a, 0x37, 0xf3,
+ 0xae, 0x73, 0xcd, 0x52, 0x7c, 0xde, 0xff, 00, 0x50, 0x4b,
+ 0x3, 0x4, 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58,
+ 0xda, 0x2c, 0xb6, 0xdd, 0x6b, 0x3d, 0x5, 0x3, 00, 00,
+ 0xbf, 0x5, 00, 00, 0x1f, 00, 00, 00, 0x61, 0x6e,
+ 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x6f,
+ 0x72, 0x79, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x53, 0x6f, 0x75,
+ 0x72, 0x63, 0x65, 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x95,
+ 0x54, 0x5b, 0x4f, 0x13, 0x41, 0x18, 0x3d, 0xd3, 0x6e, 0xaf,
+ 0x6c, 0xab, 0xa2, 0xa8, 0xb5, 0x5c, 0x4, 0x15, 0xcb, 0x96,
+ 0xb6, 0xca, 0xc5, 0xfb, 0x15, 0x10, 0xad, 0x82, 0x1a, 0x24,
+ 0xc6, 0xc8, 0x8b, 0x4b, 0x3b, 0x96, 0x25, 0xed, 0x2e, 0x6c,
+ 0xb7, 0xa2, 0x7f, 0x48, 0x5f, 0x7c, 0xc1, 0x58, 0xd, 0x3e,
+ 0xf8, 0xe8, 0x83, 0x3f, 0xca, 0x78, 0x66, 0x5b, 0x5a, 0x83,
+ 0x48, 0x62, 0x93, 0x39, 0xdf, 0xec, 0xcc, 0x77, 0x39, 0xdf,
+ 0xf9, 0x26, 0xfd, 0xf9, 0xeb, 0xdb, 0x77, 0x4, 0x91, 0xc3,
+ 0x6c, 0x1c, 0x49, 0x64, 0x62, 0x48, 0x60, 0x4c, 0x81, 0xa1,
+ 0x20, 0xab, 0x60, 0x5c, 0x41, 0xae, 0x7, 0x79, 0x14, 0x14,
+ 0x5c, 0x50, 0x70, 0x51, 0xc1, 0x84, 0x82, 0xc9, 0x38, 0x6f,
+ 0xa7, 0x22, 0x98, 0x8e, 0xe0, 0x52, 0x4, 0x97, 0x5, 0x42,
+ 0x5b, 0x56, 0xd9, 0x5b, 0x13, 0x10, 0x45, 0x81, 0xf0, 0x9a,
+ 0xb4, 0x2a, 0x6b, 0x9e, 0x40, 0xa0, 0x54, 0x13, 0x48, 0x2f,
+ 0xac, 0x9b, 0x6f, 0xcc, 0x82, 0xb9, 0xe5, 0x15, 0xac, 0x9a,
+ 0x59, 0x91, 0x85, 0x59, 0xa7, 0xea, 0xb8, 0x8b, 0x4e, 0x59,
+ 0x56, 0xaf, 0xd3, 0x77, 0xc3, 0x7a, 0x2b, 0xab, 0x75, 0xfa,
+ 0xae, 0xcc, 0x10, 0xac, 0x92, 0xc0, 0xe0, 0xde, 0x80, 0xa2,
+ 0xc2, 0x59, 0xc7, 0xae, 0x37, 0x6a, 0xd2, 0x55, 0x31, 0x37,
+ 0x2c, 0xdb, 0xf2, 0x6e, 0x9, 0x8c, 0x64, 0x8a, 0xc5, 0x3,
+ 0xb2, 0xaf, 0xcc, 0x8c, 0x3d, 0x17, 0xd0, 0x66, 0xf9, 0x21,
+ 0x70, 0x68, 0xc1, 0xb2, 0xe5, 0xe3, 0x46, 0x6d, 0x55, 0xba,
+ 0xcb, 0xe6, 0x6a, 0x95, 0x27, 0x3d, 0x66, 0xb9, 0xbc, 0x9b,
+ 0x55, 0x60, 0x38, 0x73, 0x70, 0x59, 0x95, 0x2a, 0x6e, 0xd5,
+ 0xff, 0x23, 0xe0, 0xa5, 0x40, 0xd2, 0x95, 0x35, 0xe7, 0x8d,
+ 0xec, 0x6, 0xd, 0xb8, 0x72, 0xb3, 0x21, 0xeb, 0xde, 0xb2,
+ 0xb3, 0x31, 0xe7, 0x6c, 0xd9, 0xb, 0xf2, 0xb5, 0xb7, 0xa4,
+ 0xb4, 0x5a, 0x92, 0x75, 0x69, 0x97, 0xc9, 0xb2, 0xee, 0x99,
+ 0xae, 0xf7, 0xd4, 0x75, 0xca, 0x8d, 0x92, 0x67, 0x39, 0xb6,
+ 0x40, 0xcc, 0x96, 0x5b, 0x4f, 0xdb, 0x1a, 0x45, 0xd8, 0x6f,
+ 0xb1, 0xe8, 0x33, 0x79, 0xe6, 0x34, 0xdc, 0x92, 0x9c, 0xb7,
+ 0x54, 0x23, 0x83, 0xa6, 0x4d, 0x2, 0x9e, 0x2c, 0x2f, 0xb2,
+ 0x9a, 0xfb, 0xce, 0xa7, 0xd1, 0xba, 0xcf, 0x2b, 0x86, 0x3a,
+ 0x52, 0xb8, 0xa2, 0xe3, 0x30, 0x8e, 0xe8, 0xe8, 0x55, 0x70,
+ 0x14, 0xc7, 0x74, 0xf4, 0xe1, 0xb8, 0x8e, 0x13, 0x38, 0x19,
+ 0xc1, 0x55, 0x1d, 0xd7, 0x70, 0x5d, 0xc7, 0xd, 0xdc, 0xd4,
+ 0x71, 0xb, 0xb7, 0x75, 0xdc, 0x51, 0x9f, 0x77, 0x31, 0xa3,
+ 0x63, 00, 0x83, 0x2, 0xa9, 0x7f, 0xe6, 0x17, 0x38, 0xec,
+ 0x6b, 0x50, 0x35, 0xed, 0x4a, 0xe1, 0xc9, 0xea, 0xba, 0x2c,
+ 0x71, 0xea, 0xfd, 0xfb, 0xc9, 0xd2, 0x6a, 0x49, 0x49, 0x10,
+ 0xcc, 0xa8, 0x6, 0xf6, 0x75, 0xea, 0xea, 0x94, 0xb0, 0x5a,
+ 0xdf, 0xb5, 0x8d, 0xaa, 0xf4, 0x58, 0x46, 0xcb, 0xf8, 0x6d,
+ 0x27, 0xea, 0xd2, 0x9b, 0xb3, 0x6a, 0xd2, 0xae, 0x53, 0x1b,
+ 0xa, 0x12, 0xca, 0x14, 0x3b, 0xe7, 0xdd, 0xc1, 0x53, 0x91,
+ 0xbf, 0x66, 0xf3, 0xc7, 0xb3, 0x50, 0x1, 0x51, 0x6, 0x3c,
+ 0xb0, 0x6c, 0x8f, 0x39, 0x62, 0xdc, 0xee, 0xa, 0x3c, 0xea,
+ 0xb, 0x7c, 0xe0, 0x93, 0x52, 0x5, 0x71, 0x9a, 0xaf, 0x3f,
+ 0x9, 0x8e, 0xb, 0x21, 0x40, 0x29, 0xb, 0xf5, 0xeb, 0x6d,
+ 0x5b, 0xea, 0xeb, 0x5b, 0x4a, 0xec, 0x5b, 0xaa, 0x4c, 0x8c,
+ 0x70, 0xa5, 0x70, 0x8a, 0x51, 0x69, 0xee, 0xe6, 0x11, 0xf0,
+ 0x63, 0x4f, 0x19, 0x5f, 0x21, 0x8c, 0x74, 0x13, 0x1, 0xa3,
+ 0xbf, 0x89, 0xa0, 0x91, 0x6b, 0x42, 0x33, 0x52, 0x5a, 0x13,
+ 0xa1, 0x6d, 0xde, 0x52, 0x27, 0xe5, 0x83, 0x30, 0x71, 0x18,
+ 0x1a, 0x46, 0x10, 0xc3, 0x19, 0x56, 0x3e, 0xcb, 0x1a, 0xe7,
+ 0x98, 0x6d, 0x94, 0x1e, 0x1c, 0x51, 0x3b, 0xe7, 0x27, 0xde,
+ 0x6, 0x68, 0x5d, 0xe3, 0x33, 0xc2, 0xd9, 0xf7, 0xd0, 0xb6,
+ 0xd5, 0xe6, 0x7, 0x12, 0xca, 0x68, 0x3b, 0x88, 0x4, 0x60,
+ 0x64, 0x9b, 0x8, 0xab, 0x4f, 0xae, 00, 0x57, 0x70, 0x7,
+ 0xd1, 0x20, 0xda, 0x7, 0x74, 0x89, 0x5, 0xd0, 0x76, 0x8e,
+ 0xb7, 0x76, 0xc1, 0xe0, 0xae, 0xa7, 0x72, 0xe0, 0xa, 0xf9,
+ 0x7, 0x3b, 0xe8, 0x89, 0xf9, 0xf7, 0x21, 0x3f, 0x6d, 0x97,
+ 0x6b, 0x1e, 0x3d, 0xc4, 0x31, 0x44, 0x61, 0x90, 0xcd, 0x38,
+ 0xb5, 0xc9, 0x91, 0xff, 0x5, 0xc, 0xe1, 0x22, 0x71, 0x2,
+ 0x37, 0x31, 0x89, 0xfb, 0x98, 0x42, 0x5, 0xd3, 0xd8, 0xc4,
+ 0x25, 0x46, 0xd, 0x51, 0xcd, 0x16, 0xff, 0x51, 0xb2, 0x57,
+ 0xfc, 0x93, 0x6d, 0xfe, 0x11, 0xed, 0x3, 0xb4, 0xe0, 0xc7,
+ 0x4e, 0xee, 0x30, 0x2d, 0x70, 0x95, 0x38, 0xdc, 0xe9, 0x39,
+ 0xbf, 0x27, 0x26, 0x6a, 0x8, 0x76, 0xd8, 0xe5, 0x93, 0xe4,
+ 0xbf, 0x1c, 0x58, 0x35, 0xca, 0x97, 0x9d, 0xc0, 0x6d, 0x9e,
+ 0x8e, 0x74, 0x62, 0x53, 0x5c, 0x2a, 0x56, 0x6c, 0xef, 0x29,
+ 0x31, 0x43, 0x3c, 0xd3, 0x71, 0x1b, 0x69, 0x97, 0x8, 0x1b,
+ 0xd9, 0x2f, 0xd0, 0xbb, 0xbe, 0x71, 0xff, 0xf4, 0x1e, 0xc7,
+ 0x38, 0x4f, 0x7b, 0x96, 0x3, 0x69, 0xf9, 0xbf, 0x60, 0xe3,
+ 0x6a, 0xb4, 0x53, 0x2d, 0xf5, 0xb, 0xca, 0xa4, 0xfb, 0x7,
+ 0xfa, 0xb4, 0x5d, 0x5, 0x95, 0x80, 0xfd, 0x6b, 0xe9, 0x57,
+ 0x7, 0xa, 0xd9, 0xcb, 0x71, 0x3, 0x45, 0x3e, 0x9b, 0x87,
+ 0x94, 0xf3, 0x11, 0x65, 0x5b, 0xe4, 0xcd, 0xa8, 0x4f, 0xf9,
+ 0xfc, 0x6f, 0x50, 0x4b, 0x1, 0x2, 0xa, 00, 0xa, 00,
+ 00, 00, 00, 00, 0x16, 0xa9, 0xda, 0x2c, 00, 00,
+ 00, 00, 00, 00, 00, 00, 00, 00, 00, 00,
+ 0x9, 00, 00, 00, 00, 00, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 00, 00, 00, 0x4d, 0x45,
+ 0x54, 0x41, 0x2d, 0x49, 0x4e, 0x46, 0x2f, 0x50, 0x4b, 0x1,
+ 0x2, 0xa, 00, 0xa, 00, 00, 00, 00, 00, 0x16,
+ 0xa9, 0xda, 0x2c, 0x1e, 0xb9, 0xd9, 0x17, 0x2d, 00, 00,
+ 00, 0x2d, 00, 00, 00, 0x14, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 00, 00, 00, 00, 0x27,
+ 00, 00, 00, 0x4d, 0x45, 0x54, 0x41, 0x2d, 0x49, 0x4e,
+ 0x46, 0x2f, 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54,
+ 0x2e, 0x4d, 0x46, 0x50, 0x4b, 0x1, 0x2, 0xa, 00, 0xa,
+ 00, 00, 00, 0x8, 00, 0xe3, 0xa5, 0xda, 0x2c, 0x5f,
+ 0xeb, 0x71, 0x9a, 0xd7, 0xd, 00, 00, 0x8, 0x19, 00,
+ 00, 0xf, 00, 00, 00, 00, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 0x86, 00, 00, 00, 0x76,
+ 0x6e, 0x63, 0x76, 0x69, 0x65, 0x77, 0x65, 0x72, 0x2e, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x50, 0x4b, 0x1, 0x2, 0xa, 00,
+ 0xa, 00, 00, 00, 0x8, 00, 0x16, 0xa9, 0xda, 0x2c,
+ 0xc9, 0xa0, 0xa1, 0x6c, 0x47, 0xf, 00, 00, 0x1f, 0x1e,
+ 00, 00, 0xe, 00, 00, 00, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 00, 0x8a, 0xe, 00, 00,
+ 0x72, 0x66, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x50, 0x4b, 0x1, 0x2, 0xa, 00,
+ 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58, 0xda, 0x2c,
+ 0x7a, 0x44, 0x1b, 0x63, 0x14, 0x5, 00, 00, 0xb8, 0x8,
+ 00, 00, 0x19, 00, 00, 00, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 00, 0xfd, 0x1d, 00, 00,
+ 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x6e, 0x65, 0x6c, 0x2e,
+ 0x63, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x4b, 0x1, 0x2, 0xa,
+ 00, 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58, 0xda,
+ 0x2c, 0xe7, 0x52, 0x7f, 0x83, 0x46, 0xb, 00, 00, 0xe7,
+ 0x14, 00, 00, 0xf, 00, 00, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 00, 00, 0x48, 0x23, 00,
+ 00, 0x76, 0x6e, 0x63, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73,
+ 0x2e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x4b, 0x1, 0x2,
+ 0xa, 00, 0xa, 00, 00, 00, 0x8, 00, 0x55, 0x58,
+ 0xda, 0x2c, 0xb6, 0xdd, 0x6b, 0x3d, 0x5, 0x3, 00, 00,
+ 0xbf, 0x5, 00, 00, 0x1f, 00, 00, 00, 00, 00,
+ 00, 00, 00, 00, 00, 00, 00, 00, 0xbb, 0x2e,
+ 00, 00, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x64,
+ 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x49, 0x6d, 0x61, 0x67,
+ 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x63, 0x6c,
+ 0x61, 0x73, 0x73, 0x50, 0x4b, 0x5, 0x6, 00, 00, 00,
+ 00, 0x7, 00, 0x7, 00, 0xc3, 0x1, 00, 00, 0xfd,
+ 0x31, 00, 00, 00, 00, };
+
+static const unsigned char data_footer_plain[] __attribute__ ((aligned (2))) = {
+ /* /footer.plain */
+ 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0,
+ 0x3c, 0x70, 0x20, 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x3d, 0x22,
+ 0x72, 0x69, 0x67, 0x68, 0x74, 0x22, 0x3e, 0xa, 0x2f, 0x3c,
+ 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74,
+ 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73,
+ 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x25, 0x37, 0x65,
+ 0x61, 0x64, 0x61, 0x6d, 0x2f, 0x22, 0x3e, 0x41, 0x64, 0x61,
+ 0x6d, 0x20, 0x44, 0x75, 0x6e, 0x6b, 0x65, 0x6c, 0x73, 0x3c,
+ 0x2f, 0x61, 0x3e, 0xa, 0x3c, 0x2f, 0x70, 0x3e, 0xa, 0x3c,
+ 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x2f, 0x74, 0x72, 0x3e,
+ 0xa, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa,
+ 0x20, 0x20, 0x20, 0x20, 0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64,
+ 0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
+};
+
+const struct httpd_fsdata_file file_img_screenshot_png[] = {{NULL, data_img_screenshot_png, data_img_screenshot_png + 20, sizeof(data_img_screenshot_png) - 20}};
+
+const struct httpd_fsdata_file file_cgi_sensors[] = {{file_img_screenshot_png, data_cgi_sensors, data_cgi_sensors + 14, sizeof(data_cgi_sensors) - 14}};
+
+const struct httpd_fsdata_file file_cgi_processes[] = {{file_cgi_sensors, data_cgi_processes, data_cgi_processes + 16, sizeof(data_cgi_processes) - 16}};
+
+const struct httpd_fsdata_file file_cgi_tcp[] = {{file_cgi_processes, data_cgi_tcp, data_cgi_tcp + 10, sizeof(data_cgi_tcp) - 10}};
+
+const struct httpd_fsdata_file file_header_html[] = {{file_cgi_tcp, data_header_html, data_header_html + 14, sizeof(data_header_html) - 14}};
+
+const struct httpd_fsdata_file file_404_html[] = {{file_header_html, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}};
+
+const struct httpd_fsdata_file file_index_html[] = {{file_404_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}};
+
+const struct httpd_fsdata_file file_vnc_html[] = {{file_index_html, data_vnc_html, data_vnc_html + 10, sizeof(data_vnc_html) - 10}};
+
+const struct httpd_fsdata_file file_vncjava_html[] = {{file_vnc_html, data_vncjava_html, data_vncjava_html + 14, sizeof(data_vncjava_html) - 14}};
+
+const struct httpd_fsdata_file file_vncviewer_jar[] = {{file_vncjava_html, data_vncviewer_jar, data_vncviewer_jar + 16, sizeof(data_vncviewer_jar) - 16}};
+
+const struct httpd_fsdata_file file_footer_plain[] = {{file_vncviewer_jar, data_footer_plain, data_footer_plain + 14, sizeof(data_footer_plain) - 14}};
+
+#define HTTPD_FS_ROOT file_footer_plain
+
+#define HTTPD_FS_NUMFILES 11
\ No newline at end of file
diff --git a/contiki-msp430/apps/httpd-fsdata.h b/contiki-msp430/apps/httpd-fsdata.h
new file mode 100644
index 0000000..dca6425
--- /dev/null
+++ b/contiki-msp430/apps/httpd-fsdata.h
@@ -0,0 +1,58 @@
+/*
+ * 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. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the Swedish Institute
+ * of Computer Science and its contributors.
+ * 4. 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 lwIP TCP/IP stack.
+ *
+ * Author: Adam Dunkels <adam@sics.se>
+ *
+ * $Id: httpd-fsdata.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ */
+#ifndef __HTTPD_FSDATA_H__
+#define __HTTPD_FSDATA_H__
+
+#include "uipopt.h"
+
+struct httpd_fsdata_file {
+ const struct httpd_fsdata_file *next;
+ const char *name;
+ const char *data;
+ const int len;
+};
+
+struct httpd_fsdata_file_noconst {
+ struct httpd_fsdata_file *next;
+ char *name;
+ char *data;
+ int len;
+};
+
+#endif /* __HTTPD_FSDATA_H__ */
diff --git a/contiki-msp430/apps/httpd.c b/contiki-msp430/apps/httpd.c
new file mode 100644
index 0000000..1cd3582
--- /dev/null
+++ b/contiki-msp430/apps/httpd.c
@@ -0,0 +1,371 @@
+/*
+ * 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. 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: httpd.c,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+
+#include "uip.h"
+#include "httpd.h"
+#include "httpd-fs.h"
+#include "httpd-fsdata.h"
+#include "httpd-cgi.h"
+
+/* The HTTP server states: */
+#define HTTP_DEALLOCATED 0
+#define HTTP_NOGET 1
+#define HTTP_FILE 2
+#define HTTP_TEXT 3
+#define HTTP_FUNC 4
+#define HTTP_END 5
+
+#ifdef DEBUG
+#include <stdio.h>
+#define PRINT(x) printf("%s", x)
+#define PRINTLN(x) printf("%s\n", x)
+#else /* DEBUG */
+#define PRINT(x)
+#define PRINTLN(x)
+#endif /* DEBUG */
+
+struct httpd_state *hs;
+
+extern const struct httpd_fsdata_file file_index_html;
+extern const struct httpd_fsdata_file file_404_html;
+
+static void next_scriptline(void);
+static void next_scriptstate(void);
+
+#define ISO_G 0x47
+#define ISO_E 0x45
+#define ISO_T 0x54
+#define ISO_slash 0x2f
+#define ISO_c 0x63
+#define ISO_g 0x67
+#define ISO_i 0x69
+#define ISO_space 0x20
+#define ISO_nl 0x0a
+#define ISO_cr 0x0d
+#define ISO_a 0x61
+#define ISO_t 0x74
+#define ISO_hash 0x23
+#define ISO_period 0x2e
+
+#define HTTPD_CONF_NUMCONNS UIP_CONNS
+static struct httpd_state conns[HTTPD_CONF_NUMCONNS];
+static u8_t i;
+
+void beep(void);
+
+/*-----------------------------------------------------------------------------------*/
+static struct httpd_state *
+alloc_state(void)
+{
+
+ for(i = 0; i < HTTPD_CONF_NUMCONNS; ++i) {
+ if(conns[i].state == HTTP_DEALLOCATED) {
+ return &conns[i];
+ }
+ }
+
+ /* We are overloaded! XXX: we'll just kick all other connections! */
+ for(i = 0; i < HTTPD_CONF_NUMCONNS; ++i) {
+ conns[i].state = HTTP_DEALLOCATED;
+ }
+
+ return NULL;
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+dealloc_state(struct httpd_state *s)
+{
+ s->state = HTTP_DEALLOCATED;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+httpd_init(void)
+{
+ httpd_fs_init();
+
+ /* Listen to port 80. */
+ dispatcher_uiplisten(HTONS(80));
+
+ for(i = 0; i < HTTPD_CONF_NUMCONNS; ++i) {
+ conns[i].state = HTTP_DEALLOCATED;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+DISPATCHER_UIPCALL(httpd_appcall, state)
+{
+ struct httpd_fs_file fsfile;
+ u8_t i;
+ DISPATCHER_UIPCALL_ARG(state);
+
+ hs = (struct httpd_state *)(state);
+
+ /* We use the uip_ test functions to deduce why we were
+ called. If uip_connected() is non-zero, we were called
+ because a remote host has connected to us. If
+ uip_newdata() is non-zero, we were called because the
+ remote host has sent us new data, and if uip_acked() is
+ non-zero, the remote host has acknowledged the data we
+ previously sent to it. */
+ if(uip_connected()) {
+
+ /* Since we've just been connected, the state pointer should be
+ NULL and we need to allocate a new state object. If we have run
+ out of memory for state objects, we'll have to abort the
+ connection and return. */
+ if(hs == NULL) {
+ hs = alloc_state();
+ if(hs == NULL) {
+ uip_close();
+ return;
+ }
+ dispatcher_markconn(uip_conn, (void *)hs);
+ }
+ /* Since we have just been connected with the remote host, we
+ reset the state for this connection. The ->count variable
+ contains the amount of data that is yet to be sent to the
+ remote host, and the ->state is set to HTTP_NOGET to signal
+ that we haven't received any HTTP GET request for this
+ connection yet. */
+ hs->state = HTTP_NOGET;
+ hs->count = 0;
+ hs->poll = 0;
+ } else if(uip_closed() || uip_aborted()) {
+ if(hs != NULL) {
+ dealloc_state(hs);
+ }
+ return;
+ } else if(uip_poll()) {
+ /* If we are polled ten times, we abort the connection. This is
+ because we don't want connections lingering indefinately in
+ the system. */
+ if(hs != NULL) {
+ if(hs->state == HTTP_DEALLOCATED) {
+ uip_abort();
+ } else if(hs->poll++ >= 100) {
+ uip_abort();
+ dealloc_state(hs);
+ }
+ }
+ return;
+ }
+
+
+ if(uip_newdata() && hs->state == HTTP_NOGET) {
+ hs->poll = 0;
+ /* This is the first data we receive, and it should contain a
+ GET. */
+
+ /* Check for GET. */
+ if(uip_appdata[0] != ISO_G ||
+ uip_appdata[1] != ISO_E ||
+ uip_appdata[2] != ISO_T ||
+ uip_appdata[3] != ISO_space) {
+ /* If it isn't a GET, we abort the connection. */
+ uip_abort();
+ dealloc_state(hs);
+ return;
+ }
+
+ beep();
+
+ /* Find the file we are looking for. */
+ for(i = 4; i < 40; ++i) {
+ if(uip_appdata[i] == ISO_space ||
+ uip_appdata[i] == ISO_cr ||
+ uip_appdata[i] == ISO_nl) {
+ uip_appdata[i] = 0;
+ break;
+ }
+ }
+
+ PRINT("request for file ");
+ PRINTLN(&uip_appdata[4]);
+ webserver_log_file(uip_conn->ripaddr, &uip_appdata[4]);
+ /* Check for a request for "/". */
+ if(uip_appdata[4] == ISO_slash &&
+ uip_appdata[5] == 0) {
+ httpd_fs_open(file_index_html.name, &fsfile);
+ } else {
+ if(!httpd_fs_open((const char *)&uip_appdata[4], &fsfile)) {
+ PRINTLN("couldn't open file");
+ httpd_fs_open(file_404_html.name, &fsfile);
+ }
+ }
+
+ if(uip_appdata[4] == ISO_slash &&
+ uip_appdata[5] == ISO_c &&
+ uip_appdata[6] == ISO_g &&
+ uip_appdata[7] == ISO_i &&
+ uip_appdata[8] == ISO_slash) {
+ /* If the request is for a file that starts with "/cgi/", we
+ prepare for invoking a script. */
+ hs->script = fsfile.data;
+ next_scriptstate();
+ } else {
+ hs->script = NULL;
+ /* The web server is now no longer in the HTTP_NOGET state, but
+ in the HTTP_FILE state since is has now got the GET from
+ the client and will start transmitting the file. */
+ hs->state = HTTP_FILE;
+
+ /* Point the file pointers in the connection state to point to
+ the first byte of the file. */
+ hs->dataptr = fsfile.data;
+ hs->count = fsfile.len;
+ }
+ }
+
+
+ if(hs->state != HTTP_FUNC) {
+ /* Check if the client (remote end) has acknowledged any data that
+ we've previously sent. If so, we move the file pointer further
+ into the file and send back more data. If we are out of data to
+ send, we close the connection. */
+ if(uip_acked()) {
+ hs->poll = 0;
+ if(hs->count >= uip_mss()) {
+ hs->count -= uip_mss();
+ hs->dataptr += uip_mss();
+ } else {
+ hs->count = 0;
+ }
+
+ if(hs->count == 0) {
+ if(hs->script != NULL) {
+ next_scriptline();
+ next_scriptstate();
+ } else {
+ uip_close();
+ dealloc_state(hs);
+ }
+ }
+ }
+ }
+
+ if(hs->state == HTTP_FUNC) {
+ /* Call the CGI function. */
+#if 1
+ if(httpd_cgitab[hs->script[2] - ISO_a]()) {
+ /* If the function returns non-zero, we jump to the next line
+ in the script. */
+ next_scriptline();
+ next_scriptstate();
+ }
+#endif
+ }
+
+ if(hs->state != HTTP_FUNC && !uip_poll()) {
+ hs->poll = 0;
+ /* Send a piece of data, but not more than the MSS of the
+ connection. */
+ uip_send(hs->dataptr,
+ hs->count > uip_mss()? uip_mss(): hs->count);
+ }
+
+ /* Finally, return to uIP. Our outgoing packet will soon be on its
+ way... */
+}
+/*-----------------------------------------------------------------------------------*/
+/* next_scriptline():
+ *
+ * Reads the script until it finds a newline. */
+static void
+next_scriptline(void)
+{
+ /* Loop until we find a newline character. */
+ do {
+ ++(hs->script);
+ } while(hs->script[0] != ISO_nl);
+
+ /* Eat up the newline as well. */
+ ++(hs->script);
+}
+/*-----------------------------------------------------------------------------------*/
+/* next_sciptstate:
+ *
+ * Reads one line of script and decides what to do next.
+ */
+static void
+next_scriptstate(void)
+{
+ struct httpd_fs_file fsfile;
+ u8_t i;
+
+ again:
+ switch(hs->script[0]) {
+ case ISO_t:
+ /* Send a text string. */
+ hs->state = HTTP_TEXT;
+ hs->dataptr = &hs->script[2];
+
+ /* Calculate length of string. */
+ for(i = 0; hs->dataptr[i] != ISO_nl; ++i);
+ hs->count = i;
+ break;
+ case ISO_c:
+ /* Call a function. */
+ hs->state = HTTP_FUNC;
+ hs->dataptr = NULL;
+ hs->count = 0;
+ uip_reset_acked();
+ break;
+ case ISO_i:
+ /* Include a file. */
+ hs->state = HTTP_FILE;
+ if(!httpd_fs_open(&hs->script[2], &fsfile)) {
+ uip_abort();
+ dealloc_state(hs);
+ }
+ hs->dataptr = fsfile.data;
+ hs->count = fsfile.len;
+ break;
+ case ISO_hash:
+ /* Comment line. */
+ next_scriptline();
+ goto again;
+ break;
+ case ISO_period:
+ /* End of script. */
+ hs->state = HTTP_END;
+ uip_close();
+ dealloc_state(hs);
+ break;
+ default:
+ uip_abort();
+ dealloc_state(hs);
+ break;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/makefsdata b/contiki-msp430/apps/makefsdata
new file mode 100755
index 0000000..89f210d
--- /dev/null
+++ b/contiki-msp430/apps/makefsdata
@@ -0,0 +1,104 @@
+#!/usr/bin/perl
+
+open(OUTPUT, "> httpd-fsdata.c");
+
+chdir("httpd-fs");
+open(FILES, "find . -type f |");
+
+
+while($file = <FILES>) {
+
+ # Do not include files in CVS directories nor backup files.
+ if($file =~ /(CVS|~)/) {
+ next;
+ }
+
+ chop($file);
+
+ open(HEADER, "> /tmp/header") || die $!;
+ if($file =~ /404.html/) {
+ print(HEADER "HTTP/1.0 404 File not found\r\n");
+ } else {
+ print(HEADER "HTTP/1.0 200 OK\r\n");
+ }
+ print(HEADER "Server: Contiki/pre-1.1 (http://dunkels.com/adam/contiki/)\r\n");
+ if($file =~ /\.html$/) {
+ print(HEADER "Content-type: text/html\r\n");
+ } elsif($file =~ /\.gif$/) {
+ print(HEADER "Content-type: image/gif\r\n");
+ } elsif($file =~ /\.png$/) {
+ print(HEADER "Content-type: image/png\r\n");
+ } elsif($file =~ /\.jpg$/) {
+ print(HEADER "Content-type: image/jpeg\r\n");
+ } elsif($file =~ /\.css$/) {
+ print(HEADER "Content-type: text/css\r\n");
+ } else {
+ print(HEADER "Content-type: text/plain\r\n");
+ }
+ print(HEADER "\r\n");
+ close(HEADER);
+
+ unless($file =~ /\.plain$/ || $file =~ /cgi/) {
+ system("cat /tmp/header $file > /tmp/file");
+ } else {
+ system("cp $file /tmp/file");
+ }
+
+ open(FILE, "/tmp/file");
+ unlink("/tmp/file");
+ unlink("/tmp/header");
+
+ $file =~ s/\.//;
+ $fvar = $file;
+ $fvar =~ s-/-_-g;
+ $fvar =~ s-\.-_-g;
+ print(OUTPUT "static const unsigned char data".$fvar."[] __attribute__ ((aligned (2))) = {\n");
+ print(OUTPUT "\t/* $file */\n\t");
+ for($j = 0; $j < length($file); $j++) {
+ printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1)));
+ }
+ printf(OUTPUT "0,\n");
+
+ if((length($file) & 1) == 0) {
+ printf(OUTPUT "0,\n");
+ }
+
+ $i = 0;
+ while(read(FILE, $data, 1)) {
+ if($i == 0) {
+ print(OUTPUT "\t");
+ }
+ printf(OUTPUT "%#02x, ", unpack("C", $data));
+ $i++;
+ if($i == 10) {
+ printf(OUTPUT "\n");
+ $i = 0;
+ }
+
+ }
+ print(OUTPUT "};\n\n");
+ close(FILE);
+ push(@fvars, $fvar);
+ push(@files, $file);
+}
+
+for($i = 0; $i < @fvars; $i++) {
+ $file = $files[$i];
+ $fvar = $fvars[$i];
+
+ if($i == 0) {
+ $prevfile = "NULL";
+ } else {
+ $prevfile = "file" . $fvars[$i - 1];
+ }
+ $len = length($file) + 1;
+ if(($len & 1) == 1) {
+ $len++;
+ }
+ print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, ");
+ print(OUTPUT "data$fvar + ". $len .", ");
+ print(OUTPUT "sizeof(data$fvar) - ". $len ."}};\n\n");
+}
+
+print(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n");
+print(OUTPUT "#define HTTPD_FS_NUMFILES $i");
diff --git a/contiki-msp430/apps/makestrings b/contiki-msp430/apps/makestrings
new file mode 100755
index 0000000..0cf6c9e
--- /dev/null
+++ b/contiki-msp430/apps/makestrings
@@ -0,0 +1,39 @@
+#!/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 "const 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 const char $var\[%d];\n", length($datan) + 1);
+
+ }
+ }
+ close(OUTPUTC);
+ close(OUTPUTH);
+}
+stringify("http-user-agent-string");
+
+exit 0;
+
diff --git a/contiki-msp430/apps/sensorcheck.c b/contiki-msp430/apps/sensorcheck.c
new file mode 100644
index 0000000..7d8095c
--- /dev/null
+++ b/contiki-msp430/apps/sensorcheck.c
@@ -0,0 +1,76 @@
+#include "ctk.h"
+#include "dispatcher.h"
+#include "loader.h"
+#include "sensors.h"
+
+#include "uip-signal.h"
+
+#include <stdio.h>
+
+
+static void sensorcheck_idle(void);
+static DISPATCHER_SIGHANDLER(sensorcheck_sighandler, s, data);
+static struct dispatcher_proc p =
+ {DISPATCHER_PROC("Sensor check", sensorcheck_idle,
+ sensorcheck_sighandler, NULL)};
+static ek_id_t id = EK_ID_NONE;
+
+static unsigned char dataavail;
+
+static struct uip_udp_conn *conn;
+static int vib;
+
+/*-----------------------------------------------------------------------------------*/
+LOADER_INIT_FUNC(sensorcheck_init, arg)
+{
+ u16_t server[2];
+ arg_free(arg);
+
+ if(id == EK_ID_NONE) {
+ id = dispatcher_start(&p);
+ uip_ipaddr(server, 192,168,1,1);
+ conn = uip_udp_new(server, 5125);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+sensorcheck_quit(void)
+{
+ dispatcher_exit(&p);
+ id = EK_ID_NONE;
+ LOADER_UNLOAD();
+}
+/*-----------------------------------------------------------------------------------*/
+static
+DISPATCHER_SIGHANDLER(sensorcheck_sighandler, s, data)
+{
+ DISPATCHER_SIGHANDLER_ARGS(s, data);
+
+ if(s == dispatcher_signal_quit) {
+ sensorcheck_quit();
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+sensorcheck_idle(void)
+{
+ /* Check vibration sensor, and send out data. */
+ if(sensors_vib != vib) {
+ vib = sensors_vib;
+ ++dataavail;
+ if(conn != NULL) {
+ dispatcher_emit(uip_signal_poll_udp, conn, DISPATCHER_BROADCAST);
+ }
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+udp_appcall(void)
+{
+ if(dataavail) {
+ *(int *)uip_appdata = vib;
+ uip_udp_send(sizeof(int));
+ dataavail = 0;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/sensorview-dsc.c b/contiki-msp430/apps/sensorview-dsc.c
new file mode 100644
index 0000000..61fc73f
--- /dev/null
+++ b/contiki-msp430/apps/sensorview-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: sensorview-dsc.c,v 1.3 2005/03/18 00:52:32 oliverschmidt Exp $
+ *
+ */
+
+#include "dsc.h"
+
+extern struct ctk_icon sensorview_icon;
+/*-----------------------------------------------------------------------------------*/
+DSC(sensorview_dsc,
+ "Sensors",
+ "sensorview.prg",
+ sensorview_init,
+ &sensorview_icon);
+/*-----------------------------------------------------------------------------------*/
+#if CTK_CONF_ICON_BITMAPS
+static const unsigned char sensorviewicon_bitmap[3*3*8] = {
+ 0x00, 0x7f, 0x43, 0x4c, 0x58, 0x53, 0x60, 0x6f,
+ 0x00, 0xff, 0x00, 0x7e, 0x00, 0xff, 0x00, 0xff,
+ 0x00, 0xfe, 0xc2, 0x32, 0x1a, 0xca, 0x06, 0xf6,
+
+ 0x40, 0x5f, 0x40, 0x5f, 0x40, 0x5f, 0x40, 0x4f,
+ 0x00, 0xff, 0x00, 0xff, 0x00, 0xfc, 0x01, 0xf3,
+ 0x02, 0xfa, 0x02, 0x82, 0x3e, 0xfe, 0xfe, 0xfe,
+
+ 0x60, 0x67, 0x50, 0x59, 0x4c, 0x43, 0x7f, 0x00,
+ 0x07, 0xe7, 0x0f, 0xef, 0x0f, 0x0f, 0xff, 0x00,
+ 0x8e, 0x06, 0x06, 0x06, 0x8e, 0xfe, 0xfe, 0x00
+};
+#endif /* CTK_CONF_ICON_BITMAPS */
+
+#if CTK_CONF_ICON_TEXTMAPS
+static const char sensorviewicon_textmap[9] = {
+ ' ', ' ', 'c',
+ ' ', '?', ' ',
+ '.', ' ', ' '
+};
+#endif /* CTK_CONF_ICON_TEXTMAPS */
+
+#if CTK_CONF_ICONS
+static struct ctk_icon sensorview_icon =
+ {CTK_ICON("Sensors", sensorviewicon_bitmap, sensorviewicon_textmap)};
+#endif /* CTK_CONF_ICONS */
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/sensorview-dsc.h b/contiki-msp430/apps/sensorview-dsc.h
new file mode 100644
index 0000000..69d29ac
--- /dev/null
+++ b/contiki-msp430/apps/sensorview-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: sensorview-dsc.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __SENSORVIEW_DSC_H__
+#define __SENSORVIEW_DSC_H__
+
+#include "dsc.h"
+
+DSC_HEADER(sensorview_dsc);
+
+#endif /* __SENSORVIEW_DSC_H__ */
diff --git a/contiki-msp430/apps/sensorview.c b/contiki-msp430/apps/sensorview.c
new file mode 100644
index 0000000..846b40a
--- /dev/null
+++ b/contiki-msp430/apps/sensorview.c
@@ -0,0 +1,106 @@
+/*
+ * 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 Contiki desktop environment
+ *
+ * $Id: sensorview.c,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+#include "ctk.h"
+#include "dispatcher.h"
+#include "loader.h"
+#include "sensors.h"
+
+#include <stdio.h>
+
+static struct ctk_window window;
+
+#if 1
+static struct ctk_label templabel =
+ {CTK_LABEL(1, 1, 12, 1,"Temperature:")};
+static char tempval[7];
+static struct ctk_label tempvallabel =
+ {CTK_LABEL(4, 3, 6, 1, tempval)};
+#endif
+
+static void sensorview_idle(void);
+static DISPATCHER_SIGHANDLER(sensorview_sighandler, s, data);
+static struct dispatcher_proc p =
+ {DISPATCHER_PROC("Sensor view", sensorview_idle,
+ sensorview_sighandler, NULL)};
+static ek_id_t id = EK_ID_NONE;
+
+/*-----------------------------------------------------------------------------------*/
+LOADER_INIT_FUNC(sensorview_init, arg)
+{
+ arg_free(arg);
+
+ if(id == EK_ID_NONE) {
+ id = dispatcher_start(&p);
+
+ ctk_window_new(&window, 14, 4, "Sensors");
+#if 1
+ CTK_WIDGET_ADD(&window, &templabel);
+ CTK_WIDGET_ADD(&window, &tempvallabel);
+#endif
+ dispatcher_listen(ctk_signal_window_close);
+ }
+ ctk_window_open(&window);
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+sensorview_quit(void)
+{
+ ctk_window_close(&window);
+ dispatcher_exit(&p);
+ id = EK_ID_NONE;
+ LOADER_UNLOAD();
+}
+/*-----------------------------------------------------------------------------------*/
+static
+DISPATCHER_SIGHANDLER(sensorview_sighandler, s, data)
+{
+ DISPATCHER_SIGHANDLER_ARGS(s, data);
+
+ if(s == dispatcher_signal_quit ||
+ s == ctk_signal_window_close) {
+ sensorview_quit();
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+sensorview_idle(void)
+{
+ sprintf(tempval, "%d", sensors_temp);
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/shell.c b/contiki-msp430/apps/shell.c
new file mode 100644
index 0000000..9f54ed5
--- /dev/null
+++ b/contiki-msp430/apps/shell.c
@@ -0,0 +1,219 @@
+/*
+ * 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: shell.c,v 1.1 2004/02/18 21:44:19 adamdunkels Exp $
+ *
+ */
+
+#include "program-handler.h"
+#include "loader.h"
+#include "uip.h"
+#include "uip_main.h"
+#include "uip_arp.h"
+#include "resolv.h"
+
+#include "uip-signal.h"
+
+#include "shell.h"
+
+#include <string.h>
+
+
+struct ptentry {
+ char c;
+ void (* pfunc)(char *str);
+};
+
+extern char *shell_prompt_text;
+
+/*-----------------------------------------------------------------------------------*/
+static void
+parse(register char *str, struct ptentry *t)
+{
+ register struct ptentry *p;
+ char *sstr;
+
+ sstr = str;
+
+ /* Loop over the parse table entries in t in order to find one that
+ matches the first character in str. */
+ for(p = t; p->c != 0; ++p) {
+ if(*str == p->c) {
+ /* Skip rest of the characters up to the first space. */
+ while(*str != ' ') {
+ ++str;
+ }
+
+ /* Skip all spaces.*/
+ while(*str == ' ') {
+ ++str;
+ }
+
+ /* Call parse table entry function and return. */
+ p->pfunc(str);
+ return;
+ }
+ }
+
+ /* Did not find matching entry in parse table. We just call the
+ default handler supplied by the caller and return. */
+ p->pfunc(str);
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+inttostr(register char *str, unsigned int i)
+{
+ str[0] = '0' + i / 100;
+ if(str[0] == '0') {
+ str[0] = ' ';
+ }
+ str[1] = '0' + (i / 10) % 10;
+ if(str[1] == '0') {
+ str[1] = ' ';
+ }
+ str[2] = '0' + i % 10;
+ str[3] = ' ';
+ str[4] = 0;
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+processes(char *str)
+{
+ static char idstr[5];
+ struct dispatcher_proc *p;
+
+ shell_output("Processes:", "");
+ /* Step through each possible process ID and see if there is a
+ matching process. */
+ for(p = DISPATCHER_PROCS(); p != NULL; p = p->next) {
+ inttostr(idstr, p->id);
+ shell_output(idstr, p->name);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static char *
+nullterminate(char *str)
+{
+ char *nt;
+
+ /* Nullterminate string. Start with finding newline character. */
+ for(nt = str; *nt != '\r' &&
+ *nt != '\n'; ++nt);
+
+ /* Replace newline with a null char. */
+ *nt = 0;
+
+ /* Remove trailing spaces. */
+ while(nt > str && *(nt - 1) == ' ') {
+ *(nt - 1) = 0;
+ --nt;
+ }
+
+ /* Return pointer to null char. */
+ return nt;
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+killproc(char *str)
+{
+ char procnum, j, c;
+ char procstr[5];
+
+ nullterminate(str);
+
+ procnum = 0;
+
+ for(j = 0; j < 4; ++j) {
+ c = str[(int)j];
+ if(c >= '0' && c <= '9') {
+ procnum = procnum * 10 + (str[(int)j] - '0');
+ } else {
+ break;
+ }
+ }
+ if(procnum != 0) {
+ inttostr(procstr, procnum);
+ shell_output("Killing process ", procstr);
+ dispatcher_emit(dispatcher_signal_quit, NULL, procnum);
+ } else {
+ shell_output("Could not parse process number", "");
+ }
+
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+help(char *str)
+{
+ shell_output("Available commands:", "");
+ shell_output("ps - show processes", "");
+ shell_output("kill - kill process", "");
+ shell_output("quit - quit shell", "");
+ shell_output("? - show this help", "");
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+none(char *str)
+{
+}
+/*-----------------------------------------------------------------------------------*/
+static struct ptentry configparsetab[] =
+ {{'k', killproc},
+ {'p', processes},
+ {'q', shell_quit},
+ {'?', help},
+
+ /* Default action */
+ {0, none}};
+/*-----------------------------------------------------------------------------------*/
+void
+shell_start(void)
+{
+ shell_output("Contiki command shell", "");
+ shell_output("Type '?' for help", "");
+ shell_prompt(shell_prompt_text);
+}
+/*-----------------------------------------------------------------------------------*/
+void
+shell_input(char *cmd)
+{
+ parse(cmd, configparsetab);
+ shell_prompt(shell_prompt_text);
+}
+/*-----------------------------------------------------------------------------------*/
+void
+shell_idle(void)
+{
+}
+/*-----------------------------------------------------------------------------------*/
+void
+shell_init(void)
+{
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/webserver.c b/contiki-msp430/apps/webserver.c
new file mode 100644
index 0000000..3b7cc7c
--- /dev/null
+++ b/contiki-msp430/apps/webserver.c
@@ -0,0 +1,80 @@
+/*
+ * 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 Contiki desktop environment for the C64.
+ *
+ * $Id: webserver.c,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+
+#include "ctk.h"
+#include "dispatcher.h"
+#include "http-strings.h"
+#include "uip_main.h"
+#include "petsciiconv.h"
+
+#include "loader.h"
+
+#include "webserver.h"
+#include "httpd.h"
+
+static DISPATCHER_SIGHANDLER(webserver_sighandler, s, data);
+static struct dispatcher_proc p =
+{DISPATCHER_PROC("Web server", NULL, webserver_sighandler,
+ httpd_appcall)};
+static ek_id_t id;
+
+/*-----------------------------------------------------------------------------------*/
+LOADER_INIT_FUNC(webserver_init, arg)
+{
+ arg_free(arg);
+ if(id == EK_ID_NONE) {
+ id = dispatcher_start(&p);
+
+ httpd_init();
+ }
+
+}
+/*-----------------------------------------------------------------------------------*/
+static
+DISPATCHER_SIGHANDLER(webserver_sighandler, s, data)
+{
+ unsigned char i;
+ DISPATCHER_SIGHANDLER_ARGS(s, data);
+}
+/*-----------------------------------------------------------------------------------*/
+void
+webserver_log_file(u16_t *requester, char *file)
+{
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/apps/webserver.h b/contiki-msp430/apps/webserver.h
new file mode 100644
index 0000000..ec12faa
--- /dev/null
+++ b/contiki-msp430/apps/webserver.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. 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 Contiki desktop environment for the C64.
+ *
+ * $Id: webserver.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __WEBSERVER_H__
+#define __WEBSERVER_H__
+
+void webserver_init(char *arg);
+
+void webserver_log_file(u16_t *requester, char *filename);
+
+#endif /* __WEBSERVER_H__ */
diff --git a/contiki-msp430/conf/cc-conf.h b/contiki-msp430/conf/cc-conf.h
new file mode 100644
index 0000000..f564c25
--- /dev/null
+++ b/contiki-msp430/conf/cc-conf.h
@@ -0,0 +1,45 @@
+/*
+ * 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 Contiki desktop OS
+ *
+ * $Id: cc-conf.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __CC_CONF_H__
+#define __CC_CONF_H__
+
+#define CC_CONF_REGISTER_ARGS 1
+#define CC_CONF_FUNCTION_POINTER_ARGS 1
+
+#endif /* __CC_CONF_H__ */
+
diff --git a/contiki-msp430/conf/ctk-conf.h b/contiki-msp430/conf/ctk-conf.h
new file mode 100644
index 0000000..abefbef
--- /dev/null
+++ b/contiki-msp430/conf/ctk-conf.h
@@ -0,0 +1,89 @@
+/*
+ * 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-conf.h,v 1.2 2004/06/27 12:50:18 oliverschmidt Exp $
+ *
+ */
+
+#ifndef __CTK_CONF_H__
+#define __CTK_CONF_H__
+
+/*
+ * This file is used for setting various compile time settings for the
+ * CTK GUI toolkit.
+*/
+
+/* Defines which key that is to be used for activating the menus */
+#define CTK_CONF_MENU_KEY CH_HOME
+
+/* Defines which key that is to be used for switching the frontmost
+ window. */
+#define CTK_CONF_WINDOWSWITCH_KEY CH_ESC
+
+/* 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 1
+
+/* 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 */
+
+/* Toggles mouse support (must have support functions in the
+architecture specific files to work). */
+#define CTK_CONF_MOUSE_SUPPORT 1
+
+/* 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 4
+
+#endif /* __CTK_CONF_H__ */
diff --git a/contiki-msp430/conf/ctk-vncserver-conf.h b/contiki-msp430/conf/ctk-vncserver-conf.h
new file mode 100644
index 0000000..6183a17
--- /dev/null
+++ b/contiki-msp430/conf/ctk-vncserver-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. 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 Contiki desktop OS
+ *
+ * $Id: ctk-vncserver-conf.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __CTK_VNCSERVER_CONF_H__
+#define __CTK_VNCSERVER_CONF_H__
+
+#define CTK_VNCSERVER_CONF_NUMCONNS 1
+
+#define CTK_VNCSERVER_CONF_MAX_ICONS 1
+
+#define CTK_VNCSERVER_CONF_SUPPRESS_BLANKS 0
+
+#endif /* __CTK_VNCSERVER_CONF_H__ */
+
diff --git a/contiki-msp430/conf/ek-conf.h b/contiki-msp430/conf/ek-conf.h
new file mode 100644
index 0000000..073bc06
--- /dev/null
+++ b/contiki-msp430/conf/ek-conf.h
@@ -0,0 +1,71 @@
+/*
+ * 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 "ek" event kernel.
+ *
+ * $Id: ek-conf.h,v 1.2 2003/11/27 15:57:32 adamdunkels Exp $
+ *
+ */
+
+
+#ifndef __EK_CONF_H__
+#define __EK_CONF_H__
+
+
+typedef void *ek_data_t;
+
+typedef unsigned char ek_signal_t;
+typedef unsigned char ek_id_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 short ek_clock_t;
+
+#define EK_CONF_NUMSIGNALS 16 /* Must be 2^n */
+typedef unsigned char ek_num_signals_t;
+
+#define EK_CONF_NUMTIMERS 4 /* Must be 2^n */
+typedef unsigned char ek_num_timers_t;
+
+#define EK_CONF_NUMLISTENERS 16 /* Must be 2^n */
+typedef unsigned char ek_num_listeners_t;
+
+#define EK_CONF_UNLISTEN 0
+
+#define CLK_TCK 20U
+
+#ifndef NULL
+#define NULL (void *)0
+#endif /* NULL */
+
+
+#endif /* __EK_CONF_H__ */
diff --git a/contiki-msp430/conf/libconio-conf.h b/contiki-msp430/conf/libconio-conf.h
new file mode 100644
index 0000000..b960b50
--- /dev/null
+++ b/contiki-msp430/conf/libconio-conf.h
@@ -0,0 +1,45 @@
+/*
+ * 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 Contiki desktop OS
+ *
+ * $Id: libconio-conf.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __LIBCONIO_CONF_H__
+#define __LIBCONIO_CONF_H__
+
+#define LIBCONIO_CONF_SCREEN_WIDTH 20
+#define LIBCONIO_CONF_SCREEN_HEIGHT 7
+
+#endif /* __LIBCONIO_CONF_H__ */
+
diff --git a/contiki-msp430/conf/program-handler-conf.h b/contiki-msp430/conf/program-handler-conf.h
new file mode 100644
index 0000000..2948699
--- /dev/null
+++ b/contiki-msp430/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:42 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-msp430/conf/telnetd-conf.h b/contiki-msp430/conf/telnetd-conf.h
new file mode 100644
index 0000000..bb6bdb7
--- /dev/null
+++ b/contiki-msp430/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/18 21:38:15 adamdunkels Exp $
+ *
+ */
+#ifndef __TELNETD_CONF_H__
+
+#define TELNETD_CONF_LINELEN 32
+#define TELNETD_CONF_NUMLINES 12
+
+#endif /* __TELNETD_CONF_H__ */
+
+
+
+
+
+
+
+
diff --git a/contiki-msp430/conf/uip-conf.h b/contiki-msp430/conf/uip-conf.h
new file mode 100644
index 0000000..f9a9236
--- /dev/null
+++ b/contiki-msp430/conf/uip-conf.h
@@ -0,0 +1,58 @@
+/*
+ * 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 Contiki Destop OS
+ *
+ * $Id: uip-conf.h,v 1.2 2003/11/27 15:57:49 adamdunkels Exp $
+ *
+ */
+#ifndef __UIP_CONF_H__
+
+#define UIP_CONF_MAX_CONNECTIONS 4
+#define UIP_CONF_MAX_LISTENPORTS 4
+#define UIP_CONF_BUFFER_SIZE 160
+
+#define UIP_CONF_LLH_LEN 4
+
+#define UIP_CONF_RESOLV_ENTRIES 1
+
+#define UIP_CONF_PINGADDRCONF 1
+
+#endif /* __UIP_CONF_H__ */
+
+
+
+
+
+
+
+
diff --git a/contiki-msp430/conf/vnc-conf.h b/contiki-msp430/conf/vnc-conf.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/contiki-msp430/conf/vnc-conf.h
diff --git a/contiki-msp430/conf/www-conf.h b/contiki-msp430/conf/www-conf.h
new file mode 100644
index 0000000..7971505
--- /dev/null
+++ b/contiki-msp430/conf/www-conf.h
@@ -0,0 +1,68 @@
+/*
+ * 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 Contiki desktop environment
+ *
+ * $Id: www-conf.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __WWW_CONF_H__
+#define __WWW_CONF_H__
+
+/* The size of the HTML viewing area. */
+#define WWW_CONF_WEBPAGE_WIDTH 36
+#define WWW_CONF_WEBPAGE_HEIGHT 25
+
+/* The size of the "Back" history. */
+#define WWW_CONF_HISTORY_SIZE 8
+
+/* Defines the maximum length of an URL */
+#define WWW_CONF_MAX_URLLEN 160
+
+/* The maxiumum number of widgets (i.e., hyperlinks, form elements) on
+ a page. */
+#define WWW_CONF_MAX_NUMPAGEWIDGETS 30
+
+/* 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 80
+#define WWW_CONF_MAX_FORMNAMELEN 40
+#define WWW_CONF_MAX_INPUTNAMELEN 40
+#define WWW_CONF_MAX_INPUTVALUELEN 40
+
+#define WWW_CONF_PAGEVIEW 1
+#endif /* __WWW_CONF_H__ */
diff --git a/contiki-msp430/contiki-main.c b/contiki-msp430/contiki-main.c
new file mode 100644
index 0000000..812f9a4
--- /dev/null
+++ b/contiki-msp430/contiki-main.c
@@ -0,0 +1,165 @@
+/*
+ * 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: contiki-main.c,v 1.3 2003/11/27 15:56:57 adamdunkels Exp $
+ *
+ */
+
+#include <io.h>
+#include <signal.h>
+
+
+#include "ctk.h"
+#include "ctk-draw.h"
+#include "ctk-vncserver.h"
+#include "dispatcher.h"
+
+
+#include "uip_main.h"
+#include "uip.h"
+#include "uip_arp.h"
+#include "resolv.h"
+
+#include "webserver.h"
+#include "program-handler.h"
+#include "about-dsc.h"
+#include "netconf-dsc.h"
+#include "processes-dsc.h"
+#include "www-dsc.h"
+#include "webserver-dsc.h"
+
+#include "sensorview-dsc.h"
+
+#include "sensors.h"
+
+#include "uip.h"
+#include "uip_arp.h"
+
+#include "msp430.h"
+
+
+#include "rs232.h"
+void slip_drv_init(char *arg);
+
+
+
+static u16_t addr[2];
+/*-----------------------------------------------------------------------------------*/
+
+int
+main(int argc, char **argv)
+{
+
+ msp430_init();
+
+ rs232_init(0);
+
+ sensors_init();
+
+ rs232_print("uip_init()...\n");
+ uip_init();
+
+ /* rs232_print("resolv_init()...\n");
+ resolv_init();*/
+
+
+
+#if 0
+ uip_ipaddr(addr, 193,10,67,150);
+ uip_sethostaddr(addr);
+
+ /* uip_ipaddr(addr, 193,10,66,195);
+ resolv_conf(addr);*/
+
+#else
+
+ uip_ipaddr(addr, 172,16,0,2);
+ uip_sethostaddr(addr);
+
+ /* uip_ipaddr(addr, 193,10,66,195);
+ resolv_conf(addr);*/
+#endif
+
+
+ rs232_print("dispatcher_init()...\n");
+ dispatcher_init();
+
+
+ rs232_print("slip_drv_init()...\n");
+ slip_drv_init(NULL);
+
+
+ rs232_print("ctk_init()...\n");
+ /* ctk_init();*/
+
+ rs232_print("ctk_vncserver_init()...\n");
+ /* ctk_vncserver_init(NULL); */
+
+ rs232_print("program_handler_init()...\n");
+ /* program_handler_init();*/
+
+ /* rs232_print("processes_init()...\n");
+ processes_init(NULL);*/
+
+ rs232_print("webserver_init()...\n");
+ /* webserver_init(NULL);*/
+
+ sensorcheck_init(NULL);
+
+
+ /* program_handler_add(&directory_dsc, "Directory", 1);*/
+ /* program_handler_add(&about_dsc, "About", 1);*/
+ /* program_handler_add(&webserver_dsc, "Web server", 1);*/
+ /* program_handler_add(&www_dsc, "Web browser", 1);*/
+ /* program_handler_add(&calc_dsc, "Calculator", 0);*/
+ /* program_handler_add(&processes_dsc, "Processes", 0);*/
+
+ rs232_print("program_handler_addd()...\n");
+ /* program_handler_add(&sensorview_dsc, "Sensors", 1);*/
+
+
+ rs232_print("dispatcher_run()...\n");
+ beep();
+ dispatcher_run();
+
+ return 0;
+
+ argv = argv;
+ argc = argc;
+
+
+
+}
+/*-----------------------------------------------------------------------------------*/
+char *arg_alloc(char size) {return NULL;}
+void arg_init(void) {}
+void arg_free(char *arg) {}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/ctk/ctk-arch.h b/contiki-msp430/ctk/ctk-arch.h
new file mode 100644
index 0000000..a070db1
--- /dev/null
+++ b/contiki-msp430/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. 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-arch.h,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+#ifndef __CTK_ARCH_H__
+#define __CTK_ARCH_H__
+
+
+#include "ctk-vncarch.h"
+
+
+#endif /* __CTK_ARCH_H__ */
diff --git a/contiki-msp430/msp430/msp430.c b/contiki-msp430/msp430/msp430.c
new file mode 100644
index 0000000..d2b2090
--- /dev/null
+++ b/contiki-msp430/msp430/msp430.c
@@ -0,0 +1,188 @@
+/*
+ * 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: msp430.c,v 1.3 2003/11/27 15:58:05 adamdunkels Exp $
+ *
+ */
+
+#include <io.h>
+#include <signal.h>
+
+
+#include "ctk.h"
+#include "ctk-draw.h"
+#include "ctk-vncserver.h"
+#include "dispatcher.h"
+
+
+#include "uip_main.h"
+#include "uip.h"
+#include "uip_arp.h"
+#include "resolv.h"
+
+#include "webserver.h"
+#include "program-handler.h"
+#include "about-dsc.h"
+#include "netconf-dsc.h"
+#include "processes-dsc.h"
+#include "www-dsc.h"
+#include "webserver-dsc.h"
+
+#include "sensorview-dsc.h"
+
+#include "sensors.h"
+
+#include "uip.h"
+#include "uip_arp.h"
+
+
+#include "rs232.h"
+void slip_drv_init(char *arg);
+
+
+#define INTERVAL_5MS 52288U // 12288 cycles @ 2,4756MHz = 5 ms
+
+
+static u16_t addr[2];
+static ek_clock_t count;
+
+interrupt(TIMERA1_VECTOR) timera1 (void) {
+
+ if(TAIV == 2) {
+ CCR1 += INTERVAL_5MS;
+ ++count;
+ P2OUT ^= 4;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+ek_clock_t
+ek_clock(void)
+{
+ return count;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+beep(void)
+{
+ unsigned int i, j;
+
+ /* Beep. */
+ P2OUT &= 0xFE;
+ P2OUT |= 8;
+ for(i = 0; i < 100; ++i) {
+ j = j * j;
+ }
+ P2OUT &= 0xf7;
+ P2OUT |= 0x01;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+blink(void)
+{
+ unsigned int i, j;
+
+ /* Blink yellow LED. */
+ P2OUT &= 0xFB;
+ for(i = 0; i < 140; ++i) {
+ j = j * j;
+ }
+ P2OUT |= 0x04;
+}
+/*-----------------------------------------------------------------------------------*/
+void
+rs232_print(char *cptr)
+{
+ while(*cptr != 0) {
+ rs232_put(*cptr);
+ ++cptr;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+msp430_timer_init(void)
+{
+ TACTL = TASSEL1 | TACLR | ID_3; // select SMCLK (2.4576MHz), clear TAR
+
+ // init ccr1 to create the 5 ms interval
+ TACCTL1 = CCIE; // CCR1 interrupt enabled, interrupt occurs when timer equals CCR1
+ TACCR1 = INTERVAL_5MS; // interrupt after 5ms
+
+ TACTL |= MC1; // Start Timer_A in continuous mode
+
+ eint(); /* Enable interrupts. */
+
+
+}
+/*-----------------------------------------------------------------------------------*/
+void
+msp430_init(void)
+{
+ ////////// Port 1 ////
+ P1SEL = 0x00;
+ P1DIR = 0x81; // Outputs: P10=IRSend, P17=RS232RTS
+ // Inputs: P11=Light, P12=IRRec, P13=PIR, P14=Vibration,
+ // P15=Clockalarm, P16=RS232CTS
+ P1OUT = 0x00;
+
+ ////////// Port 2 ////
+ P2SEL = 0x00; // No Sels
+ P2DIR = 0x7F; // Outpus: P20..P23=Leds+Beeper, P24..P26=Poti
+ // Inputs: P27=Taster
+ P2OUT = 0x77;
+
+ ////////// Port 3 ////
+ P3SEL = 0xE0; // Sels for P34..P37 to activate UART,
+ P3DIR = 0x5F; // Inputs: P30..P33=CON4, P35/P37=RXD Transceiver/RS232
+ // OutPuts: P36/P38=TXD Transceiver/RS232
+ P3OUT = 0xE0; // Output a Zero on P34(TXD Transceiver) and turn SELECT off when receiving!!!
+
+ ////////// Port 4 ////
+ P4SEL = 0x00; // CON5 Stecker
+ P4DIR = 0xFF;
+ P4OUT = 0x00;
+
+ ////////// Port 5 ////
+ P5SEL = 0x00; // P50/P51= Clock SDA/SCL, P52/P53/P54=EEPROM SDA/SCL/WP
+ P5DIR = 0xDA; // P56/P57=Transceiver CNTRL0/1
+ P5OUT = 0x0F;
+
+ ////////// Port 6 ////
+ P6SEL = 0x00; // P60=Microphone, P61=PIR digital (same as P13), P62=PIR analog
+ P6DIR = 0x00; // P63=extern voltage, P64=battery voltage, P65=Receive power
+ P6OUT = 0x00;
+
+
+ /* Red led on */
+ P2OUT &= 0xfd;
+
+ beep();
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/msp430/msp430.h b/contiki-msp430/msp430/msp430.h
new file mode 100644
index 0000000..ab17108
--- /dev/null
+++ b/contiki-msp430/msp430/msp430.h
@@ -0,0 +1,12 @@
+#ifndef __MSP430_H__
+#define __MSP430_H__
+
+
+void msp430_init(void);
+void msp430_timer_init(void);
+void beep(void);
+void blink(void);
+
+unsigned short clock(void);
+
+#endif /* __MSP430_H__ */
diff --git a/contiki-msp430/msp430/rs232.c b/contiki-msp430/msp430/rs232.c
new file mode 100644
index 0000000..9b3a881
--- /dev/null
+++ b/contiki-msp430/msp430/rs232.c
@@ -0,0 +1,189 @@
+/**
+ * \file
+ * RS232 communication device driver for the MSP430.
+ * \author Adam Dunkels <adam@sics.se>
+ *
+ * This file contains an RS232 device driver for the MSP430 microcontroller.
+ *
+ */
+
+#include <io.h>
+#include <signal.h>
+
+#include "rs232.h"
+
+void beep(void);
+void blink(void);
+
+unsigned char lastchar, lastchar_changed;
+
+#define RECVBUF_SIZE 256
+
+static unsigned char recvbuf[RECVBUF_SIZE];
+static unsigned char recvbufptr1 = 0,
+ recvbufptr2 = 0;
+
+interrupt(UART1RX_VECTOR) rs232_rx_usart1(void)
+{
+ volatile unsigned char dummy;
+
+ /* Check status register for receive errors. */
+ if(URCTL1 & RXERR) {
+ /* Clear error flags by forcing a dummy read. */
+ dummy = RXBUF1;
+ } else {
+ recvbuf[recvbufptr1] = RXBUF1;
+ recvbufptr1 = (recvbufptr1 + 1) % RECVBUF_SIZE;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Initalize the RS232 port.
+ *
+ * \param none Not used.
+ * \return An error value or RS_ERR_OK if initialization succeeded.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_init(char none)
+{
+ int j;
+
+
+ /* This code taken from the FU Berlin sources and reformatted. */
+
+#define DELTA 600
+
+ unsigned int compare, oldcapture = 0;
+ unsigned int i;
+
+ BCSCTL1 = 0xa4; /* ACLK is devided by 4. RSEL=6 no division for MCLK
+ and SSMCLK. XT2 is off. */
+
+ BCSCTL2 = 0x00; /* Init FLL to desired frequency using the 32762Hz
+ crystal DCO frquenzy = 2,4576 MHz */
+
+ WDTCTL = WDTPW + WDTHOLD; /* Stop WDT */
+ BCSCTL1 |= DIVA1 + DIVA0; /* ACLK = LFXT1CLK/8 */
+ for(i = 0xffff; i > 0; --i); /* Delay for XTAL to settle */
+
+ /* Set DCO for 2,4576 Mhz: */
+ CCTL2 = CCIS0 + CM0 + CAP; /* Define CCR2, CAP, ACLK */
+ TACTL = TASSEL1 + TACLR + MC1; /* SMCLK, continous mode */
+ while(1) {
+ while((CCTL2 & CCIFG) != CCIFG); /* Wait until capture occured! */
+ CCTL2 &= ~CCIFG; /* Capture occured, clear flag */
+ compare = CCR2; /* Get current captured SMCLK */
+ compare = compare - oldcapture; /* SMCLK difference */
+ oldcapture = CCR2; /* Save current captured SMCLK */
+
+ if(DELTA == compare) {
+ break; /* if equal, leave "while(1)" */
+ } else if(DELTA < compare) { /* DCO is too fast, slow it down */
+ DCOCTL--;
+ if(DCOCTL == 0xFF) { /* Did DCO role under? */
+ BCSCTL1--;
+ }
+ } else { /* -> Select next lower RSEL */
+ DCOCTL++;
+ if(DCOCTL == 0x00) { /* Did DCO role over? */
+ BCSCTL1++;
+ }
+ /* -> Select next higher RSEL */
+ }
+ }
+ CCTL2 = 0; /* Stop CCR2 function */
+ TACTL = 0; /* Stop Timer_A */
+
+
+
+ /* RS232 */
+ UCTL1 = CHAR; /* 8-bit character */
+ UTCTL1 = SSEL1; /* UCLK = MCLK */
+
+#define RS232_SPEED 57600
+
+ if(RS232_SPEED == 19200) {
+ /* Set RS232 to 19200 */
+ UBR01 = 0x80; /* 2,457MHz/19200 = 128 -> 0x80 */
+ UBR11 = 0x00; /* */
+ UMCTL1 = 0x00; /* no modulation */
+ } else if(RS232_SPEED == 38400) {
+ /* Set RS232 to 38400 */
+ UBR01 = 0x40; /* 2,457MHz/38400 = 64 -> 0x40 */
+ UBR11 = 0x00; /* */
+ UMCTL1 = 0x00; /* no modulation */
+ } else if(RS232_SPEED == 57600) {
+ UBR01 = 0x2a; /* 2,457MHz/57600 = 42.7 -> 0x2A */
+ UBR11 = 0x00; /* */
+ UMCTL1 = 0x5b; /* */
+ } else if(RS232_SPEED == 115200) {
+ UBR01 = 0x15; /* 2,457MHz/115200 = 21.4 -> 0x15 */
+ UBR11 = 0x00; /* */
+ UMCTL1 = 0x4a; /* */
+ }
+
+
+ ME2 |= (UTXE1 | URXE1); /* Enable USART1 TXD/RXD */
+ IE2 |= URXIE1; /* Enable USART1 RX interrupt */
+ BCSCTL1 &= ~(DIVA1 + DIVA0); /* remove /8 divisor from ACLK again */
+
+
+ return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Configure the RS232 port.
+ *
+ * \param params RS232 parameters.
+ * \param parity Parity.
+ * \return An error value or RS_ERR_OK if configuration succeeded.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_params(unsigned char params, unsigned char parity)
+{
+ return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Get a byte from the serial port.
+ *
+ * \param c A pointer to the location where the byte is to be stored.
+ *
+ * \return An error value or RS_ERR_OK. If no data is available, the
+ * function returns RS_ERR_NO_DATA which is not a fatal error.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_get(char *c)
+{
+ if(recvbufptr1 == recvbufptr2) {
+ return RS_ERR_NO_DATA;
+ }
+ *c = recvbuf[recvbufptr2];
+ recvbufptr2 = (recvbufptr2 + 1) % RECVBUF_SIZE;
+ return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Transmit a byte over the serial port.
+ *
+ * \param c A pointer to the location where the byte is to be stored.
+ *
+ * \return An error value or RS_ERR_OK. If the transmission buffer was
+ * full, RS_ERR_OVERFLOW is returned.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_put(char c)
+{
+ /* Loop until the transmission buffer is available. */
+ while ((IFG2 & UTXIFG1) == 0);
+
+ /* Transmit the data. */
+ TXBUF1 = c;
+
+ return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/msp430/rs232.h b/contiki-msp430/msp430/rs232.h
new file mode 100644
index 0000000..8db178f
--- /dev/null
+++ b/contiki-msp430/msp430/rs232.h
@@ -0,0 +1,56 @@
+/**
+ * \file
+ * Header file for MSP430 RS232 driver.
+ * \author Adam Dunkels <adam@sics.se>
+ *
+ */
+#ifndef __RS232_H__
+#define __RS232_H__
+
+/* These values were taken from the "rs232.h" include file from cc65,
+ written by Ullrich von Bassewitz. */
+
+#define RS_BAUD_50 0x00
+#define RS_BAUD_110 0x01
+#define RS_BAUD_134_5 0x02
+#define RS_BAUD_300 0x03
+#define RS_BAUD_600 0x04
+#define RS_BAUD_1200 0x05
+#define RS_BAUD_2400 0x06
+#define RS_BAUD_4800 0x07
+#define RS_BAUD_9600 0x08
+#define RS_BAUD_19200 0x09
+#define RS_BAUD_38400 0x0A
+#define RS_BAUD_57600 0x0B
+#define RS_BAUD_115200 0x0C
+#define RS_BAUD_230400 0x0D
+
+#define RS_BITS_5 0x60
+#define RS_BITS_6 0x40
+#define RS_BITS_7 0x20
+#define RS_BITS_8 0x00
+
+#define RS_PAR_NONE 0x00
+#define RS_PAR_ODD 0x20
+#define RS_PAR_EVEN 0x60
+#define RS_PAR_MARK 0xA0
+#define RS_PAR_SPACE 0xE0
+
+#define RS_STOP_1 0x00
+#define RS_STOP_2 0x80
+
+#define RS_ERR_OK 0x00 /* Not an error - relax */
+#define RS_ERR_NOT_INITIALIZED 0x01 /* Module not initialized */
+#define RS_ERR_BAUD_TOO_FAST 0x02 /* Cannot handle baud rate */
+#define RS_ERR_BAUD_NOT_AVAIL 0x03 /* Baud rate not available */
+#define RS_ERR_NO_DATA 0x04 /* Nothing to read */
+#define RS_ERR_OVERFLOW 0x05 /* No room in send buffer */
+#define RS_ERR_INIT_FAILED 0x06 /* Initialization of RS232 routines f
+ailed */
+
+unsigned char rs232_init(char none);
+unsigned char rs232_params(unsigned char params, unsigned char parity);
+unsigned char rs232_get(char *c);
+unsigned char rs232_put(char c);
+
+#endif /* __RS232_H__ */
diff --git a/contiki-msp430/msp430/sensors.c b/contiki-msp430/msp430/sensors.c
new file mode 100644
index 0000000..e6b42e9
--- /dev/null
+++ b/contiki-msp430/msp430/sensors.c
@@ -0,0 +1,89 @@
+/**
+ * \file
+ * Functions for reading the sensors of the sensor board
+ * \author Based on the work of anonymous students at FU Berlin
+ *
+ *
+ */
+
+#include <io.h>
+#include <signal.h>
+
+#define SENSOR_VIB (0x10) // so never change these!!!
+
+volatile unsigned int sensors_mic, /**< On-board microphone. */
+ sensors_extern, /**< External sensor. */
+ sensors_battery, /**< Battery sensor. */
+ sensors_temp, /**< Temperature sensor. */
+ sensors_vib; /**< Vibration sensor. */
+
+/*-----------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Interrupt handler which reads the values of the A/D converters.
+ *
+ */
+/*-----------------------------------------------------------------------------------*/
+interrupt (ADC_VECTOR)
+ sensors_ad_irq(void)
+{
+ unsigned int temp;
+ char vk;
+
+ sensors_mic = ADC12MEM0;
+ sensors_extern = ADC12MEM1;
+ sensors_battery = ADC12MEM2;
+ temp = ADC12MEM3;
+
+ vk = (temp >> 8);
+ if(vk & 0x80) {
+ vk = ~vk;
+ }
+ sensors_temp = vk;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Interrupt handler for vibration sensor.
+ *
+ */
+/*-----------------------------------------------------------------------------------*/
+interrupt(PORT1_VECTOR)
+ p1_irq (void)
+{
+ if(P1IFG & SENSOR_VIB) {
+ ++sensors_vib;
+ P1IFG &= ~(SENSOR_VIB);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Initialize the sensors.
+ */
+/*-----------------------------------------------------------------------------------*/
+void
+sensors_init(void)
+{
+
+ /* Set up the ADC. */
+
+ ADC12CTL0 = ADC12ON + REFON + REF2_5V + SHT0_6 + SHT1_6 + MSC;
+ ADC12CTL1 = SHP + CONSEQ_3 + CSTARTADD_0;
+
+ ADC12MCTL0 = INCH_3 + SREF_0;
+ ADC12MCTL1 = INCH_4 + SREF_0;
+ ADC12MCTL2 = INCH_0 + SREF_0;
+ ADC12MCTL3 = INCH_5 + SREF_0 + EOS;
+
+ ADC12IE = 0x0008;
+
+ /* Delay */
+ {unsigned int i,j; for(i = 0x200; i > 0; --i) {j = j*j;}}
+
+ ADC12CTL0 |= ENC;
+ ADC12CTL0 |= ADC12SC;
+
+
+ P1IE |= SENSOR_VIB;
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/msp430/sensors.h b/contiki-msp430/msp430/sensors.h
new file mode 100644
index 0000000..ebc624c
--- /dev/null
+++ b/contiki-msp430/msp430/sensors.h
@@ -0,0 +1,12 @@
+#ifndef __SENSORS_H__
+#define __SENSORS_H__
+
+extern volatile unsigned int sensors_mic, /**< On-board microphone. */
+ sensors_extern, /**< External sensor. */
+ sensors_battery, /**< Battery sensor. */
+ sensors_temp, /**< Temperature sensor. */
+ sensors_vib; /**< Vibration sensor. */
+
+void sensors_init(void);
+
+#endif /* __SENSORS_H__ */
diff --git a/contiki-msp430/msp430/tr1001.c b/contiki-msp430/msp430/tr1001.c
new file mode 100644
index 0000000..c4d7752
--- /dev/null
+++ b/contiki-msp430/msp430/tr1001.c
@@ -0,0 +1,678 @@
+/**
+ * \file
+ * Device driver and packet framing for the RFM-TR1001 radio module.
+ * \author FU Berlin (original implementation)
+ * \author Adam Dunkels <adam@sics.se>
+ *
+ * This file implements a device driver for the RFM-TR1001 radio
+ * tranciever as well as a simple packet framing format, simimilar to
+ * PPP (AHDLC) framing.
+ *
+ * \note A lot of the stuff in this file is currently a "hack" form
+ * (particularly the "MAC" stuff and the ackowledgements)!
+ */
+
+#include "tr1001.h"
+#include "uip.h"
+#include "uip-fw.h"
+
+#include "sensors.h"
+
+#include <io.h>
+#include <signal.h>
+
+
+#define RXSTATE_READY 0 /**< \internal Receive state: ready for a
+ new packet. */
+#define RXSTATE_START1 1 /**< \internal Receive state: first start
+ byte read, waiting for second. */
+#define RXSTATE_START2 2 /**< \internal Receive state: second start
+ byte read, waiting for header. */
+#define RXSTATE_RAWHEADER 3 /**< \internal Receive state: reading raw
+ packet header, without encoding. */
+#define RXSTATE_HEADER1 4 /**< \internal Receive state: reading
+ packet header, non-negative byte. */
+#define RXSTATE_HEADER2 5 /**< \internal Receive state: reading
+ packet header, negative byte. */
+#define RXSTATE_RAWDATA 6 /**< \internal Receive state: reading raw
+ packet data, without encoding. */
+#define RXSTATE_DATA1 7 /**< \internal Receive state: reading
+ packet data, non-negative byte. */
+#define RXSTATE_DATA2 8 /**< \internal Receive state: reading
+ packet data, negative byte. */
+#define RXSTATE_ERROR 9 /**< \internal Receive state: error in
+ packet reception. */
+#define RXSTATE_FULL 10 /**< \internal Receive state: a full packet
+ has been received. */
+
+#define NEG(b) (0xff - b) /**< \internal Logical negation of an 8-bit
+ quantity. */
+
+/**
+ * \internal
+ * The buffer which holds incoming data.
+ */
+#define RXBUFSIZE UIP_BUFSIZE
+static unsigned char rxbuf[RXBUFSIZE];
+
+/**
+ * \internal
+ * A pointer into the rxbuf buffer which points to the next available byte.
+ */
+static unsigned short rxpos;
+
+/**
+ * \internal
+ * The length of the packet that currently is being received.
+ */
+static unsigned short rxlen;
+
+/**
+ * \internal
+ * The reception state.
+ */
+static unsigned char rxstate = RXSTATE_READY;
+
+
+/**
+ * \internal
+ * The structure of the packet header.
+ */
+struct tr1001_hdr {
+ u8_t type; /**< The packet type. */
+ u8_t id; /**< A packet identifier. */
+ u8_t len[2]; /**< The 16-bit length of the packet in network byte
+ order. */
+};
+
+/**
+ * \internal The length of the packet header.
+ */
+#define TR1001_HDRLEN 4
+
+/**
+ * \internal
+ * The "data" packet type.
+ */
+#define TR1001_TYPE_DATA 1
+
+/**
+ * \internal
+ * The "acknowledgement" packet type.
+ */
+#define TR1001_TYPE_ACK 2
+
+/**
+ * \internal
+ * Determines if the negencoding should be used or not. This
+ * causes each byte which is sent out to be sent twice, first normally
+ * and second with all bits inverted. */
+#define TR1001_CONF_NEGENCODING 1
+
+/**
+ * \internal
+ * The incremental packet identifier.
+ */
+static u8_t packet_id;
+
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Turn on data transmission in On-Off-Keyed mode.
+ */
+/*------------------------------------------------------------------------------*/
+static void
+txook(void)
+{
+ P3SEL = 0xf0;
+ P5OUT |= 0x40;
+ P5OUT &= 0x7f;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Turn on data reception for the radio tranceiver.
+ */
+/*------------------------------------------------------------------------------*/
+static void
+rxon(void)
+{
+ P3SEL = 0xe0;
+ P5OUT |= 0xc0;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Clear the recevie buffer and reset the receiver state.
+ */
+/*------------------------------------------------------------------------------*/
+static void
+rxclear(void)
+{
+ rxpos = 0;
+ rxstate = RXSTATE_READY;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Send a byte of data over the radio.
+ *
+ * \param b The byte to be sent.
+ */
+/*------------------------------------------------------------------------------*/
+static void
+send(unsigned char b)
+{
+ /* Wait until the USART0 TX buffer is ready. */
+ while((IFG1 & UTXIFG0) == 0);
+
+ /* Send the byte. */
+ TXBUF0 = b;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Send a byte of data and its logical negation (all bits inverted)
+ * over the radio.
+ *
+ * \param b The byte to be sent.
+ */
+/*------------------------------------------------------------------------------*/
+static void
+send2(unsigned char b)
+{
+ send(b);
+#if TR1001_CONF_NEGENCODING
+ send(NEG(b));
+#endif /* TR1001_CONF_NEGENCODING */
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Set the transmission power of the tranciever.
+ *
+ * The sensor board is equipped with a DS1804 100 position trimmer
+ * potentiometer which is used to set the transmission input current
+ * to the radio tranciever chip, thus setting the transmission power
+ * of the radio tranciever.
+ *
+ * This function sets the trimmer potentiometer to a value between 1
+ * and 100.
+ *
+ * \param p The power of the tranciever, between 1 (lowest) and 100
+ * (highest).
+ */
+/*------------------------------------------------------------------------------*/
+void
+tr1001_set_txpower(unsigned char p)
+{
+ int i;
+
+ /* Clamp maximum power. */
+ if(p > 100) {
+ p = 100;
+ }
+
+ /* First, run the potentiometer down to zero so that we know the
+ start value of the potentiometer. */
+ P2OUT &= 0xDF; /* P25 = 0 (down selected) */
+ P2OUT &= 0xBF; /* P26 = 0 (chipselect on) */
+ for(i = 0; i < 102; ++i) {
+ P2OUT &= 0xEF; /* P24 = 0 (inc) */
+ P2OUT |= 0x10;
+ }
+
+ /* Now, start to increase the value of the potentiometer until it
+ reaches the desired value.*/
+
+ P2OUT |= 0x20; /* P25 = 1 (up selected) */
+ for(i = 0; i < p; ++i) {
+ P2OUT &= 0xEF; /* P24 = 0 (inc) */
+ P2OUT |= 0x10;
+ }
+ P2OUT |= 0x40; /* P26 = 1 (chipselect off) */
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Initialize the radio tranciever.
+ *
+ * Turns on reception of bytes and installs the receive interrupt
+ * handler.
+ */
+/*------------------------------------------------------------------------------*/
+void
+tr1001_init(void)
+{
+ /* Turn on reception. */
+ rxon();
+
+ /* Reset reception state. */
+ rxclear();
+
+
+ UCTL0 = CHAR; /* 8-bit character */
+ UTCTL0 = SSEL1; /* UCLK = SMCLK */
+
+#define TR1001_SPEED 19200
+
+ if(TR1001_SPEED == 19200) {
+ /* Set TR1001 to 19200 */
+ UBR00 = 0x80; /* 2,457MHz/19200 = 128 -> 0x80 */
+ UBR10 = 0x00; /* */
+ UMCTL0 = 0x00; /* no modulation */
+ } else if(TR1001_SPEED == 38400) {
+ /* Set TR1001 to 38400 */
+ UBR00 = 0x40; /* 2,457MHz/38400 = 64 -> 0x40 */
+ UBR10 = 0x00; /* */
+ UMCTL0 = 0x00; /* no modulation */
+ } else if(TR1001_SPEED == 57600) {
+ UBR00 = 0x2a; /* 2,457MHz/57600 = 42.7 -> 0x2A */
+ UBR10 = 0x00; /* */
+ UMCTL0 = 0x5b; /* */
+ } else if(TR1001_SPEED == 115200) {
+ UBR00 = 0x15; /* 2,457MHz/115200 = 21.4 -> 0x15 */
+ UBR10 = 0x00; /* */
+ UMCTL0 = 0x4a; /* */
+ }
+
+#if 0
+ /* 19200 bps */
+ UBR00 = 0x80; /* 2,457MHz/19200 = 128 -> 0x80 */
+ UBR10 = 0x00; /* */
+ UMCTL0 = 0x00; /* no modulation */
+#endif /* 0 */
+
+ ME1 |= UTXE0 + URXE0; /* Enable USART0 TXD/RXD */
+
+ /* Turn on receive interrupt. */
+ IE1 |= URXIE0;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Check if an incoming packet has been received.
+ *
+ * This function checks the receive buffer to see if an entire packet
+ * has been received. The actual reception is handled by an interrupt
+ * handler.
+ *
+ * \return The length of the received packet, or 0 if no packet has
+ * been received.
+ */
+/*------------------------------------------------------------------------------*/
+unsigned short
+tr1001_poll(void)
+{
+ unsigned short tmplen;
+
+ if(rxstate == RXSTATE_FULL) {
+ if(rxlen > UIP_BUFSIZE - UIP_LLH_LEN) {
+ rxlen = UIP_BUFSIZE - UIP_LLH_LEN;
+ }
+ memcpy(&uip_buf[UIP_LLH_LEN], rxbuf + TR1001_HDRLEN, rxlen);
+ tmplen = rxlen;
+ rxclear();
+ return tmplen;
+ }
+
+ if(rxstate == RXSTATE_ERROR) {
+ blink();
+ rxclear();
+ }
+
+ return 0;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ * Interrupt handler for the data reception.
+ */
+/*------------------------------------------------------------------------------*/
+interrupt (UART0RX_VECTOR)
+ tr1001_rxhandler(void)
+{
+ unsigned char c;
+
+ c = RXBUF0;
+
+ switch(rxstate) {
+ case RXSTATE_ERROR:
+ /* Do nothing, wait until error has been hendled. */
+ break;
+ case RXSTATE_READY:
+ if(c == 0xff) {
+ rxstate = RXSTATE_START1;
+ }
+ break;
+ case RXSTATE_START1:
+ if(c == 0x01) {
+ rxstate = RXSTATE_START2;
+ } else {
+ rxstate = RXSTATE_READY;
+ }
+ break;
+ case RXSTATE_START2:
+ if(c == 0x7f) {
+#if TR1001_CONF_NEGENCODING
+ rxstate = RXSTATE_HEADER1;
+#else /* TR1001_CONF_NEGENCODING */
+ rxstate = RXSTATE_RAWHEADER;
+#endif /* TR1001_CONF_NEGENCODING */
+ } else {
+ rxstate = RXSTATE_READY;
+ }
+ break;
+ case RXSTATE_RAWHEADER:
+ rxbuf[rxpos] = c;
+ ++rxpos;
+ if(rxpos == TR1001_HDRLEN) {
+ rxlen = ((((struct tr1001_hdr *)rxbuf)->len[0] << 8) +
+ ((struct tr1001_hdr *)rxbuf)->len[1]);
+ rxstate = RXSTATE_RAWDATA;
+ }
+ break;
+ case RXSTATE_HEADER1:
+ /* Receive a data byte of the header. */
+ rxbuf[rxpos] = c;
+ rxstate = RXSTATE_HEADER2;
+ break;
+ case RXSTATE_HEADER2:
+ /* We should have received the bit-wise negation of the previously
+ received byte, or else something has gone wrong and we set the
+ error flag. */
+ if(NEG(c) == rxbuf[rxpos]) {
+ ++rxpos;
+ if(rxpos == TR1001_HDRLEN) {
+ rxlen = ((((struct tr1001_hdr *)rxbuf)->len[0] << 8) +
+ ((struct tr1001_hdr *)rxbuf)->len[1]);
+ rxstate = RXSTATE_DATA1;
+ } else {
+ rxstate = RXSTATE_HEADER1;
+ }
+ } else {
+ rxstate = RXSTATE_ERROR;
+ }
+ break;
+ case RXSTATE_DATA1:
+ /* Receive a data byte. */
+ rxbuf[rxpos] = c;
+ rxstate = RXSTATE_DATA2;
+ break;
+ case RXSTATE_DATA2:
+ /* We should have received the bit-wise negation of the previously
+ received byte, or else something has gone wrong and we set the
+ error flag. */
+ if(NEG(c) == rxbuf[rxpos]) {
+ ++rxpos;
+ if(rxpos == rxlen + TR1001_HDRLEN) {
+ rxstate = RXSTATE_FULL;
+ } else if(rxpos > sizeof(rxbuf)) {
+ rxstate = RXSTATE_ERROR;
+ } else {
+ rxstate = RXSTATE_DATA1;
+ }
+ } else {
+ rxstate = RXSTATE_ERROR;
+ }
+ break;
+ case RXSTATE_RAWDATA:
+ rxbuf[rxpos] = c;
+ ++rxpos;
+ if(rxpos == rxlen + TR1001_HDRLEN) {
+ rxstate = RXSTATE_FULL;
+ } else if(rxpos > sizeof(rxbuf)) {
+ rxstate = RXSTATE_ERROR;
+ }
+ break;
+ case RXSTATE_FULL:
+ /* Just drop the incoming byte. */
+ break;
+ default:
+ /* Just drop the incoming byte. */
+ rxstate = RXSTATE_READY;
+ break;
+ }
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ *
+ * A stupid function which causes a small delay based on its argument.
+ *
+ * It is a hack, not intended for "real" use.
+ *
+ */
+/*------------------------------------------------------------------------------*/
+static void
+delay_hack(int d)
+{
+ int i, j = 2;
+
+ for(i = 0; i < d; ++i) {
+ j = j * j;
+ }
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * \internal
+ *
+ * Prepare a transmission.
+ *
+ * This function does the necessary setup before a packet can be sent
+ * out.
+ */
+/*------------------------------------------------------------------------------*/
+static void
+prepare_transmission(void)
+{
+ unsigned short i, laststate;
+
+ /* Delay the transmission for a while. The length of the delay is
+ based on the lowest bits of the battery sensor, which seems to be
+ jumping up and down somewhat unpredictably (but I might very well
+ be wrong). */
+ /* P2OUT &= 0xFE;*/
+ delay_hack(400 * (sensors_battery & 0x0f));
+ /* P2OUT |= 0x01; */
+
+ /* First check that we don't currently are receiveing a packet, and
+ if so we wait until the reception has been completed. Reception
+ is done with interrupts so it is OK for us to wait in a while()
+ loop. */
+ i = 0;
+ laststate = rxstate;
+ while(rxstate != RXSTATE_READY &&
+ rxstate != RXSTATE_FULL &&
+ rxstate != RXSTATE_ERROR) {
+
+ /* Make sure that we don't stay too long in the same rxstate
+ (which would indicate that the receiving interrupt somehow has
+ locked up). */
+ if(laststate == rxstate) {
+ ++i;
+ if(i == 0xffff) {
+ rxstate = RXSTATE_ERROR;
+ break;
+ }
+ } else {
+ i = 0;
+ }
+ laststate = rxstate;
+ }
+
+ /* Turn on OOK mode with transmission. */
+ txook();
+
+ /* Delay for a while to let the transmitted settle in its new
+ state. */
+ delay_hack(400);
+
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Send a packet and wait for an acknowledgement.
+ *
+ * This function calls tr1001_send() to send out a packet, and waits
+ * for an acknowledgement from the receiver.
+ *
+ */
+/*------------------------------------------------------------------------------*/
+u8_t
+tr1001_send_acked(void)
+{
+ unsigned short tmplen, count;
+ struct tr1001_hdr *ackhdr = (struct tr1001_hdr *)rxbuf;
+ ek_clock_t start;
+
+
+ tr1001_send();
+
+ start = ek_clock();
+ count = 0;
+ P2OUT &= 0xFB;
+ /* Block while checking if a packet has arrived. */
+ while((volatile u8_t)rxstate != RXSTATE_FULL &&
+ (volatile u8_t)rxstate != RXSTATE_ERROR) {
+ /* Wait no more than one second. */
+ if((ek_clock_t)(ek_clock() - start) > (ek_clock_t)CLK_TCK) {
+ break;
+ }
+ }
+ P2OUT |= 0x04;
+
+
+ if(rxstate == RXSTATE_FULL) {
+ if(ackhdr->type == TR1001_TYPE_ACK &&
+ ackhdr->id == packet_id) {
+ beep();
+ rxclear();
+ return UIP_FW_OK;
+ }
+ }
+
+ if(rxstate == RXSTATE_ERROR) {
+ rxclear();
+ blink();
+ }
+ return UIP_FW_DROPPED;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Send out a packet from the uip_buf buffer.
+ *
+ * This function causes a packet to be sent out after a small random
+ * delay, but without doing any MAC layer collision detection or
+ * back-offs. The packet is sent with a 4 byte header that contains a
+ * a "type" identifier, an 8-bit packet ID field and the length of the
+ * packet in network byte order.
+ */
+/*------------------------------------------------------------------------------*/
+u8_t
+tr1001_send(void)
+{
+ u8_t *hdr;
+ u16_t hdrlen;
+ u8_t *data;
+ u16_t datalen;
+ int i;
+
+ hdr = &uip_buf[UIP_LLH_LEN];
+ hdrlen = UIP_TCPIP_HLEN;
+ data = uip_appdata;
+ if(uip_len < UIP_TCPIP_HLEN) {
+ datalen = 0;
+ } else {
+ datalen = uip_len - UIP_TCPIP_HLEN;
+ }
+
+ /* Prepare the transmission. */
+ prepare_transmission();
+
+ /* Send first preamble byte. */
+ send(0xaa);
+
+ /* Send second preamble byte. */
+ send(0xaa);
+
+ /* Send sync byte. */
+ send(0x0ff);
+
+ /* Send first start byte. */
+ send(0x01);
+
+ /* Send second start byte. */
+ send(0x07f);
+
+ /* Send packet header. */
+ send2(TR1001_TYPE_DATA);
+ send2(++packet_id);
+ send2(uip_len >> 8);
+ send2(uip_len & 0xff);
+
+ /* Send packet data. */
+ for(i = 0; i < hdrlen; ++i) {
+ send2(hdr[i]);
+ }
+ for(i = 0;i < datalen; ++i) {
+ send2(data[i]);
+ }
+
+ /* Send trailing bytes. */
+ send(0xaa);
+ send(0xaa);
+
+ /* Turn on reception again. */
+ rxon();
+
+ return UIP_FW_OK;
+}
+/*------------------------------------------------------------------------------*/
+/**
+ * Acknowledge a received packet.
+ *
+ * This function sends out an acknowledgement packet for the
+ * previously received packet, which must be present in the uip_buf
+ * buffer.
+ *
+ * \retval UIP_FW_OK The acknowledgement was successfully.
+ * \retval UIP_FW_DROPPED The acknowledgement was dropped before transmission.
+ */
+/*------------------------------------------------------------------------------*/
+u8_t
+tr1001_ack(void)
+{
+ /* Prepare the transmission. */
+ prepare_transmission();
+
+ /* Send first preamble byte. */
+ send(0xaa);
+
+ /* Send second preamble byte. */
+ send(0xaa);
+
+ /* Send sync byte. */
+ send(0x0ff);
+
+ /* Send first start byte. */
+ send(0x01);
+
+ /* Send second start byte. */
+ send(0x07f);
+
+ /* Send packet header. */
+ send2(TR1001_TYPE_ACK);
+ send2(((struct tr1001_hdr *)uip_buf)->id);
+ send2(0);
+ send2(0);
+
+ /* Send trailing bytes. */
+ send(0xaa);
+ send(0xaa);
+
+ /* Turn on reception again. */
+ rxon();
+
+ /* beep();*/
+
+ return UIP_FW_OK;
+
+}
+/*------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/msp430/tr1001.h b/contiki-msp430/msp430/tr1001.h
new file mode 100644
index 0000000..3a76d48
--- /dev/null
+++ b/contiki-msp430/msp430/tr1001.h
@@ -0,0 +1,16 @@
+#ifndef __TR1001_H__
+#define __TR1001_H__
+
+#include "uip.h"
+
+void tr1001_init(void);
+
+void tr1001_set_txpower(unsigned char p);
+
+u8_t tr1001_send(void);
+u8_t tr1001_ack(void);
+u8_t tr1001_send_acked(void);
+unsigned short tr1001_poll(void);
+
+
+#endif /* __TR1001_H__ */
diff --git a/contiki-msp430/uip/rs232.c b/contiki-msp430/uip/rs232.c
new file mode 100644
index 0000000..efa509a
--- /dev/null
+++ b/contiki-msp430/uip/rs232.c
@@ -0,0 +1,198 @@
+/**
+ * \file
+ * RS232 communication device driver for the MSP430.
+ * \author Adam Dunkels <adam@sics.se>
+ *
+ * This file contains an RS232 device driver for the MSP430 microcontroller.
+ *
+ */
+
+#include <io.h>
+#include <signal.h>
+
+#include "rs232.h"
+
+void beep(void);
+
+unsigned char lastchar, lastchar_changed;
+
+#define RECVBUF_SIZE 32
+
+static unsigned char recvbuf[RECVBUF_SIZE];
+static unsigned char recvbufptr1 = 0,
+ recvbufptr2 = 0;
+
+interrupt(UART1RX_VECTOR) rs232_rx_usart1(void)
+{
+ volatile unsigned char dummy;
+
+ /* Check status register for receive errors. */
+ if(URCTL1 & RXERR) {
+ /* Clear error flags by forcing a dummy read. */
+ dummy = RXBUF1;
+ } else {
+ recvbuf[recvbufptr1] = RXBUF1;
+ recvbufptr1 = (recvbufptr1 + 1) % RECVBUF_SIZE;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Initalize the RS232 port.
+ *
+ * \param none Not used.
+ * \return An error value or RS_ERR_OK if initialization succeeded.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_init(char none)
+{
+ /* This code taken from the FU Berlin sources and reformatted. */
+
+#define DELTA 600
+
+ unsigned int compare, oldcapture = 0;
+ unsigned int i;
+
+ BCSCTL1 = 0xa4; /* ACLK is devided by 4. RSEL=6 no division for MCLK
+ and SSMCLK. XT2 is off. */
+
+ BCSCTL2 = 0x00; /* Init FLL to desired frequency using the 32762Hz
+ crystal DCO frquenzy = 2,4576 MHz */
+
+ WDTCTL = WDTPW + WDTHOLD; /* Stop WDT */
+ BCSCTL1 |= DIVA1 + DIVA0; /* ACLK = LFXT1CLK/8 */
+ for(i = 0xffff; i > 0; --i); /* Delay for XTAL to settle */
+
+ /* Set DCO for 2,4576 Mhz: */
+ CCTL2 = CCIS0 + CM0 + CAP; /* Define CCR2, CAP, ACLK */
+ TACTL = TASSEL1 + TACLR + MC1; /* SMCLK, continous mode */
+ while(1) {
+ while((CCTL2 & CCIFG) != CCIFG); /* Wait until capture occured! */
+ CCTL2 &= ~CCIFG; /* Capture occured, clear flag */
+ compare = CCR2; /* Get current captured SMCLK */
+ compare = compare - oldcapture; /* SMCLK difference */
+ oldcapture = CCR2; /* Save current captured SMCLK */
+
+ if(DELTA == compare) {
+ break; /* if equal, leave "while(1)" */
+ } else if(DELTA < compare) { /* DCO is too fast, slow it down */
+ DCOCTL--;
+ if(DCOCTL == 0xFF) { /* Did DCO role under? */
+ BCSCTL1--;
+ }
+ } else { /* -> Select next lower RSEL */
+ DCOCTL++;
+ if(DCOCTL == 0x00) { /* Did DCO role over? */
+ BCSCTL1++;
+ }
+ /* -> Select next higher RSEL */
+ }
+ }
+ CCTL2 = 0; /* Stop CCR2 function */
+ TACTL = 0; /* Stop Timer_A */
+
+
+
+ /* Radio on 19200 Bit/s */
+#if 0
+ UCTL0 = CHAR; /* 8-bit character */
+ UTCTL0 = SSEL1; /* UCLK = SMCLK */
+ UBR00 = 0x80; /* 2,457MHz/19200 = 128 -> 0x80 */
+ UBR10 = 0x00; /* */
+ UMCTL0 = 0x00; /* no modulation */
+ ME1 |= UTXE0 + URXE0; /* Enable USART0 TXD/RXD */
+ /*IE1 |= URXIE0;*/ /* Enable USART0 RX interrupt */
+#endif /* 0 */
+
+ /* RS232 */
+ UCTL1 = CHAR; /* 8-bit character */
+ UTCTL1 = SSEL1; /* UCLK = MCLK */
+
+#define RS232_SPEED 57600
+
+ if(RS232_SPEED == 19200) {
+ /* Set RS232 to 19200 */
+ UBR01 = 0x80; /* 2,457MHz/19200 = 128 -> 0x80 */
+ UBR11 = 0x00; /* */
+ UMCTL1 = 0x00; /* no modulation */
+ } else if(RS232_SPEED == 38400) {
+ /* Set RS232 to 38400 */
+ UBR01 = 0x40; /* 2,457MHz/38400 = 64 -> 0x40 */
+ UBR11 = 0x00; /* */
+ UMCTL1 = 0x00; /* no modulation */
+ } else if(RS232_SPEED == 57600) {
+ UBR01 = 0x2a; /* 2,457MHz/57600 = 42.7 -> 0x2A */
+ UBR11 = 0x00; /* */
+ UMCTL1 = 0x5b; /* */
+ } else if(RS232_SPEED == 115200) {
+ UBR01 = 0x15; /* 2,457MHz/115200 = 21.4 -> 0x15 */
+ UBR11 = 0x00; /* */
+ UMCTL1 = 0x4a; /* */
+ }
+
+
+ ME2 |= (UTXE1 | URXE1); /* Enable USART1 TXD/RXD */
+ IE2 |= URXIE1; /* Enable USART1 RX interrupt */
+ BCSCTL1 &= ~(DIVA1 + DIVA0); /* remove /8 divisor from ACLK again */
+
+
+ rs232_put('!');
+
+ return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Configure the RS232 port.
+ *
+ * \param params RS232 parameters.
+ * \param parity Parity.
+ * \return An error value or RS_ERR_OK if configuration succeeded.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_params(unsigned char params, unsigned char parity)
+{
+ return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Get a byte from the serial port.
+ *
+ * \param c A pointer to the location where the byte is to be stored.
+ *
+ * \return An error value or RS_ERR_OK. If no data is available, the
+ * function returns RS_ERR_NO_DATA which is not a fatal error.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_get(char *c)
+{
+ if(recvbufptr1 == recvbufptr2) {
+ return RS_ERR_NO_DATA;
+ }
+ *c = recvbuf[recvbufptr2];
+ recvbufptr2 = (recvbufptr2 + 1) % RECVBUF_SIZE;
+ return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
+/**
+ * Transmit a byte over the serial port.
+ *
+ * \param c A pointer to the location where the byte is to be stored.
+ *
+ * \return An error value or RS_ERR_OK. If the transmission buffer was
+ * full, RS_ERR_OVERFLOW is returned.
+ */
+/*-----------------------------------------------------------------------------------*/
+unsigned char
+rs232_put(char c)
+{
+ /* Loop until the transmission buffer is available. */
+ while ((IFG2 & UTXIFG1) == 0);
+
+ /* Transmit the data. */
+ TXBUF1 = c;
+
+ return RS_ERR_OK;
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/uip/rs232.h b/contiki-msp430/uip/rs232.h
new file mode 100644
index 0000000..8db178f
--- /dev/null
+++ b/contiki-msp430/uip/rs232.h
@@ -0,0 +1,56 @@
+/**
+ * \file
+ * Header file for MSP430 RS232 driver.
+ * \author Adam Dunkels <adam@sics.se>
+ *
+ */
+#ifndef __RS232_H__
+#define __RS232_H__
+
+/* These values were taken from the "rs232.h" include file from cc65,
+ written by Ullrich von Bassewitz. */
+
+#define RS_BAUD_50 0x00
+#define RS_BAUD_110 0x01
+#define RS_BAUD_134_5 0x02
+#define RS_BAUD_300 0x03
+#define RS_BAUD_600 0x04
+#define RS_BAUD_1200 0x05
+#define RS_BAUD_2400 0x06
+#define RS_BAUD_4800 0x07
+#define RS_BAUD_9600 0x08
+#define RS_BAUD_19200 0x09
+#define RS_BAUD_38400 0x0A
+#define RS_BAUD_57600 0x0B
+#define RS_BAUD_115200 0x0C
+#define RS_BAUD_230400 0x0D
+
+#define RS_BITS_5 0x60
+#define RS_BITS_6 0x40
+#define RS_BITS_7 0x20
+#define RS_BITS_8 0x00
+
+#define RS_PAR_NONE 0x00
+#define RS_PAR_ODD 0x20
+#define RS_PAR_EVEN 0x60
+#define RS_PAR_MARK 0xA0
+#define RS_PAR_SPACE 0xE0
+
+#define RS_STOP_1 0x00
+#define RS_STOP_2 0x80
+
+#define RS_ERR_OK 0x00 /* Not an error - relax */
+#define RS_ERR_NOT_INITIALIZED 0x01 /* Module not initialized */
+#define RS_ERR_BAUD_TOO_FAST 0x02 /* Cannot handle baud rate */
+#define RS_ERR_BAUD_NOT_AVAIL 0x03 /* Baud rate not available */
+#define RS_ERR_NO_DATA 0x04 /* Nothing to read */
+#define RS_ERR_OVERFLOW 0x05 /* No room in send buffer */
+#define RS_ERR_INIT_FAILED 0x06 /* Initialization of RS232 routines f
+ailed */
+
+unsigned char rs232_init(char none);
+unsigned char rs232_params(unsigned char params, unsigned char parity);
+unsigned char rs232_get(char *c);
+unsigned char rs232_put(char c);
+
+#endif /* __RS232_H__ */
diff --git a/contiki-msp430/uip/rs232dev.c b/contiki-msp430/uip/rs232dev.c
new file mode 100644
index 0000000..4e96d44
--- /dev/null
+++ b/contiki-msp430/uip/rs232dev.c
@@ -0,0 +1,250 @@
+/*
+ * 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: rs232dev.c,v 1.2 2005/02/23 22:45:38 oliverschmidt Exp $
+ *
+ */
+
+/*
+ * This is a generic implementation of the SLIP protocol over an RS232
+ * (serial) device. While initially intented for the C64, the code can
+ * easily be ported to other platforms as well.
+ *
+ * Huge thanks to Ullrich von Bassewitz <uz@cc65.org> of cc65 fame for
+ * and endless supply of bugfixes, insightsful comments and
+ * suggestions, and improvements to this code!
+ */
+
+#include "rs232.h"
+#include <string.h>
+
+ /* This will include the system specific header files as well */
+#if defined(__CBM__)
+# include <cbm.h>
+#elif defined(__ATARI__)
+# include <atari.h>
+#endif
+
+#include "uip.h"
+
+#define SLIP_END 0300
+#define SLIP_ESC 0333
+#define SLIP_ESC_END 0334
+#define SLIP_ESC_ESC 0335
+
+
+#define SIO_RECV(c) while(rs232_get(&c) == RS_ERR_NO_DATA)
+#define SIO_POLL(c) (rs232_get(&c) != RS_ERR_NO_DATA)
+#define SIO_SEND(c) rs232_put(c)
+
+#define MAX_SIZE (UIP_BUFSIZE - UIP_LLH_LEN)
+
+static u8_t slip_buf[MAX_SIZE + 2];
+
+#if MAX_SIZE > 255
+static u16_t len, tmplen;
+#else
+static u8_t len, tmplen;
+#endif /* MAX_SIZE > 255 */
+
+#if 1
+#define printf(x)
+#else
+#include <stdio.h>
+#endif
+
+
+/*-----------------------------------------------------------------------------------*/
+static void
+rs232_err(char err)
+{
+ switch(err) {
+ case RS_ERR_OK:
+ printf("RS232 OK\n");
+ break;
+ case RS_ERR_NOT_INITIALIZED:
+ printf("RS232 not initialized\n");
+ break;
+ case RS_ERR_BAUD_TOO_FAST:
+ printf("RS232 baud too fast\n");
+ break;
+ case RS_ERR_BAUD_NOT_AVAIL:
+ printf("RS232 baud rate not available\n");
+ break;
+ case RS_ERR_NO_DATA:
+ printf("RS232 nothing to read\n");
+ break;
+ case RS_ERR_OVERFLOW:
+ printf("RS232 overflow\n");
+ break;
+ }
+
+}
+/*-----------------------------------------------------------------------------------*/
+/*
+ * rs232dev_send():
+ *
+ * Sends the packet in the uip_buf and uip_appdata buffers. The first
+ * 40 bytes of the packet (the IP and TCP headers) are read from the
+ * uip_buf buffer, and the following bytes (the application data) are
+ * read from the uip_appdata buffer.
+ *
+ */
+/*-----------------------------------------------------------------------------------*/
+void
+rs232dev_send(void)
+{
+#if MAX_SIZE > 255
+ u16_t i;
+#else
+ u8_t i;
+#endif /* MAX_SIZE > 255 */
+ u8_t *ptr;
+ u8_t c;
+
+ SIO_SEND(SLIP_END);
+
+ ptr = &uip_buf[UIP_LLH_LEN];
+ for(i = 0; i < uip_len; ++i) {
+ if(i == UIP_TCPIP_HLEN) {
+ ptr = (char *)uip_appdata;
+ }
+ c = *ptr++;
+ switch(c) {
+ case SLIP_END:
+ SIO_SEND(SLIP_ESC);
+ SIO_SEND(SLIP_ESC_END);
+ break;
+ case SLIP_ESC:
+ SIO_SEND(SLIP_ESC);
+ SIO_SEND(SLIP_ESC_ESC);
+ break;
+ default:
+ SIO_SEND(c);
+ break;
+ }
+ }
+ SIO_SEND(SLIP_END);
+}
+/*-----------------------------------------------------------------------------------*/
+/*
+ * rs232dev_poll():
+ *
+ * Read all avaliable bytes from the RS232 interface into the slip_buf
+ * buffer. If no more bytes are avaliable, it returns with 0 to
+ * indicate that no packet was immediately ready. When a full packet
+ * has been read into the buffer, the packet is copied into the
+ * uip_buf buffer and the length of the packet is returned.
+ *
+ */
+/*-----------------------------------------------------------------------------------*/
+#if MAX_SIZE > 255
+u16_t
+#else
+u8_t
+#endif /* MAX_SIZE > 255 */
+rs232dev_poll(void)
+{
+ u8_t c;
+ static u8_t lastc;
+
+ while(SIO_POLL(c)) {
+ /* printf("c %x\n", c);*/
+ switch(c) {
+ case SLIP_ESC:
+ lastc = c;
+ break;
+
+ case SLIP_END:
+ lastc = c;
+ /* End marker found, we copy our input buffer to the uip_buf
+ buffer and return the size of the packet we copied. */
+ memcpy(&uip_buf[UIP_LLH_LEN], slip_buf, len);
+ tmplen = len;
+ len = 0;
+ return tmplen;
+
+ default:
+ if(lastc == SLIP_ESC) {
+ lastc = c;
+ /* Previous read byte was an escape byte, so this byte will be
+ interpreted differently from others. */
+ switch(c) {
+ case SLIP_ESC_END:
+ c = SLIP_END;
+ break;
+ case SLIP_ESC_ESC:
+ c = SLIP_ESC;
+ break;
+ }
+ } else {
+ lastc = c;
+ }
+
+
+ slip_buf[len] = c;
+ ++len;
+
+ if(len > MAX_SIZE) {
+ len = 0;
+ }
+
+ break;
+ }
+ }
+ return 0;
+}
+/*-----------------------------------------------------------------------------------*/
+/*
+ * rs232dev_init():
+ *
+ * Initializes the RS232 device and sets the parameters of the device.
+ *
+ */
+/*-----------------------------------------------------------------------------------*/
+void
+rs232dev_init(void)
+{
+ char err;
+
+ err = rs232_init(0);
+ rs232_err(err);
+ err = rs232_params(RS_BAUD_9600 | RS_BITS_8 | RS_STOP_1, RS_PAR_NONE);
+ rs232_err(err);
+
+ len = 0;
+
+ return;
+}
+/*-----------------------------------------------------------------------------------*/
+
diff --git a/contiki-msp430/uip/rs232dev.h b/contiki-msp430/uip/rs232dev.h
new file mode 100644
index 0000000..be9fcec
--- /dev/null
+++ b/contiki-msp430/uip/rs232dev.h
@@ -0,0 +1,53 @@
+/*
+ * 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: rs232dev.h,v 1.2 2005/01/26 23:36:37 oliverschmidt Exp $
+ *
+ */
+
+#ifndef __RS232DEV_H__
+#define __RS232DEV_H__
+
+#include "uip.h"
+
+void rs232dev_init(void);
+u8_t rs232dev_read(void);
+void rs232dev_send(void);
+
+#if MAX_SIZE > 255
+u16_t rs232dev_poll(void);
+#else
+u8_t rs232dev_poll(void);
+#endif /* UIP_BUFSIZE > 255 */
+
+#endif /* __RS232DEV_H__ */
diff --git a/contiki-msp430/uip/slip-drv.c b/contiki-msp430/uip/slip-drv.c
new file mode 100644
index 0000000..2cafcf3
--- /dev/null
+++ b/contiki-msp430/uip/slip-drv.c
@@ -0,0 +1,141 @@
+/*
+ * 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 fpr the C64
+ *
+ * $Id: slip-drv.c,v 1.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+
+/* uip_main.c: initialization code and main event loop. */
+
+#include "uip.h"
+#include "uip_arp.h"
+#include "uip-signal.h"
+#include "rs232dev.h"
+#include "loader.h"
+#include "ek.h"
+
+#define BUF ((struct uip_eth_hdr *)&uip_buf[0])
+
+static u8_t i, arptimer;
+static u16_t start, current;
+
+static void slip_drv_idle(void);
+static DISPATCHER_SIGHANDLER(slip_drv_sighandler, s, data);
+static struct dispatcher_proc p =
+ {DISPATCHER_PROC("TCP/IP/SLIP driver", slip_drv_idle,
+ slip_drv_sighandler, NULL)};
+static ek_id_t id;
+
+
+/*-----------------------------------------------------------------------------------*/
+static void
+timer(void)
+{
+ for(i = 0; i < UIP_CONNS; ++i) {
+ uip_periodic(i);
+ if(uip_len > 0) {
+ rs232dev_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) {
+ rs232dev_send();
+ }
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static void
+slip_drv_idle(void)
+{
+ uip_len = rs232dev_poll();
+ if(uip_len > 0) {
+ uip_input();
+ if(uip_len > 0) {
+ rs232dev_send();
+ }
+ }
+
+ /* Check the clock so see if we should call the periodic uIP
+ processing. */
+ current = ek_clock();
+
+ if((current - start) >= CLK_TCK/2) {
+ timer();
+ start = current;
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+LOADER_INIT_FUNC(slip_drv_init, arg)
+{
+ arg_free(arg);
+
+ if(id == EK_ID_NONE) {
+ id = dispatcher_start(&p);
+
+ rs232dev_init();
+
+ arptimer = 0;
+ start = ek_clock();
+
+ dispatcher_listen(uip_signal_poll);
+ dispatcher_listen(uip_signal_poll_udp);
+ dispatcher_listen(uip_signal_uninstall);
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+static
+DISPATCHER_SIGHANDLER(slip_drv_sighandler, s, data)
+{
+ DISPATCHER_SIGHANDLER_ARGS(s, data);
+
+ if(s == uip_signal_poll) {
+ uip_periodic_conn(data);
+ if(uip_len > 0) {
+ rs232dev_send();
+ }
+ } else if(s == uip_signal_poll_udp) {
+ uip_udp_periodic_conn(data);
+ if(uip_len > 0) {
+ rs232dev_send();
+ }
+ } else if(s == dispatcher_signal_quit ||
+ s == uip_signal_uninstall) {
+ dispatcher_exit(&p);
+ id = EK_ID_NONE;
+ LOADER_UNLOAD();
+ }
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/contiki-msp430/uip/slipdev-arch.c b/contiki-msp430/uip/slipdev-arch.c
new file mode 100644
index 0000000..84a6a53
--- /dev/null
+++ b/contiki-msp430/uip/slipdev-arch.c
@@ -0,0 +1,5 @@
+#include "rs232.h"
+#include "slipdev.h"
+
+void slipdev_char_put(u8_t c) { rs232_put(c); }
+u8_t slipdev_char_poll(u8_t *c) { return (rs232_get(c) != RS_ERR_NO_DATA); }
diff --git a/contiki-msp430/uip/uip_arch.c b/contiki-msp430/uip/uip_arch.c
new file mode 100644
index 0000000..a6b63c1
--- /dev/null
+++ b/contiki-msp430/uip/uip_arch.c
@@ -0,0 +1,218 @@
+/*
+ * 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:07:16 oliverschmidt Exp $
+ *
+ */
+
+
+#include "uip.h"
+#include "uip_arch.h"
+
+#define BUF ((uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
+#define IP_PROTO_TCP 6
+
+/*-----------------------------------------------------------------------------------*/
+#if UIP_BUFSIZE > 255
+/*-----------------------------------------------------------------------------------*/
+void
+uip_add_rcv_nxt(u16_t n)
+{
+ uip_conn->rcv_nxt[3] += (n & 0xff);
+ uip_conn->rcv_nxt[2] += (n >> 8);
+
+ if(uip_conn->rcv_nxt[2] < (n >> 8)) {
+ ++uip_conn->rcv_nxt[1];
+ if(uip_conn->rcv_nxt[1] == 0) {
+ ++uip_conn->rcv_nxt[0];
+ }
+ }
+
+
+ if(uip_conn->rcv_nxt[3] < (n & 0xff)) {
+ ++uip_conn->rcv_nxt[2];
+ if(uip_conn->rcv_nxt[2] == 0) {
+ ++uip_conn->rcv_nxt[1];
+ if(uip_conn->rcv_nxt[1] == 0) {
+ ++uip_conn->rcv_nxt[0];
+ }
+ }
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+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];
+ }
+ }
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+#else /* UIP_BUFSIZE > 255 */
+/*-----------------------------------------------------------------------------------*/
+void
+uip_add_rcv_nxt(u8_t n)
+{
+ uip_conn->rcv_nxt[3] += n;
+ if(uip_conn->rcv_nxt[3] < n) {
+ ++uip_conn->rcv_nxt[2];
+ if(uip_conn->rcv_nxt[2] == 0) {
+ ++uip_conn->rcv_nxt[1];
+ if(uip_conn->rcv_nxt[1] == 0) {
+ ++uip_conn->rcv_nxt[0];
+ }
+ }
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+void
+uip_add32(u8_t *op32, u8_t op8)
+{
+ uip_acc32[3] = op32[3] + op8;
+ uip_acc32[2] = op32[2];
+ uip_acc32[1] = op32[1];
+ uip_acc32[0] = op32[0];
+
+ if(uip_acc32[3] < op8) {
+ ++uip_acc32[2];
+ if(uip_acc32[2] == 0) {
+ ++uip_acc32[1];
+ if(uip_acc32[1] == 0) {
+ ++uip_acc32[0];
+ }
+ }
+ }
+}
+/*-----------------------------------------------------------------------------------*/
+#endif /* UIP_BUFSIZE > 255 */
+
+u16_t
+uip_chksum(u16_t *sdata, u16_t len)
+{
+ u8_t *dataptr;
+ u16_t acc;
+
+ for(acc = 0; len > 1; len -= 2) {
+ acc += *sdata;
+ if(acc < *sdata) {
+ /* Overflow, so we add the carry to acc (i.e., increase by
+ one). */
+ ++acc;
+ }
+ ++sdata;
+ }
+
+ dataptr = sdata;
+
+ /* add up any odd byte */
+ if(len == 1) {
+ acc += htons(((u16_t)(*dataptr)) << 8);
+ if(acc < htons(((u16_t)(*dataptr)) << 8)) {
+ ++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-msp430/uip/uip_arch.h b/contiki-msp430/uip/uip_arch.h
new file mode 100644
index 0000000..6918bb7
--- /dev/null
+++ b/contiki-msp430/uip/uip_arch.h
@@ -0,0 +1,53 @@
+/*
+ * 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.1 2003/09/04 19:46:33 adamdunkels Exp $
+ *
+ */
+
+#ifndef __UIP_ARCH_H__
+#define __UIP_ARCH_H__
+
+#include "uip.h"
+
+#if UIP_BUFSIZE > 255
+void uip_add_rcv_nxt(u16_t n);
+void uip_add32(u8_t *op32, u16_t op16);
+#else
+void uip_add_rcv_nxt(u8_t n);
+void uip_add32(u8_t *op32, u8_t op8);
+#endif /* UIP_BUFSIZE > 255 */
+u16_t uip_ipchksum(void);
+u16_t uip_tcpchksum(void);
+
+#endif /* __UIP_ARCH_H__ */