<?xml version="1.0" encoding="UTF-8"?>
<ModeConfig version="1">
  <Enabled>1</Enabled>
  <DaughterboardModel>1</DaughterboardModel>
  <LocalDigitalInputCount>2</LocalDigitalInputCount>
  <NetworkDigitalInputCount>4</NetworkDigitalInputCount>
  <HasExternalTempProbe>0</HasExternalTempProbe>
  <MainTempProbe>1</MainTempProbe>
  <ErrorRecoveryEnabled>1</ErrorRecoveryEnabled>
  <EventManagers>
    <EventManager>
      <Type>1</Type>
      <Enabled>1</Enabled>
      <Control>1</Control>
      <ControlId>0</ControlId>
      <Domain>1</Domain>
      <EncoderMode>4</EncoderMode>
      <Offset>0</Offset>
      <Count>1</Count>
      <Period>4963000</Period>
      <AutoPeriodEnabled>0</AutoPeriodEnabled>
      <GateEnabled>0</GateEnabled>
    </EventManager>
    <EventManager>
      <Type>2</Type>
      <Enabled>1</Enabled>
      <Control>2</Control>
      <ControlId>0</ControlId>
      <Domain>1</Domain>
      <EncoderMode>4</EncoderMode>
      <Offset>0</Offset>
      <Count>1</Count>
      <Period>204800000</Period>
      <AutoPeriodEnabled>0</AutoPeriodEnabled>
      <GateEnabled>0</GateEnabled>
    </EventManager>
    <EventManager>
      <Type>2</Type>
      <Enabled>1</Enabled>
      <Control>2</Control>
      <ControlId>0</ControlId>
      <Domain>1</Domain>
      <EncoderMode>4</EncoderMode>
      <Offset>0</Offset>
      <Count>1</Count>
      <Period>204800000</Period>
      <AutoPeriodEnabled>0</AutoPeriodEnabled>
      <GateEnabled>0</GateEnabled>
    </EventManager>
  </EventManagers>
  <Cameras>
    <Camera>
      <Model>2</Model>
      <Capabilities>
        <RamImage>1</RamImage>
        <Prnu>0</Prnu>
        <Fpn>1</Fpn>
        <SpotSort>1</SpotSort>
        <RangeLut8k>1</RangeLut8k>
        <RangeLut16k>1</RangeLut16k>
      </Capabilities>
      <PixelClockFrequency>215040000</PixelClockFrequency>
      <Algorithm>1</Algorithm>
      <Enabled>1</Enabled>
      <IsConnected>1</IsConnected>
      <Control>1</Control>
      <ControlId>0</ControlId>
      <InputCounterSource>2</InputCounterSource>
      <InputCounterSourceId>0</InputCounterSourceId>
      <ReadoutMode>2</ReadoutMode>
      <RamImageEnabled>0</RamImageEnabled>
      <PrnuEnabled>0</PrnuEnabled>
      <FpnEnabled>0</FpnEnabled>
      <Extensions />
      <States>
        <State>
          <Left>0</Left>
          <Top>178</Top>
          <Width>1280</Width>
          <Height>656</Height>
          <XSubsampling>1</XSubsampling>
          <XSubsamplingMode>2</XSubsamplingMode>
          <YSubsampling>1</YSubsampling>
          <YSubsamplingMode>2</YSubsamplingMode>
          <InvertX>0</InvertX>
          <InvertY>0</InvertY>
          <AutoBlackEnabled>0</AutoBlackEnabled>
          <BlackLevel>0</BlackLevel>
          <GainRed>0</GainRed>
          <GainGreen0>0</GainGreen0>
          <GainGreen1>0</GainGreen1>
          <GainBlue>0</GainBlue>
          <GainAnalog>0</GainAnalog>
          <GainDigital>128</GainDigital>
          <KneePoints />
          <ExposureMode>1</ExposureMode>
          <MaxBatchSize>1</MaxBatchSize>
          <Delay>0</Delay>
          <Exposure>400000</Exposure>
          <Gap>4561500</Gap>
          <AutoGapEnabled>1</AutoGapEnabled>
          <AlgorithmEnabled>1</AlgorithmEnabled>
          <Algorithm type="1">
            <Threshold1>10</Threshold1>
            <MinWidth>1</MinWidth>
            <MaxWidth>31</MaxWidth>
            <MinSum>0</MinSum>
            <MaxFound>1600</MaxFound>
            <OutputStage>2</OutputStage>
            <SpotSortInvert>1</SpotSortInvert>
            <SpotSortType>1</SpotSortType>
          </Algorithm>
          <RamImageCount>1</RamImageCount>
        </State>
      </States>
    </Camera>
  </Cameras>
  <Lights>
    <Light>
      <Enabled>1</Enabled>
      <Control>16</Control>
      <ControlId>0</ControlId>
      <Capabilities>
        <PowerControlEnabled>0</PowerControlEnabled>
      </Capabilities>
      <Extensions />
      <States>
        <State>
          <Delay>0</Delay>
          <Exposure>1000</Exposure>
          <Gap>0</Gap>
        </State>
      </States>
    </Light>
  </Lights>
  <Projectors />
  <AnalogOutputs>
    <Analog>
      <Enabled>1</Enabled>
      <Control>2</Control>
      <ControlId>0</ControlId>
      <CalA0>0</CalA0>
      <CalA1>1</CalA1>
      <AnalogOutModel>1</AnalogOutModel>
    </Analog>
  </AnalogOutputs>
  <DigitalOutputs>
    <Digital>
      <Enabled>0</Enabled>
      <Control>1</Control>
      <ControlId>0</ControlId>
      <Polarity>1</Polarity>
      <Delay>0</Delay>
      <Exposure>0</Exposure>
      <Gap>0</Gap>
    </Digital>
    <Digital>
      <Enabled>0</Enabled>
      <Control>1</Control>
      <ControlId>0</ControlId>
      <Polarity>1</Polarity>
      <Delay>0</Delay>
      <Exposure>0</Exposure>
      <Gap>0</Gap>
    </Digital>
  </DigitalOutputs>
  <SerialOutputs>
    <Serial>
      <Enabled>0</Enabled>
      <Control>2</Control>
      <ControlId>0</ControlId>
      <Mode>1</Mode>
      <BitRate>115200</BitRate>
    </Serial>
  </SerialOutputs>
  <Encoder>
    <SnapshotSource>4</SnapshotSource>
    <SnapshotSourceId>0</SnapshotSourceId>
  </Encoder>
  <Pipe>
    <Engine>1</Engine>
    <ThreadCount>1</ThreadCount>
    <QueueCapacity>16777216</QueueCapacity>
    <MaxQueueSize>16777216</MaxQueueSize>
    <MaxQueueCount>4096</MaxQueueCount>
    <UserBlockTypes>
      <Type>
        <Name>kInvertBlock</Name>
        <Description>Allows the kImage pixel values of the message to be inverted when inversion is enabled.</Description>
      </Type>
      <Type>
        <Name>kForwardBlock</Name>
        <Description>Forwards messages from input port N to output port N.</Description>
      </Type>
      <Type>
        <Name>GvSurfaceBoundingBoxBlock</Name>
        <Description>Surface bounding box measurements</Description>
      </Type>
      <Type>
        <Name>GvSurfaceCSHoleBlock</Name>
        <Description>Surface bounding box measurements</Description>
      </Type>
      <Type>
        <Name>GvSurfaceRivetBlock</Name>
        <Description>Surface rivet tool</Description>
      </Type>
      <Type>
        <Name>GvSurfaceSliceBlock</Name>
        <Description>Surface rotation</Description>
      </Type>
      <Type>
        <Name>GvSurfaceEdgeFilterBlock</Name>
        <Description>Surface edge enhancing filter</Description>
      </Type>
      <Type>
        <Name>GvSurfacePositionBlock</Name>
        <Description>Surface position measurements</Description>
      </Type>
      <Type>
        <Name>GvSurfacePlaneBlock</Name>
        <Description>Surface bounding box measurements</Description>
      </Type>
      <Type>
        <Name>GvSurfaceRadialBlock</Name>
        <Description>Surface Radial Inspection</Description>
      </Type>
      <Type>
        <Name>GvSurfaceEllipseBlock</Name>
        <Description>Surface ellipse measurements</Description>
      </Type>
      <Type>
        <Name>GvSurfaceEdgeBlock</Name>
        <Description>Surface edge measurements</Description>
      </Type>
      <Type>
        <Name>GvSurfaceOpeningBlock</Name>
        <Description>Surface hole location</Description>
      </Type>
      <Type>
        <Name>GvPartEdgeSmoothBlock</Name>
        <Description>Surface bounding box measurements</Description>
      </Type>
      <Type>
        <Name>GvSurfaceAlignBlock</Name>
        <Description>Surface plane alignment</Description>
      </Type>
      <Type>
        <Name>GvSurfaceResampleBlock</Name>
        <Description>Resample raw surface data to height map</Description>
      </Type>
      <Type>
        <Name>GvPartMatchBoxBlock</Name>
        <Description>Bounding box part matching</Description>
      </Type>
      <Type>
        <Name>GvPartMatchBlock</Name>
        <Description>Match edges</Description>
      </Type>
      <Type>
        <Name>GvSurfaceSubsampleBlock</Name>
        <Description>GvSurfaceSubsample</Description>
      </Type>
      <Type>
        <Name>GvSurfaceRotationBlock</Name>
        <Description>Surface rotation</Description>
      </Type>
      <Type>
        <Name>GvSurfaceGapFillBlock</Name>
        <Description>Surface filter</Description>
      </Type>
      <Type>
        <Name>GvSurfaceFilterBlock</Name>
        <Description>Surface filter</Description>
      </Type>
      <Type>
        <Name>GvSurfaceMultiFilterBlock</Name>
        <Description>GvSurfaceMultiFilter</Description>
      </Type>
      <Type>
        <Name>GvGateBlock</Name>
        <Description>Performs gating.</Description>
      </Type>
      <Type>
        <Name>GvInputGateBlock</Name>
        <Description>Performs input gating.</Description>
      </Type>
      <Type>
        <Name>GvMergeSampledBlock</Name>
        <Description>Combines multiple resampled profiles into a single array</Description>
      </Type>
      <Type>
        <Name>GvCombineFramesBlock</Name>
        <Description>Frame combiner block</Description>
      </Type>
      <Type>
        <Name>GvSpotFilterBlock</Name>
        <Description>Gocator transform block</Description>
      </Type>
      <Type>
        <Name>GvProfileClipBlock</Name>
        <Description>Profile clipper</Description>
      </Type>
      <Type>
        <Name>GvMeasurementStatsBlock</Name>
        <Description>Measurement mean, standard deviation, minimum, and maximum</Description>
      </Type>
      <Type>
        <Name>GvInvertImageBlock</Name>
        <Description>Gocator invert image block</Description>
      </Type>
      <Type>
        <Name>GvPartSelectorBlock</Name>
        <Description>Surface part selector block</Description>
      </Type>
      <Type>
        <Name>GvSorterBlock</Name>
        <Description>Receives frames from multiple inputs and outputs sequences in numerical order.</Description>
      </Type>
      <Type>
        <Name>GvSeqBlock</Name>
        <Description>Gocator sequencing block</Description>
      </Type>
      <Type>
        <Name>GvBandwidthFilterBlock</Name>
        <Description>Bandwidth Filter</Description>
      </Type>
      <Type>
        <Name>GvProfileMergeBlock</Name>
        <Description>Combines multiple raw profiles into a single array</Description>
      </Type>
      <Type>
        <Name>HdrBlock</Name>
        <Description>Create HDR image</Description>
      </Type>
      <Type>
        <Name>ProfileFilterBlock</Name>
        <Description>ProfileFilter</Description>
      </Type>
      <Type>
        <Name>GvSurfaceStudBlock</Name>
        <Description>Surface Stud Location</Description>
      </Type>
      <Type>
        <Name>MergeSampledBlock</Name>
        <Description>Combines multiple resampled profiles into a single array</Description>
      </Type>
      <Type>
        <Name>GvSurfaceVolumeBlock</Name>
        <Description>Surface volume, area, and thickness measurements</Description>
      </Type>
      <Type>
        <Name>GvForwardBlock</Name>
        <Description>Gocator forward block</Description>
      </Type>
      <Type>
        <Name>GvTransformBlock</Name>
        <Description>Gocator transform block</Description>
      </Type>
      <Type>
        <Name>GvStripeBlock</Name>
        <Description>Gocator stripe stereo block</Description>
      </Type>
      <Type>
        <Name>GvProfileAlignStationaryBlock</Name>
        <Description>Performs 2D tilt and offset correction using a calibration bar</Description>
      </Type>
      <Type>
        <Name>GvProfileAlignBarBlock</Name>
        <Description>Performs 2D tilt, offset correction and establishes object travel resolution using a bar calibration target</Description>
      </Type>
      <Type>
        <Name>GvProfileResampleBlock</Name>
        <Description>Resamples raw profile data to an even X interval</Description>
      </Type>
      <Type>
        <Name>GvProfileMatchBlock</Name>
        <Description>Aligns profile data to a captured template</Description>
      </Type>
      <Type>
        <Name>GvProfileSurfaceBlock</Name>
        <Description>Produce a surface from profiles</Description>
      </Type>
      <Type>
        <Name>GvProfileDualDriftBlock</Name>
        <Description>GvProfileDualDrift</Description>
      </Type>
      <Type>
        <Name>GvProfileDualMergeBlock</Name>
        <Description>GvProfileDualMerge</Description>
      </Type>
      <Type>
        <Name>GvProfileAlignDiskBlock</Name>
        <Description>Performs 2D tilt, offset correction and establishes object travel resolution using a disk calibration target</Description>
      </Type>
      <Type>
        <Name>GvRangeProfileBlock</Name>
        <Description>Produce a profile from ranges</Description>
      </Type>
      <Type>
        <Name>GvRangeMeasureBlock</Name>
        <Description>Range measurements</Description>
      </Type>
      <Type>
        <Name>GvProfileBlock</Name>
        <Description>Converts spot data into ranges</Description>
      </Type>
      <Type>
        <Name>GvRangePartBlock</Name>
        <Description>Produce 1D parts from ranges</Description>
      </Type>
      <Type>
        <Name>GvRangeAlignMovingBlock</Name>
        <Description>Performs z offset correction and establishes object travel resolution using a bar calibration target</Description>
      </Type>
      <Type>
        <Name>GvProfileFillBlock</Name>
        <Description>GvProfileFill</Description>
      </Type>
      <Type>
        <Name>GvProfileSubsampleBlock</Name>
        <Description>GvProfileSubsample</Description>
      </Type>
      <Type>
        <Name>GvProfileGapFillBlock</Name>
        <Description>GvProfileGapFill</Description>
      </Type>
      <Type>
        <Name>GvProfileSmoothingBlock</Name>
        <Description>GvProfileSmoothing</Description>
      </Type>
      <Type>
        <Name>GvProfileFilterBlock</Name>
        <Description>GvProfileFilter</Description>
      </Type>
      <Type>
        <Name>GvProfileMultiFilterBlock</Name>
        <Description>GvProfileMultiFilter</Description>
      </Type>
      <Type>
        <Name>GvRangeAlignStationaryBlock</Name>
        <Description>Performs range offset correction</Description>
      </Type>
      <Type>
        <Name>GvProfilePartSeqBlock</Name>
        <Description>Arranges multiple resampled profiles into format compatible with PartMeasureBlock</Description>
      </Type>
      <Type>
        <Name>GvProfileXLineBlock</Name>
        <Description>Performs XLine range finding</Description>
      </Type>
      <Type>
        <Name>GvProfileStripBlock</Name>
        <Description>Finds flat strips</Description>
      </Type>
      <Type>
        <Name>GvProfile1DPartBlock</Name>
        <Description>Produce 1D parts a profile</Description>
      </Type>
      <Type>
        <Name>GvPartModelBlock</Name>
        <Description>Find and save part edges</Description>
      </Type>
      <Type>
        <Name>GvProfilePPartBlock</Name>
        <Description>Produce profile parts from a profile</Description>
      </Type>
      <Type>
        <Name>GvSurfacePartBlock</Name>
        <Description>Segment contiguous parts from surface</Description>
      </Type>
      <Type>
        <Name>GvProfilePartBlock</Name>
        <Description>Segment contiguous parts from profiles</Description>
      </Type>
      <Type>
        <Name>GvProfileBridgeValueBlock</Name>
        <Description>Calculate bridge value</Description>
      </Type>
      <Type>
        <Name>GvProfileDimensionBlock</Name>
        <Description>Finds the position of a feature in a profile</Description>
      </Type>
      <Type>
        <Name>GvProfileDifferenceBlock</Name>
        <Description>Finds the maximum or area of the difference between a profile and the corresponding template.</Description>
      </Type>
      <Type>
        <Name>GvProfileAreaBlock</Name>
        <Description>Finds the area of a region of the profile</Description>
      </Type>
      <Type>
        <Name>GvProfileCircleBlock</Name>
        <Description>Performs a circle fit on designated regions within one or two profiles</Description>
      </Type>
      <Type>
        <Name>GvProfileBoxBlock</Name>
        <Description>Bounding box of profile data</Description>
      </Type>
      <Type>
        <Name>GvProfilePositionBlock</Name>
        <Description>Finds the position of a feature in a profile</Description>
      </Type>
      <Type>
        <Name>GvProfileLineBlock</Name>
        <Description>Determines the deviation of profile points from a line</Description>
      </Type>
      <Type>
        <Name>GvProfilePanelBlock</Name>
        <Description>Gap and flush measurement</Description>
      </Type>
      <Type>
        <Name>GvProfileGrooveBlock</Name>
        <Description>Finds and measures grooves in profiles</Description>
      </Type>
      <Type>
        <Name>GvProfileIntersectBlock</Name>
        <Description>Finds the intersection of two lines</Description>
      </Type>
      <Type>
        <Name>GvProfilePlotBlock</Name>
        <Description>ProfilePlot</Description>
      </Type>
      <Type>
        <Name>kVsPrnuBlock</Name>
        <Description>Performs pixel-by-pixel correction</Description>
      </Type>
      <Type>
        <Name>kS3dStripeBlock</Name>
        <Description>Stripe stereo profiling block</Description>
      </Type>
      <Type>
        <Name>kVsRateLimitBlock</Name>
        <Description>Limits message rate by only passing 1 in divisor messages</Description>
      </Type>
      <Type>
        <Name>kL3dRangesBlock</Name>
        <Description>Translates spots data into ranges</Description>
      </Type>
      <Type>
        <Name>kL3dLineSamplerBlock</Name>
        <Description>Resamples input point cloud range data from one or multiple views to an even X step</Description>
      </Type>
      <Type>
        <Name>kMp3dTracheidBlock</Name>
        <Description>Converts spots centroid values into image moments and ranges</Description>
      </Type>
      <Type>
        <Name>kL3dSpotsBlock</Name>
        <Description>Translates Image, FpgaSpot, FpgaCG and FpgaCG2 to kSpot</Description>
      </Type>
      <Type>
        <Name>kL3dLineCalBlock</Name>
        <Description>Assembles spot data from multiple lines and views into a single formatted 2D array</Description>
      </Type>
      <Type>
        <Name>kL3dDetectionBlock</Name>
        <Description>Accumulates live range data into an evenly resampled height map</Description>
      </Type>
      <Type>
        <Name>GsRangeDetectorBlock</Name>
        <Description>Range Detector</Description>
      </Type>
      <Type>
        <Name>GsTestBlock</Name>
        <Description>Gocator test block</Description>
      </Type>
      <Type>
        <Name>GsToolBlock</Name>
        <Description>Tool Runner</Description>
      </Type>
      <Type>
        <Name>GsMeasurementFilterBlock</Name>
        <Description>Measurement Filter</Description>
      </Type>
    </UserBlockTypes>
    <UserBlocks>
      <Block>
        <Id>0</Id>
        <Name>RangeDetector-0</Name>
        <Type>GsRangeDetectorBlock</Type>
        <IsGrouped>0</IsGrouped>
        <GroupId>0</GroupId>
        <Settings>
          <MaxSpotCount>1280</MaxSpotCount>
          <IsZSet>0</IsZSet>
          <ZScale>0</ZScale>
          <Z>0</Z>
          <Depth>0</Depth>
          <PersistentLed>0</PersistentLed>
        </Settings>
        <Ports>
          <Ports>
            <Id>0</Id>
            <Name>Input</Name>
            <Direction>1</Direction>
          </Ports>
        </Ports>
      </Block>
      <Block>
        <Id>1</Id>
        <Name>Resample-1</Name>
        <Type>GvProfileResampleBlock</Type>
        <IsGrouped>0</IsGrouped>
        <GroupId>0</GroupId>
        <Settings>
          <FOV>
            <X>-49.984</X>
            <Z>-40</Z>
            <Width>100.012</Width>
            <Depth>80</Depth>
          </FOV>
          <DataOrigin>
            <X>0.022</X>
            <Z>0</Z>
          </DataOrigin>
          <XResolution>0.0016</XResolution>
          <ZResolution>0.0014</ZResolution>
          <XStep>0.044</XStep>
          <TriggerSource>0</TriggerSource>
          <YStep>0.4846679687</YStep>
          <EncoderRes>0</EncoderRes>
          <FrameRate>206.3268185</FrameRate>
          <ReduceOutput>1</ReduceOutput>
          <IntensityEnabled>0</IntensityEnabled>
          <IsBottom>0</IsBottom>
          <XGapMax>0</XGapMax>
          <FillAllAdjacent>0</FillAllAdjacent>
          <XThreshold>0.1504</XThreshold>
          <InterpolateAngle>45</InterpolateAngle>
        </Settings>
        <Ports>
          <Ports>
            <Id>0</Id>
            <Name>InProfile</Name>
            <Direction>1</Direction>
          </Ports>
          <Ports>
            <Id>1000</Id>
            <Name>OutProfile</Name>
            <Direction>2</Direction>
          </Ports>
          <Ports>
            <Id>1001</Id>
            <Name>OutRanges</Name>
            <Direction>2</Direction>
          </Ports>
          <Ports>
            <Id>1002</Id>
            <Name>OutIntensity</Name>
            <Direction>2</Direction>
          </Ports>
          <Ports>
            <Id>2000</Id>
            <Name>OutPlot</Name>
            <Direction>2</Direction>
          </Ports>
        </Ports>
      </Block>
    </UserBlocks>
    <Routes>
      <Route sourceBlock="32768" sourcePort="0" destBlock="0" destPort="0" />
      <Route sourceBlock="32768" sourcePort="0" destBlock="1" destPort="0" />
      <Route sourceBlock="1" sourcePort="1001" destBlock="36864" destPort="1" />
      <Route sourceBlock="32768" sourcePort="0" destBlock="36864" destPort="0" />
    </Routes>
  </Pipe>
  <Actions>
    <ActionTypes>
      <Type>
        <Name>kStartAction</Name>
        <Description>Starts the local node or the entire system of nodes.</Description>
      </Type>
      <Type>
        <Name>kL3dLutAction</Name>
        <Description>Write FPGA lut using L3d calibration file.</Description>
      </Type>
      <Type>
        <Name>kP3dLutAction</Name>
        <Description>Write FPGA lut using P3d calibration file.</Description>
      </Type>
      <Type>
        <Name>kVsPrnuAction</Name>
        <Description>Perform pixel - by - pixel correction using PRNU calibration file.</Description>
      </Type>
      <Type>
        <Name>kVsFpnAction</Name>
        <Description>Write FPN using FPN calibration file.</Description>
      </Type>
      <Type>
        <Name>kEthernetTestStartAction</Name>
        <Description>Start Ethernet test</Description>
      </Type>
      <Type>
        <Name>kSerialOutTestStopAction</Name>
        <Description>Stop kSerialOut test</Description>
      </Type>
      <Type>
        <Name>kSerialOutTestStartAction</Name>
        <Description>Start kSerialOut test</Description>
      </Type>
      <Type>
        <Name>kEthernetTestStopAction</Name>
        <Description>Stop Ethernet test</Description>
      </Type>
    </ActionTypes>
    <Actions />
  </Actions>
  <Net>
    <DataOut>
      <PortCount>2</PortCount>
      <QueueCapacity>8388608</QueueCapacity>
      <MaxQueueSize>8388608</MaxQueueSize>
      <MaxQueueCount>4096</MaxQueueCount>
    </DataOut>
    <DataIn>
      <Ports />
    </DataIn>
    <Health />
  </Net>
</ModeConfig>
