diff --git a/display/Makefile b/display/Makefile new file mode 120000 index 0000000..d0b0e8e --- /dev/null +++ b/display/Makefile @@ -0,0 +1 @@ +../Makefile \ No newline at end of file diff --git a/display/app/application.cpp b/display/app/application.cpp new file mode 100644 index 0000000..39db205 --- /dev/null +++ b/display/app/application.cpp @@ -0,0 +1,116 @@ +#include + +SpejsNode node("control-panel"); +DriverPWM pwm; + +#define SLAVES_COUNT 1 + +class SlaveEndpoint { +public: + String topic; + int ledPin; + int btnPin; + + bool state = false; + uint32_t lastTrigger = 0; + bool lastButton = false; + + Timer breatheTimer; + + void init() { + if (ledPin != -1) + pinMode(ledPin, OUTPUT); + + if (btnPin != -1) + pinMode(btnPin, INPUT_PULLUP); + + //breatheTimer.initializeMs(20, TimerDelegate(&SlaveEndpoint::breatheHandler, this)).start(); + } + + void stateUpdate(bool newState) { + state = newState; + digitalWrite(ledPin, !state); + } + + void breatheHandler() { + //pwm.analogWrite(ledPin, (millis()/10) % 50 + 20); + } + + SlaveEndpoint(String _topic, int _ledPin = -1, int _btnPin = -1) : + topic(_topic), ledPin(_ledPin), btnPin(_btnPin) {} +}; + +SlaveEndpoint slaves[] = { + {"iot/b4a90f/relay/on", 2, 0}, // Exhaust +}; + +class StatusEndpoint : public Endpoint { +public: + Timer sampleTimer; + Timer idleTimer; + + StatusEndpoint() : Endpoint("status") { } + + void bind(String _name, SpejsNode* _parent) { + Endpoint::bind(_name, _parent); + idleTimer.initializeMs(100, TimerDelegate(&StatusEndpoint::idleHandler, this)).start(); + + //pwm.initialize(); + + for(int i = 0; i < SLAVES_COUNT; i++) { + slaves[i].init(); + } + } + + void idleHandler() { + for(int i = 0; i < SLAVES_COUNT; i++) { + slaves[i].stateUpdate(!slaves[i].state); + } + } + + void onConnected() { + idleTimer.stop(); + + Serial.println("status: connected"); + + for(int i = 0; i < SLAVES_COUNT; i++) { + Serial.println(i); + + parent->mqtt.subscribe(slaves[i].topic); + slaves[i].init(); + } + + sampleTimer.initializeMs(50, TimerDelegate(&StatusEndpoint::sampleButtons, this)).start(); + } + + void onMessage(String topic, String payload) { + Serial.println("status: got message"); + Serial.printf("%s: %s\r\n", topic.c_str(), payload.c_str()); + for(int i = 0; i < SLAVES_COUNT; i++) { + if (topic.equals(slaves[i].topic)) { + slaves[i].stateUpdate(payload.equals("true")); + } + } + } + + void sampleButtons() { + for(int i = 0; i < SLAVES_COUNT; i++) { + bool s = digitalRead(slaves[i].btnPin); + if(s != slaves[i].lastButton) { + slaves[i].lastButton = s; + + if (!s) { + Serial.println("INTERRUPT"); + parent->mqtt.publish(slaves[i].topic + "/set", slaves[i].state ? "false" : "true", true); + } + } + } + } +}; + +void init() { + node.init(); + node.registerEndpoint("status", new StatusEndpoint()); + //node.registerEndpoint("relay", new OutputEndpoint(5)); + //node.registerEndpoint("dht", new DHTEndpoint(D4, 5000)); +} diff --git a/display/mounting.slvs b/display/mounting.slvs new file mode 100644 index 0000000..b174872 --- /dev/null +++ b/display/mounting.slvs @@ -0,0 +1,6920 @@ +±²³SolveSpaceREVa + + +Group.h.v=00000001 +Group.type=5000 +Group.name=#references +Group.color=ff000000 +Group.skipFirst=0 +Group.predef.swapUV=0 +Group.predef.negateU=0 +Group.predef.negateV=0 +Group.visible=1 +Group.suppress=0 +Group.relaxConstraints=0 +Group.allowRedundant=0 +Group.allDimsReference=0 +Group.remap={ +} +AddGroup + +Group.h.v=00000002 +Group.type=5001 +Group.order=1 +Group.name=sketch-in-plane +Group.activeWorkplane.v=80020000 +Group.color=ff000000 +Group.subtype=6000 +Group.skipFirst=0 +Group.predef.q.w=1.00000000000000000000 +Group.predef.origin.v=00010001 +Group.predef.swapUV=0 +Group.predef.negateU=0 +Group.predef.negateV=0 +Group.visible=1 +Group.suppress=0 +Group.relaxConstraints=0 +Group.allowRedundant=0 +Group.allDimsReference=0 +Group.remap={ +} +AddGroup + +Group.h.v=00000003 +Group.type=5100 +Group.order=2 +Group.name=extrude +Group.opA.v=00000002 +Group.color=00646464 +Group.subtype=7000 +Group.skipFirst=0 +Group.predef.entityB.v=80020000 +Group.predef.swapUV=0 +Group.predef.negateU=0 +Group.predef.negateV=0 +Group.visible=1 +Group.suppress=0 +Group.relaxConstraints=0 +Group.allowRedundant=0 +Group.allDimsReference=0 +Group.scale=1.00000000000000000000 +Group.remap={ + 1 00040000 1002 + 2 00040001 1002 + 3 00040002 1002 + 4 00040000 1001 + 5 00040001 1001 + 6 00040002 1001 + 7 00040000 1004 + 8 00040001 1003 + 9 00040002 1003 + 10 00050000 1002 + 11 00050001 1002 + 12 00050002 1002 + 13 00050000 1001 + 14 00050001 1001 + 15 00050002 1001 + 16 00050000 1004 + 17 00050001 1003 + 18 00050002 1003 + 19 00060000 1002 + 20 00060001 1002 + 21 00060002 1002 + 22 00060000 1001 + 23 00060001 1001 + 24 00060002 1001 + 25 00060000 1004 + 26 00060001 1003 + 27 00060002 1003 + 28 00070000 1002 + 29 00070001 1002 + 30 00070002 1002 + 31 00070000 1001 + 32 00070001 1001 + 33 00070002 1001 + 34 00070000 1004 + 35 00070001 1003 + 36 00070002 1003 + 37 00080000 1002 + 38 00080001 1002 + 39 00080020 1002 + 40 00080040 1002 + 41 00080000 1001 + 42 00080001 1001 + 43 00080020 1001 + 44 00080040 1001 + 45 00080001 1003 + 46 00090000 1002 + 47 00090001 1002 + 48 00090020 1002 + 49 00090040 1002 + 50 00090000 1001 + 51 00090001 1001 + 52 00090020 1001 + 53 00090040 1001 + 54 00090001 1003 + 55 000a0000 1002 + 56 000a0001 1002 + 57 000a0020 1002 + 58 000a0040 1002 + 59 000a0000 1001 + 60 000a0001 1001 + 61 000a0020 1001 + 62 000a0040 1001 + 63 000a0001 1003 + 64 000b0000 1002 + 65 000b0001 1002 + 66 000b0020 1002 + 67 000b0040 1002 + 68 000b0000 1001 + 69 000b0001 1001 + 70 000b0020 1001 + 71 000b0040 1001 + 72 000b0001 1003 + 73 000c0000 1002 + 74 000c0001 1002 + 75 000c0002 1002 + 76 000c0000 1001 + 77 000c0001 1001 + 78 000c0002 1001 + 79 000c0000 1004 + 80 000c0001 1003 + 81 000c0002 1003 + 82 000d0000 1002 + 83 000d0001 1002 + 84 000d0002 1002 + 85 000d0000 1001 + 86 000d0001 1001 + 87 000d0002 1001 + 88 000d0000 1004 + 89 000d0001 1003 + 90 000d0002 1003 + 91 000e0000 1002 + 92 000e0001 1002 + 93 000e0020 1002 + 94 000e0040 1002 + 95 000e0000 1001 + 96 000e0001 1001 + 97 000e0020 1001 + 98 000e0040 1001 + 99 000e0001 1003 + 100 000f0000 1002 + 101 000f0001 1002 + 102 000f0020 1002 + 103 000f0040 1002 + 104 000f0000 1001 + 105 000f0001 1001 + 106 000f0020 1001 + 107 000f0040 1001 + 108 000f0001 1003 + 109 00100000 1002 + 110 00100001 1002 + 111 00100020 1002 + 112 00100040 1002 + 113 00100000 1001 + 114 00100001 1001 + 115 00100020 1001 + 116 00100040 1001 + 117 00100001 1003 + 118 00110000 1002 + 119 00110001 1002 + 120 00110020 1002 + 121 00110040 1002 + 122 00110000 1001 + 123 00110001 1001 + 124 00110020 1001 + 125 00110040 1001 + 126 00110001 1003 + 127 00120000 1002 + 128 00120001 1002 + 129 00120002 1002 + 130 00120000 1001 + 131 00120001 1001 + 132 00120002 1001 + 133 00120000 1004 + 134 00120001 1003 + 135 00120002 1003 + 136 00130000 1002 + 137 00130001 1002 + 138 00130002 1002 + 139 00130000 1001 + 140 00130001 1001 + 141 00130002 1001 + 142 00130000 1004 + 143 00130001 1003 + 144 00130002 1003 + 145 00140000 1002 + 146 00140001 1002 + 147 00140002 1002 + 148 00140000 1001 + 149 00140001 1001 + 150 00140002 1001 + 151 00140000 1004 + 152 00140001 1003 + 153 00140002 1003 + 154 00150000 1002 + 155 00150001 1002 + 156 00150002 1002 + 157 00150000 1001 + 158 00150001 1001 + 159 00150002 1001 + 160 00150000 1004 + 161 00150001 1003 + 162 00150002 1003 + 163 00160000 1002 + 164 00160001 1002 + 165 00160002 1002 + 166 00160003 1002 + 167 00160020 1002 + 168 00160000 1001 + 169 00160001 1001 + 170 00160002 1001 + 171 00160003 1001 + 172 00160020 1001 + 173 00160001 1003 + 174 00160002 1003 + 175 00160003 1003 + 176 00170000 1002 + 177 00170001 1002 + 178 00170002 1002 + 179 00170000 1001 + 180 00170001 1001 + 181 00170002 1001 + 182 00170000 1004 + 183 00170001 1003 + 184 00170002 1003 + 185 00180000 1002 + 186 00180001 1002 + 187 00180002 1002 + 188 00180000 1001 + 189 00180001 1001 + 190 00180002 1001 + 191 00180000 1004 + 192 00180001 1003 + 193 00180002 1003 + 194 00190000 1002 + 195 00190001 1002 + 196 00190002 1002 + 197 00190003 1002 + 198 00190020 1002 + 199 00190000 1001 + 200 00190001 1001 + 201 00190002 1001 + 202 00190003 1001 + 203 00190020 1001 + 204 00190001 1003 + 205 00190002 1003 + 206 00190003 1003 + 207 001a0000 1002 + 208 001a0001 1002 + 209 001a0002 1002 + 210 001a0000 1001 + 211 001a0001 1001 + 212 001a0002 1001 + 213 001a0000 1004 + 214 001a0001 1003 + 215 001a0002 1003 + 216 001b0000 1002 + 217 001b0001 1002 + 218 001b0002 1002 + 219 001b0000 1001 + 220 001b0001 1001 + 221 001b0002 1001 + 222 001b0000 1004 + 223 001b0001 1003 + 224 001b0002 1003 + 225 001c0000 1002 + 226 001c0001 1002 + 227 001c0002 1002 + 228 001c0003 1002 + 229 001c0020 1002 + 230 001c0000 1001 + 231 001c0001 1001 + 232 001c0002 1001 + 233 001c0003 1001 + 234 001c0020 1001 + 235 001c0001 1003 + 236 001c0002 1003 + 237 001c0003 1003 + 238 001d0000 1002 + 239 001d0001 1002 + 240 001d0002 1002 + 241 001d0000 1001 + 242 001d0001 1001 + 243 001d0002 1001 + 244 001d0000 1004 + 245 001d0001 1003 + 246 001d0002 1003 + 247 001e0000 1002 + 248 001e0001 1002 + 249 001e0002 1002 + 250 001e0000 1001 + 251 001e0001 1001 + 252 001e0002 1001 + 253 001e0000 1004 + 254 001e0001 1003 + 255 001e0002 1003 + 256 001f0000 1002 + 257 001f0001 1002 + 258 001f0002 1002 + 259 001f0003 1002 + 260 001f0020 1002 + 261 001f0000 1001 + 262 001f0001 1001 + 263 001f0002 1001 + 264 001f0003 1001 + 265 001f0020 1001 + 266 001f0001 1003 + 267 001f0002 1003 + 268 001f0003 1003 + 269 00200000 1002 + 270 00200001 1002 + 271 00200002 1002 + 272 00200000 1001 + 273 00200001 1001 + 274 00200002 1001 + 275 00200000 1004 + 276 00200001 1003 + 277 00200002 1003 + 278 00210000 1002 + 279 00210001 1002 + 280 00210002 1002 + 281 00210000 1001 + 282 00210001 1001 + 283 00210002 1001 + 284 00210000 1004 + 285 00210001 1003 + 286 00210002 1003 + 287 80020000 1002 + 288 80020000 1001 + 289 80020001 1002 + 290 80020002 1002 + 291 80020001 1001 + 292 80020002 1001 + 293 80020002 1003 + 294 00000000 1001 + 295 00000000 1002 +} +AddGroup + +Param.h.v.=00010010 +AddParam + +Param.h.v.=00010011 +AddParam + +Param.h.v.=00010012 +AddParam + +Param.h.v.=00010020 +Param.val=1.00000000000000000000 +AddParam + +Param.h.v.=00010021 +AddParam + +Param.h.v.=00010022 +AddParam + +Param.h.v.=00010023 +AddParam + +Param.h.v.=00020010 +AddParam + +Param.h.v.=00020011 +AddParam + +Param.h.v.=00020012 +AddParam + +Param.h.v.=00020020 +Param.val=0.50000000000000000000 +AddParam + +Param.h.v.=00020021 +Param.val=0.50000000000000000000 +AddParam + +Param.h.v.=00020022 +Param.val=0.50000000000000000000 +AddParam + +Param.h.v.=00020023 +Param.val=0.50000000000000000000 +AddParam + +Param.h.v.=00030010 +AddParam + +Param.h.v.=00030011 +AddParam + +Param.h.v.=00030012 +AddParam + +Param.h.v.=00030020 +Param.val=0.50000000000000000000 +AddParam + +Param.h.v.=00030021 +Param.val=-0.50000000000000000000 +AddParam + +Param.h.v.=00030022 +Param.val=-0.50000000000000000000 +AddParam + +Param.h.v.=00030023 +Param.val=-0.50000000000000000000 +AddParam + +Param.h.v.=00040010 +Param.val=55.00000000000000710543 +AddParam + +Param.h.v.=00040011 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00040013 +Param.val=55.00000000000000710543 +AddParam + +Param.h.v.=00040014 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=00050010 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00050011 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00050013 +Param.val=55.00000000000000710543 +AddParam + +Param.h.v.=00050014 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00060010 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00060011 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=00060013 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00060014 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00070010 +Param.val=55.00000000000000710543 +AddParam + +Param.h.v.=00070011 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=00070013 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00070014 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=00080010 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=00080011 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=00080040 +Param.val=1.50000000000000000000 +AddParam + +Param.h.v.=00090010 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=00090011 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=00090040 +Param.val=1.50000000000000000000 +AddParam + +Param.h.v.=000a0010 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=000a0011 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=000a0040 +Param.val=1.50000000000000000000 +AddParam + +Param.h.v.=000b0010 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=000b0011 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=000b0040 +Param.val=1.50000000000000000000 +AddParam + +Param.h.v.=000c0010 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=000c0011 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=000c0013 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=000c0014 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=000d0010 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=000d0011 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=000d0013 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=000d0014 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=000e0010 +Param.val=-13.46389692435578488983 +AddParam + +Param.h.v.=000e0011 +Param.val=48.92791255195346877827 +AddParam + +Param.h.v.=000e0040 +Param.val=1.50000000000000000000 +AddParam + +Param.h.v.=000f0010 +Param.val=11.33610307564421404436 +AddParam + +Param.h.v.=000f0011 +Param.val=48.92791255195346877827 +AddParam + +Param.h.v.=000f0040 +Param.val=1.50000000000000000000 +AddParam + +Param.h.v.=00100010 +Param.val=-13.46389692435578488983 +AddParam + +Param.h.v.=00100011 +Param.val=-3.17208744804653175464 +AddParam + +Param.h.v.=00100040 +Param.val=1.50000000000000000000 +AddParam + +Param.h.v.=00110010 +Param.val=11.33610307564421404436 +AddParam + +Param.h.v.=00110011 +Param.val=-3.17208744804653175464 +AddParam + +Param.h.v.=00110040 +Param.val=1.50000000000000000000 +AddParam + +Param.h.v.=00120010 +Param.val=11.33610307564421404436 +AddParam + +Param.h.v.=00120011 +Param.val=-3.17208744804653175464 +AddParam + +Param.h.v.=00120013 +Param.val=11.33610307564421404436 +AddParam + +Param.h.v.=00120014 +Param.val=48.92791255195346877827 +AddParam + +Param.h.v.=00130010 +Param.val=-13.46389692435578488983 +AddParam + +Param.h.v.=00130011 +Param.val=-3.17208744804653175464 +AddParam + +Param.h.v.=00130013 +Param.val=11.33610307564421404436 +AddParam + +Param.h.v.=00130014 +Param.val=-3.17208744804653175464 +AddParam + +Param.h.v.=00140010 +Param.val=-13.46389692435578488983 +AddParam + +Param.h.v.=00140011 +Param.val=48.92791255195346877827 +AddParam + +Param.h.v.=00140013 +Param.val=-13.46389692435578488983 +AddParam + +Param.h.v.=00140014 +Param.val=-3.17208744804653175464 +AddParam + +Param.h.v.=00150010 +Param.val=11.33610307564421404436 +AddParam + +Param.h.v.=00150011 +Param.val=48.92791255195346877827 +AddParam + +Param.h.v.=00150013 +Param.val=-13.46389692435578488983 +AddParam + +Param.h.v.=00150014 +Param.val=48.92791255195346877827 +AddParam + +Param.h.v.=00160010 +Param.val=-47.30801010568837483561 +AddParam + +Param.h.v.=00160011 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=00160013 +Param.val=-47.30801010568837483561 +AddParam + +Param.h.v.=00160014 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=00160016 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00160017 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=00170010 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00170011 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=00170013 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00170014 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00180010 +Param.val=-47.30801010568837483561 +AddParam + +Param.h.v.=00180011 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=00180013 +Param.val=55.00000000000000710543 +AddParam + +Param.h.v.=00180014 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=00190010 +Param.val=47.30801010568837483561 +AddParam + +Param.h.v.=00190011 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=00190013 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=00190014 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=00190016 +Param.val=47.30801010568837483561 +AddParam + +Param.h.v.=00190017 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=001a0010 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=001a0011 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=001a0013 +Param.val=55.00000000000000710543 +AddParam + +Param.h.v.=001a0014 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=001b0010 +Param.val=47.30801010568837483561 +AddParam + +Param.h.v.=001b0011 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=001b0013 +Param.val=-47.30801010568837483561 +AddParam + +Param.h.v.=001b0014 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=001c0010 +Param.val=47.30801010568837483561 +AddParam + +Param.h.v.=001c0011 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=001c0013 +Param.val=47.30801010568837483561 +AddParam + +Param.h.v.=001c0014 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=001c0016 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=001c0017 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=001d0010 +Param.val=47.30801010568837483561 +AddParam + +Param.h.v.=001d0011 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=001d0013 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=001d0014 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=001e0010 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=001e0011 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=001e0013 +Param.val=55.00000000000000000000 +AddParam + +Param.h.v.=001e0014 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=001f0010 +Param.val=-47.30801010568837483561 +AddParam + +Param.h.v.=001f0011 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=001f0013 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=001f0014 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=001f0016 +Param.val=-47.30801010568837483561 +AddParam + +Param.h.v.=001f0017 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00200010 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00200011 +Param.val=-47.30801010568836773018 +AddParam + +Param.h.v.=00200013 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00200014 +Param.val=47.30801010568836773018 +AddParam + +Param.h.v.=00210010 +Param.val=-47.30801010568837483561 +AddParam + +Param.h.v.=00210011 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=00210013 +Param.val=47.30801010568837483561 +AddParam + +Param.h.v.=00210014 +Param.val=-55.00000000000000000000 +AddParam + +Param.h.v.=80030000 +AddParam + +Param.h.v.=80030001 +AddParam + +Param.h.v.=80030002 +Param.val=69.11999999999997612576 +AddParam + +Request.h.v=00000001 +Request.type=100 +Request.group.v=00000001 +Request.construction=0 +AddRequest + +Request.h.v=00000002 +Request.type=100 +Request.group.v=00000001 +Request.construction=0 +AddRequest + +Request.h.v=00000003 +Request.type=100 +Request.group.v=00000001 +Request.construction=0 +AddRequest + +Request.h.v=00000004 +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=00000005 +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=00000006 +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=00000007 +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=00000008 +Request.type=400 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=00000009 +Request.type=400 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=0000000a +Request.type=400 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=0000000b +Request.type=400 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=0000000c +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=0000000d +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=0000000e +Request.type=400 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=0000000f +Request.type=400 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=00000010 +Request.type=400 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=00000011 +Request.type=400 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=00000012 +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=00000013 +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=00000014 +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=00000015 +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=00000016 +Request.type=500 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=00000017 +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=00000018 +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=00000019 +Request.type=500 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=0000001a +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=0000001b +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=0000001c +Request.type=500 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=0000001d +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=1 +AddRequest + +Request.h.v=0000001e +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=0000001f +Request.type=500 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=00000020 +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Request.h.v=00000021 +Request.type=200 +Request.workplane.v=80020000 +Request.group.v=00000002 +Request.construction=0 +AddRequest + +Entity.h.v=00010000 +Entity.type=10000 +Entity.construction=0 +Entity.point[0].v=00010001 +Entity.normal.v=00010020 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00010001 +Entity.type=2000 +Entity.construction=0 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00010020 +Entity.type=3000 +Entity.construction=0 +Entity.point[0].v=00010001 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00020000 +Entity.type=10000 +Entity.construction=0 +Entity.point[0].v=00020001 +Entity.normal.v=00020020 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00020001 +Entity.type=2000 +Entity.construction=0 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00020020 +Entity.type=3000 +Entity.construction=0 +Entity.point[0].v=00020001 +Entity.actNormal.w=0.50000000000000000000 +Entity.actNormal.vx=0.50000000000000000000 +Entity.actNormal.vy=0.50000000000000000000 +Entity.actNormal.vz=0.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00030000 +Entity.type=10000 +Entity.construction=0 +Entity.point[0].v=00030001 +Entity.normal.v=00030020 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00030001 +Entity.type=2000 +Entity.construction=0 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00030020 +Entity.type=3000 +Entity.construction=0 +Entity.point[0].v=00030001 +Entity.actNormal.w=0.50000000000000000000 +Entity.actNormal.vx=-0.50000000000000000000 +Entity.actNormal.vy=-0.50000000000000000000 +Entity.actNormal.vz=-0.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00040000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=00040001 +Entity.point[1].v=00040002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00040001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00040002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00050000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=00050001 +Entity.point[1].v=00050002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00050001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00050002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00060000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=00060001 +Entity.point[1].v=00060002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00060001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00060002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00070000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=00070001 +Entity.point[1].v=00070002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00070001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00070002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00080000 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=00080001 +Entity.normal.v=00080020 +Entity.distance.v=00080040 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00080001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00080020 +Entity.type=3001 +Entity.construction=0 +Entity.point[0].v=00080001 +Entity.workplane.v=80020000 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00080040 +Entity.type=4000 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00090000 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=00090001 +Entity.normal.v=00090020 +Entity.distance.v=00090040 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00090001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00090020 +Entity.type=3001 +Entity.construction=0 +Entity.point[0].v=00090001 +Entity.workplane.v=80020000 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00090040 +Entity.type=4000 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000a0000 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=000a0001 +Entity.normal.v=000a0020 +Entity.distance.v=000a0040 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000a0001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=47.30801010568836773018 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000a0020 +Entity.type=3001 +Entity.construction=0 +Entity.point[0].v=000a0001 +Entity.workplane.v=80020000 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000a0040 +Entity.type=4000 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000b0000 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=000b0001 +Entity.normal.v=000b0020 +Entity.distance.v=000b0040 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000b0001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000b0020 +Entity.type=3001 +Entity.construction=0 +Entity.point[0].v=000b0001 +Entity.workplane.v=80020000 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000b0040 +Entity.type=4000 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000c0000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=000c0001 +Entity.point[1].v=000c0002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000c0001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000c0002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000d0000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=000d0001 +Entity.point[1].v=000d0002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000d0001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000d0002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000e0000 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=000e0001 +Entity.normal.v=000e0020 +Entity.distance.v=000e0040 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000e0001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=48.92791255195346877827 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000e0020 +Entity.type=3001 +Entity.construction=0 +Entity.point[0].v=000e0001 +Entity.workplane.v=80020000 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000e0040 +Entity.type=4000 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000f0000 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=000f0001 +Entity.normal.v=000f0020 +Entity.distance.v=000f0040 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000f0001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=48.92791255195346877827 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000f0020 +Entity.type=3001 +Entity.construction=0 +Entity.point[0].v=000f0001 +Entity.workplane.v=80020000 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=000f0040 +Entity.type=4000 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00100000 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=00100001 +Entity.normal.v=00100020 +Entity.distance.v=00100040 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00100001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00100020 +Entity.type=3001 +Entity.construction=0 +Entity.point[0].v=00100001 +Entity.workplane.v=80020000 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00100040 +Entity.type=4000 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00110000 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=00110001 +Entity.normal.v=00110020 +Entity.distance.v=00110040 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00110001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00110020 +Entity.type=3001 +Entity.construction=0 +Entity.point[0].v=00110001 +Entity.workplane.v=80020000 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00110040 +Entity.type=4000 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00120000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=00120001 +Entity.point[1].v=00120002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00120001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00120002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=48.92791255195346877827 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00130000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=00130001 +Entity.point[1].v=00130002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00130001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00130002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00140000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=00140001 +Entity.point[1].v=00140002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00140001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=48.92791255195346877827 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00140002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00150000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=00150001 +Entity.point[1].v=00150002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00150001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=48.92791255195346877827 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00150002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=48.92791255195346877827 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00160000 +Entity.type=14000 +Entity.construction=0 +Entity.point[0].v=00160001 +Entity.point[1].v=00160002 +Entity.point[2].v=00160003 +Entity.normal.v=00160020 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00160001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00160002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00160003 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00160020 +Entity.type=3001 +Entity.construction=0 +Entity.point[0].v=00160001 +Entity.workplane.v=80020000 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00170000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=00170001 +Entity.point[1].v=00170002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00170001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00170002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00180000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=00180001 +Entity.point[1].v=00180002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00180001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00180002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00190000 +Entity.type=14000 +Entity.construction=0 +Entity.point[0].v=00190001 +Entity.point[1].v=00190002 +Entity.point[2].v=00190003 +Entity.normal.v=00190020 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00190001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00190002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00190003 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00190020 +Entity.type=3001 +Entity.construction=0 +Entity.point[0].v=00190001 +Entity.workplane.v=80020000 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001a0000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=001a0001 +Entity.point[1].v=001a0002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001a0001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001a0002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001b0000 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=001b0001 +Entity.point[1].v=001b0002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001b0001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001b0002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001c0000 +Entity.type=14000 +Entity.construction=0 +Entity.point[0].v=001c0001 +Entity.point[1].v=001c0002 +Entity.point[2].v=001c0003 +Entity.normal.v=001c0020 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001c0001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001c0002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001c0003 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001c0020 +Entity.type=3001 +Entity.construction=0 +Entity.point[0].v=001c0001 +Entity.workplane.v=80020000 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001d0000 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=001d0001 +Entity.point[1].v=001d0002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001d0001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001d0002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001e0000 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=001e0001 +Entity.point[1].v=001e0002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001e0001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001e0002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001f0000 +Entity.type=14000 +Entity.construction=0 +Entity.point[0].v=001f0001 +Entity.point[1].v=001f0002 +Entity.point[2].v=001f0003 +Entity.normal.v=001f0020 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001f0001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001f0002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001f0003 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=001f0020 +Entity.type=3001 +Entity.construction=0 +Entity.point[0].v=001f0001 +Entity.workplane.v=80020000 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00200000 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=00200001 +Entity.point[1].v=00200002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00200001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00200002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00210000 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=00210001 +Entity.point[1].v=00210002 +Entity.workplane.v=80020000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00210001 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=00210002 +Entity.type=2001 +Entity.construction=0 +Entity.workplane.v=80020000 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80020000 +Entity.type=10000 +Entity.construction=0 +Entity.point[0].v=80020002 +Entity.normal.v=80020001 +Entity.actVisible=0 +AddEntity + +Entity.h.v=80020001 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80020002 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80020002 +Entity.type=2012 +Entity.construction=0 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030001 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=80030002 +Entity.point[1].v=80030003 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030002 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030003 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030004 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=80030005 +Entity.point[1].v=80030006 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030005 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030006 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030007 +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actNormal.vx=-1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030008 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030005 +Entity.point[1].v=80030002 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030009 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030006 +Entity.point[1].v=80030003 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003000a +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=8003000b +Entity.point[1].v=8003000c +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003000b +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003000c +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003000d +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=8003000e +Entity.point[1].v=8003000f +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003000e +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003000f +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030010 +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actNormal.vy=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030011 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003000e +Entity.point[1].v=8003000b +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030012 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003000f +Entity.point[1].v=8003000c +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030013 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=80030014 +Entity.point[1].v=80030015 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030014 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030015 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030016 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=80030017 +Entity.point[1].v=80030018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030017 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030018 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030019 +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=55.00000000000000000000 +Entity.actNormal.vx=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003001a +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030017 +Entity.point[1].v=80030014 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003001b +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030018 +Entity.point[1].v=80030015 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003001c +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=8003001d +Entity.point[1].v=8003001e +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003001d +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003001e +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003001f +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=80030020 +Entity.point[1].v=80030021 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030020 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030021 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030022 +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=55.00000000000000000000 +Entity.actNormal.vy=-1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030023 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030020 +Entity.point[1].v=8003001d +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030024 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030021 +Entity.point[1].v=8003001e +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030025 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=80030026 +Entity.normal.v=80030027 +Entity.distance.v=80030028 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030026 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030027 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030026 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030028 +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030029 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=8003002a +Entity.normal.v=8003002b +Entity.distance.v=8003002c +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003002a +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003002b +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=8003002a +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003002c +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003002d +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003002a +Entity.point[1].v=80030026 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003002e +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=8003002f +Entity.normal.v=80030030 +Entity.distance.v=80030031 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003002f +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030030 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=8003002f +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030031 +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030032 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=80030033 +Entity.normal.v=80030034 +Entity.distance.v=80030035 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030033 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030034 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030033 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030035 +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030036 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030033 +Entity.point[1].v=8003002f +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030037 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=80030038 +Entity.normal.v=80030039 +Entity.distance.v=8003003a +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030038 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568836773018 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030039 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030038 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003003a +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003003b +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=8003003c +Entity.normal.v=8003003d +Entity.distance.v=8003003e +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003003c +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568836773018 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003003d +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=8003003c +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003003e +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003003f +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003003c +Entity.point[1].v=80030038 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030040 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=80030041 +Entity.normal.v=80030042 +Entity.distance.v=80030043 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030041 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030042 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030041 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030043 +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030044 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=80030045 +Entity.normal.v=80030046 +Entity.distance.v=80030047 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030045 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030046 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030045 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030047 +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030048 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030045 +Entity.point[1].v=80030041 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030049 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=8003004a +Entity.point[1].v=8003004b +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003004a +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003004b +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003004c +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=8003004d +Entity.point[1].v=8003004e +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003004d +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003004e +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003004f +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actNormal.vx=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030050 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003004d +Entity.point[1].v=8003004a +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030051 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003004e +Entity.point[1].v=8003004b +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030052 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=80030053 +Entity.point[1].v=80030054 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030053 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030054 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030055 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=80030056 +Entity.point[1].v=80030057 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030056 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030057 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030058 +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=-47.30801010568836773018 +Entity.actPoint.y=47.30801010568836773018 +Entity.actNormal.vy=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030059 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030056 +Entity.point[1].v=80030053 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003005a +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030057 +Entity.point[1].v=80030054 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003005b +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=8003005c +Entity.normal.v=8003005d +Entity.distance.v=8003005e +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003005c +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=48.92791255195346877827 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003005d +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=8003005c +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003005e +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003005f +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=80030060 +Entity.normal.v=80030061 +Entity.distance.v=80030062 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030060 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=48.92791255195346877827 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030061 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030060 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030062 +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030063 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030060 +Entity.point[1].v=8003005c +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030064 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=80030065 +Entity.normal.v=80030066 +Entity.distance.v=80030067 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030065 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=48.92791255195346877827 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030066 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030065 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030067 +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030068 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=80030069 +Entity.normal.v=8003006a +Entity.distance.v=8003006b +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030069 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=48.92791255195346877827 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003006a +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030069 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003006b +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003006c +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030069 +Entity.point[1].v=80030065 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003006d +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=8003006e +Entity.normal.v=8003006f +Entity.distance.v=80030070 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003006e +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003006f +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=8003006e +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030070 +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030071 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=80030072 +Entity.normal.v=80030073 +Entity.distance.v=80030074 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030072 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030073 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030072 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030074 +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030075 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030072 +Entity.point[1].v=8003006e +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030076 +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=80030077 +Entity.normal.v=80030078 +Entity.distance.v=80030079 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030077 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030078 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030077 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030079 +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003007a +Entity.type=13000 +Entity.construction=0 +Entity.point[0].v=8003007b +Entity.normal.v=8003007c +Entity.distance.v=8003007d +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003007b +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003007c +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=8003007b +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003007d +Entity.type=4001 +Entity.construction=0 +Entity.actDistance=1.50000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003007e +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003007b +Entity.point[1].v=80030077 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003007f +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=80030080 +Entity.point[1].v=80030081 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030080 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030081 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=48.92791255195346877827 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030082 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=80030083 +Entity.point[1].v=80030084 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030083 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030084 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=48.92791255195346877827 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030085 +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actNormal.vx=-0.99999999999999988898 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030086 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030083 +Entity.point[1].v=80030080 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030087 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030084 +Entity.point[1].v=80030081 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030088 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=80030089 +Entity.point[1].v=8003008a +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030089 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003008a +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003008b +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=8003008c +Entity.point[1].v=8003008d +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003008c +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003008d +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003008e +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actNormal.vy=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003008f +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003008c +Entity.point[1].v=80030089 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030090 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003008d +Entity.point[1].v=8003008a +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030091 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=80030092 +Entity.point[1].v=80030093 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030092 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=48.92791255195346877827 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030093 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030094 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=80030095 +Entity.point[1].v=80030096 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030095 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=48.92791255195346877827 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030096 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=-3.17208744804653175464 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030097 +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=48.92791255195346877827 +Entity.actNormal.vx=0.99999999999999988898 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030098 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030095 +Entity.point[1].v=80030092 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030099 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030096 +Entity.point[1].v=80030093 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003009a +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=8003009b +Entity.point[1].v=8003009c +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003009b +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=48.92791255195346877827 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003009c +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=48.92791255195346877827 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003009d +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=8003009e +Entity.point[1].v=8003009f +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003009e +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=48.92791255195346877827 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003009f +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-13.46389692435578488983 +Entity.actPoint.y=48.92791255195346877827 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300a0 +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=11.33610307564421404436 +Entity.actPoint.y=48.92791255195346877827 +Entity.actNormal.vy=-1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300a1 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003009e +Entity.point[1].v=8003009b +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300a2 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003009f +Entity.point[1].v=8003009c +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300a3 +Entity.type=14000 +Entity.construction=0 +Entity.point[0].v=800300a4 +Entity.point[1].v=800300a5 +Entity.point[2].v=800300a6 +Entity.normal.v=800300a7 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300a4 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300a5 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300a6 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300a7 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=800300a4 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300a8 +Entity.type=14000 +Entity.construction=0 +Entity.point[0].v=800300a9 +Entity.point[1].v=800300aa +Entity.point[2].v=800300ab +Entity.normal.v=800300ac +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300a9 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300aa +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300ab +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300ac +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=800300a9 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300ad +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300a9 +Entity.point[1].v=800300a4 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300ae +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300aa +Entity.point[1].v=800300a5 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300af +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300ab +Entity.point[1].v=800300a6 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300b0 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=800300b1 +Entity.point[1].v=800300b2 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300b1 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300b2 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300b3 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=800300b4 +Entity.point[1].v=800300b5 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300b4 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300b5 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300b6 +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actNormal.vx=0.99999999999999988898 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300b7 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300b4 +Entity.point[1].v=800300b1 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300b8 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300b5 +Entity.point[1].v=800300b2 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300b9 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=800300ba +Entity.point[1].v=800300bb +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300ba +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300bb +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300bc +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=800300bd +Entity.point[1].v=800300be +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300bd +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300be +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300bf +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actNormal.vy=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300c0 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300bd +Entity.point[1].v=800300ba +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300c1 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300be +Entity.point[1].v=800300bb +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300c2 +Entity.type=14000 +Entity.construction=0 +Entity.point[0].v=800300c3 +Entity.point[1].v=800300c4 +Entity.point[2].v=800300c5 +Entity.normal.v=800300c6 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300c3 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300c4 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300c5 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300c6 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=800300c3 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300c7 +Entity.type=14000 +Entity.construction=0 +Entity.point[0].v=800300c8 +Entity.point[1].v=800300c9 +Entity.point[2].v=800300ca +Entity.normal.v=800300cb +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300c8 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300c9 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300ca +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300cb +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=800300c8 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300cc +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300c8 +Entity.point[1].v=800300c3 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300cd +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300c9 +Entity.point[1].v=800300c4 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300ce +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300ca +Entity.point[1].v=800300c5 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300cf +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=800300d0 +Entity.point[1].v=800300d1 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300d0 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300d1 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300d2 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=800300d3 +Entity.point[1].v=800300d4 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300d3 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300d4 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000710543 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300d5 +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actNormal.vx=0.99999999999999988898 +Entity.actNormal.vy=0.00000000000000006945 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300d6 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300d3 +Entity.point[1].v=800300d0 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300d7 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300d4 +Entity.point[1].v=800300d1 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300d8 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300d9 +Entity.point[1].v=800300da +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300d9 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300da +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300db +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300dc +Entity.point[1].v=800300dd +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300dc +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300dd +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300de +Entity.type=5001 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=55.00000000000000000000 +Entity.actNormal.vy=-1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300df +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300dc +Entity.point[1].v=800300d9 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300e0 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300dd +Entity.point[1].v=800300da +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300e1 +Entity.type=14000 +Entity.construction=0 +Entity.point[0].v=800300e2 +Entity.point[1].v=800300e3 +Entity.point[2].v=800300e4 +Entity.normal.v=800300e5 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300e2 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300e3 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300e4 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300e5 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=800300e2 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300e6 +Entity.type=14000 +Entity.construction=0 +Entity.point[0].v=800300e7 +Entity.point[1].v=800300e8 +Entity.point[2].v=800300e9 +Entity.normal.v=800300ea +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300e7 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300e8 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300e9 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300ea +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=800300e7 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300eb +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300e7 +Entity.point[1].v=800300e2 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300ec +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300e8 +Entity.point[1].v=800300e3 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300ed +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300e9 +Entity.point[1].v=800300e4 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300ee +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=800300ef +Entity.point[1].v=800300f0 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300ef +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300f0 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300f1 +Entity.type=11000 +Entity.construction=1 +Entity.point[0].v=800300f2 +Entity.point[1].v=800300f3 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300f2 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300f3 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300f4 +Entity.type=5001 +Entity.construction=1 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actNormal.vy=-0.99999999999999988898 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300f5 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300f2 +Entity.point[1].v=800300ef +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300f6 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300f3 +Entity.point[1].v=800300f0 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300f7 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300f8 +Entity.point[1].v=800300f9 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300f8 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300f9 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300fa +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300fb +Entity.point[1].v=800300fc +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300fb +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300fc +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300fd +Entity.type=5001 +Entity.construction=0 +Entity.actPoint.x=55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actNormal.vx=-1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300fe +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300fb +Entity.point[1].v=800300f8 +Entity.actVisible=1 +AddEntity + +Entity.h.v=800300ff +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=800300fc +Entity.point[1].v=800300f9 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030100 +Entity.type=14000 +Entity.construction=0 +Entity.point[0].v=80030101 +Entity.point[1].v=80030102 +Entity.point[2].v=80030103 +Entity.normal.v=80030104 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030101 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030102 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030103 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030104 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030101 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030105 +Entity.type=14000 +Entity.construction=0 +Entity.point[0].v=80030106 +Entity.point[1].v=80030107 +Entity.point[2].v=80030108 +Entity.normal.v=80030109 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030106 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030107 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030108 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030109 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030106 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003010a +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030106 +Entity.point[1].v=80030101 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003010b +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030107 +Entity.point[1].v=80030102 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003010c +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030108 +Entity.point[1].v=80030103 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003010d +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003010e +Entity.point[1].v=8003010f +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003010e +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003010f +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030110 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030111 +Entity.point[1].v=80030112 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030111 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030112 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=47.30801010568836773018 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030113 +Entity.type=5001 +Entity.construction=0 +Entity.actPoint.x=-55.00000000000000000000 +Entity.actPoint.y=-47.30801010568836773018 +Entity.actNormal.vx=-1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030114 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030111 +Entity.point[1].v=8003010e +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030115 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030112 +Entity.point[1].v=8003010f +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030116 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030117 +Entity.point[1].v=80030118 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030117 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030118 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030119 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003011a +Entity.point[1].v=8003011b +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003011a +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003011b +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.x=47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003011c +Entity.type=5001 +Entity.construction=0 +Entity.actPoint.x=-47.30801010568837483561 +Entity.actPoint.y=-55.00000000000000000000 +Entity.actNormal.vy=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003011d +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003011a +Entity.point[1].v=80030117 +Entity.actVisible=1 +AddEntity + +Entity.h.v=8003011e +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=8003011b +Entity.point[1].v=80030118 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030121 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030122 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030122 +Entity.type=2010 +Entity.construction=0 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030123 +Entity.type=3010 +Entity.construction=0 +Entity.point[0].v=80030124 +Entity.actNormal.w=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030124 +Entity.type=2010 +Entity.construction=0 +Entity.actPoint.z=138.23999999999995225153 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030125 +Entity.type=11000 +Entity.construction=0 +Entity.point[0].v=80030124 +Entity.point[1].v=80030122 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030126 +Entity.type=5000 +Entity.construction=0 +Entity.point[0].v=80030124 +Entity.actPoint.z=138.23999999999995225153 +Entity.actNormal.vz=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Entity.h.v=80030127 +Entity.type=5000 +Entity.construction=0 +Entity.point[0].v=80030122 +Entity.actNormal.vz=1.00000000000000000000 +Entity.actVisible=1 +AddEntity + +Constraint.h.v=00000001 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00040001 +Constraint.ptB.v=00050002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000002 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00050001 +Constraint.ptB.v=00060002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000003 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00060001 +Constraint.ptB.v=00070002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000004 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00070001 +Constraint.ptB.v=00040002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000006 +Constraint.type=80 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00050000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000007 +Constraint.type=81 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00060000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000009 +Constraint.type=60 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00070001 +Constraint.ptB.v=00050002 +Constraint.entityA.v=00030000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000000a +Constraint.type=60 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00070002 +Constraint.ptB.v=00070001 +Constraint.entityA.v=00020000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000000b +Constraint.type=30 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.valA=110.00000000000000000000 +Constraint.ptA.v=00070001 +Constraint.ptB.v=00070002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +Constraint.disp.offset.x=11.31200000000002958700 +Constraint.disp.offset.y=15.07199999999999384670 +AddConstraint + +Constraint.h.v=0000000c +Constraint.type=50 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00040000 +Constraint.entityB.v=00070000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000000e +Constraint.type=60 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=000a0001 +Constraint.ptB.v=00090001 +Constraint.entityA.v=00030000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000000f +Constraint.type=60 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=000b0001 +Constraint.ptB.v=000a0001 +Constraint.entityA.v=00020000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000010 +Constraint.type=130 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=000a0000 +Constraint.entityB.v=000b0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000011 +Constraint.type=130 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=000a0000 +Constraint.entityB.v=00090000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000012 +Constraint.type=130 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00080000 +Constraint.entityB.v=00090000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000013 +Constraint.type=90 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.valA=3.00000000000000000000 +Constraint.entityA.v=00080000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +Constraint.disp.offset.x=22.17599999999998772182 +Constraint.disp.offset.y=-23.61600000000000321165 +AddConstraint + +Constraint.h.v=00000014 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00080001 +Constraint.ptB.v=000c0001 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000015 +Constraint.type=81 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=000c0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000016 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=000b0001 +Constraint.ptB.v=000c0002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000017 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=000c0001 +Constraint.ptB.v=000d0001 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000018 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00090001 +Constraint.ptB.v=000d0002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000019 +Constraint.type=80 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=000d0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000001a +Constraint.type=50 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=000d0000 +Constraint.entityB.v=000c0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000001b +Constraint.type=130 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00110000 +Constraint.entityB.v=000f0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000001c +Constraint.type=130 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=000f0000 +Constraint.entityB.v=000e0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000001d +Constraint.type=130 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00100000 +Constraint.entityB.v=000e0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000001e +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00120001 +Constraint.ptB.v=00130002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000001f +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00130001 +Constraint.ptB.v=00140002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000020 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00140001 +Constraint.ptB.v=00150002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000021 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00150001 +Constraint.ptB.v=00120002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000022 +Constraint.type=81 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00120000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000023 +Constraint.type=80 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00130000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000024 +Constraint.type=81 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00140000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000025 +Constraint.type=80 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00150000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000026 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=000e0001 +Constraint.ptB.v=00140001 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000027 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00130002 +Constraint.ptB.v=00110001 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000028 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00100001 +Constraint.ptB.v=00140002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000029 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=000f0001 +Constraint.ptB.v=00150001 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000002a +Constraint.type=30 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.valA=24.80000000000000071054 +Constraint.ptA.v=00150001 +Constraint.ptB.v=00150002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +Constraint.disp.offset.y=10.00000000000000000000 +AddConstraint + +Constraint.h.v=0000002b +Constraint.type=30 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.valA=52.10000000000000142109 +Constraint.ptA.v=00140001 +Constraint.ptB.v=00140002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +Constraint.disp.offset.x=-10.00000000000000000000 +AddConstraint + +Constraint.h.v=0000002c +Constraint.type=90 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.valA=3.00000000000000000000 +Constraint.entityA.v=000e0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +Constraint.disp.offset.x=-21.79999999999999360512 +Constraint.disp.offset.y=-11.19999999999999928946 +AddConstraint + +Constraint.h.v=0000002d +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00170001 +Constraint.ptB.v=00160003 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000002e +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00170002 +Constraint.ptB.v=00050001 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000002f +Constraint.type=42 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00170001 +Constraint.entityA.v=00060000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000030 +Constraint.type=123 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00160000 +Constraint.entityB.v=00170000 +Constraint.other=1 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000031 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00180001 +Constraint.ptB.v=00160002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000032 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00180002 +Constraint.ptB.v=00040002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000033 +Constraint.type=42 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00180001 +Constraint.entityA.v=00070000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000034 +Constraint.type=123 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00160000 +Constraint.entityB.v=00180000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000035 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=001a0001 +Constraint.ptB.v=00190002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000036 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=001a0002 +Constraint.ptB.v=00040001 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000037 +Constraint.type=42 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=001a0001 +Constraint.entityA.v=00040000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000038 +Constraint.type=123 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00190000 +Constraint.entityB.v=001a0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000039 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=001b0001 +Constraint.ptB.v=00190003 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000003a +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=001b0002 +Constraint.ptB.v=00160002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000003b +Constraint.type=42 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=001b0001 +Constraint.entityA.v=00180000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000003c +Constraint.type=123 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00190000 +Constraint.entityB.v=001b0000 +Constraint.other=1 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000003d +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=001d0001 +Constraint.ptB.v=001c0002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000003e +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=001d0002 +Constraint.ptB.v=00050001 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000003f +Constraint.type=42 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=001d0001 +Constraint.entityA.v=00050000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000040 +Constraint.type=123 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=001c0000 +Constraint.entityB.v=001d0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000041 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=001e0001 +Constraint.ptB.v=001c0003 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000042 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=001e0002 +Constraint.ptB.v=00190002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000043 +Constraint.type=42 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=001e0001 +Constraint.entityA.v=001a0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000044 +Constraint.type=123 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=001c0000 +Constraint.entityB.v=001e0000 +Constraint.other=1 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000045 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00200001 +Constraint.ptB.v=001f0002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000046 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00200002 +Constraint.ptB.v=00160003 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000047 +Constraint.type=42 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00200001 +Constraint.entityA.v=00170000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000048 +Constraint.type=123 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=001f0000 +Constraint.entityB.v=00200000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000049 +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00210001 +Constraint.ptB.v=001f0003 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000004a +Constraint.type=20 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00210002 +Constraint.ptB.v=001c0002 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000004b +Constraint.type=42 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00210001 +Constraint.entityA.v=001d0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000004c +Constraint.type=123 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=001f0000 +Constraint.entityB.v=00210000 +Constraint.other=1 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000004d +Constraint.type=130 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=001f0000 +Constraint.entityB.v=001c0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000004e +Constraint.type=130 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00190000 +Constraint.entityB.v=001c0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=0000004f +Constraint.type=130 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.entityA.v=00190000 +Constraint.entityB.v=00160000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Constraint.h.v=00000050 +Constraint.type=42 +Constraint.group.v=00000002 +Constraint.workplane.v=80020000 +Constraint.ptA.v=00160001 +Constraint.entityA.v=000d0000 +Constraint.other=0 +Constraint.other2=0 +Constraint.reference=0 +AddConstraint + +Surface 00000001 00646464 80030126 1 1 +SCtrl 0 0 -55.00000000000000710543 55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 54.99999999999999289457 55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 1 0 -55.00000000000000710543 -55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 1 1 54.99999999999999289457 -55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +TrimBy 00000016 0 -55.00000000000000710543 47.30801010568836773018 138.23999999999995225153 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 +TrimBy 00000004 0 47.30801010568836773018 54.99999999999999289457 138.23999999999992382982 54.99999999999999289457 47.30801010568836773018 138.23999999999995225153 +TrimBy 00000007 0 54.99999999999999289457 47.30801010568836773018 138.23999999999995225153 54.99999999999999289457 -47.30801010568836773018 138.23999999999995225153 +TrimBy 0000000a 0 55.00000000000002131628 -47.30801010568836773018 138.23999999999995225153 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 +TrimBy 0000000d 0 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 -47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 +TrimBy 00000010 0 -47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 -55.00000000000000000000 -47.30801010568836062475 138.23999999999995225153 +TrimBy 00000013 0 -55.00000000000000000000 -47.30801010568836062475 138.23999999999995225153 -55.00000000000000000000 47.30801010568836062475 138.23999999999995225153 +TrimBy 00000001 0 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 +TrimBy 00000022 0 -47.30801010568836062475 45.80801010568837483561 138.23999999999995225153 -45.80801010568836062475 47.30801010568837483561 138.23999999999995225153 +TrimBy 00000019 0 -45.80801010568836062475 47.30801010568837483561 138.23999999999995225153 -47.30801010568837483561 48.80801010568836773018 138.23999999999995225153 +TrimBy 0000001c 0 -47.30801010568837483561 48.80801010568836773018 138.23999999999995225153 -48.80801010568836773018 47.30801010568836062475 138.23999999999992382982 +TrimBy 0000001f 0 -48.80801010568836773018 47.30801010568836062475 138.23999999999992382982 -47.30801010568836062475 45.80801010568837483561 138.23999999999995225153 +TrimBy 0000002e 0 47.30801010568836062475 45.80801010568836773018 138.23999999999995225153 48.80801010568836062475 47.30801010568836773018 138.23999999999992382982 +TrimBy 00000025 0 48.80801010568836062475 47.30801010568836773018 138.23999999999992382982 47.30801010568836062475 48.80801010568836773018 138.23999999999995225153 +TrimBy 00000028 0 47.30801010568836062475 48.80801010568836773018 138.23999999999995225153 45.80801010568835351933 47.30801010568837483561 138.23999999999995225153 +TrimBy 0000002b 0 45.80801010568835351933 47.30801010568837483561 138.23999999999995225153 47.30801010568836062475 45.80801010568836773018 138.23999999999995225153 +TrimBy 0000003a 0 47.30801010568835351933 -48.80801010568836773018 138.23999999999995225153 48.80801010568836062475 -47.30801010568836773018 138.23999999999995225153 +TrimBy 00000031 0 48.80801010568836062475 -47.30801010568836773018 138.23999999999995225153 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 +TrimBy 00000034 0 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 45.80801010568836062475 -47.30801010568837483561 138.23999999999995225153 +TrimBy 00000037 0 45.80801010568836062475 -47.30801010568837483561 138.23999999999995225153 47.30801010568835351933 -48.80801010568836773018 138.23999999999995225153 +TrimBy 00000046 0 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 -45.80801010568836773018 -47.30801010568837483561 138.23999999999995225153 +TrimBy 0000003d 0 -45.80801010568836773018 -47.30801010568837483561 138.23999999999995225153 -47.30801010568836773018 -45.80801010568837483561 138.23999999999998067324 +TrimBy 00000040 0 -47.30801010568836773018 -45.80801010568837483561 138.23999999999998067324 -48.80801010568836773018 -47.30801010568836062475 138.23999999999992382982 +TrimBy 00000043 0 -48.80801010568836773018 -47.30801010568836062475 138.23999999999992382982 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 +TrimBy 00000052 0 -13.46389692435577600804 47.42791255195346877827 138.23999999999992382982 -11.96389692435577956076 48.92791255195346167284 138.23999999999995225153 +TrimBy 00000049 0 -11.96389692435577956076 48.92791255195346167284 138.23999999999995225153 -13.46389692435578311347 50.42791255195346877827 138.23999999999995225153 +TrimBy 0000004c 0 -13.46389692435578311347 50.42791255195346877827 138.23999999999995225153 -14.96389692435578844254 48.92791255195347588369 138.23999999999998067324 +TrimBy 0000004f 0 -14.96389692435578844254 48.92791255195347588369 138.23999999999998067324 -13.46389692435577600804 47.42791255195346877827 138.23999999999992382982 +TrimBy 0000005e 0 11.33610307564421049165 47.42791255195347588369 138.23999999999992382982 12.83610307564420693893 48.92791255195347588369 138.23999999999995225153 +TrimBy 00000055 0 12.83610307564420693893 48.92791255195347588369 138.23999999999995225153 11.33610307564420871529 50.42791255195346167284 138.23999999999995225153 +TrimBy 00000058 0 11.33610307564420871529 50.42791255195346167284 138.23999999999995225153 9.83610307564420693893 48.92791255195346877827 138.23999999999998067324 +TrimBy 0000005b 0 9.83610307564420693893 48.92791255195346877827 138.23999999999998067324 11.33610307564421049165 47.42791255195347588369 138.23999999999992382982 +TrimBy 0000006a 0 -13.46389692435577956076 -4.67208744804652731375 138.23999999999995225153 -11.96389692435577778440 -3.17208744804653974825 138.23999999999992382982 +TrimBy 00000061 0 -11.96389692435577778440 -3.17208744804653974825 138.23999999999992382982 -13.46389692435577778440 -1.67208744804653619553 138.23999999999995225153 +TrimBy 00000064 0 -13.46389692435577778440 -1.67208744804653619553 138.23999999999995225153 -14.96389692435578488983 -3.17208744804654330096 138.23999999999995225153 +TrimBy 00000067 0 -14.96389692435578488983 -3.17208744804654330096 138.23999999999995225153 -13.46389692435577956076 -4.67208744804652731375 138.23999999999995225153 +TrimBy 00000076 0 11.33610307564420693893 -4.67208744804653264282 138.23999999999995225153 12.83610307564421049165 -3.17208744804654152460 138.23999999999995225153 +TrimBy 0000006d 0 12.83610307564421049165 -3.17208744804654152460 138.23999999999995225153 11.33610307564420693893 -1.67208744804653441918 138.23999999999995225153 +TrimBy 00000070 0 11.33610307564420693893 -1.67208744804653441918 138.23999999999995225153 9.83610307564420338622 -3.17208744804653974825 138.23999999999995225153 +TrimBy 00000073 0 9.83610307564420338622 -3.17208744804653974825 138.23999999999995225153 11.33610307564420693893 -4.67208744804653264282 138.23999999999995225153 +AddSurface +Surface 00000002 00646464 80030127 1 1 +SCtrl 0 0 54.99999999999999289457 55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 0 1 -55.00000000000000710543 55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 54.99999999999999289457 -55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 1 -55.00000000000000710543 -55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000011 1 -55.00000000000000710543 -47.30801010568836773018 0.00000000000000000000 -47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 +TrimBy 00000002 1 47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 +TrimBy 00000017 1 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 -55.00000000000000710543 47.30801010568836773018 0.00000000000000000000 +TrimBy 00000005 1 55.00000000000000710543 47.30801010568837483561 0.00000000000000000000 47.30801010568836773018 54.99999999999999289457 0.00000000000000000000 +TrimBy 00000008 1 55.00000000000000710543 -47.30801010568837483561 0.00000000000000000000 55.00000000000000710543 47.30801010568837483561 0.00000000000000000000 +TrimBy 00000014 1 -55.00000000000000710543 47.30801010568836773018 0.00000000000000000000 -55.00000000000000710543 -47.30801010568836773018 0.00000000000000000000 +TrimBy 0000000b 1 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 55.00000000000001421085 -47.30801010568837483561 0.00000000000000000000 +TrimBy 0000000e 1 -47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 +TrimBy 00000020 1 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 -48.80801010568838194104 47.30801010568836773018 0.00000000000000000000 +TrimBy 0000001a 1 -47.30801010568837483561 48.80801010568836773018 0.00000000000000000000 -45.80801010568836062475 47.30801010568837483561 0.00000000000000000000 +TrimBy 00000023 1 -45.80801010568836062475 47.30801010568837483561 0.00000000000000000000 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 +TrimBy 0000001d 1 -48.80801010568838194104 47.30801010568836773018 0.00000000000000000000 -47.30801010568837483561 48.80801010568836773018 0.00000000000000000000 +TrimBy 0000002c 1 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +TrimBy 00000026 1 47.30801010568837483561 48.80801010568836773018 0.00000000000000000000 48.80801010568836773018 47.30801010568836062475 0.00000000000000000000 +TrimBy 0000002f 1 48.80801010568836773018 47.30801010568836062475 0.00000000000000000000 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 +TrimBy 00000029 1 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 47.30801010568837483561 48.80801010568836773018 0.00000000000000000000 +TrimBy 00000038 1 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 45.80801010568837483561 -47.30801010568836773018 0.00000000000000000000 +TrimBy 00000032 1 47.30801010568837483561 -45.80801010568836773018 0.00000000000000000000 48.80801010568836773018 -47.30801010568836062475 0.00000000000000000000 +TrimBy 0000003b 1 48.80801010568836773018 -47.30801010568836062475 0.00000000000000000000 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 +TrimBy 00000035 1 45.80801010568837483561 -47.30801010568836773018 0.00000000000000000000 47.30801010568837483561 -45.80801010568836773018 0.00000000000000000000 +TrimBy 00000044 1 -47.30801010568837483561 -48.80801010568836773018 0.00000000000000000000 -48.80801010568837483561 -47.30801010568836773018 0.00000000000000000000 +TrimBy 0000003e 1 -47.30801010568837483561 -45.80801010568836773018 0.00000000000000000000 -45.80801010568836773018 -47.30801010568837483561 0.00000000000000000000 +TrimBy 00000047 1 -45.80801010568836773018 -47.30801010568837483561 0.00000000000000000000 -47.30801010568837483561 -48.80801010568836773018 0.00000000000000000000 +TrimBy 00000041 1 -48.80801010568837483561 -47.30801010568836773018 0.00000000000000000000 -47.30801010568837483561 -45.80801010568836773018 0.00000000000000000000 +TrimBy 00000050 1 -13.46389692435577600804 47.42791255195346877827 0.00000000000000000000 -14.96389692435578666618 48.92791255195346167284 0.00000000000000000000 +TrimBy 0000004a 1 -13.46389692435578311347 50.42791255195346877827 0.00000000000000000000 -11.96389692435579199525 48.92791255195348298912 0.00000000000000000000 +TrimBy 00000053 1 -11.96389692435579199525 48.92791255195348298912 0.00000000000000000000 -13.46389692435577600804 47.42791255195346877827 0.00000000000000000000 +TrimBy 0000004d 1 -14.96389692435578666618 48.92791255195346167284 0.00000000000000000000 -13.46389692435578311347 50.42791255195346877827 0.00000000000000000000 +TrimBy 0000005c 1 11.33610307564421049165 47.42791255195347588369 0.00000000000000000000 9.83610307564421049165 48.92791255195347588369 0.00000000000000000000 +TrimBy 00000056 1 11.33610307564420871529 50.42791255195346167284 0.00000000000000000000 12.83610307564420338622 48.92791255195346167284 0.00000000000000000000 +TrimBy 0000005f 1 12.83610307564420338622 48.92791255195346167284 0.00000000000000000000 11.33610307564421049165 47.42791255195347588369 0.00000000000000000000 +TrimBy 00000059 1 9.83610307564421049165 48.92791255195347588369 0.00000000000000000000 11.33610307564420871529 50.42791255195346167284 0.00000000000000000000 +TrimBy 00000068 1 -13.46389692435578133711 -4.67208744804652731375 0.00000000000000000000 -14.96389692435578488983 -3.17208744804654330096 0.00000000000000000000 +TrimBy 00000062 1 -13.46389692435577956076 -1.67208744804653619553 0.00000000000000000000 -11.96389692435579021890 -3.17208744804654152460 0.00000000000000000000 +TrimBy 0000006b 1 -11.96389692435579021890 -3.17208744804654152460 0.00000000000000000000 -13.46389692435578133711 -4.67208744804652731375 0.00000000000000000000 +TrimBy 00000065 1 -14.96389692435578488983 -3.17208744804654330096 0.00000000000000000000 -13.46389692435577956076 -1.67208744804653619553 0.00000000000000000000 +TrimBy 00000074 1 11.33610307564420871529 -4.67208744804653264282 0.00000000000000000000 9.83610307564420338622 -3.17208744804653797189 0.00000000000000000000 +TrimBy 0000006e 1 11.33610307564420693893 -1.67208744804653441918 0.00000000000000000000 12.83610307564420693893 -3.17208744804654152460 0.00000000000000000000 +TrimBy 00000077 1 12.83610307564420693893 -3.17208744804654152460 0.00000000000000000000 11.33610307564420871529 -4.67208744804653264282 0.00000000000000000000 +TrimBy 00000071 1 9.83610307564420338622 -3.17208744804653797189 0.00000000000000000000 11.33610307564420693893 -1.67208744804653441918 0.00000000000000000000 +AddSurface +Surface 00000003 00646464 800300de 1 1 +SCtrl 0 0 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 1 1 47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000002 0 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 +TrimBy 00000001 1 47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 +TrimBy 00000018 0 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 +TrimBy 00000003 1 47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 +AddSurface +Surface 00000004 00646464 00000000 2 1 +SCtrl 0 0 47.30801010568837483561 54.99999999999999289457 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 47.30801010568837483561 54.99999999999999289457 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 55.00000000000000000000 54.99999999999999289457 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 55.00000000000000000000 54.99999999999999289457 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000005 0 47.30801010568837483561 54.99999999999999289457 0.00000000000000000000 55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 +TrimBy 00000004 1 55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 47.30801010568837483561 54.99999999999999289457 138.23999999999995225153 +TrimBy 00000003 0 47.30801010568837483561 54.99999999999999289457 138.23999999999995225153 47.30801010568837483561 54.99999999999999289457 0.00000000000000000000 +TrimBy 00000006 1 55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 +AddSurface +Surface 00000005 00646464 800300fd 1 1 +SCtrl 0 0 55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 1 1 55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000008 0 55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 +TrimBy 00000007 1 55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 +TrimBy 00000006 0 55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 +TrimBy 00000009 1 55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 +AddSurface +Surface 00000006 00646464 00000000 2 1 +SCtrl 0 0 55.00000000000000710543 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 55.00000000000000710543 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 55.00000000000000710543 -55.00000000000000000000 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 55.00000000000000710543 -55.00000000000000000000 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000000b 0 55.00000000000000710543 -47.30801010568836773018 0.00000000000000000000 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 +TrimBy 0000000a 1 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 55.00000000000000710543 -47.30801010568836773018 138.23999999999995225153 +TrimBy 00000009 0 55.00000000000000710543 -47.30801010568836773018 138.23999999999995225153 55.00000000000000710543 -47.30801010568836773018 0.00000000000000000000 +TrimBy 0000000c 1 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 +AddSurface +Surface 00000007 00646464 8003011c 1 1 +SCtrl 0 0 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 1 1 -47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000000e 0 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 -47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 +TrimBy 0000000d 1 -47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 +TrimBy 0000000c 0 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 +TrimBy 0000000f 1 -47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 -47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 +AddSurface +Surface 00000008 00646464 00000000 2 1 +SCtrl 0 0 -47.30801010568837483561 -54.99999999999999289457 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -47.30801010568837483561 -54.99999999999999289457 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -55.00000000000000000000 -54.99999999999999289457 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -55.00000000000000000000 -54.99999999999999289457 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000011 0 -47.30801010568837483561 -54.99999999999999289457 0.00000000000000000000 -55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 +TrimBy 00000010 1 -55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 -47.30801010568837483561 -54.99999999999999289457 138.23999999999995225153 +TrimBy 0000000f 0 -47.30801010568837483561 -54.99999999999999289457 138.23999999999995225153 -47.30801010568837483561 -54.99999999999999289457 0.00000000000000000000 +TrimBy 00000012 1 -55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 -55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 +AddSurface +Surface 00000009 00646464 80030113 1 1 +SCtrl 0 0 -55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 1 1 -55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000014 0 -55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 -55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 +TrimBy 00000013 1 -55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 -55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 +TrimBy 00000012 0 -55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 -55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 +TrimBy 00000015 1 -55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 -55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 +AddSurface +Surface 0000000a 00646464 00000000 2 1 +SCtrl 0 0 -55.00000000000000710543 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -55.00000000000000710543 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -55.00000000000000710543 55.00000000000000000000 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -55.00000000000000710543 55.00000000000000000000 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000017 0 -55.00000000000000710543 47.30801010568836773018 0.00000000000000000000 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 +TrimBy 00000016 1 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 -55.00000000000000710543 47.30801010568836773018 138.23999999999995225153 +TrimBy 00000015 0 -55.00000000000000710543 47.30801010568836773018 138.23999999999995225153 -55.00000000000000710543 47.30801010568836773018 0.00000000000000000000 +TrimBy 00000018 1 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 +AddSurface +Surface 0000000b 00646464 00000000 2 1 +SCtrl 0 0 -45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -45.80801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -45.80801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000001a 0 -45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 -47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 +TrimBy 00000019 1 -47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 -45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +TrimBy 00000024 0 -45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 -45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +TrimBy 0000001b 1 -47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 -47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 +AddSurface +Surface 0000000c 00646464 00000000 2 1 +SCtrl 0 0 -47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -48.80801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -48.80801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000001d 0 -47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 -48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +TrimBy 0000001c 1 -48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 -47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 +TrimBy 0000001b 0 -47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 -47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 +TrimBy 0000001e 1 -48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 -48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +AddSurface +Surface 0000000d 00646464 00000000 2 1 +SCtrl 0 0 -48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -48.80801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -48.80801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000020 0 -48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 +TrimBy 0000001f 1 -47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 -48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +TrimBy 0000001e 0 -48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 -48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +TrimBy 00000021 1 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 -47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 +AddSurface +Surface 0000000e 00646464 00000000 2 1 +SCtrl 0 0 -47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -45.80801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -45.80801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000023 0 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 -45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +TrimBy 00000022 1 -45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 -47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 +TrimBy 00000021 0 -47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 +TrimBy 00000024 1 -45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 -45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +AddSurface +Surface 0000000f 00646464 00000000 2 1 +SCtrl 0 0 48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 48.80801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 48.80801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000026 0 48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 +TrimBy 00000025 1 47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +TrimBy 00000030 0 48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +TrimBy 00000027 1 47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 +AddSurface +Surface 00000010 00646464 00000000 2 1 +SCtrl 0 0 47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 45.80801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 45.80801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000029 0 47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +TrimBy 00000028 1 45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 +TrimBy 00000027 0 47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 +TrimBy 0000002a 1 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +AddSurface +Surface 00000011 00646464 00000000 2 1 +SCtrl 0 0 45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 45.80801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 45.80801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000002c 0 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 +TrimBy 0000002b 1 47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +TrimBy 0000002a 0 45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +TrimBy 0000002d 1 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 +AddSurface +Surface 00000012 00646464 00000000 2 1 +SCtrl 0 0 47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 48.80801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 48.80801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000002f 0 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +TrimBy 0000002e 1 48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 +TrimBy 0000002d 0 47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 +TrimBy 00000030 1 48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +AddSurface +Surface 00000013 00646464 00000000 2 1 +SCtrl 0 0 48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 48.80801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 48.80801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000032 0 48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 +TrimBy 00000031 1 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +TrimBy 0000003c 0 48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +TrimBy 00000033 1 47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 +AddSurface +Surface 00000014 00646464 00000000 2 1 +SCtrl 0 0 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 45.80801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 45.80801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000035 0 47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +TrimBy 00000034 1 45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 +TrimBy 00000033 0 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 +TrimBy 00000036 1 45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +AddSurface +Surface 00000015 00646464 00000000 2 1 +SCtrl 0 0 45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 45.80801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 45.80801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000038 0 45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 +TrimBy 00000037 1 47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +TrimBy 00000036 0 45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +TrimBy 00000039 1 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 +AddSurface +Surface 00000016 00646464 00000000 2 1 +SCtrl 0 0 47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 48.80801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 48.80801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000003b 0 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +TrimBy 0000003a 1 48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 +TrimBy 00000039 0 47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 +TrimBy 0000003c 1 48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +AddSurface +Surface 00000017 00646464 00000000 2 1 +SCtrl 0 0 -45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -45.80801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -45.80801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000003e 0 -45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 -47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 +TrimBy 0000003d 1 -47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 -45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +TrimBy 00000048 0 -45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 -45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +TrimBy 0000003f 1 -47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 -47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 +AddSurface +Surface 00000018 00646464 00000000 2 1 +SCtrl 0 0 -47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -48.80801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -48.80801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000041 0 -47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 -48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +TrimBy 00000040 1 -48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 -47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 +TrimBy 0000003f 0 -47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 -47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 +TrimBy 00000042 1 -48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 -48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +AddSurface +Surface 00000019 00646464 00000000 2 1 +SCtrl 0 0 -48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -48.80801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -48.80801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000044 0 -48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 -47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 +TrimBy 00000043 1 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 -48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +TrimBy 00000042 0 -48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 -48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +TrimBy 00000045 1 -47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 +AddSurface +Surface 0000001a 00646464 00000000 2 1 +SCtrl 0 0 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -45.80801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -45.80801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000047 0 -47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 -45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +TrimBy 00000046 1 -45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 +TrimBy 00000045 0 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 -47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 +TrimBy 00000048 1 -45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 -45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +AddSurface +Surface 0000001b 00646464 00000000 2 1 +SCtrl 0 0 -11.96389692435578488983 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -11.96389692435578488983 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -11.96389692435578488983 50.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -11.96389692435578488983 50.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -13.46389692435578488983 50.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -13.46389692435578488983 50.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000004a 0 -11.96389692435578488983 48.92791255195346877827 0.00000000000000000000 -13.46389692435578488983 50.42791255195346877827 0.00000000000000000000 +TrimBy 00000049 1 -13.46389692435578488983 50.42791255195346877827 138.23999999999995225153 -11.96389692435578488983 48.92791255195346877827 138.23999999999995225153 +TrimBy 00000054 0 -11.96389692435578488983 48.92791255195346877827 138.23999999999995225153 -11.96389692435578488983 48.92791255195346877827 0.00000000000000000000 +TrimBy 0000004b 1 -13.46389692435578488983 50.42791255195346877827 0.00000000000000000000 -13.46389692435578488983 50.42791255195346877827 138.23999999999995225153 +AddSurface +Surface 0000001c 00646464 00000000 2 1 +SCtrl 0 0 -13.46389692435578488983 50.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -13.46389692435578488983 50.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -14.96389692435578488983 50.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -14.96389692435578488983 50.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -14.96389692435578488983 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -14.96389692435578488983 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000004d 0 -13.46389692435578488983 50.42791255195346877827 0.00000000000000000000 -14.96389692435578488983 48.92791255195346877827 0.00000000000000000000 +TrimBy 0000004c 1 -14.96389692435578488983 48.92791255195346877827 138.23999999999995225153 -13.46389692435578488983 50.42791255195346877827 138.23999999999995225153 +TrimBy 0000004b 0 -13.46389692435578488983 50.42791255195346877827 138.23999999999995225153 -13.46389692435578488983 50.42791255195346877827 0.00000000000000000000 +TrimBy 0000004e 1 -14.96389692435578488983 48.92791255195346877827 0.00000000000000000000 -14.96389692435578488983 48.92791255195346877827 138.23999999999995225153 +AddSurface +Surface 0000001d 00646464 00000000 2 1 +SCtrl 0 0 -14.96389692435578488983 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -14.96389692435578488983 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -14.96389692435578488983 47.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -14.96389692435578488983 47.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -13.46389692435578488983 47.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -13.46389692435578488983 47.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000050 0 -14.96389692435578488983 48.92791255195346877827 0.00000000000000000000 -13.46389692435578488983 47.42791255195346877827 0.00000000000000000000 +TrimBy 0000004f 1 -13.46389692435578488983 47.42791255195346877827 138.23999999999995225153 -14.96389692435578488983 48.92791255195346877827 138.23999999999995225153 +TrimBy 0000004e 0 -14.96389692435578488983 48.92791255195346877827 138.23999999999995225153 -14.96389692435578488983 48.92791255195346877827 0.00000000000000000000 +TrimBy 00000051 1 -13.46389692435578488983 47.42791255195346877827 0.00000000000000000000 -13.46389692435578488983 47.42791255195346877827 138.23999999999995225153 +AddSurface +Surface 0000001e 00646464 00000000 2 1 +SCtrl 0 0 -13.46389692435578488983 47.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -13.46389692435578488983 47.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -11.96389692435578488983 47.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -11.96389692435578488983 47.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -11.96389692435578488983 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -11.96389692435578488983 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000053 0 -13.46389692435578488983 47.42791255195346877827 0.00000000000000000000 -11.96389692435578488983 48.92791255195346877827 0.00000000000000000000 +TrimBy 00000052 1 -11.96389692435578488983 48.92791255195346877827 138.23999999999995225153 -13.46389692435578488983 47.42791255195346877827 138.23999999999995225153 +TrimBy 00000051 0 -13.46389692435578488983 47.42791255195346877827 138.23999999999995225153 -13.46389692435578488983 47.42791255195346877827 0.00000000000000000000 +TrimBy 00000054 1 -11.96389692435578488983 48.92791255195346877827 0.00000000000000000000 -11.96389692435578488983 48.92791255195346877827 138.23999999999995225153 +AddSurface +Surface 0000001f 00646464 00000000 2 1 +SCtrl 0 0 12.83610307564421404436 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 12.83610307564421404436 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 12.83610307564421404436 50.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 12.83610307564421404436 50.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 11.33610307564421404436 50.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 11.33610307564421404436 50.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000056 0 12.83610307564421404436 48.92791255195346877827 0.00000000000000000000 11.33610307564421404436 50.42791255195346877827 0.00000000000000000000 +TrimBy 00000055 1 11.33610307564421404436 50.42791255195346877827 138.23999999999995225153 12.83610307564421404436 48.92791255195346877827 138.23999999999995225153 +TrimBy 00000060 0 12.83610307564421404436 48.92791255195346877827 138.23999999999995225153 12.83610307564421404436 48.92791255195346877827 0.00000000000000000000 +TrimBy 00000057 1 11.33610307564421404436 50.42791255195346877827 0.00000000000000000000 11.33610307564421404436 50.42791255195346877827 138.23999999999995225153 +AddSurface +Surface 00000020 00646464 00000000 2 1 +SCtrl 0 0 11.33610307564421404436 50.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 11.33610307564421404436 50.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 9.83610307564421404436 50.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 9.83610307564421404436 50.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 9.83610307564421404436 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 9.83610307564421404436 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000059 0 11.33610307564421404436 50.42791255195346877827 0.00000000000000000000 9.83610307564421404436 48.92791255195346877827 0.00000000000000000000 +TrimBy 00000058 1 9.83610307564421404436 48.92791255195346877827 138.23999999999995225153 11.33610307564421404436 50.42791255195346877827 138.23999999999995225153 +TrimBy 00000057 0 11.33610307564421404436 50.42791255195346877827 138.23999999999995225153 11.33610307564421404436 50.42791255195346877827 0.00000000000000000000 +TrimBy 0000005a 1 9.83610307564421404436 48.92791255195346877827 0.00000000000000000000 9.83610307564421404436 48.92791255195346877827 138.23999999999995225153 +AddSurface +Surface 00000021 00646464 00000000 2 1 +SCtrl 0 0 9.83610307564421404436 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 9.83610307564421404436 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 9.83610307564421404436 47.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 9.83610307564421404436 47.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 11.33610307564421404436 47.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 11.33610307564421404436 47.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000005c 0 9.83610307564421404436 48.92791255195346877827 0.00000000000000000000 11.33610307564421404436 47.42791255195346877827 0.00000000000000000000 +TrimBy 0000005b 1 11.33610307564421404436 47.42791255195346877827 138.23999999999995225153 9.83610307564421404436 48.92791255195346877827 138.23999999999995225153 +TrimBy 0000005a 0 9.83610307564421404436 48.92791255195346877827 138.23999999999995225153 9.83610307564421404436 48.92791255195346877827 0.00000000000000000000 +TrimBy 0000005d 1 11.33610307564421404436 47.42791255195346877827 0.00000000000000000000 11.33610307564421404436 47.42791255195346877827 138.23999999999995225153 +AddSurface +Surface 00000022 00646464 00000000 2 1 +SCtrl 0 0 11.33610307564421404436 47.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 11.33610307564421404436 47.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 12.83610307564421404436 47.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 12.83610307564421404436 47.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 12.83610307564421404436 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 12.83610307564421404436 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000005f 0 11.33610307564421404436 47.42791255195346877827 0.00000000000000000000 12.83610307564421404436 48.92791255195346877827 0.00000000000000000000 +TrimBy 0000005e 1 12.83610307564421404436 48.92791255195346877827 138.23999999999995225153 11.33610307564421404436 47.42791255195346877827 138.23999999999995225153 +TrimBy 0000005d 0 11.33610307564421404436 47.42791255195346877827 138.23999999999995225153 11.33610307564421404436 47.42791255195346877827 0.00000000000000000000 +TrimBy 00000060 1 12.83610307564421404436 48.92791255195346877827 0.00000000000000000000 12.83610307564421404436 48.92791255195346877827 138.23999999999995225153 +AddSurface +Surface 00000023 00646464 00000000 2 1 +SCtrl 0 0 -11.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -11.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -11.96389692435578488983 -1.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -11.96389692435578488983 -1.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -13.46389692435578488983 -1.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -13.46389692435578488983 -1.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000062 0 -11.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 -13.46389692435578488983 -1.67208744804653175464 0.00000000000000000000 +TrimBy 00000061 1 -13.46389692435578488983 -1.67208744804653175464 138.23999999999995225153 -11.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 +TrimBy 0000006c 0 -11.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 -11.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 +TrimBy 00000063 1 -13.46389692435578488983 -1.67208744804653175464 0.00000000000000000000 -13.46389692435578488983 -1.67208744804653175464 138.23999999999995225153 +AddSurface +Surface 00000024 00646464 00000000 2 1 +SCtrl 0 0 -13.46389692435578488983 -1.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -13.46389692435578488983 -1.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -14.96389692435578488983 -1.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -14.96389692435578488983 -1.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -14.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -14.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000065 0 -13.46389692435578488983 -1.67208744804653175464 0.00000000000000000000 -14.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 +TrimBy 00000064 1 -14.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 -13.46389692435578488983 -1.67208744804653175464 138.23999999999995225153 +TrimBy 00000063 0 -13.46389692435578488983 -1.67208744804653175464 138.23999999999995225153 -13.46389692435578488983 -1.67208744804653175464 0.00000000000000000000 +TrimBy 00000066 1 -14.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 -14.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 +AddSurface +Surface 00000025 00646464 00000000 2 1 +SCtrl 0 0 -14.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -14.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -14.96389692435578488983 -4.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -14.96389692435578488983 -4.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -13.46389692435578488983 -4.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -13.46389692435578488983 -4.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000068 0 -14.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 -13.46389692435578488983 -4.67208744804653175464 0.00000000000000000000 +TrimBy 00000067 1 -13.46389692435578488983 -4.67208744804653175464 138.23999999999995225153 -14.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 +TrimBy 00000066 0 -14.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 -14.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 +TrimBy 00000069 1 -13.46389692435578488983 -4.67208744804653175464 0.00000000000000000000 -13.46389692435578488983 -4.67208744804653175464 138.23999999999995225153 +AddSurface +Surface 00000026 00646464 00000000 2 1 +SCtrl 0 0 -13.46389692435578488983 -4.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 -13.46389692435578488983 -4.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 -11.96389692435578488983 -4.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 -11.96389692435578488983 -4.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 -11.96389692435578488983 -3.17208744804653219873 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 -11.96389692435578488983 -3.17208744804653219873 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000006b 0 -13.46389692435578488983 -4.67208744804653175464 0.00000000000000000000 -11.96389692435578488983 -3.17208744804653219873 0.00000000000000000000 +TrimBy 0000006a 1 -11.96389692435578488983 -3.17208744804653219873 138.23999999999995225153 -13.46389692435578488983 -4.67208744804653175464 138.23999999999995225153 +TrimBy 00000069 0 -13.46389692435578488983 -4.67208744804653175464 138.23999999999995225153 -13.46389692435578488983 -4.67208744804653175464 0.00000000000000000000 +TrimBy 0000006c 1 -11.96389692435578488983 -3.17208744804653219873 0.00000000000000000000 -11.96389692435578488983 -3.17208744804653219873 138.23999999999995225153 +AddSurface +Surface 00000027 00646464 00000000 2 1 +SCtrl 0 0 12.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 12.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 12.83610307564421404436 -1.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 12.83610307564421404436 -1.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 11.33610307564421404436 -1.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 11.33610307564421404436 -1.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 0000006e 0 12.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 11.33610307564421404436 -1.67208744804653175464 0.00000000000000000000 +TrimBy 0000006d 1 11.33610307564421404436 -1.67208744804653175464 138.23999999999995225153 12.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 +TrimBy 00000078 0 12.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 12.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 +TrimBy 0000006f 1 11.33610307564421404436 -1.67208744804653175464 0.00000000000000000000 11.33610307564421404436 -1.67208744804653175464 138.23999999999995225153 +AddSurface +Surface 00000028 00646464 00000000 2 1 +SCtrl 0 0 11.33610307564421404436 -1.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 11.33610307564421404436 -1.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 9.83610307564421404436 -1.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 9.83610307564421404436 -1.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 9.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 9.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000071 0 11.33610307564421404436 -1.67208744804653175464 0.00000000000000000000 9.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 +TrimBy 00000070 1 9.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 11.33610307564421404436 -1.67208744804653175464 138.23999999999995225153 +TrimBy 0000006f 0 11.33610307564421404436 -1.67208744804653175464 138.23999999999995225153 11.33610307564421404436 -1.67208744804653175464 0.00000000000000000000 +TrimBy 00000072 1 9.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 9.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 +AddSurface +Surface 00000029 00646464 00000000 2 1 +SCtrl 0 0 9.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 9.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 9.83610307564421404436 -4.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 9.83610307564421404436 -4.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 11.33610307564421404436 -4.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 11.33610307564421404436 -4.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000074 0 9.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 11.33610307564421404436 -4.67208744804653175464 0.00000000000000000000 +TrimBy 00000073 1 11.33610307564421404436 -4.67208744804653175464 138.23999999999995225153 9.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 +TrimBy 00000072 0 9.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 9.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 +TrimBy 00000075 1 11.33610307564421404436 -4.67208744804653175464 0.00000000000000000000 11.33610307564421404436 -4.67208744804653175464 138.23999999999995225153 +AddSurface +Surface 0000002a 00646464 00000000 2 1 +SCtrl 0 0 11.33610307564421404436 -4.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 0 1 11.33610307564421404436 -4.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +SCtrl 1 0 12.83610307564421404436 -4.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +SCtrl 1 1 12.83610307564421404436 -4.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +SCtrl 2 0 12.83610307564421404436 -3.17208744804653219873 138.23999999999995225153 Weight 1.00000000000000000000 +SCtrl 2 1 12.83610307564421404436 -3.17208744804653219873 0.00000000000000000000 Weight 1.00000000000000000000 +TrimBy 00000077 0 11.33610307564421404436 -4.67208744804653175464 0.00000000000000000000 12.83610307564421404436 -3.17208744804653219873 0.00000000000000000000 +TrimBy 00000076 1 12.83610307564421404436 -3.17208744804653219873 138.23999999999995225153 11.33610307564421404436 -4.67208744804653175464 138.23999999999995225153 +TrimBy 00000075 0 11.33610307564421404436 -4.67208744804653175464 138.23999999999995225153 11.33610307564421404436 -4.67208744804653175464 0.00000000000000000000 +TrimBy 00000078 1 12.83610307564421404436 -3.17208744804653219873 0.00000000000000000000 12.83610307564421404436 -3.17208744804653219873 138.23999999999995225153 +AddSurface +Curve 00000001 1 1 00000001 00000003 +CCtrl 0 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 +CurvePt 1 47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 +AddCurve +Curve 00000002 1 1 00000002 00000003 +CCtrl 0 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 +CurvePt 1 47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 +AddCurve +Curve 00000003 1 1 00000003 00000004 +CCtrl 0 47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 +CurvePt 1 47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 +AddCurve +Curve 00000004 1 2 00000001 00000004 +CCtrl 0 47.30801010568837483561 54.99999999999999289457 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 55.00000000000000000000 54.99999999999999289457 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568837483561 54.99999999999999289457 138.23999999999995225153 +CurvePt 0 52.74706832077451679197 52.74706832077450968654 138.23999999999995225153 +CurvePt 1 55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000005 1 2 00000002 00000004 +CCtrl 0 47.30801010568837483561 54.99999999999999289457 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 55.00000000000000000000 54.99999999999999289457 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568837483561 54.99999999999999289457 0.00000000000000000000 +CurvePt 0 52.74706832077451679197 52.74706832077450968654 0.00000000000000000000 +CurvePt 1 55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000006 1 1 00000004 00000005 +CCtrl 0 55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 +CurvePt 1 55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000007 1 1 00000001 00000005 +CCtrl 0 55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 +CurvePt 1 55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000008 1 1 00000002 00000005 +CCtrl 0 55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 +CurvePt 1 55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000009 1 1 00000005 00000006 +CCtrl 0 55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 +CurvePt 1 55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 0000000a 1 2 00000001 00000006 +CCtrl 0 55.00000000000000710543 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 55.00000000000000710543 -55.00000000000000000000 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 55.00000000000000710543 -47.30801010568836773018 138.23999999999995225153 +CurvePt 0 52.74706832077453100283 -52.74706832077451679197 138.23999999999995225153 +CurvePt 1 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 +AddCurve +Curve 0000000b 1 2 00000002 00000006 +CCtrl 0 55.00000000000000710543 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 55.00000000000000710543 -55.00000000000000000000 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 55.00000000000000710543 -47.30801010568836773018 0.00000000000000000000 +CurvePt 0 52.74706832077453100283 -52.74706832077451679197 0.00000000000000000000 +CurvePt 1 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 +AddCurve +Curve 0000000c 1 1 00000006 00000007 +CCtrl 0 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 +CurvePt 1 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 +AddCurve +Curve 0000000d 1 1 00000001 00000007 +CCtrl 0 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 +CurvePt 1 -47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 +AddCurve +Curve 0000000e 1 1 00000002 00000007 +CCtrl 0 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 +CurvePt 1 -47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 +AddCurve +Curve 0000000f 1 1 00000007 00000008 +CCtrl 0 -47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568837483561 -55.00000000000000000000 138.23999999999995225153 +CurvePt 1 -47.30801010568837483561 -55.00000000000000000000 0.00000000000000000000 +AddCurve +Curve 00000010 1 2 00000001 00000008 +CCtrl 0 -47.30801010568837483561 -54.99999999999999289457 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -55.00000000000000000000 -54.99999999999999289457 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568837483561 -54.99999999999999289457 138.23999999999995225153 +CurvePt 0 -52.74706832077451679197 -52.74706832077450968654 138.23999999999995225153 +CurvePt 1 -55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000011 1 2 00000002 00000008 +CCtrl 0 -47.30801010568837483561 -54.99999999999999289457 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -55.00000000000000000000 -54.99999999999999289457 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568837483561 -54.99999999999999289457 0.00000000000000000000 +CurvePt 0 -52.74706832077451679197 -52.74706832077450968654 0.00000000000000000000 +CurvePt 1 -55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000012 1 1 00000008 00000009 +CCtrl 0 -55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 +CurvePt 1 -55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000013 1 1 00000001 00000009 +CCtrl 0 -55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -55.00000000000000000000 -47.30801010568836773018 138.23999999999995225153 +CurvePt 1 -55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000014 1 1 00000002 00000009 +CCtrl 0 -55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -55.00000000000000000000 -47.30801010568836773018 0.00000000000000000000 +CurvePt 1 -55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000015 1 1 00000009 0000000a +CCtrl 0 -55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -55.00000000000000000000 47.30801010568836773018 138.23999999999995225153 +CurvePt 1 -55.00000000000000000000 47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000016 1 2 00000001 0000000a +CCtrl 0 -55.00000000000000710543 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -55.00000000000000710543 55.00000000000000000000 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -55.00000000000000710543 47.30801010568836773018 138.23999999999995225153 +CurvePt 0 -52.74706832077453100283 52.74706832077451679197 138.23999999999995225153 +CurvePt 1 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 +AddCurve +Curve 00000017 1 2 00000002 0000000a +CCtrl 0 -55.00000000000000710543 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -55.00000000000000710543 55.00000000000000000000 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -55.00000000000000710543 47.30801010568836773018 0.00000000000000000000 +CurvePt 0 -52.74706832077453100283 52.74706832077451679197 0.00000000000000000000 +CurvePt 1 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 +AddCurve +Curve 00000018 1 1 0000000a 00000003 +CCtrl 0 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568837483561 55.00000000000000000000 138.23999999999995225153 +CurvePt 1 -47.30801010568837483561 55.00000000000000000000 0.00000000000000000000 +AddCurve +Curve 00000019 1 2 00000001 0000000b +CCtrl 0 -45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -45.80801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +CurvePt 0 -46.24734993390855208872 48.36867027746819047707 138.23999999999995225153 +CurvePt 1 -47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 +AddCurve +Curve 0000001a 1 2 00000002 0000000b +CCtrl 0 -45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -45.80801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +CurvePt 0 -46.24734993390855208872 48.36867027746819047707 0.00000000000000000000 +CurvePt 1 -47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 0000001b 1 1 0000000b 0000000c +CCtrl 0 -47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 +CurvePt 1 -47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 0000001c 1 2 00000001 0000000c +CCtrl 0 -47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -48.80801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 +CurvePt 0 -48.36867027746819047707 48.36867027746819047707 138.23999999999995225153 +CurvePt 1 -48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +AddCurve +Curve 0000001d 1 2 00000002 0000000c +CCtrl 0 -47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -48.80801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 +CurvePt 0 -48.36867027746819047707 48.36867027746819047707 0.00000000000000000000 +CurvePt 1 -48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 0000001e 1 1 0000000c 0000000d +CCtrl 0 -48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +CurvePt 1 -48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 0000001f 1 2 00000001 0000000d +CCtrl 0 -48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -48.80801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +CurvePt 0 -48.36867027746819047707 46.24734993390855208872 138.23999999999995225153 +CurvePt 1 -47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000020 1 2 00000002 0000000d +CCtrl 0 -48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -48.80801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +CurvePt 0 -48.36867027746819047707 46.24734993390855208872 0.00000000000000000000 +CurvePt 1 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000021 1 1 0000000d 0000000e +CCtrl 0 -47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 +CurvePt 1 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000022 1 2 00000001 0000000e +CCtrl 0 -47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -45.80801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 +CurvePt 0 -46.24734993390855208872 46.24734993390855208872 138.23999999999995225153 +CurvePt 1 -45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000023 1 2 00000002 0000000e +CCtrl 0 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -45.80801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 +CurvePt 0 -46.24734993390855208872 46.24734993390855208872 0.00000000000000000000 +CurvePt 1 -45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000024 1 1 0000000e 0000000b +CCtrl 0 -45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +CurvePt 1 -45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000025 1 2 00000001 0000000f +CCtrl 0 48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 48.80801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +CurvePt 0 48.36867027746819047707 48.36867027746819047707 138.23999999999995225153 +CurvePt 1 47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000026 1 2 00000002 0000000f +CCtrl 0 48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 48.80801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +CurvePt 0 48.36867027746819047707 48.36867027746819047707 0.00000000000000000000 +CurvePt 1 47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000027 1 1 0000000f 00000010 +CCtrl 0 47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 +CurvePt 1 47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000028 1 2 00000001 00000010 +CCtrl 0 47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 45.80801010568836773018 48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568836773018 48.80801010568836773018 138.23999999999995225153 +CurvePt 0 46.24734993390855208872 48.36867027746819047707 138.23999999999995225153 +CurvePt 1 45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000029 1 2 00000002 00000010 +CCtrl 0 47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 45.80801010568836773018 48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568836773018 48.80801010568836773018 0.00000000000000000000 +CurvePt 0 46.24734993390855208872 48.36867027746819047707 0.00000000000000000000 +CurvePt 1 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 0000002a 1 1 00000010 00000011 +CCtrl 0 45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +CurvePt 1 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 0000002b 1 2 00000001 00000011 +CCtrl 0 45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 45.80801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 45.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +CurvePt 0 46.24734993390855208872 46.24734993390855208872 138.23999999999995225153 +CurvePt 1 47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 +AddCurve +Curve 0000002c 1 2 00000002 00000011 +CCtrl 0 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 45.80801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 45.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +CurvePt 0 46.24734993390855208872 46.24734993390855208872 0.00000000000000000000 +CurvePt 1 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 0000002d 1 1 00000011 00000012 +CCtrl 0 47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 +CurvePt 1 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 0000002e 1 2 00000001 00000012 +CCtrl 0 47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 48.80801010568836773018 45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568836773018 45.80801010568836773018 138.23999999999995225153 +CurvePt 0 48.36867027746819047707 46.24734993390855208872 138.23999999999995225153 +CurvePt 1 48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +AddCurve +Curve 0000002f 1 2 00000002 00000012 +CCtrl 0 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 48.80801010568836773018 45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568836773018 45.80801010568836773018 0.00000000000000000000 +CurvePt 0 48.36867027746819047707 46.24734993390855208872 0.00000000000000000000 +CurvePt 1 48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000030 1 1 00000012 0000000f +CCtrl 0 48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 48.80801010568836773018 47.30801010568836773018 138.23999999999995225153 +CurvePt 1 48.80801010568836773018 47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000031 1 2 00000001 00000013 +CCtrl 0 48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 48.80801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +CurvePt 0 48.36867027746819047707 -46.24734993390855208872 138.23999999999995225153 +CurvePt 1 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000032 1 2 00000002 00000013 +CCtrl 0 48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 48.80801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +CurvePt 0 48.36867027746819047707 -46.24734993390855208872 0.00000000000000000000 +CurvePt 1 47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000033 1 1 00000013 00000014 +CCtrl 0 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 +CurvePt 1 47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000034 1 2 00000001 00000014 +CCtrl 0 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 45.80801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 +CurvePt 0 46.24734993390855208872 -46.24734993390855208872 138.23999999999995225153 +CurvePt 1 45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000035 1 2 00000002 00000014 +CCtrl 0 47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 45.80801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 +CurvePt 0 46.24734993390855208872 -46.24734993390855208872 0.00000000000000000000 +CurvePt 1 45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000036 1 1 00000014 00000015 +CCtrl 0 45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +CurvePt 1 45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000037 1 2 00000001 00000015 +CCtrl 0 45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 45.80801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +CurvePt 0 46.24734993390855208872 -48.36867027746819047707 138.23999999999995225153 +CurvePt 1 47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000038 1 2 00000002 00000015 +CCtrl 0 45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 45.80801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +CurvePt 0 46.24734993390855208872 -48.36867027746819047707 0.00000000000000000000 +CurvePt 1 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000039 1 1 00000015 00000016 +CCtrl 0 47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 +CurvePt 1 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 0000003a 1 2 00000001 00000016 +CCtrl 0 47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 48.80801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 +CurvePt 0 48.36867027746819047707 -48.36867027746819047707 138.23999999999995225153 +CurvePt 1 48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +AddCurve +Curve 0000003b 1 2 00000002 00000016 +CCtrl 0 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 48.80801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 +CurvePt 0 48.36867027746819047707 -48.36867027746819047707 0.00000000000000000000 +CurvePt 1 48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 0000003c 1 1 00000016 00000013 +CCtrl 0 48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +CurvePt 1 48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 0000003d 1 2 00000001 00000017 +CCtrl 0 -45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -45.80801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +CurvePt 0 -46.24734993390855208872 -46.24734993390855208872 138.23999999999995225153 +CurvePt 1 -47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 +AddCurve +Curve 0000003e 1 2 00000002 00000017 +CCtrl 0 -45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -45.80801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +CurvePt 0 -46.24734993390855208872 -46.24734993390855208872 0.00000000000000000000 +CurvePt 1 -47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 0000003f 1 1 00000017 00000018 +CCtrl 0 -47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 +CurvePt 1 -47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000040 1 2 00000001 00000018 +CCtrl 0 -47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -48.80801010568836773018 -45.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568836773018 -45.80801010568836773018 138.23999999999995225153 +CurvePt 0 -48.36867027746819047707 -46.24734993390855208872 138.23999999999995225153 +CurvePt 1 -48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000041 1 2 00000002 00000018 +CCtrl 0 -47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -48.80801010568836773018 -45.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568836773018 -45.80801010568836773018 0.00000000000000000000 +CurvePt 0 -48.36867027746819047707 -46.24734993390855208872 0.00000000000000000000 +CurvePt 1 -48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000042 1 1 00000018 00000019 +CCtrl 0 -48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +CurvePt 1 -48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000043 1 2 00000001 00000019 +CCtrl 0 -48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -48.80801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -48.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +CurvePt 0 -48.36867027746819047707 -48.36867027746819047707 138.23999999999995225153 +CurvePt 1 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000044 1 2 00000002 00000019 +CCtrl 0 -48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -48.80801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -48.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +CurvePt 0 -48.36867027746819047707 -48.36867027746819047707 0.00000000000000000000 +CurvePt 1 -47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000045 1 1 00000019 0000001a +CCtrl 0 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 +CurvePt 1 -47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000046 1 2 00000001 0000001a +CCtrl 0 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -45.80801010568836773018 -48.80801010568836773018 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568836773018 -48.80801010568836773018 138.23999999999995225153 +CurvePt 0 -46.24734993390855208872 -48.36867027746819047707 138.23999999999995225153 +CurvePt 1 -45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +AddCurve +Curve 00000047 1 2 00000002 0000001a +CCtrl 0 -47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -45.80801010568836773018 -48.80801010568836773018 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -47.30801010568836773018 -48.80801010568836773018 0.00000000000000000000 +CurvePt 0 -46.24734993390855208872 -48.36867027746819047707 0.00000000000000000000 +CurvePt 1 -45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000048 1 1 0000001a 00000017 +CCtrl 0 -45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -45.80801010568836773018 -47.30801010568836773018 138.23999999999995225153 +CurvePt 1 -45.80801010568836773018 -47.30801010568836773018 0.00000000000000000000 +AddCurve +Curve 00000049 1 2 00000001 0000001b +CCtrl 0 -11.96389692435578488983 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -11.96389692435578488983 50.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -13.46389692435578488983 50.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -11.96389692435578488983 48.92791255195346877827 138.23999999999995225153 +CurvePt 0 -12.40323675257596391930 49.98857272373329152515 138.23999999999995225153 +CurvePt 1 -13.46389692435578488983 50.42791255195346877827 138.23999999999995225153 +AddCurve +Curve 0000004a 1 2 00000002 0000001b +CCtrl 0 -11.96389692435578488983 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -11.96389692435578488983 50.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -13.46389692435578488983 50.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -11.96389692435578488983 48.92791255195346877827 0.00000000000000000000 +CurvePt 0 -12.40323675257596391930 49.98857272373329152515 0.00000000000000000000 +CurvePt 1 -13.46389692435578488983 50.42791255195346877827 0.00000000000000000000 +AddCurve +Curve 0000004b 1 1 0000001b 0000001c +CCtrl 0 -13.46389692435578488983 50.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -13.46389692435578488983 50.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -13.46389692435578488983 50.42791255195346877827 138.23999999999995225153 +CurvePt 1 -13.46389692435578488983 50.42791255195346877827 0.00000000000000000000 +AddCurve +Curve 0000004c 1 2 00000001 0000001c +CCtrl 0 -13.46389692435578488983 50.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -14.96389692435578488983 50.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -14.96389692435578488983 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -13.46389692435578488983 50.42791255195346877827 138.23999999999995225153 +CurvePt 0 -14.52455709613560763671 49.98857272373329152515 138.23999999999995225153 +CurvePt 1 -14.96389692435578488983 48.92791255195346877827 138.23999999999995225153 +AddCurve +Curve 0000004d 1 2 00000002 0000001c +CCtrl 0 -13.46389692435578488983 50.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -14.96389692435578488983 50.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -14.96389692435578488983 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -13.46389692435578488983 50.42791255195346877827 0.00000000000000000000 +CurvePt 0 -14.52455709613560763671 49.98857272373329152515 0.00000000000000000000 +CurvePt 1 -14.96389692435578488983 48.92791255195346877827 0.00000000000000000000 +AddCurve +Curve 0000004e 1 1 0000001c 0000001d +CCtrl 0 -14.96389692435578488983 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -14.96389692435578488983 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -14.96389692435578488983 48.92791255195346877827 138.23999999999995225153 +CurvePt 1 -14.96389692435578488983 48.92791255195346877827 0.00000000000000000000 +AddCurve +Curve 0000004f 1 2 00000001 0000001d +CCtrl 0 -14.96389692435578488983 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -14.96389692435578488983 47.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -13.46389692435578488983 47.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -14.96389692435578488983 48.92791255195346877827 138.23999999999995225153 +CurvePt 0 -14.52455709613560763671 47.86725238017365313681 138.23999999999995225153 +CurvePt 1 -13.46389692435578488983 47.42791255195346877827 138.23999999999995225153 +AddCurve +Curve 00000050 1 2 00000002 0000001d +CCtrl 0 -14.96389692435578488983 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -14.96389692435578488983 47.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -13.46389692435578488983 47.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -14.96389692435578488983 48.92791255195346877827 0.00000000000000000000 +CurvePt 0 -14.52455709613560763671 47.86725238017365313681 0.00000000000000000000 +CurvePt 1 -13.46389692435578488983 47.42791255195346877827 0.00000000000000000000 +AddCurve +Curve 00000051 1 1 0000001d 0000001e +CCtrl 0 -13.46389692435578488983 47.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -13.46389692435578488983 47.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -13.46389692435578488983 47.42791255195346877827 138.23999999999995225153 +CurvePt 1 -13.46389692435578488983 47.42791255195346877827 0.00000000000000000000 +AddCurve +Curve 00000052 1 2 00000001 0000001e +CCtrl 0 -13.46389692435578488983 47.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -11.96389692435578488983 47.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -11.96389692435578488983 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -13.46389692435578488983 47.42791255195346877827 138.23999999999995225153 +CurvePt 0 -12.40323675257596391930 47.86725238017365313681 138.23999999999995225153 +CurvePt 1 -11.96389692435578488983 48.92791255195346877827 138.23999999999995225153 +AddCurve +Curve 00000053 1 2 00000002 0000001e +CCtrl 0 -13.46389692435578488983 47.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -11.96389692435578488983 47.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -11.96389692435578488983 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -13.46389692435578488983 47.42791255195346877827 0.00000000000000000000 +CurvePt 0 -12.40323675257596391930 47.86725238017365313681 0.00000000000000000000 +CurvePt 1 -11.96389692435578488983 48.92791255195346877827 0.00000000000000000000 +AddCurve +Curve 00000054 1 1 0000001e 0000001b +CCtrl 0 -11.96389692435578488983 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -11.96389692435578488983 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -11.96389692435578488983 48.92791255195346877827 138.23999999999995225153 +CurvePt 1 -11.96389692435578488983 48.92791255195346877827 0.00000000000000000000 +AddCurve +Curve 00000055 1 2 00000001 0000001f +CCtrl 0 12.83610307564421404436 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 12.83610307564421404436 50.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 11.33610307564421404436 50.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 12.83610307564421404436 48.92791255195346877827 138.23999999999995225153 +CurvePt 0 12.39676324742403679124 49.98857272373329152515 138.23999999999995225153 +CurvePt 1 11.33610307564421404436 50.42791255195346877827 138.23999999999995225153 +AddCurve +Curve 00000056 1 2 00000002 0000001f +CCtrl 0 12.83610307564421404436 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 12.83610307564421404436 50.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 11.33610307564421404436 50.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 12.83610307564421404436 48.92791255195346877827 0.00000000000000000000 +CurvePt 0 12.39676324742403679124 49.98857272373329152515 0.00000000000000000000 +CurvePt 1 11.33610307564421404436 50.42791255195346877827 0.00000000000000000000 +AddCurve +Curve 00000057 1 1 0000001f 00000020 +CCtrl 0 11.33610307564421404436 50.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 11.33610307564421404436 50.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 11.33610307564421404436 50.42791255195346877827 138.23999999999995225153 +CurvePt 1 11.33610307564421404436 50.42791255195346877827 0.00000000000000000000 +AddCurve +Curve 00000058 1 2 00000001 00000020 +CCtrl 0 11.33610307564421404436 50.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 9.83610307564421404436 50.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 9.83610307564421404436 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 11.33610307564421404436 50.42791255195346877827 138.23999999999995225153 +CurvePt 0 10.27544290386439307383 49.98857272373329152515 138.23999999999995225153 +CurvePt 1 9.83610307564421404436 48.92791255195346877827 138.23999999999995225153 +AddCurve +Curve 00000059 1 2 00000002 00000020 +CCtrl 0 11.33610307564421404436 50.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 9.83610307564421404436 50.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 9.83610307564421404436 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 11.33610307564421404436 50.42791255195346877827 0.00000000000000000000 +CurvePt 0 10.27544290386439307383 49.98857272373329152515 0.00000000000000000000 +CurvePt 1 9.83610307564421404436 48.92791255195346877827 0.00000000000000000000 +AddCurve +Curve 0000005a 1 1 00000020 00000021 +CCtrl 0 9.83610307564421404436 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 9.83610307564421404436 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 9.83610307564421404436 48.92791255195346877827 138.23999999999995225153 +CurvePt 1 9.83610307564421404436 48.92791255195346877827 0.00000000000000000000 +AddCurve +Curve 0000005b 1 2 00000001 00000021 +CCtrl 0 9.83610307564421404436 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 9.83610307564421404436 47.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 11.33610307564421404436 47.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 9.83610307564421404436 48.92791255195346877827 138.23999999999995225153 +CurvePt 0 10.27544290386439307383 47.86725238017365313681 138.23999999999995225153 +CurvePt 1 11.33610307564421404436 47.42791255195346877827 138.23999999999995225153 +AddCurve +Curve 0000005c 1 2 00000002 00000021 +CCtrl 0 9.83610307564421404436 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 9.83610307564421404436 47.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 11.33610307564421404436 47.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 9.83610307564421404436 48.92791255195346877827 0.00000000000000000000 +CurvePt 0 10.27544290386439307383 47.86725238017365313681 0.00000000000000000000 +CurvePt 1 11.33610307564421404436 47.42791255195346877827 0.00000000000000000000 +AddCurve +Curve 0000005d 1 1 00000021 00000022 +CCtrl 0 11.33610307564421404436 47.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 11.33610307564421404436 47.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 11.33610307564421404436 47.42791255195346877827 138.23999999999995225153 +CurvePt 1 11.33610307564421404436 47.42791255195346877827 0.00000000000000000000 +AddCurve +Curve 0000005e 1 2 00000001 00000022 +CCtrl 0 11.33610307564421404436 47.42791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 12.83610307564421404436 47.42791255195346877827 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 12.83610307564421404436 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 11.33610307564421404436 47.42791255195346877827 138.23999999999995225153 +CurvePt 0 12.39676324742403679124 47.86725238017365313681 138.23999999999995225153 +CurvePt 1 12.83610307564421404436 48.92791255195346877827 138.23999999999995225153 +AddCurve +Curve 0000005f 1 2 00000002 00000022 +CCtrl 0 11.33610307564421404436 47.42791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 12.83610307564421404436 47.42791255195346877827 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 12.83610307564421404436 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 11.33610307564421404436 47.42791255195346877827 0.00000000000000000000 +CurvePt 0 12.39676324742403679124 47.86725238017365313681 0.00000000000000000000 +CurvePt 1 12.83610307564421404436 48.92791255195346877827 0.00000000000000000000 +AddCurve +Curve 00000060 1 1 00000022 0000001f +CCtrl 0 12.83610307564421404436 48.92791255195346877827 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 12.83610307564421404436 48.92791255195346877827 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 12.83610307564421404436 48.92791255195346877827 138.23999999999995225153 +CurvePt 1 12.83610307564421404436 48.92791255195346877827 0.00000000000000000000 +AddCurve +Curve 00000061 1 2 00000001 00000023 +CCtrl 0 -11.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -11.96389692435578488983 -1.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -13.46389692435578488983 -1.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -11.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 +CurvePt 0 -12.40323675257596391930 -2.11142727626671078411 138.23999999999995225153 +CurvePt 1 -13.46389692435578488983 -1.67208744804653175464 138.23999999999995225153 +AddCurve +Curve 00000062 1 2 00000002 00000023 +CCtrl 0 -11.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -11.96389692435578488983 -1.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -13.46389692435578488983 -1.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -11.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 +CurvePt 0 -12.40323675257596391930 -2.11142727626671078411 0.00000000000000000000 +CurvePt 1 -13.46389692435578488983 -1.67208744804653175464 0.00000000000000000000 +AddCurve +Curve 00000063 1 1 00000023 00000024 +CCtrl 0 -13.46389692435578488983 -1.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -13.46389692435578488983 -1.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -13.46389692435578488983 -1.67208744804653175464 138.23999999999995225153 +CurvePt 1 -13.46389692435578488983 -1.67208744804653175464 0.00000000000000000000 +AddCurve +Curve 00000064 1 2 00000001 00000024 +CCtrl 0 -13.46389692435578488983 -1.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -14.96389692435578488983 -1.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -14.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -13.46389692435578488983 -1.67208744804653175464 138.23999999999995225153 +CurvePt 0 -14.52455709613560763671 -2.11142727626671078411 138.23999999999995225153 +CurvePt 1 -14.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 +AddCurve +Curve 00000065 1 2 00000002 00000024 +CCtrl 0 -13.46389692435578488983 -1.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -14.96389692435578488983 -1.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -14.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -13.46389692435578488983 -1.67208744804653175464 0.00000000000000000000 +CurvePt 0 -14.52455709613560763671 -2.11142727626671078411 0.00000000000000000000 +CurvePt 1 -14.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 +AddCurve +Curve 00000066 1 1 00000024 00000025 +CCtrl 0 -14.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -14.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -14.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 +CurvePt 1 -14.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 +AddCurve +Curve 00000067 1 2 00000001 00000025 +CCtrl 0 -14.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -14.96389692435578488983 -4.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -13.46389692435578488983 -4.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -14.96389692435578488983 -3.17208744804653175464 138.23999999999995225153 +CurvePt 0 -14.52455709613560763671 -4.23274761982635361335 138.23999999999995225153 +CurvePt 1 -13.46389692435578488983 -4.67208744804653175464 138.23999999999995225153 +AddCurve +Curve 00000068 1 2 00000002 00000025 +CCtrl 0 -14.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -14.96389692435578488983 -4.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -13.46389692435578488983 -4.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -14.96389692435578488983 -3.17208744804653175464 0.00000000000000000000 +CurvePt 0 -14.52455709613560763671 -4.23274761982635361335 0.00000000000000000000 +CurvePt 1 -13.46389692435578488983 -4.67208744804653175464 0.00000000000000000000 +AddCurve +Curve 00000069 1 1 00000025 00000026 +CCtrl 0 -13.46389692435578488983 -4.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -13.46389692435578488983 -4.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -13.46389692435578488983 -4.67208744804653175464 138.23999999999995225153 +CurvePt 1 -13.46389692435578488983 -4.67208744804653175464 0.00000000000000000000 +AddCurve +Curve 0000006a 1 2 00000001 00000026 +CCtrl 0 -13.46389692435578488983 -4.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -11.96389692435578488983 -4.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 -11.96389692435578488983 -3.17208744804653219873 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 -13.46389692435578488983 -4.67208744804653175464 138.23999999999995225153 +CurvePt 0 -12.40323675257596391930 -4.23274761982635361335 138.23999999999995225153 +CurvePt 1 -11.96389692435578488983 -3.17208744804653219873 138.23999999999995225153 +AddCurve +Curve 0000006b 1 2 00000002 00000026 +CCtrl 0 -13.46389692435578488983 -4.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 -11.96389692435578488983 -4.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 -11.96389692435578488983 -3.17208744804653219873 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -13.46389692435578488983 -4.67208744804653175464 0.00000000000000000000 +CurvePt 0 -12.40323675257596391930 -4.23274761982635361335 0.00000000000000000000 +CurvePt 1 -11.96389692435578488983 -3.17208744804653219873 0.00000000000000000000 +AddCurve +Curve 0000006c 1 1 00000026 00000023 +CCtrl 0 -11.96389692435578488983 -3.17208744804653219873 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 -11.96389692435578488983 -3.17208744804653219873 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 -11.96389692435578488983 -3.17208744804653219873 138.23999999999995225153 +CurvePt 1 -11.96389692435578488983 -3.17208744804653219873 0.00000000000000000000 +AddCurve +Curve 0000006d 1 2 00000001 00000027 +CCtrl 0 12.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 12.83610307564421404436 -1.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 11.33610307564421404436 -1.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 12.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 +CurvePt 0 12.39676324742403679124 -2.11142727626671078411 138.23999999999995225153 +CurvePt 1 11.33610307564421404436 -1.67208744804653175464 138.23999999999995225153 +AddCurve +Curve 0000006e 1 2 00000002 00000027 +CCtrl 0 12.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 12.83610307564421404436 -1.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 11.33610307564421404436 -1.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 12.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 +CurvePt 0 12.39676324742403679124 -2.11142727626671078411 0.00000000000000000000 +CurvePt 1 11.33610307564421404436 -1.67208744804653175464 0.00000000000000000000 +AddCurve +Curve 0000006f 1 1 00000027 00000028 +CCtrl 0 11.33610307564421404436 -1.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 11.33610307564421404436 -1.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 11.33610307564421404436 -1.67208744804653175464 138.23999999999995225153 +CurvePt 1 11.33610307564421404436 -1.67208744804653175464 0.00000000000000000000 +AddCurve +Curve 00000070 1 2 00000001 00000028 +CCtrl 0 11.33610307564421404436 -1.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 9.83610307564421404436 -1.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 9.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 11.33610307564421404436 -1.67208744804653175464 138.23999999999995225153 +CurvePt 0 10.27544290386439307383 -2.11142727626671078411 138.23999999999995225153 +CurvePt 1 9.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 +AddCurve +Curve 00000071 1 2 00000002 00000028 +CCtrl 0 11.33610307564421404436 -1.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 9.83610307564421404436 -1.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 9.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 11.33610307564421404436 -1.67208744804653175464 0.00000000000000000000 +CurvePt 0 10.27544290386439307383 -2.11142727626671078411 0.00000000000000000000 +CurvePt 1 9.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 +AddCurve +Curve 00000072 1 1 00000028 00000029 +CCtrl 0 9.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 9.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 9.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 +CurvePt 1 9.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 +AddCurve +Curve 00000073 1 2 00000001 00000029 +CCtrl 0 9.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 9.83610307564421404436 -4.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 11.33610307564421404436 -4.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 9.83610307564421404436 -3.17208744804653175464 138.23999999999995225153 +CurvePt 0 10.27544290386439307383 -4.23274761982635361335 138.23999999999995225153 +CurvePt 1 11.33610307564421404436 -4.67208744804653175464 138.23999999999995225153 +AddCurve +Curve 00000074 1 2 00000002 00000029 +CCtrl 0 9.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 9.83610307564421404436 -4.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 11.33610307564421404436 -4.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 9.83610307564421404436 -3.17208744804653175464 0.00000000000000000000 +CurvePt 0 10.27544290386439307383 -4.23274761982635361335 0.00000000000000000000 +CurvePt 1 11.33610307564421404436 -4.67208744804653175464 0.00000000000000000000 +AddCurve +Curve 00000075 1 1 00000029 0000002a +CCtrl 0 11.33610307564421404436 -4.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 11.33610307564421404436 -4.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 11.33610307564421404436 -4.67208744804653175464 138.23999999999995225153 +CurvePt 1 11.33610307564421404436 -4.67208744804653175464 0.00000000000000000000 +AddCurve +Curve 00000076 1 2 00000001 0000002a +CCtrl 0 11.33610307564421404436 -4.67208744804653175464 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 12.83610307564421404436 -4.67208744804653175464 138.23999999999995225153 Weight 0.70710678118654757274 +CCtrl 2 12.83610307564421404436 -3.17208744804653219873 138.23999999999995225153 Weight 1.00000000000000000000 +CurvePt 1 11.33610307564421404436 -4.67208744804653175464 138.23999999999995225153 +CurvePt 0 12.39676324742403679124 -4.23274761982635361335 138.23999999999995225153 +CurvePt 1 12.83610307564421404436 -3.17208744804653219873 138.23999999999995225153 +AddCurve +Curve 00000077 1 2 00000002 0000002a +CCtrl 0 11.33610307564421404436 -4.67208744804653175464 0.00000000000000000000 Weight 1.00000000000000000000 +CCtrl 1 12.83610307564421404436 -4.67208744804653175464 0.00000000000000000000 Weight 0.70710678118654757274 +CCtrl 2 12.83610307564421404436 -3.17208744804653219873 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 11.33610307564421404436 -4.67208744804653175464 0.00000000000000000000 +CurvePt 0 12.39676324742403679124 -4.23274761982635361335 0.00000000000000000000 +CurvePt 1 12.83610307564421404436 -3.17208744804653219873 0.00000000000000000000 +AddCurve +Curve 00000078 1 1 0000002a 00000027 +CCtrl 0 12.83610307564421404436 -3.17208744804653219873 138.23999999999995225153 Weight 1.00000000000000000000 +CCtrl 1 12.83610307564421404436 -3.17208744804653219873 0.00000000000000000000 Weight 1.00000000000000000000 +CurvePt 1 12.83610307564421404436 -3.17208744804653219873 138.23999999999995225153 +CurvePt 1 12.83610307564421404436 -3.17208744804653219873 0.00000000000000000000 +AddCurve diff --git a/ledcontroller/Makefile b/ledcontroller/Makefile new file mode 120000 index 0000000..d0b0e8e --- /dev/null +++ b/ledcontroller/Makefile @@ -0,0 +1 @@ +../Makefile \ No newline at end of file diff --git a/ledcontroller/README.md b/ledcontroller/README.md new file mode 100644 index 0000000..286b2df --- /dev/null +++ b/ledcontroller/README.md @@ -0,0 +1,2 @@ +This module borrows some code from [esp8266ws2812i2s](https://github.com/cnlohr/esp8266ws2812i2s) project, which is licensed +under [MIT](https://github.com/cnlohr/esp82xx/blob/6053b2f478a2ecae867bef3f98fb265cf4a69a98/LICENSE) diff --git a/ledcontroller/app/application.cpp b/ledcontroller/app/application.cpp new file mode 100644 index 0000000..a906d1a --- /dev/null +++ b/ledcontroller/app/application.cpp @@ -0,0 +1,106 @@ +#include +#include +#include + +#include + +extern "C" { +#include "ws2812_i2s.h" +} + +#define LEDS_CNT 150 + +enum LEDMode { + IDLE, + OFF, + WHITE, + STROBE, + BRIGHT, + TEST, +}; + +class LEDEndpoint : public Endpoint { +private: + struct __attribute__((packed)) { + uint8_t g; + uint8_t r; + uint8_t b; + } leds[LEDS_CNT]; + + enum LEDMode currentMode = LEDMode::IDLE; + Timer animationTimer; + + void animate() { + /*if (i % 50 == 0) + WDT.alive();*/ + static int frameCounter = 0; + frameCounter++; + + for(int i = 0; i < LEDS_CNT; i++) { + switch(currentMode) { + case LEDMode::IDLE: + leds[i].r = std::max(sin(i * 2*PI/LEDS_CNT - millis() / 1000.0)/2 * 255, 0.0); + leds[i].g = std::max(sin(i * 2*PI/LEDS_CNT + millis() / 500.0)/2 * 255, 0.0); + leds[i].b = std::max(sin(i * 2*PI/LEDS_CNT + millis() / 420.0)/2 * 255, 0.0); + break; + case LEDMode::TEST: + leds[i].r = std::min(std::max((sin(i * 2*PI/LEDS_CNT - millis() / 1000.0)/2 + 0.2) * 255, 0.0), 255.0); + leds[i].g = std::min(std::max((sin(i * 2*PI/LEDS_CNT + millis() / 500.0)/2 + 0.2) * 255, 0.0), 255.0); + leds[i].b = std::min(std::max((sin(i * 2*PI/LEDS_CNT + millis() / 420.0)/2 + 0.2) * 255, 0.0), 255.0); + break; + case LEDMode::BRIGHT: + leds[i].r = std::min(std::max((sin(i * 2*PI/LEDS_CNT - millis() / 1000.0)/4 + 0.5) * 255, 0.0), 255.0); + leds[i].g = std::min(std::max((sin(i * 2*PI/LEDS_CNT + millis() / 500.0)/4 + 0.5) * 255, 0.0), 255.0); + leds[i].b = std::min(std::max((sin(i * 2*PI/LEDS_CNT + millis() / 420.0)/4 + 0.5) * 255, 0.0), 255.0); + break; + case LEDMode::OFF: + leds[i].r = leds[i].g = leds[i].b = 0; + break; + case LEDMode::WHITE: + leds[i].r = leds[i].g = leds[i].b = 255; + break; + case LEDMode::STROBE: + leds[i].r = leds[i].g = leds[i].b = (frameCounter % 2) ? 255 : 0; + break; + } + } + + ws2812_push((uint8_t*) leds, sizeof(leds)); + } + +public: + LEDEndpoint() : Endpoint("leds", { + {"mode", "enum", true, "idle,off,white,strobe,bright,test", "Current LED mode"}, + }) { + animationTimer.initializeMs(50, TimerDelegate(&LEDEndpoint::animate, this)).start(); + ws2812_init(); + } + + EndpointResult onValue(String property, String value) { + if (property != "mode") { + return 400; + } + + if (value == "idle") currentMode = LEDMode::IDLE; + else if (value == "off") currentMode = LEDMode::OFF; + else if (value == "white") currentMode = LEDMode::WHITE; + else if (value == "strobe") currentMode = LEDMode::STROBE; + else if (value == "bright") currentMode = LEDMode::BRIGHT; + else if (value == "test") currentMode = LEDMode::TEST; + else { + return 400; + } + + notify("mode", value); + return 200; + } +}; + + +SpejsNode node("ledcontroller"); + +void init() +{ + node.init(); + node.registerEndpoint("leds", new LEDEndpoint()); +} diff --git a/ledcontroller/app/pin_mux_register.h b/ledcontroller/app/pin_mux_register.h new file mode 100644 index 0000000..0d665bf --- /dev/null +++ b/ledcontroller/app/pin_mux_register.h @@ -0,0 +1,173 @@ +/* + * Copyright (c) Espressif System 2010 - 2012 + * + */ + +#ifndef _PIN_MUX_H_ +#define _PIN_MUX_H_ + +//Register Bits{{ +#define BIT31 0x80000000 +#define BIT30 0x40000000 +#define BIT29 0x20000000 +#define BIT28 0x10000000 +#define BIT27 0x08000000 +#define BIT26 0x04000000 +#define BIT25 0x02000000 +#define BIT24 0x01000000 +#define BIT23 0x00800000 +#define BIT22 0x00400000 +#define BIT21 0x00200000 +#define BIT20 0x00100000 +#define BIT19 0x00080000 +#define BIT18 0x00040000 +#define BIT17 0x00020000 +#define BIT16 0x00010000 +#define BIT15 0x00008000 +#define BIT14 0x00004000 +#define BIT13 0x00002000 +#define BIT12 0x00001000 +#define BIT11 0x00000800 +#define BIT10 0x00000400 +#define BIT9 0x00000200 +#define BIT8 0x00000100 +#define BIT7 0x00000080 +#define BIT6 0x00000040 +#define BIT5 0x00000020 +#define BIT4 0x00000010 +#define BIT3 0x00000008 +#define BIT2 0x00000004 +#define BIT1 0x00000002 +#define BIT0 0x00000001 +//}} +#define PERIPHS_IO_MUX 0x60000800 + +#define PERIPHS_IO_MUX_FUNC 0x13 +#define PERIPHS_IO_MUX_FUNC_S 4 +#define PERIPHS_IO_MUX_PULLUP BIT7 +#define PERIPHS_IO_MUX_PULLDWN BIT6 +#define PERIPHS_IO_MUX_SLEEP_PULLUP BIT3 +#define PERIPHS_IO_MUX_SLEEP_PULLDWN BIT2 +#define PERIPHS_IO_MUX_SLEEP_OE BIT1 +#define PERIPHS_IO_MUX_OE BIT0 + +#define PERIPHS_IO_MUX_CONF_U (PERIPHS_IO_MUX + 0x00) +#define SPI0_CLK_EQU_SYS_CLK BIT8 +#define SPI1_CLK_EQU_SYS_CLK BIT9 + +#define PERIPHS_IO_MUX_MTDI_U (PERIPHS_IO_MUX + 0x04) +#define FUNC_MTDI 0 +#define FUNC_I2SI_DATA 1 +#define FUNC_HSPIQ_MISO 2 +#define FUNC_GPIO12 3 +#define FUNC_UART0_DTR 4 + +#define PERIPHS_IO_MUX_MTCK_U (PERIPHS_IO_MUX + 0x08) +#define FUNC_MTCK 0 +#define FUNC_I2SI_BCK 1 +#define FUNC_HSPID_MOSI 2 +#define FUNC_GPIO13 3 +#define FUNC_UART0_CTS 4 + +#define PERIPHS_IO_MUX_MTMS_U (PERIPHS_IO_MUX + 0x0C) +#define FUNC_MTMS 0 +#define FUNC_I2SI_WS 1 +#define FUNC_HSPI_CLK 2 +#define FUNC_GPIO14 3 +#define FUNC_UART0_DSR 4 + +#define PERIPHS_IO_MUX_MTDO_U (PERIPHS_IO_MUX + 0x10) +#define FUNC_MTDO 0 +#define FUNC_I2SO_BCK 1 +#define FUNC_HSPI_CS0 2 +#define FUNC_GPIO15 3 +#define FUNC_U0RTS 4 +#define FUNC_UART0_RTS 4 + +#define PERIPHS_IO_MUX_U0RXD_U (PERIPHS_IO_MUX + 0x14) +#define FUNC_U0RXD 0 +#define FUNC_I2SO_DATA 1 +#define FUNC_GPIO3 3 +#define FUNC_CLK_XTAL_BK 4 + +#define PERIPHS_IO_MUX_U0TXD_U (PERIPHS_IO_MUX + 0x18) +#define FUNC_U0TXD 0 +#define FUNC_SPICS1 1 +#define FUNC_GPIO1 3 +#define FUNC_CLK_RTC_BK 4 + +#define PERIPHS_IO_MUX_SD_CLK_U (PERIPHS_IO_MUX + 0x1c) +#define FUNC_SDCLK 0 +#define FUNC_SPICLK 1 +#define FUNC_GPIO6 3 +#define UART1_CTS 4 + +#define PERIPHS_IO_MUX_SD_DATA0_U (PERIPHS_IO_MUX + 0x20) +#define FUNC_SDDATA0 0 +#define FUNC_SPIQ_MISO 1 +#define FUNC_GPIO7 3 +#define FUNC_U1TXD 4 +#define FUNC_UART1_TXD 4 + +#define PERIPHS_IO_MUX_SD_DATA1_U (PERIPHS_IO_MUX + 0x24) +#define FUNC_SDDATA1 0 +#define FUNC_SPID_MOSI 1 +#define FUNC_GPIO8 3 +#define FUNC_U1RXD 4 +#define FUNC_UART1_RXD 4 + +#define PERIPHS_IO_MUX_SD_DATA2_U (PERIPHS_IO_MUX + 0x28) +#define FUNC_SDDATA2 0 +#define FUNC_SPIHD 1 +#define FUNC_GPIO9 3 +#define UFNC_HSPIHD 4 + +#define PERIPHS_IO_MUX_SD_DATA3_U (PERIPHS_IO_MUX + 0x2c) +#define FUNC_SDDATA3 0 +#define FUNC_SPIWP 1 +#define FUNC_GPIO10 3 +#define FUNC_HSPIWP 4 + +#define PERIPHS_IO_MUX_SD_CMD_U (PERIPHS_IO_MUX + 0x30) +#define FUNC_SDCMD 0 +#define FUNC_SPICS0 1 +#define FUNC_GPIO11 3 +#define U1RTS 4 +#define UART1_RTS 4 + +#define PERIPHS_IO_MUX_GPIO0_U (PERIPHS_IO_MUX + 0x34) +#define FUNC_GPIO0 0 +#define FUNC_SPICS2 1 +#define FUNC_CLK_OUT 4 + +#define PERIPHS_IO_MUX_GPIO2_U (PERIPHS_IO_MUX + 0x38) +#define FUNC_GPIO2 0 +#define FUNC_I2SO_WS 1 +#define FUNC_U1TXD_BK 2 +#define FUNC_UART1_TXD_BK 2 +#define FUNC_U0TXD_BK 4 +#define FUNC_UART0_TXD_BK 4 + +#define PERIPHS_IO_MUX_GPIO4_U (PERIPHS_IO_MUX + 0x3C) +#define FUNC_GPIO4 0 +#define FUNC_CLK_XTAL 1 + +#define PERIPHS_IO_MUX_GPIO5_U (PERIPHS_IO_MUX + 0x40) +#define FUNC_GPIO5 0 +#define FUNC_CLK_RTC 1 + +#define PIN_PULLUP_DIS(PIN_NAME) CLEAR_PERI_REG_MASK(PIN_NAME, PERIPHS_IO_MUX_PULLUP) +#define PIN_PULLUP_EN(PIN_NAME) SET_PERI_REG_MASK(PIN_NAME, PERIPHS_IO_MUX_PULLUP) + +//XXX THIS LOOKS WRONG. + +#undef PIN_FUNC_SELECT + +#define PIN_FUNC_SELECT(PIN_NAME, FUNC) do { \ + CLEAR_PERI_REG_MASK(PIN_NAME, (PERIPHS_IO_MUX_FUNC<< Charles Lohr + * + * FileName: i2s_freertos.c + * + * Description: I2S output routines for a FreeRTOS system. Uses DMA and a queue + * to abstract away the nitty-gritty details. + * + * Modification history: + * 2015/06/01, v1.0 File created. + * 2015/07/23, Switch to making it a WS2812 output device. +******************************************************************************* + +Notes: + + This is pretty badly hacked together from the MP3 example. + I spent some time trying to strip it down to avoid a lot of the TX_ stuff. + That seems to work. + + Major suggestions that I couldn't figure out: + * Use interrupts to disable DMA, so it isn't running nonstop. + * Use interrupts to flag when new data can be sent. + + When I try using interrupts, it seems to work for a bit but things fall apart + rather quickly and the engine just refuses to send anymore until reboot. + + The way it works right now is to keep the DMA running forever and just update + the data in the buffer so it continues sending the frame. + +Extra copyright info: + Actually not much of this file is Copyright Espressif, comparativly little + mostly just the stuff to make the I2S bus go. + +*******************************************************************************/ + + +#include "eagle_soc.h" +#include "slc_register.h" +// #include "esp82xxutil.h" +#include +#include "ws2812_i2s.h" +//#include "user_interface.h" +#include "pin_mux_register.h" + +//Creates an I2S SR of 93,750 Hz, or 3 MHz Bitclock (.333us/sample) +// 1600000000L/(div*bestbck) +//It is likely you could speed this up a little. + +#ifdef WS2812_THREE_SAMPLE +#define WS_I2S_BCK 21 //Seems to work as low as 18, but is shakey at 1. +#define WS_I2S_DIV 3 +#elif defined( WS2812_FOUR_SAMPLE ) || defined(SK6812) +#define WS_I2S_BCK 16 //Seems to work as low as 13, shoddy at 12. +#define WS_I2S_DIV 3 +#else +#error You need to either define WS2812_THREE_SAMPLE, WS2812_FOUR_SAMPLE or SK6812 +#endif + +#ifndef i2c_bbpll +#define i2c_bbpll 0x67 +#define i2c_bbpll_en_audio_clock_out 4 +#define i2c_bbpll_en_audio_clock_out_msb 7 +#define i2c_bbpll_en_audio_clock_out_lsb 7 +#define i2c_bbpll_hostid 4 + +#define i2c_writeReg_Mask(block, host_id, reg_add, Msb, Lsb, indata) rom_i2c_writeReg_Mask(block, host_id, reg_add, Msb, Lsb, indata) +#define i2c_readReg_Mask(block, host_id, reg_add, Msb, Lsb) rom_i2c_readReg_Mask(block, host_id, reg_add, Msb, Lsb) +#define i2c_writeReg_Mask_def(block, reg_add, indata) \ + i2c_writeReg_Mask(block, block##_hostid, reg_add, reg_add##_msb, reg_add##_lsb, indata) +#define i2c_readReg_Mask_def(block, reg_add) \ + i2c_readReg_Mask(block, block##_hostid, reg_add, reg_add##_msb, reg_add##_lsb) +#endif +#ifndef ETS_SLC_INUM +#define ETS_SLC_INUM 1 +#endif + + + +//From i2s_reg.h +#define DR_REG_I2S_BASE (0x60000e00) + +#define I2STXFIFO (DR_REG_I2S_BASE + 0x0000) +#define I2SRXFIFO (DR_REG_I2S_BASE + 0x0004) +#define I2SCONF (DR_REG_I2S_BASE + 0x0008) +#define I2S_BCK_DIV_NUM 0x0000003F +#define I2S_BCK_DIV_NUM_S 22 +#define I2S_CLKM_DIV_NUM 0x0000003F +#define I2S_CLKM_DIV_NUM_S 16 +#define I2S_BITS_MOD 0x0000000F +#define I2S_BITS_MOD_S 12 +#define I2S_RECE_MSB_SHIFT (BIT(11)) +#define I2S_TRANS_MSB_SHIFT (BIT(10)) +#define I2S_I2S_RX_START (BIT(9)) +#define I2S_I2S_TX_START (BIT(8)) +#define I2S_MSB_RIGHT (BIT(7)) +#define I2S_RIGHT_FIRST (BIT(6)) +#define I2S_RECE_SLAVE_MOD (BIT(5)) +#define I2S_TRANS_SLAVE_MOD (BIT(4)) +#define I2S_I2S_RX_FIFO_RESET (BIT(3)) +#define I2S_I2S_TX_FIFO_RESET (BIT(2)) +#define I2S_I2S_RX_RESET (BIT(1)) +#define I2S_I2S_TX_RESET (BIT(0)) +#define I2S_I2S_RESET_MASK 0xf + + #define I2SINT_RAW (DR_REG_I2S_BASE + 0x000c) +#define I2S_I2S_TX_REMPTY_INT_RAW (BIT(5)) +#define I2S_I2S_TX_WFULL_INT_RAW (BIT(4)) +#define I2S_I2S_RX_REMPTY_INT_RAW (BIT(3)) +#define I2S_I2S_RX_WFULL_INT_RAW (BIT(2)) +#define I2S_I2S_TX_PUT_DATA_INT_RAW (BIT(1)) +#define I2S_I2S_RX_TAKE_DATA_INT_RAW (BIT(0)) + + +#define I2SINT_ST (DR_REG_I2S_BASE + 0x0010) +#define I2S_I2S_TX_REMPTY_INT_ST (BIT(5)) +#define I2S_I2S_TX_WFULL_INT_ST (BIT(4)) +#define I2S_I2S_RX_REMPTY_INT_ST (BIT(3)) +#define I2S_I2S_RX_WFULL_INT_ST (BIT(2)) +#define I2S_I2S_TX_PUT_DATA_INT_ST (BIT(1)) +#define I2S_I2S_RX_TAKE_DATA_INT_ST (BIT(0)) + + #define I2SINT_ENA (DR_REG_I2S_BASE + 0x0014) +#define I2S_I2S_TX_REMPTY_INT_ENA (BIT(5)) +#define I2S_I2S_TX_WFULL_INT_ENA (BIT(4)) +#define I2S_I2S_RX_REMPTY_INT_ENA (BIT(3)) +#define I2S_I2S_RX_WFULL_INT_ENA (BIT(2)) +#define I2S_I2S_TX_PUT_DATA_INT_ENA (BIT(1)) +#define I2S_I2S_RX_TAKE_DATA_INT_ENA (BIT(0)) + + #define I2SINT_CLR (DR_REG_I2S_BASE + 0x0018) +#define I2S_I2S_TX_REMPTY_INT_CLR (BIT(5)) +#define I2S_I2S_TX_WFULL_INT_CLR (BIT(4)) +#define I2S_I2S_RX_REMPTY_INT_CLR (BIT(3)) +#define I2S_I2S_RX_WFULL_INT_CLR (BIT(2)) +#define I2S_I2S_PUT_DATA_INT_CLR (BIT(1)) +#define I2S_I2S_TAKE_DATA_INT_CLR (BIT(0)) + +#define I2STIMING (DR_REG_I2S_BASE + 0x001c) +#define I2S_TRANS_BCK_IN_INV (BIT(22)) +#define I2S_RECE_DSYNC_SW (BIT(21)) +#define I2S_TRANS_DSYNC_SW (BIT(20)) +#define I2S_RECE_BCK_OUT_DELAY 0x00000003 +#define I2S_RECE_BCK_OUT_DELAY_S 18 +#define I2S_RECE_WS_OUT_DELAY 0x00000003 +#define I2S_RECE_WS_OUT_DELAY_S 16 +#define I2S_TRANS_SD_OUT_DELAY 0x00000003 +#define I2S_TRANS_SD_OUT_DELAY_S 14 +#define I2S_TRANS_WS_OUT_DELAY 0x00000003 +#define I2S_TRANS_WS_OUT_DELAY_S 12 +#define I2S_TRANS_BCK_OUT_DELAY 0x00000003 +#define I2S_TRANS_BCK_OUT_DELAY_S 10 +#define I2S_RECE_SD_IN_DELAY 0x00000003 +#define I2S_RECE_SD_IN_DELAY_S 8 +#define I2S_RECE_WS_IN_DELAY 0x00000003 +#define I2S_RECE_WS_IN_DELAY_S 6 +#define I2S_RECE_BCK_IN_DELAY 0x00000003 +#define I2S_RECE_BCK_IN_DELAY_S 4 +#define I2S_TRANS_WS_IN_DELAY 0x00000003 +#define I2S_TRANS_WS_IN_DELAY_S 2 +#define I2S_TRANS_BCK_IN_DELAY 0x00000003 +#define I2S_TRANS_BCK_IN_DELAY_S 0 + +#define I2S_FIFO_CONF (DR_REG_I2S_BASE + 0x0020) +#define I2S_I2S_RX_FIFO_MOD 0x00000007 +#define I2S_I2S_RX_FIFO_MOD_S 16 +#define I2S_I2S_TX_FIFO_MOD 0x00000007 +#define I2S_I2S_TX_FIFO_MOD_S 13 +#define I2S_I2S_DSCR_EN (BIT(12)) +#define I2S_I2S_TX_DATA_NUM 0x0000003F +#define I2S_I2S_TX_DATA_NUM_S 6 +#define I2S_I2S_RX_DATA_NUM 0x0000003F +#define I2S_I2S_RX_DATA_NUM_S 0 + + +#define I2SRXEOF_NUM (DR_REG_I2S_BASE + 0x0024) +#define I2S_I2S_RX_EOF_NUM 0xFFFFFFFF +#define I2S_I2S_RX_EOF_NUM_S 0 + +#define I2SCONF_SIGLE_DATA (DR_REG_I2S_BASE + 0x0028) +#define I2S_I2S_SIGLE_DATA 0xFFFFFFFF +#define I2S_I2S_SIGLE_DATA_S 0 + +#define I2SCONF_CHAN (DR_REG_I2S_BASE + 0x002c) +#define I2S_RX_CHAN_MOD 0x00000003 +#define I2S_RX_CHAN_MOD_S 3 +#define I2S_TX_CHAN_MOD 0x00000007 +#define I2S_TX_CHAN_MOD_S 0 + + +//From sdio_slv.h + + +struct sdio_queue +{ + uint32 blocksize:12; + uint32 datalen:12; + uint32 unused:5; + uint32 sub_sof:1; + uint32 eof:1; + uint32 owner:1; + + uint32 buf_ptr; + uint32 next_link_ptr; +}; + +struct sdio_slave_status_element +{ + uint32 wr_busy:1; + uint32 rd_empty :1; + uint32 comm_cnt :3; + uint32 intr_no :3; + uint32 rx_length:16; + uint32 res:8; +}; + +union sdio_slave_status +{ + struct sdio_slave_status_element elm_value; + uint32 word_value; +}; + +#define RX_AVAILIBLE 2 +#define TX_AVAILIBLE 1 +#define INIT_STAGE 0 + +#define SDIO_QUEUE_LEN 8 +#define MOSI 0 +#define MISO 1 +#define SDIO_DATA_ERROR 6 + +#define SLC_INTEREST_EVENT (SLC_TX_EOF_INT_ENA | SLC_RX_EOF_INT_ENA | SLC_RX_UDF_INT_ENA | SLC_TX_DSCR_ERR_INT_ENA) +#define TRIG_TOHOST_INT() SET_PERI_REG_MASK(SLC_INTVEC_TOHOST , BIT0);\ + CLEAR_PERI_REG_MASK(SLC_INTVEC_TOHOST , BIT0) + + +///Rest of program... + +//Pointer to the I2S DMA buffer data +//static unsigned int i2sBuf[I2SDMABUFCNT][I2SDMABUFLEN]; +//I2S DMA buffer descriptors +//static struct sdio_queue i2sBufDesc[I2SDMABUFCNT]; +static struct sdio_queue i2sBufDescOut; +static struct sdio_queue i2sBufDescZeroes; + +static unsigned int i2sZeroes[32]; +static unsigned int i2sBlock[WS_BLOCKSIZE/4]; + +//Queue which contains empty DMA buffers +//DMA underrun counter + + +#ifdef USE_2812_INTERRUPTS + +volatile uint8_t ws2812_dma_complete; + +//This routine is called as soon as the DMA routine has something to tell us. All we +//handle here is the RX_EOF_INT status, which indicate the DMA has sent a buffer whose +//descriptor has the 'EOF' field set to 1. +LOCAL void slc_isr(void) { + //clear all intr flags +// WRITE_PERI_REG(SLC_INT_CLR, 0xffffffff);//slc_intr_status); + +// ws2812_dma_complete = 1; + + //This is a little wacky. This function actually gets called twice. + //Once for the initial transfer, but by the time we tell it to stop + //The other zero transfer's already begun. +// SET_PERI_REG_MASK(SLC_RX_LINK, SLC_RXLINK_STOP); +} + + +#endif + +//Initialize I2S subsystem for DMA circular buffer use +void ICACHE_FLASH_ATTR ws2812_init() +{ + int x, y; + + //Reset DMA + SET_PERI_REG_MASK(SLC_CONF0, SLC_RXLINK_RST);//|SLC_TXLINK_RST); + CLEAR_PERI_REG_MASK(SLC_CONF0, SLC_RXLINK_RST);//|SLC_TXLINK_RST); + + //Clear DMA int flags + SET_PERI_REG_MASK(SLC_INT_CLR, 0xffffffff); + CLEAR_PERI_REG_MASK(SLC_INT_CLR, 0xffffffff); + + //Enable and configure DMA + CLEAR_PERI_REG_MASK(SLC_CONF0, (SLC_MODE< WS_BLOCKSIZE ) return; + + int pl = 0; + int quit = 0; + + //Once for each led. + for( place = 0; !quit; place++ ) + { + uint8_t b; + b = buffer[pl++]; uint16_t c1a = bitpatterns[(b&0x0f)]; uint16_t c1b = bitpatterns[(b>>4)]; + b = buffer[pl++]; uint16_t c2a = bitpatterns[(b&0x0f)]; uint16_t c2b = bitpatterns[(b>>4)]; + b = buffer[pl++]; uint16_t c3a = bitpatterns[(b&0x0f)]; uint16_t c3b = bitpatterns[(b>>4)]; + b = buffer[pl++]; uint16_t c4a = bitpatterns[(b&0x0f)]; uint16_t c4b = bitpatterns[(b>>4)]; + + if( pl >= buffersize ) + { + quit = 1; + if( pl-1 >= buffersize ) c4a = c4b = 0; + if( pl-2 >= buffersize ) c3a = c3b = 0; + if( pl-3 >= buffersize ) c2a = c2b = 0; + if( pl-4 >= buffersize ) c1a = c1b = 0; + } + + //Order of bits on wire: Reverse from how they appear here. +#define STEP1(x) (c##x##b >> 4 ) +#define STEP2(x) ((c##x##b << 4 ) | ( c##x##a>>8 )) +#define STEP3(x) (c##x##a & 0xff ) + + *(bufferpl++) = STEP1(2); + *(bufferpl++) = STEP3(1); + *(bufferpl++) = STEP2(1); + *(bufferpl++) = STEP1(1); + + *(bufferpl++) = STEP2(3); + *(bufferpl++) = STEP1(3); + *(bufferpl++) = STEP3(2); + *(bufferpl++) = STEP2(2); + + *(bufferpl++) = STEP3(4); + *(bufferpl++) = STEP2(4); + *(bufferpl++) = STEP1(4); + *(bufferpl++) = STEP3(3); + } + + while( bufferpl < &((uint8_t*)i2sBlock)[WS_BLOCKSIZE] ) *(bufferpl++) = 0; + +#elif defined(WS2812_FOUR_SAMPLE) || defined(SK6812) + uint16_t * bufferpl = (uint16_t*)&i2sBlock[0]; + + if( buffersize * 4 > WS_BLOCKSIZE ) return; + + for( place = 0; place < buffersize; place++ ) + { + uint8_t btosend = buffer[place]; + *(bufferpl++) = bitpatterns[(btosend&0x0f)]; + *(bufferpl++) = bitpatterns[(btosend>>4)&0x0f]; + } +#endif + +#ifdef USE_2812_INTERRUPTS + + uint16_t leftover = buffersize & 0x1f; + if( leftover ) leftover = 32 - leftover; + for( place = 0; place < leftover; place++ ) + { + *(bufferpl++) = 0; + *(bufferpl++) = 0; + } + + buffersize += leftover; + + uint16_t sizeout_words = buffersize * 2; + + i2sBufDescOut.owner = 1; + i2sBufDescOut.eof = 1; + i2sBufDescOut.sub_sof = 0; + i2sBufDescOut.datalen = sizeout_words*2; //Size (in bytes) + i2sBufDescOut.blocksize = sizeout_words*2; //Size (in bytes) + i2sBufDescOut.buf_ptr = (uint32_t)&i2sBlock[0]; + i2sBufDescOut.unused = 0; + i2sBufDescOut.next_link_ptr=(uint32_t)&i2sBufDescZeroes; //At the end, just redirect the DMA to the zero buffer. + + SET_PERI_REG_MASK(SLC_RX_LINK, SLC_RXLINK_STOP); + CLEAR_PERI_REG_MASK(SLC_RX_LINK,SLC_RXLINK_DESCADDR_MASK); + SET_PERI_REG_MASK(SLC_RX_LINK, ((uint32)&i2sBufDescOut) & SLC_RXLINK_DESCADDR_MASK); + SET_PERI_REG_MASK(SLC_RX_LINK, SLC_RXLINK_START); + +#endif + +} + + + diff --git a/ledcontroller/app/ws2812_i2s.h b/ledcontroller/app/ws2812_i2s.h new file mode 100644 index 0000000..d65b1fa --- /dev/null +++ b/ledcontroller/app/ws2812_i2s.h @@ -0,0 +1,36 @@ +//Copyright 2015 <>< Charles Lohr, See LICENSE file. +//WS2812 sender that abuses the I2S interface on the WS2812. + +#ifndef _WS2812I2S_TEST +#define _WS2812I2S_TEST + +//Stuff that should be for the header: + +#include + +//Parameters for the I2S DMA behaviour +//#define I2SDMABUFCNT (2) //Number of buffers in the I2S circular buffer +//#define I2SDMABUFLEN (32*2) //Length of one buffer, in 32-bit words. + +//NOTE: Blocksize MUST be divisible by 4. Cannot exceed 4092 +//Each LED takes up 12 block bytes in WS2812_FOUR_SAMPLE +//Or 9 block bytes in WS2812_THREE_SAMPLE +#define WS_BLOCKSIZE 4000 + +//You can either have 3 or 4 samples per bit for WS2812s. +//3 sample can't go quite as fast as 4. +//3 sample uses more processing when updating than 4. +//4 takes up more RAM per LED than 3. +//3 has slightly more restrictve timing requirements. +//4 has more DMA load when running. +#define WS2812_THREE_SAMPLE +//#define WS2812_FOUR_SAMPLE + +// timing for SK6812 LEDs, always uses 4bit samples +//#define SK6812 + +void ICACHE_FLASH_ATTR ws2812_init(); +void ICACHE_FLASH_ATTR ws2812_push( uint8_t * buffer, uint16_t buffersize ); //Buffersize = Nr LEDs * 3 + +#endif + diff --git a/mopidy-control/Makefile b/mopidy-control/Makefile new file mode 120000 index 0000000..d0b0e8e --- /dev/null +++ b/mopidy-control/Makefile @@ -0,0 +1 @@ +../Makefile \ No newline at end of file diff --git a/mopidy-control/README.md b/mopidy-control/README.md new file mode 100644 index 0000000..23f9f0b --- /dev/null +++ b/mopidy-control/README.md @@ -0,0 +1,37 @@ +This module required customized [mopidy-mqtt +extension](https://github.com/Informatic/mopidy-mqtt). + +This module borrows some code from [esp8266ws2812i2s](https://github.com/cnlohr/esp8266ws2812i2s) project, which is licensed +under [MIT](https://github.com/cnlohr/esp82xx/blob/6053b2f478a2ecae867bef3f98fb265cf4a69a98/LICENSE) + +This module borrows some code from +[ClickEncoder](https://github.com/0xPIT/encoder/blob/master/LICENSING.txt) +project. + +// ----------------------------------------------------------------------------- +// +// Copyright (c) 2010-2014, karl@pitrich.com +// Copyright by authors stated in the source code files +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// ----------------------------------------------------------------------------- diff --git a/mopidy-control/app/ClickEncoder.cpp b/mopidy-control/app/ClickEncoder.cpp new file mode 100644 index 0000000..007f810 --- /dev/null +++ b/mopidy-control/app/ClickEncoder.cpp @@ -0,0 +1,219 @@ +// ---------------------------------------------------------------------------- +// Rotary Encoder Driver with Acceleration +// Supports Click, DoubleClick, Long Click +// +// (c) 2010 karl@pitrich.com +// (c) 2014 karl@pitrich.com +// +// Timer-based rotary encoder logic by Peter Dannegger +// http://www.mikrocontroller.net/articles/Drehgeber +// ---------------------------------------------------------------------------- + +#include "ClickEncoder.h" +#include + +// ---------------------------------------------------------------------------- +// Button configuration (values for 1ms timer service calls) +// +#define ENC_BUTTONINTERVAL 10 // check button every x milliseconds, also debouce time +#define ENC_DOUBLECLICKTIME 400 // second click within 600ms +#define ENC_HOLDTIME 1000 // report held button after 1.2s + +// ---------------------------------------------------------------------------- +// Acceleration configuration (for 1000Hz calls to ::service()) +// +#define ENC_ACCEL_TOP 3072 // max. acceleration: *12 (val >> 8) +#define ENC_ACCEL_INC 25 +#define ENC_ACCEL_DEC 2 + +// ---------------------------------------------------------------------------- + +#if ENC_DECODER != ENC_NORMAL +# ifdef ENC_HALFSTEP + // decoding table for hardware with flaky notch (half resolution) + const int8_t ClickEncoder::table[16] __attribute__((__progmem__)) = { + 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -1, 0, 0 + }; +# else + // decoding table for normal hardware + const int8_t ClickEncoder::table[16] __attribute__((__progmem__)) = { + 0, 1, -1, 0, -1, 0, 0, 1, 1, 0, 0, -1, 0, -1, 1, 0 + }; +# endif +#endif + +// ---------------------------------------------------------------------------- + +ClickEncoder::ClickEncoder(uint8_t A, uint8_t B, uint8_t BTN, uint8_t stepsPerNotch, bool active) + : doubleClickEnabled(true), accelerationEnabled(true), + delta(0), last(0), acceleration(0), + button(Open), steps(stepsPerNotch), + pinA(A), pinB(B), pinBTN(BTN), pinsActive(active) +{ + uint8_t configType = (pinsActive == false) ? INPUT_PULLUP : INPUT; + pinMode(pinA, configType); + pinMode(pinB, configType); + pinMode(pinBTN, configType); + + if (digitalRead(pinA) == pinsActive) { + last = 3; + } + + if (digitalRead(pinB) == pinsActive) { + last ^=1; + } +} + +// ---------------------------------------------------------------------------- +// call this every 1 millisecond via timer ISR +// +void ClickEncoder::service(void) +{ + bool moved = false; + unsigned long now = millis(); + + if (accelerationEnabled) { // decelerate every tick + acceleration -= ENC_ACCEL_DEC; + if (acceleration & 0x8000) { // handle overflow of MSB is set + acceleration = 0; + } + } + +#if ENC_DECODER == ENC_FLAKY + last = (last << 2) & 0x0F; + + if (digitalRead(pinA) == pinsActive) { + last |= 2; + } + + if (digitalRead(pinB) == pinsActive) { + last |= 1; + } + + uint8_t tbl = pgm_read_byte(&table[last]); + if (tbl) { + delta += tbl; + moved = true; + } +#elif ENC_DECODER == ENC_NORMAL + int8_t curr = 0; + + if (digitalRead(pinA) == pinsActive) { + curr = 3; + } + + if (digitalRead(pinB) == pinsActive) { + curr ^= 1; + } + + int8_t diff = last - curr; + + if (diff & 1) { // bit 0 = step + last = curr; + delta += (diff & 2) - 1; // bit 1 = direction (+/-) + moved = true; + } +#else +# error "Error: define ENC_DECODER to ENC_NORMAL or ENC_FLAKY" +#endif + + if (accelerationEnabled && moved) { + // increment accelerator if encoder has been moved + if (acceleration <= (ENC_ACCEL_TOP - ENC_ACCEL_INC)) { + acceleration += ENC_ACCEL_INC; + } + } + + // handle button + // +#ifndef WITHOUT_BUTTON + static uint16_t keyDownTicks = 0; + static uint8_t doubleClickTicks = 0; + static unsigned long lastButtonCheck = 0; + + if (pinBTN > 0 // check button only, if a pin has been provided + && (now - lastButtonCheck) >= ENC_BUTTONINTERVAL) // checking button is sufficient every 10-30ms + { + lastButtonCheck = now; + + if (digitalRead(pinBTN) == pinsActive) { // key is down + keyDownTicks++; + if (keyDownTicks > (ENC_HOLDTIME / ENC_BUTTONINTERVAL)) { + button = Held; + } + } + + if (digitalRead(pinBTN) == !pinsActive) { // key is now up + if (keyDownTicks /*> ENC_BUTTONINTERVAL*/) { + if (button == Held) { + button = Released; + doubleClickTicks = 0; + } + else { + #define ENC_SINGLECLICKONLY 1 + if (doubleClickTicks > ENC_SINGLECLICKONLY) { // prevent trigger in single click mode + if (doubleClickTicks < (ENC_DOUBLECLICKTIME / ENC_BUTTONINTERVAL)) { + button = DoubleClicked; + doubleClickTicks = 0; + } + } + else { + doubleClickTicks = (doubleClickEnabled) ? (ENC_DOUBLECLICKTIME / ENC_BUTTONINTERVAL) : ENC_SINGLECLICKONLY; + } + } + } + + keyDownTicks = 0; + } + + if (doubleClickTicks > 0) { + doubleClickTicks--; + if (--doubleClickTicks == 0) { + button = Clicked; + } + } + } +#endif // WITHOUT_BUTTON + +} + +// ---------------------------------------------------------------------------- + +int16_t ClickEncoder::getValue(void) +{ + int16_t val; + + val = delta; + + if (steps == 2) delta = val & 1; + else if (steps == 4) delta = val & 3; + else delta = 0; // default to 1 step per notch + + if (steps == 4) val >>= 2; + if (steps == 2) val >>= 1; + + int16_t r = 0; + int16_t accel = ((accelerationEnabled) ? (acceleration >> 8) : 0); + + if (val < 0) { + r -= 1 + accel; + } + else if (val > 0) { + r += 1 + accel; + } + + return r; +} + +// ---------------------------------------------------------------------------- + +#ifndef WITHOUT_BUTTON +ClickEncoder::Button ClickEncoder::getButton(void) +{ + ClickEncoder::Button ret = button; + if (button != ClickEncoder::Held) { + button = ClickEncoder::Open; // reset + } + return ret; +} +#endif diff --git a/mopidy-control/app/ClickEncoder.h b/mopidy-control/app/ClickEncoder.h new file mode 100644 index 0000000..9787f73 --- /dev/null +++ b/mopidy-control/app/ClickEncoder.h @@ -0,0 +1,114 @@ +// ---------------------------------------------------------------------------- +// Rotary Encoder Driver with Acceleration +// Supports Click, DoubleClick, Long Click +// +// (c) 2010 karl@pitrich.com +// (c) 2014 karl@pitrich.com +// +// Timer-based rotary encoder logic by Peter Dannegger +// http://www.mikrocontroller.net/articles/Drehgeber +// ---------------------------------------------------------------------------- + +#ifndef __have__ClickEncoder_h__ +#define __have__ClickEncoder_h__ + +// ---------------------------------------------------------------------------- + +#include + +// ---------------------------------------------------------------------------- + +#define ENC_NORMAL (1 << 1) // use Peter Danneger's decoder +#define ENC_FLAKY (1 << 2) // use Table-based decoder + +// ---------------------------------------------------------------------------- + +#ifndef ENC_DECODER +# define ENC_DECODER ENC_NORMAL +#endif + +#if ENC_DECODER == ENC_FLAKY +# ifndef ENC_HALFSTEP +# define ENC_HALFSTEP 1 // use table for half step per default +# endif +#endif + +// ---------------------------------------------------------------------------- + +class ClickEncoder +{ +public: + typedef enum Button_e { + Open = 0, + Closed, + + Pressed, + Held, + Released, + + Clicked, + DoubleClicked + + } Button; + +public: + ClickEncoder(uint8_t A, uint8_t B, uint8_t BTN = -1, + uint8_t stepsPerNotch = 1, bool active = false); + + void service(void); + int16_t getValue(void); + +#ifndef WITHOUT_BUTTON +public: + Button getButton(void); +#endif + +#ifndef WITHOUT_BUTTON +public: + void setDoubleClickEnabled(const bool &d) + { + doubleClickEnabled = d; + } + + const bool getDoubleClickEnabled() + { + return doubleClickEnabled; + } +#endif + +public: + void setAccelerationEnabled(const bool &a) + { + accelerationEnabled = a; + if (accelerationEnabled == false) { + acceleration = 0; + } + } + + const bool getAccelerationEnabled() + { + return accelerationEnabled; + } + +private: + const uint8_t pinA; + const uint8_t pinB; + const uint8_t pinBTN; + const bool pinsActive; + volatile int16_t delta; + volatile int16_t last; + uint8_t steps; + volatile uint16_t acceleration; +#if ENC_DECODER != ENC_NORMAL + static const int8_t table[16]; +#endif +#ifndef WITHOUT_BUTTON + volatile Button button; + bool doubleClickEnabled; + bool accelerationEnabled; +#endif +}; + +// ---------------------------------------------------------------------------- + +#endif // __have__ClickEncoder_h__ diff --git a/mopidy-control/app/application.cpp b/mopidy-control/app/application.cpp new file mode 100644 index 0000000..883bbb5 --- /dev/null +++ b/mopidy-control/app/application.cpp @@ -0,0 +1,154 @@ +#include +#include +#include + +#include + +#define ENCA 14 +#define ENCB 13 + +#define ENC_DECODER (1 << 2) +#include + +extern "C" { +#include "ws2812_i2s.h" +} + +const int LEDS_CNT = 16; +const int CENTER_OFFSET = 11; +const int MAX_VAL = 100; +const int LED_MIN = 0; +const int LED_MAX = 16; + + +class EncoderEndpoint : public Endpoint { +private: + ClickEncoder encoder; //(ENCA, ENCB, 4, 4); + + struct __attribute__((packed)) { + uint8_t g; + uint8_t r; + uint8_t b; + } leds[LEDS_CNT]; + + Timer animationTimer; + Timer delayedValueTimer; + Timer encTimer; + int delayedValue = 0; + int value = 0; + bool playing = false; + long long lastInteraction; + + void publish(String key, String value) { + if (parent->mqtt.getConnectionState() == eTCS_Connected) { + parent->mqtt.publish( + String(TOPIC_PREFIX "mopidy/status/") + + key + String("/set"), value); + } + } + + void animate() { + + int oldval = value; + value += encoder.getValue() * 3; + + value = constrain(value, 0, MAX_VAL); + if (value != oldval) { + lastInteraction = millis(); + publish("volume", String(map(value, 0, MAX_VAL, 0, 100))); + //parent->mqtt.publish(TOPIC_PREFIX "mopidy/status/volume/set", String(map(value, 0, MAX_VAL, 0, 100))); + Serial.println(value); + } + + int button = encoder.getButton(); + + if(button != 0) { + Serial.print("button: "); + Serial.println(button); + if (button == 5) { + publish("playing", playing ? "false" : "true"); + } + } + + for(int i = 0; i < LEDS_CNT; i++) { + WDT.alive(); + int v = constrain(map(value, MAX_VAL * (LEDS_CNT-i-1) / LEDS_CNT, MAX_VAL * (LEDS_CNT-i) / LEDS_CNT, LED_MIN, LED_MAX), LED_MIN, LED_MAX); + int led_i = (i + CENTER_OFFSET) % LEDS_CNT; + if(playing) { + leds[led_i].g = v; + leds[led_i].r = 0; + leds[led_i].b = 0; + } else { + leds[led_i].g = 0; + leds[led_i].r = v; + leds[led_i].b = 0; + } + } + + ws2812_push((uint8_t*) leds, sizeof(leds)); + } + +public: + EncoderEndpoint() : Endpoint("analog"), encoder(ENCA, ENCB, 4, 4) { } + void updateDelayedValue() { + Serial.println("delayed value xD"); + value = delayedValue; + } + + void bind(String _name, SpejsNode* _parent) { + Endpoint::bind(_name, _parent); + delayedValueTimer.initializeMs(1500, TimerDelegate(&EncoderEndpoint::updateDelayedValue, this)); + animationTimer.initializeMs(30, TimerDelegate(&EncoderEndpoint::animate, this)).start(); + ws2812_init(); + + pinMode(12, OUTPUT); + digitalWrite(12, LOW); + + pinMode(2, OUTPUT); + digitalWrite(2, LOW); + + encoder.setAccelerationEnabled(false); + encTimer.initializeMs(1, TimerDelegate(&ClickEncoder::service, &encoder)).start(); + } + + EndpointResult onValue(String property, String rvalue) { + Serial.print(property); + Serial.print(" = "); + Serial.println(value); + + value = rvalue.toInt(); // map(rvalue.toInt(), 0, 100, 0, MAX_VAL); + return 200; + } + + void onConnected() { + parent->mqtt.subscribe(TOPIC_PREFIX "mopidy/#"); + } + + void onMessage(String topic, String payload) { + Endpoint::onMessage(topic, payload); + + Serial.println("status: got message"); + Serial.printf("%s: %s\r\n", topic.c_str(), payload.c_str()); + + if (topic == TOPIC_PREFIX "mopidy/status/volume") { + delayedValue = payload.toInt(); //map(payload.toInt(), 0, 100, 0, MAX_VAL); + if(millis() - lastInteraction > 3000) { + updateDelayedValue(); + } else { + delayedValueTimer.stop(); + delayedValueTimer.start(false); + } + } else if (topic == TOPIC_PREFIX "mopidy/status/playing") { + playing = payload == "true"; + } + } +}; + + +SpejsNode node("encoder"); + +void init() +{ + node.init(); + node.registerEndpoint("encoder", new EncoderEndpoint()); +} diff --git a/mopidy-control/app/pin_mux_register.h b/mopidy-control/app/pin_mux_register.h new file mode 100644 index 0000000..0d665bf --- /dev/null +++ b/mopidy-control/app/pin_mux_register.h @@ -0,0 +1,173 @@ +/* + * Copyright (c) Espressif System 2010 - 2012 + * + */ + +#ifndef _PIN_MUX_H_ +#define _PIN_MUX_H_ + +//Register Bits{{ +#define BIT31 0x80000000 +#define BIT30 0x40000000 +#define BIT29 0x20000000 +#define BIT28 0x10000000 +#define BIT27 0x08000000 +#define BIT26 0x04000000 +#define BIT25 0x02000000 +#define BIT24 0x01000000 +#define BIT23 0x00800000 +#define BIT22 0x00400000 +#define BIT21 0x00200000 +#define BIT20 0x00100000 +#define BIT19 0x00080000 +#define BIT18 0x00040000 +#define BIT17 0x00020000 +#define BIT16 0x00010000 +#define BIT15 0x00008000 +#define BIT14 0x00004000 +#define BIT13 0x00002000 +#define BIT12 0x00001000 +#define BIT11 0x00000800 +#define BIT10 0x00000400 +#define BIT9 0x00000200 +#define BIT8 0x00000100 +#define BIT7 0x00000080 +#define BIT6 0x00000040 +#define BIT5 0x00000020 +#define BIT4 0x00000010 +#define BIT3 0x00000008 +#define BIT2 0x00000004 +#define BIT1 0x00000002 +#define BIT0 0x00000001 +//}} +#define PERIPHS_IO_MUX 0x60000800 + +#define PERIPHS_IO_MUX_FUNC 0x13 +#define PERIPHS_IO_MUX_FUNC_S 4 +#define PERIPHS_IO_MUX_PULLUP BIT7 +#define PERIPHS_IO_MUX_PULLDWN BIT6 +#define PERIPHS_IO_MUX_SLEEP_PULLUP BIT3 +#define PERIPHS_IO_MUX_SLEEP_PULLDWN BIT2 +#define PERIPHS_IO_MUX_SLEEP_OE BIT1 +#define PERIPHS_IO_MUX_OE BIT0 + +#define PERIPHS_IO_MUX_CONF_U (PERIPHS_IO_MUX + 0x00) +#define SPI0_CLK_EQU_SYS_CLK BIT8 +#define SPI1_CLK_EQU_SYS_CLK BIT9 + +#define PERIPHS_IO_MUX_MTDI_U (PERIPHS_IO_MUX + 0x04) +#define FUNC_MTDI 0 +#define FUNC_I2SI_DATA 1 +#define FUNC_HSPIQ_MISO 2 +#define FUNC_GPIO12 3 +#define FUNC_UART0_DTR 4 + +#define PERIPHS_IO_MUX_MTCK_U (PERIPHS_IO_MUX + 0x08) +#define FUNC_MTCK 0 +#define FUNC_I2SI_BCK 1 +#define FUNC_HSPID_MOSI 2 +#define FUNC_GPIO13 3 +#define FUNC_UART0_CTS 4 + +#define PERIPHS_IO_MUX_MTMS_U (PERIPHS_IO_MUX + 0x0C) +#define FUNC_MTMS 0 +#define FUNC_I2SI_WS 1 +#define FUNC_HSPI_CLK 2 +#define FUNC_GPIO14 3 +#define FUNC_UART0_DSR 4 + +#define PERIPHS_IO_MUX_MTDO_U (PERIPHS_IO_MUX + 0x10) +#define FUNC_MTDO 0 +#define FUNC_I2SO_BCK 1 +#define FUNC_HSPI_CS0 2 +#define FUNC_GPIO15 3 +#define FUNC_U0RTS 4 +#define FUNC_UART0_RTS 4 + +#define PERIPHS_IO_MUX_U0RXD_U (PERIPHS_IO_MUX + 0x14) +#define FUNC_U0RXD 0 +#define FUNC_I2SO_DATA 1 +#define FUNC_GPIO3 3 +#define FUNC_CLK_XTAL_BK 4 + +#define PERIPHS_IO_MUX_U0TXD_U (PERIPHS_IO_MUX + 0x18) +#define FUNC_U0TXD 0 +#define FUNC_SPICS1 1 +#define FUNC_GPIO1 3 +#define FUNC_CLK_RTC_BK 4 + +#define PERIPHS_IO_MUX_SD_CLK_U (PERIPHS_IO_MUX + 0x1c) +#define FUNC_SDCLK 0 +#define FUNC_SPICLK 1 +#define FUNC_GPIO6 3 +#define UART1_CTS 4 + +#define PERIPHS_IO_MUX_SD_DATA0_U (PERIPHS_IO_MUX + 0x20) +#define FUNC_SDDATA0 0 +#define FUNC_SPIQ_MISO 1 +#define FUNC_GPIO7 3 +#define FUNC_U1TXD 4 +#define FUNC_UART1_TXD 4 + +#define PERIPHS_IO_MUX_SD_DATA1_U (PERIPHS_IO_MUX + 0x24) +#define FUNC_SDDATA1 0 +#define FUNC_SPID_MOSI 1 +#define FUNC_GPIO8 3 +#define FUNC_U1RXD 4 +#define FUNC_UART1_RXD 4 + +#define PERIPHS_IO_MUX_SD_DATA2_U (PERIPHS_IO_MUX + 0x28) +#define FUNC_SDDATA2 0 +#define FUNC_SPIHD 1 +#define FUNC_GPIO9 3 +#define UFNC_HSPIHD 4 + +#define PERIPHS_IO_MUX_SD_DATA3_U (PERIPHS_IO_MUX + 0x2c) +#define FUNC_SDDATA3 0 +#define FUNC_SPIWP 1 +#define FUNC_GPIO10 3 +#define FUNC_HSPIWP 4 + +#define PERIPHS_IO_MUX_SD_CMD_U (PERIPHS_IO_MUX + 0x30) +#define FUNC_SDCMD 0 +#define FUNC_SPICS0 1 +#define FUNC_GPIO11 3 +#define U1RTS 4 +#define UART1_RTS 4 + +#define PERIPHS_IO_MUX_GPIO0_U (PERIPHS_IO_MUX + 0x34) +#define FUNC_GPIO0 0 +#define FUNC_SPICS2 1 +#define FUNC_CLK_OUT 4 + +#define PERIPHS_IO_MUX_GPIO2_U (PERIPHS_IO_MUX + 0x38) +#define FUNC_GPIO2 0 +#define FUNC_I2SO_WS 1 +#define FUNC_U1TXD_BK 2 +#define FUNC_UART1_TXD_BK 2 +#define FUNC_U0TXD_BK 4 +#define FUNC_UART0_TXD_BK 4 + +#define PERIPHS_IO_MUX_GPIO4_U (PERIPHS_IO_MUX + 0x3C) +#define FUNC_GPIO4 0 +#define FUNC_CLK_XTAL 1 + +#define PERIPHS_IO_MUX_GPIO5_U (PERIPHS_IO_MUX + 0x40) +#define FUNC_GPIO5 0 +#define FUNC_CLK_RTC 1 + +#define PIN_PULLUP_DIS(PIN_NAME) CLEAR_PERI_REG_MASK(PIN_NAME, PERIPHS_IO_MUX_PULLUP) +#define PIN_PULLUP_EN(PIN_NAME) SET_PERI_REG_MASK(PIN_NAME, PERIPHS_IO_MUX_PULLUP) + +//XXX THIS LOOKS WRONG. + +#undef PIN_FUNC_SELECT + +#define PIN_FUNC_SELECT(PIN_NAME, FUNC) do { \ + CLEAR_PERI_REG_MASK(PIN_NAME, (PERIPHS_IO_MUX_FUNC<< Charles Lohr + * + * FileName: i2s_freertos.c + * + * Description: I2S output routines for a FreeRTOS system. Uses DMA and a queue + * to abstract away the nitty-gritty details. + * + * Modification history: + * 2015/06/01, v1.0 File created. + * 2015/07/23, Switch to making it a WS2812 output device. +******************************************************************************* + +Notes: + + This is pretty badly hacked together from the MP3 example. + I spent some time trying to strip it down to avoid a lot of the TX_ stuff. + That seems to work. + + Major suggestions that I couldn't figure out: + * Use interrupts to disable DMA, so it isn't running nonstop. + * Use interrupts to flag when new data can be sent. + + When I try using interrupts, it seems to work for a bit but things fall apart + rather quickly and the engine just refuses to send anymore until reboot. + + The way it works right now is to keep the DMA running forever and just update + the data in the buffer so it continues sending the frame. + +Extra copyright info: + Actually not much of this file is Copyright Espressif, comparativly little + mostly just the stuff to make the I2S bus go. + +*******************************************************************************/ + + +#include "eagle_soc.h" +#include "slc_register.h" +// #include "esp82xxutil.h" +#include +#include "ws2812_i2s.h" +//#include "user_interface.h" +#include "pin_mux_register.h" + +//Creates an I2S SR of 93,750 Hz, or 3 MHz Bitclock (.333us/sample) +// 1600000000L/(div*bestbck) +//It is likely you could speed this up a little. + +#ifdef WS2812_THREE_SAMPLE +#define WS_I2S_BCK 21 //Seems to work as low as 18, but is shakey at 1. +#define WS_I2S_DIV 3 +#elif defined( WS2812_FOUR_SAMPLE ) || defined(SK6812) +#define WS_I2S_BCK 16 //Seems to work as low as 13, shoddy at 12. +#define WS_I2S_DIV 3 +#else +#error You need to either define WS2812_THREE_SAMPLE, WS2812_FOUR_SAMPLE or SK6812 +#endif + +#ifndef i2c_bbpll +#define i2c_bbpll 0x67 +#define i2c_bbpll_en_audio_clock_out 4 +#define i2c_bbpll_en_audio_clock_out_msb 7 +#define i2c_bbpll_en_audio_clock_out_lsb 7 +#define i2c_bbpll_hostid 4 + +#define i2c_writeReg_Mask(block, host_id, reg_add, Msb, Lsb, indata) rom_i2c_writeReg_Mask(block, host_id, reg_add, Msb, Lsb, indata) +#define i2c_readReg_Mask(block, host_id, reg_add, Msb, Lsb) rom_i2c_readReg_Mask(block, host_id, reg_add, Msb, Lsb) +#define i2c_writeReg_Mask_def(block, reg_add, indata) \ + i2c_writeReg_Mask(block, block##_hostid, reg_add, reg_add##_msb, reg_add##_lsb, indata) +#define i2c_readReg_Mask_def(block, reg_add) \ + i2c_readReg_Mask(block, block##_hostid, reg_add, reg_add##_msb, reg_add##_lsb) +#endif +#ifndef ETS_SLC_INUM +#define ETS_SLC_INUM 1 +#endif + + + +//From i2s_reg.h +#define DR_REG_I2S_BASE (0x60000e00) + +#define I2STXFIFO (DR_REG_I2S_BASE + 0x0000) +#define I2SRXFIFO (DR_REG_I2S_BASE + 0x0004) +#define I2SCONF (DR_REG_I2S_BASE + 0x0008) +#define I2S_BCK_DIV_NUM 0x0000003F +#define I2S_BCK_DIV_NUM_S 22 +#define I2S_CLKM_DIV_NUM 0x0000003F +#define I2S_CLKM_DIV_NUM_S 16 +#define I2S_BITS_MOD 0x0000000F +#define I2S_BITS_MOD_S 12 +#define I2S_RECE_MSB_SHIFT (BIT(11)) +#define I2S_TRANS_MSB_SHIFT (BIT(10)) +#define I2S_I2S_RX_START (BIT(9)) +#define I2S_I2S_TX_START (BIT(8)) +#define I2S_MSB_RIGHT (BIT(7)) +#define I2S_RIGHT_FIRST (BIT(6)) +#define I2S_RECE_SLAVE_MOD (BIT(5)) +#define I2S_TRANS_SLAVE_MOD (BIT(4)) +#define I2S_I2S_RX_FIFO_RESET (BIT(3)) +#define I2S_I2S_TX_FIFO_RESET (BIT(2)) +#define I2S_I2S_RX_RESET (BIT(1)) +#define I2S_I2S_TX_RESET (BIT(0)) +#define I2S_I2S_RESET_MASK 0xf + + #define I2SINT_RAW (DR_REG_I2S_BASE + 0x000c) +#define I2S_I2S_TX_REMPTY_INT_RAW (BIT(5)) +#define I2S_I2S_TX_WFULL_INT_RAW (BIT(4)) +#define I2S_I2S_RX_REMPTY_INT_RAW (BIT(3)) +#define I2S_I2S_RX_WFULL_INT_RAW (BIT(2)) +#define I2S_I2S_TX_PUT_DATA_INT_RAW (BIT(1)) +#define I2S_I2S_RX_TAKE_DATA_INT_RAW (BIT(0)) + + +#define I2SINT_ST (DR_REG_I2S_BASE + 0x0010) +#define I2S_I2S_TX_REMPTY_INT_ST (BIT(5)) +#define I2S_I2S_TX_WFULL_INT_ST (BIT(4)) +#define I2S_I2S_RX_REMPTY_INT_ST (BIT(3)) +#define I2S_I2S_RX_WFULL_INT_ST (BIT(2)) +#define I2S_I2S_TX_PUT_DATA_INT_ST (BIT(1)) +#define I2S_I2S_RX_TAKE_DATA_INT_ST (BIT(0)) + + #define I2SINT_ENA (DR_REG_I2S_BASE + 0x0014) +#define I2S_I2S_TX_REMPTY_INT_ENA (BIT(5)) +#define I2S_I2S_TX_WFULL_INT_ENA (BIT(4)) +#define I2S_I2S_RX_REMPTY_INT_ENA (BIT(3)) +#define I2S_I2S_RX_WFULL_INT_ENA (BIT(2)) +#define I2S_I2S_TX_PUT_DATA_INT_ENA (BIT(1)) +#define I2S_I2S_RX_TAKE_DATA_INT_ENA (BIT(0)) + + #define I2SINT_CLR (DR_REG_I2S_BASE + 0x0018) +#define I2S_I2S_TX_REMPTY_INT_CLR (BIT(5)) +#define I2S_I2S_TX_WFULL_INT_CLR (BIT(4)) +#define I2S_I2S_RX_REMPTY_INT_CLR (BIT(3)) +#define I2S_I2S_RX_WFULL_INT_CLR (BIT(2)) +#define I2S_I2S_PUT_DATA_INT_CLR (BIT(1)) +#define I2S_I2S_TAKE_DATA_INT_CLR (BIT(0)) + +#define I2STIMING (DR_REG_I2S_BASE + 0x001c) +#define I2S_TRANS_BCK_IN_INV (BIT(22)) +#define I2S_RECE_DSYNC_SW (BIT(21)) +#define I2S_TRANS_DSYNC_SW (BIT(20)) +#define I2S_RECE_BCK_OUT_DELAY 0x00000003 +#define I2S_RECE_BCK_OUT_DELAY_S 18 +#define I2S_RECE_WS_OUT_DELAY 0x00000003 +#define I2S_RECE_WS_OUT_DELAY_S 16 +#define I2S_TRANS_SD_OUT_DELAY 0x00000003 +#define I2S_TRANS_SD_OUT_DELAY_S 14 +#define I2S_TRANS_WS_OUT_DELAY 0x00000003 +#define I2S_TRANS_WS_OUT_DELAY_S 12 +#define I2S_TRANS_BCK_OUT_DELAY 0x00000003 +#define I2S_TRANS_BCK_OUT_DELAY_S 10 +#define I2S_RECE_SD_IN_DELAY 0x00000003 +#define I2S_RECE_SD_IN_DELAY_S 8 +#define I2S_RECE_WS_IN_DELAY 0x00000003 +#define I2S_RECE_WS_IN_DELAY_S 6 +#define I2S_RECE_BCK_IN_DELAY 0x00000003 +#define I2S_RECE_BCK_IN_DELAY_S 4 +#define I2S_TRANS_WS_IN_DELAY 0x00000003 +#define I2S_TRANS_WS_IN_DELAY_S 2 +#define I2S_TRANS_BCK_IN_DELAY 0x00000003 +#define I2S_TRANS_BCK_IN_DELAY_S 0 + +#define I2S_FIFO_CONF (DR_REG_I2S_BASE + 0x0020) +#define I2S_I2S_RX_FIFO_MOD 0x00000007 +#define I2S_I2S_RX_FIFO_MOD_S 16 +#define I2S_I2S_TX_FIFO_MOD 0x00000007 +#define I2S_I2S_TX_FIFO_MOD_S 13 +#define I2S_I2S_DSCR_EN (BIT(12)) +#define I2S_I2S_TX_DATA_NUM 0x0000003F +#define I2S_I2S_TX_DATA_NUM_S 6 +#define I2S_I2S_RX_DATA_NUM 0x0000003F +#define I2S_I2S_RX_DATA_NUM_S 0 + + +#define I2SRXEOF_NUM (DR_REG_I2S_BASE + 0x0024) +#define I2S_I2S_RX_EOF_NUM 0xFFFFFFFF +#define I2S_I2S_RX_EOF_NUM_S 0 + +#define I2SCONF_SIGLE_DATA (DR_REG_I2S_BASE + 0x0028) +#define I2S_I2S_SIGLE_DATA 0xFFFFFFFF +#define I2S_I2S_SIGLE_DATA_S 0 + +#define I2SCONF_CHAN (DR_REG_I2S_BASE + 0x002c) +#define I2S_RX_CHAN_MOD 0x00000003 +#define I2S_RX_CHAN_MOD_S 3 +#define I2S_TX_CHAN_MOD 0x00000007 +#define I2S_TX_CHAN_MOD_S 0 + + +//From sdio_slv.h + + +struct sdio_queue +{ + uint32 blocksize:12; + uint32 datalen:12; + uint32 unused:5; + uint32 sub_sof:1; + uint32 eof:1; + uint32 owner:1; + + uint32 buf_ptr; + uint32 next_link_ptr; +}; + +struct sdio_slave_status_element +{ + uint32 wr_busy:1; + uint32 rd_empty :1; + uint32 comm_cnt :3; + uint32 intr_no :3; + uint32 rx_length:16; + uint32 res:8; +}; + +union sdio_slave_status +{ + struct sdio_slave_status_element elm_value; + uint32 word_value; +}; + +#define RX_AVAILIBLE 2 +#define TX_AVAILIBLE 1 +#define INIT_STAGE 0 + +#define SDIO_QUEUE_LEN 8 +#define MOSI 0 +#define MISO 1 +#define SDIO_DATA_ERROR 6 + +#define SLC_INTEREST_EVENT (SLC_TX_EOF_INT_ENA | SLC_RX_EOF_INT_ENA | SLC_RX_UDF_INT_ENA | SLC_TX_DSCR_ERR_INT_ENA) +#define TRIG_TOHOST_INT() SET_PERI_REG_MASK(SLC_INTVEC_TOHOST , BIT0);\ + CLEAR_PERI_REG_MASK(SLC_INTVEC_TOHOST , BIT0) + + +///Rest of program... + +//Pointer to the I2S DMA buffer data +//static unsigned int i2sBuf[I2SDMABUFCNT][I2SDMABUFLEN]; +//I2S DMA buffer descriptors +//static struct sdio_queue i2sBufDesc[I2SDMABUFCNT]; +static struct sdio_queue i2sBufDescOut; +static struct sdio_queue i2sBufDescZeroes; + +static unsigned int i2sZeroes[32]; +static unsigned int i2sBlock[WS_BLOCKSIZE/4]; + +//Queue which contains empty DMA buffers +//DMA underrun counter + + +#ifdef USE_2812_INTERRUPTS + +volatile uint8_t ws2812_dma_complete; + +//This routine is called as soon as the DMA routine has something to tell us. All we +//handle here is the RX_EOF_INT status, which indicate the DMA has sent a buffer whose +//descriptor has the 'EOF' field set to 1. +LOCAL void slc_isr(void) { + //clear all intr flags +// WRITE_PERI_REG(SLC_INT_CLR, 0xffffffff);//slc_intr_status); + +// ws2812_dma_complete = 1; + + //This is a little wacky. This function actually gets called twice. + //Once for the initial transfer, but by the time we tell it to stop + //The other zero transfer's already begun. +// SET_PERI_REG_MASK(SLC_RX_LINK, SLC_RXLINK_STOP); +} + + +#endif + +//Initialize I2S subsystem for DMA circular buffer use +void ICACHE_FLASH_ATTR ws2812_init() +{ + int x, y; + + //Reset DMA + SET_PERI_REG_MASK(SLC_CONF0, SLC_RXLINK_RST);//|SLC_TXLINK_RST); + CLEAR_PERI_REG_MASK(SLC_CONF0, SLC_RXLINK_RST);//|SLC_TXLINK_RST); + + //Clear DMA int flags + SET_PERI_REG_MASK(SLC_INT_CLR, 0xffffffff); + CLEAR_PERI_REG_MASK(SLC_INT_CLR, 0xffffffff); + + //Enable and configure DMA + CLEAR_PERI_REG_MASK(SLC_CONF0, (SLC_MODE< WS_BLOCKSIZE ) return; + + int pl = 0; + int quit = 0; + + //Once for each led. + for( place = 0; !quit; place++ ) + { + uint8_t b; + b = buffer[pl++]; uint16_t c1a = bitpatterns[(b&0x0f)]; uint16_t c1b = bitpatterns[(b>>4)]; + b = buffer[pl++]; uint16_t c2a = bitpatterns[(b&0x0f)]; uint16_t c2b = bitpatterns[(b>>4)]; + b = buffer[pl++]; uint16_t c3a = bitpatterns[(b&0x0f)]; uint16_t c3b = bitpatterns[(b>>4)]; + b = buffer[pl++]; uint16_t c4a = bitpatterns[(b&0x0f)]; uint16_t c4b = bitpatterns[(b>>4)]; + + if( pl >= buffersize ) + { + quit = 1; + if( pl-1 >= buffersize ) c4a = c4b = 0; + if( pl-2 >= buffersize ) c3a = c3b = 0; + if( pl-3 >= buffersize ) c2a = c2b = 0; + if( pl-4 >= buffersize ) c1a = c1b = 0; + } + + //Order of bits on wire: Reverse from how they appear here. +#define STEP1(x) (c##x##b >> 4 ) +#define STEP2(x) ((c##x##b << 4 ) | ( c##x##a>>8 )) +#define STEP3(x) (c##x##a & 0xff ) + + *(bufferpl++) = STEP1(2); + *(bufferpl++) = STEP3(1); + *(bufferpl++) = STEP2(1); + *(bufferpl++) = STEP1(1); + + *(bufferpl++) = STEP2(3); + *(bufferpl++) = STEP1(3); + *(bufferpl++) = STEP3(2); + *(bufferpl++) = STEP2(2); + + *(bufferpl++) = STEP3(4); + *(bufferpl++) = STEP2(4); + *(bufferpl++) = STEP1(4); + *(bufferpl++) = STEP3(3); + } + + while( bufferpl < &((uint8_t*)i2sBlock)[WS_BLOCKSIZE] ) *(bufferpl++) = 0; + +#elif defined(WS2812_FOUR_SAMPLE) || defined(SK6812) + uint16_t * bufferpl = (uint16_t*)&i2sBlock[0]; + + if( buffersize * 4 > WS_BLOCKSIZE ) return; + + for( place = 0; place < buffersize; place++ ) + { + uint8_t btosend = buffer[place]; + *(bufferpl++) = bitpatterns[(btosend&0x0f)]; + *(bufferpl++) = bitpatterns[(btosend>>4)&0x0f]; + } +#endif + +#ifdef USE_2812_INTERRUPTS + + uint16_t leftover = buffersize & 0x1f; + if( leftover ) leftover = 32 - leftover; + for( place = 0; place < leftover; place++ ) + { + *(bufferpl++) = 0; + *(bufferpl++) = 0; + } + + buffersize += leftover; + + uint16_t sizeout_words = buffersize * 2; + + i2sBufDescOut.owner = 1; + i2sBufDescOut.eof = 1; + i2sBufDescOut.sub_sof = 0; + i2sBufDescOut.datalen = sizeout_words*2; //Size (in bytes) + i2sBufDescOut.blocksize = sizeout_words*2; //Size (in bytes) + i2sBufDescOut.buf_ptr = (uint32_t)&i2sBlock[0]; + i2sBufDescOut.unused = 0; + i2sBufDescOut.next_link_ptr=(uint32_t)&i2sBufDescZeroes; //At the end, just redirect the DMA to the zero buffer. + + SET_PERI_REG_MASK(SLC_RX_LINK, SLC_RXLINK_STOP); + CLEAR_PERI_REG_MASK(SLC_RX_LINK,SLC_RXLINK_DESCADDR_MASK); + SET_PERI_REG_MASK(SLC_RX_LINK, ((uint32)&i2sBufDescOut) & SLC_RXLINK_DESCADDR_MASK); + SET_PERI_REG_MASK(SLC_RX_LINK, SLC_RXLINK_START); + +#endif + +} + + + diff --git a/mopidy-control/app/ws2812_i2s.h b/mopidy-control/app/ws2812_i2s.h new file mode 100644 index 0000000..d65b1fa --- /dev/null +++ b/mopidy-control/app/ws2812_i2s.h @@ -0,0 +1,36 @@ +//Copyright 2015 <>< Charles Lohr, See LICENSE file. +//WS2812 sender that abuses the I2S interface on the WS2812. + +#ifndef _WS2812I2S_TEST +#define _WS2812I2S_TEST + +//Stuff that should be for the header: + +#include + +//Parameters for the I2S DMA behaviour +//#define I2SDMABUFCNT (2) //Number of buffers in the I2S circular buffer +//#define I2SDMABUFLEN (32*2) //Length of one buffer, in 32-bit words. + +//NOTE: Blocksize MUST be divisible by 4. Cannot exceed 4092 +//Each LED takes up 12 block bytes in WS2812_FOUR_SAMPLE +//Or 9 block bytes in WS2812_THREE_SAMPLE +#define WS_BLOCKSIZE 4000 + +//You can either have 3 or 4 samples per bit for WS2812s. +//3 sample can't go quite as fast as 4. +//3 sample uses more processing when updating than 4. +//4 takes up more RAM per LED than 3. +//3 has slightly more restrictve timing requirements. +//4 has more DMA load when running. +#define WS2812_THREE_SAMPLE +//#define WS2812_FOUR_SAMPLE + +// timing for SK6812 LEDs, always uses 4bit samples +//#define SK6812 + +void ICACHE_FLASH_ATTR ws2812_init(); +void ICACHE_FLASH_ATTR ws2812_push( uint8_t * buffer, uint16_t buffersize ); //Buffersize = Nr LEDs * 3 + +#endif + diff --git a/projection-screen/Makefile b/projection-screen/Makefile new file mode 120000 index 0000000..d0b0e8e --- /dev/null +++ b/projection-screen/Makefile @@ -0,0 +1 @@ +../Makefile \ No newline at end of file diff --git a/projection-screen/Makefile-user.mk b/projection-screen/Makefile-user.mk new file mode 100644 index 0000000..28efbca --- /dev/null +++ b/projection-screen/Makefile-user.mk @@ -0,0 +1 @@ +COM_SPEED = 9600 diff --git a/projection-screen/app/application.cpp b/projection-screen/app/application.cpp new file mode 100644 index 0000000..deea1e8 --- /dev/null +++ b/projection-screen/app/application.cpp @@ -0,0 +1,115 @@ +#include +#include + + +class ProjectionScreenEndpoint: public Endpoint { +private: + RCSwitch rc; + + int codeStop = 0b000110011110110100001000; + int codeUp = 0b000110011110110100000010; + int codeDown = 0b000110011110110100000100; +public: + ProjectionScreenEndpoint() : Endpoint("rcswitch") { + rc.enableTransmit(5); // pin GPIO5 - transmit + rc.setRepeatTransmit(5); + } + + EndpointResult onValue(String property, String value) { + if (property == "down") { + if (value == "1" || value == "true") { + rc.send(codeDown, 24); + delay(200); + rc.send(codeDown, 24); + notify("down", "true"); + } else { + rc.send(codeUp, 24); + delay(200); + rc.send(codeUp, 24); + notify("down", "false"); + } + return 200; + } + + return 400; + } +}; + +class PanasonicProjectorEndpoint: public Endpoint { +private: + const char STARTBYTE = 0x02; + const char ENDBYTE = 0x03; + + void send(String message) { + Serial.write(STARTBYTE); + Serial.print(message); + Serial.write(ENDBYTE); + } + + enum { + WAITFORSTART, + WAITFOREND, + } serialState = WAITFORSTART; + String buf; + void serialCallback(Stream& stream, char arrivedChar, unsigned short availableCharsCount) { + while(stream.available()) { + char byte = stream.read(); + if (serialState == WAITFORSTART) { + if (byte == STARTBYTE) { + serialState = WAITFOREND; + buf = ""; + } else { + debugf("panasonic: Invalid byte: %d", byte); + } + } else { + if (byte == ENDBYTE) { + serialState = WAITFORSTART; + processMessage(buf); + } else { + buf += byte; + } + } + } + } + + void processMessage(String& msg) { + debugf("got message: %s", msg.c_str()); + + if (msg == "PON") { + notify("power", "true"); + } else if (msg == "POF") { + notify("power", "false"); + } else if (msg.startsWith("IIS:")) { + notify("source", msg.substring(4)); + } + } +public: + PanasonicProjectorEndpoint() : Endpoint("display") { } + + void bind(String _name, SpejsNode* _parent) { + Endpoint::bind(_name, _parent); + Serial.setCallback(StreamDataReceivedDelegate(&PanasonicProjectorEndpoint::serialCallback, this)); + } + + EndpointResult onValue(String property, String value) { + if (property == "power") { + send(value == "true" ? "PON" : "POF"); + return 200; + } else if (property == "source") { + send("IIS:" + value); + return 200; + } + + return 400; + } +}; + +SpejsNode node("projection-screen"); + +void init() { + node.statusLED.config(2, LOW); + node.init(); + Serial.begin(9600); + node.registerEndpoint("screen", new ProjectionScreenEndpoint()); + node.registerEndpoint("projector", new PanasonicProjectorEndpoint()); +} diff --git a/projection-screen/include/ssl/cert.h b/projection-screen/include/ssl/cert.h new file mode 100644 index 0000000..8faf1e8 --- /dev/null +++ b/projection-screen/include/ssl/cert.h @@ -0,0 +1,43 @@ +unsigned char default_certificate[] = { + 0x30, 0x82, 0x01, 0xd7, 0x30, 0x82, 0x01, 0x40, 0x02, 0x09, 0x00, 0x97, + 0xdc, 0x5c, 0xc5, 0x3c, 0x5e, 0xee, 0x26, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x34, + 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x29, 0x61, + 0x78, 0x54, 0x4c, 0x53, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x20, 0x44, 0x6f, 0x64, 0x67, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x36, 0x30, 0x39, + 0x31, 0x30, 0x32, 0x33, 0x30, 0x35, 0x34, 0x34, 0x5a, 0x17, 0x0d, 0x33, + 0x30, 0x30, 0x35, 0x32, 0x30, 0x32, 0x33, 0x30, 0x35, 0x34, 0x34, 0x5a, + 0x30, 0x2c, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, + 0x0d, 0x61, 0x78, 0x54, 0x4c, 0x53, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, + 0x09, 0x31, 0x32, 0x37, 0x2e, 0x30, 0x2e, 0x30, 0x2e, 0x31, 0x30, 0x81, + 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, + 0x81, 0x81, 0x00, 0xf0, 0x80, 0x5d, 0x8f, 0x2e, 0x02, 0xac, 0x68, 0xa2, + 0xe1, 0xf2, 0x44, 0x4e, 0xd4, 0xbe, 0x1a, 0xb4, 0x05, 0x3a, 0xf3, 0xfb, + 0xfc, 0xee, 0x24, 0xee, 0x7c, 0xc1, 0xed, 0xb9, 0xb7, 0xb5, 0x72, 0xfc, + 0x15, 0x5f, 0xa1, 0x67, 0xa4, 0xff, 0x29, 0x7d, 0x55, 0x3b, 0xcd, 0xb4, + 0x5e, 0xc2, 0xde, 0xce, 0x8b, 0x54, 0x82, 0xd4, 0x9b, 0xf9, 0x98, 0xbf, + 0x17, 0x79, 0x7e, 0x04, 0xaa, 0xfa, 0x66, 0xbd, 0x0b, 0x1e, 0xb1, 0x89, + 0xf6, 0x1a, 0x5b, 0x75, 0x7d, 0xd0, 0x16, 0x0d, 0xf1, 0x68, 0x54, 0xb5, + 0x22, 0xb7, 0xf3, 0x36, 0x38, 0x76, 0xa8, 0x8f, 0x6b, 0x81, 0xac, 0xf7, + 0x39, 0xcd, 0x01, 0x8a, 0x40, 0xf8, 0xcd, 0xc5, 0x23, 0xdb, 0x8f, 0x9f, + 0xca, 0xec, 0xe0, 0xa8, 0xf2, 0x6e, 0xa6, 0x4f, 0xc8, 0x71, 0x31, 0xc0, + 0x1f, 0x65, 0x78, 0x41, 0xc8, 0x9b, 0x35, 0xbe, 0x49, 0xf3, 0x37, 0x02, + 0x03, 0x01, 0x00, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x6c, + 0xe7, 0xf5, 0x72, 0x81, 0x06, 0x15, 0xea, 0x1a, 0xcc, 0x85, 0x7f, 0x01, + 0x6e, 0x02, 0xe0, 0x35, 0x80, 0xf9, 0x92, 0xd9, 0x49, 0x9d, 0x8f, 0x6b, + 0x04, 0x69, 0x68, 0x3b, 0x09, 0x93, 0xc0, 0x5c, 0x19, 0x01, 0xd7, 0x8a, + 0xa8, 0x6e, 0x76, 0x98, 0x6c, 0xac, 0xc1, 0x74, 0xd0, 0xb7, 0x05, 0x08, + 0x28, 0x05, 0xe4, 0x38, 0xa4, 0x1d, 0x6b, 0x13, 0xed, 0x38, 0x34, 0x79, + 0xd8, 0x41, 0x48, 0x0f, 0x0d, 0x5b, 0x2c, 0xd9, 0xd2, 0x5a, 0xaa, 0x8d, + 0xe0, 0x61, 0xfa, 0xa5, 0x3f, 0x53, 0xc4, 0x21, 0x83, 0x4d, 0x5c, 0x4f, + 0x11, 0xe5, 0x25, 0x1c, 0xd1, 0x9a, 0x03, 0x4c, 0x42, 0x08, 0xed, 0x44, + 0xdf, 0x6b, 0x17, 0x85, 0xd2, 0x99, 0xf1, 0x9d, 0xdf, 0xde, 0xd2, 0x40, + 0x67, 0xf3, 0x03, 0x20, 0xed, 0xaa, 0xc2, 0x00, 0xfe, 0xdd, 0x73, 0x22, + 0x1b, 0x67, 0x19, 0x38, 0x50, 0x49, 0xd4 +}; +unsigned int default_certificate_len = 475; diff --git a/projection-screen/include/ssl/private_key.h b/projection-screen/include/ssl/private_key.h new file mode 100644 index 0000000..59cd658 --- /dev/null +++ b/projection-screen/include/ssl/private_key.h @@ -0,0 +1,54 @@ +unsigned char default_private_key[] = { + 0x30, 0x82, 0x02, 0x5d, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xf0, + 0x80, 0x5d, 0x8f, 0x2e, 0x02, 0xac, 0x68, 0xa2, 0xe1, 0xf2, 0x44, 0x4e, + 0xd4, 0xbe, 0x1a, 0xb4, 0x05, 0x3a, 0xf3, 0xfb, 0xfc, 0xee, 0x24, 0xee, + 0x7c, 0xc1, 0xed, 0xb9, 0xb7, 0xb5, 0x72, 0xfc, 0x15, 0x5f, 0xa1, 0x67, + 0xa4, 0xff, 0x29, 0x7d, 0x55, 0x3b, 0xcd, 0xb4, 0x5e, 0xc2, 0xde, 0xce, + 0x8b, 0x54, 0x82, 0xd4, 0x9b, 0xf9, 0x98, 0xbf, 0x17, 0x79, 0x7e, 0x04, + 0xaa, 0xfa, 0x66, 0xbd, 0x0b, 0x1e, 0xb1, 0x89, 0xf6, 0x1a, 0x5b, 0x75, + 0x7d, 0xd0, 0x16, 0x0d, 0xf1, 0x68, 0x54, 0xb5, 0x22, 0xb7, 0xf3, 0x36, + 0x38, 0x76, 0xa8, 0x8f, 0x6b, 0x81, 0xac, 0xf7, 0x39, 0xcd, 0x01, 0x8a, + 0x40, 0xf8, 0xcd, 0xc5, 0x23, 0xdb, 0x8f, 0x9f, 0xca, 0xec, 0xe0, 0xa8, + 0xf2, 0x6e, 0xa6, 0x4f, 0xc8, 0x71, 0x31, 0xc0, 0x1f, 0x65, 0x78, 0x41, + 0xc8, 0x9b, 0x35, 0xbe, 0x49, 0xf3, 0x37, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x80, 0x3b, 0x1d, 0x82, 0x61, 0xc8, 0x50, 0x75, 0xea, 0x7e, + 0x67, 0x05, 0x72, 0xce, 0xe1, 0xb2, 0x1c, 0xc4, 0x35, 0x28, 0xe9, 0x81, + 0xfe, 0x08, 0xd7, 0x61, 0x1b, 0x9f, 0x5b, 0x7c, 0xb3, 0xf0, 0x50, 0xe4, + 0x2f, 0xa8, 0xc2, 0xf6, 0xc3, 0xf2, 0xc8, 0x52, 0xfb, 0x59, 0x68, 0xd5, + 0xb6, 0x19, 0x36, 0x45, 0x14, 0xb0, 0x60, 0x3c, 0x3c, 0x5e, 0x9c, 0xb2, + 0x13, 0xe6, 0x14, 0x18, 0xb7, 0xa2, 0x36, 0x96, 0xa5, 0xa8, 0xc0, 0x40, + 0x95, 0xa4, 0x7d, 0xb1, 0xaf, 0x30, 0xda, 0x4f, 0x29, 0x00, 0x88, 0xac, + 0x8d, 0xb6, 0x59, 0x06, 0x55, 0x2a, 0xac, 0x7d, 0x85, 0xa5, 0x93, 0x9a, + 0x7f, 0xf9, 0x9c, 0xb3, 0xa4, 0xea, 0x20, 0x14, 0xa3, 0xe8, 0xba, 0x58, + 0x87, 0x49, 0x07, 0x87, 0x35, 0x27, 0x41, 0x20, 0xa5, 0x60, 0xfc, 0xa5, + 0x48, 0xe7, 0x2d, 0x9d, 0x32, 0x53, 0x27, 0xaf, 0x61, 0x75, 0xe1, 0x02, + 0x41, 0x00, 0xff, 0xa8, 0x05, 0xdc, 0xd0, 0xd2, 0x03, 0x26, 0xb4, 0x68, + 0x7b, 0x37, 0x80, 0x12, 0xfd, 0xa6, 0x62, 0x1b, 0x79, 0x66, 0x9e, 0x69, + 0xf7, 0xb5, 0x4a, 0xbb, 0xde, 0xd4, 0xd6, 0x55, 0xf2, 0x4f, 0x78, 0x73, + 0xed, 0x0d, 0xf0, 0xb0, 0x35, 0xa6, 0xdf, 0x4d, 0x73, 0xab, 0x2b, 0x25, + 0x1c, 0x65, 0xb8, 0x66, 0x15, 0x8f, 0x0b, 0x63, 0x38, 0xbb, 0x33, 0x11, + 0x92, 0x64, 0x64, 0x84, 0xba, 0x47, 0x02, 0x41, 0x00, 0xf0, 0xd3, 0x20, + 0x9e, 0x8a, 0xfe, 0x38, 0x2d, 0x13, 0x63, 0x72, 0x5f, 0x53, 0x20, 0xc5, + 0x03, 0xc5, 0xd7, 0x07, 0xc6, 0x48, 0xfb, 0x06, 0x42, 0x0a, 0x60, 0x8a, + 0x96, 0xe8, 0x56, 0x8b, 0x0d, 0x24, 0x19, 0x33, 0xe8, 0x67, 0xbc, 0x8d, + 0xb3, 0xb7, 0x94, 0xaa, 0xa2, 0x9d, 0xbf, 0xde, 0x9a, 0x8a, 0x48, 0x07, + 0xfb, 0x27, 0xb3, 0xfb, 0xb0, 0x3a, 0x15, 0xa1, 0xe3, 0x07, 0x97, 0x87, + 0x91, 0x02, 0x41, 0x00, 0xb5, 0xee, 0xae, 0x6d, 0x5b, 0xb5, 0x78, 0x44, + 0x9c, 0xf2, 0x15, 0x6d, 0x83, 0x99, 0x00, 0x24, 0xdd, 0x80, 0x4b, 0xbe, + 0x79, 0x51, 0x53, 0xd4, 0x11, 0xe0, 0xec, 0x4c, 0x6e, 0x53, 0x2f, 0x62, + 0xda, 0x87, 0x34, 0xd5, 0x4c, 0xc9, 0x39, 0x05, 0x0d, 0xb8, 0x22, 0x6e, + 0x56, 0xff, 0xcb, 0xdb, 0x9f, 0x84, 0x16, 0x27, 0x7b, 0xa5, 0x1a, 0x84, + 0x2d, 0x6d, 0x7d, 0xce, 0x2f, 0xb2, 0x3c, 0x95, 0x02, 0x40, 0x04, 0x17, + 0xf2, 0xa3, 0xff, 0x44, 0xd6, 0xfb, 0x9d, 0x2a, 0xc1, 0x94, 0xf1, 0x3a, + 0xcb, 0x5e, 0x87, 0x0c, 0x62, 0xab, 0x72, 0x2e, 0x22, 0x2b, 0x19, 0x36, + 0x0e, 0xe5, 0x05, 0xca, 0x02, 0xcf, 0x14, 0x60, 0x01, 0x4b, 0xe0, 0x07, + 0x8a, 0x79, 0x15, 0x93, 0xc7, 0x5a, 0xc0, 0x47, 0xb4, 0xa6, 0xf7, 0xd6, + 0xc5, 0x9b, 0xf5, 0x4e, 0xcf, 0xe6, 0x6c, 0xf6, 0x55, 0x2c, 0x20, 0xc2, + 0xe8, 0xa1, 0x02, 0x41, 0x00, 0xff, 0x01, 0xf8, 0xa8, 0x50, 0x52, 0x80, + 0x18, 0xdc, 0xdd, 0x97, 0x06, 0x1e, 0xe7, 0x2a, 0x44, 0xb0, 0xe3, 0x98, + 0x1c, 0x54, 0x49, 0xd1, 0x19, 0x2a, 0x52, 0xca, 0xe3, 0x3d, 0x58, 0xcd, + 0xf8, 0x61, 0xf9, 0x0c, 0x3b, 0x17, 0x42, 0xef, 0x8f, 0x55, 0x85, 0x34, + 0x2f, 0x04, 0xba, 0x32, 0x57, 0x2f, 0xdf, 0xf9, 0xa3, 0x81, 0x75, 0xd9, + 0xe5, 0x76, 0xda, 0x22, 0xb3, 0x34, 0x48, 0x4c, 0x9c +}; +unsigned int default_private_key_len = 609; diff --git a/projection-screen/include/user_config.h b/projection-screen/include/user_config.h new file mode 100644 index 0000000..030b05c --- /dev/null +++ b/projection-screen/include/user_config.h @@ -0,0 +1,45 @@ +#ifndef __USER_CONFIG_H__ +#define __USER_CONFIG_H__ + +#ifdef __cplusplus +extern "C" { +#endif + + // UART config + #define SERIAL_BAUD_RATE 9600 + + // ESP SDK config + #define LWIP_OPEN_SRC + #define USE_US_TIMER + + // Default types + #define __CORRECT_ISO_CPP_STDLIB_H_PROTO + #include + #include + + // Override c_types.h include and remove buggy espconn + #define _C_TYPES_H_ + #define _NO_ESPCON_ + + // Updated, compatible version of c_types.h + // Just removed types declared in + #include + + // System API declarations + #include + + // C++ Support + #include + // Extended string conversion for compatibility + #include + // Network base API + #include + + // Beta boards + #define BOARD_ESP01 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/temperature/Makefile b/temperature/Makefile new file mode 120000 index 0000000..d0b0e8e --- /dev/null +++ b/temperature/Makefile @@ -0,0 +1 @@ +../Makefile \ No newline at end of file diff --git a/temperature/app/application.cpp b/temperature/app/application.cpp new file mode 100644 index 0000000..9229630 --- /dev/null +++ b/temperature/app/application.cpp @@ -0,0 +1,9 @@ +#include +#include + +SpejsNode node("ambient"); + +void init() { + node.init(); + node.registerEndpoint("environment", new DHTEndpoint(2, 10000, DHT22)); +}