diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644
index 0000000..f191725
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,67 @@
+
+RCS file: RCS/keypad.asm,v
+Working file: keypad.asm
+head: 1.34
+branch:
+locks: strict
+	tundra: 1.34
+access list:
+symbolic names:
+keyword substitution: kv
+total revisions: 11;	selected revisions: 11
+description:
+PIC Based Keypad Decoding System
+----------------------------
+revision 1.34	locked by: tundra;
+date: 2002/06/18 16:44:33;  author: tundra;  state: Exp;  lines: +3 -3
+Fixed bug in serial output bit count setup.
+----------------------------
+revision 1.33
+date: 2002/06/05 15:07:58;  author: tundra;  state: Exp;  lines: +3 -3
+Changed keypad scan delay to a nominal 125ms.
+----------------------------
+revision 1.32
+date: 2002/06/05 14:12:54;  author: tundra;  state: Exp;  lines: +17 -2
+Added a nominal 333ms delay between keyboard scans.  This is needed
+to limit the keystroke repeat rate.
+----------------------------
+revision 1.31
+date: 2002/05/29 17:22:02;  author: tundra;  state: Exp;  lines: +3 -3
+Changed DEBOUNCE_TIME to maintain 5ms interval between debounce
+read attempts.
+----------------------------
+revision 1.30
+date: 2002/05/29 17:20:06;  author: tundra;  state: Exp;  lines: +5 -5
+Changed basic TMR0 interval to 480us.
+----------------------------
+revision 1.24
+date: 2002/05/28 19:06:36;  author: tundra;  state: Exp;  lines: +3 -2
+Fixed bug in serial clocking to reset clock at the end of clocking
+cycle.
+----------------------------
+revision 1.23
+date: 2002/05/28 19:03:00;  author: tundra;  state: Exp;  lines: +41 -18
+Added serial output logic.
+----------------------------
+revision 1.22
+date: 2002/05/28 18:35:36;  author: tundra;  state: Exp;  lines: +86 -29
+Added logic to select serial or parallel output at init time.
+Completed parallel output routine. Wrote skeleton of serial output
+routine.
+----------------------------
+revision 1.21
+date: 2002/05/28 15:47:18;  author: tundra;  state: Exp;  lines: +11 -9
+Cleaned up and added explanatory comments.
+----------------------------
+revision 1.2
+date: 2002/05/28 15:18:33;  author: tundra;  state: Exp;  lines: +48 -13
+Changed basic TMR0 interrupt interval to 1ms (previously 10ms).
+Split key read into separate debounce and translate routines.
+Debounce is now defined to be DEBOUNCE_COUNT consecutive reads
+with no change on the keyboard.  A wait of DEBOUNCE_TIME TMR0
+interrupt ticks is inserted between each keyboard read attempt.
+----------------------------
+revision 1.1
+date: 2002/05/22 13:24:46;  author: tundra;  state: Exp;
+Initial revision
+=============================================================================
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..d8afaf4
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,59 @@
+# Makefile for PIC keypad.asm embedded keypad controller
+# $Id: Makefile,v 1.1 2002/05/05 22:25:29 tundra Exp tundra $
+
+#BURN_PGM    = c:/usr/local/PIC/pp/pp
+#BURN_OPT    = "-!"
+#VRFY_OPT    = "-!v"
+
+
+BURN_PGM    = c:/usr/local/PIC/fpp/fppdos.exe
+GENERAL_OPT = -! -h3:1 -t20
+DUMP_OPT    = -d
+VRFY_OPT    = -v
+ERASE_OPT   = -e
+INC_DIR     = ../include
+SRC_FILE    = keypad.asm
+
+RELEASE_FILES  = keypad.asm keypad-license.txt readme.txt
+RELEASE_FILES1 = keypad.hex keypad.lst keypad.xrf
+RELEASE_DIR    = Latest-Release
+SCHEMATIC_DIR  = Schematic
+
+
+ASM_OPTIONS = /dINCFILES=${INC_DIR} /t8 /x /q 
+
+
+a all assemble:
+	@c:/progra~1/mplab/mpasm ${ASM_OPTIONS} ${SRC_FILE}
+	@ls -l *err
+
+b burn:
+	@${BURN_PGM} ${GENERAL_OPT} keypad.hex
+	@make verify
+
+c clean:
+	@rm -f *.cod *.err *.hex *.lst *.obj *.xrf dump*.hex *~ *#* \#* *.erc
+
+d dump:
+	@${BURN_PGM} ${GENERAL_OPT} ${DUMP_OPT} dump_keypad.hex
+
+e erase:
+	@${BURN_PGM} ${GENERAL_OPT} ${ERASE_OPT}
+
+r release:
+	@- mkdir ${RELEASE_DIR}
+	@- co -l ${RELEASE_FILES}
+	@make assemble
+	@mv ${RELEASE_FILES} ${RELEASE_DIR}
+	@mv ${RELEASE_FILES1} ${RELEASE_DIR}
+	@cp Makefile ${RELEASE_DIR}
+	@cp ${SCHEMATIC_DIR}/* ${RELEASE_DIR}
+	@rlog ${SRC_FILE} >${RELEASE_DIR}/CHANGELOG
+	@make clean
+
+rc relclean:
+	@- rm -rf ${RELEASE_DIR}
+	@make clean
+ 
+v verify:
+	@${BURN_PGM} ${GENERAL_OPT} ${VRFY_OPT} keypad.hex
diff --git a/keypad-board.jpg b/keypad-board.jpg
new file mode 100644
index 0000000..fe4291b
--- /dev/null
+++ b/keypad-board.jpg
Binary files differ
diff --git a/keypad-license.txt b/keypad-license.txt
new file mode 100644
index 0000000..9e2992d
--- /dev/null
+++ b/keypad-license.txt
@@ -0,0 +1,65 @@
+keypad - Copyright (c) 2002, TundraWare Inc., All Rights Reserved
+$Id: keypad-license.txt,v 1.1 2002/05/05 22:28:20 tundra Exp tundra $
+
+This license refers to the hardware design, schematics, software, and
+all other files found in the keypad zip archive.  Hereafter, these
+are referred to collectively as the "keypad system".
+
+Permission to use and distribute the keypad system is hereby granted so
+long as ALL the following conditions are met:
+
+    1) The user of the keypad system understands and agrees that
+       this is an experimental hardware/software system which is
+       provided "AS-IS" with no warranties expressed or implied by
+       TundraWare Inc.
+
+     2) The user acknowledges the keypad system has NOT been tested for:
+         a) Correct operation
+         b) Freedom from unintended consequences
+         c) Any operation or condition which might cause damage to
+            the user's machine, software, network, or data, or which
+            might cause any breach of system security of the user's
+            system(s) or any other systems.
+
+     3) By using the keypad system, the user does so at their own
+        risk and agrees to hold TundraWare Inc.  harmless for any
+        damage, direct or indirect, that this system may or does cause
+        to the user's computational environment, including, but not
+        limited to, the user's hardware, software, network, or data.
+        The user further agrees to hold TundraWare Inc. harmless for
+        any economic damage or any other adverse consequence, direct
+        or indirect, caused by the use of the keypad system.
+
+     4) Any distributed copies of the keypad system must include all
+        the contents originally provided in this keypad system
+        distribution unmodified in any way.
+
+     5) Distribution of modified systems based on the keypad system,
+	hereafter called "derivative work", is permitted so long as:
+
+	    a) The derivative work is packaged separately from the
+	       keypad system provided by TundraWare Inc.
+
+	    b) The distribution of the derivative work also includes
+	       the original, unmodified TundraWare Inc. keypad
+	       system release distribution upon which the derivative
+	       work is based.
+
+	    b) The derivative work clearly notes the fact that it
+	       derives in part from the original keypad system.
+	
+     6) If duplicated and/or distributed, no fee beyond reasonable
+        duplication charges may be charged for the keypad system.
+
+     7) This license is provided only for NON-COMMERCIAL use of the
+        keypad system.  Under no circumstance may the keypad
+        system or derivative work based upon the keypad system be
+        used commercially (for pay or remuneration of any kind)
+        without separate licensing for such use by TundraWare Inc.
+
+
+If you do not understand, or cannot abide by any of these conditions,
+DO NOT USE the keypad system.
+
+To report bugs or suggest improvements, contact: tundra@tundraware.com
+
diff --git a/keypad.asm b/keypad.asm
new file mode 100644
index 0000000..f33ca0f
--- /dev/null
+++ b/keypad.asm
@@ -0,0 +1,558 @@
+;;; KEYPAD.ASM
+;;; Copyright (c) 2002, TundraWare Inc., All Rights Reserved
+;;; 
+;;; Program to encode keypad presses into binary numbers
+;;; 
+;;; $Id: keypad.asm,v 1.34 2002/06/18 16:44:33 tundra Exp tundra $
+
+
+;;;;;;;;;;
+;;; This code assumes the following keypad wiring to PORTB on the PIC:
+;;;
+;;;  RB7   RB6   RB5   RB4   RB3   RB2   RB1   RB0
+;;;  Col.  Col.  Col.  Col.  Row   Row   Row   Row
+;;;   4     3     2     1     4     3     2     1
+;;;;;;;;;;	
+
+	        list            p=16F84A
+		include		<P16F84A.INC>
+
+        errorlevel      -302		;suppress bank selection messages
+        __config        3ff3h		;RC osc, WDT off
+        __idlocs        1234
+ 
+;;;;;;;;;;
+;;; Device Constants
+;;;;;;;;;;
+
+tmr2	equ	00H			; TMR0 prescaler constants
+tmr4	equ	01H
+tmr8	equ	02H
+tmr16	equ	03H
+tmr32	equ	04H
+tmr64	equ	05H
+tmr128	equ	06H
+tmr256	equ	07H
+
+
+;;;;;;;;;;
+;;; Circuit Constants
+;;;;;;;;;;
+
+KEYPAD	equ	PORTB
+OUTPUT	equ	PORTA
+PAR_SEL	equ	4		; bit used to select parallel/serial output
+PLATCH	equ	4		; parallel latch bit
+SCLK	equ	1		; serial clock out bit
+SDAT	equ	0		; serial data out bit
+SLATCH	equ	2		; serial latch bit
+TRISKEY	equ	TRISB
+TRISOUT	equ	TRISA
+
+; Constants used to Set TMR0 interrupt rate.
+; Adjust as needed using the following formula:
+;
+;    I = T * TMR0_CNT * Prescaler Factor
+;
+; TMR0_PRIME is the value actually used to prime
+; TMR0 when restarting it - it counts *up* and
+; interrupts on overflow.
+;
+; The following TMR0 constants are approximately:
+;
+;   (T) Internal Clock Interval:  3us
+;       (I) TMR0 Interrupt Rate:  480us
+
+
+TMR0_CNT	equ	D'5'
+TMR0_PRE	equ	tmr32
+TMR0_PRIME	equ	D'256'-TMR0_CNT
+
+
+;;;;;;;;;;
+;;; Program Contants
+;;;;;;;;;;
+
+DEBOUNCE_COUNT	equ	05h	; # times keyhit must be unchanged to be valid
+DEBOUNCE_TIME	equ	0ah	; # TMR0 interrupts to wait between keyboard reads
+CLK_TIME	equ	01h	; # TMR0 interrupts for serial clock true
+MAX_COL		equ	04h	; # of columns on the keyboard
+NO_HIT		equ	0fh	; bit pattern which means no key has been hit
+LATCH_TIME	equ	01h	; # TMR0 interrupts to leave latch line true
+REPEAT_COUNT	equ	03h	; scan delay = 
+				;     REPEAT_COUNT * REPEAT_DELAY * TMR0 rate
+REPEAT_DELAY	equ	D'87'
+	
+;;;;;;;;;;
+;;; Register File Assignments
+;;;;;;;;;;
+	
+	CBLOCK 0cH
+		; context save area
+
+		_fsr
+		_pclath
+		_status
+		_w
+
+		; flags
+
+		par_out		; non-zero -> parallel out; zero -> serial out
+
+		; variables
+
+		count
+		current_col
+		key_val
+		wait_count
+	ENDC
+
+	
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+	
+;;;;;;;;;;
+;;; Power-On Entry Point
+;;;;;;;;;;
+
+		org	00H
+		goto	main
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;
+;;; Interrupt Handler
+;;;;;;;;;;
+
+		org	04H
+
+		movwf	_w		; save context
+		movfw	STATUS
+		bcf	STATUS,RP1
+		bcf	STATUS,RP0
+		movwf	_status
+		movfw	FSR
+		movwf	_fsr
+		movfw	PCLATH
+		movwf	_pclath
+		clrf	PCLATH
+
+		; Figure out who interrupted and service it
+
+		btfsc	INTCON,T0IF	; did we get a TMR0 interrupt?
+		goto	tmr0_svc	; yup
+		goto	restore_context	; no supported interrupt type found
+
+		; TMR0 ISR
+tmr0_svc:
+		bcf	INTCON,T0IF	; clear the interrupt condition
+		movlw	TMR0_PRIME	; prime the counter
+		movwf	TMR0
+
+		; Update the wait timer if it is in use
+		; Only do this on TMR0 interrupts so timing is predictable 
+
+		movfw	wait_count
+		btfss	STATUS,Z	; non-zero count means 'in use'
+		decf	wait_count,F	; decrement current count
+
+		;;; End TMR0 ISR
+
+restore_context:
+		movfw	_pclath		; restore entry context
+		movwf	PCLATH
+		movfw	_fsr
+		movwf	FSR
+		movfw	_status
+		movwf	STATUS
+		swapf	_w,F		; get W back w/o changing Z flag
+		swapf	_w,W
+	
+		retfie			; all done
+
+;;; End of interrupt handler
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+	
+;;;;;;;;;;
+;;; Main program logic
+;;;;;;;;;;
+
+main:
+		call	init		; initialize the system
+scan:
+		incf	current_col,F	; pickup next column to scan
+		movlw	MAX_COL+1	; if current_col > MAX_COL then
+		subwf	current_col,W   ; we just did last column, so start over
+		btfss	STATUS,Z	; zero means we need to start over
+		goto	key_scan	; nope, go look for key hits
+		clrf	current_col	; yes, reinit column counter
+		goto	scan
+key_scan:
+		movfw	current_col	; get bit pattern which
+		call	col_select	; selects curently desired column
+		movwf	KEYPAD		; and enable that column
+		movfw	KEYPAD		; get keypad inputs
+		andlw	0fh		; only want row bits
+		addlw	-NO_HIT		; see if key hit occured
+		btfsc	STATUS,Z	; in current column
+		goto	scan		; no, look at next column
+		call	key_get		; yes, process ignore key releaseskeystroke
+		andlw	0fh		; there is bounce on a key *release*
+		addlw	-NO_HIT		; as well as a key *press*
+		btfsc	STATUS,Z	; we want to debounce key releases
+		goto	scan		; (so they do not look like legit keystrokes)
+					; but then we just ignore the release
+		call	key_xlate	; legit keystroke - turn into binary value
+		call	key_out		; and output it
+
+		; introduce wait between keyboard scans to limit
+		; key repeat rate
+
+		movlw	REPEAT_COUNT
+		movwf	count
+scan_delay:
+		movlw	REPEAT_DELAY
+		call	wait
+		decfsz	count,F
+		goto	scan_delay
+
+		goto	scan		; scan forever
+
+;;; End of main logic
+
+
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+ ;;;;;;;;;;
+ ;;; Data & Tables
+ ;;;;;;;;;;
+
+;;;;;;;;;;
+;;; Embedded Release & Copyright Information
+;;;;;;;;;;
+
+		DA	"keypad.asm - $Revision: 1.34 $ - Copyright 2002, TundraWare Inc., All Rights Reserved."
+
+; End of Embedded Release & Copyright Information
+
+
+;;;;;;;;;;
+;;; Column selection bit patterns.
+;;;;;;;;;;
+
+col_select:
+		addwf	PCL,F
+		DT	b'11110000'	; placeholder, no column selected
+		DT	b'11100000'	; column 1 selected
+		DT	b'11010000'	; column 2 selected
+		DT	b'10110000'	; column 3 selected
+		DT	b'01110000'	; column 4 selected
+
+;;;;;;;;;;
+;;; Translate row/column selection pattern into equivalent binary value.
+;;; There is one subtable for each column.  '*' is translated of 0eh and
+;;; '#' is translated to 0fh.  This allows the entire keyboard to be
+;;; uniquely translated to 1 of 16 hex output values.
+;;;;;;;;;;
+
+col1_keys:
+		addwf	PCL,F
+		DT	01h		; Row 1
+		DT	04h		; Row 2
+		DT	07h		; Row 3
+		DT	0eh		; Row 4
+col2_keys:
+		addwf	PCL,F
+		DT	02h		; Row 1
+		DT	05h		; Row 2
+		DT	08h		; Row 3
+		DT	00h		; Row 4
+col3_keys:
+		addwf	PCL,F
+		DT	03h		; Row 1
+		DT	06h		; Row 2
+		DT	09h		; Row 3
+		DT	0fh		; Row 4
+col4_keys:
+		addwf	PCL,F
+		DT	0ah		; Row 1
+		DT	0b		; Row 2
+		DT	0c		; Row 3
+		DT	0dh		; Row 4
+
+
+;;;;;;;;;;
+;;; Translate a nibble bit pattern where an on bit means that row was selected
+;;; into an equivalent binary value for that row.
+;;;;;;;;;;
+
+bit2row:
+		addwf	PCL,F
+		DT	00H		; placeholder, never used
+		DT	00H		; b'0001' => row 1
+		DT	01H		; b'0010' => row 2
+		DT	00H		; placeholder, never used
+		DT	02H		; b'0100' => row 3
+		DT	00H		; placeholder, never used
+		DT	00H		; placeholder, never used
+		DT	00H		; placeholder, never used
+		DT	03H		; b'1000' => row 4
+
+
+;;; End of translation tables
+
+	
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;;;;;;;;;;
+;;; Supporting Subroutines
+;;;;;;;;;;
+
+
+;;;;;;;;;;
+;;; Output current keystroke.
+;;; This routine supports both serial and parallel output modes,
+;;; which are selected at init time as follows:
+;;;
+;;;          A4=0  ===> Serial Output
+;;;          A4=1  ===> Parallel Output
+;;;;;;;;;;
+
+key_out:
+
+		movlw	0		; clear W
+		addwf	par_out,W	; if 0, we want serial output
+		btfsc	STATUS,Z
+		goto	serial_out
+
+		; parallel output routine
+
+		movfw	key_val		; load the value
+		movwf	OUTPUT
+		bsf	OUTPUT,PLATCH	; latch on
+		movlw	LATCH_TIME
+		call	wait
+		bcf	OUTPUT,PLATCH	; latch off
+		return
+
+		; serial output routine
+serial_out:
+		movlw	04h		; we have to shift out 4 bits LSB->MSB
+		movwf	count
+shift_bit:
+		bcf	OUTPUT,SDAT	; assume it's a 0
+		btfss	key_val,0	; see what it really is
+		goto	clock_bit
+		bsf	OUTPUT,SDAT	; nope, it was a 1
+clock_bit:
+		bsf	OUTPUT,SCLK	; clock it out
+		movlw	CLK_TIME
+		call	wait
+		bcf	OUTPUT,SCLK	; reset clock bit
+		decf	count,F		; see if bits left to do
+		btfsc	STATUS,Z
+		goto	serial_latch	; all done
+		rrf	key_val,F	; pickup next bit
+		goto	shift_bit	; and move it		
+
+		; now latch the data out
+serial_latch:
+		bsf	OUTPUT,SLATCH	; latch on
+		movlw	LATCH_TIME
+		call	wait
+		bcf	OUTPUT,SLATCH	; latch off
+		return
+
+;;; End of 'key_out'
+
+
+;;;;;;;;;;
+;;; Read a debounced key from the keyboard.
+;;; Keep reading keyboard until the value has not changed 
+;;; DEBOUNCE_COUNT times.  Wait an interval of DEBOUNCE_TIME
+;;; between read attempts
+;;;;;;;;;;
+
+key_get:
+		movfw	KEYPAD
+		movwf	key_val
+debounce:
+		movlw	DEBOUNCE_COUNT	; setup debounce counter
+		movwf	count
+check_key:
+		movlw	DEBOUNCE_TIME	; wait to let keyboard settle
+		call	wait
+		movfw	KEYPAD
+		subwf	key_val,F	; see if matched last
+		btfsc	STATUS,Z	; if Z, the values matched
+		goto	matched
+		movwf	key_val		; no match, start debounce cycle again
+		goto	debounce
+matched:
+		movwf	key_val		; save in case we have to do again
+		decfsz	count,F		; see how many times left to go
+		goto	check_key	; more matches to do
+
+		return			; got DEBOUNCE_COUNT matches - all done
+
+; End of 'key_get'
+
+
+;;;;;;;;;;
+;;; Translate the current keystroke into an equivalent binary value.
+;;;;;;;;;;
+
+key_xlate:
+		; translate the hardware bit pattern indicating
+		; which row was selected into an equivalent binary
+		; row number.  This will be used to index into
+		; the translation table for the current column to
+		; get the final binary value for that key.
+
+		comf	key_val,W	; complement so only bit on corresponds
+		andlw	0fh		; to row selected - mask unused off
+		call	bit2row		; translate it into a row number
+		movwf	key_val		; save for use below
+
+		; translate key value into equivalent binary value
+		; using the appropriate translation table for the
+		; current column
+
+		movfw	current_col	; get current column
+		addlw	-1		; convert into an 0-relative offset
+		addwf	PCL,F		; dispatch into the following jump table
+		goto	col1_xlate
+		goto	col2_xlate
+		goto	col3_xlate
+		goto	col4_xlate
+
+col1_xlate:
+		movfw	key_val
+		call	col1_keys
+		movwf	key_val
+		return
+
+col2_xlate:
+		movfw	key_val
+		call	col2_keys
+		movwf	key_val
+		return
+
+col3_xlate:
+		movfw	key_val
+		call	col3_keys
+		movwf	key_val
+		return
+
+col4_xlate:
+		movfw	key_val
+		call	col4_keys
+		movwf	key_val
+		return
+
+
+;;; End of 'key_xlate'
+
+
+;;;;;;;;;;
+;;; Generic wait routine.
+;;; Expects wait count to be passed in W.
+;;; Total wait time is thus W * TMR0 interrupt rate
+;;;;;;;;;;
+
+wait:
+		movwf	wait_count
+waiting:
+		movfw	wait_count	; wait until we countdown to 0
+		btfss	STATUS,Z
+		goto	waiting
+		return
+
+;;; End Of 'wait'
+
+
+;;;;;;;;;;
+;;; Initialize hardware and software at startup as needed.
+;;; Returns with register bank 0 selected.
+;;;;;;;;;;
+
+init:
+		clrf	INTCON		; all interrupts off, flags cleared
+
+		; determine whether we want serial or parallel output
+		; and set flag accordingly for use later in the output routine
+
+		clrf	par_out		; assume serial
+		btfsc	OUTPUT,PAR_SEL	; if high - parallel out
+		comf	par_out,F	; we want parallel output
+		
+		; Setup control registers
+
+		bsf	STATUS,RP0	; select register bank 1  
+ 
+		; setup output port with all bits output enabled
+
+		movlw	b'11100000'	; set OUTPUT 0:4 as outputs
+		movwf   TRISOUT		; (to output binary value of keypress)
+
+		; Setup control registers
+
+		bsf	STATUS,RP0	; select register bank 1  
+ 
+		; setup keypad interface port
+
+		movlw	b'00001111'	; KEYPAD high nibble set for output
+					; (for column control)
+		movwf	TRISKEY		; KEYPAD low nibble set for input
+					; (to read rows)
+
+		; setup TMR0 interrupt interval
+
+		clrf	OPTION_REG	; TMR0: assign int. clock & prescaler
+					; PORTB: weak pullups
+		movlw	TMR0_PRE	; Set TMR0 prescale factor
+		iorwf	OPTION_REG,F
+
+		bcf     STATUS,RP0	; select register bank 0
+
+		; Prime the TMR0 countup counter
+
+		movlw	TMR0_PRIME	; prime the counter
+		movwf	TMR0
+
+		; Intialize ports
+
+		clrf	OUTPUT
+		clrf	KEYPAD
+
+		; Initialize variables
+
+		clrf	current_col
+		clrf	key_val
+		clrf	count
+		clrf	wait_count
+
+		; Setup interrupt handling
+
+		bsf	INTCON,T0IE	; enable TMR0 interrupt
+		bsf	INTCON,GIE	; and turn interrupts back on
+
+		return	
+
+;;; End of 'init'
+
+
+;;;;;;;;;;
+;;; EEPROM Contents
+;;;;;;;;;;
+	
+		org     2100h
+
+		DE      ""
+		END
+
diff --git a/keypad.brd b/keypad.brd
new file mode 100644
index 0000000..aaa0d15
--- /dev/null
+++ b/keypad.brd
Binary files differ
diff --git a/keypad.gif b/keypad.gif
new file mode 100644
index 0000000..da36777
--- /dev/null
+++ b/keypad.gif
Binary files differ
diff --git a/keypad.hex b/keypad.hex
new file mode 100644
index 0000000..6707c0d
--- /dev/null
+++ b/keypad.hex
@@ -0,0 +1,36 @@
+:020000040000FA
+:020000002028B6
+:080008008F00030803138312AB
+:100010008E0004088C000A088D008A010B19112833
+:1000200017280B11FB3081001408031D94030D08E1
+:100030008A000C0884000E0883008F0E0F0E090042
+:10004000DC20920A05301202031D28289201212883
+:1000500012086920860006080F39F13E031921288D
+:10006000AC200F39F13E03192128BC208D2003302C
+:1000700091005730D720910B39282128E535F03CE5
+:10008000E4306117ED392D1024106529693BE939F9
+:10009000EE37201DAE18B41924102D104310F03780
+:1000A000F23CE7347434321030182C195410EE3A04
+:1000B0007232D730F230A032EE24AE312016EC206E
+:1000C00020366929E833733A5210F332F232653B35
+:1000D0002E328207F034E034D034B03470348207EA
+:1000E0000134043407340E348207023405340834F2
+:1000F000003482070334063409340F3482070A348B
+:100100000B340C340D3482070034003401340034D5
+:100110000234003400340034033400301007031973
+:1001200098281308850005160130D720051208000D
+:10013000043091000510131C9E280514851401300D
+:10014000D720851091030319A728930C9A28051529
+:100150000130D720051108000608930005309100F2
+:100160000A30D720060893020319B8289300AE2856
+:100170009300910BB028080013090F3983209300D6
+:100180001208FF3E8207C728CB28CF28D3281308A0
+:100190006F209300080013087420930008001308D0
+:1001A00079209300080013087E2093000800940033
+:1001B0001408031DD82808008B019001051A900926
+:1001C0008316E030850083160F30860081010430ED
+:1001D00081048312FB308100850186019201930125
+:0A01E000910194018B168B170800A3
+:084000000100020003000400AE
+:02400E00F33F7E
+:00000001FF
diff --git a/keypad.lst b/keypad.lst
new file mode 100644
index 0000000..6f4d8e5
--- /dev/null
+++ b/keypad.lst
@@ -0,0 +1,806 @@
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE  1
+
+
+LOC  OBJECT CODE     LINE SOURCE TEXT
+  VALUE
+
+                      00001 ;;; KEYPAD.ASM
+                      00002 ;;; Copyright (c) 2002, TundraWare Inc., All Rights Reserved
+                      00003 ;;; 
+                      00004 ;;; Program to encode keypad presses into binary numbers
+                      00005 ;;; 
+                      00006 ;;; $Id: keypad.asm,v 1.34 2002/06/18 16:44:33 tundra Exp tundra $
+                      00007 
+                      00008 
+                      00009 ;;;;;;;;;;
+                      00010 ;;; This code assumes the following keypad wiring to PORTB on the PIC:
+                      00011 ;;;
+                      00012 ;;;  RB7   RB6   RB5   RB4   RB3   RB2   RB1   RB0
+                      00013 ;;;  Col.  Col.  Col.  Col.  Row   Row   Row   Row
+                      00014 ;;;   4     3     2     1     4     3     2     1
+                      00015 ;;;;;;;;;;      
+                      00016 
+                      00017                 list            p=16F84A
+                      00018                 include         <P16F84A.INC>
+                      00001         LIST
+                      00002 ; P16F84A.INC  Standard Header File, Version 2.00    Microchip Technology, Inc.
+                      00134         LIST
+                      00019 
+                      00020         errorlevel      -302            ;suppress bank selection messages
+2007   3FF3           00021         __config        3ff3h           ;RC osc, WDT off
+2000   0001 0002 0003 00022         __idlocs        1234
+       0004 
+                      00023  
+                      00024 ;;;;;;;;;;
+                      00025 ;;; Device Constants
+                      00026 ;;;;;;;;;;
+                      00027 
+  00000000            00028 tmr2    equ     00H                     ; TMR0 prescaler constants
+  00000001            00029 tmr4    equ     01H
+  00000002            00030 tmr8    equ     02H
+  00000003            00031 tmr16   equ     03H
+  00000004            00032 tmr32   equ     04H
+  00000005            00033 tmr64   equ     05H
+  00000006            00034 tmr128  equ     06H
+  00000007            00035 tmr256  equ     07H
+                      00036 
+                      00037 
+                      00038 ;;;;;;;;;;
+                      00039 ;;; Circuit Constants
+                      00040 ;;;;;;;;;;
+                      00041 
+  00000006            00042 KEYPAD  equ     PORTB
+  00000005            00043 OUTPUT  equ     PORTA
+  00000004            00044 PAR_SEL equ     4               ; bit used to select parallel/serial output
+  00000004            00045 PLATCH  equ     4               ; parallel latch bit
+  00000001            00046 SCLK    equ     1               ; serial clock out bit
+  00000000            00047 SDAT    equ     0               ; serial data out bit
+  00000002            00048 SLATCH  equ     2               ; serial latch bit
+  00000086            00049 TRISKEY equ     TRISB
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE  2
+
+
+LOC  OBJECT CODE     LINE SOURCE TEXT
+  VALUE
+
+  00000085            00050 TRISOUT equ     TRISA
+                      00051 
+                      00052 ; Constants used to Set TMR0 interrupt rate.
+                      00053 ; Adjust as needed using the following formula:
+                      00054 ;
+                      00055 ;    I = T * TMR0_CNT * Prescaler Factor
+                      00056 ;
+                      00057 ; TMR0_PRIME is the value actually used to prime
+                      00058 ; TMR0 when restarting it - it counts *up* and
+                      00059 ; interrupts on overflow.
+                      00060 ;
+                      00061 ; The following TMR0 constants are approximately:
+                      00062 ;
+                      00063 ;   (T) Internal Clock Interval:  3us
+                      00064 ;       (I) TMR0 Interrupt Rate:  480us
+                      00065 
+                      00066 
+  00000005            00067 TMR0_CNT        equ     D'5'
+  00000004            00068 TMR0_PRE        equ     tmr32
+  000000FB            00069 TMR0_PRIME      equ     D'256'-TMR0_CNT
+                      00070 
+                      00071 
+                      00072 ;;;;;;;;;;
+                      00073 ;;; Program Contants
+                      00074 ;;;;;;;;;;
+                      00075 
+  00000005            00076 DEBOUNCE_COUNT  equ     05h     ; # times keyhit must be unchanged to be valid
+  0000000A            00077 DEBOUNCE_TIME   equ     0ah     ; # TMR0 interrupts to wait between keyboard reads
+  00000001            00078 CLK_TIME        equ     01h     ; # TMR0 interrupts for serial clock true
+  00000004            00079 MAX_COL         equ     04h     ; # of columns on the keyboard
+  0000000F            00080 NO_HIT          equ     0fh     ; bit pattern which means no key has been hit
+  00000001            00081 LATCH_TIME      equ     01h     ; # TMR0 interrupts to leave latch line true
+  00000003            00082 REPEAT_COUNT    equ     03h     ; scan delay = 
+                      00083                                 ;     REPEAT_COUNT * REPEAT_DELAY * TMR0 rate
+  00000057            00084 REPEAT_DELAY    equ     D'87'
+                      00085         
+                      00086 ;;;;;;;;;;
+                      00087 ;;; Register File Assignments
+                      00088 ;;;;;;;;;;
+                      00089         
+                      00090         CBLOCK 0cH
+                      00091                 ; context save area
+                      00092 
+  0000000C            00093                 _fsr
+  0000000D            00094                 _pclath
+  0000000E            00095                 _status
+  0000000F            00096                 _w
+                      00097 
+                      00098                 ; flags
+                      00099 
+  00000010            00100                 par_out         ; non-zero -> parallel out; zero -> serial out
+                      00101 
+                      00102                 ; variables
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE  3
+
+
+LOC  OBJECT CODE     LINE SOURCE TEXT
+  VALUE
+
+                      00103 
+  00000011            00104                 count
+  00000012            00105                 current_col
+  00000013            00106                 key_val
+  00000014            00107                 wait_count
+                      00108         ENDC
+                      00109 
+                      00110         
+                      00111 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                      00112 
+                      00113         
+                      00114 ;;;;;;;;;;
+                      00115 ;;; Power-On Entry Point
+                      00116 ;;;;;;;;;;
+                      00117 
+0000                  00118                 org     00H
+0000   2820           00119                 goto    main
+                      00120 
+                      00121 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                      00122 
+                      00123 ;;;;;;;;;;
+                      00124 ;;; Interrupt Handler
+                      00125 ;;;;;;;;;;
+                      00126 
+0004                  00127                 org     04H
+                      00128 
+0004   008F           00129                 movwf   _w              ; save context
+0005   0803           00130                 movfw   STATUS
+0006   1303           00131                 bcf     STATUS,RP1
+0007   1283           00132                 bcf     STATUS,RP0
+0008   008E           00133                 movwf   _status
+0009   0804           00134                 movfw   FSR
+000A   008C           00135                 movwf   _fsr
+000B   080A           00136                 movfw   PCLATH
+000C   008D           00137                 movwf   _pclath
+000D   018A           00138                 clrf    PCLATH
+                      00139 
+                      00140                 ; Figure out who interrupted and service it
+                      00141 
+000E   190B           00142                 btfsc   INTCON,T0IF     ; did we get a TMR0 interrupt?
+000F   2811           00143                 goto    tmr0_svc        ; yup
+0010   2817           00144                 goto    restore_context ; no supported interrupt type found
+                      00145 
+                      00146                 ; TMR0 ISR
+0011                  00147 tmr0_svc:
+0011   110B           00148                 bcf     INTCON,T0IF     ; clear the interrupt condition
+0012   30FB           00149                 movlw   TMR0_PRIME      ; prime the counter
+0013   0081           00150                 movwf   TMR0
+                      00151 
+                      00152                 ; Update the wait timer if it is in use
+                      00153                 ; Only do this on TMR0 interrupts so timing is predictable 
+                      00154 
+0014   0814           00155                 movfw   wait_count
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE  4
+
+
+LOC  OBJECT CODE     LINE SOURCE TEXT
+  VALUE
+
+0015   1D03           00156                 btfss   STATUS,Z        ; non-zero count means 'in use'
+0016   0394           00157                 decf    wait_count,F    ; decrement current count
+                      00158 
+                      00159                 ;;; End TMR0 ISR
+                      00160 
+0017                  00161 restore_context:
+0017   080D           00162                 movfw   _pclath         ; restore entry context
+0018   008A           00163                 movwf   PCLATH
+0019   080C           00164                 movfw   _fsr
+001A   0084           00165                 movwf   FSR
+001B   080E           00166                 movfw   _status
+001C   0083           00167                 movwf   STATUS
+001D   0E8F           00168                 swapf   _w,F            ; get W back w/o changing Z flag
+001E   0E0F           00169                 swapf   _w,W
+                      00170         
+001F   0009           00171                 retfie                  ; all done
+                      00172 
+                      00173 ;;; End of interrupt handler
+                      00174 
+                      00175 
+                      00176 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                      00177 
+                      00178         
+                      00179 ;;;;;;;;;;
+                      00180 ;;; Main program logic
+                      00181 ;;;;;;;;;;
+                      00182 
+0020                  00183 main:
+0020   20DC           00184                 call    init            ; initialize the system
+0021                  00185 scan:
+0021   0A92           00186                 incf    current_col,F   ; pickup next column to scan
+0022   3005           00187                 movlw   MAX_COL+1       ; if current_col > MAX_COL then
+0023   0212           00188                 subwf   current_col,W   ; we just did last column, so start over
+0024   1D03           00189                 btfss   STATUS,Z        ; zero means we need to start over
+0025   2828           00190                 goto    key_scan        ; nope, go look for key hits
+0026   0192           00191                 clrf    current_col     ; yes, reinit column counter
+0027   2821           00192                 goto    scan
+0028                  00193 key_scan:
+0028   0812           00194                 movfw   current_col     ; get bit pattern which
+0029   2069           00195                 call    col_select      ; selects curently desired column
+002A   0086           00196                 movwf   KEYPAD          ; and enable that column
+002B   0806           00197                 movfw   KEYPAD          ; get keypad inputs
+002C   390F           00198                 andlw   0fh             ; only want row bits
+002D   3EF1           00199                 addlw   -NO_HIT         ; see if key hit occured
+002E   1903           00200                 btfsc   STATUS,Z        ; in current column
+002F   2821           00201                 goto    scan            ; no, look at next column
+0030   20AC           00202                 call    key_get         ; yes, process ignore key releaseskeystroke
+0031   390F           00203                 andlw   0fh             ; there is bounce on a key *release*
+0032   3EF1           00204                 addlw   -NO_HIT         ; as well as a key *press*
+0033   1903           00205                 btfsc   STATUS,Z        ; we want to debounce key releases
+0034   2821           00206                 goto    scan            ; (so they do not look like legit keystrokes)
+                      00207                                         ; but then we just ignore the release
+0035   20BC           00208                 call    key_xlate       ; legit keystroke - turn into binary value
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE  5
+
+
+LOC  OBJECT CODE     LINE SOURCE TEXT
+  VALUE
+
+0036   208D           00209                 call    key_out         ; and output it
+                      00210 
+                      00211                 ; introduce wait between keyboard scans to limit
+                      00212                 ; key repeat rate
+                      00213 
+0037   3003           00214                 movlw   REPEAT_COUNT
+0038   0091           00215                 movwf   count
+0039                  00216 scan_delay:
+0039   3057           00217                 movlw   REPEAT_DELAY
+003A   20D7           00218                 call    wait
+003B   0B91           00219                 decfsz  count,F
+003C   2839           00220                 goto    scan_delay
+                      00221 
+003D   2821           00222                 goto    scan            ; scan forever
+                      00223 
+                      00224 ;;; End of main logic
+                      00225 
+                      00226 
+                      00227  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                      00228 
+                      00229 
+                      00230  ;;;;;;;;;;
+                      00231  ;;; Data & Tables
+                      00232  ;;;;;;;;;;
+                      00233 
+                      00234 ;;;;;;;;;;
+                      00235 ;;; Embedded Release & Copyright Information
+                      00236 ;;;;;;;;;;
+                      00237 
+003E   35E5 3CF0 30E4 00238                 DA      "keypad.asm - $Revision: 1.34 $ - Copyright 2002, TundraWare Inc., All Rights Re
+                            served."
+       1761 39ED 102D 
+       1024 2965 3B69 
+       39E9 37EE 1D20 
+       18AE 19B4 1024 
+       102D 1043 37F0 
+       3CF2 34E7 3474 
+       1032 1830 192C 
+       1054 3AEE 3272 
+       30D7 30F2 32A0 
+       24EE 31AE 1620 
+       20EC 3620 2969 
+       33E8 3A73 1052 
+       32F3 32F2 3B65 
+       322E 
+                      00239 
+                      00240 ; End of Embedded Release & Copyright Information
+                      00241 
+                      00242 
+                      00243 ;;;;;;;;;;
+                      00244 ;;; Column selection bit patterns.
+                      00245 ;;;;;;;;;;
+                      00246 
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE  6
+
+
+LOC  OBJECT CODE     LINE SOURCE TEXT
+  VALUE
+
+0069                  00247 col_select:
+0069   0782           00248                 addwf   PCL,F
+006A   34F0           00249                 DT      b'11110000'     ; placeholder, no column selected
+006B   34E0           00250                 DT      b'11100000'     ; column 1 selected
+006C   34D0           00251                 DT      b'11010000'     ; column 2 selected
+006D   34B0           00252                 DT      b'10110000'     ; column 3 selected
+006E   3470           00253                 DT      b'01110000'     ; column 4 selected
+                      00254 
+                      00255 ;;;;;;;;;;
+                      00256 ;;; Translate row/column selection pattern into equivalent binary value.
+                      00257 ;;; There is one subtable for each column.  '*' is translated of 0eh and
+                      00258 ;;; '#' is translated to 0fh.  This allows the entire keyboard to be
+                      00259 ;;; uniquely translated to 1 of 16 hex output values.
+                      00260 ;;;;;;;;;;
+                      00261 
+006F                  00262 col1_keys:
+006F   0782           00263                 addwf   PCL,F
+0070   3401           00264                 DT      01h             ; Row 1
+0071   3404           00265                 DT      04h             ; Row 2
+0072   3407           00266                 DT      07h             ; Row 3
+0073   340E           00267                 DT      0eh             ; Row 4
+0074                  00268 col2_keys:
+0074   0782           00269                 addwf   PCL,F
+0075   3402           00270                 DT      02h             ; Row 1
+0076   3405           00271                 DT      05h             ; Row 2
+0077   3408           00272                 DT      08h             ; Row 3
+0078   3400           00273                 DT      00h             ; Row 4
+0079                  00274 col3_keys:
+0079   0782           00275                 addwf   PCL,F
+007A   3403           00276                 DT      03h             ; Row 1
+007B   3406           00277                 DT      06h             ; Row 2
+007C   3409           00278                 DT      09h             ; Row 3
+007D   340F           00279                 DT      0fh             ; Row 4
+007E                  00280 col4_keys:
+007E   0782           00281                 addwf   PCL,F
+007F   340A           00282                 DT      0ah             ; Row 1
+0080   340B           00283                 DT      0b              ; Row 2
+0081   340C           00284                 DT      0c              ; Row 3
+0082   340D           00285                 DT      0dh             ; Row 4
+                      00286 
+                      00287 
+                      00288 ;;;;;;;;;;
+                      00289 ;;; Translate a nibble bit pattern where an on bit means that row was selected
+                      00290 ;;; into an equivalent binary value for that row.
+                      00291 ;;;;;;;;;;
+                      00292 
+0083                  00293 bit2row:
+0083   0782           00294                 addwf   PCL,F
+0084   3400           00295                 DT      00H             ; placeholder, never used
+0085   3400           00296                 DT      00H             ; b'0001' => row 1
+0086   3401           00297                 DT      01H             ; b'0010' => row 2
+0087   3400           00298                 DT      00H             ; placeholder, never used
+0088   3402           00299                 DT      02H             ; b'0100' => row 3
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE  7
+
+
+LOC  OBJECT CODE     LINE SOURCE TEXT
+  VALUE
+
+0089   3400           00300                 DT      00H             ; placeholder, never used
+008A   3400           00301                 DT      00H             ; placeholder, never used
+008B   3400           00302                 DT      00H             ; placeholder, never used
+008C   3403           00303                 DT      03H             ; b'1000' => row 4
+                      00304 
+                      00305 
+                      00306 ;;; End of translation tables
+                      00307 
+                      00308         
+                      00309 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+                      00310 
+                      00311 
+                      00312 ;;;;;;;;;;
+                      00313 ;;; Supporting Subroutines
+                      00314 ;;;;;;;;;;
+                      00315 
+                      00316 
+                      00317 ;;;;;;;;;;
+                      00318 ;;; Output current keystroke.
+                      00319 ;;; This routine supports both serial and parallel output modes,
+                      00320 ;;; which are selected at init time as follows:
+                      00321 ;;;
+                      00322 ;;;          A4=0  ===> Serial Output
+                      00323 ;;;          A4=1  ===> Parallel Output
+                      00324 ;;;;;;;;;;
+                      00325 
+008D                  00326 key_out:
+                      00327 
+008D   3000           00328                 movlw   0               ; clear W
+008E   0710           00329                 addwf   par_out,W       ; if 0, we want serial output
+008F   1903           00330                 btfsc   STATUS,Z
+0090   2898           00331                 goto    serial_out
+                      00332 
+                      00333                 ; parallel output routine
+                      00334 
+0091   0813           00335                 movfw   key_val         ; load the value
+0092   0085           00336                 movwf   OUTPUT
+0093   1605           00337                 bsf     OUTPUT,PLATCH   ; latch on
+0094   3001           00338                 movlw   LATCH_TIME
+0095   20D7           00339                 call    wait
+0096   1205           00340                 bcf     OUTPUT,PLATCH   ; latch off
+0097   0008           00341                 return
+                      00342 
+                      00343                 ; serial output routine
+0098                  00344 serial_out:
+0098   3004           00345                 movlw   04h             ; we have to shift out 4 bits LSB->MSB
+0099   0091           00346                 movwf   count
+009A                  00347 shift_bit:
+009A   1005           00348                 bcf     OUTPUT,SDAT     ; assume it's a 0
+009B   1C13           00349                 btfss   key_val,0       ; see what it really is
+009C   289E           00350                 goto    clock_bit
+009D   1405           00351                 bsf     OUTPUT,SDAT     ; nope, it was a 1
+009E                  00352 clock_bit:
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE  8
+
+
+LOC  OBJECT CODE     LINE SOURCE TEXT
+  VALUE
+
+009E   1485           00353                 bsf     OUTPUT,SCLK     ; clock it out
+009F   3001           00354                 movlw   CLK_TIME
+00A0   20D7           00355                 call    wait
+00A1   1085           00356                 bcf     OUTPUT,SCLK     ; reset clock bit
+00A2   0391           00357                 decf    count,F         ; see if bits left to do
+00A3   1903           00358                 btfsc   STATUS,Z
+00A4   28A7           00359                 goto    serial_latch    ; all done
+00A5   0C93           00360                 rrf     key_val,F       ; pickup next bit
+00A6   289A           00361                 goto    shift_bit       ; and move it           
+                      00362 
+                      00363                 ; now latch the data out
+00A7                  00364 serial_latch:
+00A7   1505           00365                 bsf     OUTPUT,SLATCH   ; latch on
+00A8   3001           00366                 movlw   LATCH_TIME
+00A9   20D7           00367                 call    wait
+00AA   1105           00368                 bcf     OUTPUT,SLATCH   ; latch off
+00AB   0008           00369                 return
+                      00370 
+                      00371 ;;; End of 'key_out'
+                      00372 
+                      00373 
+                      00374 ;;;;;;;;;;
+                      00375 ;;; Read a debounced key from the keyboard.
+                      00376 ;;; Keep reading keyboard until the value has not changed 
+                      00377 ;;; DEBOUNCE_COUNT times.  Wait an interval of DEBOUNCE_TIME
+                      00378 ;;; between read attempts
+                      00379 ;;;;;;;;;;
+                      00380 
+00AC                  00381 key_get:
+00AC   0806           00382                 movfw   KEYPAD
+00AD   0093           00383                 movwf   key_val
+00AE                  00384 debounce:
+00AE   3005           00385                 movlw   DEBOUNCE_COUNT  ; setup debounce counter
+00AF   0091           00386                 movwf   count
+00B0                  00387 check_key:
+00B0   300A           00388                 movlw   DEBOUNCE_TIME   ; wait to let keyboard settle
+00B1   20D7           00389                 call    wait
+00B2   0806           00390                 movfw   KEYPAD
+00B3   0293           00391                 subwf   key_val,F       ; see if matched last
+00B4   1903           00392                 btfsc   STATUS,Z        ; if Z, the values matched
+00B5   28B8           00393                 goto    matched
+00B6   0093           00394                 movwf   key_val         ; no match, start debounce cycle again
+00B7   28AE           00395                 goto    debounce
+00B8                  00396 matched:
+00B8   0093           00397                 movwf   key_val         ; save in case we have to do again
+00B9   0B91           00398                 decfsz  count,F         ; see how many times left to go
+00BA   28B0           00399                 goto    check_key       ; more matches to do
+                      00400 
+00BB   0008           00401                 return                  ; got DEBOUNCE_COUNT matches - all done
+                      00402 
+                      00403 ; End of 'key_get'
+                      00404 
+                      00405 
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE  9
+
+
+LOC  OBJECT CODE     LINE SOURCE TEXT
+  VALUE
+
+                      00406 ;;;;;;;;;;
+                      00407 ;;; Translate the current keystroke into an equivalent binary value.
+                      00408 ;;;;;;;;;;
+                      00409 
+00BC                  00410 key_xlate:
+                      00411                 ; translate the hardware bit pattern indicating
+                      00412                 ; which row was selected into an equivalent binary
+                      00413                 ; row number.  This will be used to index into
+                      00414                 ; the translation table for the current column to
+                      00415                 ; get the final binary value for that key.
+                      00416 
+00BC   0913           00417                 comf    key_val,W       ; complement so only bit on corresponds
+00BD   390F           00418                 andlw   0fh             ; to row selected - mask unused off
+00BE   2083           00419                 call    bit2row         ; translate it into a row number
+00BF   0093           00420                 movwf   key_val         ; save for use below
+                      00421 
+                      00422                 ; translate key value into equivalent binary value
+                      00423                 ; using the appropriate translation table for the
+                      00424                 ; current column
+                      00425 
+00C0   0812           00426                 movfw   current_col     ; get current column
+00C1   3EFF           00427                 addlw   -1              ; convert into an 0-relative offset
+00C2   0782           00428                 addwf   PCL,F           ; dispatch into the following jump table
+00C3   28C7           00429                 goto    col1_xlate
+00C4   28CB           00430                 goto    col2_xlate
+00C5   28CF           00431                 goto    col3_xlate
+00C6   28D3           00432                 goto    col4_xlate
+                      00433 
+00C7                  00434 col1_xlate:
+00C7   0813           00435                 movfw   key_val
+00C8   206F           00436                 call    col1_keys
+00C9   0093           00437                 movwf   key_val
+00CA   0008           00438                 return
+                      00439 
+00CB                  00440 col2_xlate:
+00CB   0813           00441                 movfw   key_val
+00CC   2074           00442                 call    col2_keys
+00CD   0093           00443                 movwf   key_val
+00CE   0008           00444                 return
+                      00445 
+00CF                  00446 col3_xlate:
+00CF   0813           00447                 movfw   key_val
+00D0   2079           00448                 call    col3_keys
+00D1   0093           00449                 movwf   key_val
+00D2   0008           00450                 return
+                      00451 
+00D3                  00452 col4_xlate:
+00D3   0813           00453                 movfw   key_val
+00D4   207E           00454                 call    col4_keys
+00D5   0093           00455                 movwf   key_val
+00D6   0008           00456                 return
+                      00457 
+                      00458 
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE 10
+
+
+LOC  OBJECT CODE     LINE SOURCE TEXT
+  VALUE
+
+                      00459 ;;; End of 'key_xlate'
+                      00460 
+                      00461 
+                      00462 ;;;;;;;;;;
+                      00463 ;;; Generic wait routine.
+                      00464 ;;; Expects wait count to be passed in W.
+                      00465 ;;; Total wait time is thus W * TMR0 interrupt rate
+                      00466 ;;;;;;;;;;
+                      00467 
+00D7                  00468 wait:
+00D7   0094           00469                 movwf   wait_count
+00D8                  00470 waiting:
+00D8   0814           00471                 movfw   wait_count      ; wait until we countdown to 0
+00D9   1D03           00472                 btfss   STATUS,Z
+00DA   28D8           00473                 goto    waiting
+00DB   0008           00474                 return
+                      00475 
+                      00476 ;;; End Of 'wait'
+                      00477 
+                      00478 
+                      00479 ;;;;;;;;;;
+                      00480 ;;; Initialize hardware and software at startup as needed.
+                      00481 ;;; Returns with register bank 0 selected.
+                      00482 ;;;;;;;;;;
+                      00483 
+00DC                  00484 init:
+00DC   018B           00485                 clrf    INTCON          ; all interrupts off, flags cleared
+                      00486 
+                      00487                 ; determine whether we want serial or parallel output
+                      00488                 ; and set flag accordingly for use later in the output routine
+                      00489 
+00DD   0190           00490                 clrf    par_out         ; assume serial
+00DE   1A05           00491                 btfsc   OUTPUT,PAR_SEL  ; if high - parallel out
+00DF   0990           00492                 comf    par_out,F       ; we want parallel output
+                      00493                 
+                      00494                 ; Setup control registers
+                      00495 
+00E0   1683           00496                 bsf     STATUS,RP0      ; select register bank 1  
+                      00497  
+                      00498                 ; setup output port with all bits output enabled
+                      00499 
+00E1   30E0           00500                 movlw   b'11100000'     ; set OUTPUT 0:4 as outputs
+00E2   0085           00501                 movwf   TRISOUT         ; (to output binary value of keypress)
+                      00502 
+                      00503                 ; Setup control registers
+                      00504 
+00E3   1683           00505                 bsf     STATUS,RP0      ; select register bank 1  
+                      00506  
+                      00507                 ; setup keypad interface port
+                      00508 
+00E4   300F           00509                 movlw   b'00001111'     ; KEYPAD high nibble set for output
+                      00510                                         ; (for column control)
+00E5   0086           00511                 movwf   TRISKEY         ; KEYPAD low nibble set for input
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE 11
+
+
+LOC  OBJECT CODE     LINE SOURCE TEXT
+  VALUE
+
+                      00512                                         ; (to read rows)
+                      00513 
+                      00514                 ; setup TMR0 interrupt interval
+                      00515 
+00E6   0181           00516                 clrf    OPTION_REG      ; TMR0: assign int. clock & prescaler
+                      00517                                         ; PORTB: weak pullups
+00E7   3004           00518                 movlw   TMR0_PRE        ; Set TMR0 prescale factor
+00E8   0481           00519                 iorwf   OPTION_REG,F
+                      00520 
+00E9   1283           00521                 bcf     STATUS,RP0      ; select register bank 0
+                      00522 
+                      00523                 ; Prime the TMR0 countup counter
+                      00524 
+00EA   30FB           00525                 movlw   TMR0_PRIME      ; prime the counter
+00EB   0081           00526                 movwf   TMR0
+                      00527 
+                      00528                 ; Intialize ports
+                      00529 
+00EC   0185           00530                 clrf    OUTPUT
+00ED   0186           00531                 clrf    KEYPAD
+                      00532 
+                      00533                 ; Initialize variables
+                      00534 
+00EE   0192           00535                 clrf    current_col
+00EF   0193           00536                 clrf    key_val
+00F0   0191           00537                 clrf    count
+00F1   0194           00538                 clrf    wait_count
+                      00539 
+                      00540                 ; Setup interrupt handling
+                      00541 
+00F2   168B           00542                 bsf     INTCON,T0IE     ; enable TMR0 interrupt
+00F3   178B           00543                 bsf     INTCON,GIE      ; and turn interrupts back on
+                      00544 
+00F4   0008           00545                 return  
+                      00546 
+                      00547 ;;; End of 'init'
+                      00548 
+                      00549 
+                      00550 ;;;;;;;;;;
+                      00551 ;;; EEPROM Contents
+                      00552 ;;;;;;;;;;
+                      00553         
+2100                  00554                 org     2100h
+                      00555 
+2100                  00556                 DE      ""
+                      00557                 END
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE 12
+
+
+SYMBOL TABLE
+  LABEL                             VALUE 
+
+C                                 00000000
+CLK_TIME                          00000001
+DC                                00000001
+DEBOUNCE_COUNT                    00000005
+DEBOUNCE_TIME                     0000000A
+EEADR                             00000009
+EECON1                            00000088
+EECON2                            00000089
+EEDATA                            00000008
+EEIE                              00000006
+EEIF                              00000004
+F                                 00000001
+FSR                               00000004
+GIE                               00000007
+INCFILES                          ../include
+INDF                              00000000
+INTCON                            0000000B
+INTE                              00000004
+INTEDG                            00000006
+INTF                              00000001
+IRP                               00000007
+KEYPAD                            00000006
+LATCH_TIME                        00000001
+MAX_COL                           00000004
+NOT_PD                            00000003
+NOT_RBPU                          00000007
+NOT_TO                            00000004
+NO_HIT                            0000000F
+OPTION_REG                        00000081
+OUTPUT                            00000005
+PAR_SEL                           00000004
+PCL                               00000002
+PCLATH                            0000000A
+PLATCH                            00000004
+PORTA                             00000005
+PORTB                             00000006
+PS0                               00000000
+PS1                               00000001
+PS2                               00000002
+PSA                               00000003
+RBIE                              00000003
+RBIF                              00000000
+RD                                00000000
+REPEAT_COUNT                      00000003
+REPEAT_DELAY                      00000057
+RP0                               00000005
+RP1                               00000006
+SCLK                              00000001
+SDAT                              00000000
+SLATCH                            00000002
+STATUS                            00000003
+T0CS                              00000005
+T0IE                              00000005
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE 13
+
+
+SYMBOL TABLE
+  LABEL                             VALUE 
+
+T0IF                              00000002
+T0SE                              00000004
+TMR0                              00000001
+TMR0_CNT                          00000005
+TMR0_PRE                          00000004
+TMR0_PRIME                        000000FB
+TRISA                             00000085
+TRISB                             00000086
+TRISKEY                           00000086
+TRISOUT                           00000085
+W                                 00000000
+WR                                00000001
+WREN                              00000002
+WRERR                             00000003
+Z                                 00000002
+_CP_OFF                           00003FFF
+_CP_ON                            0000000F
+_HS_OSC                           00003FFE
+_LP_OSC                           00003FFC
+_PWRTE_OFF                        00003FFF
+_PWRTE_ON                         00003FF7
+_RC_OSC                           00003FFF
+_WDT_OFF                          00003FFB
+_WDT_ON                           00003FFF
+_XT_OSC                           00003FFD
+__16F84A                          00000001
+_fsr                              0000000C
+_pclath                           0000000D
+_status                           0000000E
+_w                                0000000F
+bit2row                           00000083
+check_key                         000000B0
+clock_bit                         0000009E
+col1_keys                         0000006F
+col1_xlate                        000000C7
+col2_keys                         00000074
+col2_xlate                        000000CB
+col3_keys                         00000079
+col3_xlate                        000000CF
+col4_keys                         0000007E
+col4_xlate                        000000D3
+col_select                        00000069
+count                             00000011
+current_col                       00000012
+debounce                          000000AE
+init                              000000DC
+key_get                           000000AC
+key_out                           0000008D
+key_scan                          00000028
+key_val                           00000013
+key_xlate                         000000BC
+main                              00000020
+matched                           000000B8
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE 14
+
+
+SYMBOL TABLE
+  LABEL                             VALUE 
+
+par_out                           00000010
+restore_context                   00000017
+scan                              00000021
+scan_delay                        00000039
+serial_latch                      000000A7
+serial_out                        00000098
+shift_bit                         0000009A
+tmr0_svc                          00000011
+tmr128                            00000006
+tmr16                             00000003
+tmr2                              00000000
+tmr256                            00000007
+tmr32                             00000004
+tmr4                              00000001
+tmr64                             00000005
+tmr8                              00000002
+wait                              000000D7
+wait_count                        00000014
+waiting                           000000D8
+
+
+MEMORY USAGE MAP ('X' = Used,  '-' = Unused)
+
+0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
+0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
+0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
+00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXX-----------
+2000 : XXXX---X-------- ---------------- ---------------- ----------------
+
+All other memory blocks unused.
+
+Program Memory Words Used:   242
+Program Memory Words Free:   782
+
+
+Errors   :     0
+Warnings :     0 reported,     0 suppressed
+Messages :     0 reported,     4 suppressed
+
+
\ No newline at end of file
diff --git a/keypad.png b/keypad.png
new file mode 100644
index 0000000..321b197
--- /dev/null
+++ b/keypad.png
Binary files differ
diff --git a/keypad.ps b/keypad.ps
new file mode 100644
index 0000000..a39c1b1
--- /dev/null
+++ b/keypad.ps
@@ -0,0 +1,2689 @@
+%!PS-Adobe-1.0
+%%Title: EAGLE Drawing C:/USR/HOME/TUNDRA/DEV/PIC/KEYPAD/SCHEMA~1/keypad.sch
+%%Creator: EAGLE
+%%Pages: 1
+%%BoundingBox: 0 0 576 810
+%%EndComments
+
+% Coordinate transfer:
+
+/EU { 254 div 0.072 mul } def
+/inch { 72 mul } def
+
+% Linestyle:
+
+1 setlinecap
+1 setlinejoin
+
+% Drawing functions:
+
+/l {  % draw a line
+   /lw exch def
+   /y2 exch def
+   /x2 exch def
+   /y1 exch def
+   /x1 exch def
+   newpath
+   x1 EU y1 EU moveto
+   x2 EU y2 EU lineto
+   lw EU setlinewidth
+   stroke
+   } def
+
+/h {  % draw a hole
+   /d  exch def
+   /y  exch def
+   /x  exch def
+   d 0 gt {
+     newpath
+     x EU y EU d 2 div EU 0 360 arc
+     currentgray dup
+     1 exch sub setgray
+     fill
+     setgray
+     } if
+   } def
+
+/b {  % draw a bar
+   /y2 exch def
+   /x2 exch def
+   /y1 exch def
+   /x1 exch def
+   newpath
+   x1 EU y1 EU moveto
+   x2 EU y1 EU lineto
+   x2 EU y2 EU lineto
+   x1 EU y2 EU lineto
+   closepath
+   fill
+   } def
+
+/c {  % draw a circle
+   /lw exch def
+   /rd exch def
+   /y  exch def
+   /x  exch def
+   newpath
+   lw EU setlinewidth
+   x EU y EU rd EU 0 360 arc
+   stroke
+   } def
+
+/a {  % draw an arc
+   /lc exch def
+   /ae exch def
+   /as exch def
+   /lw exch def
+   /rd exch def
+   /y  exch def
+   /x  exch def
+   lw rd 2 mul gt {
+     /rd rd lw 2 div add 2 div def
+     /lw rd 2 mul def
+     } if
+   currentlinecap currentlinejoin
+   lc setlinecap 0 setlinejoin
+   newpath
+   lw EU setlinewidth
+   x EU y EU rd EU as ae arc
+   stroke
+   setlinejoin setlinecap
+   } def
+
+/s {  % draw a square
+   /d exch def
+   /y exch def
+   /x exch def
+   newpath
+   x d 2 div sub EU y d 2 div sub EU moveto
+   d EU 0 EU rlineto
+   0 EU d EU rlineto
+   d neg EU 0 EU rlineto
+   closepath
+   fill
+   } def
+
+/p {  % draw a pie
+   /d exch def
+   /y exch def
+   /x exch def
+   newpath
+   x EU y EU d 2 div EU 0 360 arc
+   fill
+   } def
+
+/edge { 0.20710678119 mul } def
+
+/o {  % draw an octagon
+   /dy exch def
+   /dx exch def
+   /y  exch def
+   /x  exch def
+   newpath
+   dx dy ge {
+      x dx 2 div sub EU                    y dy edge  add EU moveto
+      x dx dy sub 2 div sub dy edge sub EU y dy 2 div add EU lineto
+      x dx dy sub 2 div add dy edge add EU y dy 2 div add EU lineto
+      x dx 2 div add EU                    y dy edge  add EU lineto
+      x dx 2 div add EU                    y dy edge  sub EU lineto
+      x dx dy sub 2 div add dy edge add EU y dy 2 div sub EU lineto
+      x dx dy sub 2 div sub dy edge sub EU y dy 2 div sub EU lineto
+      x dx 2 div sub EU                    y dy edge  sub EU lineto
+      } if
+   dx dy lt {
+      x dx edge  add EU y dy 2 div add EU                    moveto
+      x dx 2 div add EU y dy dx sub 2 div add dx edge add EU lineto
+      x dx 2 div add EU y dy dx sub 2 div sub dx edge sub EU lineto
+      x dx edge  add EU y dy 2 div sub EU                    lineto
+      x dx edge  sub EU y dy 2 div sub EU                    lineto
+      x dx 2 div sub EU y dy dx sub 2 div sub dx edge sub EU lineto
+      x dx 2 div sub EU y dy dx sub 2 div add dx edge add EU lineto
+      x dx edge  sub EU y dy 2 div add EU                    lineto
+      } if
+   closepath
+   fill
+   } def
+
+% the real drawing size:
+
+/MinDrawX      0 EU def
+/MinDrawY      0 EU def
+/MaxDrawX 1885564 EU def
+/MaxDrawY 1967716 EU def
+
+% the usable page size:
+
+/LeftMargin 0.25 inch def  % change these if drawing gets clipped!
+/BotMargin  0.25 inch def
+/PageWidth   7.7500 inch def
+/PageHeight 11.0000 inch def
+
+% are we going to rotate?:
+
+/RotateDrawing 0 0 ne def
+
+% Media size functions:
+
+/AbortMessage {  % Show a message in a box and stop printing
+   /h 100 def
+   /Courier findfont 12 scalefont setfont
+   mediawidth pagemargin sub h 1 setpage
+   newpath
+   0 0 moveto
+   0 h rlineto
+   mediawidth pagemargin sub 0 rlineto
+   0 h neg rlineto
+   closepath
+   5 setlinewidth
+   stroke
+   newpath 50 60 moveto (ERROR: Jobsize exceeds physical printing area!) show
+   newpath 50 40 moveto (       Job has been aborted!) show
+   showpage
+   stop
+   } def
+
+/SelectPage {  % Select the page identified by Row and Column
+   /Column exch def
+   /Row    exch def
+
+   % the actually exposed area (if the machine knows these parameters!):
+
+   /DrawX MaxDrawX MinDrawX sub def
+   /DrawY MaxDrawY MinDrawY sub def
+   statusdict /setpage known
+   statusdict /mediawidth known and
+   statusdict /medialength known and
+   statusdict /pagemargin known and {
+      % this is for machines that can tell the media size:
+      statusdict begin
+         /MediaW mediawidth pagemargin sub def
+         DrawX DrawY ge {
+            DrawX MediaW le DrawY medialength le and {
+               MediaW DrawY 1 setpage
+               MediaW DrawX sub 2 div 0 translate
+               }{
+            DrawY MediaW le DrawX medialength le and {
+               MediaW DrawX 0 setpage
+               0 MediaW DrawY sub 2 div translate
+               }{
+               AbortMessage
+               } ifelse
+               } ifelse
+            }{
+            DrawY MediaW le DrawX medialength le and {
+               MediaW DrawX 0 setpage
+               0 MediaW DrawY sub 2 div translate
+               }{
+            DrawX MediaW le DrawY medialength le and {
+               MediaW DrawY 1 setpage
+               MediaW DrawX sub 2 div 0 translate
+               }{
+               AbortMessage
+               } ifelse
+               } ifelse
+            } ifelse
+         end
+      }{
+      % this is for machines that can NOT tell the media size:
+      % (Ghostscript doesn't like this!)
+      /Product product length string def
+      /i 0 def
+      product { dup 97 lt { 32 add } if Product exch i exch put /i i 1 add def } forall 
+      Product (ghostscript) search dup /IsGhostscript exch def
+      { pop pop } if
+      pop
+      IsGhostscript not {
+         statusdict /setpage known {
+            statusdict begin
+               RotateDrawing {
+                  LeftMargin PageHeight add BotMargin DrawY add
+                  }{
+                  BotMargin DrawY add LeftMargin DrawX add 
+                  } ifelse
+               0 setpage
+               end
+            } if
+         } if
+      % set clipping boundary:
+      newpath
+      LeftMargin BotMargin moveto
+      0 PageHeight rlineto
+      PageWidth  0 rlineto
+      0 PageHeight neg rlineto
+      closepath
+      clip
+      % set the origin:
+      LeftMargin BotMargin translate
+      RotateDrawing {
+         0 PageHeight translate
+         -90 rotate
+         PageHeight Column mul neg PageWidth Row mul neg translate
+         }{
+         PageWidth Column mul neg PageHeight Row mul neg translate
+         } ifelse
+      } ifelse
+   % move the lower left corner of the drawing to the origin:
+   MinDrawX neg MinDrawY neg translate
+   
+   % Linestyle:
+   
+   1 setlinecap
+   1 setlinejoin
+   
+   } def
+
+% TheDrawing
+
+gsave 0 0 SelectPage
+631782 1031470 631782 1063569 2789 l
+621083 1063569 642482 1063569 2789 l
+653182 1052869 653182 1036819 2789 l
+653182 1036819 658531 1031470 2789 l
+658531 1031470 674581 1031470 2789 l
+674581 1031470 674581 1052869 2789 l
+685281 1031470 685281 1052869 2789 l
+685281 1052869 701330 1052869 2789 l
+701330 1052869 706680 1047519 2789 l
+706680 1047519 706680 1031470 2789 l
+738779 1063569 738779 1031470 2789 l
+738779 1031470 722729 1031470 2789 l
+722729 1031470 717380 1036819 2789 l
+717380 1036819 717380 1047519 2789 l
+717380 1047519 722729 1052869 2789 l
+722729 1052869 738779 1052869 2789 l
+749479 1031470 749479 1052869 2789 l
+749479 1042169 760178 1052869 2789 l
+760178 1052869 765528 1052869 2789 l
+786927 1052869 797627 1052869 2789 l
+797627 1052869 802977 1047519 2789 l
+802977 1047519 802977 1031470 2789 l
+802977 1031470 786927 1031470 2789 l
+786927 1031470 781578 1036819 2789 l
+781578 1036819 786927 1042169 2789 l
+786927 1042169 802977 1042169 2789 l
+813677 1063569 813677 1031470 2789 l
+813677 1031470 824377 1042169 2789 l
+824377 1042169 835077 1031470 2789 l
+835077 1031470 835077 1063569 2789 l
+851126 1052869 861826 1052869 2789 l
+861826 1052869 867176 1047519 2789 l
+867176 1047519 867176 1031470 2789 l
+867176 1031470 851126 1031470 2789 l
+851126 1031470 845777 1036819 2789 l
+845777 1036819 851126 1042169 2789 l
+851126 1042169 867176 1042169 2789 l
+877876 1031470 877876 1052869 2789 l
+877876 1042169 888575 1052869 2789 l
+888575 1052869 893925 1052869 2789 l
+926024 1031470 915324 1031470 2789 l
+915324 1031470 909975 1036819 2789 l
+909975 1036819 909975 1047519 2789 l
+909975 1047519 915324 1052869 2789 l
+915324 1052869 926024 1052869 2789 l
+926024 1052869 931374 1047519 2789 l
+931374 1047519 931374 1042169 2789 l
+931374 1042169 909975 1042169 2789 l
+974173 1031470 974173 1063569 2789 l
+974173 1063569 990222 1063569 2789 l
+990222 1063569 995572 1058219 2789 l
+995572 1058219 995572 1047519 2789 l
+995572 1047519 990222 1042169 2789 l
+990222 1042169 974173 1042169 2789 l
+1006272 1031470 1016971 1031470 2789 l
+1011621 1031470 1011621 1063569 2789 l
+1006272 1063569 1016971 1063569 2789 l
+1054420 1058219 1049070 1063569 2789 l
+1049070 1063569 1038370 1063569 2789 l
+1038370 1063569 1033021 1058219 2789 l
+1033021 1058219 1033021 1036819 2789 l
+1033021 1036819 1038370 1031470 2789 l
+1038370 1031470 1049070 1031470 2789 l
+1049070 1031470 1054420 1036819 2789 l
+1097220 1063569 1097220 1031470 2789 l
+1097220 1042169 1118619 1063569 2789 l
+1102569 1047519 1118619 1031470 2789 l
+1145368 1031470 1134668 1031470 2789 l
+1134668 1031470 1129319 1036819 2789 l
+1129319 1036819 1129319 1047519 2789 l
+1129319 1047519 1134668 1052869 2789 l
+1134668 1052869 1145368 1052869 2789 l
+1145368 1052869 1150718 1047519 2789 l
+1150718 1047519 1150718 1042169 2789 l
+1150718 1042169 1129319 1042169 2789 l
+1161418 1052869 1161418 1036819 2789 l
+1161418 1036819 1166767 1031470 2789 l
+1166767 1031470 1182817 1031470 2789 l
+1182817 1052869 1182817 1026121 2789 l
+1182817 1026121 1177467 1020771 2789 l
+1177467 1020771 1172117 1020771 2789 l
+1193517 1020771 1193517 1052869 2789 l
+1193517 1052869 1209566 1052869 2789 l
+1209566 1052869 1214916 1047519 2789 l
+1214916 1047519 1214916 1036819 2789 l
+1214916 1036819 1209566 1031470 2789 l
+1209566 1031470 1193517 1031470 2789 l
+1230965 1052869 1241665 1052869 2789 l
+1241665 1052869 1247015 1047519 2789 l
+1247015 1047519 1247015 1031470 2789 l
+1247015 1031470 1230965 1031470 2789 l
+1230965 1031470 1225616 1036819 2789 l
+1225616 1036819 1230965 1042169 2789 l
+1230965 1042169 1247015 1042169 2789 l
+1279114 1063569 1279114 1031470 2789 l
+1279114 1031470 1263064 1031470 2789 l
+1263064 1031470 1257715 1036819 2789 l
+1257715 1036819 1257715 1047519 2789 l
+1257715 1047519 1263064 1052869 2789 l
+1263064 1052869 1279114 1052869 2789 l
+1321913 1063569 1321913 1031470 2789 l
+1321913 1031470 1337962 1031470 2789 l
+1337962 1031470 1343312 1036819 2789 l
+1343312 1036819 1343312 1058219 2789 l
+1343312 1058219 1337962 1063569 2789 l
+1337962 1063569 1321913 1063569 2789 l
+1370062 1031470 1359362 1031470 2789 l
+1359362 1031470 1354012 1036819 2789 l
+1354012 1036819 1354012 1047519 2789 l
+1354012 1047519 1359362 1052869 2789 l
+1359362 1052869 1370062 1052869 2789 l
+1370062 1052869 1375412 1047519 2789 l
+1375412 1047519 1375412 1042169 2789 l
+1375412 1042169 1354012 1042169 2789 l
+1407511 1052869 1391461 1052869 2789 l
+1391461 1052869 1386112 1047519 2789 l
+1386112 1047519 1386112 1036819 2789 l
+1386112 1036819 1391461 1031470 2789 l
+1391461 1031470 1407511 1031470 2789 l
+1423560 1031470 1434260 1031470 2789 l
+1434260 1031470 1439610 1036819 2789 l
+1439610 1036819 1439610 1047519 2789 l
+1439610 1047519 1434260 1052869 2789 l
+1434260 1052869 1423560 1052869 2789 l
+1423560 1052869 1418211 1047519 2789 l
+1418211 1047519 1418211 1036819 2789 l
+1418211 1036819 1423560 1031470 2789 l
+1471709 1063569 1471709 1031470 2789 l
+1471709 1031470 1455659 1031470 2789 l
+1455659 1031470 1450310 1036819 2789 l
+1450310 1036819 1450310 1047519 2789 l
+1450310 1047519 1455659 1052869 2789 l
+1455659 1052869 1471709 1052869 2789 l
+1498458 1031470 1487758 1031470 2789 l
+1487758 1031470 1482409 1036819 2789 l
+1482409 1036819 1482409 1047519 2789 l
+1482409 1047519 1487758 1052869 2789 l
+1487758 1052869 1498458 1052869 2789 l
+1498458 1052869 1503808 1047519 2789 l
+1503808 1047519 1503808 1042169 2789 l
+1503808 1042169 1482409 1042169 2789 l
+1514508 1031470 1514508 1052869 2789 l
+1514508 1042169 1525207 1052869 2789 l
+1525207 1052869 1530557 1052869 2789 l
+1485880 1628996 1485880 1639696 930 l
+1485880 1639696 1491229 1639696 930 l
+1491229 1639696 1493013 1637912 930 l
+1493013 1637912 1493013 1634346 930 l
+1493013 1634346 1491229 1632562 930 l
+1491229 1632562 1485880 1632562 930 l
+1489446 1632562 1493013 1628996 930 l
+1498362 1628996 1501929 1628996 930 l
+1501929 1628996 1503712 1630779 930 l
+1503712 1630779 1503712 1634346 930 l
+1503712 1634346 1501929 1636129 930 l
+1501929 1636129 1498362 1636129 930 l
+1498362 1636129 1496579 1634346 930 l
+1496579 1634346 1496579 1630779 930 l
+1496579 1630779 1498362 1628996 930 l
+1507279 1636129 1507279 1630779 930 l
+1507279 1630779 1509061 1628996 930 l
+1509061 1628996 1510844 1630779 930 l
+1510844 1630779 1512628 1628996 930 l
+1512628 1628996 1514411 1630779 930 l
+1514411 1630779 1514411 1636129 930 l
+1528677 1637912 1530459 1639696 930 l
+1530459 1639696 1530459 1628996 930 l
+1528677 1628996 1532243 1628996 930 l
+1485880 1652237 1485880 1662937 930 l
+1485880 1662937 1491229 1662937 930 l
+1491229 1662937 1493013 1661153 930 l
+1493013 1661153 1493013 1657587 930 l
+1493013 1657587 1491229 1655803 930 l
+1491229 1655803 1485880 1655803 930 l
+1489446 1655803 1493013 1652237 930 l
+1498362 1652237 1501929 1652237 930 l
+1501929 1652237 1503712 1654020 930 l
+1503712 1654020 1503712 1657587 930 l
+1503712 1657587 1501929 1659370 930 l
+1501929 1659370 1498362 1659370 930 l
+1498362 1659370 1496579 1657587 930 l
+1496579 1657587 1496579 1654020 930 l
+1496579 1654020 1498362 1652237 930 l
+1507279 1659370 1507279 1654020 930 l
+1507279 1654020 1509061 1652237 930 l
+1509061 1652237 1510844 1654020 930 l
+1510844 1654020 1512628 1652237 930 l
+1512628 1652237 1514411 1654020 930 l
+1514411 1654020 1514411 1659370 930 l
+1535809 1652237 1528677 1652237 930 l
+1528677 1652237 1535809 1659370 930 l
+1535809 1659370 1535809 1661153 930 l
+1535809 1661153 1534026 1662937 930 l
+1534026 1662937 1530459 1662937 930 l
+1530459 1662937 1528677 1661153 930 l
+1485880 1675478 1485880 1686178 930 l
+1485880 1686178 1491229 1686178 930 l
+1491229 1686178 1493013 1684394 930 l
+1493013 1684394 1493013 1680828 930 l
+1493013 1680828 1491229 1679044 930 l
+1491229 1679044 1485880 1679044 930 l
+1489446 1679044 1493013 1675478 930 l
+1498362 1675478 1501929 1675478 930 l
+1501929 1675478 1503712 1677261 930 l
+1503712 1677261 1503712 1680828 930 l
+1503712 1680828 1501929 1682611 930 l
+1501929 1682611 1498362 1682611 930 l
+1498362 1682611 1496579 1680828 930 l
+1496579 1680828 1496579 1677261 930 l
+1496579 1677261 1498362 1675478 930 l
+1507279 1682611 1507279 1677261 930 l
+1507279 1677261 1509061 1675478 930 l
+1509061 1675478 1510844 1677261 930 l
+1510844 1677261 1512628 1675478 930 l
+1512628 1675478 1514411 1677261 930 l
+1514411 1677261 1514411 1682611 930 l
+1528677 1684394 1530459 1686178 930 l
+1530459 1686178 1534026 1686178 930 l
+1534026 1686178 1535809 1684394 930 l
+1535809 1684394 1535809 1682611 930 l
+1535809 1682611 1534026 1680828 930 l
+1534026 1680828 1532243 1680828 930 l
+1534026 1680828 1535809 1679044 930 l
+1535809 1679044 1535809 1677261 930 l
+1535809 1677261 1534026 1675478 930 l
+1534026 1675478 1530459 1675478 930 l
+1530459 1675478 1528677 1677261 930 l
+1485880 1698719 1485880 1709419 930 l
+1485880 1709419 1491229 1709419 930 l
+1491229 1709419 1493013 1707635 930 l
+1493013 1707635 1493013 1704069 930 l
+1493013 1704069 1491229 1702285 930 l
+1491229 1702285 1485880 1702285 930 l
+1489446 1702285 1493013 1698719 930 l
+1498362 1698719 1501929 1698719 930 l
+1501929 1698719 1503712 1700502 930 l
+1503712 1700502 1503712 1704069 930 l
+1503712 1704069 1501929 1705852 930 l
+1501929 1705852 1498362 1705852 930 l
+1498362 1705852 1496579 1704069 930 l
+1496579 1704069 1496579 1700502 930 l
+1496579 1700502 1498362 1698719 930 l
+1507279 1705852 1507279 1700502 930 l
+1507279 1700502 1509061 1698719 930 l
+1509061 1698719 1510844 1700502 930 l
+1510844 1700502 1512628 1698719 930 l
+1512628 1698719 1514411 1700502 930 l
+1514411 1700502 1514411 1705852 930 l
+1534026 1698719 1534026 1709419 930 l
+1534026 1709419 1528677 1704069 930 l
+1528677 1704069 1535809 1704069 930 l
+1493013 1730876 1491229 1732660 930 l
+1491229 1732660 1487663 1732660 930 l
+1487663 1732660 1485880 1730876 930 l
+1485880 1730876 1485880 1723743 930 l
+1485880 1723743 1487663 1721960 930 l
+1487663 1721960 1491229 1721960 930 l
+1491229 1721960 1493013 1723743 930 l
+1498362 1721960 1501929 1721960 930 l
+1501929 1721960 1503712 1723743 930 l
+1503712 1723743 1503712 1727310 930 l
+1503712 1727310 1501929 1729093 930 l
+1501929 1729093 1498362 1729093 930 l
+1498362 1729093 1496579 1727310 930 l
+1496579 1727310 1496579 1723743 930 l
+1496579 1723743 1498362 1721960 930 l
+1507279 1732660 1509061 1732660 930 l
+1509061 1732660 1509061 1721960 930 l
+1507279 1721960 1510844 1721960 930 l
+1526893 1730876 1528676 1732660 930 l
+1528676 1732660 1528676 1721960 930 l
+1526893 1721960 1530459 1721960 930 l
+1493013 1754117 1491229 1755901 930 l
+1491229 1755901 1487663 1755901 930 l
+1487663 1755901 1485880 1754117 930 l
+1485880 1754117 1485880 1746984 930 l
+1485880 1746984 1487663 1745201 930 l
+1487663 1745201 1491229 1745201 930 l
+1491229 1745201 1493013 1746984 930 l
+1498362 1745201 1501929 1745201 930 l
+1501929 1745201 1503712 1746984 930 l
+1503712 1746984 1503712 1750551 930 l
+1503712 1750551 1501929 1752334 930 l
+1501929 1752334 1498362 1752334 930 l
+1498362 1752334 1496579 1750551 930 l
+1496579 1750551 1496579 1746984 930 l
+1496579 1746984 1498362 1745201 930 l
+1507279 1755901 1509061 1755901 930 l
+1509061 1755901 1509061 1745201 930 l
+1507279 1745201 1510844 1745201 930 l
+1534026 1745201 1526893 1745201 930 l
+1526893 1745201 1534026 1752334 930 l
+1534026 1752334 1534026 1754117 930 l
+1534026 1754117 1532243 1755901 930 l
+1532243 1755901 1528676 1755901 930 l
+1528676 1755901 1526893 1754117 930 l
+1493013 1777358 1491229 1779142 930 l
+1491229 1779142 1487663 1779142 930 l
+1487663 1779142 1485880 1777358 930 l
+1485880 1777358 1485880 1770225 930 l
+1485880 1770225 1487663 1768442 930 l
+1487663 1768442 1491229 1768442 930 l
+1491229 1768442 1493013 1770225 930 l
+1498362 1768442 1501929 1768442 930 l
+1501929 1768442 1503712 1770225 930 l
+1503712 1770225 1503712 1773792 930 l
+1503712 1773792 1501929 1775575 930 l
+1501929 1775575 1498362 1775575 930 l
+1498362 1775575 1496579 1773792 930 l
+1496579 1773792 1496579 1770225 930 l
+1496579 1770225 1498362 1768442 930 l
+1507279 1779142 1509061 1779142 930 l
+1509061 1779142 1509061 1768442 930 l
+1507279 1768442 1510844 1768442 930 l
+1526893 1777358 1528676 1779142 930 l
+1528676 1779142 1532243 1779142 930 l
+1532243 1779142 1534026 1777358 930 l
+1534026 1777358 1534026 1775575 930 l
+1534026 1775575 1532243 1773792 930 l
+1532243 1773792 1530459 1773792 930 l
+1532243 1773792 1534026 1772008 930 l
+1534026 1772008 1534026 1770225 930 l
+1534026 1770225 1532243 1768442 930 l
+1532243 1768442 1528676 1768442 930 l
+1528676 1768442 1526893 1770225 930 l
+1493013 1800599 1491229 1802383 930 l
+1491229 1802383 1487663 1802383 930 l
+1487663 1802383 1485880 1800599 930 l
+1485880 1800599 1485880 1793466 930 l
+1485880 1793466 1487663 1791683 930 l
+1487663 1791683 1491229 1791683 930 l
+1491229 1791683 1493013 1793466 930 l
+1498362 1791683 1501929 1791683 930 l
+1501929 1791683 1503712 1793466 930 l
+1503712 1793466 1503712 1797033 930 l
+1503712 1797033 1501929 1798816 930 l
+1501929 1798816 1498362 1798816 930 l
+1498362 1798816 1496579 1797033 930 l
+1496579 1797033 1496579 1793466 930 l
+1496579 1793466 1498362 1791683 930 l
+1507279 1802383 1509061 1802383 930 l
+1509061 1802383 1509061 1791683 930 l
+1507279 1791683 1510844 1791683 930 l
+1532243 1791683 1532243 1802383 930 l
+1532243 1802383 1526893 1797033 930 l
+1526893 1797033 1534026 1797033 930 l
+1493013 1451984 1491229 1453768 930 l
+1491229 1453768 1487663 1453768 930 l
+1487663 1453768 1485880 1451984 930 l
+1485880 1451984 1485880 1450201 930 l
+1485880 1450201 1487663 1448418 930 l
+1487663 1448418 1491229 1448418 930 l
+1491229 1448418 1493013 1446634 930 l
+1493013 1446634 1493013 1444851 930 l
+1493013 1444851 1491229 1443068 930 l
+1491229 1443068 1487663 1443068 930 l
+1487663 1443068 1485880 1444851 930 l
+1501929 1443068 1498362 1443068 930 l
+1498362 1443068 1496579 1444851 930 l
+1496579 1444851 1496579 1448418 930 l
+1496579 1448418 1498362 1450201 930 l
+1498362 1450201 1501929 1450201 930 l
+1501929 1450201 1503712 1448418 930 l
+1503712 1448418 1503712 1446634 930 l
+1503712 1446634 1496579 1446634 930 l
+1507279 1443068 1507279 1450201 930 l
+1507279 1446634 1510844 1450201 930 l
+1510844 1450201 1512628 1450201 930 l
+1517978 1450201 1519760 1450201 930 l
+1519760 1450201 1519760 1443068 930 l
+1517978 1443068 1521543 1443068 930 l
+1519760 1455551 1519760 1453768 930 l
+1528676 1450201 1532243 1450201 930 l
+1532243 1450201 1534026 1448418 930 l
+1534026 1448418 1534026 1443068 930 l
+1534026 1443068 1528676 1443068 930 l
+1528676 1443068 1526893 1444851 930 l
+1526893 1444851 1528676 1446634 930 l
+1528676 1446634 1534026 1446634 930 l
+1537593 1453768 1539375 1453768 930 l
+1539375 1453768 1539375 1443068 930 l
+1537593 1443068 1541158 1443068 930 l
+1557207 1453768 1557207 1443068 930 l
+1557207 1443068 1562556 1443068 930 l
+1562556 1443068 1564340 1444851 930 l
+1564340 1444851 1564340 1451984 930 l
+1564340 1451984 1562556 1453768 930 l
+1562556 1453768 1557207 1453768 930 l
+1569689 1450201 1573256 1450201 930 l
+1573256 1450201 1575039 1448418 930 l
+1575039 1448418 1575039 1443068 930 l
+1575039 1443068 1569689 1443068 930 l
+1569689 1443068 1567906 1444851 930 l
+1567906 1444851 1569689 1446634 930 l
+1569689 1446634 1575039 1446634 930 l
+1580388 1451984 1580388 1444851 930 l
+1580388 1444851 1582171 1443068 930 l
+1578606 1450201 1582171 1450201 930 l
+1589304 1450201 1592870 1450201 930 l
+1592870 1450201 1594654 1448418 930 l
+1594654 1448418 1594654 1443068 930 l
+1594654 1443068 1589304 1443068 930 l
+1589304 1443068 1587521 1444851 930 l
+1587521 1444851 1589304 1446634 930 l
+1589304 1446634 1594654 1446634 930 l
+1608920 1443068 1616052 1453768 930 l
+1630318 1443068 1630318 1453768 930 l
+1630318 1453768 1635667 1453768 930 l
+1635667 1453768 1637450 1451984 930 l
+1637450 1451984 1637450 1448418 930 l
+1637450 1448418 1635667 1446634 930 l
+1635667 1446634 1630318 1446634 930 l
+1642799 1450201 1646366 1450201 930 l
+1646366 1450201 1648149 1448418 930 l
+1648149 1448418 1648149 1443068 930 l
+1648149 1443068 1642799 1443068 930 l
+1642799 1443068 1641017 1444851 930 l
+1641017 1444851 1642799 1446634 930 l
+1642799 1446634 1648149 1446634 930 l
+1651716 1443068 1651716 1450201 930 l
+1651716 1446634 1655282 1450201 930 l
+1655282 1450201 1657065 1450201 930 l
+1664197 1450201 1667764 1450201 930 l
+1667764 1450201 1669547 1448418 930 l
+1669547 1448418 1669547 1443068 930 l
+1669547 1443068 1664197 1443068 930 l
+1664197 1443068 1662415 1444851 930 l
+1662415 1444851 1664197 1446634 930 l
+1664197 1446634 1669547 1446634 930 l
+1673114 1453768 1674897 1453768 930 l
+1674897 1453768 1674897 1443068 930 l
+1673114 1443068 1676680 1443068 930 l
+1682030 1453768 1683812 1453768 930 l
+1683812 1453768 1683812 1443068 930 l
+1682030 1443068 1685596 1443068 930 l
+1696295 1443068 1692728 1443068 930 l
+1692728 1443068 1690946 1444851 930 l
+1690946 1444851 1690946 1448418 930 l
+1690946 1448418 1692728 1450201 930 l
+1692728 1450201 1696295 1450201 930 l
+1696295 1450201 1698078 1448418 930 l
+1698078 1448418 1698078 1446634 930 l
+1698078 1446634 1690946 1446634 930 l
+1701645 1453768 1703427 1453768 930 l
+1703427 1453768 1703427 1443068 930 l
+1701645 1443068 1705210 1443068 930 l
+1721260 1443068 1721260 1453768 930 l
+1721260 1453768 1726609 1453768 930 l
+1726609 1453768 1728392 1451984 930 l
+1728392 1451984 1728392 1450201 930 l
+1728392 1450201 1726609 1448418 930 l
+1726609 1448418 1728392 1446634 930 l
+1728392 1446634 1728392 1444851 930 l
+1728392 1444851 1726609 1443068 930 l
+1726609 1443068 1721260 1443068 930 l
+1721260 1448418 1726609 1448418 930 l
+1731959 1444851 1731959 1451984 930 l
+1731959 1451984 1733741 1453768 930 l
+1733741 1453768 1737308 1453768 930 l
+1737308 1453768 1739091 1451984 930 l
+1739091 1451984 1739091 1444851 930 l
+1739091 1444851 1737308 1443068 930 l
+1737308 1443068 1733741 1443068 930 l
+1733741 1443068 1731959 1444851 930 l
+1731959 1444851 1739091 1451984 930 l
+1493013 1475225 1491229 1477009 930 l
+1491229 1477009 1487663 1477009 930 l
+1487663 1477009 1485880 1475225 930 l
+1485880 1475225 1485880 1473442 930 l
+1485880 1473442 1487663 1471659 930 l
+1487663 1471659 1491229 1471659 930 l
+1491229 1471659 1493013 1469875 930 l
+1493013 1469875 1493013 1468092 930 l
+1493013 1468092 1491229 1466309 930 l
+1491229 1466309 1487663 1466309 930 l
+1487663 1466309 1485880 1468092 930 l
+1501929 1466309 1498362 1466309 930 l
+1498362 1466309 1496579 1468092 930 l
+1496579 1468092 1496579 1471659 930 l
+1496579 1471659 1498362 1473442 930 l
+1498362 1473442 1501929 1473442 930 l
+1501929 1473442 1503712 1471659 930 l
+1503712 1471659 1503712 1469875 930 l
+1503712 1469875 1496579 1469875 930 l
+1507279 1466309 1507279 1473442 930 l
+1507279 1469875 1510844 1473442 930 l
+1510844 1473442 1512628 1473442 930 l
+1517978 1473442 1519760 1473442 930 l
+1519760 1473442 1519760 1466309 930 l
+1517978 1466309 1521543 1466309 930 l
+1519760 1478792 1519760 1477009 930 l
+1528676 1473442 1532243 1473442 930 l
+1532243 1473442 1534026 1471659 930 l
+1534026 1471659 1534026 1466309 930 l
+1534026 1466309 1528676 1466309 930 l
+1528676 1466309 1526893 1468092 930 l
+1526893 1468092 1528676 1469875 930 l
+1528676 1469875 1534026 1469875 930 l
+1537593 1477009 1539375 1477009 930 l
+1539375 1477009 1539375 1466309 930 l
+1537593 1466309 1541158 1466309 930 l
+1564340 1475225 1562556 1477009 930 l
+1562556 1477009 1558990 1477009 930 l
+1558990 1477009 1557207 1475225 930 l
+1557207 1475225 1557207 1468092 930 l
+1557207 1468092 1558990 1466309 930 l
+1558990 1466309 1562556 1466309 930 l
+1562556 1466309 1564340 1468092 930 l
+1567906 1477009 1569689 1477009 930 l
+1569689 1477009 1569689 1466309 930 l
+1567906 1466309 1571472 1466309 930 l
+1578605 1466309 1582171 1466309 930 l
+1582171 1466309 1583955 1468092 930 l
+1583955 1468092 1583955 1471659 930 l
+1583955 1471659 1582171 1473442 930 l
+1582171 1473442 1578605 1473442 930 l
+1578605 1473442 1576822 1471659 930 l
+1576822 1471659 1576822 1468092 930 l
+1576822 1468092 1578605 1466309 930 l
+1594654 1473442 1589304 1473442 930 l
+1589304 1473442 1587521 1471659 930 l
+1587521 1471659 1587521 1468092 930 l
+1587521 1468092 1589304 1466309 930 l
+1589304 1466309 1594654 1466309 930 l
+1598220 1466309 1598220 1477009 930 l
+1603570 1466309 1598220 1469875 930 l
+1598220 1469875 1603570 1473442 930 l
+1619619 1466309 1626751 1477009 930 l
+1641017 1466309 1641017 1477009 930 l
+1641017 1477009 1646366 1477009 930 l
+1646366 1477009 1648149 1475225 930 l
+1648149 1475225 1648149 1471659 930 l
+1648149 1471659 1646366 1469875 930 l
+1646366 1469875 1641017 1469875 930 l
+1653498 1473442 1657065 1473442 930 l
+1657065 1473442 1658848 1471659 930 l
+1658848 1471659 1658848 1466309 930 l
+1658848 1466309 1653498 1466309 930 l
+1653498 1466309 1651716 1468092 930 l
+1651716 1468092 1653498 1469875 930 l
+1653498 1469875 1658848 1469875 930 l
+1662415 1466309 1662415 1473442 930 l
+1662415 1469875 1665981 1473442 930 l
+1665981 1473442 1667764 1473442 930 l
+1674897 1473442 1678463 1473442 930 l
+1678463 1473442 1680247 1471659 930 l
+1680247 1471659 1680247 1466309 930 l
+1680247 1466309 1674897 1466309 930 l
+1674897 1466309 1673114 1468092 930 l
+1673114 1468092 1674897 1469875 930 l
+1674897 1469875 1680247 1469875 930 l
+1683813 1477009 1685596 1477009 930 l
+1685596 1477009 1685596 1466309 930 l
+1683813 1466309 1687379 1466309 930 l
+1692729 1477009 1694511 1477009 930 l
+1694511 1477009 1694511 1466309 930 l
+1692729 1466309 1696295 1466309 930 l
+1706994 1466309 1703427 1466309 930 l
+1703427 1466309 1701645 1468092 930 l
+1701645 1468092 1701645 1471659 930 l
+1701645 1471659 1703427 1473442 930 l
+1703427 1473442 1706994 1473442 930 l
+1706994 1473442 1708777 1471659 930 l
+1708777 1471659 1708777 1469875 930 l
+1708777 1469875 1701645 1469875 930 l
+1712344 1477009 1714126 1477009 930 l
+1714126 1477009 1714126 1466309 930 l
+1712344 1466309 1715910 1466309 930 l
+1731959 1466309 1731959 1477009 930 l
+1731959 1477009 1737308 1477009 930 l
+1737308 1477009 1739091 1475225 930 l
+1739091 1475225 1739091 1473442 930 l
+1739091 1473442 1737308 1471659 930 l
+1737308 1471659 1739091 1469875 930 l
+1739091 1469875 1739091 1468092 930 l
+1739091 1468092 1737308 1466309 930 l
+1737308 1466309 1731959 1466309 930 l
+1731959 1471659 1737308 1471659 930 l
+1742658 1475225 1744440 1477009 930 l
+1744440 1477009 1744440 1466309 930 l
+1742658 1466309 1746224 1466309 930 l
+1493013 1498466 1491229 1500250 930 l
+1491229 1500250 1487663 1500250 930 l
+1487663 1500250 1485880 1498466 930 l
+1485880 1498466 1485880 1496683 930 l
+1485880 1496683 1487663 1494900 930 l
+1487663 1494900 1491229 1494900 930 l
+1491229 1494900 1493013 1493116 930 l
+1493013 1493116 1493013 1491333 930 l
+1493013 1491333 1491229 1489550 930 l
+1491229 1489550 1487663 1489550 930 l
+1487663 1489550 1485880 1491333 930 l
+1501929 1489550 1498362 1489550 930 l
+1498362 1489550 1496579 1491333 930 l
+1496579 1491333 1496579 1494900 930 l
+1496579 1494900 1498362 1496683 930 l
+1498362 1496683 1501929 1496683 930 l
+1501929 1496683 1503712 1494900 930 l
+1503712 1494900 1503712 1493116 930 l
+1503712 1493116 1496579 1493116 930 l
+1507279 1489550 1507279 1496683 930 l
+1507279 1493116 1510844 1496683 930 l
+1510844 1496683 1512628 1496683 930 l
+1517978 1496683 1519760 1496683 930 l
+1519760 1496683 1519760 1489550 930 l
+1517978 1489550 1521543 1489550 930 l
+1519760 1502033 1519760 1500250 930 l
+1528676 1496683 1532243 1496683 930 l
+1532243 1496683 1534026 1494900 930 l
+1534026 1494900 1534026 1489550 930 l
+1534026 1489550 1528676 1489550 930 l
+1528676 1489550 1526893 1491333 930 l
+1526893 1491333 1528676 1493116 930 l
+1528676 1493116 1534026 1493116 930 l
+1537593 1500250 1539375 1500250 930 l
+1539375 1500250 1539375 1489550 930 l
+1537593 1489550 1541158 1489550 930 l
+1557207 1500250 1557207 1489550 930 l
+1557207 1489550 1564340 1489550 930 l
+1569689 1496683 1573256 1496683 930 l
+1573256 1496683 1575039 1494900 930 l
+1575039 1494900 1575039 1489550 930 l
+1575039 1489550 1569689 1489550 930 l
+1569689 1489550 1567906 1491333 930 l
+1567906 1491333 1569689 1493116 930 l
+1569689 1493116 1575039 1493116 930 l
+1580388 1498466 1580388 1491333 930 l
+1580388 1491333 1582171 1489550 930 l
+1578606 1496683 1582171 1496683 930 l
+1594654 1496683 1589304 1496683 930 l
+1589304 1496683 1587521 1494900 930 l
+1587521 1494900 1587521 1491333 930 l
+1587521 1491333 1589304 1489550 930 l
+1589304 1489550 1594654 1489550 930 l
+1598220 1500250 1598220 1489550 930 l
+1598220 1494900 1600003 1496683 930 l
+1600003 1496683 1603570 1496683 930 l
+1603570 1496683 1605353 1494900 930 l
+1605353 1494900 1605353 1489550 930 l
+1619619 1489550 1626751 1500250 930 l
+1641017 1489550 1641017 1500250 930 l
+1641017 1500250 1646366 1500250 930 l
+1646366 1500250 1648149 1498466 930 l
+1648149 1498466 1648149 1494900 930 l
+1648149 1494900 1646366 1493116 930 l
+1646366 1493116 1641017 1493116 930 l
+1653498 1496683 1657065 1496683 930 l
+1657065 1496683 1658848 1494900 930 l
+1658848 1494900 1658848 1489550 930 l
+1658848 1489550 1653498 1489550 930 l
+1653498 1489550 1651716 1491333 930 l
+1651716 1491333 1653498 1493116 930 l
+1653498 1493116 1658848 1493116 930 l
+1662415 1489550 1662415 1496683 930 l
+1662415 1493116 1665981 1496683 930 l
+1665981 1496683 1667764 1496683 930 l
+1674897 1496683 1678463 1496683 930 l
+1678463 1496683 1680247 1494900 930 l
+1680247 1494900 1680247 1489550 930 l
+1680247 1489550 1674897 1489550 930 l
+1674897 1489550 1673114 1491333 930 l
+1673114 1491333 1674897 1493116 930 l
+1674897 1493116 1680247 1493116 930 l
+1683813 1500250 1685596 1500250 930 l
+1685596 1500250 1685596 1489550 930 l
+1683813 1489550 1687379 1489550 930 l
+1692729 1500250 1694511 1500250 930 l
+1694511 1500250 1694511 1489550 930 l
+1692729 1489550 1696295 1489550 930 l
+1706994 1489550 1703427 1489550 930 l
+1703427 1489550 1701645 1491333 930 l
+1701645 1491333 1701645 1494900 930 l
+1701645 1494900 1703427 1496683 930 l
+1703427 1496683 1706994 1496683 930 l
+1706994 1496683 1708777 1494900 930 l
+1708777 1494900 1708777 1493116 930 l
+1708777 1493116 1701645 1493116 930 l
+1712344 1500250 1714126 1500250 930 l
+1714126 1500250 1714126 1489550 930 l
+1712344 1489550 1715910 1489550 930 l
+1731959 1489550 1731959 1500250 930 l
+1731959 1500250 1737308 1500250 930 l
+1737308 1500250 1739091 1498466 930 l
+1739091 1498466 1739091 1496683 930 l
+1739091 1496683 1737308 1494900 930 l
+1737308 1494900 1739091 1493116 930 l
+1739091 1493116 1739091 1491333 930 l
+1739091 1491333 1737308 1489550 930 l
+1737308 1489550 1731959 1489550 930 l
+1731959 1494900 1737308 1494900 930 l
+1749790 1489550 1742658 1489550 930 l
+1742658 1489550 1749790 1496683 930 l
+1749790 1496683 1749790 1498466 930 l
+1749790 1498466 1748007 1500250 930 l
+1748007 1500250 1744440 1500250 930 l
+1744440 1500250 1742658 1498466 930 l
+1485880 1512791 1485880 1523491 930 l
+1485880 1523491 1491229 1523491 930 l
+1491229 1523491 1493013 1521707 930 l
+1493013 1521707 1493013 1518141 930 l
+1493013 1518141 1491229 1516357 930 l
+1491229 1516357 1485880 1516357 930 l
+1498362 1519924 1501929 1519924 930 l
+1501929 1519924 1503712 1518141 930 l
+1503712 1518141 1503712 1512791 930 l
+1503712 1512791 1498362 1512791 930 l
+1498362 1512791 1496579 1514574 930 l
+1496579 1514574 1498362 1516357 930 l
+1498362 1516357 1503712 1516357 930 l
+1507279 1512791 1507279 1519924 930 l
+1507279 1516357 1510844 1519924 930 l
+1510844 1519924 1512628 1519924 930 l
+1519760 1519924 1523327 1519924 930 l
+1523327 1519924 1525110 1518141 930 l
+1525110 1518141 1525110 1512791 930 l
+1525110 1512791 1519760 1512791 930 l
+1519760 1512791 1517978 1514574 930 l
+1517978 1514574 1519760 1516357 930 l
+1519760 1516357 1525110 1516357 930 l
+1528677 1523491 1530459 1523491 930 l
+1530459 1523491 1530459 1512791 930 l
+1528677 1512791 1532243 1512791 930 l
+1537593 1523491 1539375 1523491 930 l
+1539375 1523491 1539375 1512791 930 l
+1537593 1512791 1541158 1512791 930 l
+1551857 1512791 1548291 1512791 930 l
+1548291 1512791 1546508 1514574 930 l
+1546508 1514574 1546508 1518141 930 l
+1546508 1518141 1548291 1519924 930 l
+1548291 1519924 1551857 1519924 930 l
+1551857 1519924 1553641 1518141 930 l
+1553641 1518141 1553641 1516357 930 l
+1553641 1516357 1546508 1516357 930 l
+1557207 1523491 1558990 1523491 930 l
+1558990 1523491 1558990 1512791 930 l
+1557207 1512791 1560773 1512791 930 l
+1576822 1512791 1576822 1523491 930 l
+1576822 1523491 1582171 1523491 930 l
+1582171 1523491 1583955 1521707 930 l
+1583955 1521707 1583955 1519924 930 l
+1583955 1519924 1582171 1518141 930 l
+1582171 1518141 1583955 1516357 930 l
+1583955 1516357 1583955 1514574 930 l
+1583955 1514574 1582171 1512791 930 l
+1582171 1512791 1576822 1512791 930 l
+1576822 1518141 1582171 1518141 930 l
+1587521 1521707 1589304 1523491 930 l
+1589304 1523491 1592870 1523491 930 l
+1592870 1523491 1594654 1521707 930 l
+1594654 1521707 1594654 1519924 930 l
+1594654 1519924 1592870 1518141 930 l
+1592870 1518141 1591087 1518141 930 l
+1592870 1518141 1594654 1516357 930 l
+1594654 1516357 1594654 1514574 930 l
+1594654 1514574 1592870 1512791 930 l
+1592870 1512791 1589304 1512791 930 l
+1589304 1512791 1587521 1514574 930 l
+1493013 1544948 1491229 1546732 930 l
+1491229 1546732 1487663 1546732 930 l
+1487663 1546732 1485880 1544948 930 l
+1485880 1544948 1485880 1543165 930 l
+1485880 1543165 1487663 1541382 930 l
+1487663 1541382 1491229 1541382 930 l
+1491229 1541382 1493013 1539598 930 l
+1493013 1539598 1493013 1537815 930 l
+1493013 1537815 1491229 1536032 930 l
+1491229 1536032 1487663 1536032 930 l
+1487663 1536032 1485880 1537815 930 l
+1501929 1536032 1498362 1536032 930 l
+1498362 1536032 1496579 1537815 930 l
+1496579 1537815 1496579 1541382 930 l
+1496579 1541382 1498362 1543165 930 l
+1498362 1543165 1501929 1543165 930 l
+1501929 1543165 1503712 1541382 930 l
+1503712 1541382 1503712 1539598 930 l
+1503712 1539598 1496579 1539598 930 l
+1507279 1536032 1507279 1543165 930 l
+1507279 1539598 1510844 1543165 930 l
+1510844 1543165 1512628 1543165 930 l
+1517978 1543165 1519760 1543165 930 l
+1519760 1543165 1519760 1536032 930 l
+1517978 1536032 1521543 1536032 930 l
+1519760 1548515 1519760 1546732 930 l
+1528676 1543165 1532243 1543165 930 l
+1532243 1543165 1534026 1541382 930 l
+1534026 1541382 1534026 1536032 930 l
+1534026 1536032 1528676 1536032 930 l
+1528676 1536032 1526893 1537815 930 l
+1526893 1537815 1528676 1539598 930 l
+1528676 1539598 1534026 1539598 930 l
+1537593 1546732 1539375 1546732 930 l
+1539375 1546732 1539375 1536032 930 l
+1537593 1536032 1541158 1536032 930 l
+1546508 1541382 1553641 1541382 930 l
+1557207 1536032 1557207 1546732 930 l
+1557207 1546732 1562556 1546732 930 l
+1562556 1546732 1564340 1544948 930 l
+1564340 1544948 1564340 1541382 930 l
+1564340 1541382 1562556 1539598 930 l
+1562556 1539598 1557207 1539598 930 l
+1569689 1543165 1573256 1543165 930 l
+1573256 1543165 1575039 1541382 930 l
+1575039 1541382 1575039 1536032 930 l
+1575039 1536032 1569689 1536032 930 l
+1569689 1536032 1567906 1537815 930 l
+1567906 1537815 1569689 1539598 930 l
+1569689 1539598 1575039 1539598 930 l
+1578606 1536032 1578606 1543165 930 l
+1578606 1539598 1582171 1543165 930 l
+1582171 1543165 1583955 1543165 930 l
+1591087 1543165 1594654 1543165 930 l
+1594654 1543165 1596437 1541382 930 l
+1596437 1541382 1596437 1536032 930 l
+1596437 1536032 1591087 1536032 930 l
+1591087 1536032 1589305 1537815 930 l
+1589305 1537815 1591087 1539598 930 l
+1591087 1539598 1596437 1539598 930 l
+1600004 1546732 1601786 1546732 930 l
+1601786 1546732 1601786 1536032 930 l
+1600004 1536032 1603570 1536032 930 l
+1608920 1546732 1610702 1546732 930 l
+1610702 1546732 1610702 1536032 930 l
+1608920 1536032 1612485 1536032 930 l
+1623184 1536032 1619618 1536032 930 l
+1619618 1536032 1617835 1537815 930 l
+1617835 1537815 1617835 1541382 930 l
+1617835 1541382 1619618 1543165 930 l
+1619618 1543165 1623184 1543165 930 l
+1623184 1543165 1624968 1541382 930 l
+1624968 1541382 1624968 1539598 930 l
+1624968 1539598 1617835 1539598 930 l
+1628534 1546732 1630317 1546732 930 l
+1630317 1546732 1630317 1536032 930 l
+1628534 1536032 1632100 1536032 930 l
+1655282 1544948 1653498 1546732 930 l
+1653498 1546732 1649932 1546732 930 l
+1649932 1546732 1648149 1544948 930 l
+1648149 1544948 1648149 1543165 930 l
+1648149 1543165 1649932 1541382 930 l
+1649932 1541382 1653498 1541382 930 l
+1653498 1541382 1655282 1539598 930 l
+1655282 1539598 1655282 1537815 930 l
+1655282 1537815 1653498 1536032 930 l
+1653498 1536032 1649932 1536032 930 l
+1649932 1536032 1648149 1537815 930 l
+1664197 1536032 1660631 1536032 930 l
+1660631 1536032 1658848 1537815 930 l
+1658848 1537815 1658848 1541382 930 l
+1658848 1541382 1660631 1543165 930 l
+1660631 1543165 1664197 1543165 930 l
+1664197 1543165 1665981 1541382 930 l
+1665981 1541382 1665981 1539598 930 l
+1665981 1539598 1658848 1539598 930 l
+1669547 1546732 1671330 1546732 930 l
+1671330 1546732 1671330 1536032 930 l
+1669547 1536032 1673113 1536032 930 l
+1683812 1536032 1680246 1536032 930 l
+1680246 1536032 1678463 1537815 930 l
+1678463 1537815 1678463 1541382 930 l
+1678463 1541382 1680246 1543165 930 l
+1680246 1543165 1683812 1543165 930 l
+1683812 1543165 1685596 1541382 930 l
+1685596 1541382 1685596 1539598 930 l
+1685596 1539598 1678463 1539598 930 l
+1696295 1543165 1690945 1543165 930 l
+1690945 1543165 1689162 1541382 930 l
+1689162 1541382 1689162 1537815 930 l
+1689162 1537815 1690945 1536032 930 l
+1690945 1536032 1696295 1536032 930 l
+1701644 1544948 1701644 1537815 930 l
+1701644 1537815 1703427 1536032 930 l
+1699861 1543165 1703427 1543165 930 l
+1719476 1536032 1726609 1546732 930 l
+1740874 1536032 1740874 1546732 930 l
+1740874 1546732 1746224 1546732 930 l
+1746224 1546732 1748007 1544948 930 l
+1748007 1544948 1748007 1541382 930 l
+1748007 1541382 1746224 1539598 930 l
+1746224 1539598 1740874 1539598 930 l
+1753356 1543165 1756923 1543165 930 l
+1756923 1543165 1758706 1541382 930 l
+1758706 1541382 1758706 1536032 930 l
+1758706 1536032 1753356 1536032 930 l
+1753356 1536032 1751574 1537815 930 l
+1751574 1537815 1753356 1539598 930 l
+1753356 1539598 1758706 1539598 930 l
+1762273 1536032 1762273 1543165 930 l
+1762273 1539598 1765838 1543165 930 l
+1765838 1543165 1767622 1543165 930 l
+1774754 1543165 1778321 1543165 930 l
+1778321 1543165 1780104 1541382 930 l
+1780104 1541382 1780104 1536032 930 l
+1780104 1536032 1774754 1536032 930 l
+1774754 1536032 1772972 1537815 930 l
+1772972 1537815 1774754 1539598 930 l
+1774754 1539598 1780104 1539598 930 l
+1783671 1546732 1785453 1546732 930 l
+1785453 1546732 1785453 1536032 930 l
+1783671 1536032 1787237 1536032 930 l
+1792587 1546732 1794369 1546732 930 l
+1794369 1546732 1794369 1536032 930 l
+1792587 1536032 1796152 1536032 930 l
+1806851 1536032 1803285 1536032 930 l
+1803285 1536032 1801502 1537815 930 l
+1801502 1537815 1801502 1541382 930 l
+1801502 1541382 1803285 1543165 930 l
+1803285 1543165 1806851 1543165 930 l
+1806851 1543165 1808635 1541382 930 l
+1808635 1541382 1808635 1539598 930 l
+1808635 1539598 1801502 1539598 930 l
+1812201 1546732 1813984 1546732 930 l
+1813984 1546732 1813984 1536032 930 l
+1812201 1536032 1815767 1536032 930 l
+1831816 1546732 1831816 1536032 930 l
+1831816 1536032 1838949 1536032 930 l
+1844298 1543165 1847864 1543165 930 l
+1847864 1543165 1849648 1541382 930 l
+1849648 1541382 1849648 1536032 930 l
+1849648 1536032 1844298 1536032 930 l
+1844298 1536032 1842515 1537815 930 l
+1842515 1537815 1844298 1539598 930 l
+1844298 1539598 1849648 1539598 930 l
+1854997 1544948 1854997 1537815 930 l
+1854997 1537815 1856780 1536032 930 l
+1853214 1543165 1856780 1543165 930 l
+1869263 1543165 1863913 1543165 930 l
+1863913 1543165 1862130 1541382 930 l
+1862130 1541382 1862130 1537815 930 l
+1862130 1537815 1863913 1536032 930 l
+1863913 1536032 1869263 1536032 930 l
+1872829 1546732 1872829 1536032 930 l
+1872829 1541382 1874612 1543165 930 l
+1874612 1543165 1878178 1543165 930 l
+1878178 1543165 1879962 1541382 930 l
+1879962 1541382 1879962 1536032 930 l
+967025 1581469 967025 1594261 1162 l
+967025 1594261 971289 1589997 1162 l
+971289 1589997 975554 1594261 1162 l
+975554 1594261 975554 1581469 1162 l
+988393 1592129 986260 1594261 1162 l
+986260 1594261 981996 1594261 1162 l
+981996 1594261 979864 1592129 1162 l
+979864 1592129 979864 1583601 1162 l
+979864 1583601 981996 1581469 1162 l
+981996 1581469 986260 1581469 1162 l
+986260 1581469 988393 1583601 1162 l
+992704 1594261 992704 1581469 1162 l
+992704 1581469 1001232 1581469 1162 l
+1005543 1581469 1005543 1594261 1162 l
+1005543 1594261 1011939 1594261 1162 l
+1011939 1594261 1014072 1592129 1162 l
+1014072 1592129 1014072 1587864 1162 l
+1014072 1587864 1011939 1585733 1162 l
+1011939 1585733 1005543 1585733 1162 l
+1009807 1585733 1014072 1581469 1162 l
+1026911 1581469 1018382 1594261 1162 l
+921821 1587860 945062 1587860 1394 l
+935946 1591695 935946 1604487 1162 l
+935946 1604487 929550 1598091 1162 l
+929550 1598091 938079 1598091 1162 l
+973421 1687225 969157 1687225 1162 l
+969157 1687225 967025 1685093 1162 l
+967025 1685093 967025 1676565 1162 l
+967025 1676565 969157 1674433 1162 l
+969157 1674433 973421 1674433 1162 l
+973421 1674433 975554 1676565 1162 l
+975554 1676565 975554 1685093 1162 l
+975554 1685093 973421 1687225 1162 l
+988393 1685093 986260 1687225 1162 l
+986260 1687225 981996 1687225 1162 l
+981996 1687225 979864 1685093 1162 l
+979864 1685093 979864 1682961 1162 l
+979864 1682961 981996 1680828 1162 l
+981996 1680828 986260 1680828 1162 l
+986260 1680828 988393 1678697 1162 l
+988393 1678697 988393 1676565 1162 l
+988393 1676565 986260 1674433 1162 l
+986260 1674433 981996 1674433 1162 l
+981996 1674433 979864 1676565 1162 l
+1001232 1685093 999099 1687225 1162 l
+999099 1687225 994836 1687225 1162 l
+994836 1687225 992704 1685093 1162 l
+992704 1685093 992704 1676565 1162 l
+992704 1676565 994836 1674433 1162 l
+994836 1674433 999099 1674433 1162 l
+999099 1674433 1001232 1676565 1162 l
+1005543 1685093 1007675 1687225 1162 l
+1007675 1687225 1007675 1674433 1162 l
+1005543 1674433 1009807 1674433 1162 l
+921821 1680824 945062 1680824 1394 l
+918850 1695319 920982 1697451 1162 l
+920982 1697451 920982 1684659 1162 l
+918850 1684659 923114 1684659 1162 l
+938078 1697451 933813 1695319 1162 l
+933813 1695319 929549 1691055 1162 l
+929549 1691055 929549 1686791 1162 l
+929549 1686791 931681 1684659 1162 l
+931681 1684659 935945 1684659 1162 l
+935945 1684659 938078 1686791 1162 l
+938078 1686791 938078 1688923 1162 l
+938078 1688923 935945 1691055 1162 l
+935945 1691055 929549 1691055 1162 l
+1071670 1442023 1071670 1454815 1162 l
+1071670 1454815 1078066 1454815 1162 l
+1078066 1454815 1080199 1452683 1162 l
+1080199 1452683 1080199 1448418 1162 l
+1080199 1448418 1078066 1446287 1162 l
+1078066 1446287 1071670 1446287 1162 l
+1075934 1446287 1080199 1442023 1162 l
+1084509 1442023 1084509 1450551 1162 l
+1084509 1450551 1088773 1454815 1162 l
+1088773 1454815 1093038 1450551 1162 l
+1093038 1450551 1093038 1442023 1162 l
+1084509 1448418 1093038 1448418 1162 l
+1097349 1444155 1097349 1452683 1162 l
+1097349 1452683 1099480 1454815 1162 l
+1099480 1454815 1103744 1454815 1162 l
+1103744 1454815 1105877 1452683 1162 l
+1105877 1452683 1105877 1444155 1162 l
+1105877 1444155 1103744 1442023 1162 l
+1103744 1442023 1099480 1442023 1162 l
+1099480 1442023 1097349 1444155 1162 l
+1097349 1444155 1105877 1452683 1162 l
+1154231 1448414 1130990 1448414 1394 l
+1134825 1462909 1136957 1465041 1162 l
+1136957 1465041 1136957 1452249 1162 l
+1134825 1452249 1139089 1452249 1162 l
+1145524 1465041 1154053 1465041 1162 l
+1154053 1465041 1154053 1462909 1162 l
+1154053 1462909 1145524 1454381 1162 l
+1145524 1454381 1145524 1452249 1162 l
+1073810 1465264 1073810 1478056 1162 l
+1073810 1478056 1080206 1478056 1162 l
+1080206 1478056 1082339 1475924 1162 l
+1082339 1475924 1082339 1471659 1162 l
+1082339 1471659 1080206 1469528 1162 l
+1080206 1469528 1073810 1469528 1162 l
+1078074 1469528 1082339 1465264 1162 l
+1086649 1465264 1086649 1473792 1162 l
+1086649 1473792 1090913 1478056 1162 l
+1090913 1478056 1095178 1473792 1162 l
+1095178 1473792 1095178 1465264 1162 l
+1086649 1471659 1095178 1471659 1162 l
+1099489 1475924 1101621 1478056 1162 l
+1101621 1478056 1101621 1465264 1162 l
+1099489 1465264 1103753 1465264 1162 l
+1154231 1471655 1130990 1471655 1394 l
+1134825 1486150 1136957 1488282 1162 l
+1136957 1488282 1136957 1475490 1162 l
+1134825 1475490 1139089 1475490 1162 l
+1145524 1486150 1147656 1488282 1162 l
+1147656 1488282 1151920 1488282 1162 l
+1151920 1488282 1154053 1486150 1162 l
+1154053 1486150 1154053 1484018 1162 l
+1154053 1484018 1151920 1481886 1162 l
+1151920 1481886 1154053 1479754 1162 l
+1154053 1479754 1154053 1477622 1162 l
+1154053 1477622 1151920 1475490 1162 l
+1151920 1475490 1147656 1475490 1162 l
+1147656 1475490 1145524 1477622 1162 l
+1145524 1477622 1145524 1479754 1162 l
+1145524 1479754 1147656 1481886 1162 l
+1147656 1481886 1145524 1484018 1162 l
+1145524 1484018 1145524 1486150 1162 l
+1147656 1481886 1151920 1481886 1162 l
+1071670 1488505 1071670 1501297 1162 l
+1071670 1501297 1078066 1501297 1162 l
+1078066 1501297 1080199 1499165 1162 l
+1080199 1499165 1080199 1494900 1162 l
+1080199 1494900 1078066 1492769 1162 l
+1078066 1492769 1071670 1492769 1162 l
+1075934 1492769 1080199 1488505 1162 l
+1084509 1488505 1084509 1497033 1162 l
+1084509 1497033 1088773 1501297 1162 l
+1088773 1501297 1093038 1497033 1162 l
+1093038 1497033 1093038 1488505 1162 l
+1084509 1494900 1093038 1494900 1162 l
+1105877 1488505 1097349 1488505 1162 l
+1097349 1488505 1105877 1497033 1162 l
+1105877 1497033 1105877 1499165 1162 l
+1105877 1499165 1103744 1501297 1162 l
+1103744 1501297 1099480 1501297 1162 l
+1099480 1501297 1097349 1499165 1162 l
+1154231 1494896 1130990 1494896 1394 l
+1134825 1509391 1136957 1511523 1162 l
+1136957 1511523 1136957 1498731 1162 l
+1134825 1498731 1139089 1498731 1162 l
+1071670 1511746 1071670 1524538 1162 l
+1071670 1524538 1078066 1524538 1162 l
+1078066 1524538 1080199 1522406 1162 l
+1080199 1522406 1080199 1518141 1162 l
+1080199 1518141 1078066 1516010 1162 l
+1078066 1516010 1071670 1516010 1162 l
+1075934 1516010 1080199 1511746 1162 l
+1084509 1511746 1084509 1520274 1162 l
+1084509 1520274 1088773 1524538 1162 l
+1088773 1524538 1093038 1520274 1162 l
+1093038 1520274 1093038 1511746 1162 l
+1084509 1518141 1093038 1518141 1162 l
+1097349 1522406 1099480 1524538 1162 l
+1099480 1524538 1103744 1524538 1162 l
+1103744 1524538 1105877 1522406 1162 l
+1105877 1522406 1105877 1520274 1162 l
+1105877 1520274 1103744 1518141 1162 l
+1103744 1518141 1101612 1518141 1162 l
+1103744 1518141 1105877 1516010 1162 l
+1105877 1516010 1105877 1513878 1162 l
+1105877 1513878 1103744 1511746 1162 l
+1103744 1511746 1099480 1511746 1162 l
+1099480 1511746 1097349 1513878 1162 l
+1154231 1518137 1130990 1518137 1394 l
+1143354 1521972 1134825 1521972 1162 l
+1134825 1521972 1143354 1530500 1162 l
+1143354 1530500 1143354 1532632 1162 l
+1143354 1532632 1141221 1534764 1162 l
+1141221 1534764 1136957 1534764 1162 l
+1136957 1534764 1134825 1532632 1162 l
+1001034 1534987 1001034 1547779 1162 l
+996770 1547779 1005299 1547779 1162 l
+1009609 1537119 1009609 1545647 1162 l
+1009609 1545647 1011741 1547779 1162 l
+1011741 1547779 1016005 1547779 1162 l
+1016005 1547779 1018138 1545647 1162 l
+1018138 1545647 1018138 1537119 1162 l
+1018138 1537119 1016005 1534987 1162 l
+1016005 1534987 1011741 1534987 1162 l
+1011741 1534987 1009609 1537119 1162 l
+1009609 1537119 1018138 1545647 1162 l
+1030977 1545647 1028844 1547779 1162 l
+1028844 1547779 1024580 1547779 1162 l
+1024580 1547779 1022448 1545647 1162 l
+1022448 1545647 1022448 1537119 1162 l
+1022448 1537119 1024580 1534987 1162 l
+1024580 1534987 1028844 1534987 1162 l
+1028844 1534987 1030977 1537119 1162 l
+1035288 1547779 1035288 1534987 1162 l
+1035288 1539251 1043816 1547779 1162 l
+1037420 1541382 1043816 1534987 1162 l
+1048127 1534987 1052391 1534987 1162 l
+1050259 1534987 1050259 1547779 1162 l
+1048127 1547779 1052391 1547779 1162 l
+1058826 1534987 1067355 1547779 1162 l
+1071665 1534987 1071665 1547779 1162 l
+1071665 1547779 1078061 1547779 1162 l
+1078061 1547779 1080194 1545647 1162 l
+1080194 1545647 1080194 1541382 1162 l
+1080194 1541382 1078061 1539251 1162 l
+1078061 1539251 1071665 1539251 1162 l
+1075929 1539251 1080194 1534987 1162 l
+1084505 1534987 1084505 1543515 1162 l
+1084505 1543515 1088769 1547779 1162 l
+1088769 1547779 1093033 1543515 1162 l
+1093033 1543515 1093033 1534987 1162 l
+1084505 1541382 1093033 1541382 1162 l
+1103740 1534987 1103740 1547779 1162 l
+1103740 1547779 1097344 1541382 1162 l
+1097344 1541382 1105873 1541382 1162 l
+1154231 1541378 1130990 1541378 1394 l
+1134825 1555873 1136957 1558005 1162 l
+1136957 1558005 1141221 1558005 1162 l
+1141221 1558005 1143354 1555873 1162 l
+1143354 1555873 1143354 1553741 1162 l
+1143354 1553741 1141221 1551609 1162 l
+1141221 1551609 1139089 1551609 1162 l
+1141221 1551609 1143354 1549477 1162 l
+1143354 1549477 1143354 1547345 1162 l
+1143354 1547345 1141221 1545213 1162 l
+1141221 1545213 1136957 1545213 1162 l
+1136957 1545213 1134825 1547345 1162 l
+1071670 1581469 1071670 1594261 1162 l
+1071670 1594261 1078066 1594261 1162 l
+1078066 1594261 1080199 1592129 1162 l
+1080199 1592129 1080199 1587864 1162 l
+1080199 1587864 1078066 1585733 1162 l
+1078066 1585733 1071670 1585733 1162 l
+1075934 1585733 1080199 1581469 1162 l
+1084509 1581469 1084509 1594261 1162 l
+1084509 1594261 1090905 1594261 1162 l
+1090905 1594261 1093038 1592129 1162 l
+1093038 1592129 1093038 1589997 1162 l
+1093038 1589997 1090905 1587864 1162 l
+1090905 1587864 1093038 1585733 1162 l
+1093038 1585733 1093038 1583601 1162 l
+1093038 1583601 1090905 1581469 1162 l
+1090905 1581469 1084509 1581469 1162 l
+1084509 1587864 1090905 1587864 1162 l
+1097349 1583601 1097349 1592129 1162 l
+1097349 1592129 1099480 1594261 1162 l
+1099480 1594261 1103744 1594261 1162 l
+1103744 1594261 1105877 1592129 1162 l
+1105877 1592129 1105877 1583601 1162 l
+1105877 1583601 1103744 1581469 1162 l
+1103744 1581469 1099480 1581469 1162 l
+1099480 1581469 1097349 1583601 1162 l
+1097349 1583601 1105877 1592129 1162 l
+1154231 1587860 1130990 1587860 1394 l
+1143354 1604487 1139089 1602355 1162 l
+1139089 1602355 1134825 1598091 1162 l
+1134825 1598091 1134825 1593827 1162 l
+1134825 1593827 1136957 1591695 1162 l
+1136957 1591695 1141221 1591695 1162 l
+1141221 1591695 1143354 1593827 1162 l
+1143354 1593827 1143354 1595959 1162 l
+1143354 1595959 1141221 1598091 1162 l
+1141221 1598091 1134825 1598091 1162 l
+1073810 1604710 1073810 1617502 1162 l
+1073810 1617502 1080206 1617502 1162 l
+1080206 1617502 1082339 1615370 1162 l
+1082339 1615370 1082339 1611105 1162 l
+1082339 1611105 1080206 1608974 1162 l
+1080206 1608974 1073810 1608974 1162 l
+1078074 1608974 1082339 1604710 1162 l
+1086649 1604710 1086649 1617502 1162 l
+1086649 1617502 1093045 1617502 1162 l
+1093045 1617502 1095178 1615370 1162 l
+1095178 1615370 1095178 1613238 1162 l
+1095178 1613238 1093045 1611105 1162 l
+1093045 1611105 1095178 1608974 1162 l
+1095178 1608974 1095178 1606842 1162 l
+1095178 1606842 1093045 1604710 1162 l
+1093045 1604710 1086649 1604710 1162 l
+1086649 1611105 1093045 1611105 1162 l
+1099489 1615370 1101621 1617502 1162 l
+1101621 1617502 1101621 1604710 1162 l
+1099489 1604710 1103753 1604710 1162 l
+1154231 1611101 1130990 1611101 1394 l
+1134825 1627728 1143354 1627728 1162 l
+1143354 1627728 1143354 1625596 1162 l
+1143354 1625596 1134825 1617068 1162 l
+1134825 1617068 1134825 1614936 1162 l
+1071670 1627951 1071670 1640743 1162 l
+1071670 1640743 1078066 1640743 1162 l
+1078066 1640743 1080199 1638611 1162 l
+1080199 1638611 1080199 1634346 1162 l
+1080199 1634346 1078066 1632215 1162 l
+1078066 1632215 1071670 1632215 1162 l
+1075934 1632215 1080199 1627951 1162 l
+1084509 1627951 1084509 1640743 1162 l
+1084509 1640743 1090905 1640743 1162 l
+1090905 1640743 1093038 1638611 1162 l
+1093038 1638611 1093038 1636479 1162 l
+1093038 1636479 1090905 1634346 1162 l
+1090905 1634346 1093038 1632215 1162 l
+1093038 1632215 1093038 1630083 1162 l
+1093038 1630083 1090905 1627951 1162 l
+1090905 1627951 1084509 1627951 1162 l
+1084509 1634346 1090905 1634346 1162 l
+1105877 1627951 1097349 1627951 1162 l
+1097349 1627951 1105877 1636479 1162 l
+1105877 1636479 1105877 1638611 1162 l
+1105877 1638611 1103744 1640743 1162 l
+1103744 1640743 1099480 1640743 1162 l
+1099480 1640743 1097349 1638611 1162 l
+1154231 1634342 1130990 1634342 1394 l
+1134825 1648837 1136957 1650969 1162 l
+1136957 1650969 1141221 1650969 1162 l
+1141221 1650969 1143354 1648837 1162 l
+1143354 1648837 1143354 1646705 1162 l
+1143354 1646705 1141221 1644573 1162 l
+1141221 1644573 1143354 1642441 1162 l
+1143354 1642441 1143354 1640309 1162 l
+1143354 1640309 1141221 1638177 1162 l
+1141221 1638177 1136957 1638177 1162 l
+1136957 1638177 1134825 1640309 1162 l
+1134825 1640309 1134825 1642441 1162 l
+1134825 1642441 1136957 1644573 1162 l
+1136957 1644573 1134825 1646705 1162 l
+1134825 1646705 1134825 1648837 1162 l
+1136957 1644573 1141221 1644573 1162 l
+1071670 1651192 1071670 1663984 1162 l
+1071670 1663984 1078066 1663984 1162 l
+1078066 1663984 1080199 1661852 1162 l
+1080199 1661852 1080199 1657587 1162 l
+1080199 1657587 1078066 1655456 1162 l
+1078066 1655456 1071670 1655456 1162 l
+1075934 1655456 1080199 1651192 1162 l
+1084509 1651192 1084509 1663984 1162 l
+1084509 1663984 1090905 1663984 1162 l
+1090905 1663984 1093038 1661852 1162 l
+1093038 1661852 1093038 1659720 1162 l
+1093038 1659720 1090905 1657587 1162 l
+1090905 1657587 1093038 1655456 1162 l
+1093038 1655456 1093038 1653324 1162 l
+1093038 1653324 1090905 1651192 1162 l
+1090905 1651192 1084509 1651192 1162 l
+1084509 1657587 1090905 1657587 1162 l
+1097349 1661852 1099480 1663984 1162 l
+1099480 1663984 1103744 1663984 1162 l
+1103744 1663984 1105877 1661852 1162 l
+1105877 1661852 1105877 1659720 1162 l
+1105877 1659720 1103744 1657587 1162 l
+1103744 1657587 1101612 1657587 1162 l
+1103744 1657587 1105877 1655456 1162 l
+1105877 1655456 1105877 1653324 1162 l
+1105877 1653324 1103744 1651192 1162 l
+1103744 1651192 1099480 1651192 1162 l
+1099480 1651192 1097349 1653324 1162 l
+1154231 1657583 1130990 1657583 1394 l
+1134825 1663550 1136957 1661418 1162 l
+1136957 1661418 1141221 1661418 1162 l
+1141221 1661418 1143354 1663550 1162 l
+1143354 1663550 1143354 1672078 1162 l
+1143354 1672078 1141221 1674210 1162 l
+1141221 1674210 1136957 1674210 1162 l
+1136957 1674210 1134825 1672078 1162 l
+1134825 1672078 1134825 1669946 1162 l
+1134825 1669946 1136957 1667814 1162 l
+1136957 1667814 1143354 1667814 1162 l
+1071670 1674433 1071670 1687225 1162 l
+1071670 1687225 1078066 1687225 1162 l
+1078066 1687225 1080199 1685093 1162 l
+1080199 1685093 1080199 1680828 1162 l
+1080199 1680828 1078066 1678697 1162 l
+1078066 1678697 1071670 1678697 1162 l
+1075934 1678697 1080199 1674433 1162 l
+1084509 1674433 1084509 1687225 1162 l
+1084509 1687225 1090905 1687225 1162 l
+1090905 1687225 1093038 1685093 1162 l
+1093038 1685093 1093038 1682961 1162 l
+1093038 1682961 1090905 1680828 1162 l
+1090905 1680828 1093038 1678697 1162 l
+1093038 1678697 1093038 1676565 1162 l
+1093038 1676565 1090905 1674433 1162 l
+1090905 1674433 1084509 1674433 1162 l
+1084509 1680828 1090905 1680828 1162 l
+1103744 1674433 1103744 1687225 1162 l
+1103744 1687225 1097349 1680828 1162 l
+1097349 1680828 1105877 1680828 1162 l
+1154231 1680824 1130990 1680824 1394 l
+1134825 1695319 1136957 1697451 1162 l
+1136957 1697451 1136957 1684659 1162 l
+1134825 1684659 1139089 1684659 1162 l
+1145524 1686791 1145524 1695319 1162 l
+1145524 1695319 1147656 1697451 1162 l
+1147656 1697451 1151920 1697451 1162 l
+1151920 1697451 1154053 1695319 1162 l
+1154053 1695319 1154053 1686791 1162 l
+1154053 1686791 1151920 1684659 1162 l
+1151920 1684659 1147656 1684659 1162 l
+1147656 1684659 1145524 1686791 1162 l
+1145524 1686791 1154053 1695319 1162 l
+1071670 1697674 1071670 1710466 1162 l
+1071670 1710466 1078066 1710466 1162 l
+1078066 1710466 1080199 1708334 1162 l
+1080199 1708334 1080199 1704069 1162 l
+1080199 1704069 1078066 1701938 1162 l
+1078066 1701938 1071670 1701938 1162 l
+1075934 1701938 1080199 1697674 1162 l
+1084509 1697674 1084509 1710466 1162 l
+1084509 1710466 1090905 1710466 1162 l
+1090905 1710466 1093038 1708334 1162 l
+1093038 1708334 1093038 1706202 1162 l
+1093038 1706202 1090905 1704069 1162 l
+1090905 1704069 1093038 1701938 1162 l
+1093038 1701938 1093038 1699806 1162 l
+1093038 1699806 1090905 1697674 1162 l
+1090905 1697674 1084509 1697674 1162 l
+1084509 1704069 1090905 1704069 1162 l
+1105877 1710466 1097349 1710466 1162 l
+1097349 1710466 1097349 1704069 1162 l
+1097349 1704069 1101612 1706202 1162 l
+1101612 1706202 1103744 1706202 1162 l
+1103744 1706202 1105877 1704069 1162 l
+1105877 1704069 1105877 1699806 1162 l
+1105877 1699806 1103744 1697674 1162 l
+1103744 1697674 1099480 1697674 1162 l
+1099480 1697674 1097349 1699806 1162 l
+1154231 1704065 1130990 1704065 1394 l
+1134825 1718560 1136957 1720692 1162 l
+1136957 1720692 1136957 1707900 1162 l
+1134825 1707900 1139089 1707900 1162 l
+1145524 1718560 1147656 1720692 1162 l
+1147656 1720692 1147656 1707900 1162 l
+1145524 1707900 1149788 1707900 1162 l
+1071670 1720915 1071670 1733707 1162 l
+1071670 1733707 1078066 1733707 1162 l
+1078066 1733707 1080199 1731575 1162 l
+1080199 1731575 1080199 1727310 1162 l
+1080199 1727310 1078066 1725179 1162 l
+1078066 1725179 1071670 1725179 1162 l
+1075934 1725179 1080199 1720915 1162 l
+1084509 1720915 1084509 1733707 1162 l
+1084509 1733707 1090905 1733707 1162 l
+1090905 1733707 1093038 1731575 1162 l
+1093038 1731575 1093038 1729443 1162 l
+1093038 1729443 1090905 1727310 1162 l
+1090905 1727310 1093038 1725179 1162 l
+1093038 1725179 1093038 1723047 1162 l
+1093038 1723047 1090905 1720915 1162 l
+1090905 1720915 1084509 1720915 1162 l
+1084509 1727310 1090905 1727310 1162 l
+1105877 1733707 1101612 1731575 1162 l
+1101612 1731575 1097349 1727310 1162 l
+1097349 1727310 1097349 1723047 1162 l
+1097349 1723047 1099480 1720915 1162 l
+1099480 1720915 1103744 1720915 1162 l
+1103744 1720915 1105877 1723047 1162 l
+1105877 1723047 1105877 1725179 1162 l
+1105877 1725179 1103744 1727310 1162 l
+1103744 1727310 1097349 1727310 1162 l
+1154231 1727306 1130990 1727306 1394 l
+1134825 1741801 1136957 1743933 1162 l
+1136957 1743933 1136957 1731141 1162 l
+1134825 1731141 1139089 1731141 1162 l
+1154053 1731141 1145524 1731141 1162 l
+1145524 1731141 1154053 1739669 1162 l
+1154053 1739669 1154053 1741801 1162 l
+1154053 1741801 1151920 1743933 1162 l
+1151920 1743933 1147656 1743933 1162 l
+1147656 1743933 1145524 1741801 1162 l
+1071670 1744156 1071670 1756948 1162 l
+1071670 1756948 1078066 1756948 1162 l
+1078066 1756948 1080199 1754816 1162 l
+1080199 1754816 1080199 1750551 1162 l
+1080199 1750551 1078066 1748420 1162 l
+1078066 1748420 1071670 1748420 1162 l
+1075934 1748420 1080199 1744156 1162 l
+1084509 1744156 1084509 1756948 1162 l
+1084509 1756948 1090905 1756948 1162 l
+1090905 1756948 1093038 1754816 1162 l
+1093038 1754816 1093038 1752684 1162 l
+1093038 1752684 1090905 1750551 1162 l
+1090905 1750551 1093038 1748420 1162 l
+1093038 1748420 1093038 1746288 1162 l
+1093038 1746288 1090905 1744156 1162 l
+1090905 1744156 1084509 1744156 1162 l
+1084509 1750551 1090905 1750551 1162 l
+1097349 1756948 1105877 1756948 1162 l
+1105877 1756948 1105877 1754816 1162 l
+1105877 1754816 1097349 1746288 1162 l
+1097349 1746288 1097349 1744156 1162 l
+1154231 1750547 1130990 1750547 1394 l
+1134825 1765042 1136957 1767174 1162 l
+1136957 1767174 1136957 1754382 1162 l
+1134825 1754382 1139089 1754382 1162 l
+1145524 1765042 1147656 1767174 1162 l
+1147656 1767174 1151920 1767174 1162 l
+1151920 1767174 1154053 1765042 1162 l
+1154053 1765042 1154053 1762910 1162 l
+1154053 1762910 1151920 1760778 1162 l
+1151920 1760778 1149788 1760778 1162 l
+1151920 1760778 1154053 1758646 1162 l
+1154053 1758646 1154053 1756514 1162 l
+1154053 1756514 1151920 1754382 1162 l
+1151920 1754382 1147656 1754382 1162 l
+1147656 1754382 1145524 1756514 1162 l
+973421 1640743 969157 1640743 1162 l
+969157 1640743 967025 1638611 1162 l
+967025 1638611 967025 1630083 1162 l
+967025 1630083 969157 1627951 1162 l
+969157 1627951 973421 1627951 1162 l
+973421 1627951 975554 1630083 1162 l
+975554 1630083 975554 1638611 1162 l
+975554 1638611 973421 1640743 1162 l
+988393 1638611 986260 1640743 1162 l
+986260 1640743 981996 1640743 1162 l
+981996 1640743 979864 1638611 1162 l
+979864 1638611 979864 1636479 1162 l
+979864 1636479 981996 1634346 1162 l
+981996 1634346 986260 1634346 1162 l
+986260 1634346 988393 1632215 1162 l
+988393 1632215 988393 1630083 1162 l
+988393 1630083 986260 1627951 1162 l
+986260 1627951 981996 1627951 1162 l
+981996 1627951 979864 1630083 1162 l
+1001232 1638611 999099 1640743 1162 l
+999099 1640743 994836 1640743 1162 l
+994836 1640743 992704 1638611 1162 l
+992704 1638611 992704 1630083 1162 l
+992704 1630083 994836 1627951 1162 l
+994836 1627951 999099 1627951 1162 l
+999099 1627951 1001232 1630083 1162 l
+1014072 1627951 1005543 1627951 1162 l
+1005543 1627951 1014072 1636479 1162 l
+1014072 1636479 1014072 1638611 1162 l
+1014072 1638611 1011939 1640743 1162 l
+1011939 1640743 1007675 1640743 1162 l
+1007675 1640743 1005543 1638611 1162 l
+921821 1634342 945062 1634342 1394 l
+918850 1648837 920982 1650969 1162 l
+920982 1650969 920982 1638177 1162 l
+918850 1638177 923114 1638177 1162 l
+938078 1650969 929549 1650969 1162 l
+929549 1650969 929549 1644573 1162 l
+929549 1644573 933813 1646705 1162 l
+933813 1646705 935945 1646705 1162 l
+935945 1646705 938078 1644573 1162 l
+938078 1644573 938078 1640309 1162 l
+938078 1640309 935945 1638177 1162 l
+935945 1638177 931681 1638177 1162 l
+931681 1638177 929549 1640309 1162 l
+967025 1454815 967025 1446287 1162 l
+967025 1446287 971289 1442023 1162 l
+971289 1442023 975554 1446287 1162 l
+975554 1446287 975554 1454815 1162 l
+988393 1452683 986260 1454815 1162 l
+986260 1454815 981996 1454815 1162 l
+981996 1454815 979864 1452683 1162 l
+979864 1452683 979864 1450551 1162 l
+979864 1450551 981996 1448418 1162 l
+981996 1448418 986260 1448418 1162 l
+986260 1448418 988393 1446287 1162 l
+988393 1446287 988393 1444155 1162 l
+988393 1444155 986260 1442023 1162 l
+986260 1442023 981996 1442023 1162 l
+981996 1442023 979864 1444155 1162 l
+1001232 1452683 999099 1454815 1162 l
+999099 1454815 994836 1454815 1162 l
+994836 1454815 992704 1452683 1162 l
+992704 1452683 992704 1450551 1162 l
+992704 1450551 994836 1448418 1162 l
+994836 1448418 999099 1448418 1162 l
+999099 1448418 1001232 1446287 1162 l
+1001232 1446287 1001232 1444155 1162 l
+1001232 1444155 999099 1442023 1162 l
+999099 1442023 994836 1442023 1162 l
+994836 1442023 992704 1444155 1162 l
+921821 1448414 945062 1448414 1394 l
+938079 1465041 929550 1465041 1162 l
+929550 1465041 929550 1458645 1162 l
+929550 1458645 933814 1460777 1162 l
+933814 1460777 935946 1460777 1162 l
+935946 1460777 938079 1458645 1162 l
+938079 1458645 938079 1454381 1162 l
+938079 1454381 935946 1452249 1162 l
+935946 1452249 931682 1452249 1162 l
+931682 1452249 929550 1454381 1162 l
+967025 1756948 967025 1748420 1162 l
+967025 1748420 971289 1744156 1162 l
+971289 1744156 975554 1748420 1162 l
+975554 1748420 975554 1756948 1162 l
+979864 1756948 979864 1744156 1162 l
+979864 1744156 986260 1744156 1162 l
+986260 1744156 988393 1746288 1162 l
+988393 1746288 988393 1754816 1162 l
+988393 1754816 986260 1756948 1162 l
+986260 1756948 979864 1756948 1162 l
+992704 1756948 992704 1744156 1162 l
+992704 1744156 999099 1744156 1162 l
+999099 1744156 1001232 1746288 1162 l
+1001232 1746288 1001232 1754816 1162 l
+1001232 1754816 999099 1756948 1162 l
+999099 1756948 992704 1756948 1162 l
+921821 1750547 945062 1750547 1394 l
+918850 1765042 920982 1767174 1162 l
+920982 1767174 920982 1754382 1162 l
+918850 1754382 923114 1754382 1162 l
+935945 1754382 935945 1767174 1162 l
+935945 1767174 929549 1760778 1162 l
+929549 1760778 938078 1760778 1162 l
+1130990 1425173 945062 1425173 3719 l
+945062 1425173 945062 1773788 3719 l
+945062 1773788 1130990 1773788 3719 l
+1130990 1773788 1130990 1425173 3719 l
+945760 1786106 950722 1786106 1394 l
+948240 1786106 948240 1800992 1394 l
+945760 1800992 950722 1800992 1394 l
+968166 1798511 965685 1800992 1394 l
+965685 1800992 960723 1800992 1394 l
+960723 1800992 958242 1798511 1394 l
+958242 1798511 958242 1788586 1394 l
+958242 1788586 960723 1786106 1394 l
+960723 1786106 965685 1786106 1394 l
+965685 1786106 968166 1788586 1394 l
+973221 1798511 975702 1800992 1394 l
+975702 1800992 975702 1786106 1394 l
+973221 1786106 978183 1786106 1394 l
+945760 1402629 945760 1417515 1394 l
+945760 1417515 953202 1417515 1394 l
+953202 1417515 955684 1415035 1394 l
+955684 1415035 955684 1410072 1394 l
+955684 1410072 953202 1407591 1394 l
+953202 1407591 945760 1407591 1394 l
+960739 1402629 965701 1402629 1394 l
+963220 1402629 963220 1417515 1394 l
+960739 1417515 965701 1417515 1394 l
+983146 1415035 980664 1417515 1394 l
+980664 1417515 975702 1417515 1394 l
+975702 1417515 973221 1415035 1394 l
+973221 1415035 973221 1405110 1394 l
+973221 1405110 975702 1402629 1394 l
+975702 1402629 980664 1402629 1394 l
+980664 1402629 983146 1405110 1394 l
+988201 1415035 990681 1417515 1394 l
+990681 1417515 990681 1402629 1394 l
+988201 1402629 993163 1402629 1394 l
+1010607 1417515 1005645 1415035 1394 l
+1005645 1415035 1000683 1410072 1394 l
+1000683 1410072 1000683 1405110 1394 l
+1000683 1405110 1003164 1402629 1394 l
+1003164 1402629 1008126 1402629 1394 l
+1008126 1402629 1010607 1405110 1394 l
+1010607 1405110 1010607 1407591 1394 l
+1010607 1407591 1008126 1410072 1394 l
+1008126 1410072 1000683 1410072 1394 l
+1015663 1402629 1015663 1417515 1394 l
+1015663 1417515 1025587 1417515 1394 l
+1015663 1410072 1020625 1410072 1394 l
+1030642 1415035 1033123 1417515 1394 l
+1033123 1417515 1038085 1417515 1394 l
+1038085 1417515 1040566 1415035 1394 l
+1040566 1415035 1040566 1412553 1394 l
+1040566 1412553 1038085 1410072 1394 l
+1038085 1410072 1040566 1407591 1394 l
+1040566 1407591 1040566 1405110 1394 l
+1040566 1405110 1038085 1402629 1394 l
+1038085 1402629 1033123 1402629 1394 l
+1033123 1402629 1030642 1405110 1394 l
+1030642 1405110 1030642 1407591 1394 l
+1030642 1407591 1033123 1410072 1394 l
+1033123 1410072 1030642 1412553 1394 l
+1030642 1412553 1030642 1415035 1394 l
+1033123 1410072 1038085 1410072 1394 l
+1053064 1402629 1053064 1417515 1394 l
+1053064 1417515 1045622 1410072 1394 l
+1045622 1410072 1055546 1410072 1394 l
+1060601 1402629 1060601 1412553 1394 l
+1060601 1412553 1065563 1417515 1394 l
+1065563 1417515 1070525 1412553 1394 l
+1070525 1412553 1070525 1402629 1394 l
+1060601 1410072 1070525 1410072 1394 l
+1075581 1402629 1075581 1417515 1394 l
+1075581 1417515 1083023 1417515 1394 l
+1083023 1417515 1085505 1415035 1394 l
+1085505 1415035 1085505 1410072 1394 l
+1085505 1410072 1083023 1407591 1394 l
+1083023 1407591 1075581 1407591 1394 l
+828857 1750547 828857 1773788 1394 l
+828857 1843511 828857 1820270 1394 l
+828857 1820270 838154 1816784 1859 l
+838154 1816784 819561 1810973 1859 l
+819561 1810973 838154 1805163 1859 l
+838154 1805163 819561 1799353 1859 l
+819561 1799353 838154 1793543 1859 l
+838154 1793543 819561 1787732 1859 l
+819561 1787732 838154 1781922 1859 l
+838154 1781922 819561 1776112 1859 l
+819561 1776112 828857 1773788 1859 l
+843267 1809347 843267 1824233 1394 l
+843267 1824233 850709 1824233 1394 l
+850709 1824233 853191 1821752 1394 l
+853191 1821752 853191 1816789 1394 l
+853191 1816789 850709 1814309 1394 l
+850709 1814309 843267 1814309 1394 l
+848229 1814309 853191 1809347 1394 l
+858246 1821752 860727 1824233 1394 l
+860727 1824233 860727 1809347 1394 l
+858246 1809347 863208 1809347 1394 l
+845823 1775270 848304 1777751 1394 l
+848304 1777751 848304 1762865 1394 l
+845823 1762865 850785 1762865 1394 l
+858306 1777751 858306 1762865 1394 l
+858306 1767827 868230 1777751 1394 l
+860786 1770307 868230 1762865 1394 l
+735893 1843511 735893 1820270 1394 l
+735893 1750547 735893 1773788 1394 l
+735893 1773788 726597 1777274 1859 l
+726597 1777274 745190 1783084 1859 l
+745190 1783084 726597 1788895 1859 l
+726597 1788895 745190 1794705 1859 l
+745190 1794705 726597 1800515 1859 l
+726597 1800515 745190 1806325 1859 l
+745190 1806325 726597 1812136 1859 l
+726597 1812136 745190 1817946 1859 l
+745190 1817946 735893 1820270 1859 l
+692919 1816319 692919 1831205 1394 l
+692919 1831205 700361 1831205 1394 l
+700361 1831205 702843 1828724 1394 l
+702843 1828724 702843 1823762 1394 l
+702843 1823762 700361 1821281 1394 l
+700361 1821281 692919 1821281 1394 l
+697881 1821281 702843 1816319 1394 l
+717822 1816319 707898 1816319 1394 l
+707898 1816319 717822 1826243 1394 l
+717822 1826243 717822 1828724 1394 l
+717822 1828724 715341 1831205 1394 l
+715341 1831205 710379 1831205 1394 l
+710379 1831205 707898 1828724 1394 l
+745042 1755672 735118 1755672 1394 l
+735118 1755672 735118 1748228 1394 l
+735118 1748228 740080 1750710 1394 l
+740080 1750710 742561 1750710 1394 l
+742561 1750710 745042 1748228 1394 l
+745042 1748228 745042 1743266 1394 l
+745042 1743266 742561 1740786 1394 l
+742561 1740786 737599 1740786 1394 l
+737599 1740786 735118 1743266 1394 l
+750098 1740786 750098 1743266 1394 l
+750098 1743266 752578 1743266 1394 l
+752578 1743266 752578 1740786 1394 l
+752578 1740786 750098 1740786 1394 l
+762580 1753191 765061 1755672 1394 l
+765061 1755672 765061 1740786 1394 l
+762580 1740786 767542 1740786 1394 l
+775063 1755672 775063 1740786 1394 l
+775063 1745748 784987 1755672 1394 l
+777543 1748228 784987 1740786 1394 l
+1386641 1448414 1433123 1448414 1394 l
+1401624 1462909 1403755 1465041 1162 l
+1403755 1465041 1403755 1452249 1162 l
+1401624 1452249 1405887 1452249 1162 l
+1386641 1471655 1433123 1471655 1394 l
+1408012 1475490 1399483 1475490 1162 l
+1399483 1475490 1408012 1484018 1162 l
+1408012 1484018 1408012 1486150 1162 l
+1408012 1486150 1405879 1488282 1162 l
+1405879 1488282 1401615 1488282 1162 l
+1401615 1488282 1399483 1486150 1162 l
+1386641 1494896 1433123 1494896 1394 l
+1399483 1509391 1401615 1511523 1162 l
+1401615 1511523 1405879 1511523 1162 l
+1405879 1511523 1408012 1509391 1162 l
+1408012 1509391 1408012 1507259 1162 l
+1408012 1507259 1405879 1505127 1162 l
+1405879 1505127 1403747 1505127 1162 l
+1405879 1505127 1408012 1502995 1162 l
+1408012 1502995 1408012 1500863 1162 l
+1408012 1500863 1405879 1498731 1162 l
+1405879 1498731 1401615 1498731 1162 l
+1401615 1498731 1399483 1500863 1162 l
+1421503 1425173 1467985 1425173 3719 l
+1444744 1494896 1433123 1494896 5578 l
+1444744 1471655 1433123 1471655 5578 l
+1444744 1448414 1433123 1448414 5578 l
+1386641 1518137 1433123 1518137 1394 l
+1405879 1521972 1405879 1534764 1162 l
+1405879 1534764 1399483 1528368 1162 l
+1399483 1528368 1408012 1528368 1162 l
+1386641 1541378 1433123 1541378 1394 l
+1408012 1558005 1399483 1558005 1162 l
+1399483 1558005 1399483 1551609 1162 l
+1399483 1551609 1403747 1553741 1162 l
+1403747 1553741 1405879 1553741 1162 l
+1405879 1553741 1408012 1551609 1162 l
+1408012 1551609 1408012 1547345 1162 l
+1408012 1547345 1405879 1545213 1162 l
+1405879 1545213 1401615 1545213 1162 l
+1401615 1545213 1399483 1547345 1162 l
+1467985 1564619 1467985 1425173 3719 l
+1421503 1425173 1421503 1564619 3719 l
+1467985 1564619 1421503 1564619 3719 l
+1444744 1541378 1433123 1541378 5578 l
+1444744 1518137 1433123 1518137 5578 l
+1478392 1411705 1473430 1411705 1394 l
+1473430 1411705 1470949 1409224 1394 l
+1470949 1409224 1470949 1399299 1394 l
+1470949 1399299 1473430 1396819 1394 l
+1473430 1396819 1478392 1396819 1394 l
+1478392 1396819 1480874 1399299 1394 l
+1480874 1399299 1480874 1409224 1394 l
+1480874 1409224 1478392 1411705 1394 l
+1485929 1406743 1485929 1399299 1394 l
+1485929 1399299 1488409 1396819 1394 l
+1488409 1396819 1495853 1396819 1394 l
+1495853 1396819 1495853 1406743 1394 l
+1503389 1409224 1503389 1399299 1394 l
+1503389 1399299 1505870 1396819 1394 l
+1500908 1406743 1505870 1406743 1394 l
+1513391 1391857 1513391 1406743 1394 l
+1513391 1406743 1520833 1406743 1394 l
+1520833 1406743 1523315 1404261 1394 l
+1523315 1404261 1523315 1399299 1394 l
+1523315 1399299 1520833 1396819 1394 l
+1520833 1396819 1513391 1396819 1394 l
+1528370 1406743 1528370 1399299 1394 l
+1528370 1399299 1530851 1396819 1394 l
+1530851 1396819 1538294 1396819 1394 l
+1538294 1396819 1538294 1406743 1394 l
+1545830 1409224 1545830 1399299 1394 l
+1545830 1399299 1548312 1396819 1394 l
+1543350 1406743 1548312 1406743 1394 l
+1430353 1410386 1427871 1412867 1394 l
+1427871 1412867 1422909 1412867 1394 l
+1422909 1412867 1420429 1410386 1394 l
+1420429 1410386 1420429 1407905 1394 l
+1420429 1407905 1422909 1405424 1394 l
+1422909 1405424 1427871 1405424 1394 l
+1427871 1405424 1430353 1402943 1394 l
+1430353 1402943 1430353 1400461 1394 l
+1430353 1400461 1427871 1397981 1394 l
+1427871 1397981 1422909 1397981 1394 l
+1422909 1397981 1420429 1400461 1394 l
+1435408 1412867 1435408 1402943 1394 l
+1435408 1402943 1440370 1397981 1394 l
+1440370 1397981 1445332 1402943 1394 l
+1445332 1402943 1445332 1412867 1394 l
+1450388 1410386 1452868 1412867 1394 l
+1452868 1412867 1452868 1397981 1394 l
+1450388 1397981 1455350 1397981 1394 l
+1386641 1634342 1433123 1634342 1394 l
+1401624 1648837 1403755 1650969 1162 l
+1403755 1650969 1403755 1638177 1162 l
+1401624 1638177 1405887 1638177 1162 l
+1386641 1657583 1433123 1657583 1394 l
+1408012 1661418 1399483 1661418 1162 l
+1399483 1661418 1408012 1669946 1162 l
+1408012 1669946 1408012 1672078 1162 l
+1408012 1672078 1405879 1674210 1162 l
+1405879 1674210 1401615 1674210 1162 l
+1401615 1674210 1399483 1672078 1162 l
+1386641 1680824 1433123 1680824 1394 l
+1399483 1695319 1401615 1697451 1162 l
+1401615 1697451 1405879 1697451 1162 l
+1405879 1697451 1408012 1695319 1162 l
+1408012 1695319 1408012 1693187 1162 l
+1408012 1693187 1405879 1691055 1162 l
+1405879 1691055 1403747 1691055 1162 l
+1405879 1691055 1408012 1688923 1162 l
+1408012 1688923 1408012 1686791 1162 l
+1408012 1686791 1405879 1684659 1162 l
+1405879 1684659 1401615 1684659 1162 l
+1401615 1684659 1399483 1686791 1162 l
+1421503 1611101 1467985 1611101 3719 l
+1444744 1680824 1433123 1680824 5578 l
+1444744 1657583 1433123 1657583 5578 l
+1444744 1634342 1433123 1634342 5578 l
+1386641 1704065 1433123 1704065 1394 l
+1405879 1707900 1405879 1720692 1162 l
+1405879 1720692 1399483 1714296 1162 l
+1399483 1714296 1408012 1714296 1162 l
+1386641 1727306 1433123 1727306 1394 l
+1408012 1743933 1399483 1743933 1162 l
+1399483 1743933 1399483 1737537 1162 l
+1399483 1737537 1403747 1739669 1162 l
+1403747 1739669 1405879 1739669 1162 l
+1405879 1739669 1408012 1737537 1162 l
+1408012 1737537 1408012 1733273 1162 l
+1408012 1733273 1405879 1731141 1162 l
+1405879 1731141 1401615 1731141 1162 l
+1401615 1731141 1399483 1733273 1162 l
+1444744 1727306 1433123 1727306 5578 l
+1444744 1704065 1433123 1704065 5578 l
+1386641 1750547 1433123 1750547 1394 l
+1408012 1767174 1403747 1765042 1162 l
+1403747 1765042 1399483 1760778 1162 l
+1399483 1760778 1399483 1756514 1162 l
+1399483 1756514 1401615 1754382 1162 l
+1401615 1754382 1405879 1754382 1162 l
+1405879 1754382 1408012 1756514 1162 l
+1408012 1756514 1408012 1758646 1162 l
+1408012 1758646 1405879 1760778 1162 l
+1405879 1760778 1399483 1760778 1162 l
+1386641 1773788 1433123 1773788 1394 l
+1399483 1790415 1408012 1790415 1162 l
+1408012 1790415 1408012 1788283 1162 l
+1408012 1788283 1399483 1779755 1162 l
+1399483 1779755 1399483 1777623 1162 l
+1386641 1797029 1433123 1797029 1394 l
+1399483 1811524 1401615 1813656 1162 l
+1401615 1813656 1405879 1813656 1162 l
+1405879 1813656 1408012 1811524 1162 l
+1408012 1811524 1408012 1809392 1162 l
+1408012 1809392 1405879 1807260 1162 l
+1405879 1807260 1408012 1805128 1162 l
+1408012 1805128 1408012 1802996 1162 l
+1408012 1802996 1405879 1800864 1162 l
+1405879 1800864 1401615 1800864 1162 l
+1401615 1800864 1399483 1802996 1162 l
+1399483 1802996 1399483 1805128 1162 l
+1399483 1805128 1401615 1807260 1162 l
+1401615 1807260 1399483 1809392 1162 l
+1399483 1809392 1399483 1811524 1162 l
+1401615 1807260 1405879 1807260 1162 l
+1444744 1797029 1433123 1797029 5578 l
+1444744 1773788 1433123 1773788 5578 l
+1444744 1750547 1433123 1750547 5578 l
+1467985 1820270 1467985 1611101 3719 l
+1421503 1611101 1421503 1820270 3719 l
+1467985 1820270 1421503 1820270 3719 l
+1471767 1841664 1471767 1826777 1394 l
+1471767 1831739 1481691 1841664 1394 l
+1474247 1834220 1481691 1826777 1394 l
+1494189 1826777 1489227 1826777 1394 l
+1489227 1826777 1486746 1829258 1394 l
+1486746 1829258 1486746 1834220 1394 l
+1486746 1834220 1489227 1836701 1394 l
+1489227 1836701 1494189 1836701 1394 l
+1494189 1836701 1496670 1834220 1394 l
+1496670 1834220 1496670 1831739 1394 l
+1496670 1831739 1486746 1831739 1394 l
+1501725 1836701 1501725 1829258 1394 l
+1501725 1829258 1504206 1826777 1394 l
+1504206 1826777 1511650 1826777 1394 l
+1511650 1836701 1511650 1824297 1394 l
+1511650 1824297 1509168 1821815 1394 l
+1509168 1821815 1506687 1821815 1394 l
+1516705 1821815 1516705 1836701 1394 l
+1516705 1836701 1524148 1836701 1394 l
+1524148 1836701 1526629 1834220 1394 l
+1526629 1834220 1526629 1829258 1394 l
+1526629 1829258 1524148 1826777 1394 l
+1524148 1826777 1516705 1826777 1394 l
+1534165 1836701 1539127 1836701 1394 l
+1539127 1836701 1541608 1834220 1394 l
+1541608 1834220 1541608 1826777 1394 l
+1541608 1826777 1534165 1826777 1394 l
+1534165 1826777 1531684 1829258 1394 l
+1531684 1829258 1534165 1831739 1394 l
+1534165 1831739 1541608 1831739 1394 l
+1556588 1841664 1556588 1826777 1394 l
+1556588 1826777 1549144 1826777 1394 l
+1549144 1826777 1546664 1829258 1394 l
+1546664 1829258 1546664 1834220 1394 l
+1546664 1834220 1549144 1836701 1394 l
+1549144 1836701 1556588 1836701 1394 l
+1433667 1840345 1431185 1842826 1394 l
+1431185 1842826 1426223 1842826 1394 l
+1426223 1842826 1423743 1840345 1394 l
+1423743 1840345 1423743 1837864 1394 l
+1423743 1837864 1426223 1835382 1394 l
+1426223 1835382 1431185 1835382 1394 l
+1431185 1835382 1433667 1832901 1394 l
+1433667 1832901 1433667 1830420 1394 l
+1433667 1830420 1431185 1827939 1394 l
+1431185 1827939 1426223 1827939 1394 l
+1426223 1827939 1423743 1830420 1394 l
+1438722 1842826 1438722 1832901 1394 l
+1438722 1832901 1443684 1827939 1394 l
+1443684 1827939 1448646 1832901 1394 l
+1448646 1832901 1448646 1842826 1394 l
+1463626 1827939 1453702 1827939 1394 l
+1453702 1827939 1463626 1837864 1394 l
+1463626 1837864 1463626 1840345 1394 l
+1463626 1840345 1461144 1842826 1394 l
+1461144 1842826 1456182 1842826 1394 l
+1456182 1842826 1453702 1840345 1394 l
+642929 1866752 596447 1866752 1394 l
+618410 1881247 620542 1883379 1162 l
+620542 1883379 620542 1870587 1162 l
+618410 1870587 622674 1870587 1162 l
+642929 1889993 596447 1889993 1394 l
+626939 1893828 618410 1893828 1162 l
+618410 1893828 626939 1902356 1162 l
+626939 1902356 626939 1904488 1162 l
+626939 1904488 624806 1906620 1162 l
+624806 1906620 620542 1906620 1162 l
+620542 1906620 618410 1904488 1162 l
+642929 1913234 596447 1913234 1394 l
+618410 1927729 620542 1929861 1162 l
+620542 1929861 624806 1929861 1162 l
+624806 1929861 626939 1927729 1162 l
+626939 1927729 626939 1925597 1162 l
+626939 1925597 624806 1923465 1162 l
+624806 1923465 622674 1923465 1162 l
+624806 1923465 626939 1921333 1162 l
+626939 1921333 626939 1919201 1162 l
+626939 1919201 624806 1917069 1162 l
+624806 1917069 620542 1917069 1162 l
+620542 1917069 618410 1919201 1162 l
+608068 1843511 561586 1843511 3719 l
+562283 1820967 562283 1835853 1394 l
+562283 1835853 569726 1835853 1394 l
+569726 1835853 572207 1833373 1394 l
+572207 1833373 572207 1828410 1394 l
+572207 1828410 569726 1825929 1394 l
+569726 1825929 562283 1825929 1394 l
+579743 1820967 584705 1820967 1394 l
+584705 1820967 587187 1823448 1394 l
+587187 1823448 587187 1828410 1394 l
+587187 1828410 584705 1830891 1394 l
+584705 1830891 579743 1830891 1394 l
+579743 1830891 577263 1828410 1394 l
+577263 1828410 577263 1823448 1394 l
+577263 1823448 579743 1820967 1394 l
+592242 1830891 592242 1823448 1394 l
+592242 1823448 594723 1820967 1394 l
+594723 1820967 597204 1823448 1394 l
+597204 1823448 599685 1820967 1394 l
+599685 1820967 602166 1823448 1394 l
+602166 1823448 602166 1830891 1394 l
+614664 1820967 609702 1820967 1394 l
+609702 1820967 607221 1823448 1394 l
+607221 1823448 607221 1828410 1394 l
+607221 1828410 609702 1830891 1394 l
+609702 1830891 614664 1830891 1394 l
+614664 1830891 617146 1828410 1394 l
+617146 1828410 617146 1825929 1394 l
+617146 1825929 607221 1825929 1394 l
+622201 1820967 622201 1830891 1394 l
+622201 1825929 627163 1830891 1394 l
+627163 1830891 629644 1830891 1394 l
+584827 1913234 596447 1913234 5578 l
+584827 1889993 596447 1889993 5578 l
+584827 1866752 596447 1866752 5578 l
+561586 1936475 561586 1843511 3719 l
+608068 1843511 608068 1936475 3719 l
+572207 1956550 569726 1959031 1394 l
+569726 1959031 564764 1959031 1394 l
+564764 1959031 562283 1956550 1394 l
+562283 1956550 562283 1954069 1394 l
+562283 1954069 564764 1951587 1394 l
+564764 1951587 569726 1951587 1394 l
+569726 1951587 572207 1949106 1394 l
+572207 1949106 572207 1946625 1394 l
+572207 1946625 569726 1944144 1394 l
+569726 1944144 564764 1944144 1394 l
+564764 1944144 562283 1946625 1394 l
+577263 1959031 577263 1949106 1394 l
+577263 1949106 582225 1944144 1394 l
+582225 1944144 587187 1949106 1394 l
+587187 1949106 587187 1959031 1394 l
+592242 1956550 594723 1959031 1394 l
+594723 1959031 599685 1959031 1394 l
+599685 1959031 602166 1956550 1394 l
+602166 1956550 602166 1954069 1394 l
+602166 1954069 599685 1951587 1394 l
+599685 1951587 597204 1951587 1394 l
+599685 1951587 602166 1949106 1394 l
+602166 1949106 602166 1946625 1394 l
+602166 1946625 599685 1944144 1394 l
+599685 1944144 594723 1944144 1394 l
+594723 1944144 592242 1946625 1394 l
+561586 1936475 608068 1936475 3719 l
+1107749 1889993 1084508 1889993 1394 l
+1027103 1904402 1027103 1919288 1394 l
+1027103 1919288 1034546 1919288 1394 l
+1034546 1919288 1037027 1916808 1394 l
+1037027 1916808 1037027 1911845 1394 l
+1037027 1911845 1034546 1909364 1394 l
+1034546 1909364 1027103 1909364 1394 l
+1032065 1909364 1037027 1904402 1394 l
+1042083 1916808 1044563 1919288 1394 l
+1044563 1919288 1049525 1919288 1394 l
+1049525 1919288 1052007 1916808 1394 l
+1052007 1916808 1052007 1914326 1394 l
+1052007 1914326 1049525 1911845 1394 l
+1049525 1911845 1047045 1911845 1394 l
+1049525 1911845 1052007 1909364 1394 l
+1052007 1909364 1052007 1906883 1394 l
+1052007 1906883 1049525 1904402 1394 l
+1049525 1904402 1044563 1904402 1394 l
+1044563 1904402 1042083 1906883 1394 l
+1027103 1872882 1029584 1875363 1394 l
+1029584 1875363 1029584 1860477 1394 l
+1027103 1860477 1032065 1860477 1394 l
+1039585 1862957 1039585 1872882 1394 l
+1039585 1872882 1042066 1875363 1394 l
+1042066 1875363 1047028 1875363 1394 l
+1047028 1875363 1049510 1872882 1394 l
+1049510 1872882 1049510 1862957 1394 l
+1049510 1862957 1047028 1860477 1394 l
+1047028 1860477 1042066 1860477 1394 l
+1042066 1860477 1039585 1862957 1394 l
+1039585 1862957 1049510 1872882 1394 l
+1054565 1875363 1054565 1860477 1394 l
+1054565 1865439 1064489 1875363 1394 l
+1057046 1867919 1064489 1860477 1394 l
+1014785 1889993 1038026 1889993 1394 l
+1038026 1889993 1041512 1899289 1859 l
+1041512 1899289 1047323 1880696 1859 l
+1047323 1880696 1053133 1899289 1859 l
+1053133 1899289 1058943 1880696 1859 l
+1058943 1880696 1064753 1899289 1859 l
+1064753 1899289 1070564 1880696 1859 l
+1070564 1880696 1076374 1899289 1859 l
+1076374 1899289 1082184 1880696 1859 l
+1082184 1880696 1084508 1889993 1859 l
+1200713 1308968 1200713 1262486 1394 l
+1186218 1284449 1184086 1286581 1162 l
+1184086 1286581 1196879 1286581 1162 l
+1196879 1284449 1196879 1288713 1162 l
+1177472 1308968 1177472 1262486 1394 l
+1173638 1292977 1173638 1284449 1162 l
+1173638 1284449 1165109 1292977 1162 l
+1165109 1292977 1162977 1292977 1162 l
+1162977 1292977 1160845 1290844 1162 l
+1160845 1290844 1160845 1286581 1162 l
+1160845 1286581 1162977 1284449 1162 l
+1154231 1308968 1154231 1262486 1394 l
+1139736 1284449 1137604 1286581 1162 l
+1137604 1286581 1137604 1290844 1162 l
+1137604 1290844 1139736 1292977 1162 l
+1139736 1292977 1141868 1292977 1162 l
+1141868 1292977 1144001 1290844 1162 l
+1144001 1290844 1144001 1288713 1162 l
+1144001 1290844 1146133 1292977 1162 l
+1146133 1292977 1148265 1292977 1162 l
+1148265 1292977 1150397 1290844 1162 l
+1150397 1290844 1150397 1286581 1162 l
+1150397 1286581 1148265 1284449 1162 l
+1223954 1274106 1223954 1227624 3719 l
+1154231 1250865 1154231 1262486 5578 l
+1177472 1250865 1177472 1262486 5578 l
+1200713 1250865 1200713 1262486 5578 l
+1130990 1227624 1223954 1227624 3719 l
+1223954 1274106 1130990 1274106 3719 l
+1130990 1227624 1130990 1274106 3719 l
+1099572 1201217 1097090 1203698 1394 l
+1097090 1203698 1092128 1203698 1394 l
+1092128 1203698 1089648 1201217 1394 l
+1089648 1201217 1089648 1198736 1394 l
+1089648 1198736 1092128 1196255 1394 l
+1092128 1196255 1097090 1196255 1394 l
+1097090 1196255 1099572 1193774 1394 l
+1099572 1193774 1099572 1191292 1394 l
+1099572 1191292 1097090 1188812 1394 l
+1097090 1188812 1092128 1188812 1394 l
+1092128 1188812 1089648 1191292 1394 l
+1112070 1188812 1107108 1188812 1394 l
+1107108 1188812 1104627 1191292 1394 l
+1104627 1191292 1104627 1196255 1394 l
+1104627 1196255 1107108 1198736 1394 l
+1107108 1198736 1112070 1198736 1394 l
+1112070 1198736 1114551 1196255 1394 l
+1114551 1196255 1114551 1193774 1394 l
+1114551 1193774 1104627 1193774 1394 l
+1119607 1188812 1119607 1198736 1394 l
+1119607 1193774 1124569 1198736 1394 l
+1124569 1198736 1127049 1198736 1394 l
+1134586 1188812 1144510 1203698 1394 l
+1149566 1188812 1149566 1203698 1394 l
+1149566 1203698 1157008 1203698 1394 l
+1157008 1203698 1159490 1201217 1394 l
+1159490 1201217 1159490 1196255 1394 l
+1159490 1196255 1157008 1193774 1394 l
+1157008 1193774 1149566 1193774 1394 l
+1167026 1198736 1171988 1198736 1394 l
+1171988 1198736 1174469 1196255 1394 l
+1174469 1196255 1174469 1188812 1394 l
+1174469 1188812 1167026 1188812 1394 l
+1167026 1188812 1164545 1191292 1394 l
+1164545 1191292 1167026 1193774 1394 l
+1167026 1193774 1174469 1193774 1394 l
+1179525 1188812 1179525 1198736 1394 l
+1179525 1193774 1184487 1198736 1394 l
+1184487 1198736 1186967 1198736 1394 l
+1219408 1201217 1216926 1203698 1394 l
+1216926 1203698 1211964 1203698 1394 l
+1211964 1203698 1209484 1201217 1394 l
+1209484 1201217 1209484 1198736 1394 l
+1209484 1198736 1211964 1196255 1394 l
+1211964 1196255 1216926 1196255 1394 l
+1216926 1196255 1219408 1193774 1394 l
+1219408 1193774 1219408 1191292 1394 l
+1219408 1191292 1216926 1188812 1394 l
+1216926 1188812 1211964 1188812 1394 l
+1211964 1188812 1209484 1191292 1394 l
+1231906 1188812 1226944 1188812 1394 l
+1226944 1188812 1224463 1191292 1394 l
+1224463 1191292 1224463 1196255 1394 l
+1224463 1196255 1226944 1198736 1394 l
+1226944 1198736 1231906 1198736 1394 l
+1231906 1198736 1234387 1196255 1394 l
+1234387 1196255 1234387 1193774 1394 l
+1234387 1193774 1224463 1193774 1394 l
+1239443 1203698 1241923 1203698 1394 l
+1241923 1203698 1241923 1188812 1394 l
+1239443 1188812 1244405 1188812 1394 l
+1259368 1188812 1254406 1188812 1394 l
+1254406 1188812 1251925 1191292 1394 l
+1251925 1191292 1251925 1196255 1394 l
+1251925 1196255 1254406 1198736 1394 l
+1254406 1198736 1259368 1198736 1394 l
+1259368 1198736 1261849 1196255 1394 l
+1261849 1196255 1261849 1193774 1394 l
+1261849 1193774 1251925 1193774 1394 l
+1276829 1198736 1269385 1198736 1394 l
+1269385 1198736 1266904 1196255 1394 l
+1266904 1196255 1266904 1191292 1394 l
+1266904 1191292 1269385 1188812 1394 l
+1269385 1188812 1276829 1188812 1394 l
+1284364 1201217 1284364 1191292 1394 l
+1284364 1191292 1286846 1188812 1394 l
+1281884 1198736 1286846 1198736 1394 l
+1066459 1270940 1063978 1273421 1394 l
+1063978 1273421 1059016 1273421 1394 l
+1059016 1273421 1056535 1270940 1394 l
+1056535 1270940 1056535 1268459 1394 l
+1056535 1268459 1059016 1265978 1394 l
+1059016 1265978 1063978 1265978 1394 l
+1063978 1265978 1066459 1263497 1394 l
+1066459 1263497 1066459 1261015 1394 l
+1066459 1261015 1063978 1258535 1394 l
+1063978 1258535 1059016 1258535 1394 l
+1059016 1258535 1056535 1261015 1394 l
+1071514 1273421 1071514 1263497 1394 l
+1071514 1263497 1076476 1258535 1394 l
+1076476 1258535 1081439 1263497 1394 l
+1081439 1263497 1081439 1273421 1394 l
+1093936 1258535 1093936 1273421 1394 l
+1093936 1273421 1086494 1265978 1394 l
+1086494 1265978 1096418 1265978 1394 l
+712652 1564619 759134 1564619 2324 l
+735893 1555322 735893 1541378 1394 l
+735892 1518373 37096 2324 52.12 90.00 0 a
+735893 1518137 37185 2324 90.00 127.37 0 a
+735893 1587860 735893 1564619 1394 l
+735893 1518137 735893 1541378 1394 l
+755811 1583532 753330 1586013 1394 l
+753330 1586013 748368 1586013 1394 l
+748368 1586013 745887 1583532 1394 l
+745887 1583532 745887 1573607 1394 l
+745887 1573607 748368 1571126 1394 l
+748368 1571126 753330 1571126 1394 l
+753330 1571126 755811 1573607 1394 l
+770791 1571126 760866 1571126 1394 l
+760866 1571126 770791 1581050 1394 l
+770791 1581050 770791 1583532 1394 l
+770791 1583532 768309 1586013 1394 l
+768309 1586013 763347 1586013 1394 l
+763347 1586013 760866 1583532 1394 l
+745887 1539374 748368 1541855 1394 l
+748368 1541855 748368 1526968 1394 l
+745887 1526968 750849 1526968 1394 l
+758369 1529449 758369 1539374 1394 l
+758369 1539374 760850 1541855 1394 l
+760850 1541855 765812 1541855 1394 l
+765812 1541855 768293 1539374 1394 l
+768293 1539374 768293 1529449 1394 l
+768293 1529449 765812 1526968 1394 l
+765812 1526968 760850 1526968 1394 l
+760850 1526968 758369 1529449 1394 l
+758369 1529449 768293 1539374 1394 l
+773349 1529449 773349 1539374 1394 l
+773349 1539374 775829 1541855 1394 l
+775829 1541855 780791 1541855 1394 l
+780791 1541855 783273 1539374 1394 l
+783273 1539374 783273 1529449 1394 l
+783273 1529449 780791 1526968 1394 l
+780791 1526968 775829 1526968 1394 l
+775829 1526968 773349 1529449 1394 l
+773349 1529449 783273 1539374 1394 l
+788328 1522006 788328 1536893 1394 l
+788328 1536893 795771 1536893 1394 l
+795771 1536893 798252 1534411 1394 l
+798252 1534411 798252 1529449 1394 l
+798252 1529449 795771 1526968 1394 l
+795771 1526968 788328 1526968 1394 l
+805788 1526968 805788 1539374 1394 l
+805788 1539374 808270 1541855 1394 l
+803308 1534411 808270 1534411 1394 l
+526724 1564619 573206 1564619 2324 l
+549965 1555322 549965 1541378 1394 l
+549964 1518373 37096 2324 52.12 90.00 0 a
+549965 1518137 37185 2324 90.00 127.37 0 a
+549965 1587860 549965 1564619 1394 l
+549965 1518137 549965 1541378 1394 l
+569883 1583532 567402 1586013 1394 l
+567402 1586013 562440 1586013 1394 l
+562440 1586013 559959 1583532 1394 l
+559959 1583532 559959 1573607 1394 l
+559959 1573607 562440 1571126 1394 l
+562440 1571126 567402 1571126 1394 l
+567402 1571126 569883 1573607 1394 l
+574938 1583532 577419 1586013 1394 l
+577419 1586013 582381 1586013 1394 l
+582381 1586013 584863 1583532 1394 l
+584863 1583532 584863 1581050 1394 l
+584863 1581050 582381 1578569 1394 l
+582381 1578569 579900 1578569 1394 l
+582381 1578569 584863 1576088 1394 l
+584863 1576088 584863 1573607 1394 l
+584863 1573607 582381 1571126 1394 l
+582381 1571126 577419 1571126 1394 l
+577419 1571126 574938 1573607 1394 l
+596447 1564619 642929 1564619 2324 l
+619688 1555322 619688 1541378 1394 l
+619687 1518373 37096 2324 52.12 90.00 0 a
+619688 1518137 37185 2324 90.00 127.37 0 a
+619688 1587860 619688 1564619 1394 l
+619688 1518137 619688 1541378 1394 l
+639606 1583532 637125 1586013 1394 l
+637125 1586013 632163 1586013 1394 l
+632163 1586013 629682 1583532 1394 l
+629682 1583532 629682 1573607 1394 l
+629682 1573607 632163 1571126 1394 l
+632163 1571126 637125 1571126 1394 l
+637125 1571126 639606 1573607 1394 l
+652104 1571126 652104 1586013 1394 l
+652104 1586013 644661 1578569 1394 l
+644661 1578569 654586 1578569 1394 l
+597145 1693298 597145 1703223 1394 l
+597145 1703223 599625 1705704 1394 l
+599625 1705704 604587 1705704 1394 l
+604587 1705704 607069 1703223 1394 l
+607069 1703223 607069 1693298 1394 l
+607069 1693298 604587 1690818 1394 l
+604587 1690818 599625 1690818 1394 l
+599625 1690818 597145 1693298 1394 l
+602107 1695780 607069 1690818 1394 l
+612124 1703223 614605 1705704 1394 l
+614605 1705704 614605 1690818 1394 l
+612124 1690818 617086 1690818 1394 l
+582503 1680824 596447 1680824 1394 l
+549965 1680824 563910 1680824 1394 l
+569720 1694768 569720 1666879 2324 l
+569720 1666879 576692 1666879 2324 l
+576692 1666879 576692 1694768 2324 l
+576692 1694768 569720 1694768 2324 l
+582503 1697093 582503 1664555 2324 l
+563910 1697093 563910 1664555 2324 l
+875339 1541378 921821 1541378 2324 l
+898580 1532081 898580 1518137 1394 l
+898579 1495132 37096 2324 52.12 90.00 0 a
+898580 1494896 37185 2324 90.00 127.37 0 a
+898580 1564619 898580 1541378 1394 l
+898580 1494896 898580 1518137 1394 l
+918498 1560291 916017 1562772 1394 l
+916017 1562772 911055 1562772 1394 l
+911055 1562772 908574 1560291 1394 l
+908574 1560291 908574 1550366 1394 l
+908574 1550366 911055 1547885 1394 l
+911055 1547885 916017 1547885 1394 l
+916017 1547885 918498 1550366 1394 l
+923553 1560291 926034 1562772 1394 l
+926034 1562772 926034 1547885 1394 l
+923553 1547885 928515 1547885 1394 l
+838851 1480486 838851 1482967 1394 l
+838851 1482967 841332 1482967 1394 l
+841332 1482967 841332 1480486 1394 l
+841332 1480486 838851 1480486 1394 l
+851333 1482967 851333 1492892 1394 l
+851333 1492892 853814 1495373 1394 l
+853814 1495373 858776 1495373 1394 l
+858776 1495373 861257 1492892 1394 l
+861257 1492892 861257 1482967 1394 l
+861257 1482967 858776 1480486 1394 l
+858776 1480486 853814 1480486 1394 l
+853814 1480486 851333 1482967 1394 l
+851333 1482967 861257 1492892 1394 l
+866313 1492892 868793 1495373 1394 l
+868793 1495373 868793 1480486 1394 l
+866313 1480486 871275 1480486 1394 l
+878795 1490411 878795 1482967 1394 l
+878795 1482967 881276 1480486 1394 l
+881276 1480486 888719 1480486 1394 l
+888719 1480486 888719 1490411 1394 l
+896255 1480486 896255 1492892 1394 l
+896255 1492892 898737 1495373 1394 l
+893775 1487929 898737 1487929 1394 l
+735893 1750547 735893 1680824 1394 l
+921821 1680824 735893 1680824 1394 l
+735893 1587860 735893 1680824 1394 l
+735893 1680824 9296 p
+596447 1680824 619688 1680824 1394 l
+619688 1680824 735893 1680824 1394 l
+619688 1587860 619688 1680824 1394 l
+619688 1680824 9296 p
+828857 1750547 828857 1587860 1394 l
+828857 1587860 921821 1587860 1394 l
+1154231 1448414 1386641 1448414 1394 l
+1154231 1471655 1386641 1471655 1394 l
+1154231 1494896 1386641 1494896 1394 l
+1154231 1518137 1386641 1518137 1394 l
+1154231 1541378 1177472 1541378 1394 l
+1177472 1541378 1386641 1541378 1394 l
+1107749 1889993 1177472 1889993 1394 l
+1177472 1889993 1177472 1541378 1394 l
+1177472 1541378 9296 p
+1177472 1541378 1177472 1308968 1394 l
+1154231 1587860 1386641 1587860 1394 l
+1386641 1587860 1386641 1634342 1394 l
+1154231 1611101 1363400 1611101 1394 l
+1363400 1611101 1363400 1657583 1394 l
+1363400 1657583 1386641 1657583 1394 l
+1154231 1634342 1340159 1634342 1394 l
+1340159 1634342 1340159 1680824 1394 l
+1340159 1680824 1386641 1680824 1394 l
+1154231 1657583 1316918 1657583 1394 l
+1316918 1657583 1316918 1704065 1394 l
+1316918 1704065 1386641 1704065 1394 l
+1154231 1680824 1293677 1680824 1394 l
+1293677 1680824 1293677 1727306 1394 l
+1293677 1727306 1386641 1727306 1394 l
+1154231 1704065 1270436 1704065 1394 l
+1270436 1704065 1270436 1750547 1394 l
+1270436 1750547 1386641 1750547 1394 l
+1154231 1727306 1247195 1727306 1394 l
+1247195 1727306 1247195 1773788 1394 l
+1247195 1773788 1386641 1773788 1394 l
+1154231 1750547 1223954 1750547 1394 l
+1223954 1750547 1223954 1797029 1394 l
+1223954 1797029 1386641 1797029 1394 l
+735893 1843511 735893 1889993 1394 l
+735893 1889993 828857 1889993 1394 l
+828857 1889993 898580 1889993 1394 l
+898580 1889993 921821 1889993 1394 l
+921821 1889993 921821 1750547 1394 l
+828857 1843511 828857 1889993 1394 l
+828857 1889993 9296 p
+642929 1889993 735893 1889993 1394 l
+735893 1889993 9296 p
+1014785 1889993 921821 1889993 1394 l
+921821 1889993 9296 p
+898580 1564619 898580 1889993 1394 l
+898580 1889993 9296 p
+549965 1680824 549965 1634342 1394 l
+549965 1634342 549965 1587860 1394 l
+549965 1634342 921821 1634342 1394 l
+549965 1634342 9296 p
+549965 1518137 549965 1448414 1394 l
+666170 1866752 642929 1866752 1394 l
+642929 1913234 666170 1913234 1394 l
+666170 1913234 666170 1866752 1394 l
+666170 1866752 666170 1448414 1394 l
+666170 1866752 9296 p
+666170 1448414 735893 1448414 1394 l
+735893 1448414 898580 1448414 1394 l
+898580 1448414 921821 1448414 1394 l
+898580 1448414 9296 p
+898580 1448414 898580 1332209 1394 l
+898580 1332209 1154231 1332209 1394 l
+1154231 1332209 1154231 1308968 1394 l
+735893 1518137 735893 1448414 1394 l
+735893 1448414 9296 p
+898580 1494896 898580 1448414 1394 l
+549965 1448414 619688 1448414 1394 l
+619688 1448414 666170 1448414 1394 l
+666170 1448414 9296 p
+619688 1518137 619688 1448414 1394 l
+619688 1448414 9296 p
+showpage grestore
diff --git a/keypad.sch b/keypad.sch
new file mode 100644
index 0000000..eb7651b
--- /dev/null
+++ b/keypad.sch
Binary files differ
diff --git a/keypad.xrf b/keypad.xrf
new file mode 100644
index 0000000..3d47921
--- /dev/null
+++ b/keypad.xrf
@@ -0,0 +1,185 @@
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE  1
+
+                          MPASM Cross Reference File
+
+LABEL                            TYPE FILE NAME    SOURCE FILE REFERENCES
+-----                            ---- ---------    ----------------------
+
+C                                 C   P16F84A.INC     76*
+CLK_TIME                          C   KEYPAD.ASM      78*  354.
+DC                                C   P16F84A.INC     75*
+DEBOUNCE_COUNT                    C   KEYPAD.ASM      76*  385.
+DEBOUNCE_TIME                     C   KEYPAD.ASM      77*  388.
+EEADR                             C   P16F84A.INC     57*
+EECON1                            C   P16F84A.INC     64*
+EECON2                            C   P16F84A.INC     65*
+EEDATA                            C   P16F84A.INC     56*
+EEIE                              C   P16F84A.INC     81*
+EEIF                              C   P16F84A.INC    102*
+F                                 C   P16F84A.INC     45*
+FSR                               C   KEYPAD.ASM     134.  165.
+                                      P16F84A.INC     53*
+GIE                               C   KEYPAD.ASM     543.
+                                      P16F84A.INC     80*
+INCFILES                          M   KEYPAD.ASM       0*
+INDF                              C   P16F84A.INC     49*
+INTCON                            C   KEYPAD.ASM     142.  148.  485.  542.  543.
+                                      P16F84A.INC     59*
+INTE                              C   P16F84A.INC     83*
+INTEDG                            C   P16F84A.INC     92*
+INTF                              C   P16F84A.INC     86*
+IRP                               C   P16F84A.INC     69*
+KEYPAD                            C   KEYPAD.ASM      42*  196.  197.  382.  390.  531.
+LATCH_TIME                        C   KEYPAD.ASM      81*  338.  366.
+MAX_COL                           C   KEYPAD.ASM      79*  187.
+NOT_PD                            C   P16F84A.INC     73*
+NOT_RBPU                          C   P16F84A.INC     91*
+NOT_TO                            C   P16F84A.INC     72*
+NO_HIT                            C   KEYPAD.ASM      80*  199.  204.
+OPTION_REG                        C   KEYPAD.ASM     516.  519.
+                                      P16F84A.INC     61*
+OUTPUT                            C   KEYPAD.ASM      43*  336.  337.  340.  348.  351.  353.  356.  365.  368.  491.  530.
+PAR_SEL                           C   KEYPAD.ASM      44*  491.
+PCL                               C   KEYPAD.ASM     248.  263.  269.  275.  281.  294.  428.
+                                      P16F84A.INC     51*
+PCLATH                            C   KEYPAD.ASM     136.  138.  163.
+                                      P16F84A.INC     58*
+PLATCH                            C   KEYPAD.ASM      45*  337.  340.
+PORTA                             C   KEYPAD.ASM      43.
+                                      P16F84A.INC     54*
+PORTB                             C   KEYPAD.ASM      42.
+                                      P16F84A.INC     55*
+PS0                               C   P16F84A.INC     98*
+PS1                               C   P16F84A.INC     97*
+PS2                               C   P16F84A.INC     96*
+PSA                               C   P16F84A.INC     95*
+RBIE                              C   P16F84A.INC     84*
+RBIF                              C   P16F84A.INC     87*
+RD                                C   P16F84A.INC    106*
+REPEAT_COUNT                      C   KEYPAD.ASM      82*  214.
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE  2
+
+                          MPASM Cross Reference File
+
+LABEL                            TYPE FILE NAME    SOURCE FILE REFERENCES
+-----                            ---- ---------    ----------------------
+
+REPEAT_DELAY                      C   KEYPAD.ASM      84*  217.
+RP0                               C   KEYPAD.ASM     132.  496.  505.  521.
+                                      P16F84A.INC     71*
+RP1                               C   KEYPAD.ASM     131.
+                                      P16F84A.INC     70*
+SCLK                              C   KEYPAD.ASM      46*  353.  356.
+SDAT                              C   KEYPAD.ASM      47*  348.  351.
+SLATCH                            C   KEYPAD.ASM      48*  365.  368.
+STATUS                            C   KEYPAD.ASM     130.  131.  132.  156.  167.  189.  200.  205.  330.  358.  392.  472.  496.
+                                                     505.  521.
+                                      P16F84A.INC     52*
+T0CS                              C   P16F84A.INC     93*
+T0IE                              C   KEYPAD.ASM     542.
+                                      P16F84A.INC     82*
+T0IF                              C   KEYPAD.ASM     142.  148.
+                                      P16F84A.INC     85*
+T0SE                              C   P16F84A.INC     94*
+TMR0                              C   KEYPAD.ASM     150.  526.
+                                      P16F84A.INC     50*
+TMR0_CNT                          C   KEYPAD.ASM      67*   69.
+TMR0_PRE                          C   KEYPAD.ASM      68*  518.
+TMR0_PRIME                        C   KEYPAD.ASM      69*  149.  525.
+TRISA                             C   KEYPAD.ASM      50.
+                                      P16F84A.INC     62*
+TRISB                             C   KEYPAD.ASM      49.
+                                      P16F84A.INC     63*
+TRISKEY                           C   KEYPAD.ASM      49*  511.
+TRISOUT                           C   KEYPAD.ASM      50*  501.
+W                                 C   P16F84A.INC     44*
+WR                                C   P16F84A.INC    105*
+WREN                              C   P16F84A.INC    104*
+WRERR                             C   P16F84A.INC    103*
+Z                                 C   KEYPAD.ASM     156.  189.  200.  205.  330.  358.  392.  472.
+                                      P16F84A.INC     74*
+_CP_OFF                           C   P16F84A.INC    124*
+_CP_ON                            C   P16F84A.INC    123*
+_HS_OSC                           C   P16F84A.INC    131*
+_LP_OSC                           C   P16F84A.INC    129*
+_PWRTE_OFF                        C   P16F84A.INC    126*
+_PWRTE_ON                         C   P16F84A.INC    125*
+_RC_OSC                           C   P16F84A.INC    132*
+_WDT_OFF                          C   P16F84A.INC    128*
+_WDT_ON                           C   P16F84A.INC    127*
+_XT_OSC                           C   P16F84A.INC    130*
+__16F84A                          V   KEYPAD.ASM      17*
+                                      P16F84A.INC     34.
+_fsr                              C   KEYPAD.ASM      93*  135.  164.
+_pclath                           C   KEYPAD.ASM      94*  137.  162.
+_status                           C   KEYPAD.ASM      95*  133.  166.
+_w                                C   KEYPAD.ASM      96*  129.  168.  169.
+bit2row                           A   KEYPAD.ASM     293*  419.
+check_key                         A   KEYPAD.ASM     387*  399.
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE  3
+
+                          MPASM Cross Reference File
+
+LABEL                            TYPE FILE NAME    SOURCE FILE REFERENCES
+-----                            ---- ---------    ----------------------
+
+clock_bit                         A   KEYPAD.ASM     350.  352*
+col1_keys                         A   KEYPAD.ASM     262*  436.
+col1_xlate                        A   KEYPAD.ASM     429.  434*
+col2_keys                         A   KEYPAD.ASM     268*  442.
+col2_xlate                        A   KEYPAD.ASM     430.  440*
+col3_keys                         A   KEYPAD.ASM     274*  448.
+col3_xlate                        A   KEYPAD.ASM     431.  446*
+col4_keys                         A   KEYPAD.ASM     280*  454.
+col4_xlate                        A   KEYPAD.ASM     432.  452*
+col_select                        A   KEYPAD.ASM     195.  247*
+count                             C   KEYPAD.ASM     104*  215.  219.  346.  357.  386.  398.  537.
+current_col                       C   KEYPAD.ASM     105*  186.  188.  191.  194.  426.  535.
+debounce                          A   KEYPAD.ASM     384*  395.
+init                              A   KEYPAD.ASM     184.  484*
+key_get                           A   KEYPAD.ASM     202.  381*
+key_out                           A   KEYPAD.ASM     209.  326*
+key_scan                          A   KEYPAD.ASM     190.  193*
+key_val                           C   KEYPAD.ASM     106*  335.  349.  360.  383.  391.  394.  397.  417.  420.  435.  437.  441.
+                                                     443.  447.  449.  453.  455.  536.
+key_xlate                         A   KEYPAD.ASM     208.  410*
+main                              A   KEYPAD.ASM     119.  183*
+matched                           A   KEYPAD.ASM     393.  396*
+par_out                           C   KEYPAD.ASM     100*  329.  490.  492.
+restore_context                   A   KEYPAD.ASM     144.  161*
+scan                              A   KEYPAD.ASM     185*  192.  201.  206.  222.
+scan_delay                        A   KEYPAD.ASM     216*  220.
+serial_latch                      A   KEYPAD.ASM     359.  364*
+serial_out                        A   KEYPAD.ASM     331.  344*
+shift_bit                         A   KEYPAD.ASM     347*  361.
+tmr0_svc                          A   KEYPAD.ASM     143.  147*
+tmr128                            C   KEYPAD.ASM      34*
+tmr16                             C   KEYPAD.ASM      31*
+tmr2                              C   KEYPAD.ASM      28*
+tmr256                            C   KEYPAD.ASM      35*
+tmr32                             C   KEYPAD.ASM      32*   68.
+tmr4                              C   KEYPAD.ASM      29*
+tmr64                             C   KEYPAD.ASM      33*
+tmr8                              C   KEYPAD.ASM      30*
+wait                              A   KEYPAD.ASM     218.  339.  355.  367.  389.  468*
+wait_count                        C   KEYPAD.ASM     107*  155.  157.  469.  471.  538.
+waiting                           A   KEYPAD.ASM     470*  473.
+MPASM 03.00 Released           KEYPAD.ASM   6-18-2002  17:39:48         PAGE  4
+
+                          MPASM Cross Reference File
+
+LABEL                            TYPE FILE NAME    SOURCE FILE REFERENCES
+-----                            ---- ---------    ----------------------
+
+
+
+LABEL TYPES
+-----------
+A  Address 
+C  Constant
+E  External
+M  Macro   
+S  Segment 
+U  Unknown 
+V  Variable
+X  Other   
diff --git a/readme.txt b/readme.txt
new file mode 100644
index 0000000..653bfcf
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1,230 @@
+keypad - Copyright (c) 2002 Tundraware Inc., All Rights Reserved
+$Id: readme.txt,v 1.4 2002/05/31 17:16:20 tundra Exp tundra $
+
+
+************************************************************************
+
+PLEASE NOTE: Before using anything in this archive, you must read, and
+             agree to abide by, the licensing terms found in:
+
+                         keypad-license.txt
+
+************************************************************************
+
+
+FILE DESCRIPTIONS
+=================
+
+
+Makefile               Unix-style makefile which runs under DJGPP and
+                       should also work under MKS and Cygwin.
+
+readme.txt             This file.
+
+keypad-license.txt     Licensing terms for using this software.
+
+keypad.gif             keypad schematic in GIF format.
+
+keypad.png             keypad schematic in png format.
+
+keypad.ps              keypad schematic in PostScript format.
+
+keypad.sch             keypad schematic in Eagle format.
+
+keypad.brd	       keypad printed circuit board layout in Eagle format.
+
+keypad.asm             keypad software written in PIC assembler.
+
+keypad.hex             The assembled keypad software.
+
+keypad.lst             keypad listing file generated by assembler.
+
+keypad.xrf             keypad cross-reference file generated by assmbler.
+
+
+
+WHAT IS 'keypad'?
+==================
+
+
+'keypad' is a PIC based system for decoding switch matrix type numeric
+keypads with up to 4 rows and columns.  The keypad switch matrix is
+read, and if a key is pressed, it is converted into an equivalent
+binary value (0-0fh) for output.  Full debounce logic is included to
+suppress mechanical switch bounce effects.
+
+Output can either be a 4-bit parallel word or a serial clocked output.
+Both serial and parallel outputs support a "latching" pulse to drive
+external interface timing.
+
+
+ABOUT THE HARDWARE
+==================
+
+'keypad' is built around a very simple PIC 16F84 circuit.  This
+circuit uses an RC oscillator because timing is not particularly
+critical in this application. The keypad hardware is connected to
+PORTB and output is found on PORTA.  MCLR is pulled up so that noise
+does not reset the system. RA4 is pulled-up to allow for selection
+of serial or parallel output as described below.
+
+This release includes the schematic in a number of common formats.
+
+***VERY IMPORTANT NOTE***: The schematic shows *both* a crystal
+network and an RC network connected to OSC1/OSC2.  This is intentional
+so that the resulting printed circuit board has provision for either a
+crystal or RC oscillator.  However, you only use one *or* the other,
+never both.  This approach allows one printed circuit board to be used
+in a variety of applications.  In the case of 'keypad', the software
+assumes an RC network formed by R2 and C2.  You do *not* use Q1, C3,
+or C4 at all.  They should not be handwired into a circuit, nor should
+they be populated on the printed circuit board.
+
+
+ABOUT THE SOFTWARE
+==================
+
+NOTE: The 'keypad' code is pretty thoroughly commented and is a good
+      place to go to understand the details of just how this stuff
+      actually works.
+
+
+The 'keypad' software has 4 major elements:
+
+TMR0 Interrupt Routine - This creates a "heartbeat" clock with an
+                         approximate period of 480us.  This is used when
+                         doing debounce waits and for timing the
+                         output latching and serial clocking pulses.
+
+Mainline Code - After some initialization, the main code continuously
+                loops through each keypad column looking to see if a
+                key has been pressed.  If so, it reads a debounced
+                version of the key, translates it into and equivalent
+                binary value and outputs the result either serially or
+                as a parallel nibble.
+
+Translation Tables - This code makes extensive use of translation
+                     tables to pickup the various column selection bit
+                     patterns and to translate key hit bit patterns
+                     found on the keypad interface into equivalent
+                     binary values for output.
+
+Supporting Subroutines - These are the various subroutines called by
+                         the Mainline Code to initially setup the
+                         hardware, and thereafter scan and process key
+                         hits.
+
+
+The basic idea is that the column lines of the keypad are connected to
+PORTB 4:7 and the row lines are connected to PORTB 0:3.  The column
+lines default to a logical high, and the row lines are pulled up to a
+logical high using the PIC weak pullup capabilities.
+
+'keypad' successively scans each keypad column by setting that
+column's control bit to low.  Then, if a key is pressed in that
+column, it shorts the corresponding row/column lines together.  Since
+the row line is pulled high with an internal weak pullup and the
+column line is low, this has the effect of pulling the row line low.
+By examining which column line is currently enabled (low) and which
+row line has been pulled low, 'keypad' can tell which key got pressed
+and then translate it into an equivalent binary value.
+
+It's not quite this simple, though, because mechanical switches
+"bounce" when they are pressed or released.  The software has to wait
+until this bouncing is done before reading the keyboard interface or
+you will get bogus key press values.  the 'key_get' routine in this
+software incorporates so-called "debounce" logic to avoid this
+problem.  A key hit is not considered valid until it has remained
+unchanged DEBOUNCE_COUNT (5) times.  The routine waits DEBOUNCE_TIME
+(10 * TMR0 interval = 4.8ms) between read attempts.
+
+During software intialization, the 'init' subroutine reads the
+hardware configuration to determine whether you want serial or
+parallel output.  (See the next section on how to configure the
+hardware to do this.)  Thereafter, it uses that output method.  In
+other words, if you change the Serial/Parallel output selection while
+'keypad' is running, it will be ignored - you have to do a device
+reset to reread this configuration.  The 'key_out' routine supports
+both serial and parallel output modes and checks a flag set during
+initialization to decide which one to use.
+
+
+HOW TO SELECT SERIAL/PARALLEL OUTPUT
+====================================
+
+'keypad' is capable of delivering the binary value of the key
+press as either a 4-bit parallel word *or* as a serial bit stream.
+
+To select parallel output:
+
+        Pull RA4 high *through a 10K resistor*.
+
+To select serial output:
+
+        Pull RA4 to ground (low).
+
+
+Parallel Bit Assignments:
+
+        RA0 - Bit 0 out
+        RA1 - Bit 1 out
+        RA2 - Bit 2 out
+        RA3 - Bit 3 out
+        RA4 - Latch out - Normally low.  Goes high for 
+             approximately 480us (LATCH_TIME * TMR0 interval)
+             when the word on A0:3 is valid.
+
+
+Serial Bit Assignments:
+
+        RA0 - Serial Data
+        RA1 - Serial Clock - Normally low.  Goes high for
+             approximately 480us (CLK_TIME * TMR0 interval)
+             when bit on A0 is valid
+        RA2 - Latch out - Normally low.  Goes high for
+             approximately 480us (LATCH_TIME * TMR0 interval)
+             when all bits in current value have been clocked out.
+        RA3 - Unused
+        RA4 - Unused
+
+
+USING 3- and 4-COLUMN KEYPADS
+=============================
+
+The 'keypad' code assumes 4x4 keypad.  However it is trivial to use a
+3 column keypad (4x3).  To use this smaller keypad, just don't connect
+anything to bit B7.  To avoid noise, you probably should pull this
+pin high with a 10K resistor.
+
+You can also change the MAX_COL value to 3 in the code which will
+inhibit scanning for the 4th column.  I prefer *not* to do this so
+that one PIC can handle both keypad types.
+
+
+MAPPING OF KEYPAD VALUES
+========================
+
+The numeric keys on the keypad are mapped to their equivalent
+binary values.  The remaining keys are mapped as follows:
+
+R1C4      0ah
+R2C4      0bh
+R3C4      0ch
+R4C4      0dh
+R4C1 (*)  0eh
+R4C3 (#)  0fh
+
+If you don't like these assignments you can change them by modifying
+the 'colX_keys" translation tables, where 'X' is the column in
+question.
+
+
+BUGS
+====
+
+This is *experimental software* and has not been tested thorougly.
+It probably has bugs.  If you find one, please let me know and
+I'll make the necessary changes.
+
+Happy Hacking!
+tundra@tundraware.com