From 9a24ee10804ad9d00c904020f1ca863f83601cbc Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Tue, 31 Jan 2012 16:45:53 -0700 Subject: [PATCH] clean up cowbull, some docs --- doc/2012-02-TF4/assignments.py | 4 + doc/2012-02-TF4/layout.dxf | 5468 ++++++++++++++++++++++ doc/2012-02-TF4/style.svg | 1559 ++++++ packages/cowbull/cowbull.mk | 19 + packages/cowbull/service/cowbull/finish | 4 + packages/cowbull/service/cowbull/ip.txt | 1 + packages/cowbull/service/cowbull/log/run | 3 + packages/cowbull/service/cowbull/run | 7 + packages/cowbull/src/Makefile | 10 + packages/cowbull/src/cowcli.c | 47 +- packages/cowbull/src/cowd.c | 35 +- packages/cowbull/tokens.txt | 10 + packages/cowbull/www/moo.html | 91 + packages/mcp/src/puzzler.cgi.c | 5 - packages/rlyeh/service/rlyeh/ip.txt | 2 +- packages/rlyeh/service/rlyeh/run | 2 +- 16 files changed, 7234 insertions(+), 33 deletions(-) create mode 100644 doc/2012-02-TF4/layout.dxf create mode 100644 doc/2012-02-TF4/style.svg create mode 100644 packages/cowbull/cowbull.mk create mode 100755 packages/cowbull/service/cowbull/finish create mode 100644 packages/cowbull/service/cowbull/ip.txt create mode 100755 packages/cowbull/service/cowbull/log/run create mode 100755 packages/cowbull/service/cowbull/run create mode 100644 packages/cowbull/tokens.txt create mode 100644 packages/cowbull/www/moo.html diff --git a/doc/2012-02-TF4/assignments.py b/doc/2012-02-TF4/assignments.py index b7d1d43..08d4293 100755 --- a/doc/2012-02-TF4/assignments.py +++ b/doc/2012-02-TF4/assignments.py @@ -26,6 +26,10 @@ Course questions should be directed to the appropriate instructor: General questions about Tracer FIRE may be sent to Neale Pickett +Remember: the exercise network should be considered +hostile! Do not bring anything sensitive on your laptop, +and make sure you back everything up. + Looking forward to seeing you in Santa Fe next week, -- diff --git a/doc/2012-02-TF4/layout.dxf b/doc/2012-02-TF4/layout.dxf new file mode 100644 index 0000000..1d502ef --- /dev/null +++ b/doc/2012-02-TF4/layout.dxf @@ -0,0 +1,5468 @@ +999 +dxflib 2.0.4.8 + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1015 + 9 +$HANDSEED + 5 +FFFF + 9 +$DIMASZ + 40 +0.1 + 9 +$GRIDUNIT + 10 +1.0 + 20 +1.0 + 9 +$DIMADEC + 70 +2 + 9 +$DIMGAP + 40 +0.025 + 9 +$SPLINESEGS + 70 +8 + 9 +$AUPREC + 70 +2 + 9 +$LUNITS + 70 +5 + 9 +$DIMEXO + 40 +0.025 + 9 +$INSUNITS + 70 +2 + 9 +$DIMLUNIT + 70 +5 + 9 +$DIMTXT + 40 +0.1 + 9 +$GRIDMODE + 70 +1 + 9 +$LUPREC + 70 +2 + 9 +$PSVPSCALE + 40 +0.0063819011769857 + 9 +$DIMSTYLE + 2 +Standard + 9 +$PLIMMAX + 10 +0.7083333333333334 + 20 +0.9166666666666665 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PINSBASE + 10 +0.0426059739819105 + 20 +0.1967697623221493 + 30 +0.0 + 9 +$DIMEXE + 40 +0.05 + 9 +$DIMAUNIT + 70 +0 + 9 +$AUNITS + 70 +0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +100 +AcDbSymbolTable + 70 +1 + 0 +VPORT + 5 +30 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 +0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +286.3055555555554861 + 22 +148.5 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +297.0 + 41 +1.92798353909465 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 +0 + 72 +100 + 73 +1 + 74 +3 + 75 +1 + 76 +1 + 77 +0 + 78 +0 +281 +0 + 65 +1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 +0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +100 +AcDbSymbolTable + 70 +21 + 0 +LTYPE + 5 +14 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +15 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +16 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CONTINUOUS + 70 +0 + 3 +Solid line + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +31 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DOT + 70 +0 + 3 +Dot . . . . . . . . . . . . . . . . . . . . . . + 72 +65 + 73 +2 + 40 +6.3499999999999996 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +32 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DOT2 + 70 +0 + 3 +Dot (.5x) ..................................... + 72 +65 + 73 +2 + 40 +3.1749999999999998 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +33 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DOTX2 + 70 +0 + 3 +Dot (2x) . . . . . . . . . . . . . + 72 +65 + 73 +2 + 40 +12.6999999999999993 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +34 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHED + 70 +0 + 3 +Dashed __ __ __ __ __ __ __ __ __ __ __ __ __ _ + 72 +65 + 73 +2 + 40 +19.0500000000000007 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +35 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHED2 + 70 +0 + 3 +Dashed (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + 72 +65 + 73 +2 + 40 +9.5250000000000004 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +36 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHEDX2 + 70 +0 + 3 +Dashed (2x) ____ ____ ____ ____ ____ ___ + 72 +65 + 73 +2 + 40 +38.1000000000000014 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +37 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHDOT + 70 +0 + 3 +Dash dot __ . __ . __ . __ . __ . __ . __ . __ + 72 +65 + 73 +4 + 40 +25.3999999999999986 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +38 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHDOT2 + 70 +0 + 3 +Dash dot (.5x) _._._._._._._._._._._._._._._. + 72 +65 + 73 +4 + 40 +12.6999999999999993 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +39 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DASHDOTX2 + 70 +0 + 3 +Dash dot (2x) ____ . ____ . ____ . ___ + 72 +65 + 73 +4 + 40 +50.7999999999999972 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +3A +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DIVIDE + 70 +0 + 3 +Divide ____ . . ____ . . ____ . . ____ . . ____ + 72 +65 + 73 +6 + 40 +31.75 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +3B +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DIVIDE2 + 70 +0 + 3 +Divide (.5x) __..__..__..__..__..__..__..__.._ + 72 +65 + 73 +6 + 40 +15.875 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +3C +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +DIVIDEX2 + 70 +0 + 3 +Divide (2x) ________ . . ________ . . _ + 72 +65 + 73 +6 + 40 +63.5 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +3D +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTER + 70 +0 + 3 +Center ____ _ ____ _ ____ _ ____ _ ____ _ ____ + 72 +65 + 73 +4 + 40 +50.7999999999999972 + 49 +31.75 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +6.3499999999999996 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +3E +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTER2 + 70 +0 + 3 +Center (.5x) ___ _ ___ _ ___ _ ___ _ ___ _ ___ + 72 +65 + 73 +4 + 40 +28.5749999999999993 + 49 +19.0500000000000007 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +3.1749999999999998 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +3F +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +CENTERX2 + 70 +0 + 3 +Center (2x) ________ __ ________ __ _____ + 72 +65 + 73 +4 + 40 +101.5999999999999943 + 49 +63.5 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +12.6999999999999993 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +LTYPE + 5 +40 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BORDER + 70 +0 + 3 +Border __ __ . __ __ . __ __ . __ __ . __ __ . + 72 +65 + 73 +6 + 40 +44.4500000000000028 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +12.6999999999999993 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-6.3499999999999996 + 74 +0 + 0 +LTYPE + 5 +41 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BORDER2 + 70 +0 + 3 +Border (.5x) __.__.__.__.__.__.__.__.__.__.__. + 72 +65 + 73 +6 + 40 +22.2250000000000014 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +6.3499999999999996 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-3.1749999999999998 + 74 +0 + 0 +LTYPE + 5 +42 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +BORDERX2 + 70 +0 + 3 +Border (2x) ____ ____ . ____ ____ . ___ + 72 +65 + 73 +6 + 40 +88.9000000000000057 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +25.3999999999999986 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 49 +0.0 + 74 +0 + 49 +-12.6999999999999993 + 74 +0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +100 +AcDbSymbolTable + 70 +3 + 0 +LAYER + 5 +10 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 +0 + 62 +7 + 6 +CONTINUOUS +370 +0 +390 +F + 0 +LAYER + 5 +43 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Tables + 70 +0 + 62 +6 + 6 +CONTINUOUS +370 +0 +390 +F + 0 +LAYER + 5 +44 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Network + 70 +0 + 62 +3 + 6 +CONTINUOUS +370 +-3 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +100 +AcDbSymbolTable + 70 +1 + 0 +STYLE + 5 +11 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 +0 + 40 +0.0 + 41 +0.75 + 50 +0.0 + 71 +0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +100 +AcDbSymbolTable + 70 +1 + 0 +APPID + 5 +12 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +100 +AcDbSymbolTable + 70 +1 +100 +AcDbDimStyleTable + 71 +0 + 0 +DIMSTYLE +105 +27 +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 41 +0.1 + 42 +0.025 + 43 +3.75 + 44 +0.05 + 70 +0 + 73 +0 + 74 +0 + 77 +1 + 78 +8 +140 +0.1 +141 +2.5 +143 +0.03937007874016 +147 +0.025 +171 +3 +172 +1 +271 +2 +272 +2 +274 +3 +278 +44 +283 +0 +284 +8 +340 +11 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +100 +AcDbSymbolTable + 70 +1 + 0 +BLOCK_RECORD + 5 +1F +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 0 +BLOCK_RECORD + 5 +1B +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 0 +BLOCK_RECORD + 5 +23 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space0 +340 +26 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1C +100 +AcDbEntity + 67 +1 + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1D +100 +AcDbEntity + 67 +1 + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +24 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space0 + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space0 + 1 + + 0 +ENDBLK + 5 +25 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LINE + 5 +45 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +11.3333333333333339 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +46 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +19.0 + 20 +0.0 + 30 +0.0 + 11 +39.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +47 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +39.0 + 20 +0.0 + 30 +0.0 + 11 +39.0 + 21 +2.8333333333333335 + 31 +0.0 + 0 +LINE + 5 +48 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +39.0 + 20 +2.8333333333333335 + 30 +0.0 + 11 +42.0 + 21 +2.8333333333333335 + 31 +0.0 + 0 +LINE + 5 +49 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +42.0 + 20 +2.8333333333333335 + 30 +0.0 + 11 +42.0 + 21 +0.0000033333333334 + 31 +0.0 + 0 +LINE + 5 +4A +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +42.0 + 20 +0.0000033333333334 + 30 +0.0 + 11 +68.1666666666666714 + 21 +0.0000033333333334 + 31 +0.0 + 0 +LINE + 5 +4B +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +68.1666666666666714 + 20 +0.0000033333333334 + 30 +0.0 + 11 +80.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +4C +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +68.1666666666666714 + 20 +0.0000033333333334 + 30 +0.0 + 11 +79.9911321448893489 + 21 +4.3037568035146645 + 31 +0.0 + 0 +LINE + 5 +4D +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +4.3037568035146645 + 30 +0.0 + 11 +79.9911321448893489 + 21 +19.1370901368479984 + 31 +0.0 + 0 +LINE + 5 +4E +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +19.1370901368479984 + 30 +0.0 + 11 +79.9911321448893489 + 21 +32.3037568035146663 + 31 +0.0 + 0 +LINE + 5 +4F +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +19.1370901368479984 + 30 +0.0 + 11 +71.1577988115560203 + 21 +32.3037568035146663 + 31 +0.0 + 0 +LINE + 5 +50 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +71.1577988115560203 + 20 +32.3037568035146663 + 30 +0.0 + 11 +71.1577988115560203 + 21 +43.9704234701813306 + 31 +0.0 + 0 +LINE + 5 +51 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +71.1577988115560203 + 20 +43.9704234701813306 + 30 +0.0 + 11 +79.9911321448893489 + 21 +57.1370901368479949 + 31 +0.0 + 0 +LINE + 5 +52 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +57.1370901368479949 + 30 +0.0 + 11 +79.9911321448893489 + 21 +19.1370901368479984 + 31 +0.0 + 0 +LINE + 5 +53 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +57.1370901368479949 + 30 +0.0 + 11 +79.9911321448893489 + 21 +77.7204234701813306 + 31 +0.0 + 0 +LINE + 5 +54 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +77.7204234701813306 + 30 +0.0 + 11 +79.9911321448893489 + 21 +81.9704234701813306 + 31 +0.0 + 0 +LINE + 5 +55 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.9911321448893489 + 20 +81.9704234701813306 + 30 +0.0 + 11 +68.1577991448893528 + 21 +81.9704234701813306 + 31 +0.0 + 0 +LINE + 5 +56 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +68.1577991448893528 + 20 +81.9704234701813306 + 30 +0.0 + 11 +79.9911321448893489 + 21 +77.7204234701813306 + 31 +0.0 + 0 +LINE + 5 +57 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +68.1577991448893528 + 20 +81.9704234701813306 + 30 +0.0 + 11 +42.4911324782226814 + 21 +81.9704234701813306 + 31 +0.0 + 0 +LINE + 5 +58 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +42.4911324782226814 + 20 +81.9704234701813306 + 30 +0.0 + 11 +42.4911324782226814 + 21 +79.137090136848002 + 31 +0.0 + 0 +LINE + 5 +59 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +42.4911324782226814 + 20 +79.137090136848002 + 30 +0.0 + 11 +39.4911324782226814 + 21 +79.137090136848002 + 31 +0.0 + 0 +LINE + 5 +5A +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +39.4911324782226814 + 20 +79.137090136848002 + 30 +0.0 + 11 +39.4911324782226814 + 21 +81.9704234701813306 + 31 +0.0 + 0 +LINE + 5 +5B +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +39.4911324782226814 + 20 +81.9704234701813306 + 30 +0.0 + 11 +7.7411324782226814 + 21 +81.9704234701813306 + 31 +0.0 + 0 +LINE + 5 +5C +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +7.7411324782226814 + 20 +81.9704234701813306 + 30 +0.0 + 11 +0.0 + 21 +82.0 + 31 +0.0 + 0 +LINE + 5 +5D +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +82.0 + 30 +0.0 + 11 +0.0 + 21 +76.9166666666666714 + 31 +0.0 + 0 +LINE + 5 +5E +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +65.5833333333333428 + 30 +0.0 + 11 +0.0 + 21 +41.5000000000000142 + 31 +0.0 + 0 +LINE + 5 +5F +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +41.5000000000000142 + 30 +0.0 + 11 +8.5833333333333339 + 21 +41.5000000000000142 + 31 +0.0 + 0 +LINE + 5 +60 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +0.0 + 21 +34.1666666666666643 + 31 +0.0 + 0 +LINE + 5 +61 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +0.0 + 20 +34.1666666666666643 + 30 +0.0 + 11 +8.5833333333333339 + 21 +34.1666666666666643 + 31 +0.0 + 0 +LINE + 5 +62 +100 +AcDbEntity +100 +AcDbLine + 8 +0 + 62 +256 +370 +-1 + 6 +ByLayer + 10 +8.5833333333333339 + 20 +34.1666666666666643 + 30 +0.0 + 11 +8.5833333333333339 + 21 +41.5000000000000142 + 31 +0.0 + 0 +MTEXT + 5 +63 +100 +AcDbEntity +100 +AcDbMText + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +92.25 + 20 +28.0 + 30 +0.0 + 40 +1.0 + 41 +100.0 + 71 +1 + 72 +2 + 1 +Network + 7 +normallatin1 + 50 +0.0 + 73 +1 + 44 +1.0 + 0 +LINE + 5 +64 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +8.5833333333333339 + 20 +38.0175444241316427 + 30 +0.0 + 11 +71.1577988115560203 + 21 +38.0175444241316427 + 31 +0.0 + 0 +LINE + 5 +65 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +1.2216452282157677 + 20 +22.8040442600276627 + 30 +0.0 + 11 +2.239682918395574 + 21 +22.8040442600276627 + 31 +0.0 + 0 +LINE + 5 +66 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +2.239682918395574 + 20 +22.8040442600276627 + 30 +0.0 + 11 +2.239682918395574 + 21 +9.7731618257261417 + 31 +0.0 + 0 +LINE + 5 +67 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +2.239682918395574 + 20 +9.7731618257261417 + 30 +0.0 + 11 +1.2216452282157677 + 21 +9.7731618257261417 + 31 +0.0 + 0 +LINE + 5 +68 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +1.2216452282157677 + 20 +9.7731618257261417 + 30 +0.0 + 11 +1.2216452282157677 + 21 +22.8040442600276627 + 31 +0.0 + 0 +LINE + 5 +69 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +33.5028970401106463 + 20 +45.4999999999999929 + 30 +0.0 + 11 +41.5028970401106463 + 21 +45.4999999999999929 + 31 +0.0 + 0 +LINE + 5 +6A +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +41.5028970401106463 + 20 +47.9999999999999929 + 30 +0.0 + 11 +33.5028970401106463 + 21 +47.9999999999999929 + 31 +0.0 + 0 +LINE + 5 +6B +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +33.5028970401106463 + 20 +47.9999999999999929 + 30 +0.0 + 11 +33.5028970401106463 + 21 +45.4999999999999929 + 31 +0.0 + 0 +LINE + 5 +6C +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +31.0028970401106463 + 20 +39.9999999999999929 + 30 +0.0 + 11 +33.5028970401106463 + 21 +39.9999999999999929 + 31 +0.0 + 0 +LINE + 5 +6D +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +33.5028970401106463 + 20 +39.9999999999999929 + 30 +0.0 + 11 +33.5028970401106463 + 21 +47.9999999999999929 + 31 +0.0 + 0 +LINE + 5 +6E +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +33.5028970401106463 + 20 +47.9999999999999929 + 30 +0.0 + 11 +31.0028970401106463 + 21 +47.9999999999999929 + 31 +0.0 + 0 +LINE + 5 +6F +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +31.0028970401106463 + 20 +47.9999999999999929 + 30 +0.0 + 11 +31.0028970401106463 + 21 +39.9999999999999929 + 31 +0.0 + 0 +LINE + 5 +70 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +41.5028970401106463 + 20 +45.4999999999999929 + 30 +0.0 + 11 +41.5028970401106463 + 21 +47.9999999999999929 + 31 +0.0 + 0 +LINE + 5 +71 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +49.6341328907330919 + 20 +45.5 + 30 +0.0 + 11 +41.6341328907330919 + 21 +45.4999999999999929 + 31 +0.0 + 0 +LINE + 5 +72 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +41.6341328907330919 + 20 +47.9999999999999929 + 30 +0.0 + 11 +49.6341328907330919 + 21 +47.9999999999999076 + 31 +0.0 + 0 +LINE + 5 +73 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +49.6341328907330919 + 20 +47.9999999999999076 + 30 +0.0 + 11 +49.6341328907330919 + 21 +45.5 + 31 +0.0 + 0 +LINE + 5 +74 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +52.1341328907330919 + 20 +39.9999999999999929 + 30 +0.0 + 11 +49.6341328907330919 + 21 +39.9999999999999929 + 31 +0.0 + 0 +LINE + 5 +75 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +49.6341328907330919 + 20 +39.9999999999999929 + 30 +0.0 + 11 +49.6341328907330919 + 21 +47.9999999999999076 + 31 +0.0 + 0 +LINE + 5 +76 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +49.6341328907330919 + 20 +47.9999999999999076 + 30 +0.0 + 11 +52.1341328907330919 + 21 +47.9999999999999929 + 31 +0.0 + 0 +LINE + 5 +77 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +52.1341328907330919 + 20 +47.9999999999999929 + 30 +0.0 + 11 +52.1341328907330919 + 21 +39.9999999999999929 + 31 +0.0 + 0 +LINE + 5 +78 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +41.6341328907330919 + 20 +45.4999999999999929 + 30 +0.0 + 11 +41.6341328907330919 + 21 +47.9999999999999929 + 31 +0.0 + 0 +LINE + 5 +79 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +2.0849411894882439 + 20 +59.6814415491009882 + 30 +0.0 + 11 +3.1274117842323661 + 21 +59.6814415491009882 + 31 +0.0 + 0 +LINE + 5 +7A +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +3.1274117842323661 + 20 +59.6814415491009882 + 30 +0.0 + 11 +3.1274117842323661 + 21 +48.344573831258657 + 31 +0.0 + 0 +LINE + 5 +7B +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +3.1274117842323661 + 20 +48.344573831258657 + 30 +0.0 + 11 +2.0849411894882439 + 21 +48.344573831258657 + 31 +0.0 + 0 +LINE + 5 +7C +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +2.0849411894882439 + 20 +48.344573831258657 + 30 +0.0 + 11 +2.0849411894882439 + 21 +59.6814415491009882 + 31 +0.0 + 0 +LINE + 5 +7D +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +10.2943971230982054 + 20 +54.2084709266943463 + 30 +0.0 + 11 +12.5096471369294644 + 21 +54.2084709266943463 + 31 +0.0 + 0 +LINE + 5 +7E +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +12.5096471369294644 + 20 +54.2084709266943463 + 30 +0.0 + 11 +12.5096471369294644 + 21 +51.8629120885200692 + 31 +0.0 + 0 +LINE + 5 +7F +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +12.5096471369294644 + 20 +51.8629120885200692 + 30 +0.0 + 11 +10.2943971230982054 + 21 +51.8629120885200692 + 31 +0.0 + 0 +LINE + 5 +80 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +10.2943971230982054 + 20 +51.8629120885200692 + 30 +0.0 + 11 +10.2943971230982054 + 21 +54.2084709266943463 + 31 +0.0 + 0 +LINE + 5 +81 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +7.948838284923931 + 20 +16.9401471645919841 + 30 +0.0 + 11 +10.2943971230982054 + 21 +16.9401471645919841 + 31 +0.0 + 0 +LINE + 5 +82 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +10.2943971230982054 + 20 +16.9401471645919841 + 30 +0.0 + 11 +10.2943971230982054 + 21 +14.5945883264177088 + 31 +0.0 + 0 +LINE + 5 +83 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +10.2943971230982054 + 20 +14.5945883264177088 + 30 +0.0 + 11 +7.948838284923931 + 21 +14.5945883264177088 + 31 +0.0 + 0 +LINE + 5 +84 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +7.948838284923931 + 20 +14.5945883264177088 + 30 +0.0 + 11 +7.948838284923931 + 21 +16.9401471645919841 + 31 +0.0 + 0 +CIRCLE + 5 +85 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +38.3968291839557594 + 20 +10.9776420746888093 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +86 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +22.7190487551867406 + 20 +10.7740345366528434 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +87 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +63.8477714384509198 + 20 +23.1940943568464917 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +88 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +46.9483457814661307 + 20 +23.1940943568464846 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +89 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +30.8633502766251908 + 20 +23.1940943568464739 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +8A +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +54.0746096127247711 + 20 +10.6608906915629422 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +8B +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +70.7704277316736068 + 20 +11.0590850899031814 + 30 +0.0 + 40 +4.0 + 0 +LINE + 5 +8C +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +49.6341328907330848 + 20 +32.5549857814661436 + 30 +0.0 + 11 +41.6341328907330919 + 21 +32.5549857814661436 + 31 +0.0 + 0 +LINE + 5 +8D +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +41.6341328907330919 + 20 +30.0549857814661472 + 30 +0.0 + 11 +49.634132890733099 + 21 +30.0549857814661543 + 31 +0.0 + 0 +LINE + 5 +8E +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +49.634132890733099 + 20 +30.0549857814661543 + 30 +0.0 + 11 +49.6341328907330848 + 21 +32.5549857814661436 + 31 +0.0 + 0 +LINE + 5 +8F +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +41.6341328907330919 + 20 +32.5549857814661436 + 30 +0.0 + 11 +41.6341328907330919 + 21 +30.0549857814661472 + 31 +0.0 + 0 +LINE + 5 +90 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +33.5028970401106463 + 20 +32.5549857814661436 + 30 +0.0 + 11 +41.5028970401106463 + 21 +32.5549857814661436 + 31 +0.0 + 0 +LINE + 5 +91 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +41.5028970401106463 + 20 +30.0549857814661472 + 30 +0.0 + 11 +33.5028970401106463 + 21 +30.0549857814662325 + 31 +0.0 + 0 +LINE + 5 +92 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +33.5028970401106463 + 20 +30.0549857814662325 + 30 +0.0 + 11 +33.5028970401106463 + 21 +32.5549857814661436 + 31 +0.0 + 0 +LINE + 5 +93 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +31.0028970401106463 + 20 +38.0549857814661436 + 30 +0.0 + 11 +33.5028970401106463 + 21 +38.0549857814661436 + 31 +0.0 + 0 +LINE + 5 +94 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +33.5028970401106463 + 20 +38.0549857814661436 + 30 +0.0 + 11 +33.5028970401106463 + 21 +30.0549857814662325 + 31 +0.0 + 0 +LINE + 5 +95 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +33.5028970401106463 + 20 +30.0549857814662325 + 30 +0.0 + 11 +31.0028970401106463 + 21 +30.0549857814661472 + 31 +0.0 + 0 +LINE + 5 +96 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +31.0028970401106463 + 20 +30.0549857814661472 + 30 +0.0 + 11 +31.0028970401106463 + 21 +38.0549857814661436 + 31 +0.0 + 0 +LINE + 5 +97 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +41.5028970401106463 + 20 +32.5549857814661436 + 30 +0.0 + 11 +41.5028970401106463 + 21 +30.0549857814661472 + 31 +0.0 + 0 +CIRCLE + 5 +98 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +19.0482646749654201 + 20 +60.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +99 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +11.0482646749654201 + 20 +74.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +9A +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +35.0482646749654236 + 20 +60.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +9B +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +51.0482646749654236 + 20 +60.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +9C +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +43.0482646749654236 + 20 +74.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +9D +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +27.0482646749654201 + 20 +74.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +9E +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +59.0482646749654236 + 20 +74.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +9F +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +67.0482646749654236 + 20 +60.0 + 30 +0.0 + 40 +4.0 + 0 +CIRCLE + 5 +A0 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +12.7504236929460717 + 20 +27.3639767358229626 + 30 +0.0 + 40 +4.0 + 0 +LINE + 5 +A1 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +77.7943681327801073 + 20 +62.0221913139695857 + 30 +0.0 + 11 +79.7943681327801073 + 21 +62.0221913139695857 + 31 +0.0 + 0 +LINE + 5 +A2 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.7943681327801073 + 20 +62.0221913139695857 + 30 +0.0 + 11 +79.7943681327801073 + 21 +60.0221913139695857 + 31 +0.0 + 0 +LINE + 5 +A3 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +79.7943681327801073 + 20 +60.0221913139695857 + 30 +0.0 + 11 +77.7943681327801073 + 21 +60.0221913139695857 + 31 +0.0 + 0 +LINE + 5 +A4 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +77.7943681327801073 + 20 +60.0221913139695857 + 30 +0.0 + 11 +77.7943681327801073 + 21 +62.0221913139695857 + 31 +0.0 + 0 +LINE + 5 +A5 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +77.6225737206085853 + 20 +70.0221913139695857 + 30 +0.0 + 11 +77.6225737206085853 + 21 +62.0221913139695857 + 31 +0.0 + 0 +LINE + 5 +A6 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +77.6225737206085853 + 20 +62.0221913139695857 + 30 +0.0 + 11 +75.1225737206085853 + 21 +62.0221913139695857 + 31 +0.0 + 0 +LINE + 5 +A7 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +75.1225737206085853 + 20 +62.0221913139695857 + 30 +0.0 + 11 +75.1225737206085853 + 21 +70.0221913139695857 + 31 +0.0 + 0 +LINE + 5 +A8 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +75.1225737206085853 + 20 +70.0221913139695857 + 30 +0.0 + 11 +77.6225737206085853 + 21 +70.0221913139695857 + 31 +0.0 + 0 +CIRCLE + 5 +A9 +100 +AcDbEntity +100 +AcDbCircle + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +61.5241323374827047 + 20 +46.0 + 30 +0.0 + 40 +4.0 + 0 +LINE + 5 +AA +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +68.9822338865836997 + 20 +44.8262355739972378 + 30 +0.0 + 11 +70.0002715767635095 + 21 +44.8262355739972378 + 31 +0.0 + 0 +LINE + 5 +AB +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +70.0002715767635095 + 20 +44.8262355739972378 + 30 +0.0 + 11 +70.0002715767635095 + 21 +31.7953531396957203 + 31 +0.0 + 0 +LINE + 5 +AC +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +70.0002715767635095 + 20 +31.7953531396957203 + 30 +0.0 + 11 +68.9822338865836997 + 21 +31.7953531396957203 + 31 +0.0 + 0 +LINE + 5 +AD +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +68.9822338865836997 + 20 +31.7953531396957203 + 30 +0.0 + 11 +68.9822338865836997 + 21 +44.8262355739972378 + 31 +0.0 + 0 +LINE + 5 +AE +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +62.0270003872752582 + 20 +35.834926694329198 + 30 +0.0 + 11 +64.3725592254495353 + 21 +35.834926694329198 + 31 +0.0 + 0 +LINE + 5 +AF +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +64.3725592254495353 + 20 +35.834926694329198 + 30 +0.0 + 11 +64.3725592254495353 + 21 +37.9198678838174388 + 31 +0.0 + 0 +LINE + 5 +B0 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +64.3725592254495353 + 20 +37.9198678838174388 + 30 +0.0 + 11 +62.0270003872752582 + 21 +37.9198678838174388 + 31 +0.0 + 0 +LINE + 5 +B1 +100 +AcDbEntity +100 +AcDbLine + 8 +Tables + 62 +256 +370 +-1 + 6 +ByLayer + 10 +62.0270003872752582 + 20 +37.9198678838174388 + 30 +0.0 + 11 +62.0270003872752582 + 21 +35.834926694329198 + 31 +0.0 + 0 +LINE + 5 +B2 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +4 +370 +-1 + 6 +ByLayer + 10 +61.636073914246218 + 20 +45.8687061687413689 + 30 +0.0 + 11 +63.1997798063624003 + 21 +36.7470884647303038 + 31 +0.0 + 0 +LINE + 5 +B3 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +4 +370 +-1 + 6 +ByLayer + 10 +19.0250883540802285 + 20 +60.0723680221300356 + 30 +0.0 + 11 +11.4671765421853422 + 21 +52.775073858921175 + 31 +0.0 + 0 +LINE + 5 +B4 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +4 +370 +-1 + 6 +ByLayer + 10 +12.7702647856154954 + 20 +27.1042354633471732 + 30 +0.0 + 11 +9.1216177040110686 + 21 +15.3764412724757999 + 31 +0.0 + 0 +LINE + 5 +B5 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +30.8633502766251908 + 20 +23.1940943568464739 + 30 +0.0 + 11 +38.3968291839557594 + 21 +10.9776420746888093 + 31 +0.0 + 0 +LINE + 5 +B6 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +38.3968291839557594 + 20 +10.9776420746888093 + 30 +0.0 + 11 +22.7190487551867406 + 21 +10.7740345366528434 + 31 +0.0 + 0 +LINE + 5 +B7 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +30.8633502766251908 + 20 +23.1940943568464739 + 30 +0.0 + 11 +12.7504236929460717 + 21 +27.3639767358229626 + 31 +0.0 + 0 +LINE + 5 +B8 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +46.9483457814661307 + 20 +23.1940943568464846 + 30 +0.0 + 11 +63.8477714384509198 + 21 +23.1940943568464917 + 31 +0.0 + 0 +LINE + 5 +B9 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +46.9483457814661307 + 20 +23.1940943568464846 + 30 +0.0 + 11 +54.0746096127247711 + 21 +10.6608906915629422 + 31 +0.0 + 0 +LINE + 5 +BA +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +54.0746096127247711 + 20 +10.6608906915629422 + 30 +0.0 + 11 +70.7704277316736068 + 21 +11.0590850899031814 + 31 +0.0 + 0 +LINE + 5 +BB +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +51.0482646749654236 + 20 +60.0 + 30 +0.0 + 11 +67.0482646749654236 + 21 +60.0 + 31 +0.0 + 0 +LINE + 5 +BC +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +67.0482646749654236 + 20 +60.0 + 30 +0.0 + 11 +61.5241323374827047 + 21 +46.0 + 31 +0.0 + 0 +LINE + 5 +BD +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +51.0482646749654236 + 20 +60.0 + 30 +0.0 + 11 +43.0482646749654236 + 21 +74.0 + 31 +0.0 + 0 +LINE + 5 +BE +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +43.0482646749654236 + 20 +74.0 + 30 +0.0 + 11 +59.0482646749654236 + 21 +74.0 + 31 +0.0 + 0 +LINE + 5 +BF +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +35.0482646749654236 + 20 +60.0 + 30 +0.0 + 11 +27.0482646749654201 + 21 +74.0 + 31 +0.0 + 0 +LINE + 5 +C0 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +27.0482646749654201 + 20 +74.0 + 30 +0.0 + 11 +11.0482646749654201 + 21 +74.0 + 31 +0.0 + 0 +LINE + 5 +C1 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +35.0482646749654236 + 20 +60.0 + 30 +0.0 + 11 +19.0482646749654201 + 21 +60.0 + 31 +0.0 + 0 +LINE + 5 +C2 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +35.0482646749654236 + 20 +60.0 + 30 +0.0 + 11 +35.0530737482711032 + 21 +46.9111767634854928 + 31 +0.0 + 0 +LINE + 5 +C3 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +30.8633502766251908 + 20 +23.1940943568464739 + 30 +0.0 + 11 +32.1862796127247677 + 21 +31.6650443153527057 + 31 +0.0 + 0 +LINE + 5 +C4 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +46.9483457814661307 + 20 +23.1940943568464846 + 30 +0.0 + 11 +46.9111767634854928 + 21 +31.2741178423236619 + 31 +0.0 + 0 +LINE + 5 +C5 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +67.0482646749654236 + 20 +60.0 + 30 +0.0 + 11 +78.8368387275242242 + 21 +60.9845297925311414 + 31 +0.0 + 0 +LINE + 5 +C6 +100 +AcDbEntity +100 +AcDbLine + 8 +Network + 62 +256 +370 +-1 + 6 +ByLayer + 10 +51.0482646749654236 + 20 +60.0 + 30 +0.0 + 11 +51.0810591424619815 + 21 +46.6505591147994636 + 31 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +100 +AcDbDictionary +280 +0 +281 +1 + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +AcDbVariableDictionary +350 +C7 + 0 +DICTIONARY + 5 +D +100 +AcDbDictionary +280 +0 +281 +1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +100 +AcDbDictionary +281 +1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +ACDBPLACEHOLDER + 5 +F + 0 +DICTIONARY + 5 +17 +100 +AcDbDictionary +280 +0 +281 +1 + 3 +Standard +350 +18 + 0 +MLINESTYLE + 5 +18 +100 +AcDbMlineStyle + 2 +STANDARD + 70 +0 + 3 + + 62 +256 + 51 +90.0 + 52 +90.0 + 71 +2 + 49 +0.5 + 62 +256 + 6 +BYLAYER + 49 +-0.5 + 62 +256 + 6 +BYLAYER + 0 +DICTIONARY + 5 +19 +100 +AcDbDictionary +280 +0 +281 +1 + 0 +DICTIONARY + 5 +1A +100 +AcDbDictionary +281 +1 + 3 +Layout1 +350 +1E + 3 +Layout2 +350 +26 + 3 +Model +350 +22 + 0 +LAYOUT + 5 +1E +100 +AcDbPlotSettings + 1 + + 2 +C:\Program Files\AutoCAD 2002\plotters\DWF ePlot (optimized for plotting).pc3 + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +688 + 72 +0 + 73 +0 + 74 +5 + 7 + + 75 +16 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Layout1 + 70 +1 + 71 +1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +100000000000000000000.0 + 24 +100000000000000000000.0 + 34 +100000000000000000000.0 + 15 +-100000000000000000000.0 + 25 +-100000000000000000000.0 + 35 +-100000000000000000000.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +0 +330 +1B + 0 +LAYOUT + 5 +22 +100 +AcDbPlotSettings + 1 + + 2 +C:\Program Files\AutoCAD 2002\plotters\DWF ePlot (optimized for plotting).pc3 + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +1712 + 72 +0 + 73 +0 + 74 +0 + 7 + + 75 +0 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Model + 70 +1 + 71 +0 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +0 +330 +1F + 0 +LAYOUT + 5 +26 +100 +AcDbPlotSettings + 1 + + 2 +C:\Program Files\AutoCAD 2002\plotters\DWF ePlot (optimized for plotting).pc3 + 4 + + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +0.0 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +688 + 72 +0 + 73 +0 + 74 +5 + 7 + + 75 +16 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Layout2 + 70 +1 + 71 +2 + 10 +0.0 + 20 +0.0 + 11 +12.0 + 21 +9.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +0.0 + 24 +0.0 + 34 +0.0 + 15 +0.0 + 25 +0.0 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +0 +330 +23 + 0 +DICTIONARY + 5 +C7 +100 +AcDbDictionary +281 +1 + 3 +DIMASSOC +350 +C9 + 3 +HIDETEXT +350 +C8 + 0 +DICTIONARYVAR + 5 +C8 +100 +DictionaryVariables +280 +0 + 1 +2 + 0 +DICTIONARYVAR + 5 +C9 +100 +DictionaryVariables +280 +0 + 1 +1 + 0 +ENDSEC + 0 +EOF diff --git a/doc/2012-02-TF4/style.svg b/doc/2012-02-TF4/style.svg new file mode 100644 index 0000000..55b93fc --- /dev/null +++ b/doc/2012-02-TF4/style.svg @@ -0,0 +1,1559 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + Tracer Fire 4 + + Heading Color: #11dddd + Link color: #ff8800 + Text color: #ddddcc + Background color: #111122 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LawrenceLivermoreNationalLaboratory + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/cowbull/cowbull.mk b/packages/cowbull/cowbull.mk new file mode 100644 index 0000000..2ca432d --- /dev/null +++ b/packages/cowbull/cowbull.mk @@ -0,0 +1,19 @@ +COWBULL_PKGDIR = $(TARGET)/cowbull + +cowbull-install: cowbull-build + mkdir -p $(COWBULL_PKGDIR) + + mkdir -p $(COWBULL_PKGDIR)/bin/ + $(MAKE) -C packages/cowbull/src install DESTDIR=$(CURDIR)/$(COWBULL_PKGDIR) + + $(call COPYTREE, packages/cowbull/service, $(COWBULL_PKGDIR)/service) + cp packages/cowbull/tokens.txt $(COWBULL_PKGDIR)/ + +cowbull-clean: + rm -rf $(COWBULL_PKGDIR) + $(MAKE) -C packages/cowbull/src clean + +cowbull-build: + $(MAKE) -C packages/cowbull/src build + +PACKAGES += cowbull diff --git a/packages/cowbull/service/cowbull/finish b/packages/cowbull/service/cowbull/finish new file mode 100755 index 0000000..54ba047 --- /dev/null +++ b/packages/cowbull/service/cowbull/finish @@ -0,0 +1,4 @@ +#! /bin/sh + +read IP < ip.txt +ip addr del $IP dev eth0 diff --git a/packages/cowbull/service/cowbull/ip.txt b/packages/cowbull/service/cowbull/ip.txt new file mode 100644 index 0000000..9bcbbf6 --- /dev/null +++ b/packages/cowbull/service/cowbull/ip.txt @@ -0,0 +1 @@ +fd84:b410:3441::ec6/64 diff --git a/packages/cowbull/service/cowbull/log/run b/packages/cowbull/service/cowbull/log/run new file mode 100755 index 0000000..1e7bd9d --- /dev/null +++ b/packages/cowbull/service/cowbull/log/run @@ -0,0 +1,3 @@ +#! /bin/sh + +exec svlogd -tt $PWD diff --git a/packages/cowbull/service/cowbull/run b/packages/cowbull/service/cowbull/run new file mode 100755 index 0000000..1459669 --- /dev/null +++ b/packages/cowbull/service/cowbull/run @@ -0,0 +1,7 @@ +#! /bin/sh -e + +exec 2>&1 +read IP < ip.txt +ip addr add $IP dev eth0 || true + +exec setuidgid nobody /opt/cowbull/bin/cowd < /opt/cowbull/tokens.txt diff --git a/packages/cowbull/src/Makefile b/packages/cowbull/src/Makefile index 8c26186..a4b5489 100644 --- a/packages/cowbull/src/Makefile +++ b/packages/cowbull/src/Makefile @@ -1 +1,11 @@ +DESTDIR ?= /tmp + all: cowd cowcli + +cowcli: CC=cc + +install: all + cp cowd cowcli $(DESTDIR)/bin/ + +clean: + rm -f cowd cowcli diff --git a/packages/cowbull/src/cowcli.c b/packages/cowbull/src/cowcli.c index 9832445..ab8b199 100644 --- a/packages/cowbull/src/cowcli.c +++ b/packages/cowbull/src/cowcli.c @@ -9,10 +9,17 @@ #include #include #include +#include #include -#define DEBUG +#define NODEBUG + +#ifdef DEBUG +# define PORT 4444 +#else +# define PORT 44 +#endif int bind_port(int fd, const struct in6_addr *addr, uint16_t port) @@ -86,7 +93,7 @@ main(int argc, char *argv[]) long answer = 0; int sock; int i; - struct in6_addr addr; + struct addrinfo *addr; uint32_t token = 0; FILE *in, *out; @@ -94,20 +101,31 @@ main(int argc, char *argv[]) signal(SIGCHLD, sigchld); - if (0 >= inet_pton(AF_INET6, argv[1], &addr)) { - fprintf(stderr, "invalid address: %s\n", argv[1]); - return EX_IOERR; + if (argc < 2) { + fprintf(stderr, "Usage: %s SERVER\n", argv[0]); + return EX_USAGE; + } + + { + struct addrinfo hints = { 0 }; + + hints.ai_family = PF_INET6; + hints.ai_socktype = SOCK_DGRAM; + hints.ai_flags = AI_NUMERICHOST; + + if (0 != getaddrinfo(argv[1], "3782", &hints, &addr)) { + perror("Resolving address"); + return EX_IOERR; + } } /* * Set up socket */ sock = socket(AF_INET6, SOCK_DGRAM, 0); - if (-1 == bind_port(sock, &in6addr_any, 44)) { + if (-1 == bind_port(sock, &in6addr_any, PORT)) { perror("Binding UDP port 44"); -#ifndef DEBUG return EX_IOERR; -#endif } if (argv[2]) { @@ -139,7 +157,7 @@ main(int argc, char *argv[]) } /* Send the guess */ - if (-1 == sendto(sock, &g, sizeof g, 0, &addr, sizeof addr)) { + if (-1 == sendto(sock, &g, sizeof g, 0, addr->ai_addr, addr->ai_addrlen)) { perror("Sending packet"); return EX_IOERR; } @@ -156,15 +174,20 @@ main(int argc, char *argv[]) return EX_IOERR; case 1: /* It's a score */ + printf("%02x\n", buf[0]); + break; case 4: /* New game token */ + printf("NEW GAME\n"); + token = *((uint32_t *) buf); + break; default: /* You win: this is your CTF token */ + buf[len] = 0; + printf("A WINNER IS YOU: %s\n", buf); + break; } } - - /* parse result */ - /* display result */ } return 0; diff --git a/packages/cowbull/src/cowd.c b/packages/cowbull/src/cowd.c index 33cc22d..9ad2c24 100644 --- a/packages/cowbull/src/cowd.c +++ b/packages/cowbull/src/cowd.c @@ -14,6 +14,8 @@ char tokens[NTOKENS][TOKENLEN]; int ntokens; +char *admonishment = "Try for fewer guesses next time!\n"; + struct state { time_t death; uint16_t answer; @@ -58,10 +60,14 @@ new_game(int sock, time_t now, struct sockaddr_in6 *from, for (i = 0; i < 4; i += 1) { s->answer = (s->answer << 4) | ((random() % 6) + 1); } + + g.token = s->answer; break; } } + printf("=%02x\n", g.token); + if (g.offset < NSTATES) { sendto(sock, &g, sizeof(g), 0, (struct sockaddr *) from, fromlen); } @@ -103,7 +109,7 @@ loop(int sock) } cur = &states[g.offset]; - if ((g.token != cur->answer) || /* Wrong token? */ + if ((g.token != cur->answer) || /* Wrong token? */ (cur->death < now) || /* Old game? */ (cur->guesses++ > 100)) { /* Too dumb? */ /* @@ -112,8 +118,8 @@ loop(int sock) new_game(sock, now, &from, fromlen); return; } else { - uint8_t reply; - int i; + uint8_t reply = 0; + int i; for (i = 0; i < 4; i += 1) { int s = (g.guess >> (i * 4)) & 0xf; @@ -127,16 +133,22 @@ loop(int sock) reply += 0x01; } } + printf("%02x ? %02x\n", g.guess, reply); if (reply == 0x40) { - if (cur->guesses > ntokens) { - sendto(sock, tokens[cur->guesses], - strlen(tokens[cur->guesses]), 0, - (struct sockaddr *) &from, fromlen); + char *r; + + if (cur->guesses <= ntokens) { + r = tokens[cur->guesses - 1]; + } else { + r = admonishment; } + sendto(sock, r, strlen(r) - 1, 0, + (struct sockaddr *) &from, fromlen); + cur->death = 0; } else { - sendto(sock, &reply, sizeof reply, 0, (struct sockaddr *) &from, - fromlen); + sendto(sock, &reply, sizeof reply, 0, + (struct sockaddr *) &from, fromlen); } } } @@ -144,7 +156,6 @@ loop(int sock) int main(int argc, char *argv[]) { - long answer = 0; int sock; int i; struct in6_addr addr; @@ -180,10 +191,6 @@ main(int argc, char *argv[]) return EX_IOERR; } - for (i = 0; i < 4; i += 1) { - answer = (answer << 4) | ((random() % 6) + 1); - } - while (1) { loop(sock); } diff --git a/packages/cowbull/tokens.txt b/packages/cowbull/tokens.txt new file mode 100644 index 0000000..3aef74e --- /dev/null +++ b/packages/cowbull/tokens.txt @@ -0,0 +1,10 @@ +moo:1000000:xikov-fybir-zurox +moo:9:xukiv-hudyb-fesix +moo:8:xecoh-nyfyh-degix +moo:7:xihap-synik-gesix +moo:6:xegek-rulyz-polux +moo:5:xitiz-fokel-radix +moo:4:xuzif-gakit-fogyx +moo:3:xisav-nodob-besex +moo:2:xumol-peker-pibox +moo:1:xilom-zosyk-cavux diff --git a/packages/cowbull/www/moo.html b/packages/cowbull/www/moo.html new file mode 100644 index 0000000..8e0ada9 --- /dev/null +++ b/packages/cowbull/www/moo.html @@ -0,0 +1,91 @@ + + + + Welcome + + + +

Moo.

+

+ You are trying to guess a 4-nybble sequence. Each nybble will have + either 1 or 2 bits set, and the highest bit will never be set. The + game server will tell you how many nybbles in each guess were correct, + and how many had one correct bit. It does not tell you which + positions. +

+ +

The Cow Client

+ +

+ Download the client +

+ +

+ The client connects to the Cow server running on the IPv6 + address provided in argument 1. The client reads a guess + in the form of 4 ASCII numerals, and prints the number of + correct nybbles followed by the number of nybbles with one + correct bit. +

+ +

+ Here is an example of a session: +

+ +
+1111
+12
+2222
+10
+4444
+02
+4244
+12
+1244
+22
+1255
+moo:xylep-radar-nanox
+
+ +

+ You can use a program like socat to connect + the client to a logic program you write: +

+
+socat EXEC:"./cowcli fd84:b410:3441::ec6" EXEC:./mysolution
+
+ +

+ This will allow your program to read and write from stdio + of the client program. +

+ + +

The Cow Protocol

+ +

+ cowd runs on port 3782 on fd84:b410:3441::ec6. +

+ +

+ The client always sends 6 octets. To request a new session, it sends + all zeroes. Otherwise it sends the 4-octet game identifier provided + by the server, concatenated with a 2-octet guess. +

+ +

+ The server will respond with a new game identifier (4 octets) to a new + game request or if the game requested is too old. If a guess is + incorrect, the server will respond with either a 1-octet score in + which the high nybble is the number of correct nybbles in the guess, + and the low nybble is the number of nybbles in the guess with one + correct bit. If a guess is correct, the server will respond with a + token of length 5 octets or more. +

+ +

+ There are multiple tokens, one per number of guesses used, up to + some maximum number of guesses defined per server instance. +

+ + diff --git a/packages/mcp/src/puzzler.cgi.c b/packages/mcp/src/puzzler.cgi.c index fe7ff0e..6a41910 100644 --- a/packages/mcp/src/puzzler.cgi.c +++ b/packages/mcp/src/puzzler.cgi.c @@ -61,11 +61,6 @@ main(int argc, char *argv[]) char needle[400]; my_snprintf(needle, sizeof(needle), "%ld %s", points, answer); - { - FILE *f = fopen("/tmp/form", "w"); - fprintf(f, "%s\n%s\n", answer, needle); - fclose(f); - } if (! fgrepx(needle, package_path("%s/answers.txt", category))) { diff --git a/packages/rlyeh/service/rlyeh/ip.txt b/packages/rlyeh/service/rlyeh/ip.txt index 6ac003d..7acd21c 100644 --- a/packages/rlyeh/service/rlyeh/ip.txt +++ b/packages/rlyeh/service/rlyeh/ip.txt @@ -1 +1 @@ -10.0.0.28/24 +fd84:b410:3441::b33b/64 diff --git a/packages/rlyeh/service/rlyeh/run b/packages/rlyeh/service/rlyeh/run index 9b4c8c9..03e2bbf 100755 --- a/packages/rlyeh/service/rlyeh/run +++ b/packages/rlyeh/service/rlyeh/run @@ -2,7 +2,7 @@ exec 2>&1 read IP < ip.txt -ip addr add $IP label eth0:rlyeh dev eth0 +ip addr add $IP label eth0:rlyeh dev eth0 || true dir=/var/lib/ctf/rlyeh install -o nobody -d $dir