diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000..c4663ba --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,82 @@ + +RCS file: RCS/leddrvr.asm,v +Working file: leddrvr.asm +head: 1.13 +branch: +locks: strict + tundra: 1.13 +access list: +symbolic names: +keyword substitution: kv +total revisions: 13; selected revisions: 13 +description: +Driver code for homemade 7-segment display board. +---------------------------- +revision 1.13 locked by: tundra; +date: 2002/03/25 16:55:26; author: tundra; state: Exp; lines: +16 -10 +Added code to keep TMR0 counting going during the TMR0 ISR. +This keeps the timing much more accurate - i.e., 1ms/interrupt. +---------------------------- +revision 1.12 +date: 2002/03/25 15:42:18; author: tundra; state: Exp; lines: +71 -82 +Restructured the LED display code to only compute the segments +needed for the currently displayed LED. This eliminated the +need for a 'bin2seg' subroutine and for the'digit0' array, but +added a new 'temp' variable. +---------------------------- +revision 1.11 +date: 2002/03/23 02:56:28; author: tundra; state: Exp; lines: +135 -135 +Reformated back to 8-wide tabs. +---------------------------- +revision 1.10 +date: 2002/03/20 18:57:34; author: tundra; state: Exp; lines: +163 -194 +Changed some of the timing constants slightly. +Cosmetic & formatting changes to use 4 wide tab stops. +---------------------------- +revision 1.9 +date: 2002/03/20 13:26:17; author: tundra; state: Exp; lines: +25 -17 +Rewrote waiting routine to use TMR0 interrupt interval for timing. +---------------------------- +revision 1.8 +date: 2002/03/20 12:51:14; author: tundra; state: Exp; lines: +45 -6 +Setup TMR0 for 1ms interrupts. +Separated counting and binary-to-7segment conversion into two +separate subroutines. +Added code to prime TMR0 during initialization. +---------------------------- +revision 1.7 +date: 2002/03/19 17:47:26; author: tundra; state: Exp; lines: +46 -18 +Changed display code to properly preserve state of unused bits +of 'led_sel' port. +---------------------------- +revision 1.6 +date: 2002/03/18 19:29:12; author: tundra; state: Exp; lines: +39 -18 +Broke wait logic into separate subroutine using a nested loop +with counters is 'W' and 'wait_count'. +---------------------------- +revision 1.5 +date: 2002/03/18 17:35:41; author: tundra; state: Exp; lines: +42 -9 +Enabled TMR0-driven interrupt servicing of the display. +Added wait after count increment (to slow down display change) +using 'loopcount' register variable. +---------------------------- +revision 1.4 +date: 2002/03/17 03:59:13; author: tundra; state: Exp; lines: +50 -73 +Consolidated all initialization logic into a single subroutine. +Cleaned up comments. +---------------------------- +revision 1.3 +date: 2002/03/17 03:45:23; author: tundra; state: Exp; lines: +57 -43 +Rewrote display routine to display one digit per invocation, +rotating from MSD to LSD. +---------------------------- +revision 1.2 +date: 2002/03/15 17:40:04; author: tundra; state: Exp; lines: +96 -40 +Restructured code slighly to more cleanly separate counting from display. +Changed counting routine to increment by one and return. +Added scaffolding for interrupt handler yet to be finished. +---------------------------- +revision 1.1 +date: 2002/03/15 01:19:11; author: tundra; state: Exp; +Initial revision +============================================================================= diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9d21738 --- /dev/null +++ b/Makefile @@ -0,0 +1,59 @@ +# Makefile for PIC ledtst.asm test program +# $Id: Makefile,v 1.13 2002/03/25 17:30:48 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 = leddrvr.asm + +RELEASE_FILES = leddrvr.asm leddrvr-license.txt readme.txt +RELEASE_FILES1 = leddrvr.hex leddrvr.lst leddrvr.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} leddrvr.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_leddrvr.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} leddrvr.hex diff --git a/leddrvr-license.txt b/leddrvr-license.txt new file mode 100644 index 0000000..0444585 --- /dev/null +++ b/leddrvr-license.txt @@ -0,0 +1,44 @@ +leddrvr - Copyright (c) 2002, TundraWare Inc., All Rights Reserved + +$Id: leddrvr-license.txt,v 1.1 2002/03/23 12:15:13 tundra Exp tundra $ + +This license refers to all the files found in the 'leddrvr.zip' +archive. Hereafter, these files are referred to collectively as the +"leddrvr files". + +Permission to use and distribute the leddrvr files is hereby granted so +long as ALL the following conditions are met: + + 1) The user of the leddrvr files understands and agrees that this is + experimental software which is provided "AS-IS" with no + warranties expressed or implied by TundraWare Inc. + + 2) The user acknowledges the leddrvr files have 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 leddrvr files, the user does so at their own risk + and agrees to hold TundraWare Inc. harmless for any damage, + direct or indirect, that this software 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 leddrvr files. + + 4) If duplicated and/or distributed, no fee beyond reasonable + duplication charges may be charged for the leddrvr files. + + 5) Any distributed copies of the leddrvr files must include all the + originally provided software, documentation, and licensing + information. + +If you do not understand, or cannot abide by any of these conditions, +DO NOT USE the leddrvr files. + +To report bugs or suggest improvements, contact: tundra@tundraware.com + diff --git a/leddrvr-sch.gif b/leddrvr-sch.gif new file mode 100644 index 0000000..6c4c070 --- /dev/null +++ b/leddrvr-sch.gif Binary files differ diff --git a/leddrvr-sch.png b/leddrvr-sch.png new file mode 100644 index 0000000..71cae47 --- /dev/null +++ b/leddrvr-sch.png Binary files differ diff --git a/leddrvr-sch.ps b/leddrvr-sch.ps new file mode 100644 index 0000000..0d542a7 --- /dev/null +++ b/leddrvr-sch.ps @@ -0,0 +1,3099 @@ +%!PS-Adobe-1.0 +%%Title: EAGLE Drawing C:/usr/home/tundra/Dev/PIC/leddrvr/Schematic/leddrvr-sch.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 1731167 EU def +/MaxDrawY 1928287 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 +1539892 1277513 1539892 1265820 1016 l +1539892 1265820 1547687 1265820 1016 l +1559380 1277513 1551585 1277513 1016 l +1551585 1277513 1551585 1265820 1016 l +1551585 1265820 1559380 1265820 1016 l +1551585 1271666 1555482 1271666 1016 l +1563278 1277513 1563278 1265820 1016 l +1563278 1265820 1569124 1265820 1016 l +1569124 1265820 1571073 1267768 1016 l +1571073 1267768 1571073 1275564 1016 l +1571073 1275564 1569124 1277513 1016 l +1569124 1277513 1563278 1277513 1016 l +1588612 1279462 1588612 1275564 1016 l +1588612 1275564 1586664 1273615 1016 l +1596407 1273615 1600305 1273615 1016 l +1600305 1273615 1602254 1271666 1016 l +1602254 1271666 1602254 1265820 1016 l +1602254 1265820 1596407 1265820 1016 l +1596407 1265820 1594459 1267768 1016 l +1594459 1267768 1596407 1269717 1016 l +1596407 1269717 1602254 1269717 1016 l +1608100 1279462 1608100 1275564 1016 l +1608100 1275564 1606152 1273615 1016 l +1633435 1275564 1631486 1277513 1016 l +1631486 1277513 1627588 1277513 1016 l +1627588 1277513 1625640 1275564 1016 l +1625640 1275564 1625640 1273615 1016 l +1625640 1273615 1627588 1271666 1016 l +1627588 1271666 1631486 1271666 1016 l +1631486 1271666 1633435 1269717 1016 l +1633435 1269717 1633435 1267768 1016 l +1633435 1267768 1631486 1265820 1016 l +1631486 1265820 1627588 1265820 1016 l +1627588 1265820 1625640 1267768 1016 l +1643179 1265820 1639281 1265820 1016 l +1639281 1265820 1637333 1267768 1016 l +1637333 1267768 1637333 1271666 1016 l +1637333 1271666 1639281 1273615 1016 l +1639281 1273615 1643179 1273615 1016 l +1643179 1273615 1645128 1271666 1016 l +1645128 1271666 1645128 1269717 1016 l +1645128 1269717 1637333 1269717 1016 l +1652923 1261923 1654872 1261923 1016 l +1654872 1261923 1656821 1263872 1016 l +1656821 1263872 1656821 1273615 1016 l +1656821 1273615 1650974 1273615 1016 l +1650974 1273615 1649026 1271666 1016 l +1649026 1271666 1649026 1267768 1016 l +1649026 1267768 1650974 1265820 1016 l +1650974 1265820 1656821 1265820 1016 l +1660719 1265820 1660719 1273615 1016 l +1660719 1273615 1662667 1273615 1016 l +1662667 1273615 1664616 1271666 1016 l +1664616 1271666 1664616 1265820 1016 l +1664616 1271666 1666565 1273615 1016 l +1666565 1273615 1668514 1271666 1016 l +1668514 1271666 1668514 1265820 1016 l +1678258 1265820 1674360 1265820 1016 l +1674360 1265820 1672412 1267768 1016 l +1672412 1267768 1672412 1271666 1016 l +1672412 1271666 1674360 1273615 1016 l +1674360 1273615 1678258 1273615 1016 l +1678258 1273615 1680207 1271666 1016 l +1680207 1271666 1680207 1269717 1016 l +1680207 1269717 1672412 1269717 1016 l +1684105 1265820 1684105 1273615 1016 l +1684105 1273615 1689951 1273615 1016 l +1689951 1273615 1691900 1271666 1016 l +1691900 1271666 1691900 1265820 1016 l +1697746 1275564 1697746 1267768 1016 l +1697746 1267768 1699695 1265820 1016 l +1695798 1273615 1699695 1273615 1016 l +1705542 1265820 1711388 1265820 1016 l +1711388 1265820 1713337 1267768 1016 l +1713337 1267768 1711388 1269717 1016 l +1711388 1269717 1707490 1269717 1016 l +1707490 1269717 1705542 1271666 1016 l +1705542 1271666 1707490 1273615 1016 l +1707490 1273615 1713337 1273615 1016 l +1539892 1302913 1539892 1291220 1016 l +1539892 1291220 1547687 1291220 1016 l +1559380 1302913 1551585 1302913 1016 l +1551585 1302913 1551585 1291220 1016 l +1551585 1291220 1559380 1291220 1016 l +1551585 1297066 1555482 1297066 1016 l +1563278 1302913 1563278 1291220 1016 l +1563278 1291220 1569124 1291220 1016 l +1569124 1291220 1571073 1293168 1016 l +1571073 1293168 1571073 1300964 1016 l +1571073 1300964 1569124 1302913 1016 l +1569124 1302913 1563278 1302913 1016 l +1588612 1304862 1588612 1300964 1016 l +1588612 1300964 1586664 1299015 1016 l +1594459 1302913 1594459 1291220 1016 l +1594459 1291220 1600305 1291220 1016 l +1600305 1291220 1602254 1293168 1016 l +1602254 1293168 1602254 1297066 1016 l +1602254 1297066 1600305 1299015 1016 l +1600305 1299015 1594459 1299015 1016 l +1608100 1304862 1608100 1300964 1016 l +1608100 1300964 1606152 1299015 1016 l +1633435 1300964 1631486 1302913 1016 l +1631486 1302913 1627588 1302913 1016 l +1627588 1302913 1625640 1300964 1016 l +1625640 1300964 1625640 1299015 1016 l +1625640 1299015 1627588 1297066 1016 l +1627588 1297066 1631486 1297066 1016 l +1631486 1297066 1633435 1295117 1016 l +1633435 1295117 1633435 1293168 1016 l +1633435 1293168 1631486 1291220 1016 l +1631486 1291220 1627588 1291220 1016 l +1627588 1291220 1625640 1293168 1016 l +1643179 1291220 1639281 1291220 1016 l +1639281 1291220 1637333 1293168 1016 l +1637333 1293168 1637333 1297066 1016 l +1637333 1297066 1639281 1299015 1016 l +1639281 1299015 1643179 1299015 1016 l +1643179 1299015 1645128 1297066 1016 l +1645128 1297066 1645128 1295117 1016 l +1645128 1295117 1637333 1295117 1016 l +1652923 1287323 1654872 1287323 1016 l +1654872 1287323 1656821 1289272 1016 l +1656821 1289272 1656821 1299015 1016 l +1656821 1299015 1650974 1299015 1016 l +1650974 1299015 1649026 1297066 1016 l +1649026 1297066 1649026 1293168 1016 l +1649026 1293168 1650974 1291220 1016 l +1650974 1291220 1656821 1291220 1016 l +1660719 1291220 1660719 1299015 1016 l +1660719 1299015 1662667 1299015 1016 l +1662667 1299015 1664616 1297066 1016 l +1664616 1297066 1664616 1291220 1016 l +1664616 1297066 1666565 1299015 1016 l +1666565 1299015 1668514 1297066 1016 l +1668514 1297066 1668514 1291220 1016 l +1678258 1291220 1674360 1291220 1016 l +1674360 1291220 1672412 1293168 1016 l +1672412 1293168 1672412 1297066 1016 l +1672412 1297066 1674360 1299015 1016 l +1674360 1299015 1678258 1299015 1016 l +1678258 1299015 1680207 1297066 1016 l +1680207 1297066 1680207 1295117 1016 l +1680207 1295117 1672412 1295117 1016 l +1684105 1291220 1684105 1299015 1016 l +1684105 1299015 1689951 1299015 1016 l +1689951 1299015 1691900 1297066 1016 l +1691900 1297066 1691900 1291220 1016 l +1697746 1300964 1697746 1293168 1016 l +1697746 1293168 1699695 1291220 1016 l +1695798 1299015 1699695 1299015 1016 l +1705542 1291220 1711388 1291220 1016 l +1711388 1291220 1713337 1293168 1016 l +1713337 1293168 1711388 1295117 1016 l +1711388 1295117 1707490 1295117 1016 l +1707490 1295117 1705542 1297066 1016 l +1705542 1297066 1707490 1299015 1016 l +1707490 1299015 1713337 1299015 1016 l +1539892 1328313 1539892 1316620 1016 l +1539892 1316620 1547687 1316620 1016 l +1559380 1328313 1551585 1328313 1016 l +1551585 1328313 1551585 1316620 1016 l +1551585 1316620 1559380 1316620 1016 l +1551585 1322466 1555482 1322466 1016 l +1563278 1328313 1563278 1316620 1016 l +1563278 1316620 1569124 1316620 1016 l +1569124 1316620 1571073 1318568 1016 l +1571073 1318568 1571073 1326364 1016 l +1571073 1326364 1569124 1328313 1016 l +1569124 1328313 1563278 1328313 1016 l +1588612 1330262 1588612 1326364 1016 l +1588612 1326364 1586664 1324415 1016 l +1602254 1324415 1596407 1324415 1016 l +1596407 1324415 1594459 1322466 1016 l +1594459 1322466 1594459 1318568 1016 l +1594459 1318568 1596407 1316620 1016 l +1596407 1316620 1602254 1316620 1016 l +1608100 1330262 1608100 1326364 1016 l +1608100 1326364 1606152 1324415 1016 l +1633435 1326364 1631486 1328313 1016 l +1631486 1328313 1627588 1328313 1016 l +1627588 1328313 1625640 1326364 1016 l +1625640 1326364 1625640 1324415 1016 l +1625640 1324415 1627588 1322466 1016 l +1627588 1322466 1631486 1322466 1016 l +1631486 1322466 1633435 1320517 1016 l +1633435 1320517 1633435 1318568 1016 l +1633435 1318568 1631486 1316620 1016 l +1631486 1316620 1627588 1316620 1016 l +1627588 1316620 1625640 1318568 1016 l +1643179 1316620 1639281 1316620 1016 l +1639281 1316620 1637333 1318568 1016 l +1637333 1318568 1637333 1322466 1016 l +1637333 1322466 1639281 1324415 1016 l +1639281 1324415 1643179 1324415 1016 l +1643179 1324415 1645128 1322466 1016 l +1645128 1322466 1645128 1320517 1016 l +1645128 1320517 1637333 1320517 1016 l +1652923 1312723 1654872 1312723 1016 l +1654872 1312723 1656821 1314672 1016 l +1656821 1314672 1656821 1324415 1016 l +1656821 1324415 1650974 1324415 1016 l +1650974 1324415 1649026 1322466 1016 l +1649026 1322466 1649026 1318568 1016 l +1649026 1318568 1650974 1316620 1016 l +1650974 1316620 1656821 1316620 1016 l +1660719 1316620 1660719 1324415 1016 l +1660719 1324415 1662667 1324415 1016 l +1662667 1324415 1664616 1322466 1016 l +1664616 1322466 1664616 1316620 1016 l +1664616 1322466 1666565 1324415 1016 l +1666565 1324415 1668514 1322466 1016 l +1668514 1322466 1668514 1316620 1016 l +1678258 1316620 1674360 1316620 1016 l +1674360 1316620 1672412 1318568 1016 l +1672412 1318568 1672412 1322466 1016 l +1672412 1322466 1674360 1324415 1016 l +1674360 1324415 1678258 1324415 1016 l +1678258 1324415 1680207 1322466 1016 l +1680207 1322466 1680207 1320517 1016 l +1680207 1320517 1672412 1320517 1016 l +1684105 1316620 1684105 1324415 1016 l +1684105 1324415 1689951 1324415 1016 l +1689951 1324415 1691900 1322466 1016 l +1691900 1322466 1691900 1316620 1016 l +1697746 1326364 1697746 1318568 1016 l +1697746 1318568 1699695 1316620 1016 l +1695798 1324415 1699695 1324415 1016 l +1705542 1316620 1711388 1316620 1016 l +1711388 1316620 1713337 1318568 1016 l +1713337 1318568 1711388 1320517 1016 l +1711388 1320517 1707490 1320517 1016 l +1707490 1320517 1705542 1322466 1016 l +1705542 1322466 1707490 1324415 1016 l +1707490 1324415 1713337 1324415 1016 l +1539892 1353713 1539892 1342020 1016 l +1539892 1342020 1547687 1342020 1016 l +1559380 1353713 1551585 1353713 1016 l +1551585 1353713 1551585 1342020 1016 l +1551585 1342020 1559380 1342020 1016 l +1551585 1347866 1555482 1347866 1016 l +1563278 1353713 1563278 1342020 1016 l +1563278 1342020 1569124 1342020 1016 l +1569124 1342020 1571073 1343968 1016 l +1571073 1343968 1571073 1351764 1016 l +1571073 1351764 1569124 1353713 1016 l +1569124 1353713 1563278 1353713 1016 l +1588612 1355662 1588612 1351764 1016 l +1588612 1351764 1586664 1349815 1016 l +1602254 1353713 1602254 1342020 1016 l +1602254 1342020 1596407 1342020 1016 l +1596407 1342020 1594459 1343968 1016 l +1594459 1343968 1594459 1347866 1016 l +1594459 1347866 1596407 1349815 1016 l +1596407 1349815 1602254 1349815 1016 l +1608100 1355662 1608100 1351764 1016 l +1608100 1351764 1606152 1349815 1016 l +1633435 1351764 1631486 1353713 1016 l +1631486 1353713 1627588 1353713 1016 l +1627588 1353713 1625640 1351764 1016 l +1625640 1351764 1625640 1349815 1016 l +1625640 1349815 1627588 1347866 1016 l +1627588 1347866 1631486 1347866 1016 l +1631486 1347866 1633435 1345917 1016 l +1633435 1345917 1633435 1343968 1016 l +1633435 1343968 1631486 1342020 1016 l +1631486 1342020 1627588 1342020 1016 l +1627588 1342020 1625640 1343968 1016 l +1643179 1342020 1639281 1342020 1016 l +1639281 1342020 1637333 1343968 1016 l +1637333 1343968 1637333 1347866 1016 l +1637333 1347866 1639281 1349815 1016 l +1639281 1349815 1643179 1349815 1016 l +1643179 1349815 1645128 1347866 1016 l +1645128 1347866 1645128 1345917 1016 l +1645128 1345917 1637333 1345917 1016 l +1652923 1338123 1654872 1338123 1016 l +1654872 1338123 1656821 1340072 1016 l +1656821 1340072 1656821 1349815 1016 l +1656821 1349815 1650974 1349815 1016 l +1650974 1349815 1649026 1347866 1016 l +1649026 1347866 1649026 1343968 1016 l +1649026 1343968 1650974 1342020 1016 l +1650974 1342020 1656821 1342020 1016 l +1660719 1342020 1660719 1349815 1016 l +1660719 1349815 1662667 1349815 1016 l +1662667 1349815 1664616 1347866 1016 l +1664616 1347866 1664616 1342020 1016 l +1664616 1347866 1666565 1349815 1016 l +1666565 1349815 1668514 1347866 1016 l +1668514 1347866 1668514 1342020 1016 l +1678258 1342020 1674360 1342020 1016 l +1674360 1342020 1672412 1343968 1016 l +1672412 1343968 1672412 1347866 1016 l +1672412 1347866 1674360 1349815 1016 l +1674360 1349815 1678258 1349815 1016 l +1678258 1349815 1680207 1347866 1016 l +1680207 1347866 1680207 1345917 1016 l +1680207 1345917 1672412 1345917 1016 l +1684105 1342020 1684105 1349815 1016 l +1684105 1349815 1689951 1349815 1016 l +1689951 1349815 1691900 1347866 1016 l +1691900 1347866 1691900 1342020 1016 l +1697746 1351764 1697746 1343968 1016 l +1697746 1343968 1699695 1342020 1016 l +1695798 1349815 1699695 1349815 1016 l +1705542 1342020 1711388 1342020 1016 l +1711388 1342020 1713337 1343968 1016 l +1713337 1343968 1711388 1345917 1016 l +1711388 1345917 1707490 1345917 1016 l +1707490 1345917 1705542 1347866 1016 l +1705542 1347866 1707490 1349815 1016 l +1707490 1349815 1713337 1349815 1016 l +1539892 1379113 1539892 1367420 1016 l +1539892 1367420 1547687 1367420 1016 l +1559380 1379113 1551585 1379113 1016 l +1551585 1379113 1551585 1367420 1016 l +1551585 1367420 1559380 1367420 1016 l +1551585 1373266 1555482 1373266 1016 l +1563278 1379113 1563278 1367420 1016 l +1563278 1367420 1569124 1367420 1016 l +1569124 1367420 1571073 1369368 1016 l +1571073 1369368 1571073 1377164 1016 l +1571073 1377164 1569124 1379113 1016 l +1569124 1379113 1563278 1379113 1016 l +1588612 1381062 1588612 1377164 1016 l +1588612 1377164 1586664 1375215 1016 l +1600305 1367420 1596407 1367420 1016 l +1596407 1367420 1594459 1369368 1016 l +1594459 1369368 1594459 1373266 1016 l +1594459 1373266 1596407 1375215 1016 l +1596407 1375215 1600305 1375215 1016 l +1600305 1375215 1602254 1373266 1016 l +1602254 1373266 1602254 1371317 1016 l +1602254 1371317 1594459 1371317 1016 l +1608100 1381062 1608100 1377164 1016 l +1608100 1377164 1606152 1375215 1016 l +1633435 1377164 1631486 1379113 1016 l +1631486 1379113 1627588 1379113 1016 l +1627588 1379113 1625640 1377164 1016 l +1625640 1377164 1625640 1375215 1016 l +1625640 1375215 1627588 1373266 1016 l +1627588 1373266 1631486 1373266 1016 l +1631486 1373266 1633435 1371317 1016 l +1633435 1371317 1633435 1369368 1016 l +1633435 1369368 1631486 1367420 1016 l +1631486 1367420 1627588 1367420 1016 l +1627588 1367420 1625640 1369368 1016 l +1643179 1367420 1639281 1367420 1016 l +1639281 1367420 1637333 1369368 1016 l +1637333 1369368 1637333 1373266 1016 l +1637333 1373266 1639281 1375215 1016 l +1639281 1375215 1643179 1375215 1016 l +1643179 1375215 1645128 1373266 1016 l +1645128 1373266 1645128 1371317 1016 l +1645128 1371317 1637333 1371317 1016 l +1652923 1363523 1654872 1363523 1016 l +1654872 1363523 1656821 1365472 1016 l +1656821 1365472 1656821 1375215 1016 l +1656821 1375215 1650974 1375215 1016 l +1650974 1375215 1649026 1373266 1016 l +1649026 1373266 1649026 1369368 1016 l +1649026 1369368 1650974 1367420 1016 l +1650974 1367420 1656821 1367420 1016 l +1660719 1367420 1660719 1375215 1016 l +1660719 1375215 1662667 1375215 1016 l +1662667 1375215 1664616 1373266 1016 l +1664616 1373266 1664616 1367420 1016 l +1664616 1373266 1666565 1375215 1016 l +1666565 1375215 1668514 1373266 1016 l +1668514 1373266 1668514 1367420 1016 l +1678258 1367420 1674360 1367420 1016 l +1674360 1367420 1672412 1369368 1016 l +1672412 1369368 1672412 1373266 1016 l +1672412 1373266 1674360 1375215 1016 l +1674360 1375215 1678258 1375215 1016 l +1678258 1375215 1680207 1373266 1016 l +1680207 1373266 1680207 1371317 1016 l +1680207 1371317 1672412 1371317 1016 l +1684105 1367420 1684105 1375215 1016 l +1684105 1375215 1689951 1375215 1016 l +1689951 1375215 1691900 1373266 1016 l +1691900 1373266 1691900 1367420 1016 l +1697746 1377164 1697746 1369368 1016 l +1697746 1369368 1699695 1367420 1016 l +1695798 1375215 1699695 1375215 1016 l +1705542 1367420 1711388 1367420 1016 l +1711388 1367420 1713337 1369368 1016 l +1713337 1369368 1711388 1371317 1016 l +1711388 1371317 1707490 1371317 1016 l +1707490 1371317 1705542 1373266 1016 l +1705542 1373266 1707490 1375215 1016 l +1707490 1375215 1713337 1375215 1016 l +1539892 1404513 1539892 1392820 1016 l +1539892 1392820 1547687 1392820 1016 l +1559380 1404513 1551585 1404513 1016 l +1551585 1404513 1551585 1392820 1016 l +1551585 1392820 1559380 1392820 1016 l +1551585 1398666 1555482 1398666 1016 l +1563278 1404513 1563278 1392820 1016 l +1563278 1392820 1569124 1392820 1016 l +1569124 1392820 1571073 1394768 1016 l +1571073 1394768 1571073 1402564 1016 l +1571073 1402564 1569124 1404513 1016 l +1569124 1404513 1563278 1404513 1016 l +1588612 1406462 1588612 1402564 1016 l +1588612 1402564 1586664 1400615 1016 l +1596407 1392820 1596407 1402564 1016 l +1596407 1402564 1598356 1404513 1016 l +1594459 1398666 1598356 1398666 1016 l +1606151 1406462 1606151 1402564 1016 l +1606151 1402564 1604203 1400615 1016 l +1631486 1402564 1629537 1404513 1016 l +1629537 1404513 1625639 1404513 1016 l +1625639 1404513 1623691 1402564 1016 l +1623691 1402564 1623691 1400615 1016 l +1623691 1400615 1625639 1398666 1016 l +1625639 1398666 1629537 1398666 1016 l +1629537 1398666 1631486 1396717 1016 l +1631486 1396717 1631486 1394768 1016 l +1631486 1394768 1629537 1392820 1016 l +1629537 1392820 1625639 1392820 1016 l +1625639 1392820 1623691 1394768 1016 l +1641230 1392820 1637332 1392820 1016 l +1637332 1392820 1635384 1394768 1016 l +1635384 1394768 1635384 1398666 1016 l +1635384 1398666 1637332 1400615 1016 l +1637332 1400615 1641230 1400615 1016 l +1641230 1400615 1643179 1398666 1016 l +1643179 1398666 1643179 1396717 1016 l +1643179 1396717 1635384 1396717 1016 l +1650974 1388923 1652923 1388923 1016 l +1652923 1388923 1654872 1390872 1016 l +1654872 1390872 1654872 1400615 1016 l +1654872 1400615 1649025 1400615 1016 l +1649025 1400615 1647077 1398666 1016 l +1647077 1398666 1647077 1394768 1016 l +1647077 1394768 1649025 1392820 1016 l +1649025 1392820 1654872 1392820 1016 l +1658770 1392820 1658770 1400615 1016 l +1658770 1400615 1660718 1400615 1016 l +1660718 1400615 1662667 1398666 1016 l +1662667 1398666 1662667 1392820 1016 l +1662667 1398666 1664616 1400615 1016 l +1664616 1400615 1666565 1398666 1016 l +1666565 1398666 1666565 1392820 1016 l +1676309 1392820 1672411 1392820 1016 l +1672411 1392820 1670463 1394768 1016 l +1670463 1394768 1670463 1398666 1016 l +1670463 1398666 1672411 1400615 1016 l +1672411 1400615 1676309 1400615 1016 l +1676309 1400615 1678258 1398666 1016 l +1678258 1398666 1678258 1396717 1016 l +1678258 1396717 1670463 1396717 1016 l +1682156 1392820 1682156 1400615 1016 l +1682156 1400615 1688002 1400615 1016 l +1688002 1400615 1689951 1398666 1016 l +1689951 1398666 1689951 1392820 1016 l +1695797 1402564 1695797 1394768 1016 l +1695797 1394768 1697746 1392820 1016 l +1693849 1400615 1697746 1400615 1016 l +1703593 1392820 1709439 1392820 1016 l +1709439 1392820 1711388 1394768 1016 l +1711388 1394768 1709439 1396717 1016 l +1709439 1396717 1705541 1396717 1016 l +1705541 1396717 1703593 1398666 1016 l +1703593 1398666 1705541 1400615 1016 l +1705541 1400615 1711388 1400615 1016 l +1539892 1429913 1539892 1418220 1016 l +1539892 1418220 1547687 1418220 1016 l +1559380 1429913 1551585 1429913 1016 l +1551585 1429913 1551585 1418220 1016 l +1551585 1418220 1559380 1418220 1016 l +1551585 1424066 1555482 1424066 1016 l +1563278 1429913 1563278 1418220 1016 l +1563278 1418220 1569124 1418220 1016 l +1569124 1418220 1571073 1420168 1016 l +1571073 1420168 1571073 1427964 1016 l +1571073 1427964 1569124 1429913 1016 l +1569124 1429913 1563278 1429913 1016 l +1588612 1431862 1588612 1427964 1016 l +1588612 1427964 1586664 1426015 1016 l +1598356 1414323 1600305 1414323 1016 l +1600305 1414323 1602254 1416272 1016 l +1602254 1416272 1602254 1426015 1016 l +1602254 1426015 1596407 1426015 1016 l +1596407 1426015 1594459 1424066 1016 l +1594459 1424066 1594459 1420168 1016 l +1594459 1420168 1596407 1418220 1016 l +1596407 1418220 1602254 1418220 1016 l +1608100 1431862 1608100 1427964 1016 l +1608100 1427964 1606152 1426015 1016 l +1633435 1427964 1631486 1429913 1016 l +1631486 1429913 1627588 1429913 1016 l +1627588 1429913 1625640 1427964 1016 l +1625640 1427964 1625640 1426015 1016 l +1625640 1426015 1627588 1424066 1016 l +1627588 1424066 1631486 1424066 1016 l +1631486 1424066 1633435 1422117 1016 l +1633435 1422117 1633435 1420168 1016 l +1633435 1420168 1631486 1418220 1016 l +1631486 1418220 1627588 1418220 1016 l +1627588 1418220 1625640 1420168 1016 l +1643179 1418220 1639281 1418220 1016 l +1639281 1418220 1637333 1420168 1016 l +1637333 1420168 1637333 1424066 1016 l +1637333 1424066 1639281 1426015 1016 l +1639281 1426015 1643179 1426015 1016 l +1643179 1426015 1645128 1424066 1016 l +1645128 1424066 1645128 1422117 1016 l +1645128 1422117 1637333 1422117 1016 l +1652923 1414323 1654872 1414323 1016 l +1654872 1414323 1656821 1416272 1016 l +1656821 1416272 1656821 1426015 1016 l +1656821 1426015 1650974 1426015 1016 l +1650974 1426015 1649026 1424066 1016 l +1649026 1424066 1649026 1420168 1016 l +1649026 1420168 1650974 1418220 1016 l +1650974 1418220 1656821 1418220 1016 l +1660719 1418220 1660719 1426015 1016 l +1660719 1426015 1662667 1426015 1016 l +1662667 1426015 1664616 1424066 1016 l +1664616 1424066 1664616 1418220 1016 l +1664616 1424066 1666565 1426015 1016 l +1666565 1426015 1668514 1424066 1016 l +1668514 1424066 1668514 1418220 1016 l +1678258 1418220 1674360 1418220 1016 l +1674360 1418220 1672412 1420168 1016 l +1672412 1420168 1672412 1424066 1016 l +1672412 1424066 1674360 1426015 1016 l +1674360 1426015 1678258 1426015 1016 l +1678258 1426015 1680207 1424066 1016 l +1680207 1424066 1680207 1422117 1016 l +1680207 1422117 1672412 1422117 1016 l +1684105 1418220 1684105 1426015 1016 l +1684105 1426015 1689951 1426015 1016 l +1689951 1426015 1691900 1424066 1016 l +1691900 1424066 1691900 1418220 1016 l +1697746 1427964 1697746 1420168 1016 l +1697746 1420168 1699695 1418220 1016 l +1695798 1426015 1699695 1426015 1016 l +1705542 1418220 1711388 1418220 1016 l +1711388 1418220 1713337 1420168 1016 l +1713337 1420168 1711388 1422117 1016 l +1711388 1422117 1707490 1422117 1016 l +1707490 1422117 1705542 1424066 1016 l +1705542 1424066 1707490 1426015 1016 l +1707490 1426015 1713337 1426015 1016 l +1539892 1455313 1539892 1443620 1016 l +1539892 1443620 1547687 1443620 1016 l +1559380 1455313 1551585 1455313 1016 l +1551585 1455313 1551585 1443620 1016 l +1551585 1443620 1559380 1443620 1016 l +1551585 1449466 1555482 1449466 1016 l +1563278 1455313 1563278 1443620 1016 l +1563278 1443620 1569124 1443620 1016 l +1569124 1443620 1571073 1445568 1016 l +1571073 1445568 1571073 1453364 1016 l +1571073 1453364 1569124 1455313 1016 l +1569124 1455313 1563278 1455313 1016 l +1588612 1457262 1588612 1453364 1016 l +1588612 1453364 1586664 1451415 1016 l +1602254 1455313 1602254 1443620 1016 l +1602254 1443620 1596407 1443620 1016 l +1596407 1443620 1594459 1445568 1016 l +1594459 1445568 1594459 1449466 1016 l +1594459 1449466 1596407 1451415 1016 l +1596407 1451415 1602254 1451415 1016 l +1606152 1439723 1606152 1451415 1016 l +1606152 1451415 1611998 1451415 1016 l +1611998 1451415 1613947 1449466 1016 l +1613947 1449466 1613947 1445568 1016 l +1613947 1445568 1611998 1443620 1016 l +1611998 1443620 1606152 1443620 1016 l +1619793 1457262 1619793 1453364 1016 l +1619793 1453364 1617845 1451415 1016 l +1645128 1453364 1643179 1455313 1016 l +1643179 1455313 1639281 1455313 1016 l +1639281 1455313 1637333 1453364 1016 l +1637333 1453364 1637333 1451415 1016 l +1637333 1451415 1639281 1449466 1016 l +1639281 1449466 1643179 1449466 1016 l +1643179 1449466 1645128 1447517 1016 l +1645128 1447517 1645128 1445568 1016 l +1645128 1445568 1643179 1443620 1016 l +1643179 1443620 1639281 1443620 1016 l +1639281 1443620 1637333 1445568 1016 l +1654872 1443620 1650974 1443620 1016 l +1650974 1443620 1649026 1445568 1016 l +1649026 1445568 1649026 1449466 1016 l +1649026 1449466 1650974 1451415 1016 l +1650974 1451415 1654872 1451415 1016 l +1654872 1451415 1656821 1449466 1016 l +1656821 1449466 1656821 1447517 1016 l +1656821 1447517 1649026 1447517 1016 l +1664616 1439723 1666565 1439723 1016 l +1666565 1439723 1668514 1441672 1016 l +1668514 1441672 1668514 1451415 1016 l +1668514 1451415 1662667 1451415 1016 l +1662667 1451415 1660719 1449466 1016 l +1660719 1449466 1660719 1445568 1016 l +1660719 1445568 1662667 1443620 1016 l +1662667 1443620 1668514 1443620 1016 l +1672412 1443620 1672412 1451415 1016 l +1672412 1451415 1674360 1451415 1016 l +1674360 1451415 1676309 1449466 1016 l +1676309 1449466 1676309 1443620 1016 l +1676309 1449466 1678258 1451415 1016 l +1678258 1451415 1680207 1449466 1016 l +1680207 1449466 1680207 1443620 1016 l +1689951 1443620 1686053 1443620 1016 l +1686053 1443620 1684105 1445568 1016 l +1684105 1445568 1684105 1449466 1016 l +1684105 1449466 1686053 1451415 1016 l +1686053 1451415 1689951 1451415 1016 l +1689951 1451415 1691900 1449466 1016 l +1691900 1449466 1691900 1447517 1016 l +1691900 1447517 1684105 1447517 1016 l +1695798 1443620 1695798 1451415 1016 l +1695798 1451415 1701644 1451415 1016 l +1701644 1451415 1703593 1449466 1016 l +1703593 1449466 1703593 1443620 1016 l +1709439 1453364 1709439 1445568 1016 l +1709439 1445568 1711388 1443620 1016 l +1707491 1451415 1711388 1451415 1016 l +1717235 1443620 1723081 1443620 1016 l +1723081 1443620 1725030 1445568 1016 l +1725030 1445568 1723081 1447517 1016 l +1723081 1447517 1719183 1447517 1016 l +1719183 1447517 1717235 1449466 1016 l +1717235 1449466 1719183 1451415 1016 l +1719183 1451415 1725030 1451415 1016 l +1539892 718713 1539892 707020 1016 l +1539892 707020 1547687 707020 1016 l +1559380 718713 1551585 718713 1016 l +1551585 718713 1551585 707020 1016 l +1551585 707020 1559380 707020 1016 l +1551585 712866 1555482 712866 1016 l +1563278 718713 1563278 707020 1016 l +1563278 707020 1569124 707020 1016 l +1569124 707020 1571073 708968 1016 l +1571073 708968 1571073 716764 1016 l +1571073 716764 1569124 718713 1016 l +1569124 718713 1563278 718713 1016 l +1586664 708968 1586664 716764 1016 l +1586664 716764 1588612 718713 1016 l +1588612 718713 1592510 718713 1016 l +1592510 718713 1594459 716764 1016 l +1594459 716764 1594459 708968 1016 l +1594459 708968 1592510 707020 1016 l +1592510 707020 1588612 707020 1016 l +1588612 707020 1586664 708968 1016 l +1586664 708968 1594459 716764 1016 l +1617845 716764 1615896 718713 1016 l +1615896 718713 1611998 718713 1016 l +1611998 718713 1610050 716764 1016 l +1610050 716764 1610050 708968 1016 l +1610050 708968 1611998 707020 1016 l +1611998 707020 1615896 707020 1016 l +1615896 707020 1617845 708968 1016 l +1623691 714815 1627589 714815 1016 l +1627589 714815 1629538 712866 1016 l +1629538 712866 1629538 707020 1016 l +1629538 707020 1623691 707020 1016 l +1623691 707020 1621743 708968 1016 l +1621743 708968 1623691 710917 1016 l +1623691 710917 1629538 710917 1016 l +1635384 716764 1635384 708968 1016 l +1635384 708968 1637333 707020 1016 l +1633436 714815 1637333 714815 1016 l +1643180 718713 1643180 707020 1016 l +1643180 712866 1645128 714815 1016 l +1645128 714815 1649026 714815 1016 l +1649026 714815 1650975 712866 1016 l +1650975 712866 1650975 707020 1016 l +1656821 707020 1660719 707020 1016 l +1660719 707020 1662668 708968 1016 l +1662668 708968 1662668 712866 1016 l +1662668 712866 1660719 714815 1016 l +1660719 714815 1656821 714815 1016 l +1656821 714815 1654873 712866 1016 l +1654873 712866 1654873 708968 1016 l +1654873 708968 1656821 707020 1016 l +1674361 718713 1674361 707020 1016 l +1674361 707020 1668514 707020 1016 l +1668514 707020 1666566 708968 1016 l +1666566 708968 1666566 712866 1016 l +1666566 712866 1668514 714815 1016 l +1668514 714815 1674361 714815 1016 l +1684105 707020 1680207 707020 1016 l +1680207 707020 1678259 708968 1016 l +1678259 708968 1678259 712866 1016 l +1678259 712866 1680207 714815 1016 l +1680207 714815 1684105 714815 1016 l +1684105 714815 1686054 712866 1016 l +1686054 712866 1686054 710917 1016 l +1686054 710917 1678259 710917 1016 l +1539892 871113 1539892 859420 1016 l +1539892 859420 1547687 859420 1016 l +1559380 871113 1551585 871113 1016 l +1551585 871113 1551585 859420 1016 l +1551585 859420 1559380 859420 1016 l +1551585 865266 1555482 865266 1016 l +1563278 871113 1563278 859420 1016 l +1563278 859420 1569124 859420 1016 l +1569124 859420 1571073 861368 1016 l +1571073 861368 1571073 869164 1016 l +1571073 869164 1569124 871113 1016 l +1569124 871113 1563278 871113 1016 l +1586664 869164 1588612 871113 1016 l +1588612 871113 1588612 859420 1016 l +1586664 859420 1590561 859420 1016 l +1615896 869164 1613947 871113 1016 l +1613947 871113 1610049 871113 1016 l +1610049 871113 1608101 869164 1016 l +1608101 869164 1608101 861368 1016 l +1608101 861368 1610049 859420 1016 l +1610049 859420 1613947 859420 1016 l +1613947 859420 1615896 861368 1016 l +1621742 867215 1625640 867215 1016 l +1625640 867215 1627589 865266 1016 l +1627589 865266 1627589 859420 1016 l +1627589 859420 1621742 859420 1016 l +1621742 859420 1619794 861368 1016 l +1619794 861368 1621742 863317 1016 l +1621742 863317 1627589 863317 1016 l +1633435 869164 1633435 861368 1016 l +1633435 861368 1635384 859420 1016 l +1631487 867215 1635384 867215 1016 l +1641231 871113 1641231 859420 1016 l +1641231 865266 1643179 867215 1016 l +1643179 867215 1647077 867215 1016 l +1647077 867215 1649026 865266 1016 l +1649026 865266 1649026 859420 1016 l +1654872 859420 1658770 859420 1016 l +1658770 859420 1660719 861368 1016 l +1660719 861368 1660719 865266 1016 l +1660719 865266 1658770 867215 1016 l +1658770 867215 1654872 867215 1016 l +1654872 867215 1652924 865266 1016 l +1652924 865266 1652924 861368 1016 l +1652924 861368 1654872 859420 1016 l +1672412 871113 1672412 859420 1016 l +1672412 859420 1666565 859420 1016 l +1666565 859420 1664617 861368 1016 l +1664617 861368 1664617 865266 1016 l +1664617 865266 1666565 867215 1016 l +1666565 867215 1672412 867215 1016 l +1682156 859420 1678258 859420 1016 l +1678258 859420 1676310 861368 1016 l +1676310 861368 1676310 865266 1016 l +1676310 865266 1678258 867215 1016 l +1678258 867215 1682156 867215 1016 l +1682156 867215 1684105 865266 1016 l +1684105 865266 1684105 863317 1016 l +1684105 863317 1676310 863317 1016 l +1539892 1048913 1539892 1037220 1016 l +1539892 1037220 1547687 1037220 1016 l +1559380 1048913 1551585 1048913 1016 l +1551585 1048913 1551585 1037220 1016 l +1551585 1037220 1559380 1037220 1016 l +1551585 1043066 1555482 1043066 1016 l +1563278 1048913 1563278 1037220 1016 l +1563278 1037220 1569124 1037220 1016 l +1569124 1037220 1571073 1039168 1016 l +1571073 1039168 1571073 1046964 1016 l +1571073 1046964 1569124 1048913 1016 l +1569124 1048913 1563278 1048913 1016 l +1594459 1037220 1586664 1037220 1016 l +1586664 1037220 1594459 1045015 1016 l +1594459 1045015 1594459 1046964 1016 l +1594459 1046964 1592510 1048913 1016 l +1592510 1048913 1588612 1048913 1016 l +1588612 1048913 1586664 1046964 1016 l +1617845 1046964 1615896 1048913 1016 l +1615896 1048913 1611998 1048913 1016 l +1611998 1048913 1610050 1046964 1016 l +1610050 1046964 1610050 1039168 1016 l +1610050 1039168 1611998 1037220 1016 l +1611998 1037220 1615896 1037220 1016 l +1615896 1037220 1617845 1039168 1016 l +1623691 1045015 1627589 1045015 1016 l +1627589 1045015 1629538 1043066 1016 l +1629538 1043066 1629538 1037220 1016 l +1629538 1037220 1623691 1037220 1016 l +1623691 1037220 1621743 1039168 1016 l +1621743 1039168 1623691 1041117 1016 l +1623691 1041117 1629538 1041117 1016 l +1635384 1046964 1635384 1039168 1016 l +1635384 1039168 1637333 1037220 1016 l +1633436 1045015 1637333 1045015 1016 l +1643180 1048913 1643180 1037220 1016 l +1643180 1043066 1645128 1045015 1016 l +1645128 1045015 1649026 1045015 1016 l +1649026 1045015 1650975 1043066 1016 l +1650975 1043066 1650975 1037220 1016 l +1656821 1037220 1660719 1037220 1016 l +1660719 1037220 1662668 1039168 1016 l +1662668 1039168 1662668 1043066 1016 l +1662668 1043066 1660719 1045015 1016 l +1660719 1045015 1656821 1045015 1016 l +1656821 1045015 1654873 1043066 1016 l +1654873 1043066 1654873 1039168 1016 l +1654873 1039168 1656821 1037220 1016 l +1674361 1048913 1674361 1037220 1016 l +1674361 1037220 1668514 1037220 1016 l +1668514 1037220 1666566 1039168 1016 l +1666566 1039168 1666566 1043066 1016 l +1666566 1043066 1668514 1045015 1016 l +1668514 1045015 1674361 1045015 1016 l +1684105 1037220 1680207 1037220 1016 l +1680207 1037220 1678259 1039168 1016 l +1678259 1039168 1678259 1043066 1016 l +1678259 1043066 1680207 1045015 1016 l +1680207 1045015 1684105 1045015 1016 l +1684105 1045015 1686054 1043066 1016 l +1686054 1043066 1686054 1041117 1016 l +1686054 1041117 1678259 1041117 1016 l +1539892 1201313 1539892 1189620 1016 l +1539892 1189620 1547687 1189620 1016 l +1559380 1201313 1551585 1201313 1016 l +1551585 1201313 1551585 1189620 1016 l +1551585 1189620 1559380 1189620 1016 l +1551585 1195466 1555482 1195466 1016 l +1563278 1201313 1563278 1189620 1016 l +1563278 1189620 1569124 1189620 1016 l +1569124 1189620 1571073 1191568 1016 l +1571073 1191568 1571073 1199364 1016 l +1571073 1199364 1569124 1201313 1016 l +1569124 1201313 1563278 1201313 1016 l +1586664 1199364 1588612 1201313 1016 l +1588612 1201313 1592510 1201313 1016 l +1592510 1201313 1594459 1199364 1016 l +1594459 1199364 1594459 1197415 1016 l +1594459 1197415 1592510 1195466 1016 l +1592510 1195466 1590561 1195466 1016 l +1592510 1195466 1594459 1193517 1016 l +1594459 1193517 1594459 1191568 1016 l +1594459 1191568 1592510 1189620 1016 l +1592510 1189620 1588612 1189620 1016 l +1588612 1189620 1586664 1191568 1016 l +1617845 1199364 1615896 1201313 1016 l +1615896 1201313 1611998 1201313 1016 l +1611998 1201313 1610050 1199364 1016 l +1610050 1199364 1610050 1191568 1016 l +1610050 1191568 1611998 1189620 1016 l +1611998 1189620 1615896 1189620 1016 l +1615896 1189620 1617845 1191568 1016 l +1623691 1197415 1627589 1197415 1016 l +1627589 1197415 1629538 1195466 1016 l +1629538 1195466 1629538 1189620 1016 l +1629538 1189620 1623691 1189620 1016 l +1623691 1189620 1621743 1191568 1016 l +1621743 1191568 1623691 1193517 1016 l +1623691 1193517 1629538 1193517 1016 l +1635384 1199364 1635384 1191568 1016 l +1635384 1191568 1637333 1189620 1016 l +1633436 1197415 1637333 1197415 1016 l +1643180 1201313 1643180 1189620 1016 l +1643180 1195466 1645128 1197415 1016 l +1645128 1197415 1649026 1197415 1016 l +1649026 1197415 1650975 1195466 1016 l +1650975 1195466 1650975 1189620 1016 l +1656821 1189620 1660719 1189620 1016 l +1660719 1189620 1662668 1191568 1016 l +1662668 1191568 1662668 1195466 1016 l +1662668 1195466 1660719 1197415 1016 l +1660719 1197415 1656821 1197415 1016 l +1656821 1197415 1654873 1195466 1016 l +1654873 1195466 1654873 1191568 1016 l +1654873 1191568 1656821 1189620 1016 l +1674361 1201313 1674361 1189620 1016 l +1674361 1189620 1668514 1189620 1016 l +1668514 1189620 1666566 1191568 1016 l +1666566 1191568 1666566 1195466 1016 l +1666566 1195466 1668514 1197415 1016 l +1668514 1197415 1674361 1197415 1016 l +1684105 1189620 1680207 1189620 1016 l +1680207 1189620 1678259 1191568 1016 l +1678259 1191568 1678259 1195466 1016 l +1678259 1195466 1680207 1197415 1016 l +1680207 1197415 1684105 1197415 1016 l +1684105 1197415 1686054 1195466 1016 l +1686054 1195466 1686054 1193517 1016 l +1686054 1193517 1678259 1193517 1016 l +536601 1876436 536601 1911517 3048 l +524908 1911517 548295 1911517 3048 l +559989 1899823 559989 1882282 3048 l +559989 1882282 565835 1876436 3048 l +565835 1876436 583376 1876436 3048 l +583376 1876436 583376 1899823 3048 l +595070 1876436 595070 1899823 3048 l +595070 1899823 612610 1899823 3048 l +612610 1899823 618457 1893976 3048 l +618457 1893976 618457 1876436 3048 l +653538 1911517 653538 1876436 3048 l +653538 1876436 635997 1876436 3048 l +635997 1876436 630151 1882282 3048 l +630151 1882282 630151 1893976 3048 l +630151 1893976 635997 1899823 3048 l +635997 1899823 653538 1899823 3048 l +665232 1876436 665232 1899823 3048 l +665232 1888129 676925 1899823 3048 l +676925 1899823 682772 1899823 3048 l +706159 1899823 717853 1899823 3048 l +717853 1899823 723700 1893976 3048 l +723700 1893976 723700 1876436 3048 l +723700 1876436 706159 1876436 3048 l +706159 1876436 700313 1882282 3048 l +700313 1882282 706159 1888129 3048 l +706159 1888129 723700 1888129 3048 l +735394 1911517 735394 1876436 3048 l +735394 1876436 747087 1888129 3048 l +747087 1888129 758781 1876436 3048 l +758781 1876436 758781 1911517 3048 l +776321 1899823 788015 1899823 3048 l +788015 1899823 793862 1893976 3048 l +793862 1893976 793862 1876436 3048 l +793862 1876436 776321 1876436 3048 l +776321 1876436 770475 1882282 3048 l +770475 1882282 776321 1888129 3048 l +776321 1888129 793862 1888129 3048 l +805556 1876436 805556 1899823 3048 l +805556 1888129 817249 1899823 3048 l +817249 1899823 823096 1899823 3048 l +858177 1876436 846483 1876436 3048 l +846483 1876436 840637 1882282 3048 l +840637 1882282 840637 1893976 3048 l +840637 1893976 846483 1899823 3048 l +846483 1899823 858177 1899823 3048 l +858177 1899823 864024 1893976 3048 l +864024 1893976 864024 1888129 3048 l +864024 1888129 840637 1888129 3048 l +910799 1876436 910799 1911517 3048 l +910799 1911517 928339 1911517 3048 l +928339 1911517 934186 1905670 3048 l +934186 1905670 934186 1893976 3048 l +934186 1893976 928339 1888129 3048 l +928339 1888129 910799 1888129 3048 l +945880 1876436 957573 1876436 3048 l +951726 1876436 951726 1911517 3048 l +945880 1911517 957573 1911517 3048 l +998501 1905670 992654 1911517 3048 l +992654 1911517 980960 1911517 3048 l +980960 1911517 975114 1905670 3048 l +975114 1905670 975114 1882282 3048 l +975114 1882282 980960 1876436 3048 l +980960 1876436 992654 1876436 3048 l +992654 1876436 998501 1882282 3048 l +1045276 1911517 1045276 1876436 3048 l +1045276 1876436 1068663 1876436 3048 l +1103744 1911517 1080357 1911517 3048 l +1080357 1911517 1080357 1876436 3048 l +1080357 1876436 1103744 1876436 3048 l +1080357 1893976 1092050 1893976 3048 l +1115438 1911517 1115438 1876436 3048 l +1115438 1876436 1132978 1876436 3048 l +1132978 1876436 1138825 1882282 3048 l +1138825 1882282 1138825 1905670 3048 l +1138825 1905670 1132978 1911517 3048 l +1132978 1911517 1115438 1911517 3048 l +1185600 1911517 1185600 1876436 3048 l +1185600 1876436 1203140 1876436 3048 l +1203140 1876436 1208987 1882282 3048 l +1208987 1882282 1208987 1905670 3048 l +1208987 1905670 1203140 1911517 3048 l +1203140 1911517 1185600 1911517 3048 l +1220681 1876436 1220681 1899823 3048 l +1220681 1888129 1232374 1899823 3048 l +1232374 1899823 1238221 1899823 3048 l +1255762 1899823 1261608 1899823 3048 l +1261608 1899823 1261608 1876436 3048 l +1255762 1876436 1267455 1876436 3048 l +1261608 1917364 1261608 1911517 3048 l +1284996 1899823 1296689 1876436 3048 l +1296689 1876436 1308383 1899823 3048 l +1337617 1876436 1325923 1876436 3048 l +1325923 1876436 1320077 1882282 3048 l +1320077 1882282 1320077 1893976 3048 l +1320077 1893976 1325923 1899823 3048 l +1325923 1899823 1337617 1899823 3048 l +1337617 1899823 1343464 1893976 3048 l +1343464 1893976 1343464 1888129 3048 l +1343464 1888129 1320077 1888129 3048 l +1355158 1876436 1355158 1899823 3048 l +1355158 1888129 1366851 1899823 3048 l +1366851 1899823 1372698 1899823 3048 l +928387 1258327 928387 1272308 1270 l +928387 1272308 933047 1267648 1270 l +933047 1267648 937708 1272308 1270 l +937708 1272308 937708 1258327 1270 l +951740 1269978 949409 1272308 1270 l +949409 1272308 944749 1272308 1270 l +944749 1272308 942419 1269978 1270 l +942419 1269978 942419 1260657 1270 l +942419 1260657 944749 1258327 1270 l +944749 1258327 949409 1258327 1270 l +949409 1258327 951740 1260657 1270 l +956451 1272308 956451 1258327 1270 l +956451 1258327 965772 1258327 1270 l +970483 1258327 970483 1272308 1270 l +970483 1272308 977473 1272308 1270 l +977473 1272308 979804 1269978 1270 l +979804 1269978 979804 1265317 1270 l +979804 1265317 977473 1262987 1270 l +977473 1262987 970483 1262987 1270 l +975143 1262987 979804 1258327 1270 l +993836 1258327 984515 1272308 1270 l +878984 1265312 904384 1265312 1524 l +894421 1269503 894421 1283484 1270 l +894421 1283484 887431 1276493 1270 l +887431 1276493 896752 1276493 1270 l +935377 1373908 930717 1373908 1270 l +930717 1373908 928387 1371578 1270 l +928387 1371578 928387 1362257 1270 l +928387 1362257 930717 1359927 1270 l +930717 1359927 935377 1359927 1270 l +935377 1359927 937708 1362257 1270 l +937708 1362257 937708 1371578 1270 l +937708 1371578 935377 1373908 1270 l +951740 1371578 949409 1373908 1270 l +949409 1373908 944749 1373908 1270 l +944749 1373908 942419 1371578 1270 l +942419 1371578 942419 1369248 1270 l +942419 1369248 944749 1366917 1270 l +944749 1366917 949409 1366917 1270 l +949409 1366917 951740 1364587 1270 l +951740 1364587 951740 1362257 1270 l +951740 1362257 949409 1359927 1270 l +949409 1359927 944749 1359927 1270 l +944749 1359927 942419 1362257 1270 l +965772 1371578 963441 1373908 1270 l +963441 1373908 958781 1373908 1270 l +958781 1373908 956451 1371578 1270 l +956451 1371578 956451 1362257 1270 l +956451 1362257 958781 1359927 1270 l +958781 1359927 963441 1359927 1270 l +963441 1359927 965772 1362257 1270 l +970483 1371578 972813 1373908 1270 l +972813 1373908 972813 1359927 1270 l +970483 1359927 975143 1359927 1270 l +878984 1366912 904384 1366912 1524 l +875737 1382754 878067 1385084 1270 l +878067 1385084 878067 1371103 1270 l +875737 1371103 880397 1371103 1270 l +896751 1385084 892090 1382754 1270 l +892090 1382754 887430 1378093 1270 l +887430 1378093 887430 1373433 1270 l +887430 1373433 889760 1371103 1270 l +889760 1371103 894420 1371103 1270 l +894420 1371103 896751 1373433 1270 l +896751 1373433 896751 1375763 1270 l +896751 1375763 894420 1378093 1270 l +894420 1378093 887430 1378093 1270 l +1042753 1105927 1042753 1119908 1270 l +1042753 1119908 1049743 1119908 1270 l +1049743 1119908 1052074 1117578 1270 l +1052074 1117578 1052074 1112917 1270 l +1052074 1112917 1049743 1110587 1270 l +1049743 1110587 1042753 1110587 1270 l +1047413 1110587 1052074 1105927 1270 l +1056785 1105927 1056785 1115248 1270 l +1056785 1115248 1061445 1119908 1270 l +1061445 1119908 1066106 1115248 1270 l +1066106 1115248 1066106 1105927 1270 l +1056785 1112917 1066106 1112917 1270 l +1070817 1108257 1070817 1117578 1270 l +1070817 1117578 1073147 1119908 1270 l +1073147 1119908 1077807 1119908 1270 l +1077807 1119908 1080138 1117578 1270 l +1080138 1117578 1080138 1108257 1270 l +1080138 1108257 1077807 1105927 1270 l +1077807 1105927 1073147 1105927 1270 l +1073147 1105927 1070817 1108257 1270 l +1070817 1108257 1080138 1117578 1270 l +1132984 1112912 1107584 1112912 1524 l +1111775 1128754 1114105 1131084 1270 l +1114105 1131084 1114105 1117103 1270 l +1111775 1117103 1116435 1117103 1270 l +1123468 1131084 1132789 1131084 1270 l +1132789 1131084 1132789 1128754 1270 l +1132789 1128754 1123468 1119433 1270 l +1123468 1119433 1123468 1117103 1270 l +1045092 1131327 1045092 1145308 1270 l +1045092 1145308 1052082 1145308 1270 l +1052082 1145308 1054413 1142978 1270 l +1054413 1142978 1054413 1138317 1270 l +1054413 1138317 1052082 1135987 1270 l +1052082 1135987 1045092 1135987 1270 l +1049752 1135987 1054413 1131327 1270 l +1059124 1131327 1059124 1140648 1270 l +1059124 1140648 1063784 1145308 1270 l +1063784 1145308 1068445 1140648 1270 l +1068445 1140648 1068445 1131327 1270 l +1059124 1138317 1068445 1138317 1270 l +1073156 1142978 1075486 1145308 1270 l +1075486 1145308 1075486 1131327 1270 l +1073156 1131327 1077816 1131327 1270 l +1132984 1138312 1107584 1138312 1524 l +1111775 1154154 1114105 1156484 1270 l +1114105 1156484 1114105 1142503 1270 l +1111775 1142503 1116435 1142503 1270 l +1123468 1154154 1125798 1156484 1270 l +1125798 1156484 1130458 1156484 1270 l +1130458 1156484 1132789 1154154 1270 l +1132789 1154154 1132789 1151824 1270 l +1132789 1151824 1130458 1149493 1270 l +1130458 1149493 1132789 1147163 1270 l +1132789 1147163 1132789 1144833 1270 l +1132789 1144833 1130458 1142503 1270 l +1130458 1142503 1125798 1142503 1270 l +1125798 1142503 1123468 1144833 1270 l +1123468 1144833 1123468 1147163 1270 l +1123468 1147163 1125798 1149493 1270 l +1125798 1149493 1123468 1151824 1270 l +1123468 1151824 1123468 1154154 1270 l +1125798 1149493 1130458 1149493 1270 l +1042753 1156727 1042753 1170708 1270 l +1042753 1170708 1049743 1170708 1270 l +1049743 1170708 1052074 1168378 1270 l +1052074 1168378 1052074 1163717 1270 l +1052074 1163717 1049743 1161387 1270 l +1049743 1161387 1042753 1161387 1270 l +1047413 1161387 1052074 1156727 1270 l +1056785 1156727 1056785 1166048 1270 l +1056785 1166048 1061445 1170708 1270 l +1061445 1170708 1066106 1166048 1270 l +1066106 1166048 1066106 1156727 1270 l +1056785 1163717 1066106 1163717 1270 l +1080138 1156727 1070817 1156727 1270 l +1070817 1156727 1080138 1166048 1270 l +1080138 1166048 1080138 1168378 1270 l +1080138 1168378 1077807 1170708 1270 l +1077807 1170708 1073147 1170708 1270 l +1073147 1170708 1070817 1168378 1270 l +1132984 1163712 1107584 1163712 1524 l +1111775 1179554 1114105 1181884 1270 l +1114105 1181884 1114105 1167903 1270 l +1111775 1167903 1116435 1167903 1270 l +1042753 1182127 1042753 1196108 1270 l +1042753 1196108 1049743 1196108 1270 l +1049743 1196108 1052074 1193778 1270 l +1052074 1193778 1052074 1189117 1270 l +1052074 1189117 1049743 1186787 1270 l +1049743 1186787 1042753 1186787 1270 l +1047413 1186787 1052074 1182127 1270 l +1056785 1182127 1056785 1191448 1270 l +1056785 1191448 1061445 1196108 1270 l +1061445 1196108 1066106 1191448 1270 l +1066106 1191448 1066106 1182127 1270 l +1056785 1189117 1066106 1189117 1270 l +1070817 1193778 1073147 1196108 1270 l +1073147 1196108 1077807 1196108 1270 l +1077807 1196108 1080138 1193778 1270 l +1080138 1193778 1080138 1191448 1270 l +1080138 1191448 1077807 1189117 1270 l +1077807 1189117 1075477 1189117 1270 l +1077807 1189117 1080138 1186787 1270 l +1080138 1186787 1080138 1184457 1270 l +1080138 1184457 1077807 1182127 1270 l +1077807 1182127 1073147 1182127 1270 l +1073147 1182127 1070817 1184457 1270 l +1132984 1189112 1107584 1189112 1524 l +1121096 1193303 1111775 1193303 1270 l +1111775 1193303 1121096 1202624 1270 l +1121096 1202624 1121096 1204954 1270 l +1121096 1204954 1118765 1207284 1270 l +1118765 1207284 1114105 1207284 1270 l +1114105 1207284 1111775 1204954 1270 l +965555 1207527 965555 1221508 1270 l +960895 1221508 970216 1221508 1270 l +974927 1209857 974927 1219178 1270 l +974927 1219178 977257 1221508 1270 l +977257 1221508 981917 1221508 1270 l +981917 1221508 984248 1219178 1270 l +984248 1219178 984248 1209857 1270 l +984248 1209857 981917 1207527 1270 l +981917 1207527 977257 1207527 1270 l +977257 1207527 974927 1209857 1270 l +974927 1209857 984248 1219178 1270 l +998280 1219178 995949 1221508 1270 l +995949 1221508 991289 1221508 1270 l +991289 1221508 988959 1219178 1270 l +988959 1219178 988959 1209857 1270 l +988959 1209857 991289 1207527 1270 l +991289 1207527 995949 1207527 1270 l +995949 1207527 998280 1209857 1270 l +1002991 1221508 1002991 1207527 1270 l +1002991 1212187 1012312 1221508 1270 l +1005321 1214517 1012312 1207527 1270 l +1017023 1207527 1021683 1207527 1270 l +1019353 1207527 1019353 1221508 1270 l +1017023 1221508 1021683 1221508 1270 l +1028716 1207527 1038037 1221508 1270 l +1042748 1207527 1042748 1221508 1270 l +1042748 1221508 1049738 1221508 1270 l +1049738 1221508 1052069 1219178 1270 l +1052069 1219178 1052069 1214517 1270 l +1052069 1214517 1049738 1212187 1270 l +1049738 1212187 1042748 1212187 1270 l +1047408 1212187 1052069 1207527 1270 l +1056780 1207527 1056780 1216848 1270 l +1056780 1216848 1061440 1221508 1270 l +1061440 1221508 1066101 1216848 1270 l +1066101 1216848 1066101 1207527 1270 l +1056780 1214517 1066101 1214517 1270 l +1077802 1207527 1077802 1221508 1270 l +1077802 1221508 1070812 1214517 1270 l +1070812 1214517 1080133 1214517 1270 l +1132984 1214512 1107584 1214512 1524 l +1111775 1230354 1114105 1232684 1270 l +1114105 1232684 1118765 1232684 1270 l +1118765 1232684 1121096 1230354 1270 l +1121096 1230354 1121096 1228024 1270 l +1121096 1228024 1118765 1225693 1270 l +1118765 1225693 1116435 1225693 1270 l +1118765 1225693 1121096 1223363 1270 l +1121096 1223363 1121096 1221033 1270 l +1121096 1221033 1118765 1218703 1270 l +1118765 1218703 1114105 1218703 1270 l +1114105 1218703 1111775 1221033 1270 l +1042753 1258327 1042753 1272308 1270 l +1042753 1272308 1049743 1272308 1270 l +1049743 1272308 1052074 1269978 1270 l +1052074 1269978 1052074 1265317 1270 l +1052074 1265317 1049743 1262987 1270 l +1049743 1262987 1042753 1262987 1270 l +1047413 1262987 1052074 1258327 1270 l +1056785 1258327 1056785 1272308 1270 l +1056785 1272308 1063775 1272308 1270 l +1063775 1272308 1066106 1269978 1270 l +1066106 1269978 1066106 1267648 1270 l +1066106 1267648 1063775 1265317 1270 l +1063775 1265317 1066106 1262987 1270 l +1066106 1262987 1066106 1260657 1270 l +1066106 1260657 1063775 1258327 1270 l +1063775 1258327 1056785 1258327 1270 l +1056785 1265317 1063775 1265317 1270 l +1070817 1260657 1070817 1269978 1270 l +1070817 1269978 1073147 1272308 1270 l +1073147 1272308 1077807 1272308 1270 l +1077807 1272308 1080138 1269978 1270 l +1080138 1269978 1080138 1260657 1270 l +1080138 1260657 1077807 1258327 1270 l +1077807 1258327 1073147 1258327 1270 l +1073147 1258327 1070817 1260657 1270 l +1070817 1260657 1080138 1269978 1270 l +1132984 1265312 1107584 1265312 1524 l +1121096 1283484 1116435 1281154 1270 l +1116435 1281154 1111775 1276493 1270 l +1111775 1276493 1111775 1271833 1270 l +1111775 1271833 1114105 1269503 1270 l +1114105 1269503 1118765 1269503 1270 l +1118765 1269503 1121096 1271833 1270 l +1121096 1271833 1121096 1274163 1270 l +1121096 1274163 1118765 1276493 1270 l +1118765 1276493 1111775 1276493 1270 l +1045092 1283727 1045092 1297708 1270 l +1045092 1297708 1052082 1297708 1270 l +1052082 1297708 1054413 1295378 1270 l +1054413 1295378 1054413 1290717 1270 l +1054413 1290717 1052082 1288387 1270 l +1052082 1288387 1045092 1288387 1270 l +1049752 1288387 1054413 1283727 1270 l +1059124 1283727 1059124 1297708 1270 l +1059124 1297708 1066114 1297708 1270 l +1066114 1297708 1068445 1295378 1270 l +1068445 1295378 1068445 1293048 1270 l +1068445 1293048 1066114 1290717 1270 l +1066114 1290717 1068445 1288387 1270 l +1068445 1288387 1068445 1286057 1270 l +1068445 1286057 1066114 1283727 1270 l +1066114 1283727 1059124 1283727 1270 l +1059124 1290717 1066114 1290717 1270 l +1073156 1295378 1075486 1297708 1270 l +1075486 1297708 1075486 1283727 1270 l +1073156 1283727 1077816 1283727 1270 l +1132984 1290712 1107584 1290712 1524 l +1111775 1308884 1121096 1308884 1270 l +1121096 1308884 1121096 1306554 1270 l +1121096 1306554 1111775 1297233 1270 l +1111775 1297233 1111775 1294903 1270 l +1042753 1309127 1042753 1323108 1270 l +1042753 1323108 1049743 1323108 1270 l +1049743 1323108 1052074 1320778 1270 l +1052074 1320778 1052074 1316117 1270 l +1052074 1316117 1049743 1313787 1270 l +1049743 1313787 1042753 1313787 1270 l +1047413 1313787 1052074 1309127 1270 l +1056785 1309127 1056785 1323108 1270 l +1056785 1323108 1063775 1323108 1270 l +1063775 1323108 1066106 1320778 1270 l +1066106 1320778 1066106 1318448 1270 l +1066106 1318448 1063775 1316117 1270 l +1063775 1316117 1066106 1313787 1270 l +1066106 1313787 1066106 1311457 1270 l +1066106 1311457 1063775 1309127 1270 l +1063775 1309127 1056785 1309127 1270 l +1056785 1316117 1063775 1316117 1270 l +1080138 1309127 1070817 1309127 1270 l +1070817 1309127 1080138 1318448 1270 l +1080138 1318448 1080138 1320778 1270 l +1080138 1320778 1077807 1323108 1270 l +1077807 1323108 1073147 1323108 1270 l +1073147 1323108 1070817 1320778 1270 l +1132984 1316112 1107584 1316112 1524 l +1111775 1331954 1114105 1334284 1270 l +1114105 1334284 1118765 1334284 1270 l +1118765 1334284 1121096 1331954 1270 l +1121096 1331954 1121096 1329624 1270 l +1121096 1329624 1118765 1327293 1270 l +1118765 1327293 1121096 1324963 1270 l +1121096 1324963 1121096 1322633 1270 l +1121096 1322633 1118765 1320303 1270 l +1118765 1320303 1114105 1320303 1270 l +1114105 1320303 1111775 1322633 1270 l +1111775 1322633 1111775 1324963 1270 l +1111775 1324963 1114105 1327293 1270 l +1114105 1327293 1111775 1329624 1270 l +1111775 1329624 1111775 1331954 1270 l +1114105 1327293 1118765 1327293 1270 l +1042753 1334527 1042753 1348508 1270 l +1042753 1348508 1049743 1348508 1270 l +1049743 1348508 1052074 1346178 1270 l +1052074 1346178 1052074 1341517 1270 l +1052074 1341517 1049743 1339187 1270 l +1049743 1339187 1042753 1339187 1270 l +1047413 1339187 1052074 1334527 1270 l +1056785 1334527 1056785 1348508 1270 l +1056785 1348508 1063775 1348508 1270 l +1063775 1348508 1066106 1346178 1270 l +1066106 1346178 1066106 1343848 1270 l +1066106 1343848 1063775 1341517 1270 l +1063775 1341517 1066106 1339187 1270 l +1066106 1339187 1066106 1336857 1270 l +1066106 1336857 1063775 1334527 1270 l +1063775 1334527 1056785 1334527 1270 l +1056785 1341517 1063775 1341517 1270 l +1070817 1346178 1073147 1348508 1270 l +1073147 1348508 1077807 1348508 1270 l +1077807 1348508 1080138 1346178 1270 l +1080138 1346178 1080138 1343848 1270 l +1080138 1343848 1077807 1341517 1270 l +1077807 1341517 1075477 1341517 1270 l +1077807 1341517 1080138 1339187 1270 l +1080138 1339187 1080138 1336857 1270 l +1080138 1336857 1077807 1334527 1270 l +1077807 1334527 1073147 1334527 1270 l +1073147 1334527 1070817 1336857 1270 l +1132984 1341512 1107584 1341512 1524 l +1111775 1348033 1114105 1345703 1270 l +1114105 1345703 1118765 1345703 1270 l +1118765 1345703 1121096 1348033 1270 l +1121096 1348033 1121096 1357354 1270 l +1121096 1357354 1118765 1359684 1270 l +1118765 1359684 1114105 1359684 1270 l +1114105 1359684 1111775 1357354 1270 l +1111775 1357354 1111775 1355024 1270 l +1111775 1355024 1114105 1352693 1270 l +1114105 1352693 1121096 1352693 1270 l +1042753 1359927 1042753 1373908 1270 l +1042753 1373908 1049743 1373908 1270 l +1049743 1373908 1052074 1371578 1270 l +1052074 1371578 1052074 1366917 1270 l +1052074 1366917 1049743 1364587 1270 l +1049743 1364587 1042753 1364587 1270 l +1047413 1364587 1052074 1359927 1270 l +1056785 1359927 1056785 1373908 1270 l +1056785 1373908 1063775 1373908 1270 l +1063775 1373908 1066106 1371578 1270 l +1066106 1371578 1066106 1369248 1270 l +1066106 1369248 1063775 1366917 1270 l +1063775 1366917 1066106 1364587 1270 l +1066106 1364587 1066106 1362257 1270 l +1066106 1362257 1063775 1359927 1270 l +1063775 1359927 1056785 1359927 1270 l +1056785 1366917 1063775 1366917 1270 l +1077807 1359927 1077807 1373908 1270 l +1077807 1373908 1070817 1366917 1270 l +1070817 1366917 1080138 1366917 1270 l +1132984 1366912 1107584 1366912 1524 l +1111775 1382754 1114105 1385084 1270 l +1114105 1385084 1114105 1371103 1270 l +1111775 1371103 1116435 1371103 1270 l +1123468 1373433 1123468 1382754 1270 l +1123468 1382754 1125798 1385084 1270 l +1125798 1385084 1130458 1385084 1270 l +1130458 1385084 1132789 1382754 1270 l +1132789 1382754 1132789 1373433 1270 l +1132789 1373433 1130458 1371103 1270 l +1130458 1371103 1125798 1371103 1270 l +1125798 1371103 1123468 1373433 1270 l +1123468 1373433 1132789 1382754 1270 l +1042753 1385327 1042753 1399308 1270 l +1042753 1399308 1049743 1399308 1270 l +1049743 1399308 1052074 1396978 1270 l +1052074 1396978 1052074 1392317 1270 l +1052074 1392317 1049743 1389987 1270 l +1049743 1389987 1042753 1389987 1270 l +1047413 1389987 1052074 1385327 1270 l +1056785 1385327 1056785 1399308 1270 l +1056785 1399308 1063775 1399308 1270 l +1063775 1399308 1066106 1396978 1270 l +1066106 1396978 1066106 1394648 1270 l +1066106 1394648 1063775 1392317 1270 l +1063775 1392317 1066106 1389987 1270 l +1066106 1389987 1066106 1387657 1270 l +1066106 1387657 1063775 1385327 1270 l +1063775 1385327 1056785 1385327 1270 l +1056785 1392317 1063775 1392317 1270 l +1080138 1399308 1070817 1399308 1270 l +1070817 1399308 1070817 1392317 1270 l +1070817 1392317 1075477 1394648 1270 l +1075477 1394648 1077807 1394648 1270 l +1077807 1394648 1080138 1392317 1270 l +1080138 1392317 1080138 1387657 1270 l +1080138 1387657 1077807 1385327 1270 l +1077807 1385327 1073147 1385327 1270 l +1073147 1385327 1070817 1387657 1270 l +1132984 1392312 1107584 1392312 1524 l +1111775 1408154 1114105 1410484 1270 l +1114105 1410484 1114105 1396503 1270 l +1111775 1396503 1116435 1396503 1270 l +1123468 1408154 1125798 1410484 1270 l +1125798 1410484 1125798 1396503 1270 l +1123468 1396503 1128128 1396503 1270 l +1042753 1410727 1042753 1424708 1270 l +1042753 1424708 1049743 1424708 1270 l +1049743 1424708 1052074 1422378 1270 l +1052074 1422378 1052074 1417717 1270 l +1052074 1417717 1049743 1415387 1270 l +1049743 1415387 1042753 1415387 1270 l +1047413 1415387 1052074 1410727 1270 l +1056785 1410727 1056785 1424708 1270 l +1056785 1424708 1063775 1424708 1270 l +1063775 1424708 1066106 1422378 1270 l +1066106 1422378 1066106 1420048 1270 l +1066106 1420048 1063775 1417717 1270 l +1063775 1417717 1066106 1415387 1270 l +1066106 1415387 1066106 1413057 1270 l +1066106 1413057 1063775 1410727 1270 l +1063775 1410727 1056785 1410727 1270 l +1056785 1417717 1063775 1417717 1270 l +1080138 1424708 1075477 1422378 1270 l +1075477 1422378 1070817 1417717 1270 l +1070817 1417717 1070817 1413057 1270 l +1070817 1413057 1073147 1410727 1270 l +1073147 1410727 1077807 1410727 1270 l +1077807 1410727 1080138 1413057 1270 l +1080138 1413057 1080138 1415387 1270 l +1080138 1415387 1077807 1417717 1270 l +1077807 1417717 1070817 1417717 1270 l +1132984 1417712 1107584 1417712 1524 l +1111775 1433554 1114105 1435884 1270 l +1114105 1435884 1114105 1421903 1270 l +1111775 1421903 1116435 1421903 1270 l +1132789 1421903 1123468 1421903 1270 l +1123468 1421903 1132789 1431224 1270 l +1132789 1431224 1132789 1433554 1270 l +1132789 1433554 1130458 1435884 1270 l +1130458 1435884 1125798 1435884 1270 l +1125798 1435884 1123468 1433554 1270 l +1042753 1436127 1042753 1450108 1270 l +1042753 1450108 1049743 1450108 1270 l +1049743 1450108 1052074 1447778 1270 l +1052074 1447778 1052074 1443117 1270 l +1052074 1443117 1049743 1440787 1270 l +1049743 1440787 1042753 1440787 1270 l +1047413 1440787 1052074 1436127 1270 l +1056785 1436127 1056785 1450108 1270 l +1056785 1450108 1063775 1450108 1270 l +1063775 1450108 1066106 1447778 1270 l +1066106 1447778 1066106 1445448 1270 l +1066106 1445448 1063775 1443117 1270 l +1063775 1443117 1066106 1440787 1270 l +1066106 1440787 1066106 1438457 1270 l +1066106 1438457 1063775 1436127 1270 l +1063775 1436127 1056785 1436127 1270 l +1056785 1443117 1063775 1443117 1270 l +1070817 1450108 1080138 1450108 1270 l +1080138 1450108 1080138 1447778 1270 l +1080138 1447778 1070817 1438457 1270 l +1070817 1438457 1070817 1436127 1270 l +1132984 1443112 1107584 1443112 1524 l +1111775 1458954 1114105 1461284 1270 l +1114105 1461284 1114105 1447303 1270 l +1111775 1447303 1116435 1447303 1270 l +1123468 1458954 1125798 1461284 1270 l +1125798 1461284 1130458 1461284 1270 l +1130458 1461284 1132789 1458954 1270 l +1132789 1458954 1132789 1456624 1270 l +1132789 1456624 1130458 1454293 1270 l +1130458 1454293 1128128 1454293 1270 l +1130458 1454293 1132789 1451963 1270 l +1132789 1451963 1132789 1449633 1270 l +1132789 1449633 1130458 1447303 1270 l +1130458 1447303 1125798 1447303 1270 l +1125798 1447303 1123468 1449633 1270 l +935377 1323108 930717 1323108 1270 l +930717 1323108 928387 1320778 1270 l +928387 1320778 928387 1311457 1270 l +928387 1311457 930717 1309127 1270 l +930717 1309127 935377 1309127 1270 l +935377 1309127 937708 1311457 1270 l +937708 1311457 937708 1320778 1270 l +937708 1320778 935377 1323108 1270 l +951740 1320778 949409 1323108 1270 l +949409 1323108 944749 1323108 1270 l +944749 1323108 942419 1320778 1270 l +942419 1320778 942419 1318448 1270 l +942419 1318448 944749 1316117 1270 l +944749 1316117 949409 1316117 1270 l +949409 1316117 951740 1313787 1270 l +951740 1313787 951740 1311457 1270 l +951740 1311457 949409 1309127 1270 l +949409 1309127 944749 1309127 1270 l +944749 1309127 942419 1311457 1270 l +965772 1320778 963441 1323108 1270 l +963441 1323108 958781 1323108 1270 l +958781 1323108 956451 1320778 1270 l +956451 1320778 956451 1311457 1270 l +956451 1311457 958781 1309127 1270 l +958781 1309127 963441 1309127 1270 l +963441 1309127 965772 1311457 1270 l +979804 1309127 970483 1309127 1270 l +970483 1309127 979804 1318448 1270 l +979804 1318448 979804 1320778 1270 l +979804 1320778 977473 1323108 1270 l +977473 1323108 972813 1323108 1270 l +972813 1323108 970483 1320778 1270 l +878984 1316112 904384 1316112 1524 l +875737 1331954 878067 1334284 1270 l +878067 1334284 878067 1320303 1270 l +875737 1320303 880397 1320303 1270 l +896751 1334284 887430 1334284 1270 l +887430 1334284 887430 1327293 1270 l +887430 1327293 892090 1329624 1270 l +892090 1329624 894420 1329624 1270 l +894420 1329624 896751 1327293 1270 l +896751 1327293 896751 1322633 1270 l +896751 1322633 894420 1320303 1270 l +894420 1320303 889760 1320303 1270 l +889760 1320303 887430 1322633 1270 l +928387 1119908 928387 1110587 1270 l +928387 1110587 933047 1105927 1270 l +933047 1105927 937708 1110587 1270 l +937708 1110587 937708 1119908 1270 l +951740 1117578 949409 1119908 1270 l +949409 1119908 944749 1119908 1270 l +944749 1119908 942419 1117578 1270 l +942419 1117578 942419 1115248 1270 l +942419 1115248 944749 1112917 1270 l +944749 1112917 949409 1112917 1270 l +949409 1112917 951740 1110587 1270 l +951740 1110587 951740 1108257 1270 l +951740 1108257 949409 1105927 1270 l +949409 1105927 944749 1105927 1270 l +944749 1105927 942419 1108257 1270 l +965772 1117578 963441 1119908 1270 l +963441 1119908 958781 1119908 1270 l +958781 1119908 956451 1117578 1270 l +956451 1117578 956451 1115248 1270 l +956451 1115248 958781 1112917 1270 l +958781 1112917 963441 1112917 1270 l +963441 1112917 965772 1110587 1270 l +965772 1110587 965772 1108257 1270 l +965772 1108257 963441 1105927 1270 l +963441 1105927 958781 1105927 1270 l +958781 1105927 956451 1108257 1270 l +878984 1112912 904384 1112912 1524 l +896752 1131084 887431 1131084 1270 l +887431 1131084 887431 1124093 1270 l +887431 1124093 892091 1126424 1270 l +892091 1126424 894421 1126424 1270 l +894421 1126424 896752 1124093 1270 l +896752 1124093 896752 1119433 1270 l +896752 1119433 894421 1117103 1270 l +894421 1117103 889761 1117103 1270 l +889761 1117103 887431 1119433 1270 l +928387 1450108 928387 1440787 1270 l +928387 1440787 933047 1436127 1270 l +933047 1436127 937708 1440787 1270 l +937708 1440787 937708 1450108 1270 l +942419 1450108 942419 1436127 1270 l +942419 1436127 949409 1436127 1270 l +949409 1436127 951740 1438457 1270 l +951740 1438457 951740 1447778 1270 l +951740 1447778 949409 1450108 1270 l +949409 1450108 942419 1450108 1270 l +956451 1450108 956451 1436127 1270 l +956451 1436127 963441 1436127 1270 l +963441 1436127 965772 1438457 1270 l +965772 1438457 965772 1447778 1270 l +965772 1447778 963441 1450108 1270 l +963441 1450108 956451 1450108 1270 l +878984 1443112 904384 1443112 1524 l +875737 1458954 878067 1461284 1270 l +878067 1461284 878067 1447303 1270 l +875737 1447303 880397 1447303 1270 l +894420 1447303 894420 1461284 1270 l +894420 1461284 887430 1454293 1270 l +887430 1454293 896751 1454293 1270 l +1107584 1087512 904384 1087512 4064 l +904384 1087512 904384 1468512 4064 l +904384 1468512 1107584 1468512 4064 l +1107584 1468512 1107584 1087512 4064 l +905146 1481974 910569 1481974 1524 l +907857 1481974 907857 1498243 1524 l +905146 1498243 910569 1498243 1524 l +929634 1495532 926922 1498243 1524 l +926922 1498243 921499 1498243 1524 l +921499 1498243 918788 1495532 1524 l +918788 1495532 918788 1484685 1524 l +918788 1484685 921499 1481974 1524 l +921499 1481974 926922 1481974 1524 l +926922 1481974 929634 1484685 1524 l +935159 1495532 937870 1498243 1524 l +937870 1498243 937870 1481974 1524 l +935159 1481974 940582 1481974 1524 l +905146 1062874 905146 1079143 1524 l +905146 1079143 913280 1079143 1524 l +913280 1079143 915992 1076432 1524 l +915992 1076432 915992 1071008 1524 l +915992 1071008 913280 1068297 1524 l +913280 1068297 905146 1068297 1524 l +921517 1062874 926940 1062874 1524 l +924228 1062874 924228 1079143 1524 l +921517 1079143 926940 1079143 1524 l +946005 1076432 943293 1079143 1524 l +943293 1079143 937870 1079143 1524 l +937870 1079143 935159 1076432 1524 l +935159 1076432 935159 1065585 1524 l +935159 1065585 937870 1062874 1524 l +937870 1062874 943293 1062874 1524 l +943293 1062874 946005 1065585 1524 l +951530 1076432 954241 1079143 1524 l +954241 1079143 954241 1062874 1524 l +951530 1062874 956953 1062874 1524 l +976018 1079143 970595 1076432 1524 l +970595 1076432 965172 1071008 1524 l +965172 1071008 965172 1065585 1524 l +965172 1065585 967883 1062874 1524 l +967883 1062874 973306 1062874 1524 l +973306 1062874 976018 1065585 1524 l +976018 1065585 976018 1068297 1524 l +976018 1068297 973306 1071008 1524 l +973306 1071008 965172 1071008 1524 l +981543 1062874 981543 1079143 1524 l +981543 1079143 992389 1079143 1524 l +981543 1071008 986966 1071008 1524 l +997914 1076432 1000625 1079143 1524 l +1000625 1079143 1006048 1079143 1524 l +1006048 1079143 1008760 1076432 1524 l +1008760 1076432 1008760 1073720 1524 l +1008760 1073720 1006048 1071008 1524 l +1006048 1071008 1008760 1068297 1524 l +1008760 1068297 1008760 1065585 1524 l +1008760 1065585 1006048 1062874 1524 l +1006048 1062874 1000625 1062874 1524 l +1000625 1062874 997914 1065585 1524 l +997914 1065585 997914 1068297 1524 l +997914 1068297 1000625 1071008 1524 l +1000625 1071008 997914 1073720 1524 l +997914 1073720 997914 1076432 1524 l +1000625 1071008 1006048 1071008 1524 l +1022419 1062874 1022419 1079143 1524 l +1022419 1079143 1014285 1071008 1524 l +1014285 1071008 1025131 1071008 1524 l +1030656 1062874 1030656 1073720 1524 l +1030656 1073720 1036079 1079143 1524 l +1036079 1079143 1041502 1073720 1524 l +1041502 1073720 1041502 1062874 1524 l +1030656 1071008 1041502 1071008 1524 l +1047027 1062874 1047027 1079143 1524 l +1047027 1079143 1055161 1079143 1524 l +1055161 1079143 1057873 1076432 1524 l +1057873 1076432 1057873 1071008 1524 l +1057873 1071008 1055161 1068297 1524 l +1055161 1068297 1047027 1068297 1524 l +599584 1351672 599584 1366912 1524 l +599584 1316112 599584 1331352 1524 l +584344 1337702 614824 1337702 2540 l +614824 1337702 614824 1345322 2540 l +614824 1345322 584344 1345322 2540 l +584344 1345322 584344 1337702 2540 l +581804 1351672 617364 1351672 2540 l +581804 1331352 617364 1331352 2540 l +534772 1340763 545618 1324494 1524 l +545618 1340763 534772 1324494 1524 l +551143 1338052 553854 1340763 1524 l +553854 1340763 553854 1324494 1524 l +551143 1324494 556566 1324494 1524 l +532280 1291474 532280 1307743 1524 l +532280 1307743 524146 1299608 1524 l +524146 1299608 534992 1299608 1524 l +556888 1291474 556888 1307743 1524 l +556888 1307743 562311 1302320 1524 l +562311 1302320 567734 1307743 1524 l +567734 1307743 567734 1291474 1524 l +573259 1291474 573259 1307743 1524 l +573259 1299608 584105 1299608 1524 l +584105 1307743 584105 1291474 1524 l +589630 1302320 600476 1302320 1524 l +600476 1302320 589630 1291474 1524 l +589630 1291474 600476 1291474 1524 l +599584 1239912 650384 1239912 2540 l +624984 1229752 624984 1214512 1524 l +624983 1189370 40542 2540 52.12 90.00 0 a +624984 1189112 40639 2540 90.00 127.37 0 a +624984 1265312 624984 1239912 1524 l +624984 1189112 624984 1214512 1524 l +540538 1242802 537826 1245513 1524 l +537826 1245513 532403 1245513 1524 l +532403 1245513 529692 1242802 1524 l +529692 1242802 529692 1231955 1524 l +529692 1231955 532403 1229244 1524 l +532403 1229244 537826 1229244 1524 l +537826 1229244 540538 1231955 1524 l +546063 1242802 548774 1245513 1524 l +548774 1245513 548774 1229244 1524 l +546063 1229244 551486 1229244 1524 l +545152 1198764 534306 1198764 1524 l +534306 1198764 545152 1209610 1524 l +545152 1209610 545152 1212322 1524 l +545152 1212322 542440 1215033 1524 l +542440 1215033 537017 1215033 1524 l +537017 1215033 534306 1212322 1524 l +561523 1198764 550677 1198764 1524 l +550677 1198764 561523 1209610 1524 l +561523 1209610 561523 1212322 1524 l +561523 1212322 558811 1215033 1524 l +558811 1215033 553388 1215033 1524 l +553388 1215033 550677 1212322 1524 l +567048 1193341 567048 1209610 1524 l +567048 1209610 575182 1209610 1524 l +575182 1209610 577894 1206898 1524 l +577894 1206898 577894 1201475 1524 l +577894 1201475 575182 1198764 1524 l +575182 1198764 567048 1198764 1524 l +586130 1198764 586130 1212322 1524 l +586130 1212322 588842 1215033 1524 l +583419 1206898 588842 1206898 1524 l +701184 1239912 751984 1239912 2540 l +726584 1229752 726584 1214512 1524 l +726583 1189370 40542 2540 52.12 90.00 0 a +726584 1189112 40639 2540 90.00 127.37 0 a +726584 1265312 726584 1239912 1524 l +726584 1189112 726584 1214512 1524 l +773752 1235182 771040 1237893 1524 l +771040 1237893 765617 1237893 1524 l +765617 1237893 762906 1235182 1524 l +762906 1235182 762906 1224335 1524 l +762906 1224335 765617 1221624 1524 l +765617 1221624 771040 1221624 1524 l +771040 1221624 773752 1224335 1524 l +790123 1221624 779277 1221624 1524 l +779277 1221624 790123 1232470 1524 l +790123 1232470 790123 1235182 1524 l +790123 1235182 787411 1237893 1524 l +787411 1237893 781988 1237893 1524 l +781988 1237893 779277 1235182 1524 l +773752 1198764 762906 1198764 1524 l +762906 1198764 773752 1209610 1524 l +773752 1209610 773752 1212322 1524 l +773752 1212322 771040 1215033 1524 l +771040 1215033 765617 1215033 1524 l +765617 1215033 762906 1212322 1524 l +790123 1198764 779277 1198764 1524 l +779277 1198764 790123 1209610 1524 l +790123 1209610 790123 1212322 1524 l +790123 1212322 787411 1215033 1524 l +787411 1215033 781988 1215033 1524 l +781988 1215033 779277 1212322 1524 l +795648 1193341 795648 1209610 1524 l +795648 1209610 803782 1209610 1524 l +803782 1209610 806494 1206898 1524 l +806494 1206898 806494 1201475 1524 l +806494 1201475 803782 1198764 1524 l +803782 1198764 795648 1198764 1524 l +814730 1198764 814730 1212322 1524 l +814730 1212322 817442 1215033 1524 l +812019 1206898 817442 1206898 1524 l +777384 1443112 777384 1468512 1524 l +809388 1502760 793119 1502760 1524 l +793119 1502760 793119 1510894 1524 l +793119 1510894 795830 1513606 1524 l +795830 1513606 801254 1513606 1524 l +801254 1513606 803965 1510894 1524 l +803965 1510894 803965 1502760 1524 l +803965 1508183 809388 1513606 1524 l +795830 1519131 793119 1521842 1524 l +793119 1521842 809388 1521842 1524 l +809388 1519131 809388 1524554 1524 l +747824 1502760 745113 1505471 1524 l +745113 1505471 761382 1505471 1524 l +761382 1502760 761382 1508183 1524 l +745113 1516402 761382 1516402 1524 l +755959 1516402 745113 1527248 1524 l +753248 1519113 761382 1527248 1524 l +777384 1544712 777384 1519312 1524 l +777384 1519312 787544 1515502 2032 l +787544 1515502 767224 1509152 2032 l +767224 1509152 787544 1502802 2032 l +787544 1502802 767224 1496452 2032 l +767224 1496452 787544 1490102 2032 l +787544 1490102 767224 1483752 2032 l +767224 1483752 787544 1477402 2032 l +787544 1477402 767224 1471052 2032 l +767224 1471052 777384 1468512 2032 l +828184 1671712 828184 1697112 1524 l +840884 1678062 828184 1697112 2540 l +828184 1697112 815484 1678062 2540 l +793888 1647074 793888 1657920 1524 l +788464 1652497 799311 1652497 1524 l +785753 1674291 785753 1663445 1524 l +785753 1663445 793888 1663445 1524 l +793888 1663445 791176 1668868 1524 l +791176 1668868 791176 1671579 1524 l +791176 1671579 793888 1674291 1524 l +793888 1674291 799311 1674291 1524 l +799311 1674291 802022 1671579 1524 l +802022 1671579 802022 1666156 1524 l +802022 1666156 799311 1663445 1524 l +785753 1679816 796599 1679816 1524 l +796599 1679816 802022 1685239 1524 l +802022 1685239 796599 1690662 1524 l +796599 1690662 785753 1690662 1524 l +828184 1112912 828184 1087512 1524 l +815484 1087512 840884 1087512 2540 l +840884 1087512 828184 1074812 2540 l +828184 1074812 815484 1087512 2540 l +820742 1070082 818030 1072793 1524 l +818030 1072793 812607 1072793 1524 l +812607 1072793 809896 1070082 1524 l +809896 1070082 809896 1059235 1524 l +809896 1059235 812607 1056524 1524 l +812607 1056524 818030 1056524 1524 l +818030 1056524 820742 1059235 1524 l +820742 1059235 820742 1064658 1524 l +820742 1064658 815319 1064658 1524 l +826267 1056524 826267 1072793 1524 l +826267 1072793 837113 1056524 1524 l +837113 1056524 837113 1072793 1524 l +842638 1072793 842638 1056524 1524 l +842638 1056524 850772 1056524 1524 l +850772 1056524 853484 1059235 1524 l +853484 1059235 853484 1070082 1524 l +853484 1070082 850772 1072793 1524 l +850772 1072793 842638 1072793 1524 l +624984 1214512 624984 1189112 1524 l +612284 1189112 637684 1189112 2540 l +637684 1189112 624984 1176412 2540 l +624984 1176412 612284 1189112 2540 l +617542 1146282 614830 1148993 1524 l +614830 1148993 609407 1148993 1524 l +609407 1148993 606696 1146282 1524 l +606696 1146282 606696 1135435 1524 l +606696 1135435 609407 1132724 1524 l +609407 1132724 614830 1132724 1524 l +614830 1132724 617542 1135435 1524 l +617542 1135435 617542 1140858 1524 l +617542 1140858 612119 1140858 1524 l +623067 1132724 623067 1148993 1524 l +623067 1148993 633913 1132724 1524 l +633913 1132724 633913 1148993 1524 l +639438 1148993 639438 1132724 1524 l +639438 1132724 647572 1132724 1524 l +647572 1132724 650284 1135435 1524 l +650284 1135435 650284 1146282 1524 l +650284 1146282 647572 1148993 1524 l +647572 1148993 639438 1148993 1524 l +726584 1214512 726584 1189112 1524 l +713884 1189112 739284 1189112 2540 l +739284 1189112 726584 1176412 2540 l +726584 1176412 713884 1189112 2540 l +719142 1146282 716430 1148993 1524 l +716430 1148993 711007 1148993 1524 l +711007 1148993 708296 1146282 1524 l +708296 1146282 708296 1135435 1524 l +708296 1135435 711007 1132724 1524 l +711007 1132724 716430 1132724 1524 l +716430 1132724 719142 1135435 1524 l +719142 1135435 719142 1140858 1524 l +719142 1140858 713719 1140858 1524 l +724667 1132724 724667 1148993 1524 l +724667 1148993 735513 1132724 1524 l +735513 1132724 735513 1148993 1524 l +741038 1148993 741038 1132724 1524 l +741038 1132724 749172 1132724 1524 l +749172 1132724 751884 1135435 1524 l +751884 1135435 751884 1146282 1524 l +751884 1146282 749172 1148993 1524 l +749172 1148993 741038 1148993 1524 l +1437784 1112912 1437784 1087512 1524 l +1425084 1087512 1450484 1087512 2540 l +1450484 1087512 1437784 1074812 2540 l +1437784 1074812 1425084 1087512 2540 l +1430342 1070082 1427630 1072793 1524 l +1427630 1072793 1422207 1072793 1524 l +1422207 1072793 1419496 1070082 1524 l +1419496 1070082 1419496 1059235 1524 l +1419496 1059235 1422207 1056524 1524 l +1422207 1056524 1427630 1056524 1524 l +1427630 1056524 1430342 1059235 1524 l +1430342 1059235 1430342 1064658 1524 l +1430342 1064658 1424919 1064658 1524 l +1435867 1056524 1435867 1072793 1524 l +1435867 1072793 1446713 1056524 1524 l +1446713 1056524 1446713 1072793 1524 l +1452238 1072793 1452238 1056524 1524 l +1452238 1056524 1460372 1056524 1524 l +1460372 1056524 1463084 1059235 1524 l +1463084 1059235 1463084 1070082 1524 l +1463084 1070082 1460372 1072793 1524 l +1460372 1072793 1452238 1072793 1524 l +1437784 960512 1437784 935112 1524 l +1425084 935112 1450484 935112 2540 l +1450484 935112 1437784 922412 2540 l +1437784 922412 1425084 935112 2540 l +1430342 917682 1427630 920393 1524 l +1427630 920393 1422207 920393 1524 l +1422207 920393 1419496 917682 1524 l +1419496 917682 1419496 906835 1524 l +1419496 906835 1422207 904124 1524 l +1422207 904124 1427630 904124 1524 l +1427630 904124 1430342 906835 1524 l +1430342 906835 1430342 912258 1524 l +1430342 912258 1424919 912258 1524 l +1435867 904124 1435867 920393 1524 l +1435867 920393 1446713 904124 1524 l +1446713 904124 1446713 920393 1524 l +1452238 920393 1452238 904124 1524 l +1452238 904124 1460372 904124 1524 l +1460372 904124 1463084 906835 1524 l +1463084 906835 1463084 917682 1524 l +1463084 917682 1460372 920393 1524 l +1460372 920393 1452238 920393 1524 l +1437784 782712 1437784 757312 1524 l +1425084 757312 1450484 757312 2540 l +1450484 757312 1437784 744612 2540 l +1437784 744612 1425084 757312 2540 l +1430342 739882 1427630 742593 1524 l +1427630 742593 1422207 742593 1524 l +1422207 742593 1419496 739882 1524 l +1419496 739882 1419496 729035 1524 l +1419496 729035 1422207 726324 1524 l +1422207 726324 1427630 726324 1524 l +1427630 726324 1430342 729035 1524 l +1430342 729035 1430342 734458 1524 l +1430342 734458 1424919 734458 1524 l +1435867 726324 1435867 742593 1524 l +1435867 742593 1446713 726324 1524 l +1446713 726324 1446713 742593 1524 l +1452238 742593 1452238 726324 1524 l +1452238 726324 1460372 726324 1524 l +1460372 726324 1463084 729035 1524 l +1463084 729035 1463084 739882 1524 l +1463084 739882 1460372 742593 1524 l +1460372 742593 1452238 742593 1524 l +1437784 630312 1437784 604912 1524 l +1425084 604912 1450484 604912 2540 l +1450484 604912 1437784 592212 2540 l +1437784 592212 1425084 604912 2540 l +1430342 587482 1427630 590193 1524 l +1427630 590193 1422207 590193 1524 l +1422207 590193 1419496 587482 1524 l +1419496 587482 1419496 576635 1524 l +1419496 576635 1422207 573924 1524 l +1422207 573924 1427630 573924 1524 l +1427630 573924 1430342 576635 1524 l +1430342 576635 1430342 582058 1524 l +1430342 582058 1424919 582058 1524 l +1435867 573924 1435867 590193 1524 l +1435867 590193 1446713 573924 1524 l +1446713 573924 1446713 590193 1524 l +1452238 590193 1452238 573924 1524 l +1452238 573924 1460372 573924 1524 l +1460372 573924 1463084 576635 1524 l +1463084 576635 1463084 587482 1524 l +1463084 587482 1460372 590193 1524 l +1460372 590193 1452238 590193 1524 l +1437784 1036712 1437784 1011312 1524 l +1437784 935112 1437784 960512 1524 l +1361584 985912 1386984 985912 1524 l +1437784 1011312 1437784 1004962 1524 l +1332552 1014614 1321706 1014614 1524 l +1321706 1014614 1332552 1025460 1524 l +1332552 1025460 1332552 1028172 1524 l +1332552 1028172 1329840 1030883 1524 l +1329840 1030883 1324417 1030883 1524 l +1324417 1030883 1321706 1028172 1524 l +1338077 1014614 1338077 1030883 1524 l +1338077 1030883 1348923 1014614 1524 l +1348923 1014614 1348923 1030883 1524 l +1354448 1030883 1365294 1030883 1524 l +1365294 1030883 1365294 1028172 1524 l +1365294 1028172 1354448 1017325 1524 l +1354448 1017325 1354448 1014614 1524 l +1370819 1017325 1370819 1028172 1524 l +1370819 1028172 1373530 1030883 1524 l +1373530 1030883 1378953 1030883 1524 l +1378953 1030883 1381665 1028172 1524 l +1381665 1028172 1381665 1017325 1524 l +1381665 1017325 1378953 1014614 1524 l +1378953 1014614 1373530 1014614 1524 l +1373530 1014614 1370819 1017325 1524 l +1370819 1017325 1381665 1028172 1524 l +1387190 1017325 1387190 1028172 1524 l +1387190 1028172 1389901 1030883 1524 l +1389901 1030883 1395324 1030883 1524 l +1395324 1030883 1398036 1028172 1524 l +1398036 1028172 1398036 1017325 1524 l +1398036 1017325 1395324 1014614 1524 l +1395324 1014614 1389901 1014614 1524 l +1389901 1014614 1387190 1017325 1524 l +1387190 1017325 1398036 1028172 1524 l +1403561 1017325 1403561 1028172 1524 l +1403561 1028172 1406272 1030883 1524 l +1406272 1030883 1411695 1030883 1524 l +1411695 1030883 1414407 1028172 1524 l +1414407 1028172 1414407 1017325 1524 l +1414407 1017325 1411695 1014614 1524 l +1411695 1014614 1406272 1014614 1524 l +1406272 1014614 1403561 1017325 1524 l +1403561 1017325 1414407 1028172 1524 l +1321706 1040185 1321706 1051032 1524 l +1321706 1051032 1324417 1053743 1524 l +1324417 1053743 1329840 1053743 1524 l +1329840 1053743 1332552 1051032 1524 l +1332552 1051032 1332552 1040185 1524 l +1332552 1040185 1329840 1037474 1524 l +1329840 1037474 1324417 1037474 1524 l +1324417 1037474 1321706 1040185 1524 l +1327129 1042897 1332552 1037474 1524 l +1348923 1037474 1338077 1037474 1524 l +1338077 1037474 1348923 1048320 1524 l +1348923 1048320 1348923 1051032 1524 l +1348923 1051032 1346211 1053743 1524 l +1346211 1053743 1340788 1053743 1524 l +1340788 1053743 1338077 1051032 1524 l +1401208 1010042 1401208 960512 2540 l +1417464 966862 1437784 966862 1524 l +1437784 1004962 1417718 1004962 1524 l +1386984 985912 1400192 985912 1524 l +1409844 960512 1417464 973212 b +1409844 980832 1417464 990992 b +1409844 998612 1417464 1011312 b +1437784 985912 1437784 960512 1524 l +1437784 966862 1270 3048 c +1417464 985912 1430164 980832 1524 l +1430164 980832 1430164 990992 1524 l +1430164 990992 1417464 985912 1524 l +1428894 985912 1437784 985912 1524 l +1428894 988452 1420004 985912 3048 l +1420004 985912 1428894 983372 3048 l +1428894 983372 1428894 985912 3048 l +1428894 985912 1426354 985912 3048 l +1437784 858912 1437784 833512 1524 l +1437784 757312 1437784 782712 1524 l +1361584 808112 1386984 808112 1524 l +1437784 833512 1437784 827162 1524 l +1332552 836814 1321706 836814 1524 l +1321706 836814 1332552 847660 1524 l +1332552 847660 1332552 850372 1524 l +1332552 850372 1329840 853083 1524 l +1329840 853083 1324417 853083 1524 l +1324417 853083 1321706 850372 1524 l +1338077 836814 1338077 853083 1524 l +1338077 853083 1348923 836814 1524 l +1348923 836814 1348923 853083 1524 l +1354448 853083 1365294 853083 1524 l +1365294 853083 1365294 850372 1524 l +1365294 850372 1354448 839525 1524 l +1354448 839525 1354448 836814 1524 l +1370819 839525 1370819 850372 1524 l +1370819 850372 1373530 853083 1524 l +1373530 853083 1378953 853083 1524 l +1378953 853083 1381665 850372 1524 l +1381665 850372 1381665 839525 1524 l +1381665 839525 1378953 836814 1524 l +1378953 836814 1373530 836814 1524 l +1373530 836814 1370819 839525 1524 l +1370819 839525 1381665 850372 1524 l +1387190 839525 1387190 850372 1524 l +1387190 850372 1389901 853083 1524 l +1389901 853083 1395324 853083 1524 l +1395324 853083 1398036 850372 1524 l +1398036 850372 1398036 839525 1524 l +1398036 839525 1395324 836814 1524 l +1395324 836814 1389901 836814 1524 l +1389901 836814 1387190 839525 1524 l +1387190 839525 1398036 850372 1524 l +1403561 839525 1403561 850372 1524 l +1403561 850372 1406272 853083 1524 l +1406272 853083 1411695 853083 1524 l +1411695 853083 1414407 850372 1524 l +1414407 850372 1414407 839525 1524 l +1414407 839525 1411695 836814 1524 l +1411695 836814 1406272 836814 1524 l +1406272 836814 1403561 839525 1524 l +1403561 839525 1414407 850372 1524 l +1321706 862385 1321706 873232 1524 l +1321706 873232 1324417 875943 1524 l +1324417 875943 1329840 875943 1524 l +1329840 875943 1332552 873232 1524 l +1332552 873232 1332552 862385 1524 l +1332552 862385 1329840 859674 1524 l +1329840 859674 1324417 859674 1524 l +1324417 859674 1321706 862385 1524 l +1327129 865097 1332552 859674 1524 l +1338077 873232 1340788 875943 1524 l +1340788 875943 1340788 859674 1524 l +1338077 859674 1343500 859674 1524 l +1401208 832242 1401208 782712 2540 l +1417464 789062 1437784 789062 1524 l +1437784 827162 1417718 827162 1524 l +1386984 808112 1400192 808112 1524 l +1409844 782712 1417464 795412 b +1409844 803032 1417464 813192 b +1409844 820812 1417464 833512 b +1437784 808112 1437784 782712 1524 l +1437784 789062 1270 3048 c +1417464 808112 1430164 803032 1524 l +1430164 803032 1430164 813192 1524 l +1430164 813192 1417464 808112 1524 l +1428894 808112 1437784 808112 1524 l +1428894 810652 1420004 808112 3048 l +1420004 808112 1428894 805572 3048 l +1428894 805572 1428894 808112 3048 l +1428894 808112 1426354 808112 3048 l +1437784 1189112 1437784 1163712 1524 l +1437784 1087512 1437784 1112912 1524 l +1361584 1138312 1386984 1138312 1524 l +1437784 1163712 1437784 1157362 1524 l +1332552 1167014 1321706 1167014 1524 l +1321706 1167014 1332552 1177860 1524 l +1332552 1177860 1332552 1180572 1524 l +1332552 1180572 1329840 1183283 1524 l +1329840 1183283 1324417 1183283 1524 l +1324417 1183283 1321706 1180572 1524 l +1338077 1167014 1338077 1183283 1524 l +1338077 1183283 1348923 1167014 1524 l +1348923 1167014 1348923 1183283 1524 l +1354448 1183283 1365294 1183283 1524 l +1365294 1183283 1365294 1180572 1524 l +1365294 1180572 1354448 1169725 1524 l +1354448 1169725 1354448 1167014 1524 l +1370819 1169725 1370819 1180572 1524 l +1370819 1180572 1373530 1183283 1524 l +1373530 1183283 1378953 1183283 1524 l +1378953 1183283 1381665 1180572 1524 l +1381665 1180572 1381665 1169725 1524 l +1381665 1169725 1378953 1167014 1524 l +1378953 1167014 1373530 1167014 1524 l +1373530 1167014 1370819 1169725 1524 l +1370819 1169725 1381665 1180572 1524 l +1387190 1169725 1387190 1180572 1524 l +1387190 1180572 1389901 1183283 1524 l +1389901 1183283 1395324 1183283 1524 l +1395324 1183283 1398036 1180572 1524 l +1398036 1180572 1398036 1169725 1524 l +1398036 1169725 1395324 1167014 1524 l +1395324 1167014 1389901 1167014 1524 l +1389901 1167014 1387190 1169725 1524 l +1387190 1169725 1398036 1180572 1524 l +1403561 1169725 1403561 1180572 1524 l +1403561 1180572 1406272 1183283 1524 l +1406272 1183283 1411695 1183283 1524 l +1411695 1183283 1414407 1180572 1524 l +1414407 1180572 1414407 1169725 1524 l +1414407 1169725 1411695 1167014 1524 l +1411695 1167014 1406272 1167014 1524 l +1406272 1167014 1403561 1169725 1524 l +1403561 1169725 1414407 1180572 1524 l +1321706 1192585 1321706 1203432 1524 l +1321706 1203432 1324417 1206143 1524 l +1324417 1206143 1329840 1206143 1524 l +1329840 1206143 1332552 1203432 1524 l +1332552 1203432 1332552 1192585 1524 l +1332552 1192585 1329840 1189874 1524 l +1329840 1189874 1324417 1189874 1524 l +1324417 1189874 1321706 1192585 1524 l +1327129 1195297 1332552 1189874 1524 l +1338077 1203432 1340788 1206143 1524 l +1340788 1206143 1346211 1206143 1524 l +1346211 1206143 1348923 1203432 1524 l +1348923 1203432 1348923 1200720 1524 l +1348923 1200720 1346211 1198008 1524 l +1346211 1198008 1343500 1198008 1524 l +1346211 1198008 1348923 1195297 1524 l +1348923 1195297 1348923 1192585 1524 l +1348923 1192585 1346211 1189874 1524 l +1346211 1189874 1340788 1189874 1524 l +1340788 1189874 1338077 1192585 1524 l +1401208 1162442 1401208 1112912 2540 l +1417464 1119262 1437784 1119262 1524 l +1437784 1157362 1417718 1157362 1524 l +1386984 1138312 1400192 1138312 1524 l +1409844 1112912 1417464 1125612 b +1409844 1133232 1417464 1143392 b +1409844 1151012 1417464 1163712 b +1437784 1138312 1437784 1112912 1524 l +1437784 1119262 1270 3048 c +1417464 1138312 1430164 1133232 1524 l +1430164 1133232 1430164 1143392 1524 l +1430164 1143392 1417464 1138312 1524 l +1428894 1138312 1437784 1138312 1524 l +1428894 1140852 1420004 1138312 3048 l +1420004 1138312 1428894 1135772 3048 l +1428894 1135772 1428894 1138312 3048 l +1428894 1138312 1426354 1138312 3048 l +1437784 706512 1437784 681112 1524 l +1437784 604912 1437784 630312 1524 l +1361584 655712 1386984 655712 1524 l +1437784 681112 1437784 674762 1524 l +1332552 684414 1321706 684414 1524 l +1321706 684414 1332552 695260 1524 l +1332552 695260 1332552 697972 1524 l +1332552 697972 1329840 700683 1524 l +1329840 700683 1324417 700683 1524 l +1324417 700683 1321706 697972 1524 l +1338077 684414 1338077 700683 1524 l +1338077 700683 1348923 684414 1524 l +1348923 684414 1348923 700683 1524 l +1354448 700683 1365294 700683 1524 l +1365294 700683 1365294 697972 1524 l +1365294 697972 1354448 687125 1524 l +1354448 687125 1354448 684414 1524 l +1370819 687125 1370819 697972 1524 l +1370819 697972 1373530 700683 1524 l +1373530 700683 1378953 700683 1524 l +1378953 700683 1381665 697972 1524 l +1381665 697972 1381665 687125 1524 l +1381665 687125 1378953 684414 1524 l +1378953 684414 1373530 684414 1524 l +1373530 684414 1370819 687125 1524 l +1370819 687125 1381665 697972 1524 l +1387190 687125 1387190 697972 1524 l +1387190 697972 1389901 700683 1524 l +1389901 700683 1395324 700683 1524 l +1395324 700683 1398036 697972 1524 l +1398036 697972 1398036 687125 1524 l +1398036 687125 1395324 684414 1524 l +1395324 684414 1389901 684414 1524 l +1389901 684414 1387190 687125 1524 l +1387190 687125 1398036 697972 1524 l +1403561 687125 1403561 697972 1524 l +1403561 697972 1406272 700683 1524 l +1406272 700683 1411695 700683 1524 l +1411695 700683 1414407 697972 1524 l +1414407 697972 1414407 687125 1524 l +1414407 687125 1411695 684414 1524 l +1411695 684414 1406272 684414 1524 l +1406272 684414 1403561 687125 1524 l +1403561 687125 1414407 697972 1524 l +1321706 709985 1321706 720832 1524 l +1321706 720832 1324417 723543 1524 l +1324417 723543 1329840 723543 1524 l +1329840 723543 1332552 720832 1524 l +1332552 720832 1332552 709985 1524 l +1332552 709985 1329840 707274 1524 l +1329840 707274 1324417 707274 1524 l +1324417 707274 1321706 709985 1524 l +1327129 712697 1332552 707274 1524 l +1338077 709985 1338077 720832 1524 l +1338077 720832 1340788 723543 1524 l +1340788 723543 1346211 723543 1524 l +1346211 723543 1348923 720832 1524 l +1348923 720832 1348923 709985 1524 l +1348923 709985 1346211 707274 1524 l +1346211 707274 1340788 707274 1524 l +1340788 707274 1338077 709985 1524 l +1338077 709985 1348923 720832 1524 l +1401208 679842 1401208 630312 2540 l +1417464 636662 1437784 636662 1524 l +1437784 674762 1417718 674762 1524 l +1386984 655712 1400192 655712 1524 l +1409844 630312 1417464 643012 b +1409844 650632 1417464 660792 b +1409844 668412 1417464 681112 b +1437784 655712 1437784 630312 1524 l +1437784 636662 1270 3048 c +1417464 655712 1430164 650632 1524 l +1430164 650632 1430164 660792 1524 l +1430164 660792 1417464 655712 1524 l +1428894 655712 1437784 655712 1524 l +1428894 658252 1420004 655712 3048 l +1420004 655712 1428894 653172 3048 l +1428894 653172 1428894 655712 3048 l +1428894 655712 1426354 655712 3048 l +1513984 1443112 1488584 1443112 1524 l +1412384 1443112 1437784 1443112 1524 l +1437784 1443112 1441594 1453272 2032 l +1441594 1453272 1447944 1432952 2032 l +1447944 1432952 1454294 1453272 2032 l +1454294 1453272 1460644 1432952 2032 l +1460644 1432952 1466994 1453272 2032 l +1466994 1453272 1473344 1432952 2032 l +1473344 1432952 1479694 1453272 2032 l +1479694 1453272 1486044 1432952 2032 l +1486044 1432952 1488584 1443112 2032 l +1367703 1436508 1367703 1452777 1524 l +1367703 1452777 1375837 1452777 1524 l +1375837 1452777 1378549 1450066 1524 l +1378549 1450066 1378549 1444642 1524 l +1378549 1444642 1375837 1441931 1524 l +1375837 1441931 1367703 1441931 1524 l +1373126 1441931 1378549 1436508 1524 l +1384074 1439219 1386785 1436508 1524 l +1386785 1436508 1392208 1436508 1524 l +1392208 1436508 1394920 1439219 1524 l +1394920 1439219 1394920 1450066 1524 l +1394920 1450066 1392208 1452777 1524 l +1392208 1452777 1386785 1452777 1524 l +1386785 1452777 1384074 1450066 1524 l +1384074 1450066 1384074 1447354 1524 l +1384074 1447354 1386785 1444642 1524 l +1386785 1444642 1394920 1444642 1524 l +1513984 1417712 1488584 1417712 1524 l +1412384 1417712 1437784 1417712 1524 l +1437784 1417712 1441594 1427872 2032 l +1441594 1427872 1447944 1407552 2032 l +1447944 1407552 1454294 1427872 2032 l +1454294 1427872 1460644 1407552 2032 l +1460644 1407552 1466994 1427872 2032 l +1466994 1427872 1473344 1407552 2032 l +1473344 1407552 1479694 1427872 2032 l +1479694 1427872 1486044 1407552 2032 l +1486044 1407552 1488584 1417712 2032 l +1375046 1408060 1375046 1424329 1524 l +1375046 1424329 1383180 1424329 1524 l +1383180 1424329 1385892 1421618 1524 l +1385892 1421618 1385892 1416194 1524 l +1385892 1416194 1383180 1413483 1524 l +1383180 1413483 1375046 1413483 1524 l +1380469 1413483 1385892 1408060 1524 l +1391417 1421618 1394128 1424329 1524 l +1394128 1424329 1399551 1424329 1524 l +1399551 1424329 1402263 1421618 1524 l +1402263 1421618 1402263 1418906 1524 l +1402263 1418906 1399551 1416194 1524 l +1399551 1416194 1402263 1413483 1524 l +1402263 1413483 1402263 1410771 1524 l +1402263 1410771 1399551 1408060 1524 l +1399551 1408060 1394128 1408060 1524 l +1394128 1408060 1391417 1410771 1524 l +1391417 1410771 1391417 1413483 1524 l +1391417 1413483 1394128 1416194 1524 l +1394128 1416194 1391417 1418906 1524 l +1391417 1418906 1391417 1421618 1524 l +1394128 1416194 1399551 1416194 1524 l +1513984 1392312 1488584 1392312 1524 l +1412384 1392312 1437784 1392312 1524 l +1437784 1392312 1441594 1402472 2032 l +1441594 1402472 1447944 1382152 2032 l +1447944 1382152 1454294 1402472 2032 l +1454294 1402472 1460644 1382152 2032 l +1460644 1382152 1466994 1402472 2032 l +1466994 1402472 1473344 1382152 2032 l +1473344 1382152 1479694 1402472 2032 l +1479694 1402472 1486044 1382152 2032 l +1486044 1382152 1488584 1392312 2032 l +1375046 1382660 1375046 1398929 1524 l +1375046 1398929 1383180 1398929 1524 l +1383180 1398929 1385892 1396218 1524 l +1385892 1396218 1385892 1390794 1524 l +1385892 1390794 1383180 1388083 1524 l +1383180 1388083 1375046 1388083 1524 l +1380469 1388083 1385892 1382660 1524 l +1391417 1398929 1402263 1398929 1524 l +1402263 1398929 1402263 1396218 1524 l +1402263 1396218 1391417 1385371 1524 l +1391417 1385371 1391417 1382660 1524 l +1513984 1366912 1488584 1366912 1524 l +1412384 1366912 1437784 1366912 1524 l +1437784 1366912 1441594 1377072 2032 l +1441594 1377072 1447944 1356752 2032 l +1447944 1356752 1454294 1377072 2032 l +1454294 1377072 1460644 1356752 2032 l +1460644 1356752 1466994 1377072 2032 l +1466994 1377072 1473344 1356752 2032 l +1473344 1356752 1479694 1377072 2032 l +1479694 1377072 1486044 1356752 2032 l +1486044 1356752 1488584 1366912 2032 l +1375046 1357260 1375046 1373529 1524 l +1375046 1373529 1383180 1373529 1524 l +1383180 1373529 1385892 1370818 1524 l +1385892 1370818 1385892 1365394 1524 l +1385892 1365394 1383180 1362683 1524 l +1383180 1362683 1375046 1362683 1524 l +1380469 1362683 1385892 1357260 1524 l +1402263 1373529 1396840 1370818 1524 l +1396840 1370818 1391417 1365394 1524 l +1391417 1365394 1391417 1359971 1524 l +1391417 1359971 1394128 1357260 1524 l +1394128 1357260 1399551 1357260 1524 l +1399551 1357260 1402263 1359971 1524 l +1402263 1359971 1402263 1362683 1524 l +1402263 1362683 1399551 1365394 1524 l +1399551 1365394 1391417 1365394 1524 l +1513984 1341512 1488584 1341512 1524 l +1412384 1341512 1437784 1341512 1524 l +1437784 1341512 1441594 1351672 2032 l +1441594 1351672 1447944 1331352 2032 l +1447944 1331352 1454294 1351672 2032 l +1454294 1351672 1460644 1331352 2032 l +1460644 1331352 1466994 1351672 2032 l +1466994 1351672 1473344 1331352 2032 l +1473344 1331352 1479694 1351672 2032 l +1479694 1351672 1486044 1331352 2032 l +1486044 1331352 1488584 1341512 2032 l +1375046 1331860 1375046 1348129 1524 l +1375046 1348129 1383180 1348129 1524 l +1383180 1348129 1385892 1345418 1524 l +1385892 1345418 1385892 1339994 1524 l +1385892 1339994 1383180 1337283 1524 l +1383180 1337283 1375046 1337283 1524 l +1380469 1337283 1385892 1331860 1524 l +1402263 1348129 1391417 1348129 1524 l +1391417 1348129 1391417 1339994 1524 l +1391417 1339994 1396840 1342706 1524 l +1396840 1342706 1399551 1342706 1524 l +1399551 1342706 1402263 1339994 1524 l +1402263 1339994 1402263 1334571 1524 l +1402263 1334571 1399551 1331860 1524 l +1399551 1331860 1394128 1331860 1524 l +1394128 1331860 1391417 1334571 1524 l +1513984 1316112 1488584 1316112 1524 l +1412384 1316112 1437784 1316112 1524 l +1437784 1316112 1441594 1326272 2032 l +1441594 1326272 1447944 1305952 2032 l +1447944 1305952 1454294 1326272 2032 l +1454294 1326272 1460644 1305952 2032 l +1460644 1305952 1466994 1326272 2032 l +1466994 1326272 1473344 1305952 2032 l +1473344 1305952 1479694 1326272 2032 l +1479694 1326272 1486044 1305952 2032 l +1486044 1305952 1488584 1316112 2032 l +1375046 1306460 1375046 1322729 1524 l +1375046 1322729 1383180 1322729 1524 l +1383180 1322729 1385892 1320018 1524 l +1385892 1320018 1385892 1314594 1524 l +1385892 1314594 1383180 1311883 1524 l +1383180 1311883 1375046 1311883 1524 l +1380469 1311883 1385892 1306460 1524 l +1399551 1306460 1399551 1322729 1524 l +1399551 1322729 1391417 1314594 1524 l +1391417 1314594 1402263 1314594 1524 l +1513984 1290712 1488584 1290712 1524 l +1412384 1290712 1437784 1290712 1524 l +1437784 1290712 1441594 1300872 2032 l +1441594 1300872 1447944 1280552 2032 l +1447944 1280552 1454294 1300872 2032 l +1454294 1300872 1460644 1280552 2032 l +1460644 1280552 1466994 1300872 2032 l +1466994 1300872 1473344 1280552 2032 l +1473344 1280552 1479694 1300872 2032 l +1479694 1300872 1486044 1280552 2032 l +1486044 1280552 1488584 1290712 2032 l +1375046 1281060 1375046 1297329 1524 l +1375046 1297329 1383180 1297329 1524 l +1383180 1297329 1385892 1294618 1524 l +1385892 1294618 1385892 1289194 1524 l +1385892 1289194 1383180 1286483 1524 l +1383180 1286483 1375046 1286483 1524 l +1380469 1286483 1385892 1281060 1524 l +1391417 1294618 1394128 1297329 1524 l +1394128 1297329 1399551 1297329 1524 l +1399551 1297329 1402263 1294618 1524 l +1402263 1294618 1402263 1291906 1524 l +1402263 1291906 1399551 1289194 1524 l +1399551 1289194 1396840 1289194 1524 l +1399551 1289194 1402263 1286483 1524 l +1402263 1286483 1402263 1283771 1524 l +1402263 1283771 1399551 1281060 1524 l +1399551 1281060 1394128 1281060 1524 l +1394128 1281060 1391417 1283771 1524 l +1513984 1265312 1488584 1265312 1524 l +1412384 1265312 1437784 1265312 1524 l +1437784 1265312 1441594 1275472 2032 l +1441594 1275472 1447944 1255152 2032 l +1447944 1255152 1454294 1275472 2032 l +1454294 1275472 1460644 1255152 2032 l +1460644 1255152 1466994 1275472 2032 l +1466994 1275472 1473344 1255152 2032 l +1473344 1255152 1479694 1275472 2032 l +1479694 1275472 1486044 1255152 2032 l +1486044 1255152 1488584 1265312 2032 l +1375046 1255660 1375046 1271929 1524 l +1375046 1271929 1383180 1271929 1524 l +1383180 1271929 1385892 1269218 1524 l +1385892 1269218 1385892 1263794 1524 l +1385892 1263794 1383180 1261083 1524 l +1383180 1261083 1375046 1261083 1524 l +1380469 1261083 1385892 1255660 1524 l +1402263 1255660 1391417 1255660 1524 l +1391417 1255660 1402263 1266506 1524 l +1402263 1266506 1402263 1269218 1524 l +1402263 1269218 1399551 1271929 1524 l +1399551 1271929 1394128 1271929 1524 l +1394128 1271929 1391417 1269218 1524 l +1234584 1138312 1234584 1112912 1524 l +1218836 1050174 1202567 1050174 1524 l +1202567 1050174 1202567 1058308 1524 l +1202567 1058308 1205278 1061020 1524 l +1205278 1061020 1210702 1061020 1524 l +1210702 1061020 1213413 1058308 1524 l +1213413 1058308 1213413 1050174 1524 l +1213413 1055597 1218836 1061020 1524 l +1205278 1066545 1202567 1069256 1524 l +1202567 1069256 1218836 1069256 1524 l +1218836 1066545 1218836 1071968 1524 l +1216125 1080187 1205278 1080187 1524 l +1205278 1080187 1202567 1082898 1524 l +1202567 1082898 1202567 1088321 1524 l +1202567 1088321 1205278 1091033 1524 l +1205278 1091033 1216125 1091033 1524 l +1216125 1091033 1218836 1088321 1524 l +1218836 1088321 1218836 1082898 1524 l +1218836 1082898 1216125 1080187 1524 l +1216125 1080187 1205278 1091033 1524 l +1253284 1050174 1250573 1052885 1524 l +1250573 1052885 1266842 1052885 1524 l +1266842 1050174 1266842 1055597 1524 l +1264131 1063816 1253284 1063816 1524 l +1253284 1063816 1250573 1066527 1524 l +1250573 1066527 1250573 1071950 1524 l +1250573 1071950 1253284 1074662 1524 l +1253284 1074662 1264131 1074662 1524 l +1264131 1074662 1266842 1071950 1524 l +1266842 1071950 1266842 1066527 1524 l +1266842 1066527 1264131 1063816 1524 l +1264131 1063816 1253284 1074662 1524 l +1250573 1080187 1266842 1080187 1524 l +1261419 1080187 1250573 1091033 1524 l +1258708 1082898 1266842 1091033 1524 l +1234584 1036712 1234584 1062112 1524 l +1234584 1062112 1224424 1065922 2032 l +1224424 1065922 1244744 1072272 2032 l +1244744 1072272 1224424 1078622 2032 l +1224424 1078622 1244744 1084972 2032 l +1244744 1084972 1224424 1091322 2032 l +1224424 1091322 1244744 1097672 2032 l +1244744 1097672 1224424 1104022 2032 l +1224424 1104022 1244744 1110372 2032 l +1244744 1110372 1234584 1112912 2032 l +1234584 985912 1234584 960512 1524 l +1218836 897774 1202567 897774 1524 l +1202567 897774 1202567 905908 1524 l +1202567 905908 1205278 908620 1524 l +1205278 908620 1210702 908620 1524 l +1210702 908620 1213413 905908 1524 l +1213413 905908 1213413 897774 1524 l +1213413 903197 1218836 908620 1524 l +1205278 914145 1202567 916856 1524 l +1202567 916856 1218836 916856 1524 l +1218836 914145 1218836 919568 1524 l +1205278 927787 1202567 930498 1524 l +1202567 930498 1218836 930498 1524 l +1218836 927787 1218836 933210 1524 l +1253284 897774 1250573 900485 1524 l +1250573 900485 1266842 900485 1524 l +1266842 897774 1266842 903197 1524 l +1264131 911416 1253284 911416 1524 l +1253284 911416 1250573 914127 1524 l +1250573 914127 1250573 919550 1524 l +1250573 919550 1253284 922262 1524 l +1253284 922262 1264131 922262 1524 l +1264131 922262 1266842 919550 1524 l +1266842 919550 1266842 914127 1524 l +1266842 914127 1264131 911416 1524 l +1264131 911416 1253284 922262 1524 l +1250573 927787 1266842 927787 1524 l +1261419 927787 1250573 938633 1524 l +1258708 930498 1266842 938633 1524 l +1234584 884312 1234584 909712 1524 l +1234584 909712 1224424 913522 2032 l +1224424 913522 1244744 919872 2032 l +1244744 919872 1224424 926222 2032 l +1224424 926222 1244744 932572 2032 l +1244744 932572 1224424 938922 2032 l +1224424 938922 1244744 945272 2032 l +1244744 945272 1224424 951622 2032 l +1224424 951622 1244744 957972 2032 l +1244744 957972 1234584 960512 2032 l +1234584 808112 1234584 782712 1524 l +1218836 719974 1202567 719974 1524 l +1202567 719974 1202567 728108 1524 l +1202567 728108 1205278 730820 1524 l +1205278 730820 1210702 730820 1524 l +1210702 730820 1213413 728108 1524 l +1213413 728108 1213413 719974 1524 l +1213413 725397 1218836 730820 1524 l +1205278 736345 1202567 739056 1524 l +1202567 739056 1218836 739056 1524 l +1218836 736345 1218836 741768 1524 l +1218836 760833 1218836 749987 1524 l +1218836 749987 1207990 760833 1524 l +1207990 760833 1205278 760833 1524 l +1205278 760833 1202567 758121 1524 l +1202567 758121 1202567 752698 1524 l +1202567 752698 1205278 749987 1524 l +1253284 719974 1250573 722685 1524 l +1250573 722685 1266842 722685 1524 l +1266842 719974 1266842 725397 1524 l +1264131 733616 1253284 733616 1524 l +1253284 733616 1250573 736327 1524 l +1250573 736327 1250573 741750 1524 l +1250573 741750 1253284 744462 1524 l +1253284 744462 1264131 744462 1524 l +1264131 744462 1266842 741750 1524 l +1266842 741750 1266842 736327 1524 l +1266842 736327 1264131 733616 1524 l +1264131 733616 1253284 744462 1524 l +1250573 749987 1266842 749987 1524 l +1261419 749987 1250573 760833 1524 l +1258708 752698 1266842 760833 1524 l +1234584 706512 1234584 731912 1524 l +1234584 731912 1224424 735722 2032 l +1224424 735722 1244744 742072 2032 l +1244744 742072 1224424 748422 2032 l +1224424 748422 1244744 754772 2032 l +1244744 754772 1224424 761122 2032 l +1224424 761122 1244744 767472 2032 l +1244744 767472 1224424 773822 2032 l +1224424 773822 1244744 780172 2032 l +1244744 780172 1234584 782712 2032 l +1234584 655712 1234584 630312 1524 l +1218836 567574 1202567 567574 1524 l +1202567 567574 1202567 575708 1524 l +1202567 575708 1205278 578420 1524 l +1205278 578420 1210702 578420 1524 l +1210702 578420 1213413 575708 1524 l +1213413 575708 1213413 567574 1524 l +1213413 572997 1218836 578420 1524 l +1205278 583945 1202567 586656 1524 l +1202567 586656 1218836 586656 1524 l +1218836 583945 1218836 589368 1524 l +1205278 597587 1202567 600298 1524 l +1202567 600298 1202567 605721 1524 l +1202567 605721 1205278 608433 1524 l +1205278 608433 1207990 608433 1524 l +1207990 608433 1210702 605721 1524 l +1210702 605721 1210702 603010 1524 l +1210702 605721 1213413 608433 1524 l +1213413 608433 1216125 608433 1524 l +1216125 608433 1218836 605721 1524 l +1218836 605721 1218836 600298 1524 l +1218836 600298 1216125 597587 1524 l +1253284 567574 1250573 570285 1524 l +1250573 570285 1266842 570285 1524 l +1266842 567574 1266842 572997 1524 l +1264131 581216 1253284 581216 1524 l +1253284 581216 1250573 583927 1524 l +1250573 583927 1250573 589350 1524 l +1250573 589350 1253284 592062 1524 l +1253284 592062 1264131 592062 1524 l +1264131 592062 1266842 589350 1524 l +1266842 589350 1266842 583927 1524 l +1266842 583927 1264131 581216 1524 l +1264131 581216 1253284 592062 1524 l +1250573 597587 1266842 597587 1524 l +1261419 597587 1250573 608433 1524 l +1258708 600298 1266842 608433 1524 l +1234584 554112 1234584 579512 1524 l +1234584 579512 1224424 583322 2032 l +1224424 583322 1244744 589672 2032 l +1244744 589672 1224424 596022 2032 l +1224424 596022 1244744 602372 2032 l +1244744 602372 1224424 608722 2032 l +1224424 608722 1244744 615072 2032 l +1244744 615072 1224424 621422 2032 l +1224424 621422 1244744 627772 2032 l +1244744 627772 1234584 630312 2032 l +1234584 579512 1234584 554112 1524 l +1221884 554112 1247284 554112 2540 l +1247284 554112 1234584 541412 2540 l +1234584 541412 1221884 554112 2540 l +1227142 536682 1224430 539393 1524 l +1224430 539393 1219007 539393 1524 l +1219007 539393 1216296 536682 1524 l +1216296 536682 1216296 525835 1524 l +1216296 525835 1219007 523124 1524 l +1219007 523124 1224430 523124 1524 l +1224430 523124 1227142 525835 1524 l +1227142 525835 1227142 531258 1524 l +1227142 531258 1221719 531258 1524 l +1232667 523124 1232667 539393 1524 l +1232667 539393 1243513 523124 1524 l +1243513 523124 1243513 539393 1524 l +1249038 539393 1249038 523124 1524 l +1249038 523124 1257172 523124 1524 l +1257172 523124 1259884 525835 1524 l +1259884 525835 1259884 536682 1524 l +1259884 536682 1257172 539393 1524 l +1257172 539393 1249038 539393 1524 l +1234584 731912 1234584 706512 1524 l +1221884 706512 1247284 706512 2540 l +1247284 706512 1234584 693812 2540 l +1234584 693812 1221884 706512 2540 l +1227142 689082 1224430 691793 1524 l +1224430 691793 1219007 691793 1524 l +1219007 691793 1216296 689082 1524 l +1216296 689082 1216296 678235 1524 l +1216296 678235 1219007 675524 1524 l +1219007 675524 1224430 675524 1524 l +1224430 675524 1227142 678235 1524 l +1227142 678235 1227142 683658 1524 l +1227142 683658 1221719 683658 1524 l +1232667 675524 1232667 691793 1524 l +1232667 691793 1243513 675524 1524 l +1243513 675524 1243513 691793 1524 l +1249038 691793 1249038 675524 1524 l +1249038 675524 1257172 675524 1524 l +1257172 675524 1259884 678235 1524 l +1259884 678235 1259884 689082 1524 l +1259884 689082 1257172 691793 1524 l +1257172 691793 1249038 691793 1524 l +1234584 909712 1234584 884312 1524 l +1221884 884312 1247284 884312 2540 l +1247284 884312 1234584 871612 2540 l +1234584 871612 1221884 884312 2540 l +1227142 866882 1224430 869593 1524 l +1224430 869593 1219007 869593 1524 l +1219007 869593 1216296 866882 1524 l +1216296 866882 1216296 856035 1524 l +1216296 856035 1219007 853324 1524 l +1219007 853324 1224430 853324 1524 l +1224430 853324 1227142 856035 1524 l +1227142 856035 1227142 861458 1524 l +1227142 861458 1221719 861458 1524 l +1232667 853324 1232667 869593 1524 l +1232667 869593 1243513 853324 1524 l +1243513 853324 1243513 869593 1524 l +1249038 869593 1249038 853324 1524 l +1249038 853324 1257172 853324 1524 l +1257172 853324 1259884 856035 1524 l +1259884 856035 1259884 866882 1524 l +1259884 866882 1257172 869593 1524 l +1257172 869593 1249038 869593 1524 l +1234584 1062112 1234584 1036712 1524 l +1221884 1036712 1247284 1036712 2540 l +1247284 1036712 1234584 1024012 2540 l +1234584 1024012 1221884 1036712 2540 l +1227142 1019282 1224430 1021993 1524 l +1224430 1021993 1219007 1021993 1524 l +1219007 1021993 1216296 1019282 1524 l +1216296 1019282 1216296 1008435 1524 l +1216296 1008435 1219007 1005724 1524 l +1219007 1005724 1224430 1005724 1524 l +1224430 1005724 1227142 1008435 1524 l +1227142 1008435 1227142 1013858 1524 l +1227142 1013858 1221719 1013858 1524 l +1232667 1005724 1232667 1021993 1524 l +1232667 1021993 1243513 1005724 1524 l +1243513 1005724 1243513 1021993 1524 l +1249038 1021993 1249038 1005724 1524 l +1249038 1005724 1257172 1005724 1524 l +1257172 1005724 1259884 1008435 1524 l +1259884 1008435 1259884 1019282 1524 l +1259884 1019282 1257172 1021993 1524 l +1257172 1021993 1249038 1021993 1524 l +777384 1443112 777384 1265312 1524 l +777384 1265312 878984 1265312 1524 l +599584 1366912 726584 1366912 1524 l +726584 1366912 878984 1366912 1524 l +726584 1265312 726584 1366912 1524 l +726584 1366912 10160 p +599584 1316112 624984 1316112 1524 l +624984 1316112 878984 1316112 1524 l +624984 1265312 624984 1316112 1524 l +624984 1316112 726584 1316112 1524 l +624984 1316112 10160 p +777384 1544712 777384 1595512 1524 l +777384 1595512 828184 1595512 1524 l +828184 1595512 878984 1595512 1524 l +878984 1595512 878984 1443112 1524 l +828184 1595512 10160 p +828184 1595512 828184 1671712 1524 l +828184 1112912 878984 1112912 1524 l +624984 1189112 624984 1214512 1524 l +726584 1189112 726584 1214512 1524 l +1234584 909712 1234584 884312 1524 l +1132984 1443112 1412384 1443112 1524 l +1132984 1417712 1412384 1417712 1524 l +1132984 1392312 1412384 1392312 1524 l +1132984 1366912 1412384 1366912 1524 l +1132984 1341512 1412384 1341512 1524 l +1132984 1316112 1412384 1316112 1524 l +1132984 1290712 1412384 1290712 1524 l +1132984 1265312 1412384 1265312 1524 l +1132984 1138312 1158384 1138312 1524 l +1158384 1138312 1158384 808112 1524 l +1158384 808112 1234584 808112 1524 l +1234584 808112 1361584 808112 1524 l +1361584 808112 1285384 808112 1524 l +1361584 808112 10160 p +1234584 808112 10160 p +1285384 655712 1361584 655712 1524 l +1361584 655712 1234584 655712 1524 l +1234584 655712 1132984 655712 1524 l +1132984 655712 1132984 1112912 1524 l +1361584 655712 10160 p +1234584 655712 10160 p +1285384 985912 1361584 985912 1524 l +1361584 985912 1234584 985912 1524 l +1234584 985912 1183784 985912 1524 l +1183784 985912 1183784 1163712 1524 l +1183784 1163712 1132984 1163712 1524 l +1361584 985912 10160 p +1234584 985912 10160 p +1285384 1138312 1361584 1138312 1524 l +1361584 1138312 1234584 1138312 1524 l +1234584 1138312 1209184 1138312 1524 l +1209184 1138312 1209184 1189112 1524 l +1209184 1189112 1132984 1189112 1524 l +1361584 1138312 10160 p +1234584 1138312 10160 p +1437784 1189112 1513984 1189112 1524 l +1437784 1036712 1513984 1036712 1524 l +1437784 858912 1513984 858912 1524 l +1437784 706512 1513984 706512 1524 l +showpage grestore diff --git a/leddrvr-sch.sch b/leddrvr-sch.sch new file mode 100644 index 0000000..e7a1c6e --- /dev/null +++ b/leddrvr-sch.sch Binary files differ diff --git a/leddrvr.asm b/leddrvr.asm new file mode 100644 index 0000000..304c9dc --- /dev/null +++ b/leddrvr.asm @@ -0,0 +1,361 @@ +;;; LEDDRVR.ASM +;;; Copyright (c) 2002, TundraWare Inc., All Rights Reserved +;;; +;;; Program to drive homemade 4-digit LED display board +;;; +;;; $Id: leddrvr.asm,v 1.13 2002/03/25 16:55:26 tundra Exp tundra $ + + list p=16F84A + include + + errorlevel -302 ;suppress bank selection messages + __config 3ff1h ;xt 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 +;;;;;;;;;; + +num_led equ 4 ; total number of LEDs +led_sel_mask equ 0f0H ; bits not used for LED == 1 +led_sel equ PORTA +seg_sel equ PORTB + +;;;;;;;;;; +;;; Program Contants +;;;;;;;;;; + +;;; TMR0 related stuff +;;; +;;; With a 4MHz clock, the basic cycle type is 1/4 this or 1us. +;;; The TMR0 interrupt interrupt interval is thus: +;;; +;;; 1us * prescaler factor * tmr0_count +;;; + +;;; TMR0 interrupt every 1ms + +tmr0_count equ D'256'-D'250' ; set for 1ms interrupt interval +tmr0_pre equ tmr4 ; prescaler factor + + +;;; wait delays: delay time = value(s) below * TMR0 interrupt rate + +count_delay equ D'100' ; 100ms delay between counts + + +;;;;;;;;;; +;;; Register File Assignments +;;;;;;;;;; + + CBLOCK 0cH + _fsr ; context save area + _pclath + _status + _w + + dsply_val:2 ; array of values to display + ; 2 LEDs per byte + + current_led ; currently displayed LED + ; 0 <= current_led < num_led + + wait_count ; time delay counter variable + + temp ; temp storage during calculation + ENDC + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + PAGE +;;;;;;;;;; +;;; 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 svc_tmr0 ; yup + goto restore_context ; nope + + ; TMR0 ISR +svc_tmr0: + bcf INTCON,T0IF ; clear the interrupt condition + movlw tmr0_count ; prime the counter + movwf TMR0 + clrf INTCON ; Enable *just* this interrupt + bsf INTCON,T0IE ; to maintain timing accuracy + bsf INTCON,GIE + + ; 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 + ; not in-use, fall through to next code + + call display_led ; then display it + goto restore_context ; goto here (instead of just falling + ; through) allows other ISRs + ; to later be added immediately + ; following + +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 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + PAGE +;;;;;;;;;; +;;; Main program logic +;;;;;;;;;; + +main: + call init ; initialize the system +run: + call incr_count + movlw count_delay + call wait ; slow down displayed count + goto run + +;;; End of main logic + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + PAGE +;;;;;;;;;; +;;; Data & Tables +;;;;;;;;;; + +;;;;;;;;;; +;;; Hex Digit-to-Segment lookup table +;;;;;;;;;; + + +hex_7seg addwf PCL,F + DT 03fH ; 0 + DT 006H ; 1 + DT 05bH ; 2 + DT 04fH ; 3 + DT 066H ; 4 + DT 06dH ; 5 + DT 07dH ; 6 + DT 007H ; 7 + DT 07fH ; 8 + DT 067H ; 9 + DT 077H ; A + DT 07cH ; B + DT 058H ; C + DT 05eH ; D + DT 079H ; E + DT 071H ; F + + +;;;;;;;;;; +;;; Table used to translate LED position to equivalent led_sel +;;; bit pattern for that LED. It is assumed that any routine using +;;; this table will properly preserve higher-order bits not needed for +;;; LED selection. +;;;;;;;;;; + +led_lookup: + addwf PCL,F + DT 01H ; LED0 == LSD + DT 02H ; LED1 + DT 04H ; LED2 + DT 08H ; LED3 + +;;; End of 'led_lookup' + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + PAGE +;;;;;;;;;; +;;; Supporting Subroutines +;;;;;;;;;; + + +;;;;;;;;;; +;;; Display LEDs, one per call, from MSD->LSD +;;; This effectively multiplexes across all the LEDs +;;; when called repeatedly. +;;;;;;;;;; + +display_led: + ; clear last displayed digit + + movlw led_sel_mask ; clear out LED selection bits only + andwf led_sel,F + clrf seg_sel ; all segments off + + ; compute and set the segments to display for this digit + + movfw current_led ; convert current_led into an + movwf FSR ; offset from base of display storage + bcf STATUS,C ; don't rotate C into calc below + rrf FSR,F ; /2 - two digits stored in each byte + movlw dsply_val ; base of array containing display vals + addwf FSR,F ; point to desired value + movfw INDF ; and get contents + movwf temp ; store temporarily + btfsc current_led,0 ; even or odd nibble + swapf temp,F ; odd==hi nibble -> low nibble + movfw temp ; get it + andlw 0fH ; mask off high nibble + call hex_7seg ; convert to equivalent seg pattern + movwf seg_sel ; and turn 'em on + + ; select the corresponding LED + + movfw current_led ; offset into lookup table + call led_lookup + iorwf led_sel,F ; turn on these LED selection bits + + ; determine next LED to display + + movfw current_led ; get LED just displayed + btfss STATUS,Z ; was it the LSD? + goto set_next ; nope + movlw num_led ; yup, start again w/MSD + movwf current_led +set_next: + decf current_led,F ; pickup next digit to right + return + +; End of 'display_led' + + + PAGE +;;;;;;;;;; +;;; Increment current count by 1 +;;;;;;;;;; + +incr_count: + incfsz dsply_val,F ; count up + return + incf dsply_val+1,F + return + +;;; End of 'incr_count' + + + PAGE +;;;;;;;;;; +;;; Initialize hardware and software at startup as needed. +;;; Returns with register bank 0 selected. +;;;;;;;;;; + +init: + clrf INTCON ; all interrupts off, flags cleared + + ; setup control registers + + bsf INTCON,T0IE ; unmask TMR0 interrupts + bsf STATUS,RP0 ; select register bank 1 + clrf TRISA ; set PORTA to all outputs + clrf TRISB ; set PORTB to all outputs + clrf OPTION_REG ; TMR0 selected w/ internal clock + ; don't care about RBPU, INTEDG + movlw tmr0_pre ; set TMR0 prescaler value + iorwf OPTION_REG,F + bcf STATUS,RP0 ; select register bank 0 + + ; setup program variables + + clrf dsply_val ; start count at 0 + clrf dsply_val+1 + + movlw tmr0_count ; prime the counter + movwf TMR0 + + movlw num_led-1 ; start displaying with MSD + movwf current_led + + movlw led_sel_mask ; clear out LED selection bits only + andwf led_sel,F + clrf seg_sel ; no segments to display yet + + bsf INTCON,GIE ; enable unmasked interrupts + return + +;;; End of 'init' + + + PAGE +;;;;;;;;;; +;;; Kill time - Outter loop constant passed in W. +;;;;;;;;;; + +wait: + movwf wait_count ; this will be decremented in ISR +loop: + movfw wait_count ; get current count + btfss STATUS,Z ; see if we counted all the way down + goto loop ; not done, keep waiting + return ; all done + +;;; End of 'wait' + + + PAGE +;;;;;;;;;; +;;; EEPROM Contents +;;;;;;;;;; + + org 2100h + + DE "Copyright 2002, TundraWare Inc. All Rights Reserved." + END + diff --git a/leddrvr.hex b/leddrvr.hex new file mode 100644 index 0000000..666fdeb --- /dev/null +++ b/leddrvr.hex @@ -0,0 +1,27 @@ +:020000040000FA +:020000002528B1 +:080008008F00030803138312AB +:100010008E0004088C000A088D008A010B19112833 +:100020001C280B11063081008B018B168B171308CF +:10003000031D930340201C280D088A000C0884002F +:100040000E0883008F0E0F0E09005F205B206430C6 +:100050007320262882073F3406345B344F346634DD +:100060006D347D3407347F34673477347C345834CE +:100070005E34793471348207013402340434083434 +:10008000F03085058601120884000310840C1030BE +:100090008407000894001218940E14080F392A20BF +:1000A000860012083B2085041208031D59280430DD +:1000B000920092030800900F0800910A08008B013B +:1000C0008B1683168501860181010130810483121C +:1000D000900191010630810003309200F0308505D7 +:1000E00086018B17080093001308031D742808006D +:084000000100020003000400AE +:02400E00F13F80 +:1042000043006F0070007900720069006700680069 +:104210007400200032003000300032002C002000FA +:10422000540075006E006400720061005700610068 +:1042300072006500200049006E0063002E0020001F +:10424000200041006C006C002000520069006700F3 +:104250006800740073002000520065007300650060 +:0A42600072007600650064002E0075 +:00000001FF diff --git a/leddrvr.lst b/leddrvr.lst new file mode 100644 index 0000000..119fcf3 --- /dev/null +++ b/leddrvr.lst @@ -0,0 +1,580 @@ +MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 1 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00001 ;;; LEDDRVR.ASM + 00002 ;;; Copyright (c) 2002, TundraWare Inc., All Rights Reserved + 00003 ;;; + 00004 ;;; Program to drive homemade 4-digit LED display board + 00005 ;;; + 00006 ;;; $Id: leddrvr.asm,v 1.13 2002/03/25 16:55:26 tundra Exp tundra $ + 00007 + 00008 list p=16F84A + 00009 include + 00001 LIST + 00002 ; P16F84A.INC Standard Header File, Version 2.00 Microchip Technology, Inc. + 00134 LIST + 00010 + 00011 errorlevel -302 ;suppress bank selection messages +2007 3FF1 00012 __config 3ff1h ;xt osc, WDT off +2000 0001 0002 0003 00013 __idlocs 1234 + 0004 + 00014 + 00015 ;;;;;;;;;; + 00016 ;;; Device Constants + 00017 ;;;;;;;;;; + 00018 + 00000000 00019 tmr2 equ 00H ; TMR0 prescaler constants + 00000001 00020 tmr4 equ 01H + 00000002 00021 tmr8 equ 02H + 00000003 00022 tmr16 equ 03H + 00000004 00023 tmr32 equ 04H + 00000005 00024 tmr64 equ 05H + 00000006 00025 tmr128 equ 06H + 00000007 00026 tmr256 equ 07H + 00027 + 00028 + 00029 ;;;;;;;;;; + 00030 ;;; Circuit Constants + 00031 ;;;;;;;;;; + 00032 + 00000004 00033 num_led equ 4 ; total number of LEDs + 000000F0 00034 led_sel_mask equ 0f0H ; bits not used for LED == 1 + 00000005 00035 led_sel equ PORTA + 00000006 00036 seg_sel equ PORTB + 00037 + 00038 ;;;;;;;;;; + 00039 ;;; Program Contants + 00040 ;;;;;;;;;; + 00041 + 00042 ;;; TMR0 related stuff + 00043 ;;; + 00044 ;;; With a 4MHz clock, the basic cycle type is 1/4 this or 1us. + 00045 ;;; The TMR0 interrupt interrupt interval is thus: + 00046 ;;; + 00047 ;;; 1us * prescaler factor * tmr0_count + 00048 ;;; + 00049 + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 2 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00050 ;;; TMR0 interrupt every 1ms + 00051 + 00000006 00052 tmr0_count equ D'256'-D'250' ; set for 1ms interrupt interval + 00000001 00053 tmr0_pre equ tmr4 ; prescaler factor + 00054 + 00055 + 00056 ;;; wait delays: delay time = value(s) below * TMR0 interrupt rate + 00057 + 00000064 00058 count_delay equ D'100' ; 100ms delay between counts + 00059 + 00060 + 00061 ;;;;;;;;;; + 00062 ;;; Register File Assignments + 00063 ;;;;;;;;;; + 00064 + 00065 CBLOCK 0cH + 0000000C 00066 _fsr ; context save area + 0000000D 00067 _pclath + 0000000E 00068 _status + 0000000F 00069 _w + 00070 + 00000010 00071 dsply_val:2 ; array of values to display + 00072 ; 2 LEDs per byte + 00073 + 00000012 00074 current_led ; currently displayed LED + 00075 ; 0 <= current_led < num_led + 00076 + 00000013 00077 wait_count ; time delay counter variable + 00078 + 00000014 00079 temp ; temp storage during calculation + 00080 ENDC + 00081 + 00082 + 00083 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + 00084 + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 3 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00085 PAGE + 00086 ;;;;;;;;;; + 00087 ;;; Power-On Entry Point + 00088 ;;;;;;;;;; + 00089 +0000 00090 org 00H + 00091 +0000 2825 00092 goto main + 00093 + 00094 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + 00095 + 00096 ;;;;;;;;;; + 00097 ;;; Interrupt Handler + 00098 ;;;;;;;;;; + 00099 +0004 00100 org 04H + 00101 +0004 008F 00102 movwf _w ; save context +0005 0803 00103 movfw STATUS +0006 1303 00104 bcf STATUS,RP1 +0007 1283 00105 bcf STATUS,RP0 +0008 008E 00106 movwf _status +0009 0804 00107 movfw FSR +000A 008C 00108 movwf _fsr +000B 080A 00109 movfw PCLATH +000C 008D 00110 movwf _pclath +000D 018A 00111 clrf PCLATH + 00112 + 00113 ; Figure out who interrupted and service it + 00114 +000E 190B 00115 btfsc INTCON,T0IF ; did we get a TMR0 interrupt? +000F 2811 00116 goto svc_tmr0 ; yup +0010 281C 00117 goto restore_context ; nope + 00118 + 00119 ; TMR0 ISR +0011 00120 svc_tmr0: +0011 110B 00121 bcf INTCON,T0IF ; clear the interrupt condition +0012 3006 00122 movlw tmr0_count ; prime the counter +0013 0081 00123 movwf TMR0 +0014 018B 00124 clrf INTCON ; Enable *just* this interrupt +0015 168B 00125 bsf INTCON,T0IE ; to maintain timing accuracy +0016 178B 00126 bsf INTCON,GIE + 00127 + 00128 ; Update the wait timer if it is in use + 00129 ; Only do this on TMR0 interrupts so timing is predictable + 00130 +0017 0813 00131 movfw wait_count +0018 1D03 00132 btfss STATUS,Z ; non-zero count means 'in use' +0019 0393 00133 decf wait_count,F ; decrement current count + 00134 ; not in-use, fall through to next code + 00135 +001A 2040 00136 call display_led ; then display it +001B 281C 00137 goto restore_context ; goto here (instead of just falling + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 4 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00138 ; through) allows other ISRs + 00139 ; to later be added immediately + 00140 ; following + 00141 +001C 00142 restore_context: +001C 080D 00143 movfw _pclath ; restore entry context +001D 008A 00144 movwf PCLATH +001E 080C 00145 movfw _fsr +001F 0084 00146 movwf FSR +0020 080E 00147 movfw _status +0021 0083 00148 movwf STATUS +0022 0E8F 00149 swapf _w,F ; get W back w/o changing Z flag +0023 0E0F 00150 swapf _w,W + 00151 +0024 0009 00152 retfie ; all done + 00153 + 00154 ; End of interrupt handler + 00155 + 00156 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + 00157 + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 5 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00158 PAGE + 00159 ;;;;;;;;;; + 00160 ;;; Main program logic + 00161 ;;;;;;;;;; + 00162 +0025 00163 main: +0025 205F 00164 call init ; initialize the system +0026 00165 run: +0026 205B 00166 call incr_count +0027 3064 00167 movlw count_delay +0028 2073 00168 call wait ; slow down displayed count +0029 2826 00169 goto run + 00170 + 00171 ;;; End of main logic + 00172 + 00173 + 00174 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + 00175 + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 6 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00176 PAGE + 00177 ;;;;;;;;;; + 00178 ;;; Data & Tables + 00179 ;;;;;;;;;; + 00180 + 00181 ;;;;;;;;;; + 00182 ;;; Hex Digit-to-Segment lookup table + 00183 ;;;;;;;;;; + 00184 + 00185 +002A 0782 00186 hex_7seg addwf PCL,F +002B 343F 00187 DT 03fH ; 0 +002C 3406 00188 DT 006H ; 1 +002D 345B 00189 DT 05bH ; 2 +002E 344F 00190 DT 04fH ; 3 +002F 3466 00191 DT 066H ; 4 +0030 346D 00192 DT 06dH ; 5 +0031 347D 00193 DT 07dH ; 6 +0032 3407 00194 DT 007H ; 7 +0033 347F 00195 DT 07fH ; 8 +0034 3467 00196 DT 067H ; 9 +0035 3477 00197 DT 077H ; A +0036 347C 00198 DT 07cH ; B +0037 3458 00199 DT 058H ; C +0038 345E 00200 DT 05eH ; D +0039 3479 00201 DT 079H ; E +003A 3471 00202 DT 071H ; F + 00203 + 00204 + 00205 ;;;;;;;;;; + 00206 ;;; Table used to translate LED position to equivalent led_sel + 00207 ;;; bit pattern for that LED. It is assumed that any routine using + 00208 ;;; this table will properly preserve higher-order bits not needed for + 00209 ;;; LED selection. + 00210 ;;;;;;;;;; + 00211 +003B 00212 led_lookup: +003B 0782 00213 addwf PCL,F +003C 3401 00214 DT 01H ; LED0 == LSD +003D 3402 00215 DT 02H ; LED1 +003E 3404 00216 DT 04H ; LED2 +003F 3408 00217 DT 08H ; LED3 + 00218 + 00219 ;;; End of 'led_lookup' + 00220 + 00221 + 00222 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + 00223 + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 7 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00224 PAGE + 00225 ;;;;;;;;;; + 00226 ;;; Supporting Subroutines + 00227 ;;;;;;;;;; + 00228 + 00229 + 00230 ;;;;;;;;;; + 00231 ;;; Display LEDs, one per call, from MSD->LSD + 00232 ;;; This effectively multiplexes across all the LEDs + 00233 ;;; when called repeatedly. + 00234 ;;;;;;;;;; + 00235 +0040 00236 display_led: + 00237 ; clear last displayed digit + 00238 +0040 30F0 00239 movlw led_sel_mask ; clear out LED selection bits only +0041 0585 00240 andwf led_sel,F +0042 0186 00241 clrf seg_sel ; all segments off + 00242 + 00243 ; compute and set the segments to display for this digit + 00244 +0043 0812 00245 movfw current_led ; convert current_led into an +0044 0084 00246 movwf FSR ; offset from base of display storage +0045 1003 00247 bcf STATUS,C ; don't rotate C into calc below +0046 0C84 00248 rrf FSR,F ; /2 - two digits stored in each byte +0047 3010 00249 movlw dsply_val ; base of array containing display vals +0048 0784 00250 addwf FSR,F ; point to desired value +0049 0800 00251 movfw INDF ; and get contents +004A 0094 00252 movwf temp ; store temporarily +004B 1812 00253 btfsc current_led,0 ; even or odd nibble +004C 0E94 00254 swapf temp,F ; odd==hi nibble -> low nibble +004D 0814 00255 movfw temp ; get it +004E 390F 00256 andlw 0fH ; mask off high nibble +004F 202A 00257 call hex_7seg ; convert to equivalent seg pattern +0050 0086 00258 movwf seg_sel ; and turn 'em on + 00259 + 00260 ; select the corresponding LED + 00261 +0051 0812 00262 movfw current_led ; offset into lookup table +0052 203B 00263 call led_lookup +0053 0485 00264 iorwf led_sel,F ; turn on these LED selection bits + 00265 + 00266 ; determine next LED to display + 00267 +0054 0812 00268 movfw current_led ; get LED just displayed +0055 1D03 00269 btfss STATUS,Z ; was it the LSD? +0056 2859 00270 goto set_next ; nope +0057 3004 00271 movlw num_led ; yup, start again w/MSD +0058 0092 00272 movwf current_led +0059 00273 set_next: +0059 0392 00274 decf current_led,F ; pickup next digit to right +005A 0008 00275 return + 00276 + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 8 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00277 ; End of 'display_led' + 00278 + 00279 + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 9 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00280 PAGE + 00281 ;;;;;;;;;; + 00282 ;;; Increment current count by 1 + 00283 ;;;;;;;;;; + 00284 +005B 00285 incr_count: +005B 0F90 00286 incfsz dsply_val,F ; count up +005C 0008 00287 return +005D 0A91 00288 incf dsply_val+1,F +005E 0008 00289 return + 00290 + 00291 ;;; End of 'incr_count' + 00292 + 00293 + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 10 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00294 PAGE + 00295 ;;;;;;;;;; + 00296 ;;; Initialize hardware and software at startup as needed. + 00297 ;;; Returns with register bank 0 selected. + 00298 ;;;;;;;;;; + 00299 +005F 00300 init: +005F 018B 00301 clrf INTCON ; all interrupts off, flags cleared + 00302 + 00303 ; setup control registers + 00304 +0060 168B 00305 bsf INTCON,T0IE ; unmask TMR0 interrupts +0061 1683 00306 bsf STATUS,RP0 ; select register bank 1 +0062 0185 00307 clrf TRISA ; set PORTA to all outputs +0063 0186 00308 clrf TRISB ; set PORTB to all outputs +0064 0181 00309 clrf OPTION_REG ; TMR0 selected w/ internal clock + 00310 ; don't care about RBPU, INTEDG +0065 3001 00311 movlw tmr0_pre ; set TMR0 prescaler value +0066 0481 00312 iorwf OPTION_REG,F +0067 1283 00313 bcf STATUS,RP0 ; select register bank 0 + 00314 + 00315 ; setup program variables + 00316 +0068 0190 00317 clrf dsply_val ; start count at 0 +0069 0191 00318 clrf dsply_val+1 + 00319 +006A 3006 00320 movlw tmr0_count ; prime the counter +006B 0081 00321 movwf TMR0 + 00322 +006C 3003 00323 movlw num_led-1 ; start displaying with MSD +006D 0092 00324 movwf current_led + 00325 +006E 30F0 00326 movlw led_sel_mask ; clear out LED selection bits only +006F 0585 00327 andwf led_sel,F +0070 0186 00328 clrf seg_sel ; no segments to display yet + 00329 +0071 178B 00330 bsf INTCON,GIE ; enable unmasked interrupts +0072 0008 00331 return + 00332 + 00333 ;;; End of 'init' + 00334 + 00335 + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 11 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00336 PAGE + 00337 ;;;;;;;;;; + 00338 ;;; Kill time - Outter loop constant passed in W. + 00339 ;;;;;;;;;; + 00340 +0073 00341 wait: +0073 0093 00342 movwf wait_count ; this will be decremented in ISR +0074 00343 loop: +0074 0813 00344 movfw wait_count ; get current count +0075 1D03 00345 btfss STATUS,Z ; see if we counted all the way down +0076 2874 00346 goto loop ; not done, keep waiting +0077 0008 00347 return ; all done + 00348 + 00349 ;;; End of 'wait' + 00350 + 00351 + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 12 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00352 PAGE + 00353 ;;;;;;;;;; + 00354 ;;; EEPROM Contents + 00355 ;;;;;;;;;; + 00356 +2100 00357 org 2100h + 00358 +2100 0043 006F 0070 00359 DE "Copyright 2002, TundraWare Inc. All Rights Reserved." + 0079 0072 0069 + 0067 0068 0074 + 0020 0032 0030 + 0030 0032 002C + 0020 0054 0075 + 006E 0064 0072 + 0061 0057 0061 + 0072 0065 0020 + 0049 006E 0063 + 002E 0020 0020 + 0041 006C 006C + 0020 0052 0069 + 0067 0068 0074 + 0073 0020 0052 + 0065 0073 0065 + 0072 007 + 00360 END + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 13 + + +SYMBOL TABLE + LABEL VALUE + +C 00000000 +DC 00000001 +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 +NOT_PD 00000003 +NOT_RBPU 00000007 +NOT_TO 00000004 +OPTION_REG 00000081 +PCL 00000002 +PCLATH 0000000A +PORTA 00000005 +PORTB 00000006 +PS0 00000000 +PS1 00000001 +PS2 00000002 +PSA 00000003 +RBIE 00000003 +RBIF 00000000 +RD 00000000 +RP0 00000005 +RP1 00000006 +STATUS 00000003 +T0CS 00000005 +T0IE 00000005 +T0IF 00000002 +T0SE 00000004 +TMR0 00000001 +TRISA 00000085 +TRISB 00000086 +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 + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 14 + + +SYMBOL TABLE + LABEL VALUE + +_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 +count_delay 00000064 +current_led 00000012 +display_led 00000040 +dsply_val 00000010 +hex_7seg 0000002A +incr_count 0000005B +init 0000005F +led_lookup 0000003B +led_sel 00000005 +led_sel_mask 000000F0 +loop 00000074 +main 00000025 +num_led 00000004 +restore_context 0000001C +run 00000026 +seg_sel 00000006 +set_next 00000059 +svc_tmr0 00000011 +temp 00000014 +tmr0_count 00000006 +tmr0_pre 00000001 +tmr128 00000006 +tmr16 00000003 +tmr2 00000000 +tmr256 00000007 +tmr32 00000004 +tmr4 00000001 +tmr64 00000005 +tmr8 00000002 +wait 00000073 +wait_count 00000013 + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 15 + + +MEMORY USAGE MAP ('X' = Used, '-' = Unused) + + +0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX +0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXX-------- +2000 : XXXX---X-------- ---------------- ---------------- ---------------- +2100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXX----------- + +All other memory blocks unused. + +Program Memory Words Used: 117 +Program Memory Words Free: 907 + + +Errors : 0 +Warnings : 0 reported, 0 suppressed +Messages : 0 reported, 4 suppressed + + \ No newline at end of file diff --git a/leddrvr.xrf b/leddrvr.xrf new file mode 100644 index 0000000..43ed940 --- /dev/null +++ b/leddrvr.xrf @@ -0,0 +1,147 @@ +MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 1 + + MPASM Cross Reference File + +LABEL TYPE FILE NAME SOURCE FILE REFERENCES +----- ---- --------- ---------------------- + +C C LEDDRVR.ASM 247. + P16F84A.INC 76* +DC C P16F84A.INC 75* +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 LEDDRVR.ASM 107. 146. 246. 248. 250. + P16F84A.INC 53* +GIE C LEDDRVR.ASM 126. 330. + P16F84A.INC 80* +INCFILES M LEDDRVR.ASM 0* +INDF C LEDDRVR.ASM 251. + P16F84A.INC 49* +INTCON C LEDDRVR.ASM 115. 121. 124. 125. 126. 301. 305. 330. + P16F84A.INC 59* +INTE C P16F84A.INC 83* +INTEDG C P16F84A.INC 92* +INTF C P16F84A.INC 86* +IRP C P16F84A.INC 69* +NOT_PD C P16F84A.INC 73* +NOT_RBPU C P16F84A.INC 91* +NOT_TO C P16F84A.INC 72* +OPTION_REG C LEDDRVR.ASM 309. 312. + P16F84A.INC 61* +PCL C LEDDRVR.ASM 186. 213. + P16F84A.INC 51* +PCLATH C LEDDRVR.ASM 109. 111. 144. + P16F84A.INC 58* +PORTA C LEDDRVR.ASM 35. + P16F84A.INC 54* +PORTB C LEDDRVR.ASM 36. + 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* +RP0 C LEDDRVR.ASM 105. 306. 313. + P16F84A.INC 71* +RP1 C LEDDRVR.ASM 104. + P16F84A.INC 70* +STATUS C LEDDRVR.ASM 103. 104. 105. 132. 148. 247. 269. 306. 313. 345. + P16F84A.INC 52* +T0CS C P16F84A.INC 93* +T0IE C LEDDRVR.ASM 125. 305. + P16F84A.INC 82* + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 2 + + MPASM Cross Reference File + +LABEL TYPE FILE NAME SOURCE FILE REFERENCES +----- ---- --------- ---------------------- + +T0IF C LEDDRVR.ASM 115. 121. + P16F84A.INC 85* +T0SE C P16F84A.INC 94* +TMR0 C LEDDRVR.ASM 123. 321. + P16F84A.INC 50* +TRISA C LEDDRVR.ASM 307. + P16F84A.INC 62* +TRISB C LEDDRVR.ASM 308. + P16F84A.INC 63* +W C P16F84A.INC 44* +WR C P16F84A.INC 105* +WREN C P16F84A.INC 104* +WRERR C P16F84A.INC 103* +Z C LEDDRVR.ASM 132. 269. 345. + 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 LEDDRVR.ASM 8* + P16F84A.INC 34. +_fsr C LEDDRVR.ASM 66* 108. 145. +_pclath C LEDDRVR.ASM 67* 110. 143. +_status C LEDDRVR.ASM 68* 106. 147. +_w C LEDDRVR.ASM 69* 102. 149. 150. +count_delay C LEDDRVR.ASM 58* 167. +current_led C LEDDRVR.ASM 74* 245. 253. 262. 268. 272. 274. 324. +display_led A LEDDRVR.ASM 136. 236* +dsply_val C LEDDRVR.ASM 71* 249. 286. 288. 317. 318. +hex_7seg A LEDDRVR.ASM 186* 257. +incr_count A LEDDRVR.ASM 166. 285* +init A LEDDRVR.ASM 164. 300* +led_lookup A LEDDRVR.ASM 212* 263. +led_sel C LEDDRVR.ASM 35* 240. 264. 327. +led_sel_mask C LEDDRVR.ASM 34* 239. 326. +loop A LEDDRVR.ASM 343* 346. +main A LEDDRVR.ASM 92. 163* +num_led C LEDDRVR.ASM 33* 271. 323. +restore_context A LEDDRVR.ASM 117. 137. 142* +run A LEDDRVR.ASM 165* 169. +seg_sel C LEDDRVR.ASM 36* 241. 258. 328. +set_next A LEDDRVR.ASM 270. 273* +svc_tmr0 A LEDDRVR.ASM 116. 120* +temp C LEDDRVR.ASM 79* 252. 254. 255. +tmr0_count C LEDDRVR.ASM 52* 122. 320. +tmr0_pre C LEDDRVR.ASM 53* 311. + MPASM 03.00 Released LEDDRVR.ASM 3-25-2002 17:31:23 PAGE 3 + + MPASM Cross Reference File + +LABEL TYPE FILE NAME SOURCE FILE REFERENCES +----- ---- --------- ---------------------- + +tmr128 C LEDDRVR.ASM 25* +tmr16 C LEDDRVR.ASM 22* +tmr2 C LEDDRVR.ASM 19* +tmr256 C LEDDRVR.ASM 26* +tmr32 C LEDDRVR.ASM 23* +tmr4 C LEDDRVR.ASM 20* 53. +tmr64 C LEDDRVR.ASM 24* +tmr8 C LEDDRVR.ASM 21* +wait A LEDDRVR.ASM 168. 341* +wait_count C LEDDRVR.ASM 77* 131. 133. 342. 344. + + +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..e960cd0 --- /dev/null +++ b/readme.txt @@ -0,0 +1,289 @@ +leddrvr - Copyright (c) 2002 Tundraware Inc., All Rights Reserved + +$Id: readme.txt,v 1.4 2002/03/25 17:12:37 tundra Exp tundra $ + + +************************************************************************ + +PLEASE NOTE: Before using anything in this archive, you must read, and + agree to abide by, the licensing terms found in: + + leddrvr-license.txt + +************************************************************************ + + +FILE DESCRIPTIONS +================= + + +Makefile Unix-style makefile which runs under DJGPP and + should also work under MKS and Cygwin. + +README.txt This file. + +leddrvr-license.txt Licensing terms for using this software. + +leddrvr-sch.gif leddrvr schematic in GIF format. + +leddrvr-sch.png leddrvr schematic in png format. + +leddrvr-sch.ps leddrvr schematic in PostScript format. + +leddrvr-sch.sch leddrvr schematic in Eagle format. + +leddrvr.asm leddrvr software written in PIC assembler. + +leddrvr.hex The assembled leddrvr software. + +leddrvr.lst leddrvr listing file generated by assembler. + +leddrvr.xrf leddrvr cross-reference file generated by assmbler. + + + +WHAT IS 'leddrvr'? +================== + + +'leddrvr' is a simple 7-segment LED display driver system using PIC +technology. The idea is to use minimum parts count to drive up to 4, +7-segment LEDs. This is also a useful introduction to some of the PIC +microprocessor programming techniques insofar as 'leddrvr' exercises +many of the basic features of these chips including: + + - Programming & use of the TMR0 timer & prescaler + - Timer-based interrupt handling + - Asynchronous application/interrupt interaction. + - Display multiplexing + + +HOW DOES THE HARDWARE WORK? +=========================== + +Like many PIC-based projects, this system is realized with a minimum +parts count. Besides the usual clock and MCLR pull up circuitry, +'leddrvr' is realized by having PORTA connected to the individual LED +segments and PORTB connected to the LED selects (cathodes). Several +notes: + + - The convention used in both the hardware and software design is + that 'LED0' is the Least Significant Digit (LSD or rightmost) + and 'LED3' is the Most Significant Digit (MSD or leftmost). + + - The schematic and software assume a "common cathode" type + 7-segment display, whose individual segments are acceptably + bright at less than 25ma current. + + - R2-R9 should be selected so that the PIC is never required to + deliver more than its rated current (25ma) to an LED segment. + A typical value here is probably between 150-330 ohms. + + - Although not shown on the schematic, a given segment position + on each LED is wired to the corresponding position on the other + LEDs and then connected to the PIC. For example, all the 'a' + segments are connected to each other and RB0. In effect, this + means when a segment pattern is output by the PIC it is sent to + *all* the displays. However, this pattern only actually appears + on those displays selected via an 'on' bit on RA0-RA3. + + - RA0-RA3 are used to select which of the digits are to display + the segment pattern currently presented on RB0-RB7. This is how + the software is able to multiplex the display. Each time a TMR0 + overflow interrupt occurs (1ms intervals), the software + determines the digit to update, presents its current segment + pattern, and then selects that digit as 'on' via its + corresponding cathode transitor. Because this update takes + places very rapidly, all digits appear to be displayed + simultaneously when, in fact, only one is on at a time. + + + +HOW DOES THE SOFTWARE WORK? +=========================== + +The best way to understand the software is to read the code which +contains a fair number of explanatory comments. + +At a high-level, here's what's going on: + + - At startup, the chip jumps to memory location 0 which contains a + jump to the mainline code ('main:'). This is necessary because + the PIC chip expects to find an interrupt handler at location 4 + and we have to jump around that handler. + + - The first thing done is to call the 'init:' subroutine which + initializes the hardware, the timer, and various program + variables to run properly. + + - Then we sit in a loop running our 'application software'. In + this case, our 'application' does nothing more than increment at + 16-bit count stored 'dsply_val' array. It then calls the + 'wait:' subroutine to kill some time. This is done so that you + can actually watch the count on the display. Try removing the + call to 'wait:' and see what happens - the rightmost digits are + changing so fast you cannot distinguish the individual count. + + - 'init:' setup the prescaler and TMR0 so that the timer count + overflows every 1ms - i.e., A TMR0 interrupt is generated + 1000/sec. The Interrupt Service Routine (ISR) which services + these interrupts is found beginning at location 4. + + - Before the ISR can do anything useful, it must save the current + state or "context" of the system. This is then restored when + we exit the ISR so that we do not clobber any registers in + use by the main program that was interrupted. + + - The TMR0 ISR does two things: + + 1) It increments a wait count which is used by the 'wait:' + subroutine to kill time. You can set how long each call to + 'wait:' will be by changing the 'count_delay' constant. + + 2) It determines whose turn (which digit) it is to be + displayed and does so via 'display_led'. + + + - Notice that the main application and ISR are 'asynchronous' to + each other. That is, they never call each other directly or + wait for one another. They work independently in time from one + another. So, they have to have a way to communicate. They do + so by sharing the 'dsply_val' array and 'wait_count' variable. + + The 'led_display' routine assumes that the value it is expected + to display is stored (in binary) in the 'dsply_val' array, + starting with the Least Significant Digit and moving towards the + Most Significant Digit as it moves down the array. Any application + is free to update this array as it sees fit - in our example case, + we just count up in binary - and the Interrupt Service Routine + will see to it that the display is updated accordingly. + + Similarly, the 'wait:' subroutine primes the 'wait_count' + variable with the desired waiting time and then periodically + inspects it to see if it has decremented to 0. However, it is + logic in the Interrupt Service Routine that actually does the + decrementing countdown. + + +TIMING ISSUES +============= + + +There are several places where timing can be tricky, which, although +not a problem here, probably should be mentioned: + + - It is important that the 'wait:' subroutine be short enough so + that any change in 'wait_count' can be read before the next TMR0 + interrupt happens and the variable is updated again. If this is + not the case, 'wait:' may not detect 'wait_count' decrementing + to 0 and end up waiting longer than it should. In the worst + case, 'wait:' could be just long enough so that it ends up in + sync with the code in the ISR that modifies 'wait_count'. In + that case 'wait:' would *never* see the decrement to 0 and it + would thus end up becoming an infinite wait. So long as 'wait:' + runs in much less time than the TMR0 interrupt interval, AND it + is not being interrupted so frequently by other interrupt + sources so as to miss the TMR0 interrupt which updates the + count, this is not a problem. + + To avoid this problem entirely, the approach used here is to + prevent 'wait_count' count from rolling over from 0x00 to 0xff. + Even if 'wait:' misses one or more interrupts, it will eventually + detect 'wait_count' == 0 and end the timing loop. + + - Commonly, the TMR0 interrupt rate (in this case 1000 per second) + is not exactly the rate at which its service routine runs. This + is because interrupts are disabled during the ISR and only + enabled again *after* the interrupt has been serviced. This + means that the effective TMR0 interrupt service interval is + slightly *more* than 1ms. It ends up being 1ms + Time To Service + TMR0 Interrupt because the TMR0 timer is not running during the + ISR. + + It is possible to enable selected interrupts while an ISR is + running, but this makes things much more complex because you have + to do a context save *per interrupt*. This is hard to do on a + PIC because it is not a stack-based architecture and there are + very limited amounts of dynamic memory for storing such things. + So, it is highly preferred that interrupts stay off during an ISR + thereby guaranteeing that we only need to save a single context + at a time. + + Having said this, it is possible to selectively enable interrupts + while running an ISR is you are certain that: + + * You will *never* see another interrupt among those you are + enabling while you are still in the ISR. This guarantees + that you only need a single context save area. + + OR + + * You parse for the various kinds of interrupts coming in + and provide a separate context save area for each. + + In 'lddrvr' we *enable* the TMR0 interrupt during the ISR because + we know the ISR execution time (about 70us) is far less than the + TMR0 interrupt interval (1ms). We restart the TMR0 timer before + actually servicing the interrupt to keep the timer interval as + close to 1ms as possible. If we did not do this, the TMR0 + interrupt interval would end up being 1ms + ISR Computation Time. + + Try it - stub out the interrupt enabling code in the TMR0 ISR and + you'll see that the effective timer rate ends up being something + around 1.07ms. (You can measure this by connecting an + oscilloscope to any one of the 2N700 gates and watching the pulse + train there. Just remember to divide those timings by 4 since + you only see every 4th interrupt at a given transistor.) + + + + + +HOW COULD 'leddrvr' BE IMPROVED? +================================ + +The big problem with this design is that it uses up all but one of the +available I/O pins on the 16F84A PIC. This really limits how useful +'leddrvr' is in its current form (although it can be used to build +timers and stopwatches pretty much as-is). There are a number +of ways we could solve this problem with some hardware changes: + + + - Use a PIC with more I/O pins. + + - Use a decoder to select the LED cathode enable. With 4 LEDs + we only actually need 2 bits to select them uniquely, rather + the 4 we are currently using. + + - Use an 8-bit shift register to select the segments for display. + This can be done with only 2 I/O pins instead of the 8 we + currently use. + + - Use a dedicated LED driver system like the Maxim MAX7219 to + offload all this work from the PIC. This requires only 3 I/O + pins total because the MAX7219 uses a serial interface. + + +There are also some things that could be improved in the software: + + - There are probably some small optimizations possible to reduce + code size and improve speed slightly. + + - There are probably bugs in this code. If you find any, let me + know. Me email address is at the end of this file. + + +I'D LIKE TO THANK THE ACADEMY... +================================ + +Lots of nice people on Usenet answered my stupid questions as I've +been learning the PIC. Their help is very much appreciated. + +You should feel free to poke around the code, change things, and +generally experiment with what is there. It's the best way I know to +learn something new. If you have any other thoughts / fixes / +questions / improvements for 'leddrvr', please let +tundra@tundraware.com know. + +Happy Hacking! ... +