!g      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                    ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b cdefghijklmnopqrstuvwxyz{|}~Safe40None0uNone=?MEO-gcodehsStandalone commentgcodehs Empty linesgcodehsParser unhandled linesgcodehsCode 2 (M in M5)gcodehsCode value (81 in G81)gcodehsCode subcode (1 in G92.1)gcodehsCode gcodehsCode gcodehsComment following this CodegcodehsList of  sgcodehsMap of  to pair of 5s indicating lower and upper limits of this parametergcodehsMap of  to gcodehsMap of & to pair of -s indicating lower and upper limits of travelgcodehsMap of & to gcodehs Param lettergcodehs!S parameter - usually spindle RPMgcodehs P parameter gcodehsF parameter - usually feedrate!gcodehs(H paramater - used by tool length offset"gcodehs R parameter#gcodehsX offset for arcs$gcodehsY offset for arcs%gcodehsZ offset for arcs&gcodehs Axis letter'gcodehsX-axis(gcodehsY-axis)gcodehsZ-axis*gcodehsA-axis+gcodehsB-axis,gcodehsC-axis-gcodehsU-axis.gcodehsV-axis/gcodehsW-axis0gcodehs Extruder axis2gcodehs Code class3gcodehsG-code4gcodehsM-code5gcodehsT-code (select tool)6gcodehsStand-alone P-code7gcodehsStand-alone F-code8gcodehsStand-alone S-code;gcodehsReturn ! with each known at zero position>gcodehsConvert ! representation of a code to its 2?gcodehsConvert " representation of an axis to its &@gcodehsConvert " representation of a param to its D "# !$%&,0'1()*+-./25436789:;<=>?@ABCDEFGHIJKLD2543678&,0'1()*+-./"# !$%9:;<= >?@IAEGBCDFHJK LNoneHgcodehsAdd help text to gcodehsTurn  into  gcodehsAll  s known to us]qponlkjihfedcba`_^gmr~}|{zyxwvutsr~}|{zyxwvuts]qponlkjihfedcba`_^gmNoneN'      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      None"#Xgcodehs Pretty-print  using colorsgcodehsPretty-print single   using colorsgcodehs Pretty-print  without colorsgcodehsPretty-print single   without colorsgcodehs Pretty-print  with specified  gcodehsPretty-print single   with specified  None"#[gcodehs!Parse single line of G-code into  gcodehsParse lines of G-code into gcodehs8Parse lines of G-code returning either parsing error or None\      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!       None~,gcodehsState of the Canon interpretergcodehsPositiongcodehsSpeed for travel movesgcodehsSpeed for machining movesgcodehsSelected planegcodehs.Rapid motion to end position specified by AxesgcodehsMachining motiongcodehs Straight probe towards workpeicegcodehs1Set coordinates to provided values without motiongcodehsMovement along arcgcodehsEnd of the programgcodehs!Set feed rate for machining movesgcodehsSet feed rate for travel movesgcodehs Set planegcodehs*Do nothing for specified number of secondsgcodehs Stop spindlegcodehsSet spindle RPMgcodehsEnable mist coolantgcodehsEnable flood coolantgcodehsStop all coolant flows ToolsgcodehsSelect tool by its indexgcodehsPerform tool changegcodehs(Enable tool length compensation Printergcodehs Enable fangcodehs Disable fangcodehs&Set temperature of the specific heatergcodehs-Set temperature and wait for it to be reachedgcodehsCancel all temperature waitsgcodehs$Perform automated bed leveling MiscgcodehsDisable power to motorsgcodehs#Display a message, typically on LCDgcodehsJust a commentgcodehsRotate spindle according to gcodehs%Wait for spindle to reach desired RPMgcodehs4first second coordinates according to selected planegcodehsTool length compensationgcodehs$Tool length compensation is disabledgcodehsBFollowing moves will take into account tool offset from tool tablegcodehsApply dynamic offsetgcodehsXAdd tool offset of the tool specified by the parameter to currently selected tool offsetgcodehs4Some heater with id or Nothing for current / defaultgcodehs&Initial state of the Canon interpretergcodehs+Step Canon interpreter, returning new stategcodehsFully eval list of  commands.#Slow, only useful for testing, use  variant insteadVV NonePgcodehs Travel movegcodehsMachining/drawing movegcodehsProduced by set coordinates gcodehsGiven two states of  interpreter output / or empty list if no line is produced by this .gcodehs Pretty print gcodehs'Travel, drawing or set coordinates movegcodehs Start pointsgcodehs End points None"# (gcodehsTrue if   is a G-code gcodehsTrue if   is a M-code!gcodehsTrue if   is a G{N} code"gcodehsTrue if   has a coordinate in axis a&gcodehsTrue if   contains ' axis'gcodehsTrue if   contains ( axis(gcodehsTrue if   contains ) axis)gcodehsTrue if   contains 0 axis*gcodehsTrue if   contains parameter with +gcodehsGet parameter if defined,gcodehsTrue if  , contains feedrate parameter (e.g. G0 F3000)-gcodehsFilter G-codes.gcodehsFilter M-codes/gcodehsFilter rapid moves0gcodehs Filter moves1gcodehsReplace 2 of   (e.g. for chaning G0 to M0)2gcodehsReplace code value of   (e.g. for chaning G0 to G1)3gcodehsReplace axis with & in   returning new  4gcodehs$Apply function to axis specified by &5gcodehs6Apply function to axes specified by '[AxisDesignator]'6gcodehsTest if Code has X and Y axes7gcodehsApply function to X and Y axes8gcodehsReplace or add axis with & in   returning new  9gcodehsReplace X axis coordnate:gcodehsReplace Y axis coordinate;gcodehsReplace Z axis coordinate<gcodehsReplace E axis coordinate=gcodehs Replace or add X axis coordinate>gcodehs Replace or add Y axis coordinate?gcodehs Replace or add Z axis coordinate@gcodehs Replace or add E axis coordinateAgcodehsReplace parameter with  in   returning new  Bgcodehs!Apply function to parameter with Cgcodehs=Apply function to parameters specified by '[ParamDesignator]'Dgcodehs=Apply function to parameters specified by '[ParamDesignator]'Function gets ParameterDesignator passed as its first argumentEgcodehsReplace or add parameter with  in   returning new  Fgcodehs"Replace feedrate (F parameter) in   returning new  GgcodehsApply function to feedrateHgcodehs"Sum of all axis distances of this  IgcodehsRound x with specified precision+ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI+ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI None{JgcodehsGenerate G CodeKgcodehsGenerate M CodeLgcodehs&Generate S (set spindle feedrate) CodeMgcodehsSet GCode numberNgcodehs Set GCode feedrate (F parameter)OgcodehsSet O axis targetPgcodehsSet P axis targetQgcodehsSet Q axis targetRgcodehsSet O, P coordinates for this CodeSgcodehsSet O, P and Q coordinatesTgcodehs Set G0 and O, P coordinatesUgcodehsSet i, j parameters for this CodeWgcodehsGenerate points on a rectangleXgcodehs Rotate X/Y coordinates by angle byYgcodehs9Generate a list of points laying on a circle with radius r, divides circle in steps number of pointsZgcodehsAs Y with rotated by rin[gcodehsAs Y$ but origin is the same as end point\gcodehs/Join list of GCodes with travel moves inbetween]gcodehs8Join list of drilling GCodes with travel moves inbetween^gcodehsSPrepend codes with tool up command, rapid move to block start and tool down command Prepends upB GCode representing tool moving up before rapid move followed by down! command to move tool down again._gcodehs;Prepend drilling codes with tool up command and rapid moves Prepends upL GCode representing tool moving up before rapid move to start of this block`gcodehsBTake X and Y coordinates of this code and turn it into rapid moveJKLMNOPQRSTUVWXYZ[\]^_`JKLMNOPQRSTUVWXYZ[\]^_` NoneiababNonecgcodehs,Convert code to its canonical representationcdefgcdefgNone"#ԿhgcodehsInterpreter statemgcodehsDefault modalsngcodehsCreate new interpreter stateogcodehsStep   interpreterpgcodehs.Evaluate GCode and return each evaluation stepqgcodehsAConvert all axis coordinates from inches to millimeters if neededrgcodehs8Convert all motion coordinates from relative to absolutesgcodehs5Convert all arc coordinates from relative to absolutetgcodehsReturn True if code is active (present) in modalsugcodehsReturn True if code is a motion comandvgcodehsUpdate code according to current modals then update modals with a resulting codeReturn updated code and modalswgcodehs&Update modal groups according to Code cxgcodehslTake current motion group modal code and update this motion code with missing coordinates of the stored oneygcodehs2Return True if this code contains only coordinateszgcodehs1Update incomplete motion Code with the stored one{gcodehs)Update axes that aren't defined in target|gcodehsUpdate (replace) target axes with from axes}gcodehsUpdate  from this  ~gcodehsUpdate  from gcodehsFully evaluate GCodegcodehs*Evaluate GCode to canonical representationgcodehs5Evaluate GCode to annotated canonnical representationgcodehs)Same as toCanon but result is wrapped in ' according to current interpreter linegcodehs&Evaluate GCode and and apply function f$ to each successfuly evaluated Code<Slow due to list concatenation, use streaming variants from  instead.gcodehsFWalk GCode adding missing axes coordinates according to previous moves For example G0 X1 G0 Y2 G0 Z3%becomes G0 X1 G0 X1 Y2 G0 X1 Y2 Z3also G0 X1 Y2 Z2becomesG0 X1 G0 X1 Y2 Z2hilkjmnopqrstuvwxyz{|}~hilkjmnopqrstuvwxyz{|}~NoneNoneֳ "# !$%&,0'1()*+-./25436789:;<=>?@ABCDEFGHIJKL !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIhijklmnopqrstuvwxyz{|}~NoneٝNone   !!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHItuvwxyz{|}~JKLMNO P P Q R S T U V W X Y Z  [ \ ] ^ _  `    a  b   c d  e f  " g h i i j k l m n o p q r s t u v w x y z { { | } ~                z                                                                                                                             !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKIJLM&gcodehs-0.1.2.0-Jnvllxriiys7Z8i5D9DMkfData.GCode.Ann Data.GCode.THData.GCode.TypesData.GCode.RS274.TypesData.GCode.RS274Data.GCode.PrettyData.GCode.ParseData.GCode.MonadData.GCode.CanonData.GCode.LineData.GCode.UtilsData.GCode.Generate!Data.GCode.Generate.ExamplesMonadData.GCode.Canon.ConvertData.GCode.EvalData.GCode.PipesData.GCode.Pipes.TransformData.GCode.Generate.Examples Data.GCodePipesAnnSrcLinestripAnnotation $fShowAnn$fEqAnn$fOrdAnn $fFunctorAnn genShortcutsgenWriterEndosStylestylePrecision styleColorfulCodeCommentEmptyOthercodeClscodeNumcodeSubcodeAxes codeParams codeCommentGCode ParamLimitsParamsLimitsAxesParamDesignatorSPFHRIJKAxisDesignatorXYZABCUVWELClassGMT PStandalone FStandalone SStandalone allClassesallAxisDesignatorszeroAxesallParamDesignatorsasChars toCodeClasstoAxistoParamclsnumsubaxesaxisparamsparamcomment& emptyCode defaultPrec defaultStyle $fShowClass $fEnumClass $fEqClass $fOrdClass$fShowAxisDesignator$fEnumAxisDesignator$fEqAxisDesignator$fOrdAxisDesignator$fShowParamDesignator$fEnumParamDesignator$fEqParamDesignator$fOrdParamDesignator $fShowCode$fEqCode $fOrdCode $fShowStyle RS274GroupMotionCyclesDistance ArcDistance FeedRateModeSpindleControlCoolantControlStoppingUnitsPlaneToolLengthOffset CutterRadiusLatheDiameterMode OtherModalNonModalUnknownExtruderHeatingCooling PrinterMisc RS274NameUnnamedRapidMoveArcCWArcCCWDwell CubicSpline QuadSplineNURBSXYPlaneZXPlaneYZPlaneUVPlaneWUPlaneVWPlaneInches Millimeters SpindleSyncRigidTapProbeDrillingCycleCBThreadingCycleDrillingCycleCancel DrillingCycleDrillingCycleDwellDrillingCyclePeck BoringCycleBoringCycleDwellAbsoluteRelative ArcAbsolute ArcRelative LatheDiameter LatheRadius InverseTimeUnitsPerMinuteUnitsPerRevolution SpindleOrient SpindleStop SpindleCW SpindleCCWSpindleModeConstantSurfaceSpeedSpindleModeRPM CoolantMist CoolantFlood CoolantStop ToolLengthToolLengthDynamic ToolLengthAddToolLengthCancelPause OptionalPause ProgramEnd PalletChangePalletChangePauseCutterCompensationOffCutterCompensationLeftCutterCompensationDynamicLeftCutterCompensationRightCutterCompensationDynamicRight ToolChangeSetCurrentTool SetToolTableStoredPositionMoveStoredPositionSetToolChangePositionMoveToolChangePositionSetMoveInMachineCoordinatesCoordinateSystemOffsetResetOffsetsParams ResetOffsetsRestoreOffsetsOverridesEnableOverridesDisableFeedRateOverrideSpindleSpeedOverrideAdaptiveFeedControlFeedStopControlExtruderAbsoluteExtruderRelativeSetExtruderTemperatureGetExtruderTemperatureSetExtruderTemperatureAndWaitSetBedTemperatureSetBedTemperatureAndWaitSetChamberTemperatureSetChamberTemperatureAndWaitCancelWaitTemperatureFanOnFanOffGetCurrentPositionDisplayMessageDisableActuators AutoBedLevelGCodeDefdefClsdefNumdefSubdefGroupdefNamedefHelpdefGCDdefGdefMgmgsubmsubhelptoCode makeGroup groupMotion groupPlane groupUnitsgroupCutterRadiusgroupToolLengthOffset groupCycles groupDistancegroupArcDistancegroupLatheDiameterModegroupFeedRateModegroupSpindleControl groupStoppinggroupCoolantControl groupNonModalgroupOtherModal groupExtruder groupHeating groupCoolinggroupPrinterMisc cncGroups printerGroups allGroups groupNamesallCodes $fEqRS274Name$fOrdRS274Name$fShowRS274Name$fEqRS274Group$fOrdRS274Group$fShowRS274Group$fShowGCodeDef $fEqGCodeDef $fOrdGCodeDef isUnnamedisRapidisMoveisArcCWisArcCCWisDwell isCubicSpline isQuadSplineisNURBS isXYPlane isZXPlane isYZPlane isUVPlane isWUPlane isVWPlaneisInches isMillimeters isSpindleSync isRigidTapisProbeisDrillingCycleCBisThreadingCycleisDrillingCycleCancelisDrillingCycleisDrillingCycleDwellisDrillingCyclePeck isBoringCycleisBoringCycleDwell isAbsolute isRelative isArcAbsolute isArcRelativeisLatheDiameter isLatheRadius isInverseTimeisUnitsPerMinuteisUnitsPerRevolutionisSpindleOrient isSpindleStop isSpindleCW isSpindleCCW!isSpindleModeConstantSurfaceSpeedisSpindleModeRPM isCoolantMistisCoolantFlood isCoolantStop isToolLengthisToolLengthDynamicisToolLengthAddisToolLengthCancelisPauseisOptionalPause isProgramEndisPalletChangeisPalletChangePauseisCutterCompensationOffisCutterCompensationLeftisCutterCompensationDynamicLeftisCutterCompensationRight isCutterCompensationDynamicRight isToolChangeisSetCurrentToolisSetToolTableisStoredPositionMoveisStoredPositionSetisToolChangePositionMoveisToolChangePositionSetisMoveInMachineCoordinatesisCoordinateSystemOffsetisResetOffsetsParamsisResetOffsetsisRestoreOffsetsisOverridesEnableisOverridesDisableisFeedRateOverrideisSpindleSpeedOverrideisAdaptiveFeedControlisFeedStopControlisExtruderAbsoluteisExtruderRelativeisSetExtruderTemperatureisGetExtruderTemperatureisSetExtruderTemperatureAndWaitisSetBedTemperatureisSetBedTemperatureAndWaitisSetChamberTemperatureisSetChamberTemperatureAndWaitisCancelWaitTemperatureisFanOnisFanOffisGetCurrentPositionisDisplayMessageisDisableActuatorsisAutoBedLevelunnamedrapidmovearcCWarcCCWdwell cubicSpline quadSplinenURBSxYPlanezXPlaneyZPlaneuVPlanewUPlanevWPlaneinches millimeters spindleSyncrigidTapprobedrillingCycleCBthreadingCycledrillingCycleCancel drillingCycledrillingCycleDwelldrillingCyclePeck boringCycleboringCycleDwellabsoluterelative arcAbsolute arcRelative latheDiameter latheRadius inverseTimeunitsPerMinuteunitsPerRevolution spindleOrient spindleStop spindleCW spindleCCWspindleModeConstantSurfaceSpeedspindleModeRPM coolantMist coolantFlood coolantStop toolLengthtoolLengthDynamic toolLengthAddtoolLengthCancelpause optionalPause programEnd palletChangepalletChangePausecutterCompensationOffcutterCompensationLeftcutterCompensationDynamicLeftcutterCompensationRightcutterCompensationDynamicRight toolChangesetCurrentTool setToolTablestoredPositionMovestoredPositionSettoolChangePositionMovetoolChangePositionSetmoveInMachineCoordinatescoordinateSystemOffsetresetOffsetsParams resetOffsetsrestoreOffsetsoverridesEnableoverridesDisablefeedRateOverridespindleSpeedOverrideadaptiveFeedControlfeedStopControlextruderAbsoluteextruderRelativesetExtruderTemperaturegetExtruderTemperaturesetExtruderTemperatureAndWaitsetBedTemperaturesetBedTemperatureAndWaitsetChamberTemperaturesetChamberTemperatureAndWaitcancelWaitTemperaturefanOnfanOffgetCurrentPositiondisplayMessagedisableActuators autoBedLevel namesToCodes codesToNames codesToGroups codesToDefs codeIsRS274 codeInGroupexplain codeFromName eqClassNumSubdecimatecopyClassNumSub copyClassppGCode ppGCodeLineppGCodeCompactppGCodeLineCompact ppGCodeStyleppGCodeLineStyleppAxes ppAxesMapparseGCodeLine parseGCodeparseOnlyGCode ProgramWriterProgram programCodeunnamed'rapid'move'arcCW'arcCCW'dwell' cubicSpline' quadSpline'nURBS'xYPlane'zXPlane'yZPlane'uVPlane'wUPlane'vWPlane'inches' millimeters' spindleSync' rigidTap'probe'drillingCycleCB'threadingCycle'drillingCycleCancel'drillingCycle'drillingCycleDwell'drillingCyclePeck' boringCycle'boringCycleDwell' absolute' relative' arcAbsolute' arcRelative'latheDiameter' latheRadius' inverseTime'unitsPerMinute'unitsPerRevolution'spindleOrient' spindleStop' spindleCW' spindleCCW' spindleModeConstantSurfaceSpeed'spindleModeRPM' coolantMist' coolantFlood' coolantStop' toolLength'toolLengthDynamic'toolLengthAdd'toolLengthCancel'pause'optionalPause' programEnd' palletChange'palletChangePause'cutterCompensationOff'cutterCompensationLeft'cutterCompensationDynamicLeft'cutterCompensationRight'cutterCompensationDynamicRight' toolChange'setCurrentTool' setToolTable'storedPositionMove'storedPositionSet'toolChangePositionMove'toolChangePositionSet'moveInMachineCoordinates'coordinateSystemOffset'resetOffsetsParams' resetOffsets'restoreOffsets'overridesEnable'overridesDisable'feedRateOverride'spindleSpeedOverride'adaptiveFeedControl'feedStopControl'extruderAbsolute'extruderRelative'setExtruderTemperature'getExtruderTemperature'setExtruderTemperatureAndWait'setBedTemperature'setBedTemperatureAndWait'setChamberTemperature'setChamberTemperatureAndWait'cancelWaitTemperature'fanOn'fanOff'getCurrentPosition'displayMessage'disableActuators' autoBedLevel'genprog generateNamegenerateNameArgs $fEqProgram $fShowProgram CanonState canonPositioncanonTraverseRate canonFeedRate canonPlaneCanonStraightTraverse StraightFeed StraightProbe SetCoordsArcFeed SetFeedRateSetTraverseRate PlaneSelect PauseSeconds SpindleStart SpindleSpeed ToolSelectToolLengthCompensationSetTemperatureSetTemperatureWaitLevelBed DisableMotorsspindleDirectionspindleWaitForSpeed ArcParams arcFirstEnd arcSecondEnd arcFirstAxis arcSecondAxis arcRotationarcAxisEndPointarcAarcBarcCarcUarcVarcWCompensationModeNoCompensation LengthTableDynamicAddHeater HeaterTypeHeatedExtruder HeatedBed HeatedChamber LengthUnit MilliMeters CentiMetersMetersRotationDirection ClockWiseCounterClockWiseSecondsSpeedCutterCompenstationSideXYYZZXUVWUVWinitCanonState stepCanon evalCanon $fShowPlane $fEqPlane $fOrdPlane$fShowCutterCompenstationSide$fEqCutterCompenstationSide$fOrdCutterCompenstationSide$fShowRotationDirection$fEqRotationDirection$fOrdRotationDirection$fShowLengthUnit$fEqLengthUnit$fOrdLengthUnit$fShowHeaterType$fEqHeaterType$fOrdHeaterType $fShowHeater $fEqHeater $fOrdHeater$fShowCompensationMode$fEqCompensationMode$fOrdCompensationMode $fEqArcParams$fShowArcParams$fOrdArcParams $fShowCanon $fEqCanon $fOrdCanon$fShowCanonState$fEqCanonState$fOrdCanonStateLineLineType LineTraverse LineDrawingLineJumptoLines prettyLine $fEqLineType$fShowLineType $fOrdLineType$fEqLine $fShowLine $fOrdLineisGisMisGNhasAxisgetAxisgetAxes getAxesToListhasXhasYhasZhasEhasParamgetParam hasFeedrategcodesmcodesrapidsmoves replaceClass replaceCode replaceAxis modifyAxis modifyAxeshasXYmodifyXYaddReplaceAxisreplaceXreplaceYreplaceZreplaceE addReplaceX addReplaceY addReplaceZ addReplaceE replaceParam modifyParam modifyParamsmodifyParamsWithKeyaddReplaceParamreplaceFeedratemodifyFeedratetravelDistance roundprecs<#>feedxyzxyxyzmovexyijarc rectanglerotcirclecircle' closedCircle travelCattravelCatDrilltravel travelDrills asRapidXYxprog withStatetoCanon ifHasParamifNonEmptyAxesgetParamOrFail isCommentOnlyIPState ipModalGroups ipPositionipLine defaultModalsnewStatestep evalSteps toMillimeters toAbsolutetoAbsoluteArcs codeActiveisMotionupdateCodeAndModals updateModalsupdateFromCurrentModals incomplete!updateIncompleteFromCurrentModalsappendOnlyAxes updateAxesupdateLimitsCode updateLimitseval evalToCanonevalToCanonAnn toCanonAnnevalWith evalWith'totalize $fEqIPState $fShowIPState $fOrdIPState parseProducerparseProducer'withFile pipeToListgcodeToCanonList gcodeToLines gcodePiperunPipe foldedPipe totalizePevalP evalCanonPevalCanonLinesPprettySinkWith prettySink compactSink addNewLine wrapPrinter translateXY translateZrotate scaleFeedratescaleXY allExamplespreamble postamblereturnZsafeZworkZ rapidFeedrate downFeedrateupdownprogramrectangle10mm20mm encoderWheelghc-prim GHC.TypesDoubleChar