Shop OBEX P1 Docs P2 Docs Learn Events
3D Printer G-Code Parsing And The Propeller Board Of Education — Parallax Forums

3D Printer G-Code Parsing And The Propeller Board Of Education

idbruceidbruce Posts: 6,197
edited 2015-01-23 11:00 in Propeller 1
Hello Everyone

As many of you already know, I am on a big push of 3D printers, and now it is time for the next step, which is creating the software for my recently designed controller board.

However before diving deep into this subject, please allow me to give the newcomers some additional food for thought. If you are truly interested in 3D printing, then I have two other main threads that may be of interest to you:
  1. Input Needed - Combining Propeller Proto Board, Prop DIP 40, and ADC for 3D Printer - This thread discusses the creation of a Propeller driven CNC/3D printer controller. In the the attachments below, you will find a descriptive illustration, which outlines some of the key features of the final draft. To learn more about this controller, please visit this thread (http://forums.parallax.com/showthread.php/155404-Input-Needed-Combining-Propeller-Proto-Board-Prop-DIP-40-and-ADC-for-3D-Printer).
  2. A New CNC Build - 3D Printer - El Cheapo - This thread discusses many different things pertaining to 3D printing, as well as other topics. One of the key topics within this thread is the design of a 3d printer extruder. In the the attachments below, you will find a descriptive illustration, which outlines some of the key features of the final draft. To learn more about this extruder and other topics pertaining to 3D printing, please visit this thread (http://forums.parallax.com/showthread.php/154883-A-New-CNC-Build-3D-Printer-El-Cheapo).
Now let's get back to the issue at hand, which is 3D Printer G-Code Parsing and the Propeller Board of Education.

In the past, I made a feeble attempt at creating an Eagle DRD parsing engine. DRD files are similar to G-Code files, but not nearly quite as complex. Additionally, I have briefly studied the Teacup 3D printing firmware and how they attack the parsing issue. Instead of getting bogged down by incompatible or incomplete work, I want to start fresh and create my own parser for 3D printing. My approach to creating the parser will be different from both my previous attempt and the Teacup firmware.

By courtesy of Parallax, I have a Propeller Board of Education to create and test the parser. The Propeller Board of Education is the ideal tool for this kind of job, because it already has microSD support, which is needed for large G-Code files, and it is also the perfect board for experimentation.

I do not want to get carried away with my first post, but I will outline just exactly what I plan to attempt, and of course I am just shooting from the hip at the moment:
  1. Create an array to hold data.
  2. Open a G-Code file on an SD card.
  3. Parse a file line one character at a time and shove the character into a member of the array, until a space character is encountered. When a space character is encountered, move onto the next character, but now inserting the new character into a new member of the array. When end of line has been reached, then process the data held in the array.
  4. Data processing begins by doing a string comparison of the array member which should hold the G-Code command. If it is a simple command, such as a G20, simply set the unit of measure to inches, and exit the processing of the data. However if a complex G-Code is encountered, such as G1, then the array members which hold the movement coordinates should be converted to integers or floating-point values, and the movements of each axis should then be computed.
  5. At this point it becomes a little blurry if computed movements should be initiated instantly or added to a queue.
  6. Parsing continues until end of file has been reached.
Anyhow, this should give you an idea of where I am now heading.
«13

Comments

  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2014-05-30 07:29
    My gut feeling is that the GRBL offers the clearest and maybe the cleanest C code to use as an exemplar for g-code parse and most of what the 3D Printer needs. Of course, it was just written for XYZ CNC, but adding heater and temperature codes is not a huge addition.

    Tonokip is not a trustworthy example. Teacup may work better, but not clearly written. So starting with something good is likely to make the outcome better.

    The reality of 3D printing is fairly simple. The starting G codes, M codes and so on just initialize the system, and then each slice is a long series of G1 codes that do the actual work until you get to the end of a slice. Then the print head is moved up vertically one slice and the whole process cycles through another slice. Of course at the end of a run, there is a shut down code sequence.

    If you have a 'look ahead' feature that anticipates when your into a long run of G1 calls, you can stick to a very predictable and constant array for G1 codes during the actual printing; then break out at the end of each slice.

    I am still have a lot of difficulty with learning the details of C and C++, but I do have a good grasp of how the 3D printer firmware should block out in terms of blocks of code.
  • idbruceidbruce Posts: 6,197
    edited 2014-05-30 07:53
    Loopy

    My goal is to stick with reprap based G-Code, because the support is already there, and I don't won't to try and reinvent the wheel. With the exception of the formulas necessary for interpolation, I am going to attempt to build this parser from scratch and strictly for Propeller usage. Instead of using C/C++, I will be writing most of it in Spin, unless someone wants to help and speed up some section of code and add some PASM.

    You mentioned the look ahead or let's say queue. My real vision is to process the G-Code file, one line at a time, adding it to a queue, which will be held in either the flash memory or static RAM of the Propeller Memory Card, which will be processed in a FIFO fashion, by the controller. Whether it can be done efficiently or not, remains to be seen through experimentation.
  • jazzedjazzed Posts: 11,803
    edited 2014-05-30 09:33
    Bruce,

    Which G-Codes are used?

    If the list is too long, it will never fit in Propeller memory.


    I wrote a G-Code parser years ago in Spin before online opensource storage was generally available (it was lost in a disk crash, but I did send someone a copy once). The interpreter did many G and M codes. It used a serial interface. The VC# PC client side is still around, but it needs to be reverse-engineered.

    Propeller memory was exhausted before I could finish Circle Interpolation. This is the main reason I got serious about XMM stuff. In retrospect, I should have just done something practical ;-).


    idbruce wrote: »
    Loopy

    My goal is to stick with reprap based G-Code, because the support is already there, and I don't won't to try and reinvent the wheel. With the exception of the formulas necessary for interpolation, I am going to attempt to build this parser from scratch and strictly for Propeller usage. Instead of using C/C++, I will be writing most of it in Spin, unless someone wants to help and speed up some section of code and add some PASM.

    You mentioned the look ahead or let's say queue. My real vision is to process the G-Code file, one line at a time, adding it to a queue, which will be held in either the flash memory or static RAM of the Propeller Memory Card, which will be processed in a FIFO fashion, by the controller. Whether it can be done efficiently or not, remains to be seen through experimentation.
  • potatoheadpotatohead Posts: 10,261
    edited 2014-05-30 11:06
    Bruce, you should buffer the data.

    Have the parser read Gcode and act on it.

    It's action is to create movement data in a form your controller software works well with.

    Put that data into your movement queue.

    Continue.

    The movement part of your solution is always processing the movement data in the queue, interpolating as needed.

    This way, your movement software can look ahead, make adjustments, etc.... and where there is a lot of movement data, you can correct for pauses in the data stream, optimize away small moves, etc...

    Simple, read block, execute, read block systems will exhibit erratic movements. Works great for something like a punch or drill, where the operation is atomic. Not so great for streaming operations, mill, extrude, etc...
  • idbruceidbruce Posts: 6,197
    edited 2014-05-30 11:29
    @jazzed

    I made an error in one of my statements, which was:
    My goal is to stick with reprap based G-Code

    I meant to say that I am going to stick with Teacup supported G-Codes, as a start.

    Here is a list of Teacup supported codes, which is nothing too extravagant, and to be perfectly honest, I doubt I will support all of these:
    G0: Rapid Linear Motion - Example: G0 X12
    G1: Linear Motion at Feed Rate - Example: G1 X90.6 Y13.8 E22.4
    G4: Dwell - Example: G4 P200
    G20: Set Units to Inches - Example: G20
    G21: Set Units to Millimeters - Example: G21
    G28: Home - Example: G28
    G30: Go home via point
    G90: Set to Absolute Positioning - Example: G90
    G91: Set to Relative Positioning - Example: G91
    G92: Set Position - Example: G92 X10 E90
    G161: Home negative
    G162: Home positive
    M0: machine stop - Example: M0
    M2: program end - Example: M2
    M6: tool change
    M82: Set E codes absolute
    M83: Set E codes relative
    M101: extruder on
    M102: extruder reverse
    M103: extruder off
    M104: Set Extruder Temperature (Fast) - Example: M104 S190
    M105: Get Temperature(s) - Example: M105
    M106: Set Fan Speed / Set Device Power - Example: M106 S120
    M110: Set Current Line Number - Example: N123 M110
    M112: Emergency Stop - Example: M112
    M114: Get Current Position - Example: M114
    M116: Wait - Example: M116
    M119: report endstop status
    M130: heater P factor
    M131: heater I factor
    M132: heater D factor
    M133: heater I limit
    M134: save PID settings to eeprom
    M136: PRINT PID settings to host
    M140: Set heated bed temperature
    M240: echo off
    M241: echo on
    I don't believe there should be any problem fitting these into a Propeller, but I could be wrong :)
  • idbruceidbruce Posts: 6,197
    edited 2014-05-30 12:00
    @potatohead

    I did not explain my plan thoroughly.
    1. Parse G-Code file
    2. Create axis profile for each axis. This profile would include number of steps and ramping profile.
    3. Create movement profile. This profile would include each axis profile.
    4. Add movement profile or simple command to queue.
    5. Process queue.
    The queue and parsing would be going simultaneously from the start. Eventually parsing would finish before the queue.

    Parsing adds to the queue and the queue runs the machine.
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2014-05-31 01:13
    Well, I realize that it might seem like re-inventing what has been done before. But the concept is trying to migrate code from Arduino/AVR devices to the Propeller. I just think that GRBL is informative in trying to get a good overview.

    It is up to you to choose the best exemplars of your own. But it does seem the bridge is to migrate developed code from GCC C or C++ into the Propeller.

    Frankly, I do admit I am more interested in pure CNC on the Propeller than 3D Printing. My desire to get Teacupette up and running has run into some barriers that are confounding me.

    One, is the serial input stream to the Propeller in a strongly typed language is very different that using PASM and SPIN for serial input. The other is that I when I initialize the Propeller i/o, somehow in GCC the initialized output states are not sustained when I hit a reset on the Propeller. So I seem to not have a clear understanding of initialization in GCC.

    Neither of these topics may be of interest to you. You may have mastered both issues previously. But without proper initialization or a proper serial input port in GCC... I am going nowhere.
  • idbruceidbruce Posts: 6,197
    edited 2014-05-31 03:39
    Loopy

    I do not know if you remember, but I told you that when I started with C/C++, I had a "special" project and that my project was much simpler than what you were trying to accomplish. I am not trying to insult you in any way, but to try and learn C/C++ and do that conversion at the same time, well I see that as a VERY difficult task. I have been programming with C/C++ for many years and I wouldn't want to even attempt what you are attempting. If I had a good understandiong of Arduino, then perhaps I might attempt it, but I still doubt it. If the conversion were simply a conversion of Visual Basic to Visual C++, I would jump in both feet, but going from C/C++ geared for Arduino to C/C++ geared for a Propeller is two completely different animals. I have never programmed with interrupts, so I would not have a clue.

    Initially, my goal was to have a C++ serial interface on the PC side of things, which I believe is a piece of cake, but then I opted for the single Propeller solution. Without the PC being involded, the C++ was no longer necessary. Now I could attempt to do my project in GCC, but that would also being a learning curve, and time is simply a luxury I do not have. My goal is simply a Propeller solution for 3D printing. I still do not have a thorough understanding of SPIN, but I believe I know enough to reach my goal. Ultimately, it would be nice to have a complete CNC solution, but that seems out of reach at the moment. And as jazzed suggested, he could not fit a full blown CNC parser into the Propeller. I still wonder if the Propeller Memory Card could assist with that.

    It is my nature to try and help people, and truly I wish I could help you, but I would not have a clue where to begin. I think it would be much easier for you if it was first written is SPIN and you only had to convert it to GCC.

    The fact of the matter is that there is a lot of useless and confusing code in preexisting software, that has nothing to do with or is incompatible with the Propeller chip.

    However, I do have a suggestion for you. Start deleting files like I did and then get a good grasp on those remaining files and port them. Please refer to this post: (http://forums.parallax.com/showthread.php/155404-Input-Needed-Combining-Propeller-Proto-Board-Prop-DIP-40-and-ADC-for-3D-Printer?p=1268315&viewfull=1#post1268315).

    Loopy, I will have another post directed straight towards you in thread, within a little bit.
  • idbruceidbruce Posts: 6,197
    edited 2014-05-31 03:59
    Loopy

    You already stated that you had a pretty good grasp on 3D printing. In reality, the concept is not too difficult to understand. However, to have a complete grasp, you must also have a thorough understanding of the hardware and the software necessary for machine operation.

    To my knowledge, the 3D printer proto board controller that I designed is the first open source Propeller design for 3D printing. I truly believe this design has a shot at being successful. If you fully understand the design of this layout and why everything is there, then you have overcome another obstacle.

    The remaining obstacle is the software.

    Study that design, and write your own 3D printing software for that design, referring to preexisting software, only when necessary. Why you ask? Because it is the only potential Propeller design that I know of and the goal is a Propeller solution.

    However, you could also create your own Propeller design and write software for your design.
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2014-05-31 04:21
    Well, my overall impression is that I should just take what I have learned and code the whole project in PASM for optimal performance. GCC on the Propeller requires either substainly ignoring the multi-processor aspect, or work-arounds. And it is never going to be as fast or as compact as PASM.

    You haven't posted any code, so all this talk is conceptual. I am not sure that what you envision is practical; whereas, I have pretty much gotten an overall scheme I have confidence in. In other words, I have moved on from the conceptualization and trying to get some real code working on a small limited test model. I am first trying to achieve a small simple working device; then later adding in more features. I can later change concepts on the basis of added practical knowledge

    I have tried to limit my goals to stages that are tangible so that my own work doesn't keep changing in scope.
    I want to get some idea of what can fit into one Propeller before adding in more complex features. As I later add features, I can then identify which are easy to include and which are demanding too many resources.
    I do believe that one must start out at a crawl, then acquire ability to do more.

    I just don't seem to see the advantage of GCC on the Propeller. It seems mostly an accommodation to programmers that refuse to look at PASM and SPIN.

    I have posted code and asked for help with the particular issues. I haven't gotten any response, so I am just reading, testing, and thinking my way through them.

    And so you see, I am working a completely different development plan than you. At this point I am concerned with the adequacy of SimpleIDE and the various libraries involving the two issue I previously mentioned.
  • idbruceidbruce Posts: 6,197
    edited 2014-05-31 04:40
    Loopy
    You haven't posted any code, so all this talk is conceptual. I am not sure that what you envision is practical

    I agree, it is all conceptual.

    Unless there is some minor errors, such as resistor values, in regards to the controller, it should work as a CNC or 3D printer controller. I know this, because I fully and completely understand what is required on the hardware side.

    The ONLY question is: Can anyone write C, C++, SPIN, or PASM, 3D printing software that will fit on the Propeller, or in conjunction with the Propeller Memory Card?

    EDIT: I believe I can :)
  • idbruceidbruce Posts: 6,197
    edited 2014-05-31 05:30
    Well, my overall impression is that I should just take what I have learned and code the whole project in PASM for optimal performance.

    I am all for speed and optimal performance, but I do not believe that coding the whole project in PASM would be necessary. Please refer to this documentation: http://www.extrudable.me/2013/04/18/exploring-extrusion-variability-and-limits/

    In addition to that documentation, the faster you move the stepper motors, the less torque you have available, and this could also limit your speed of 3D printing and processing.
  • idbruceidbruce Posts: 6,197
    edited 2014-05-31 06:11
    For those that may be following along with this thread, I just thought of something.

    Instead of using the onboard microSD card slot of the Propeller Board Of Education, I will be plugging a Propeller Memory Card into the breadboard area of the Propeller Board Of Education. Since the Propeller Memory Card has a microSD card slot and since the Propeller Memory Card is utilized in the design of the controller, this may be highly beneficial to the learning and developing process.

    However, once I receive all the remaining necessary parts of the controller (currently missing the Adafruit ADC breakout board and the MCP23008 IO expansion chip), I will simply build the controller and doing all my programming and testing on that board.
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2014-05-31 10:12
    idbruce wrote: »
    I am all for speed and optimal performance, but I do not believe that coding the whole project in PASM would be necessary. Please refer to this documentation: http://www.extrudable.me/2013/04/18/exploring-extrusion-variability-and-limits/

    In addition to that documentation, the faster you move the stepper motors, the less torque you have available, and this could also limit your speed of 3D printing and processing.

    It is not just about speed. It is about smooth streaming of the G-codes. It is about having the code compact enough to fit into the 32K bytes available. And about having the right balance of buffers and other resources. I somewhat know how to optimize these things in PASM, but I have next to no idea of how to do so in GCC.

    All along, I have openly stated that I am in this for the learning. I have no interest in provide that I can code the absolute best 3D printer set up for the Propeller. Anyone else can have the glory.... I am just plodding along with learning and sharing what I think may be useful to others.
  • jazzedjazzed Posts: 11,803
    edited 2014-05-31 10:50
    It is not just about speed. It is about smooth streaming of the G-codes. It is about having the code compact enough to fit into the 32K bytes available. And about having the right balance of buffers and other resources. I somewhat know how to optimize these things in PASM, but I have next to no idea of how to do so in GCC.

    All along, I have openly stated that I am in this for the learning. I have no interest in provide that I can code the absolute best 3D printer set up for the Propeller. Anyone else can have the glory.... I am just plodding along with learning and sharing what I think may be useful to others.
    Did you know that the equivalent optimized PASM is >= 2x bigger than the equivalent SPIN or other byte-code oriented program?

    Just experimenting and learning is one thing. Making value judgments without sufficient knowledge or skill is quite another. Please, just be careful what you say as others may think it's significant without having read all your other posts.
  • D.PD.P Posts: 790
    edited 2014-05-31 10:56
    jazzed wrote: »
    Did you know that the equivalent optimized PASM is >= 2x bigger than the equivalent SPIN or other byte-code oriented program?

    Just experimenting and learning is one thing. Making value judgments without sufficient knowledge or skill is quite another.

    Could you elaborate a little please, on the >= 2x stuff.
  • jazzedjazzed Posts: 11,803
    edited 2014-05-31 10:57
    D.P wrote: »
    Could you elaborate a little please, on the >= 2x stuff.


    These things have been measured over the years. If I have time later, I'll find links to posts.
  • idbruceidbruce Posts: 6,197
    edited 2014-05-31 16:17
    Loopy

    It never was a competition, I am just seeking a solution. Personally, I want you to succeed with your endeavor. However I think you missed my point. It is not about who can write the best software for a 3D printer. It is about writing 3D printing software that will fit on the Propeller and control a 3D printer. This is all a learning process for me also.

    Now that we have a potential controller, it needs to be tested and tweaked, and the only way this will happen, is if 3D printing software is written for the Propeller.
  • idbruceidbruce Posts: 6,197
    edited 2014-05-31 16:21
    jazzed

    I am curious, what type of parsing scheme did you have when you wrote yours? Additionally, how many G-codes were you trying to support? And how much oversize was it?
  • jazzedjazzed Posts: 11,803
    edited 2014-05-31 16:54
    idbruce wrote: »
    jazzed

    I am curious, what type of parsing scheme did you have when you wrote yours? Additionally, how many G-codes were you trying to support? And how much oversize was it?


    Bruce I don't recall everything. Here's what I remember.

    Stepper motors for x,y,z were controlled by a Button/LED panel and Serial IO.

    Three steppers were controlled by EasyDriver stepper modules using a simple pulse. This is all I can find on the EasyDriver modules today.

    The button panel had an online/offline button, x,y,z positioning, and a home position button. When online, the Serial IO accepted commands and the buttons were disabled (like a retro printer).

    The serial IO accepted G and M commands from a file like below (essentially a PCB aperture based RS-274X Geber). There were many commands. Something like this document was my main guideline.


    [code]
    G75*
    G70*
    %OFA0B0*%
    %FSLAX24Y24*%
    %IPPOS*%
    %LPD*%
    %AMOC8*
    5,1,8,0,0,1.08239X$1,22.5*
    %
    %ADD10C,0.0000*%
    %ADD11C,0.0010*%
    %ADD12C,0.0100*%
    %ADD13C,0.0060*%
    %ADD14C,0.0550*%
    %ADD15C,0.0930*%
    %ADD16C,0.0520*%
    %ADD17C,0.0070*%
    %ADD18C,0.0050*%
    %ADD19OC8,0.0630*%
    %ADD20C,0.0630*%
    %ADD21R,0.1000X0.0200*%
    %ADD22R,0.0200X0.1000*%
    %ADD23OC8,0.0600*%
    %ADD24R,0.0200X0.0200*%
    %ADD25C,0.0600*%
    %ADD26C,0.0400*%
    D10*
    X000101Y001854D02*
    X000101Y032354D01*
    X040101Y032354D01*
    X040101Y001854D01*
    X000101Y001854D01*
    X000801Y003354D02*
    X000839Y003581D01*
    X000949Y003784D01*
    X001118Y003940D01*
    X001329Y004033D01*
    X001559Y004052D01*
    X001782Y003995D01*
    X001975Y003869D01*
    X002117Y003687D01*
    X002191Y003469D01*
    X002191Y003239D01*
    X002117Y003021D01*
    X001975Y002839D01*
    X001782Y002713D01*
    X001559Y002656D01*
    X001329Y002675D01*
    X001118Y002768D01*
    X000949Y002924D01*
    X000839Y003127D01*
    X000801Y003354D01*
    X004511Y004354D02*
    X004550Y004573D01*
    X004661Y004765D01*
    X004831Y004908D01*
    X005040Y004984D01*
    X005262Y004984D01*
    X005471Y004908D01*
    X005641Y004765D01*
    X005752Y004573D01*
    X005791Y004354D01*
    X005752Y004135D01*
    X005641Y003943D01*
    X005471Y003800D01*
    X005262Y003724D01*
    X005040Y003724D01*
    X004831Y003800D01*
    X004661Y003943D01*
    X004550Y004135D01*
    X004511Y004354D01*
    X015201Y004354D02*
    X016001Y004354D01*
    X015601Y003954D02*
    X015601Y004754D01*
    X016601Y009454D02*
    X016601Y010254D01*
    X016201Y009854D02*
    X017001Y009854D01*
    X023201Y014854D02*
    X024001Y014854D01*
    X023601Y014454D02*
    X023601Y015254D01*
    X028201Y017354D02*
    X029001Y017354D01*
    X028601Y016954D02*
    X028601Y017754D01*
    X028601Y018954D02*
    X028601Y019754D01*
    X028201Y019354D02*
    X029001Y019354D01*
    X031601Y021954D02*
    X031601Y022754D01*
    X031201Y022354D02*
    X032001Y022354D01*
    X034601Y019754D02*
    X034601Y018954D01*
    X034201Y019354D02*
    X035001Y019354D01*
    X034601Y017754D02*
    X034601Y016954D01*
    X034201Y017354D02*
    X035001Y017354D01*
    X023501Y021854D02*
    X022701Y021854D01*
    X023101Y021454D02*
    X023101Y022254D01*
    X023101Y023954D02*
    X023101Y024754D01*
    X022701Y024354D02*
    X023501Y024354D01*
    X017001Y021854D02*
    X016201Y021854D01*
    X016601Y021454D02*
    X016601Y022254D01*
    X012001Y024354D02*
    X011201Y024354D01*
    X011601Y023954D02*
    X011601Y024754D01*
    X010101Y023254D02*
    X010101Y022454D01*
    X009701Y022854D02*
    X010501Y022854D01*
    X008501Y022854D02*
    X007701Y022854D01*
    X008101Y022454D02*
    X008101Y023254D01*
    X008101Y024954D02*
    X008101Y025754D01*
    X007701Y025354D02*
    X008501Y025354D01*
    X006501Y025354D02*
    X005701Y025354D01*
    X006101Y024954D02*
    X006101Y025754D01*
    X004501Y025354D02*
    X003701Y025354D01*
    X004101Y024954D02*
    X004101Y025754D01*
    X002501Y025354D02*
    X001701Y025354D01*
    X002101Y024954D02*
    X002101Y025754D01*
    X002101Y023254D02*
    X002101Y022454D01*
    X001701Y022854D02*
    X002501Y022854D01*
    X005101Y018254D02*
    X005101Y017454D01*
    X004701Y017854D02*
    X005501Y017854D01*
    X009201Y014854D02*
    X010001Y014854D01*
    X009601Y014454D02*
    X009601Y015254D01*
    X016601Y026954D02*
    X016601Y027754D01*
    X016201Y027354D02*
    X017001Y027354D01*
    X013001Y030354D02*
    X012201Y030354D01*
    X012601Y029954D02*
    X012601Y030754D01*
    X006001Y029854D02*
    X005201Y029854D01*
    X005601Y029454D02*
    X005601Y030254D01*
    X000901Y030954D02*
    X000939Y031181D01*
    X001049Y031384D01*
    X001218Y031540D01*
    X001429Y031633D01*
    X001659Y031652D01*
    X001882Y031595D01*
    X002075Y031469D01*
    X002217Y031287D01*
    X002291Y031069D01*
    X002291Y030839D01*
    X002217Y030621D01*
    X002075Y030439D01*
    X001882Y030313D01*
    X001659Y030256D01*
    X001429Y030275D01*
    X001218Y030368D01*
    X001049Y030524D01*
    X000939Y030727D01*
    X000901Y030954D01*
    X028601Y007254D02*
    X028601Y006454D01*
    X028201Y006854D02*
    X029001Y006854D01*
    X025461Y004354D02*
    X025500Y004573D01*
    X025611Y004765D01*
    X025781Y004908D01*
    X025990Y004984D01*
    X026212Y004984D01*
    X026421Y004908D01*
    X026591Y004765D01*
    X026702Y004573D01*
    X026741Y004354D01*
    X026702Y004135D01*
    X026591Y003943D01*
    X026421Y003800D01*
    X026212Y003724D01*
    X025990Y003724D01*
    X025781Y003800D01*
    X025611Y003943D01*
    X025500Y004135D01*
    X025461Y004354D01*
    X037201Y006854D02*
    X038001Y006854D01*
    X037601Y006454D02*
    X037601Y007254D01*
    X037901Y003354D02*
    X037939Y003581D01*
    X038049Y003784D01*
    X038218Y003940D01*
    X038429Y004033D01*
    X038659Y004052D01*
    X038882Y003995D01*
    X039075Y003869D01*
    X039217Y003687D01*
    X039291Y003469D01*
    X039291Y003239D01*
    X039217Y003021D01*
    X039075Y002839D01*
    X038882Y002713D01*
    X038659Y002656D01*
    X038429Y002675D01*
    X038218Y002768D01*
    X038049Y002924D01*
    X037939Y003127D01*
    X037901Y003354D01*
    X037901Y030854D02*
    X037939Y031081D01*
    X038049Y031284D01*
    X038218Y031440D01*
    X038429Y031533D01*
    X038659Y031552D01*
    X038882Y031495D01*
    X039075Y031369D01*
    X039217Y031187D01*
    X039291Y030969D01*
    X039291Y030739D01*
    X039217Y030521D01*
    X039075Y030339D01*
    X038882Y030213D01*
    X038659Y030156D01*
    X038429Y030175D01*
    X038218Y030268D01*
    X038049Y030424D01*
    X037939Y030627D01*
    X037901Y030854D01*
    D11*
    X038211Y030854D02*
    X038245Y031013D01*
    X038340Y031144D01*
    X038480Y031225D01*
    X038642Y031242D01*
    X038796Y031192D01*
    X038917Y031083D01*
    X038982Y030935D01*
    X038982Y030773D01*
    X038917Y030625D01*
    X038796Y030516D01*
    X038642Y030466D01*
    X038480Y030483D01*
    X038340Y030564D01*
    X038245Y030695D01*
    X038211Y030854D01*
    X038201Y030454D02*
    X039001Y031254D01*
    X025711Y004354D02*
    X025745Y004513D01*
    X025840Y004644D01*
    X025980Y004725D01*
    X026142Y004742D01*
    X026296Y004692D01*
    X026417Y004583D01*
    X026482Y004435D01*
    X026482Y004273D01*
    X026417Y004125D01*
    X026296Y004016D01*
    X026142Y003966D01*
    X025980Y003983D01*
    X025840Y004064D01*
    X025745Y004195D01*
    X025711Y004354D01*
    X025701Y003954D02*
    X026501Y004754D01*
    X038211Y003354D02*
    X038245Y003513D01*
    X038340Y003644D01*
    X038480Y003725D01*
    X038642Y003742D01*
    X038796Y003692D01*
    X038917Y003583D01*
    X038982Y003435D01*
    X038982Y003273D01*
    X038917Y003125D01*
    X038796Y003016D01*
    X038642Y002966D01*
    X038480Y002983D01*
    X038340Y003064D01*
    X038245Y003195D01*
    X038211Y003354D01*
    X038201Y002954D02*
    X039001Y003754D01*
    X004761Y004354D02*
    X004795Y004513D01*
    X004890Y004644D01*
    X005030Y004725D01*
    X005192Y004742D01*
    X005346Y004692D01*
    X005467Y004583D01*
    X005532Y004435D01*
    X005532Y004273D01*
    X005467Y004125D01*
    X005346Y004016D01*
    X005192Y003966D01*
    X005030Y003983D01*
    X004890Y004064D01*
    X004795Y004195D01*
    X004761Y004354D01*
    X004751Y003954D02*
    X005551Y004754D01*
    X001111Y003354D02*
    X001145Y003513D01*
    X001240Y003644D01*
    X001380Y003725D01*
    X001542Y003742D01*
    X001696Y003692D01*
    X001817Y003583D01*
    X001882Y003435D01*
    X001882Y003273D01*
    X001817Y003125D01*
    X001696Y003016D01*
    X001542Y002966D01*
    X001380Y002983D01*
    X001240Y003064D01*
    X001145Y003195D01*
    X001111Y003354D01*
    X001101Y002954D02*
    X001901Y003754D01*
    X001211Y030954D02*
    X001245Y031113D01*
    X001340Y031244D01*
    X001480Y031325D01*
    X001642Y031342D01*
    X001796Y031292D01*
    X001917Y031183D01*
    X001982Y031035D01*
    X001982Y030873D01*
    X001917Y030725D01*
    X001796Y030616D01*
    X001642Y030566D01*
    X001480Y030583D01*
    X001340Y030664D01*
    X001245Y030795D01*
    X001211Y030954D01*
    X001201Y030554D02*
    X002001Y031354D01*
    D12*
    X003601Y029854D02*
    X003601Y025854D01*
    X002101Y025854D01*
    X002101Y024854D02*
    X002601Y024354D01*
    X002601Y021854D01*
    X003101Y021354D01*
    X003601Y021354D01*
    X003601Y020354D02*
    X003101Y020354D01*
    X002601Y019854D01*
    X002601Y009854D01*
    X005601Y006854D01*
    X006101Y006854D01*
    X005751Y006854D02*
    X004051Y006854D01*
    X004051Y008454D01*
    X015101Y008454D01*
    X015001Y008454D02*
    X016211Y008454D01*
    X016101Y008454D02*
    X027201Y008454D01*
    X027201Y006854D01*
    X026021Y006854D01*
    X025601Y006854D02*
    X025601Y020854D01*
    X026601Y021854D01*
    X026601Y022354D02*
    X024601Y020354D01*
    X024601Y012854D01*
    X024101Y012354D01*
    X023101Y011354D02*
    X022601Y011854D01*
    X022601Y021854D01*
    X023101Y022354D01*
    X023101Y023854D01*
    X023601Y024354D02*
    X023101Y024854D01*
    X023601Y024354D02*
    X023601Y021854D01*
    X023101Y021354D01*
    X024101Y020854D02*
    X023101Y019854D01*
    X023101Y019354D01*
    X023601Y019854D02*
    X023601Y008354D01*
    X023101Y007854D01*
    X024101Y007854D02*
    X024101Y007354D01*
    X023601Y006854D01*
    X022601Y006854D02*
    X022601Y010854D01*
    X024101Y011354D02*
    X024601Y010854D01*
    X024601Y008354D01*
    X024101Y007854D01*
    X025101Y007854D02*
    X025101Y006354D01*
    X026101Y006354D01*
    X026101Y010854D01*
    X028101Y012854D01*
    X028101Y025354D01*
    X029601Y026854D01*
    X030101Y026854D01*
    X030101Y027854D02*
    X032101Y027854D01*
    X032601Y028354D01*
    X035601Y028354D01*
    X035601Y009854D01*
    X034601Y009854D02*
    X037101Y007354D01*
    X037101Y006854D01*
    X037601Y006854D01*
    X034101Y010354D02*
    X030601Y006854D01*
    X030601Y006354D02*
    X030101Y006354D01*
    X030101Y008854D01*
    X028101Y010854D01*
    X026601Y010854D01*
    X026601Y006354D01*
    X026101Y005854D01*
    X022101Y005854D01*
    X022101Y007854D01*
    X022201Y006854D02*
    X020601Y006854D01*
    X020601Y006354D02*
    X020101Y005854D01*
    X014601Y005854D01*
    X014601Y006854D01*
    X015101Y006854D02*
    X016701Y006854D01*
    X017601Y007854D02*
    X017601Y014354D01*
    X019601Y016354D01*
    X019601Y030354D01*
    X016601Y030354D01*
    X016101Y029854D01*
    X016101Y028854D01*
    X017101Y028854D02*
    X017101Y028354D01*
    X017601Y027854D01*
    X017601Y023354D01*
    X018101Y022854D01*
    X018101Y022354D01*
    X018601Y021854D02*
    X019101Y021354D01*
    X018601Y021854D02*
    X018601Y027854D01*
    X018101Y028354D01*
    X018101Y028854D01*
    X018601Y029354D02*
    X018101Y029854D01*
    X016601Y029854D01*
    X016601Y022854D01*
    X017101Y022354D01*
    X017601Y022854D02*
    X017601Y020854D01*
    X014101Y020854D01*
    X014101Y021354D01*
    X015601Y021854D02*
    X016101Y021354D01*
    X015601Y021854D02*
    X015601Y024854D01*
    X016101Y025354D01*
    X016101Y025854D01*
    X017101Y025854D02*
    X017101Y023354D01*
    X017601Y022854D01*
    X019101Y024354D02*
    X019101Y025854D01*
    X020601Y024854D02*
    X020601Y006354D01*
    X021601Y006854D02*
    X019601Y004854D01*
    X014101Y004854D01*
    X014101Y007854D01*
    X013101Y007854D02*
    X013101Y007354D01*
    X012601Y006854D01*
    X013601Y006854D02*
    X013601Y022854D01*
    X014601Y023854D01*
    X014601Y026354D01*
    X015101Y026854D01*
    X015101Y026354D02*
    X015101Y025854D01*
    X015101Y026354D02*
    X015601Y026854D01*
    X015101Y027354D01*
    X012601Y027354D01*
    X012601Y023354D01*
    X012101Y022854D01*
    X012101Y022354D01*
    X012601Y022854D02*
    X012601Y008354D01*
    X012101Y007854D01*
    X011601Y008354D02*
    X011601Y006854D01*
    X011201Y006854D02*
    X009601Y006854D01*
    X009101Y006854D02*
    X009101Y007354D01*
    X008101Y007354D01*
    X008101Y008354D01*
    X005601Y010854D01*
    X005601Y013854D01*
    X006101Y014354D01*
    X006601Y014354D01*
    X006601Y013354D02*
    X007101Y013354D01*
    X008601Y011854D01*
    X008601Y009854D01*
    X010601Y007854D01*
    X011101Y007854D01*
    X011601Y008354D02*
    X011101Y008854D01*
    X011101Y019854D01*
    X008601Y019854D01*
    X007101Y018354D01*
    X006601Y018354D01*
    X006601Y017354D02*
    X009101Y017354D01*
    X009601Y017854D02*
    X009601Y011854D01*
    X009101Y011354D01*
    X008101Y011354D02*
    X008101Y008854D01*
    X008601Y008354D01*
    X008601Y007854D01*
    X007601Y007854D02*
    X007601Y007354D01*
    X007101Y006854D01*
    X007101Y002854D01*
    X004101Y002854D01*
    X004051Y002554D01*
    X004051Y003134D02*
    X004051Y001954D01*
    X004051Y001964D02*
    X004051Y000154D01*
    X027201Y000154D01*
    X027201Y001994D01*
    X027201Y002004D02*
    X027201Y003114D01*
    X027201Y006854D01*
    X028101Y005854D02*
    X028601Y005854D01*
    X028101Y005854D02*
    X027601Y005354D01*
    X027601Y002354D01*
    X027201Y002554D01*
    X028601Y004854D02*
    X029101Y004854D01*
    X029601Y005354D01*
    X029601Y008854D01*
    X028101Y010354D01*
    X027101Y008854D02*
    X028101Y007854D01*
    X028601Y007854D01*
    X030601Y006354D02*
    X035101Y010854D01*
    X035101Y026354D01*
    X033601Y027854D01*
    X033101Y027854D01*
    X033101Y026854D02*
    X033601Y026854D01*
    X034101Y026354D01*
    X034101Y022854D01*
    X033601Y022354D01*
    X031601Y022354D01*
    X031601Y011354D01*
    X031101Y009354D02*
    X031101Y022354D01*
    X032601Y023854D01*
    X033101Y023854D01*
    X033101Y025854D02*
    X032601Y025854D01*
    X031101Y027354D01*
    X027601Y027354D01*
    X027601Y018854D01*
    X028601Y018854D02*
    X029601Y017854D01*
    X030101Y017854D01*
    X030101Y016854D02*
    X028601Y016854D01*
    X027101Y017854D02*
    X027101Y023854D01*
    X026601Y024354D02*
    X024601Y022354D01*
    X024601Y020854D01*
    X023601Y019854D01*
    X024101Y020854D02*
    X024101Y022354D01*
    X025101Y023354D01*
    X026601Y021354D02*
    X026101Y020854D01*
    X026101Y019854D01*
    X028601Y019854D02*
    X030101Y019854D01*
    X033101Y019854D02*
    X033601Y019854D01*
    X034101Y019354D01*
    X034101Y010354D01*
    X021601Y006854D02*
    X021601Y024854D01*
    X022101Y025354D01*
    X022101Y025854D01*
    X021101Y025854D02*
    X021101Y025354D01*
    X020601Y024854D01*
    X022601Y022854D02*
    X022601Y026854D01*
    X021101Y028354D01*
    X021101Y028854D01*
    X022101Y028854D02*
    X022101Y029354D01*
    X020601Y030854D01*
    X011601Y030854D01*
    X011601Y008854D01*
    X012101Y009354D02*
    X012101Y010354D01*
    X013101Y010354D02*
    X013101Y009354D01*
    X013101Y007854D01*
    X015101Y010354D02*
    X017101Y012354D01*
    X016601Y011354D02*
    X016601Y009854D01*
    X016101Y009354D01*
    X018601Y007854D02*
    X018601Y007354D01*
    X018101Y006854D01*
    X019101Y006854D02*
    X019101Y008354D01*
    X019601Y008854D01*
    X019601Y012854D01*
    X020101Y013354D01*
    X020101Y021354D02*
    X020101Y022354D01*
    X021101Y022354D02*
    X021101Y021354D01*
    X014101Y025354D02*
    X014101Y025854D01*
    X014101Y025354D02*
    X013101Y024354D01*
    X013101Y023354D01*
    X012601Y022854D01*
    X012101Y024354D02*
    X012101Y025854D01*
    X011101Y025854D02*
    X011101Y024354D01*
    X010101Y023354D02*
    X009601Y022854D01*
    X009601Y023354D01*
    X008101Y024854D01*
    X008101Y023354D02*
    X006601Y023354D01*
    X008101Y022354D02*
    X007101Y021354D01*
    X006601Y021354D01*
    X006601Y020354D02*
    X007101Y020354D01*
    X009601Y022854D01*
    X006101Y024854D02*
    X005601Y024854D01*
    X005601Y019854D01*
    X006101Y019354D01*
    X006601Y019354D01*
    X005601Y017854D02*
    X009601Y017854D01*
    X010101Y018354D02*
    X009101Y018354D01*
    X009101Y019354D02*
    X010101Y019354D01*
    X009101Y015354D02*
    X006601Y015354D01*
    X005101Y015354D02*
    X005101Y008354D01*
    X005601Y007854D01*
    X004051Y006854D02*
    X004051Y003134D01*
    X008101Y011354D02*
    X007101Y012354D01*
    X006601Y012354D01*
    X005101Y015354D02*
    X004101Y016354D01*
    X003601Y016354D01*
    X005601Y017854D02*
    X004101Y019354D01*
    X003601Y019354D01*
    X004601Y024854D02*
    X004601Y025354D01*
    X004101Y025854D01*
    X003601Y025854D01*
    X004601Y024854D02*
    X005601Y024854D01*
    X005101Y029354D02*
    X006101Y029354D01*
    X007101Y029354D01*
    X007101Y030354D02*
    X006101Y030354D01*
    X005101Y030354D01*
    X004101Y030354D01*
    X003601Y029854D01*
    X004101Y029354D02*
    X005101Y029354D01*
    X013101Y028854D02*
    X013101Y030354D01*
    X018601Y029354D02*
    X019101Y029354D01*
    X019101Y028854D01*
    D13*
    X022501Y028454D02*
    X022501Y027604D01*
    X022393Y027579D01*
    X022306Y027510D01*
    X022257Y027410D01*
    X022257Y027298D01*
    X022306Y027198D01*
    X022393Y027129D01*
    X022501Y027104D01*
    X022501Y026254D01*
    X010701Y026254D01*
    X010701Y028454D01*
    X022501Y028454D01*
    X023101Y025004D02*
    X023101Y024654D01*
    X023601Y024654D01*
    X023601Y024454D01*
    X022601Y024454D01*
    X022601Y024654D01*
    X023101Y024654D01*
    X022101Y024354D02*
    X022138Y024624D01*
    X022247Y024874D01*
    X022418Y025085D01*
    X022641Y025242D01*
    X022898Y025333D01*
    X023169Y025352D01*
    X023436Y025296D01*
    X023678Y025171D01*
    X023877Y024985D01*
    X024018Y024752D01*
    X024092Y024490D01*
    X024092Y024218D01*
    X024018Y023956D01*
    X023877Y023723D01*
    X023678Y023537D01*
    X023436Y023412D01*
    X023169Y023356D01*
    X022898Y023375D01*
    X022641Y023466D01*
    X022418Y023623D01*
    X022247Y023834D01*
    X022138Y024084D01*
    X022101Y024354D01*
    X023101Y024104D02*
    X023101Y023704D01*
    X023601Y024804D02*
    X023601Y024904D01*
    X023701Y024904D01*
    X023601Y024904D02*
    X023501Y024904D01*
    X023601Y024904D02*
    X023601Y025004D01*
    X021351Y022854D02*
    X020851Y022854D01*
    X020601Y022604D01*
    X020351Y022854D01*
    X019851Y022854D01*
    X019601Y022604D01*
    X019351Y022854D01*
    X018851Y022854D01*
    X018601Y022604D01*
    X018351Y022854D01*
    X017851Y022854D01*
    X017601Y022604D01*
    X017351Y022854D01*
    X016851Y022854D01*
    X016601Y022604D01*
    X016351Y022854D01*
    X015851Y022854D01*
    X015601Y022604D01*
    X015351Y022854D01*
    X014851Y022854D01*
    X014601Y022604D01*
    X014351Y022854D01*
    X013851Y022854D01*
    X013601Y022604D01*
    X013351Y022854D01*
    X012851Y022854D01*
    X012601Y022604D01*
    X012351Y022854D01*
    X011851Y022854D01*
    X011601Y022604D01*
    X011601Y021104D01*
    X011851Y020854D01*
    X012351Y020854D01*
    X012601Y021104D01*
    X012851Y020854D01*
    X013351Y020854D01*
    X013601Y021104D01*
    X013851Y020854D01*
    X014351Y020854D01*
    X014601Y021104D01*
    X014851Y020854D01*
    X015351Y020854D01*
    X015601Y021104D01*
    X015851Y020854D01*
    X016351Y020854D01*
    X016601Y021104D01*
    X016851Y020854D01*
    X017351Y020854D01*
    X017601Y021104D01*
    X017851Y020854D01*
    X018351Y020854D01*
    X018601Y021104D01*
    X018851Y020854D01*
    X019351Y020854D01*
    X019601Y021104D01*
    X019851Y020854D01*
    X020351Y020854D01*
    X020601Y021104D01*
    X020851Y020854D01*
    X021351Y020854D01*
    X021601Y021104D01*
    X021601Y022604D01*
    X021351Y022854D01*
    X022601Y021754D02*
    X022601Y021554D01*
    X023101Y021554D01*
    X023601Y021554D01*
    X023601Y021754D01*
    X022601Y021754D01*
    X022101Y021854D02*
    X022138Y022124D01*
    X022247Y022374D01*
    X022418Y022585D01*
    X022641Y022742D01*
    X022898Y022833D01*
    X023169Y022852D01*
    X023436Y022796D01*
    X023678Y022671D01*
    X023877Y022485D01*
    X024018Y022252D01*
    X024092Y021990D01*
    X024092Y021718D01*
    X024018Y021456D01*
    X023877Y021223D01*
    X023678Y021037D01*
    X023436Y020912D01*
    X023169Y020856D01*
    X022898Y020875D01*
    X022641Y020966D01*
    X022418Y021123D01*
    X022247Y021334D01*
    X022138Y021584D01*
    X022101Y021854D01*
    X022601Y021404D02*
    X022601Y021304D01*
    X022501Y021304D01*
    X022601Y021304D02*
    X022701Y021304D01*
    X022601Y021304D02*
    X022601Y021204D01*
    X023101Y021204D02*
    X023101Y021554D01*
    X023101Y022104D02*
    X023101Y022504D01*
    X022851Y019854D02*
    X024351Y019854D01*
    X024601Y019604D01*
    X024601Y019104D01*
    X024351Y018854D01*
    X024601Y018604D01*
    X024601Y018104D01*
    X024351Y017854D01*
    X024601Y017604D01*
    X024601Y017104D01*
    X024351Y016854D01*
    X024601Y016604D01*
    X024601Y016104D01*
    X024351Y015854D01*
    X024601Y015604D01*
    X024601Y015104D01*
    X024351Y014854D01*
    X024601Y014604D01*
    X024601Y014104D01*
    X024351Y013854D01*
    X024601Y013604D01*
    X024601Y013104D01*
    X024351Y012854D01*
    X024601Y012604D01*
    X024601Y012104D01*
    X024351Y011854D01*
    X024601Y011604D01*
    X024601Y011104D01*
    X024351Y010854D01*
    X024601Y010604D01*
    X024601Y010104D01*
    X024351Y009854D01*
    X022851Y009854D01*
    X022601Y010104D01*
    X022601Y010604D01*
    X022851Y010854D01*
    X022601Y011104D01*
    X022601Y011604D01*
    X022851Y011854D01*
    X022601Y012104D01*
    X022601Y012604D01*
    X022851Y012854D01*
    X022601Y013104D01*
    X022601Y013604D01*
    X022851Y013854D01*
    X022601Y014104D01*
    X022601Y014604D01*
    X022851Y014854D01*
    X022601Y015104D01*
    X022601Y015604D01*
    X022851Y015854D01*
    X022601Y016104D01*
    X022601Y016604D01*
    X022851Y016854D01*
    X022601Y017104D01*
    X022601Y017604D01*
    X022851Y017854D01*
    X022601Y018104D01*
    X022601Y018604D01*
    X022851Y018854D01*
    X022601Y019104D01*
    X022601Y019604D01*
    X022851Y019854D01*
    X028001Y018804D02*
    X028101Y018804D01*
    X028101Y018904D01*
    X028101Y018804D02*
    X028201Y018804D01*
    X028101Y018804D02*
    X028101Y018704D01*
    X028101Y019054D02*
    X028601Y019054D01*
    X029101Y019054D01*
    X029101Y019254D01*
    X028101Y019254D01*
    X028101Y019054D01*
    X028601Y019054D02*
    X028601Y018704D01*
    X027601Y019354D02*
    X027638Y019624D01*
    X027747Y019874D01*
    X027918Y020085D01*
    X028141Y020242D01*
    X028398Y020333D01*
    X028669Y020352D01*
    X028936Y020296D01*
    X029178Y020171D01*
    X029377Y019985D01*
    X029518Y019752D01*
    X029592Y019490D01*
    X029592Y019218D01*
    X029518Y018956D01*
    X029377Y018723D01*
    X029178Y018537D01*
    X028936Y018412D01*
    X028669Y018356D01*
    X028398Y018375D01*
    X028141Y018466D01*
    X027918Y018623D01*
    X027747Y018834D01*
    X027638Y019084D01*
    X027601Y019354D01*
    X028601Y019604D02*
    X028601Y020004D01*
    X028601Y018004D02*
    X028601Y017654D01*
    X029101Y017654D01*
    X029101Y017454D01*
    X028101Y017454D01*
    X028101Y017654D01*
    X028601Y017654D01*
    X027601Y017354D02*
    X027638Y017624D01*
    X027747Y017874D01*
    X027918Y018085D01*
    X028141Y018242D01*
    X028398Y018333D01*
    X028669Y018352D01*
    X028936Y018296D01*
    X029178Y018171D01*
    X029377Y017985D01*
    X029518Y017752D01*
    X029592Y017490D01*
    X029592Y017218D01*
    X029518Y016956D01*
    X029377Y016723D01*
    X029178Y016537D01*
    X028936Y016412D01*
    X028669Y016356D01*
    X028398Y016375D01*
    X028141Y016466D01*
    X027918Y016623D01*
    X027747Y016834D01*
    X027638Y017084D01*
    X027601Y017354D01*
    X028601Y017104D02*
    X028601Y016704D01*
    X029101Y017804D02*
    X029101Y017904D01*
    X029201Y017904D01*
    X029101Y017904D02*
    X029001Y017904D01*
    X029101Y017904D02*
    X029101Y018004D01*
    X030501Y016454D02*
    X030501Y028254D01*
    X031351Y028254D01*
    X031376Y028146D01*
    X031445Y028059D01*
    X031545Y028010D01*
    X031657Y028010D01*
    X031757Y028059D01*
    X031826Y028146D01*
    X031851Y028254D01*
    X032701Y028254D01*
    X032701Y016454D01*
    X030501Y016454D01*
    X034001Y016804D02*
    X034101Y016804D01*
    X034101Y016904D01*
    X034101Y016804D02*
    X034201Y016804D01*
    X034101Y016804D02*
    X034101Y016704D01*
    X034101Y017054D02*
    X034601Y017054D01*
    X035101Y017054D01*
    X035101Y017254D01*
    X034101Y017254D01*
    X034101Y017054D01*
    X034601Y017054D02*
    X034601Y016704D01*
    X033601Y017354D02*
    X033638Y017624D01*
    X033747Y017874D01*
    X033918Y018085D01*
    X034141Y018242D01*
    X034398Y018333D01*
    X034669Y018352D01*
    X034936Y018296D01*
    X035178Y018171D01*
    X035377Y017985D01*
    X035518Y017752D01*
    X035592Y017490D01*
    X035592Y017218D01*
    X035518Y016956D01*
    X035377Y016723D01*
    X035178Y016537D01*
    X034936Y016412D01*
    X034669Y016356D01*
    X034398Y016375D01*
    X034141Y016466D01*
    X033918Y016623D01*
    X033747Y016834D01*
    X033638Y017084D01*
    X033601Y017354D01*
    X034601Y017604D02*
    X034601Y018004D01*
    X034601Y018704D02*
    X034601Y019104D01*
    X033601Y019354D02*
    X033638Y019624D01*
    X033747Y019874D01*
    X033918Y020085D01*
    X034141Y020242D01*
    X034398Y020333D01*
    X034669Y020352D01*
    X034936Y020296D01*
    X035178Y020171D01*
    X035377Y019985D01*
    X035518Y019752D01*
    X035592Y019490D01*
    X035592Y019218D01*
    X035518Y018956D01*
    X035377Y018723D01*
    X035178Y018537D01*
    X034936Y018412D01*
    X034669Y018356D01*
    X034398Y018375D01*
    X034141Y018466D01*
    X033918Y018623D01*
    X033747Y018834D01*
    X033638Y019084D01*
    X033601Y019354D01*
    X034101Y019454D02*
    X034101Y019654D01*
    X034601Y019654D01*
    X035101Y019654D01*
    X035101Y019454D01*
    X034101Y019454D01*
    X034601Y019654D02*
    X034601Y020004D01*
    X035001Y019904D02*
    X035101Y019904D01*
    X035201Y019904D01*
    X035101Y019904D02*
    X035101Y019804D01*
    X035101Y019904D02*
    X035101Y020004D01*
    X037351Y009354D02*
    X037851Y009354D01*
    X038101Y009104D01*
    X038101Y008604D01*
    X037851Y008354D01*
    X038101Y008104D01*
    X038101Y007604D01*
    X037851Y007354D01*
    X038101Y007104D01*
    X038101Y006604D01*
    X037851Y006354D01*
    X038101Y006104D01*
    X038101Y005604D01*
    X037851Y005354D01*
    X038101Y005104D01*
    X038101Y004604D01*
    X037851Y004354D01*
    X037351Y004354D01*
    X037101Y004604D01*
    X037101Y005104D01*
    X037351Y005354D01*
    X037101Y005604D01*
    X037101Y006104D01*
    X037351Y006354D01*
    X037101Y006604D01*
    X037101Y007104D01*
    X037351Y007354D01*
    X037101Y007604D01*
    X037101Y008104D01*
    X037351Y008354D01*
    X037101Y008604D01*
    X037101Y009104D01*
    X037351Y009354D01*
    X029101Y009104D02*
    X029101Y008604D01*
    X028851Y008354D01*
    X029101Y008104D01*
    X029101Y007604D01*
    X028851Y007354D01*
    X029101Y007104D01*
    X029101Y006604D01*
    X028851Y006354D01*
    X029101Y006104D01*
    X029101Y005604D01*
    X028851Y005354D01*
    X029101Y005104D01*
    X029101Y004604D01*
    X028851Y004354D01*
    X028351Y004354D01*
    X028101Y004604D01*
    X028101Y005104D01*
    X028351Y005354D01*
    X028101Y005604D01*
    X028101Y006104D01*
    X028351Y006354D01*
    X028101Y006604D01*
    X028101Y007104D01*
    X028351Y007354D01*
    X028101Y007604D01*
    X028101Y008104D01*
    X028351Y008354D01*
    X028101Y008604D01*
    X028101Y009104D01*
    X028351Y009354D01*
    X028851Y009354D01*
    X029101Y009104D01*
    X026721Y008791D02*
    X026614Y008684D01*
    X026507Y008684D01*
    X026401Y008791D01*
    X026401Y009325D01*
    X026507Y009325D02*
    X026294Y009325D01*
    X026076Y009111D02*
    X025863Y009325D01*
    X025863Y008684D01*
    X026076Y008684D02*
    X025649Y008684D01*
    X026121Y005334D02*
    X021581Y005334D01*
    X021581Y000274D01*
    X020621Y000274D02*
    X020621Y005334D01*
    X016081Y005334D01*
    X016081Y000274D01*
    X017201Y000254D02*
    X017201Y005274D01*
    X015121Y005334D02*
    X015121Y000274D01*
    X014001Y000254D02*
    X014001Y005284D01*
    X015121Y005334D02*
    X010581Y005334D01*
    X010581Y000274D01*
    X009621Y000274D02*
    X009621Y005334D01*
    X005081Y005334D01*
    X005081Y000274D01*
    X006201Y000254D02*
    X006201Y005274D01*
    X008501Y005284D02*
    X008501Y000254D01*
    X011701Y000254D02*
    X011701Y005274D01*
    X011851Y008854D02*
    X012351Y008854D01*
    X012601Y009104D01*
    X012851Y008854D01*
    X013351Y008854D01*
    X013601Y009104D01*
    X013851Y008854D01*
    X014351Y008854D01*
    X014601Y009104D01*
    X014851Y008854D01*
    X015351Y008854D01*
    X015601Y009104D01*
    X015851Y008854D01*
    X016351Y008854D01*
    X016601Y009104D01*
    X016851Y008854D01*
    X017351Y008854D01*
    X017601Y009104D01*
    X017851Y008854D01*
    X018351Y008854D01*
    X018601Y009104D01*
    X018851Y008854D01*
    X019351Y008854D01*
    X019601Y009104D01*
    X019851Y008854D01*
    X020351Y008854D01*
    X020601Y009104D01*
    X020851Y008854D01*
    X021351Y008854D01*
    X021601Y009104D01*
    X021601Y010604D01*
    X021351Y010854D01*
    X020851Y010854D01*
    X020601Y010604D01*
    X020351Y010854D01*
    X019851Y010854D01*
    X019601Y010604D01*
    X019351Y010854D01*
    X018851Y010854D01*
    X018601Y010604D01*
    X018351Y010854D01*
    X017851Y010854D01*
    X017601Y010604D01*
    X017351Y010854D01*
    X016851Y010854D01*
    X016601Y010604D01*
    X016351Y010854D01*
    X015851Y010854D01*
    X015601Y010604D01*
    X015351Y010854D01*
    X014851Y010854D01*
    X014601Y010604D01*
    X014351Y010854D01*
    X013851Y010854D01*
    X013601Y010604D01*
    X013351Y010854D01*
    X012851Y010854D01*
    X012601Y010604D01*
    X012351Y010854D01*
    X011851Y010854D01*
    X011601Y010604D01*
    X011601Y009104D01*
    X011851Y008854D01*
    X010601Y010104D02*
    X010601Y010604D01*
    X010351Y010854D01*
    X010601Y011104D01*
    X010601Y011604D01*
    X010351Y011854D01*
    X010601Y012104D01*
    X010601Y012604D01*
    X010351Y012854D01*
    X010601Y013104D01*
    X010601Y013604D01*
    X010351Y013854D01*
    X010601Y014104D01*
    X010601Y014604D01*
    X010351Y014854D01*
    X010601Y015104D01*
    X010601Y015604D01*
    X010351Y015854D01*
    X010601Y016104D01*
    X010601Y016604D01*
    X010351Y016854D01*
    X010601Y017104D01*
    X010601Y017604D01*
    X010351Y017854D01*
    X010601Y018104D01*
    X010601Y018604D01*
    X010351Y018854D01*
    X010601Y019104D01*
    X010601Y019604D01*
    X010351Y019854D01*
    X008851Y019854D01*
    X008601Y019604D01*
    X008601Y019104D01*
    X008851Y018854D01*
    X008601Y018604D01*
    X008601Y018104D01*
    X008851Y017854D01*
    X008601Y017604D01*
    X008601Y017104D01*
    X008851Y016854D01*
    X008601Y016604D01*
    X008601Y016104D01*
    X008851Y015854D01*
    X008601Y015604D01*
    X008601Y015104D01*
    X008851Y014854D01*
    X008601Y014604D01*
    X008601Y014104D01*
    X008851Y013854D01*
    X008601Y013604D01*
    X008601Y013104D01*
    X008851Y012854D01*
    X008601Y012604D01*
    X008601Y012104D01*
    X008851Y011854D01*
    X008601Y011604D01*
    X008601Y011104D01*
    X008851Y010854D01*
    X008601Y010604D01*
    X008601Y010104D01*
    X008851Y009854D01*
    X010351Y009854D01*
    X010601Y010104D01*
    X006201Y011954D02*
    X006201Y023754D01*
    X004001Y023754D01*
    X004001Y011954D01*
    X004851Y011954D01*
    X004876Y012062D01*
    X004945Y012149D01*
    X005045Y012198D01*
    X005157Y012198D01*
    X005257Y012149D01*
    X005326Y012062D01*
    X005351Y011954D01*
    X006201Y011954D01*
    X017821Y008734D02*
    X018248Y008734D01*
    X018035Y008734D02*
    X018035Y009375D01*
    X018248Y009161D01*
    X018466Y009055D02*
    X018893Y009055D01*
    X019110Y009055D02*
    X019217Y009161D01*
    X019324Y009161D01*
    X019537Y009055D01*
    X019537Y009375D01*
    X019110Y009375D01*
    X019110Y009055D02*
    X019110Y008841D01*
    X019217Y008734D01*
    X019430Y008734D01*
    X019537Y008841D01*
    X019755Y009055D02*
    X020182Y009055D01*
    X019861Y009375D01*
    X019861Y008734D01*
    X020506Y008841D02*
    X020506Y009375D01*
    X020613Y009375D02*
    X020399Y009375D01*
    X020506Y008841D02*
    X020613Y008734D01*
    X020720Y008734D01*
    X020826Y008841D01*
    X021044Y008734D02*
    X021257Y008948D01*
    X021151Y008948D02*
    X021471Y008948D01*
    X021471Y008734D02*
    X021471Y009375D01*
    X021151Y009375D01*
    X021044Y009268D01*
    X021044Y009055D01*
    X021151Y008948D01*
    X022701Y005274D02*
    X022701Y000254D01*
    X025001Y000254D02*
    X025001Y005284D01*
    X026121Y005334D02*
    X026121Y000274D01*
    X019501Y000254D02*
    X019501Y005284D01*
    X010101Y022204D02*
    X010101Y022554D01*
    X009601Y022554D01*
    X009601Y022754D01*
    X010601Y022754D01*
    X010601Y022554D01*
    X010101Y022554D01*
    X009101Y022854D02*
    X009138Y023124D01*
    X009247Y023374D01*
    X009418Y023585D01*
    X009641Y023742D01*
    X009898Y023833D01*
    X010169Y023852D01*
    X010436Y023796D01*
    X010678Y023671D01*
    X010877Y023485D01*
    X011018Y023252D01*
    X011092Y022990D01*
    X011092Y022718D01*
    X011018Y022456D01*
    X010877Y022223D01*
    X010678Y022037D01*
    X010436Y021912D01*
    X010169Y021856D01*
    X009898Y021875D01*
    X009641Y021966D01*
    X009418Y022123D01*
    X009247Y022334D01*
    X009138Y022584D01*
    X009101Y022854D01*
    X008601Y022754D02*
    X008601Y022554D01*
    X008101Y022554D01*
    X007601Y022554D01*
    X007601Y022754D01*
    X008601Y022754D01*
    X007101Y022854D02*
    X007138Y023124D01*
    X007247Y023374D01*
    X007418Y023585D01*
    X007641Y023742D01*
    X007898Y023833D01*
    X008169Y023852D01*
    X008436Y023796D01*
    X008678Y023671D01*
    X008877Y023485D01*
    X009018Y023252D01*
    X009092Y022990D01*
    X009092Y022718D01*
    X009018Y022456D01*
    X008877Y022223D01*
    X008678Y022037D01*
    X008436Y021912D01*
    X008169Y021856D01*
    X007898Y021875D01*
    X007641Y021966D01*
    X007418Y022123D01*
    X007247Y022334D01*
    X007138Y022584D01*
    X007101Y022854D01*
    X007601Y022404D02*
    X007601Y022304D01*
    X007501Y022304D01*
    X007601Y022304D02*
    X007701Y022304D01*
    X007601Y022304D02*
    X007601Y022204D01*
    X008101Y022204D02*
    X008101Y022554D01*
    X008101Y023104D02*
    X008101Y023504D01*
    X009601Y022404D02*
    X009601Y022304D01*
    X009501Y022304D01*
    X009601Y022304D02*
    X009701Y022304D01*
    X009601Y022304D02*
    X009601Y022204D01*
    X010101Y023104D02*
    X010101Y023504D01*
    X010951Y024354D02*
    X011301Y024354D01*
    X011301Y024854D01*
    X011501Y024854D01*
    X011501Y023854D01*
    X011301Y023854D01*
    X011301Y024354D01*
    X010601Y024354D02*
    X010638Y024624D01*
    X010747Y024874D01*
    X010918Y025085D01*
    X011141Y025242D01*
    X011398Y025333D01*
    X011669Y025352D01*
    X011936Y025296D01*
    X012178Y025171D01*
    X012377Y024985D01*
    X012518Y024752D01*
    X012592Y024490D01*
    X012592Y024218D01*
    X012518Y023956D01*
    X012377Y023723D01*
    X012178Y023537D01*
    X011936Y023412D01*
    X011669Y023356D01*
    X011398Y023375D01*
    X011141Y023466D01*
    X010918Y023623D01*
    X010747Y023834D01*
    X010638Y024084D01*
    X010601Y024354D01*
    X011051Y024754D02*
    X011051Y024854D01*
    X011051Y024954D01*
    X011051Y024854D02*
    X011151Y024854D01*
    X011051Y024854D02*
    X010951Y024854D01*
    X011851Y024354D02*
    X012251Y024354D01*
    X008601Y025454D02*
    X008601Y025654D01*
    X008101Y025654D01*
    X007601Y025654D01*
    X007601Y025454D01*
    X008601Y025454D01*
    X008601Y025804D02*
    X008601Y025904D01*
    X008701Y025904D01*
    X008601Y025904D02*
    X008501Y025904D01*
    X008601Y025904D02*
    X008601Y026004D01*
    X008101Y026004D02*
    X008101Y025654D01*
    X007101Y025354D02*
    X007138Y025624D01*
    X007247Y025874D01*
    X007418Y026085D01*
    X007641Y026242D01*
    X007898Y026333D01*
    X008169Y026352D01*
    X008436Y026296D01*
    X008678Y026171D01*
    X008877Y025985D01*
    X009018Y025752D01*
    X009092Y025490D01*
    X009092Y025218D01*
    X009018Y024956D01*
    X008877Y024723D01*
    X008678Y024537D01*
    X008436Y024412D01*
    X008169Y024356D01*
    X007898Y024375D01*
    X007641Y024466D01*
    X007418Y024623D01*
    X007247Y024834D01*
    X007138Y025084D01*
    X007101Y025354D01*
    X006601Y025254D02*
    X005601Y025254D01*
    X005601Y025054D01*
    X006101Y025054D01*
    X006601Y025054D01*
    X006601Y025254D01*
    X005101Y025354D02*
    X005138Y025624D01*
    X005247Y025874D01*
    X005418Y026085D01*
    X005641Y026242D01*
    X005898Y026333D01*
    X006169Y026352D01*
    X006436Y026296D01*
    X006678Y026171D01*
    X006877Y025985D01*
    X007018Y025752D01*
    X007092Y025490D01*
    X007092Y025218D01*
    X007018Y024956D01*
    X006877Y024723D01*
    X006678Y024537D01*
    X006436Y024412D01*
    X006169Y024356D01*
    X005898Y024375D01*
    X005641Y024466D01*
    X005418Y024623D01*
    X005247Y024834D01*
    X005138Y025084D01*
    X005101Y025354D01*
    X004601Y025254D02*
    X003601Y025254D01*
    X003601Y025054D01*
    X004101Y025054D01*
    X004601Y025054D01*
    X004601Y025254D01*
    X003101Y025354D02*
    X003138Y025624D01*
    X003247Y025874D01*
    X003418Y026085D01*
    X003641Y026242D01*
    X003898Y026333D01*
    X004169Y026352D01*
    X004436Y026296D01*
    X004678Y026171D01*
    X004877Y025985D01*
    X005018Y025752D01*
    X005092Y025490D01*
    X005092Y025218D01*
    X005018Y024956D01*
    X004877Y024723D01*
    X004678Y024537D01*
    X004436Y024412D01*
    X004169Y024356D01*
    X003898Y024375D01*
    X003641Y024466D01*
    X003418Y024623D01*
    X003247Y024834D01*
    X003138Y025084D01*
    X003101Y025354D01*
    X002601Y025454D02*
    X002601Y025654D01*
    X002101Y025654D01*
    X001601Y025654D01*
    X001601Y025454D01*
    X002601Y025454D01*
    X002601Y025804D02*
    X002601Y025904D01*
    X002701Y025904D01*
    X002601Y025904D02*
    X002501Y025904D01*
    X002601Y025904D02*
    X002601Y026004D01*
    X002101Y026004D02*
    X002101Y025654D01*
    X001101Y025354D02*
    X001138Y025624D01*
    X001247Y025874D01*
    X001418Y026085D01*
    X001641Y026242D01*
    X001898Y026333D01*
    X002169Y026352D01*
    X002436Y026296D01*
    X002678Y026171D01*
    X002877Y025985D01*
    X003018Y025752D01*
    X003092Y025490D01*
    X003092Y025218D01*
    X003018Y024956D01*
    X002877Y024723D01*
    X002678Y024537D01*
    X002436Y024412D01*
    X002169Y024356D01*
    X001898Y024375D01*
    X001641Y024466D01*
    X001418Y024623D01*
    X001247Y024834D01*
    X001138Y025084D01*
    X001101Y025354D01*
    X002101Y025104D02*
    X002101Y024704D01*
    X003501Y024804D02*
    X003601Y024804D01*
    X003601Y024904D01*
    X003601Y024804D02*
    X003701Y024804D01*
    X003601Y024804D02*
    X003601Y024704D01*
    X004101Y024704D02*
    X004101Y025054D01*
    X004101Y025604D02*
    X004101Y026004D01*
    X005501Y024804D02*
    X005601Y024804D01*
    X005601Y024904D01*
    X005601Y024804D02*
    X005701Y024804D01*
    X005601Y024804D02*
    X005601Y024704D01*
    X006101Y024704D02*
    X006101Y025054D01*
    X006101Y025604D02*
    X006101Y026004D01*
    X008101Y025104D02*
    X008101Y024704D01*
    X007351Y028854D02*
    X006851Y028854D01*
    X006601Y029104D01*
    X006351Y028854D01*
    X005851Y028854D01*
    X005601Y029104D01*
    X005351Y028854D01*
    X004851Y028854D01*
    X004601Y029104D01*
    X004351Y028854D01*
    X003851Y028854D01*
    X003601Y029104D01*
    X003601Y030604D01*
    X003851Y030854D01*
    X004351Y030854D01*
    X004601Y030604D01*
    X004851Y030854D01*
    X005351Y030854D01*
    X005601Y030604D01*
    X005851Y030854D01*
    X006351Y030854D01*
    X006601Y030604D01*
    X006851Y030854D01*
    X007351Y030854D01*
    X007601Y030604D01*
    X007601Y029104D01*
    X007351Y028854D01*
    X011951Y030354D02*
    X012351Y030354D01*
    X011601Y030354D02*
    X011638Y030624D01*
    X011747Y030874D01*
    X011918Y031085D01*
    X012141Y031242D01*
    X012398Y031333D01*
    X012669Y031352D01*
    X012936Y031296D01*
    X013178Y031171D01*
    X013377Y030985D01*
    X013518Y030752D01*
    X013592Y030490D01*
    X013592Y030218D01*
    X013518Y029956D01*
    X013377Y029723D01*
    X013178Y029537D01*
    X012936Y029412D01*
    X012669Y029356D01*
    X012398Y029375D01*
    X012141Y029466D01*
    X011918Y029623D01*
    X011747Y029834D01*
    X011638Y030084D01*
    X011601Y030354D01*
    X012701Y029854D02*
    X012901Y029854D01*
    X012901Y030354D01*
    X012901Y030854D01*
    X012701Y030854D01*
    X012701Y029854D01*
    X013051Y029854D02*
    X013151Y029854D01*
    X013151Y029754D01*
    X013151Y029854D02*
    X013151Y029954D01*
    X013151Y029854D02*
    X013251Y029854D01*
    X013251Y030354D02*
    X012901Y030354D01*
    X002701Y023404D02*
    X002601Y023404D01*
    X002601Y023304D01*
    X002601Y023404D02*
    X002501Y023404D01*
    X002601Y023404D02*
    X002601Y023504D01*
    X002601Y023154D02*
    X002101Y023154D01*
    X001601Y023154D01*
    X001601Y022954D01*
    X002601Y022954D01*
    X002601Y023154D01*
    X002101Y023154D02*
    X002101Y023504D01*
    X001101Y022854D02*
    X001138Y023124D01*
    X001247Y023374D01*
    X001418Y023585D01*
    X001641Y023742D01*
    X001898Y023833D01*
    X002169Y023852D01*
    X002436Y023796D01*
    X002678Y023671D01*
    X002877Y023485D01*
    X003018Y023252D01*
    X003092Y022990D01*
    X003092Y022718D01*
    X003018Y022456D01*
    X002877Y022223D01*
    X002678Y022037D01*
    X002436Y021912D01*
    X002169Y021856D01*
    X001898Y021875D01*
    X001641Y021966D01*
    X001418Y022123D01*
    X001247Y022334D01*
    X001138Y022584D01*
    X001101Y022854D01*
    X002101Y022604D02*
    X002101Y022204D01*
    D14*
    X005601Y007854D03*
    X006601Y007854D03*
    X007601Y007854D03*
    X008601Y007854D03*
    X009101Y006854D03*
    X008101Y006854D03*
    X007101Y006854D03*
    X006101Y006854D03*
    X011101Y007854D03*
    X012101Y007854D03*
    X013101Y007854D03*
    X014101Y007854D03*
    X014601Y006854D03*
    X013601Y006854D03*
    X012601Y006854D03*
    X011601Y006854D03*
    X016601Y007854D03*
    X017601Y007854D03*
    X018601Y007854D03*
    X019601Y007854D03*
    X020101Y006854D03*
    X019101Y006854D03*
    X018101Y006854D03*
    X017101Y006854D03*
    X022101Y007854D03*
    X023101Y007854D03*
    X024101Y007854D03*
    X025101Y007854D03*
    X025601Y006854D03*
    X024601Y006854D03*
    X023601Y006854D03*
    X022601Y006854D03*
    D15*
    X027201Y002554D03*
    X015601Y008454D03*
    X004051Y002554D03*
    D16*
    X003861Y012354D02*
    X003341Y012354D01*
    X003341Y013354D02*
    X003861Y013354D01*
    X003861Y014354D02*
    X003341Y014354D01*
    X003341Y015354D02*
    X003861Y015354D01*
    X003861Y016354D02*
    X003341Y016354D01*
    X003341Y017354D02*
    X003861Y017354D01*
    X003861Y018354D02*
    X003341Y018354D01*
    X003341Y019354D02*
    X003861Y019354D01*
    X003861Y020354D02*
    X003341Y020354D01*
    X003341Y021354D02*
    X003861Y021354D01*
    X003861Y022354D02*
    X003341Y022354D01*
    X003341Y023354D02*
    X003861Y023354D01*
    X006341Y023354D02*
    X006861Y023354D01*
    X006861Y022354D02*
    X006341Y022354D01*
    X006341Y021354D02*
    X006861Y021354D01*
    X006861Y020354D02*
    X006341Y020354D01*
    X006341Y019354D02*
    X006861Y019354D01*
    X006861Y018354D02*
    X006341Y018354D01*
    X006341Y017354D02*
    X006861Y017354D01*
    X006861Y016354D02*
    X006341Y016354D01*
    X006341Y015354D02*
    X006861Y015354D01*
    X006861Y014354D02*
    X006341Y014354D01*
    X006341Y013354D02*
    X006861Y013354D01*
    X006861Y012354D02*
    X006341Y012354D01*
    X011101Y025594D02*
    X011101Y026114D01*
    X012101Y026114D02*
    X012101Y025594D01*
    X013101Y025594D02*
    X013101Y026114D01*
    X014101Y026114D02*
    X014101Y025594D01*
    X015101Y025594D02*
    X015101Y026114D01*
    X016101Y026114D02*
    X016101Y025594D01*
    X017101Y025594D02*
    X017101Y026114D01*
    X018101Y026114D02*
    X018101Y025594D01*
    X019101Y025594D02*
    X019101Y026114D01*
    X020101Y026114D02*
    X020101Y025594D01*
    X021101Y025594D02*
    X021101Y026114D01*
    X022101Y026114D02*
    X022101Y025594D01*
    X022101Y028594D02*
    X022101Y029114D01*
    X021101Y029114D02*
    X021101Y028594D01*
    X020101Y028594D02*
    X020101Y029114D01*
    X019101Y029114D02*
    X019101Y028594D01*
    X018101Y028594D02*
    X018101Y029114D01*
    X017101Y029114D02*
    X017101Y028594D01*
    X016101Y028594D02*
    X016101Y029114D01*
    X015101Y029114D02*
    X015101Y028594D01*
    X014101Y028594D02*
    X014101Y029114D01*
    X013101Y029114D02*
    X013101Y028594D01*
    X012101Y028594D02*
    X012101Y029114D01*
    X011101Y029114D02*
    X011101Y028594D01*
    X029841Y027854D02*
    X030361Y027854D01*
    X030361Y026854D02*
    X029841Y026854D01*
    X029841Y025854D02*
    X030361Y025854D01*
    X030361Y024854D02*
    X029841Y024854D01*
    X029841Y023854D02*
    X030361Y023854D01*
    X030361Y022854D02*
    X029841Y022854D01*
    X029841Y021854D02*
    X030361Y021854D01*
    X030361Y020854D02*
    X029841Y020854D01*
    X029841Y019854D02*
    X030361Y019854D01*
    X030361Y018854D02*
    X029841Y018854D01*
    X029841Y017854D02*
    X030361Y017854D01*
    X030361Y016854D02*
    X029841Y016854D01*
    X032841Y016854D02*
    X033361Y016854D01*
    X033361Y017854D02*
    X032841Y017854D01*
    X032841Y018854D02*
    X033361Y018854D01*
    X033361Y019854D02*
    X032841Y019854D01*
    X032841Y020854D02*
    X033361Y020854D01*
    X033361Y021854D02*
    X032841Y021854D01*
    X032841Y022854D02*
    X033361Y022854D01*
    X033361Y023854D02*
    X032841Y023854D01*
    X032841Y024854D02*
    X033361Y024854D01*
    X033361Y025854D02*
    X032841Y025854D01*
    X032841Y026854D02*
    X033361Y026854D01*
    X033361Y027854D02*
    X032841Y027854D01*
    D17*
    X032080Y028409D02*
    X031660Y028409D01*
    X031870Y028409D02*
    X031870Y029040D01*
    X031660Y028830D01*
    X031436Y028935D02*
    X031331Y029040D01*
    X031121Y029040D01*
    X031015Y028935D01*
    X031015Y028515D01*
    X031121Y028409D01*
    X031331Y028409D01*
    X031436Y028515D01*
    X030796Y028409D02*
    X030586Y028409D01*
    X030691Y028409D02*
    X030691Y029040D01*
    X030586Y029040D02*
    X030796Y029040D01*
    X031390Y027465D02*
    X031285Y027360D01*
    X031285Y027150D01*
    X031390Y027045D01*
    X031495Y027045D01*
    X031601Y027150D01*
    X031601Y027360D01*
    X031706Y027465D01*
    X031811Y027465D01*
    X031916Y027360D01*
    X031916Y027150D01*
    X031811Y027045D01*
    X031706Y027045D01*
    X031601Y027150D01*
    X031601Y027360D02*
    X031495Y027465D01*
    X031390Y027465D01*
    X031390Y026821D02*
    X031285Y026716D01*
    X031285Y026505D01*
    X031390Y026400D01*
    X031390Y026176D02*
    X031285Y026071D01*
    X031285Y025861D01*
    X031390Y025756D01*
    X031285Y025532D02*
    X031916Y025111D01*
    X031916Y024887D02*
    X031495Y024887D01*
    X031285Y024677D01*
    X031495Y024467D01*
    X031916Y024467D01*
    X031916Y024243D02*
    X031285Y024243D01*
    X031495Y024032D01*
    X031285Y023822D01*
    X031916Y023822D01*
    X031601Y024467D02*
    X031601Y024887D01*
    X031285Y025111D02*
    X031916Y025532D01*
    X031916Y025756D02*
    X031495Y026176D01*
    X031390Y026176D01*
    X031811Y026400D02*
    X031916Y026505D01*
    X031916Y026716D01*
    X031811Y026821D01*
    X031706Y026821D01*
    X031601Y026716D01*
    X031601Y026610D01*
    X031601Y026716D02*
    X031495Y026821D01*
    X031390Y026821D01*
    X031916Y026176D02*
    X031916Y025756D01*
    X023286Y026721D02*
    X023286Y026931D01*
    X023286Y026826D02*
    X022655Y026826D01*
    X022655Y026721D02*
    X022655Y026931D01*
    X022760Y027150D02*
    X023181Y027150D01*
    X023286Y027255D01*
    X023286Y027466D01*
    X023181Y027571D01*
    X023286Y027795D02*
    X022865Y028215D01*
    X022760Y028215D01*
    X022655Y028110D01*
    X022655Y027900D01*
    X022760Y027795D01*
    X022760Y027571D02*
    X022655Y027466D01*
    X022655Y027255D01*
    X022760Y027150D01*
    X023286Y027795D02*
    X023286Y028215D01*
    X021711Y027565D02*
    X021711Y027460D01*
    X021606Y027355D01*
    X021396Y027355D01*
    X021291Y027460D01*
    X021291Y027565D01*
    X021396Y027670D01*
    X021606Y027670D01*
    X021711Y027565D01*
    X021606Y027355D02*
    X021711Y027250D01*
    X021711Y027145D01*
    X021606Y027039D01*
    X021396Y027039D01*
    X021291Y027145D01*
    X021291Y027250D01*
    X021396Y027355D01*
    X021067Y027460D02*
    X020962Y027355D01*
    X021067Y027250D01*
    X021067Y027145D01*
    X020962Y027039D01*
    X020752Y027039D01*
    X020647Y027145D01*
    X020422Y027039D02*
    X020002Y027039D01*
    X020422Y027460D01*
    X020422Y027565D01*
    X020317Y027670D01*
    X020107Y027670D01*
    X020002Y027565D01*
    X019778Y027670D02*
    X019358Y027039D01*
    X019133Y027039D02*
    X019133Y027460D01*
    X018923Y027670D01*
    X018713Y027460D01*
    X018713Y027039D01*
    X018489Y027039D02*
    X018489Y027670D01*
    X018279Y027460D01*
    X018069Y027670D01*
    X018069Y027039D01*
    X018713Y027355D02*
    X019133Y027355D01*
    X019358Y027670D02*
    X019778Y027039D01*
    X020647Y027565D02*
    X020752Y027670D01*
    X020962Y027670D01*
    X021067Y027565D01*
    X021067Y027460D01*
    X020962Y027355D02*
    X020857Y027355D01*
    X005416Y016127D02*
    X005416Y015917D01*
    X005311Y015812D01*
    X005206Y015812D01*
    X005101Y015917D01*
    X005101Y016127D01*
    X005206Y016232D01*
    X005311Y016232D01*
    X005416Y016127D01*
    X005101Y016127D02*
    X004995Y016232D01*
    X004890Y016232D01*
    X004785Y016127D01*
    X004785Y015917D01*
    X004890Y015812D01*
    X004995Y015812D01*
    X005101Y015917D01*
    X005206Y015588D02*
    X005311Y015588D01*
    X005416Y015483D01*
    X005416Y015273D01*
    X005311Y015168D01*
    X005416Y014943D02*
    X005416Y014523D01*
    X004995Y014943D01*
    X004890Y014943D01*
    X004785Y014838D01*
    X004785Y014628D01*
    X004890Y014523D01*
    X004785Y014299D02*
    X005416Y013879D01*
    X005416Y013654D02*
    X004995Y013654D01*
    X004785Y013444D01*
    X004995Y013234D01*
    X005416Y013234D01*
    X005416Y013010D02*
    X004785Y013010D01*
    X004995Y012800D01*
    X004785Y012589D01*
    X005416Y012589D01*
    X005101Y013234D02*
    X005101Y013654D01*
    X004785Y013879D02*
    X005416Y014299D01*
    X004890Y015168D02*
    X004785Y015273D01*
    X004785Y015483D01*
    X004890Y015588D01*
    X004995Y015588D01*
    X005101Y015483D01*
    X005206Y015588D01*
    X005101Y015483D02*
    X005101Y015378D01*
    X005002Y011800D02*
    X004897Y011695D01*
    X004897Y011275D01*
    X005002Y011169D01*
    X005212Y011169D01*
    X005317Y011275D01*
    X005541Y011275D02*
    X005646Y011169D01*
    X005856Y011169D01*
    X005962Y011275D01*
    X005962Y011380D01*
    X005856Y011485D01*
    X005751Y011485D01*
    X005856Y011485D02*
    X005962Y011590D01*
    X005962Y011695D01*
    X005856Y011800D01*
    X005646Y011800D01*
    X005541Y011695D01*
    X005317Y011695D02*
    X005212Y011800D01*
    X005002Y011800D01*
    X004677Y011800D02*
    X004467Y011800D01*
    X004572Y011800D02*
    X004572Y011169D01*
    X004467Y011169D02*
    X004677Y011169D01*
    D18*
    X007975Y012648D02*
    X007975Y012799D01*
    X007975Y012724D02*
    X008351Y012724D01*
    X008426Y012648D01*
    X008426Y012573D01*
    X008351Y012498D01*
    X008426Y012959D02*
    X007975Y012959D01*
    X007975Y013184D01*
    X008050Y013259D01*
    X008201Y013259D01*
    X008276Y013184D01*
    X008276Y012959D01*
    X008351Y013419D02*
    X008426Y013494D01*
    X008426Y013644D01*
    X008351Y013719D01*
    X008276Y013719D01*
    X008201Y013644D01*
    X008201Y013569D01*
    X008201Y013644D02*
    X008126Y013719D01*
    X008050Y013719D01*
    X007975Y013644D01*
    X007975Y013494D01*
    X008050Y013419D01*
    X010775Y010644D02*
    X010850Y010719D01*
    X011151Y010419D01*
    X011226Y010494D01*
    X011226Y010644D01*
    X011151Y010719D01*
    X010850Y010719D01*
    X010775Y010644D02*
    X010775Y010494D01*
    X010850Y010419D01*
    X011151Y010419D01*
    X011226Y010259D02*
    X011226Y009959D01*
    X010926Y010259D01*
    X010850Y010259D01*
    X010775Y010184D01*
    X010775Y010034D01*
    X010850Y009959D01*
    X011701Y011029D02*
    X011626Y011105D01*
    X011701Y011029D02*
    X011851Y011029D01*
    X011926Y011105D01*
    X011926Y011180D01*
    X011851Y011255D01*
    X011701Y011255D01*
    X011626Y011330D01*
    X011626Y011405D01*
    X011701Y011480D01*
    X011851Y011480D01*
    X011926Y011405D01*
    X012086Y011480D02*
    X012086Y011180D01*
    X012236Y011029D01*
    X012386Y011180D01*
    X012386Y011480D01*
    X012546Y011255D02*
    X012847Y011255D01*
    X012772Y011480D02*
    X012546Y011255D01*
    X012772Y011480D02*
    X012772Y011029D01*
    X012076Y008680D02*
    X011926Y008530D01*
    X012076Y008680D02*
    X012076Y008229D01*
    X011926Y008229D02*
    X012226Y008229D01*
    X017626Y008305D02*
    X017701Y008229D01*
    X017776Y008229D01*
    X017851Y008305D01*
    X017851Y008680D01*
    X017776Y008680D02*
    X017926Y008680D01*
    X018086Y008680D02*
    X018311Y008680D01*
    X018386Y008605D01*
    X018386Y008455D01*
    X018311Y008380D01*
    X018086Y008380D01*
    X018086Y008229D02*
    X018086Y008680D01*
    X018546Y008455D02*
    X018847Y008455D01*
    X018772Y008680D02*
    X018546Y008455D01*
    X018772Y008680D02*
    X018772Y008229D01*
    X020626Y011029D02*
    X020926Y011330D01*
    X020926Y011405D01*
    X020851Y011480D01*
    X020701Y011480D01*
    X020626Y011405D01*
    X021086Y011405D02*
    X021086Y011105D01*
    X021386Y011405D01*
    X021386Y011105D01*
    X021311Y011029D01*
    X021161Y011029D01*
    X021086Y011105D01*
    X020926Y011029D02*
    X020626Y011029D01*
    X021086Y011405D02*
    X021161Y011480D01*
    X021311Y011480D01*
    X021386Y011405D01*
    X021975Y010950D02*
    X022426Y010950D01*
    X022426Y010800D02*
    X022426Y011100D01*
    X022126Y010800D02*
    X021975Y010950D01*
    X021975Y010640D02*
    X022276Y010640D01*
    X022426Y010490D01*
    X022276Y010340D01*
    X021975Y010340D01*
    X022050Y010180D02*
    X021975Y010105D01*
    X021975Y009955D01*
    X022050Y009879D01*
    X022126Y009879D01*
    X022201Y009955D01*
    X022201Y010105D01*
    X022276Y010180D01*
    X022351Y010180D01*
    X022426Y010105D01*
    X022426Y009955D01*
    X022351Y009879D01*
    X024775Y010330D02*
    X025226Y010330D01*
    X025226Y010480D02*
    X025226Y010179D01*
    X024926Y010179D02*
    X024775Y010330D01*
    X027475Y008819D02*
    X027626Y008669D01*
    X027475Y008819D02*
    X027926Y008819D01*
    X027926Y008669D02*
    X027926Y008969D01*
    X029275Y008759D02*
    X029576Y008759D01*
    X029726Y008609D01*
    X029576Y008459D01*
    X029275Y008459D01*
    X029350Y008299D02*
    X029275Y008224D01*
    X029275Y008073D01*
    X029350Y007998D01*
    X029426Y007998D01*
    X029501Y008073D01*
    X029501Y008224D01*
    X029576Y008299D01*
    X029651Y008299D01*
    X029726Y008224D01*
    X029726Y008073D01*
    X029651Y007998D01*
    X029651Y008919D02*
    X029726Y008994D01*
    X029726Y009144D01*
    X029651Y009219D01*
    X029576Y009219D01*
    X029501Y009144D01*
    X029501Y008919D01*
    X029651Y008919D01*
    X029501Y008919D02*
    X029350Y009069D01*
    X029275Y009219D01*
    X027926Y007719D02*
    X027926Y007419D01*
    X027626Y007719D01*
    X027550Y007719D01*
    X027475Y007644D01*
    X027475Y007494D01*
    X027550Y007419D01*
    X027550Y007259D02*
    X027475Y007184D01*
    X027475Y007034D01*
    X027550Y006959D01*
    X027851Y006959D01*
    X027926Y007034D01*
    X027926Y007184D01*
    X027851Y007259D01*
    X027926Y006799D02*
    X027475Y006799D01*
    X027475Y006498D02*
    X027926Y006799D01*
    X027926Y006498D02*
    X027475Y006498D01*
    X027475Y006338D02*
    X027475Y006038D01*
    X027926Y006038D01*
    X027926Y006338D01*
    X027701Y006188D02*
    X027701Y006038D01*
    X029275Y004969D02*
    X029275Y004669D01*
    X029501Y004669D01*
    X029426Y004819D01*
    X029426Y004894D01*
    X029501Y004969D01*
    X029651Y004969D01*
    X029726Y004894D01*
    X029726Y004744D01*
    X029651Y004669D01*
    X036475Y004605D02*
    X036475Y004455D01*
    X036550Y004379D01*
    X036626Y004379D01*
    X036701Y004455D01*
    X036701Y004605D01*
    X036776Y004680D01*
    X036851Y004680D01*
    X036926Y004605D01*
    X036926Y004455D01*
    X036851Y004379D01*
    X036550Y004680D02*
    X036475Y004605D01*
    X036475Y004840D02*
    X036776Y004840D01*
    X036926Y004990D01*
    X036776Y005140D01*
    X036475Y005140D01*
    X036475Y005300D02*
    X036701Y005300D01*
    X036626Y005450D01*
    X036626Y005525D01*
    X036701Y005600D01*
    X036851Y005600D01*
    X036926Y005525D01*
    X036926Y005375D01*
    X036851Y005300D01*
    X036475Y005300D02*
    X036475Y005600D01*
    X038275Y005879D02*
    X038726Y005879D01*
    X038726Y006180D01*
    X038726Y006340D02*
    X038275Y006340D01*
    X038726Y006640D01*
    X038275Y006640D01*
    X038350Y006800D02*
    X038651Y006800D01*
    X038726Y006875D01*
    X038726Y007025D01*
    X038651Y007100D01*
    X038726Y007261D02*
    X038726Y007561D01*
    X038726Y007411D02*
    X038275Y007411D01*
    X038426Y007261D01*
    X038350Y007100D02*
    X038275Y007025D01*
    X038275Y006875D01*
    X038350Y006800D01*
    X038275Y006180D02*
    X038275Y005879D01*
    X038501Y005879D02*
    X038501Y006030D01*
    X038726Y004930D02*
    X038726Y004629D01*
    X038726Y004780D02*
    X038275Y004780D01*
    X038426Y004629D01*
    X036851Y008629D02*
    X036926Y008705D01*
    X036926Y008855D01*
    X036851Y008930D01*
    X036701Y008930D01*
    X036626Y008855D01*
    X036626Y008780D01*
    X036701Y008629D01*
    X036475Y008629D01*
    X036475Y008930D01*
    X029576Y015584D02*
    X029501Y015509D01*
    X029200Y015509D01*
    X029125Y015584D01*
    X029125Y015734D01*
    X029200Y015809D01*
    X029276Y015969D02*
    X029125Y016119D01*
    X029576Y016119D01*
    X029576Y015969D02*
    X029576Y016269D01*
    X029501Y015809D02*
    X029576Y015734D01*
    X029576Y015584D01*
    X028126Y015502D02*
    X028126Y015202D01*
    X028126Y015352D02*
    X027675Y015352D01*
    X027826Y015202D01*
    X027826Y015662D02*
    X028051Y015662D01*
    X028126Y015737D01*
    X028126Y015962D01*
    X027826Y015962D01*
    X027901Y016123D02*
    X027901Y016273D01*
    X027750Y016198D02*
    X027675Y016273D01*
    X027750Y016198D02*
    X028126Y016198D01*
    X025226Y016340D02*
    X024775Y016340D01*
    X024775Y016565D01*
    X024850Y016640D01*
    X025001Y016640D01*
    X025076Y016565D01*
    X025076Y016340D01*
    X025151Y016105D02*
    X024775Y016105D01*
    X024775Y016030D02*
    X024775Y016180D01*
    X025151Y016105D02*
    X025226Y016030D01*
    X025226Y015955D01*
    X025151Y015879D01*
    X025226Y016800D02*
    X025226Y017100D01*
    X025226Y016950D02*
    X024775Y016950D01*
    X024926Y016800D01*
    X022426Y018879D02*
    X022126Y019180D01*
    X022050Y019180D01*
    X021975Y019105D01*
    X021975Y018955D01*
    X022050Y018879D01*
    X022426Y018879D02*
    X022426Y019180D01*
    X022351Y019340D02*
    X022050Y019640D01*
    X022351Y019640D01*
    X022426Y019565D01*
    X022426Y019415D01*
    X022351Y019340D01*
    X022050Y019340D01*
    X021975Y019415D01*
    X021975Y019565D01*
    X022050Y019640D01*
    X021466Y020229D02*
    X021165Y020229D01*
    X021466Y020530D01*
    X021466Y020605D01*
    X021391Y020680D01*
    X021240Y020680D01*
    X021165Y020605D01*
    X021005Y020680D02*
    X021005Y020380D01*
    X020855Y020229D01*
    X020705Y020380D01*
    X020705Y020680D01*
    X020545Y020605D02*
    X020470Y020680D01*
    X020320Y020680D01*
    X020245Y020605D01*
    X020245Y020530D01*
    X020320Y020455D01*
    X020470Y020455D01*
    X020545Y020380D01*
    X020545Y020305D01*
    X020470Y020229D01*
    X020320Y020229D01*
    X020245Y020305D01*
    X022175Y022352D02*
    X022626Y022352D01*
    X022626Y022202D02*
    X022626Y022502D01*
    X022551Y022662D02*
    X022626Y022737D01*
    X022626Y022962D01*
    X022326Y022962D01*
    X022401Y023123D02*
    X022401Y023273D01*
    X022276Y023290D02*
    X022125Y023440D01*
    X022576Y023440D01*
    X022576Y023290D02*
    X022576Y023590D01*
    X022501Y023750D02*
    X022200Y024050D01*
    X022501Y024050D01*
    X022576Y023975D01*
    X022576Y023825D01*
    X022501Y023750D01*
    X022200Y023750D01*
    X022125Y023825D01*
    X022125Y023975D01*
    X022200Y024050D01*
    X022175Y023273D02*
    X022250Y023198D01*
    X022626Y023198D01*
    X022501Y023130D02*
    X022576Y023055D01*
    X022576Y022905D01*
    X022501Y022829D01*
    X022200Y022829D01*
    X022125Y022905D01*
    X022125Y023055D01*
    X022200Y023130D01*
    X022326Y022662D02*
    X022551Y022662D01*
    X022175Y022352D02*
    X022326Y022202D01*
    X023625Y022584D02*
    X023700Y022509D01*
    X024001Y022509D01*
    X024076Y022584D01*
    X024076Y022734D01*
    X024001Y022809D01*
    X024026Y022829D02*
    X024026Y023130D01*
    X024076Y023194D02*
    X024076Y023044D01*
    X024001Y022969D01*
    X024026Y022980D02*
    X023575Y022980D01*
    X023726Y022829D01*
    X023700Y022809D02*
    X023625Y022734D01*
    X023625Y022584D01*
    X023625Y022969D02*
    X023851Y022969D01*
    X023776Y023119D01*
    X023776Y023194D01*
    X023851Y023269D01*
    X024001Y023269D01*
    X024076Y023194D01*
    X023951Y023290D02*
    X024026Y023365D01*
    X024026Y023590D01*
    X023726Y023590D01*
    X023801Y023750D02*
    X023801Y023900D01*
    X023650Y023825D02*
    X024026Y023825D01*
    X023650Y023825D02*
    X023575Y023900D01*
    X023726Y023290D02*
    X023951Y023290D01*
    X023625Y023269D02*
    X023625Y022969D01*
    X021166Y023029D02*
    X020865Y023029D01*
    X021016Y023029D02*
    X021016Y023480D01*
    X020865Y023330D01*
    X015466Y023330D02*
    X015466Y023405D01*
    X015391Y023480D01*
    X015240Y023480D01*
    X015165Y023405D01*
    X015005Y023405D02*
    X015005Y023255D01*
    X014930Y023180D01*
    X014705Y023180D01*
    X014705Y023029D02*
    X014705Y023480D01*
    X014930Y023480D01*
    X015005Y023405D01*
    X015165Y023029D02*
    X015466Y023330D01*
    X015466Y023029D02*
    X015165Y023029D01*
    X014470Y023105D02*
    X014470Y023480D01*
    X014395Y023480D02*
    X014545Y023480D01*
    X014470Y023105D02*
    X014395Y023029D01*
    X014320Y023029D01*
    X014245Y023105D01*
    X013572Y023429D02*
    X013572Y023805D01*
    X013647Y023880D01*
    X013647Y023655D02*
    X013496Y023655D01*
    X013336Y023730D02*
    X013336Y023429D01*
    X013111Y023429D01*
    X013036Y023505D01*
    X013036Y023730D01*
    X012876Y023429D02*
    X012576Y023429D01*
    X012726Y023429D02*
    X012726Y023880D01*
    X012576Y023730D01*
    X012651Y024879D02*
    X012801Y024879D01*
    X012876Y024955D01*
    X013036Y024955D02*
    X013036Y024879D01*
    X013036Y024955D02*
    X013336Y025255D01*
    X013336Y025330D01*
    X013036Y025330D01*
    X012876Y025255D02*
    X012801Y025330D01*
    X012651Y025330D01*
    X012576Y025255D01*
    X012576Y024955D01*
    X012651Y024879D01*
    X011026Y024825D02*
    X010650Y024825D01*
    X010575Y024900D01*
    X010801Y024900D02*
    X010801Y024750D01*
    X010726Y024590D02*
    X011026Y024590D01*
    X011026Y024365D01*
    X010951Y024290D01*
    X010726Y024290D01*
    X011026Y024130D02*
    X011026Y023829D01*
    X011026Y023980D02*
    X010575Y023980D01*
    X010726Y023829D01*
    X009576Y023905D02*
    X009576Y024055D01*
    X009501Y024130D01*
    X009576Y024290D02*
    X009576Y024590D01*
    X009576Y024440D02*
    X009125Y024440D01*
    X009276Y024290D01*
    X009200Y024130D02*
    X009125Y024055D01*
    X009125Y023905D01*
    X009200Y023829D01*
    X009501Y023829D01*
    X009576Y023905D01*
    X009076Y024044D02*
    X009001Y023969D01*
    X008926Y023969D01*
    X008851Y024044D01*
    X008851Y024194D01*
    X008926Y024269D01*
    X009001Y024269D01*
    X009076Y024194D01*
    X009076Y024044D01*
    X009026Y023980D02*
    X008575Y023980D01*
    X008726Y023829D01*
    X008700Y023809D02*
    X008625Y023734D01*
    X008625Y023584D01*
    X008700Y023509D01*
    X009001Y023509D01*
    X009076Y023584D01*
    X009076Y023734D01*
    X009001Y023809D01*
    X009026Y023829D02*
    X009026Y024130D01*
    X008951Y024290D02*
    X009026Y024365D01*
    X009026Y024590D01*
    X008726Y024590D01*
    X008801Y024750D02*
    X008801Y024900D01*
    X008650Y024825D02*
    X008575Y024900D01*
    X008650Y024825D02*
    X009026Y024825D01*
    X009125Y024825D02*
    X009125Y024975D01*
    X009200Y025050D01*
    X009276Y025050D01*
    X009351Y024975D01*
    X009426Y025050D01*
    X009501Y025050D01*
    X009576Y024975D01*
    X009576Y024825D01*
    X009501Y024750D01*
    X009351Y024900D02*
    X009351Y024975D01*
    X009200Y024750D02*
    X009125Y024825D01*
    X008951Y024290D02*
    X008726Y024290D01*
    X008700Y024269D02*
    X008776Y024269D01*
    X008851Y024194D01*
    X008851Y024044D02*
    X008776Y023969D01*
    X008700Y023969D01*
    X008625Y024044D01*
    X008625Y024194D01*
    X008700Y024269D01*
    X007626Y024198D02*
    X007250Y024198D01*
    X007175Y024273D01*
    X007276Y024290D02*
    X007125Y024440D01*
    X007576Y024440D01*
    X007576Y024290D02*
    X007576Y024590D01*
    X007576Y024750D02*
    X007576Y025050D01*
    X007576Y024900D02*
    X007125Y024900D01*
    X007276Y024750D01*
    X007401Y024273D02*
    X007401Y024123D01*
    X007501Y024130D02*
    X007576Y024055D01*
    X007576Y023905D01*
    X007501Y023829D01*
    X007200Y023829D01*
    X007125Y023905D01*
    X007125Y024055D01*
    X007200Y024130D01*
    X007326Y023962D02*
    X007626Y023962D01*
    X007626Y023737D01*
    X007551Y023662D01*
    X007326Y023662D01*
    X007626Y023502D02*
    X007626Y023202D01*
    X007626Y023352D02*
    X007175Y023352D01*
    X007326Y023202D01*
    X007026Y026329D02*
    X007026Y026630D01*
    X007026Y026480D02*
    X006575Y026480D01*
    X006726Y026329D01*
    X006726Y026790D02*
    X006951Y026790D01*
    X007026Y026865D01*
    X007026Y027090D01*
    X006726Y027090D01*
    X006801Y027250D02*
    X006801Y027400D01*
    X006650Y027325D02*
    X006575Y027400D01*
    X006650Y027325D02*
    X007026Y027325D01*
    X007007Y028229D02*
    X007157Y028380D01*
    X007307Y028229D01*
    X007307Y028680D01*
    X007467Y028680D02*
    X007692Y028680D01*
    X007767Y028605D01*
    X007767Y028455D01*
    X007692Y028380D01*
    X007467Y028380D01*
    X007617Y028380D02*
    X007767Y028229D01*
    X007467Y028229D02*
    X007467Y028680D01*
    X007007Y028680D02*
    X007007Y028229D01*
    X006847Y028455D02*
    X006772Y028380D01*
    X006546Y028380D01*
    X006546Y028229D02*
    X006546Y028680D01*
    X006772Y028680D01*
    X006847Y028605D01*
    X006847Y028455D01*
    X006386Y028455D02*
    X006386Y028305D01*
    X006311Y028229D01*
    X006161Y028229D01*
    X006086Y028305D01*
    X006086Y028455D02*
    X006236Y028530D01*
    X006311Y028530D01*
    X006386Y028455D01*
    X006386Y028680D02*
    X006086Y028680D01*
    X006086Y028455D01*
    X005926Y028680D02*
    X005776Y028680D01*
    X005851Y028680D02*
    X005851Y028305D01*
    X005776Y028229D01*
    X005701Y028229D01*
    X005626Y028305D01*
    X005026Y027325D02*
    X004650Y027325D01*
    X004575Y027400D01*
    X004801Y027400D02*
    X004801Y027250D01*
    X004726Y027090D02*
    X005026Y027090D01*
    X005026Y026865D01*
    X004951Y026790D01*
    X004726Y026790D01*
    X005026Y026630D02*
    X005026Y026329D01*
    X005125Y026405D02*
    X005200Y026329D01*
    X005501Y026329D01*
    X005576Y026405D01*
    X005576Y026555D01*
    X005501Y026630D01*
    X005501Y026790D02*
    X005576Y026865D01*
    X005576Y027015D01*
    X005501Y027090D01*
    X005200Y027090D01*
    X005125Y027015D01*
    X005125Y026865D01*
    X005200Y026790D01*
    X005276Y026790D01*
    X005351Y026865D01*
    X005351Y027090D01*
    X005200Y026630D02*
    X005125Y026555D01*
    X005125Y026405D01*
    X005026Y026480D02*
    X004575Y026480D01*
    X004726Y026329D01*
    X003576Y026405D02*
    X003576Y026555D01*
    X003501Y026630D01*
    X003576Y026790D02*
    X003576Y027090D01*
    X003576Y026940D02*
    X003125Y026940D01*
    X003276Y026790D01*
    X003200Y026630D02*
    X003125Y026555D01*
    X003125Y026405D01*
    X003200Y026329D01*
    X003501Y026329D01*
    X003576Y026405D01*
    X003501Y027250D02*
    X003576Y027325D01*
    X003576Y027475D01*
    X003501Y027550D01*
    X003351Y027550D01*
    X003276Y027475D01*
    X003276Y027400D01*
    X003351Y027250D01*
    X003125Y027250D01*
    X003125Y027550D01*
    X003926Y028229D02*
    X004226Y028229D01*
    X004076Y028229D02*
    X004076Y028680D01*
    X003926Y028530D01*
    X003851Y031029D02*
    X003701Y031029D01*
    X003626Y031105D01*
    X003701Y031255D02*
    X003851Y031255D01*
    X003926Y031180D01*
    X003926Y031105D01*
    X003851Y031029D01*
    X003701Y031255D02*
    X003626Y031330D01*
    X003626Y031405D01*
    X003701Y031480D01*
    X003851Y031480D01*
    X003926Y031405D01*
    X004086Y031480D02*
    X004086Y031180D01*
    X004236Y031029D01*
    X004386Y031180D01*
    X004386Y031480D01*
    X004546Y031480D02*
    X004847Y031480D01*
    X004847Y031405D01*
    X004546Y031105D01*
    X004546Y031029D01*
    X007126Y031105D02*
    X007126Y031180D01*
    X007201Y031255D01*
    X007351Y031255D01*
    X007426Y031180D01*
    X007426Y031105D01*
    X007351Y031029D01*
    X007201Y031029D01*
    X007126Y031105D01*
    X007201Y031255D02*
    X007126Y031330D01*
    X007126Y031405D01*
    X007201Y031480D01*
    X007351Y031480D01*
    X007426Y031405D01*
    X007426Y031330D01*
    X007351Y031255D01*
    X010448Y031130D02*
    X010598Y031280D01*
    X010598Y030829D01*
    X010448Y030829D02*
    X010748Y030829D01*
    X010908Y030905D02*
    X010984Y030829D01*
    X011209Y030829D01*
    X011209Y031130D01*
    X011369Y031055D02*
    X011519Y031055D01*
    X011444Y031205D02*
    X011444Y030829D01*
    X010908Y030905D02*
    X010908Y031130D01*
    X011444Y031205D02*
    X011519Y031280D01*
    X011516Y029830D02*
    X011366Y029755D01*
    X011215Y029605D01*
    X011441Y029605D01*
    X011516Y029530D01*
    X011516Y029455D01*
    X011441Y029379D01*
    X011290Y029379D01*
    X011215Y029455D01*
    X011215Y029605D01*
    X011055Y029755D02*
    X010980Y029830D01*
    X010830Y029830D01*
    X010755Y029755D01*
    X010755Y029455D01*
    X010830Y029379D01*
    X010980Y029379D01*
    X011055Y029455D01*
    X003076Y024194D02*
    X002625Y024194D01*
    X002851Y023969D01*
    X002851Y024269D01*
    X003076Y023809D02*
    X003076Y023509D01*
    X003076Y023659D02*
    X002625Y023659D01*
    X002776Y023509D01*
    X002700Y023349D02*
    X002625Y023274D01*
    X002625Y023123D01*
    X002700Y023048D01*
    X003001Y023048D01*
    X003076Y023123D01*
    X003076Y023274D01*
    X003001Y023349D01*
    X001626Y023352D02*
    X001175Y023352D01*
    X001326Y023202D01*
    X001626Y023202D02*
    X001626Y023502D01*
    X001551Y023662D02*
    X001626Y023737D01*
    X001626Y023962D01*
    X001326Y023962D01*
    X001401Y024123D02*
    X001401Y024273D01*
    X001250Y024198D02*
    X001175Y024273D01*
    X001250Y024198D02*
    X001626Y024198D01*
    X001551Y023662D02*
    X001326Y023662D01*
    X001401Y021773D02*
    X001401Y021623D01*
    X001250Y021698D02*
    X001175Y021773D01*
    X001250Y021698D02*
    X001626Y021698D01*
    X001626Y021462D02*
    X001326Y021462D01*
    X001626Y021462D02*
    X001626Y021237D01*
    X001551Y021162D01*
    X001326Y021162D01*
    X001626Y021002D02*
    X001626Y020702D01*
    X001626Y020852D02*
    X001175Y020852D01*
    X001326Y020702D01*
    X002625Y020774D02*
    X002625Y020623D01*
    X002700Y020548D01*
    X003001Y020548D01*
    X003076Y020623D01*
    X003076Y020774D01*
    X003001Y020849D01*
    X003076Y021009D02*
    X003076Y021309D01*
    X003076Y021159D02*
    X002625Y021159D01*
    X002776Y021009D01*
    X002700Y020849D02*
    X002625Y020774D01*
    X002700Y021469D02*
    X002625Y021544D01*
    X002625Y021694D01*
    X002700Y021769D01*
    X002776Y021769D01*
    X003076Y021469D01*
    X003076Y021769D01*
    X007975Y019269D02*
    X008426Y019269D01*
    X008426Y019119D02*
    X008426Y019419D01*
    X008126Y019119D02*
    X007975Y019269D01*
    X010775Y019259D02*
    X011076Y019259D01*
    X011226Y019109D01*
    X011076Y018959D01*
    X010775Y018959D01*
    X010850Y018799D02*
    X010775Y018724D01*
    X010775Y018573D01*
    X010850Y018498D01*
    X010926Y018498D01*
    X011001Y018573D01*
    X011001Y018724D01*
    X011076Y018799D01*
    X011151Y018799D01*
    X011226Y018724D01*
    X011226Y018573D01*
    X011151Y018498D01*
    X011151Y019419D02*
    X011226Y019494D01*
    X011226Y019644D01*
    X011151Y019719D01*
    X011076Y019719D01*
    X011001Y019644D01*
    X011001Y019569D01*
    X011001Y019644D02*
    X010926Y019719D01*
    X010850Y019719D01*
    X010775Y019644D01*
    X010775Y019494D01*
    X010850Y019419D01*
    X011705Y020229D02*
    X012005Y020530D01*
    X012005Y020605D01*
    X011930Y020680D01*
    X011780Y020680D01*
    X011705Y020605D01*
    X011705Y020229D02*
    X012005Y020229D01*
    X012165Y020305D02*
    X012165Y020605D01*
    X012240Y020680D01*
    X012391Y020680D01*
    X012466Y020605D01*
    X012165Y020305D01*
    X012240Y020229D01*
    X012391Y020229D01*
    X012466Y020305D01*
    X012466Y020605D01*
    X027625Y020555D02*
    X027625Y020405D01*
    X027700Y020329D01*
    X028001Y020329D01*
    X028076Y020405D01*
    X028076Y020555D01*
    X028001Y020630D01*
    X028001Y020790D02*
    X028076Y020865D01*
    X028076Y021015D01*
    X028001Y021090D01*
    X027926Y021090D01*
    X027851Y021015D01*
    X027851Y020940D01*
    X027851Y021015D02*
    X027776Y021090D01*
    X027700Y021090D01*
    X027625Y021015D01*
    X027625Y020865D01*
    X027700Y020790D01*
    X027700Y020630D02*
    X027625Y020555D01*
    X029075Y020480D02*
    X029226Y020329D01*
    X029075Y020480D02*
    X029526Y020480D01*
    X029526Y020630D02*
    X029526Y020329D01*
    X029451Y020790D02*
    X029226Y020790D01*
    X029451Y020790D02*
    X029526Y020865D01*
    X029526Y021090D01*
    X029226Y021090D01*
    X029301Y021250D02*
    X029301Y021400D01*
    X029150Y021325D02*
    X029075Y021400D01*
    X029150Y021325D02*
    X029526Y021325D01*
    X033625Y019015D02*
    X033625Y018865D01*
    X033700Y018790D01*
    X033700Y018630D02*
    X033625Y018555D01*
    X033625Y018405D01*
    X033700Y018329D01*
    X034001Y018329D01*
    X034076Y018405D01*
    X034076Y018555D01*
    X034001Y018630D01*
    X034076Y018790D02*
    X033776Y019090D01*
    X033700Y019090D01*
    X033625Y019015D01*
    X034076Y019090D02*
    X034076Y018790D01*
    X033901Y018273D02*
    X033901Y018123D01*
    X033750Y018198D02*
    X033675Y018273D01*
    X033750Y018198D02*
    X034126Y018198D01*
    X034126Y017962D02*
    X033826Y017962D01*
    X034126Y017962D02*
    X034126Y017737D01*
    X034051Y017662D01*
    X033826Y017662D01*
    X034126Y017502D02*
    X034126Y017202D01*
    X034126Y017352D02*
    X033675Y017352D01*
    X033826Y017202D01*
    X035125Y017584D02*
    X035200Y017509D01*
    X035501Y017509D01*
    X035576Y017584D01*
    X035576Y017734D01*
    X035501Y017809D01*
    X035351Y017969D02*
    X035351Y018269D01*
    X035226Y018329D02*
    X035075Y018480D01*
    X035526Y018480D01*
    X035526Y018630D02*
    X035526Y018329D01*
    X035576Y018194D02*
    X035125Y018194D01*
    X035351Y017969D01*
    X035200Y017809D02*
    X035125Y017734D01*
    X035125Y017584D01*
    X035226Y018790D02*
    X035451Y018790D01*
    X035526Y018865D01*
    X035526Y019090D01*
    X035226Y019090D01*
    X035301Y019250D02*
    X035301Y019400D01*
    X035150Y019325D02*
    X035075Y019400D01*
    X035150Y019325D02*
    X035526Y019325D01*
    D19*
    X034601Y018854D03*
    X034601Y017854D03*
    X028601Y016854D03*
    X028601Y019854D03*
    X023101Y022354D03*
    X023101Y023854D03*
    X012101Y024354D03*
    X010101Y023354D03*
    X008101Y023354D03*
    X008101Y024854D03*
    X006101Y025854D03*
    X004101Y025854D03*
    X002101Y024854D03*
    X002101Y022354D03*
    X012101Y030354D03*
    D20*
    X013101Y030354D03*
    X008101Y025854D03*
    X006101Y024854D03*
    X004101Y024854D03*
    X002101Y025854D03*
    X002101Y023354D03*
    X008101Y022354D03*
    X010101Y022354D03*
    X011101Y024354D03*
    X023101Y024854D03*
    X023101Y021354D03*
    X028601Y018854D03*
    X028601Y017854D03*
    X034601Y016854D03*
    X034601Y019854D03*
    D21*
    X034601Y019154D03*
    X034601Y017554D03*
    X028601Y017154D03*
    X028601Y019554D03*
    X023101Y022054D03*
    X023101Y024154D03*
    X010101Y023054D03*
    X008101Y023054D03*
    X008101Y025154D03*
    X006101Y025554D03*
    X004101Y025554D03*
    X002101Y025154D03*
    X002101Y022654D03*
    D22*
    X011801Y024354D03*
    X012401Y030354D03*
    D23*
    X007101Y030354D03*
    X006101Y030354D03*
    X006101Y029354D03*
    X007101Y029354D03*
    X005101Y029354D03*
    X004101Y029354D03*
    X004101Y030354D03*
    X005101Y030354D03*
    X012101Y022354D03*
    X013101Y022354D03*
    X013101Y021354D03*
    X012101Y021354D03*
    X014101Y021354D03*
    X015101Y021354D03*
    X016101Y021354D03*
    X017101Y021354D03*
    X018101Y021354D03*
    X019101Y021354D03*
    X020101Y021354D03*
    X021101Y021354D03*
    X021101Y022354D03*
    X020101Y022354D03*
    X019101Y022354D03*
    X018101Y022354D03*
    X017101Y022354D03*
    X016101Y022354D03*
    X015101Y022354D03*
    X014101Y022354D03*
    X010101Y019354D03*
    X010101Y018354D03*
    X010101Y017354D03*
    X010101Y016354D03*
    X010101Y015354D03*
    X010101Y014354D03*
    X010101Y013354D03*
    X010101Y012354D03*
    X009101Y012354D03*
    X009101Y013354D03*
    X009101Y014354D03*
    X009101Y015354D03*
    X009101Y016354D03*
    X009101Y017354D03*
    X009101Y018354D03*
    X009101Y019354D03*
    X009101Y011354D03*
    X009101Y010354D03*
    X010101Y010354D03*
    X010101Y011354D03*
    X012101Y010354D03*
    X013101Y010354D03*
    X013101Y009354D03*
    X012101Y009354D03*
    X014101Y009354D03*
    X015101Y009354D03*
    X016101Y009354D03*
    X017101Y009354D03*
    X018101Y009354D03*
    X019101Y009354D03*
    X020101Y009354D03*
    X021101Y009354D03*
    X021101Y010354D03*
    X020101Y010354D03*
    X01
  • idbruceidbruce Posts: 6,197
    edited 2014-05-31 19:26
    Very interesting jazzed....

    I did not know that you were up to anything with RS-274X. How long ago was this?

    I believe the RS-274X is a lot more complicated than standard 3D printing. In fact, between these five, FiveD, Teacup, Sprinter, Marlin, and Repetier, only Marlin and Repetier support arcs.

    Here is a nice and tidy document that I found for 3D printing.

    EDIT: Sorry not available due to copyright
  • idbruceidbruce Posts: 6,197
    edited 2014-05-31 19:34
    I hate to tease like that, so here is a link instead of an attachment http://www.echinus.org/wp-content/uploads/Command-reference-Echinus-Teacup-V1.10beta-English-V002.pdf
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2014-06-01 03:51
    jazzed wrote: »
    Did you know that the equivalent optimized PASM is >= 2x bigger than the equivalent SPIN or other byte-code oriented program?

    Just experimenting and learning is one thing. Making value judgments without sufficient knowledge or skill is quite another. Please, just be careful what you say as others may think it's significant without having read all your other posts.

    No.. actually I did not. I am certainly aware of the problem of new users just reading a portion of a post and deciding that they have gotten enough info.

    But my impression is that if I use a byte-code oriented program, the trade off is slower performance than PASM.
    And in PASM I can have the linear interpolation of the X, Y, and Z movements in binary rather than in floating-point decimal.
    I am not sure that PASM will actually require a program that is 2X in size.

    As far as making value judgements without sufficient knowledge or skill, I guess that the C experts are expecting that mastering the LEARN tutorials will be sufficient knowledge.
    Perhaps, a series of several tutorials on the Simpletools library that cover various aspect would make things easier. But for now, I am on my own.

    IDBruce wants to code something that is more ambitious than what I desire as a starting point. This is his thread, so I will bow out, and you two can chat. Personally, I just found the GRBL code in C++ for parsing G-codes seemed to be cleaner and clearer.
  • idbruceidbruce Posts: 6,197
    edited 2014-06-01 04:51
    Loopy
    IDBruce wants to code something that is more ambitious than what I desire as a starting point.

    Now that's funny, because I see your project as being a lot more amibitious than mine :)

    My path is clear:
    1. Read
    2. Interpret
    3. Compute
    4. Execute
    As I see it, my biggest obstacle is learning how to use the various types of memory on the Propeller Memory Card and how to use it efficiently for this project. I have never used an SD card, so that is my starting point :)

    Why do you think I went the path I chose?

    First off, unless there is a Propeller controller for 3D printing, there is no point in creating 3D Printing software for the Propeller.

    Secondly, being a fairly seasoned C/C++ programmer and a novice SPIN programmer, I examined the Teacup source code and decided it would be much easier for me to code it from scratch in SPIN.

    If I truly believed that your route was the best route, I would be jumping in with both feet. The path that I chose has nothing to do with you personally, I just feel it is the best path for me.

    As I have said many times, I wish you success with your endeavor. In fact, I hope you conquer it today.
  • idbruceidbruce Posts: 6,197
    edited 2014-06-01 07:12
    For those folks that may be following along with my 3D printer exploits, I am now providing some G-Code that I will base my parser upon.

    The following G-Code was compiled from an STL file
    obtained from MakerBot Thingiverse (http://www.thingiverse.com)

    Caliper Holder was created by Martin Oberg
    and published on May 25, 2014. The original
    STL file and further information can be obtained by
    by visiting http://www.thingiverse.com/thing:342558.

    Caliper Holder by Martin Oberg is licensed under
    the Creative Commons-Attribution-Share Alike license.
    For information pertaining to this license, please visit
    http://creativecommons.org/licenses/by-sa/3.0/

    The following G-Code was compiled with the aid of the free version of KISSlicer, set at beginner level, with default settings. The G-Code can be examined by opening the file in any text editor such as Notepad.
  • idbruceidbruce Posts: 6,197
    edited 2014-06-01 07:41
    The way I see it, the easiest way to introduce the G-Code to the Propeller is through file access to the microSD card of the Propeller Memory Card. So this is where it all begins, a G-Code file on the SD card.

    Okay, now that we have established that point, the question then becomes, should I provide multiple file support, and if so, should I also provide folder support? Considering that most SD cards are of a substantial size, I suppose the obvious answer would be yes, that way numerous G-Code files can be stored to the SD card and they can further be divided by subject.

    Now considering the fact that I have never done this before, I imagine the learning curve will be pretty steep to set up the file and folder system , and learning how to efficiently access it.

    Once again, I am just shooting from the hip, so I intend to use the FAT16/32 Full File System Driver, available from the OBEX at this location: http://obex.parallax.com/object/16

    Additionally, considering the complexity of a file/folder system, as compared to a single file, I must also establish a method of navigating the file system through the user interface of the proposed Propeller 3D printer controller. Basically I see this as somewhat of a nightmare that I am not looking forward to.

    Please be patient until the smoke clears :)
  • jazzedjazzed Posts: 11,803
    edited 2014-06-01 08:04
    idbruce wrote: »
    My path is clear:
    1. Read
    2. Interpret
    3. Compute
    4. Execute

    Rice !

    Bruce seems my RS-274X journey started in 2009.


    Parallax Propeller C Learn tutorials are introductory and get users through lots of great examples. They are also continuing to evolve with more Parallax device product support. Simple libraries are specifically for Propeller designed to be small and non-standard. Not everyone will want to use the simple libraries. In addition there are now three other convenience libraries that have been created. The propeller-gcc built-in libraries (and documentation) contain the minumum building blocks necessary to do the job for those with sufficient skill and knowledge.

    Spin will be useful for a subset of GCode, etc.... It is not necessary for an entire interpreter to be written in PASM; that is, only key parts need to be in PASM. There is no guarantee everything will fit though. And yes, by the Spin/PASM method, speed will not be an issue for those with sufficient skill and knowledge.
  • idbruceidbruce Posts: 6,197
    edited 2014-06-01 08:27
    LOL At first, I thought that was a "Nice !" comment. Okay, so my path is filled with RICE. Maybe this will entice Loopy :) Just kidding Loopy :)
  • idbruceidbruce Posts: 6,197
    edited 2014-06-01 09:04
    jazzed
    There is no guarantee everything will fit though.

    Your comment makes me wonder whether I am seeing the whole picture, because the way I see it, it should not be a problem.
    • The size of the parser itself should be almost negligible
    • I have not studied the necessary computational code (linear interpolation only), so I am afraid to guess at it's size, but I would guess it is simply a formula that requires certain parameters
    • The results of the computations will be written to either flash memory or SRAM (queue)
    However, I do realize that I will need several objects, such as:
    • SD-MMC_FATEngine.spin
    • SPI Memory Driver.spin
    • FullDuplexSerial.spin
    • Stepper driver object
    • Main object
    • Computation object
    Will I really be cutting it that close?
  • jazzedjazzed Posts: 11,803
    edited 2014-06-01 09:16
    Bruce,

    Well if it doesn't fit, then you can remove the SDCard code and use serial commands only.
    If that doesn't fit, then you can change FullDuplexSerial to SimpleSerial.
    If that doesn't fit, then you can port it to C and use XMM.
Sign In or Register to comment.