Introduction

This user guide covers Njord's two main products:

  • Njord Analytics, a web-based sailing analytics app
  • Njord Player, a PC and Mac app to combine video and data for a visual debriefing of your sailing day

Njord Analytics and Njord Player work well together, and some aspects work very similar in both apps. See Loading Boat Data.

For help with your user account, see Your Njord Account.

Make sure to use the search feature of this user guide (loupe icon above) to find relevant sections.

Getting More Help

In case this document does not answer your question, please contact us.

Your Njord Account

To use either Njord Analytics or Njord Player, you need a Njord user account which is tied to your email address.

Login Form

Signing Up

  1. Visit app.sailnjord.com/login and select Sign Up
  2. Enter your email address and a password of your choice
  3. You will receive an email with a confirmation code
  4. Enter this code in the signup form to complete the signup

When signing up fails, you may already have a user account with that email address, perhaps because someone invited you a while ago. In that case, try resetting your password (see below).

In Case You Don't Remember Your Password

  1. Visit app.sailnjord.com/login and select Reset Password
  2. Enter your email address and click Reset Password
  3. You will receive an email with a confirmation code
  4. Enter this code and a new password of your choice to complete the password reset

Overview

Njord Analytics and Njord Player support the same types of files for loading data, and the process to load data looks the same in both Njord Analytics and Njord Player.

You can find the full list of supported data types at www.sailnjord.com/data-sources.

Metrics

Below is a list of all standard Njord metric names. These have special meaning in the software, are used to calculate derived metrics, and some features are only enabled when these metrics are present.

When loading data from any data source, we will rename data to match these standard metrics. When importing data in CSV format, name the CSV columns to match the metric names below for the best experience.

Depending on the data source, you can include any number of additional metrics with custom names. They will all be shown in the software, but don't carry any special meaning.

NameDescriptionUnitCalculated
AWAApparent wind angledegrees
AWA_AbsApparent wind angle (absolute)degreesyes
AWSApparent wind speedknots
BelowLineDistance from boat's bow to start line (perpendicular), from log filemeters
BelowLineCalcBelowLine, calculated from start line entered for racemetersyes
BoatSpeed (BSP)Boat speed (speed through water)knots
BoatSpeedPercOfPolar (Polar%)percentyes
BoatSpeedPercOfTarget (BSP%)percentyes
COGCourse over ground (true or magnetic)degrees
COG_MagCourse over ground (magnetic)degreesyes
COG_TrueCourse over ground (true)degreesyes
CurrentDirectionDirection of current (set)degrees
CurrentSpeedSpeed of current (drift)knots
Foiling1 if foiling, 0 if not foiling
Forestay
HeadingHeading (true or magnetic)degrees
Heading_MagHeading (magnetic)degreesyes
Heading_TrueHeading (true)degreesyes
HeelHeel (roll)degrees
Heel_AbsHeel (absolute)degreesyes
Heel_LwdHeel to leewarddegreesyes
LatLatitude (as recorded)degrees
LatBowLatitude of boat's bowdegreesyes
LatCenterLatitude of the center of the boatdegreesyes
LatSternLatitude of boat's sterndegreesyes
Leewaydegrees
LonLongitude (as recorded)degrees
LonBowLongitude of boat's bowdegreesyes
LonCenterLongitude of the center of the boatdegreesyes
LonSternLongitude of boat's sterndegreesyes
MagneticVariationdegreesyes
PolarBoatSpeedknotsyes
PortlatLatitude of port / pin end of linedegrees
PortlonLongitude of port / pin end of linedegrees
ROTRate of turndegrees per secondyes
RudderRudderdegrees
Rudder_AbsRudder (absolute)degreesyes
Rudder_LwdRudder to leewarddegreesyes
SOGSpeed over groundknots
StbdlatLatitude of starboard / RC end of linedegrees
StbdlonLongitude of starboard / RC end of linedegrees
TargetBoatSpeedknotsyes
TargetForestayyes
TargetHeeldegreesyes
TargetRudderdegreesyes
TargetTrimdegreesyes
TargetTWAdegreesyes
TargetTWADeltadegreesyes
TargetVMGknotsyes
Target<Anything>Target for any other <Anything> metric
TimeLocalSeconds since midnight (local time)secondsyes
TimeToBurnseconds
TimeToGunTime to gun, from log fileseconds
TimeToGunCalcTime to gun, calculated from race start timesecondsyes
TimeToLineseconds
TimeUTCSeconds since midnight (UTC)secondsyes
TrimTrim (pitch)degrees
Trim_Absdegreesyes
TWATrue wind angledegrees
TWA_Absdegreesyes
TWDTrue wind directiondegrees
TWSTrue wind speedknots
VMCVelocity made on courseknotsyes
VMGVelocity made goodknotsyes
VMGPercOfTarget (VMG%)percentyes
XTECross track errormetersyes
Yawdegrees

Formulas

The formula syntax below can be used to add calculated variables when loading data:

  • In the upload screen in Njord Player or Njord Analytics
  • In Njord Analytics, modify already uploaded data by selecting the uploaded data segment (Data section), and select Process
  • In Njord Analytics, configure one or more formulas to be applied every time data is uploaded to a certain boat. Set this up under Boat - Settings - Process

Examples

FormulaDescription
Heading - COGDifference between Heading and COG
DELTAPERSEC(UNWRAP(Heading))Rate of turn in degrees per second
DELTAPERSEC(BoatSpeed) * 60Acceleration in knots per minute
BoatSpeed / -(FILTER(DELTASEC(BoatSpeed, 10), DELTASEC(BoatSpeed, 10) < 0) / 10)When decelerating, how many seconds to zero knots at current 10 second deceleration average
INTERPOLATED(SERIES("2022-10-01T08:00+02:00", 10, "2022-10-01T11:00+02:00", 14))This could be TWS rising from 10 kts at 8 am to 14 kts at 11 am, for example

Operators

OperatorDescriptionNotes
+Addition
-Subtraction
*Multiplication
/Division
<Less thanTo be used with FILTER()
<=Less than equalTo be used with FILTER()
>Greater thanTo be used with FILTER()
>=Greater than equalTo be used with FILTER()
==EqualsTo be used with FILTER()
!=Not equalsTo be used with FILTER()
&Logical andTo be used with FILTER()
\|Logical orTo be used with FILTER()
!NegateTo be used with FILTER()

Functions

FunctionDescription
ABS(value)Absolute of value / remove sign
MIN(value1, value2)Minimum of two values
MAX(value1, value2)Maximum of two values
MOD(a, n)Modulo operation
SIN(value)Sine of value (which is expected to be in degrees)
COS(value)Cosine of value (which is expected to be in degrees)
ARCTAN2(x, y)Element-wise arc tangent (in degrees) of x/y choosing the quadrant correctly.
FILTERPORT(value)Retains the value only on port tack (AWA between -170 and -10)
FILTERSTBD(value)Retains the value only on starboard tack (AWA between 10 and 170)
COALESCE(value1, value2)Choose value1 if it's not empty, else value2
SELECTPORTSTBD(valuePort, valueStbd)Select valuePort when sailing on port tack, valueStbd on starboard tack
UNWRAP(value)Removes wrap at 0/360 degrees, instead expands value below 0 or above 360 as needed for safe calculations
SHIFT(value, rows)Shifts value (series) by given number of rows
SHIFTSEC(value, seconds)Shifts value (series) by given number of seconds
DELTASEC(value, seconds)Delta of value compared to second seconds ago
DELTAPERSEC(value)Delta of value compared to previous datapoint, divided by number of seconds since last datapoint
ROLLINGMEAN(value, seconds)Rolling mean over second seconds
ROLLINGSUM(value, seconds)Rolling sum over second seconds
FILTER(value, mask)Filters value using the given mask, returning empty value where the mask is false
INTERPOLATED(value)Fill blanks between values by linear interpolation
INTERPOLATEDBEARING(value)Fill blanks between values by linear interpolation, correctly handling 0/360 degree wrap around
SERIES(time1, value1, time2, value2, ...)Produces a data series with the given values at the given times. Write times in ISO 8601 format with quotes, like "2022-10-01T10:00+02:00". Use with INTERPOLATED().
TWA(awa, aws, sog)Calculates true wind angle from apparent wind and SOG/boat speed
TWS(awa, aws, sog)Calculates true wind speed from apparent wind and SOG/boat speed
AWA(twa, tws, sog)Calculates apparent wind angle from true wind and SOG/boat speed
AWS(twa, tws, sog)Calculates apparent wind speed from true wind and SOG/boat speed

Note: all function names are case insensitive and may be written in lower case too.

Frequently Asked Questions

Is there a smoothing function for wind data? E.g. 5s, 10s, 15s, 30s averaging of wind coming from dinghy masts to remove noise?

When loading data and adding a wind data file (set file purpose: "Wind Data"), go to the file settings panel via the Info symbol in the uploaded files list. You can enter a custom amount of damping (in seconds) there.

Enter Damping for Wind Data

Overview

Njord Analytics is a web-based application that can be used from any modern browser and operating system. You can upload boat log data from anywhere, and share with your team.

To launch Njord Analytics, visit the following URL: https://app.sailnjord.com

To get started, follow these guides:

Upload Boat Data and First Analytics Steps

This tutorial shows how to upload a log file to Njord Analytics, and provides a first glance at some of the visualization options available.

Step 1

Navigate to https://app.sailnjord.com/

Step 2

Click "Data"

Step 3

Click "Create Boat" if you haven't done this yet

Step 4

Enter the name of your boat and the boat class

Step 5

Click "Create"

Step 6

Click "Upload"

Step 7

Click "Add Files…"

Tip: Learn more about supported data sources at https://www.sailnjord.com/data-sources/

Step 8

Verify that the detected data time range matches what you expect

Step 9

Click "Upload Data" and wait for the data to be processed

Step 10

Click "Create new Event with Your Boat"

Step 11

Enter a name for the event and adjust the start/end date if necessary

Step 12

Click "Create"

Step 13

Training and Race times will be copied to the new event automatically. Click on "Race 1" or "Training" to view the uploaded data.

Step 14

Choose from the available visualizations, such as the map view

Step 15

Choose a second view type to show side by side

Step 16

To highlight a range of data, click on the track of the boat (this also works in the line chart, for example)

Step 17

Click again to mark the end of the highlighted time range

Step 18

Repeat as necessary to highlight more time ranges

Step 19

Click "Damping" to enable damping

Step 20

Click the plus button to add more variables

Step 21

Select a variable you'd like to add to the line chart

Step 22

Click and drag the handle to zoom into the line chart

Step 23

Select the "Statistics" view to see detailed stats for the highlighted time ranges

Step 24

Statistics shown include average, minimum and maximum values. Click "Settings" to show more variables.

Tip: Learn more about available visualization types at https://app.sailnjord.com/help/analytics/visualizations.html

Analytics Visualization Types

Njord Analytics offers a variety of different visualization types which are available in different contexts, depending on the required data and the nature of the visualization.

Table

Menu item for view type: table

Available In Entire Day, individual races/trainings

Displays a tabular view showing data at configurable time intervals.

View type: table

Table Configuration Options

  • Interval: determines the time interval of rows displayed in the table; starting at the start time of the selected race, training or day.
  • Displayed Metrics: determines the columns displayed in the table
  • Show Averages: when selected, displays the average (mean) of values in the interval preceding each row's timestamp. Otherwise, the momentary value at each row's timestamp is displayed (using interpolation, if required).
  • Exclude Maneuvers: when selected, excludes data before and after maneuvers (configurable in the boat's filter settings).

Line Chart

Menu item for view type: line chart

Available In Entire Day, individual races/trainings

Displays a line chart (strip chart) of one or more metrics for the selected time range.

Where targets are available, they are automatically shown as a grey line together with the the main variable (e.g. BoatSpeed and TargetBoatSpeed).

Hover over the chart to highlight a point in time and get an instant reading at that time.

Click and drag on the chart area to create one or more highlighted time ranges. An instant average is shown. Click the save icon at the bottom of the area to save the highlighted time range as a new training.

Click on the +/- buttons or use the slider at the bottom of the view to zoom into the chart.

Note that for bearing metrics like TWD, COG, or Heading, a continuous line is drawn where the value wraps around 0/360 degrees. The Y axis may span more than 360 degrees in case of multiple consecutive "turns" of the bearing value.

View type: line chart

Line Chart Configuration Options

  • Select one or more metrics, which will be shown as a vertical stack of individual line charts
  • Damping: applies damping to the data with a damping/moving average window size of 1/100th of the displayed time range.

Scatter Chart

Menu item for view type: scatter chart

Available In Entire Day, Only Races, Aggregate all Dates in Event, individual races/trainings, Performance Database

Displays a scatter chart (X/Y chart) plotting data points by two selected metrics (X and Y axis).

In all modes except the performance database, data is automatically averaged into phases of a specific duration, to achieve a reasonable number of datapoints in the chart.

Hover over a data point to see a tooltip with exact values and the corresponding timestamp / phase duration.

View type: scatter chart

Scatter Chart Configuration Options

  • X and Y metric: determine which metrics are used to plot points in the chart
  • Fit Curve: overlays a polynomial fit of the chosen order onto each data series, which may help indentify trends in a dataset or compare different datasets (port vs. starboard or different boats)
  • Targets: displays a purple line showing the targets for the chosen Y metric (select TWS as the X metric). Targets can be either from the log file itself, or from a polar/targets configured for the boat.
  • Performance Database: adds data series for comparison from the boat's performance database
  • Color by Tack: breaks down the data points into separate port/starboard data series for comparison
  • Highlight Top VMG%: adds a yellow highlight to all data points whose VMG% (percentage of VMG target) lies within the top 10 percentiles of VMG% of the entire dataset
  • Exclude Maneuvers: excludes any data points that lie before and after maneuvers (configurable in the boat's filter settings)
  • Filter: define additional filters to narrow the data in the chart, e.g. to remove outliers that disturb the analysis

Map

Menu item for view type: map

Available In Entire Day, Only Races, Aggregate all Dates in Event, individual races/trainings

Shows the track of one or more selected boats and any marks of the race/leg on a map.

Use the highlight mode and click on a track twice to mark a time range. You can save this highlighted time range as a new training.

View type: map

Use the distance measurement mode and click on the map twice to highlight and measure a distance and bearing.

Map distance tool

Click on the bearing control to select the "up" orientation of the map. Some options may not be available if either TWD data is missing or a race course has not been entered.

Map bearing

Map Mode: Speed

Click on the speed legend to change which metric is used to color the boat's track.

Map legend

Map Mode: Tactical

In Tactical mode, the width of the track represents true wind speed (TWS, in the range shown in the legend, 10.5 to 17.5 kts in this example), and the color of the track represents shifts in true wind direction (TWD, around the average shown in the legend, 337 deg in this example).

Click on the color legend to select a coloring mode, either port/starboard or lifts/headers.

Map tactical mode

Map Tool: Ladders

When two boats are selected, click on the Ladders button to enable ladders between their tracks (connecting the boat's positions at equal times).

Lineup Ladders Map

Map Tool: Maneuvers

Click on the Maneuvers button to show all analyzable maneuvers on the map, with maneuver loss calculated from average COG/SOG before the maneuver, and when zoomed in, a visualization of the loss calculation. Refer to the maneuver report for more details.

Map View Maneuvers Map View Maneuver Detail

Statistics / Gain Loss

Menu item for view type: Statistics / Gain Loss

Available In Entire Day, Only Races, Aggregate all Dates in Event, individual races/trainings, Performance Database

Displays detailed statistics for selected metrics (average/mean, minimum, maximum, and standard deviation - a measure of the amount of variation of a set of values).

Hover over a value in the Min or Max column to highlight the time when the minimum or maximum value occurred for the specific metric.

Supports comparing multiple boats (primary boat in blue, secondary boat in orange in this example).

Displays a gain/loss analysis for two boats for a selected time range (lineup). Gain is broken down into the forward direction (boat's heading), upward (perpendicular to forward direction), and the resulting gain (VMG, in TWD direction).

Check Combine when selecting multiple races or time ranges to view statistics for the combined data.

Uncheck Exclude maneuvers (settings menu) to include data before/after maneuvers in the statistics.

View type: Statistics / Gain Loss

Targets

Menu item for view type: Targets

Available In Only Races, Aggregate all Dates in Event, individual races/trainings, Performance Database, Entire Day

Requires True wind speed (TWS) data

Displays a performance metric (BoatSpeed in this example) for either Upwind or Downwind data for all available true wind speed (TWS) buckets. The range of those performance metric values (min/max) in each TWS bucket determines the lower and upper end of the colored area.

The bold line represents the average of that data, which may optionally be calculated only from a subset of data in each TWS bucket. For example, you could chose to average only the top 30% of data in each bucket by VMG, which would represent your "best data" and would be suitable to determine more "ambitious" targets for the selected performance metrics, compared to averaging all data in each TWS bucket (adjust the "Percentiles" setting).

Displays targets from configured polars for the selected boat as purple lines for comparison.

View type: Targets

Polar Diagram

Menu item for view type: Polar Diagram

Available In Only Races, Aggregate all Dates in Event, individual races/trainings, Performance Database, Entire Day

Requires True wind angle and speed (TWA/TWS) data

Displays BoatSpeed data relative to true wind angle (TWA) in certain true wind speed (TWS) buckets in a radial diagram.

Two labeled points on each TWS line represent the upwind/downwind angles with best VMG (target boat speed).

Consider limiting the visualization to only a small handful of TWS buckets, especially when comparing different performance database entries, or when comparing port to starboard data (enable Color by Tack in the settings menu), to keep the diagram readable.

Consider increasing the Smoothing setting if you have limited data and lines appear jagged. However, for best results, the more data you can collect the better.

Use the Speed Metric configuration menu to select either BoatSpeed or SOG as the speed metric.

Use the zoom buttons or your mouse wheel to zoom into crowded areas.

View type: Polar Diagram

Use the Download button to download the polar data in one of the supported polar file formats:

  • Expedition
  • B&G
  • Deckman
  • Adrena
  • ORC
  • SailGrib
View type: Polar Diagram

Bin Table

Menu item for view type: Bin Table

Available In Only Races, Aggregate all Dates in Event, individual races/trainings, Performance Database, Entire Day

Groups data into bins (buckets) along two configurable metrics. In each bin, a configurable aggregation is displayed (in this example, the average/mean, and count of values).

You can let a certain number of bins be automatically determined by from the range of data, or enter custom bin boundaries.

View type: Bin Table

Correlation

Menu item for view type: Correlation

Available In Only Races, Aggregate all Dates in Event, individual races/trainings, Performance Database, Entire Day

Explore how various metrics correlate and discover different ways to achieve your best performance in different conditions.

View type: Correlation

Sails / Comments

Menu item for view type: Sails / Comments

Available In Entire Day, individual races/trainings

View type: Sails / Comments

Fleet Race

Menu item for view type: Fleet Race

Available In Only Races, Aggregate all Dates in Event

Requires Races with complete race course (start line, marks, finish line)

Displays the average mark ranks, start line positions and distance sailed / time taken of each boat in the fleet.

A variant of this view is also available for each race individually, in a Fleet Race Report.

View type: Fleet Race

Maneuvers

Menu item for view type: Maneuvers

Available In Only Races, Aggregate all Dates in Event, individual races/trainings, Entire Day

Displays a table of maneuvers of the selected maneuver type (tacks, gybes, turn ups, bear aways). The line chart(s) below show the values of selected Line Chart Metrics superimposed and aligned around the time of each maneuver (head to wind or TWA = 0, unless configured otherwise). Click on any maneuver to highlight it in the charts and table.

View type: Maneuvers

Calibration

Menu item for view type: Calibration

Available In Only Races, Aggregate all Dates in Event, individual races/trainings, Entire Day, Performance Database

Displays statistics to help with the calibration of the following instruments:

Speed Transducer/Paddlewheel calibration is based on the BoatSpeed - SOG difference. For best results, select a segment of data with as little current as possible or sail an equal amount in opposite directions.

Compass calibration is based on the Heading - COG difference. For best results, select a segment of data with as little current as possible or sail straight into the current or with it. Make sure your compass is mounted in a fixed position.

Wind Angle Input calibration is based on the Port AWA - Stbd AWA difference. Two different calculations are offered, choose whichever seems most suitable to you. The "Before/after tacks" line is comparing AWA before and after each tack; it assumes the boat is sailed at TargetAWA angles before and after the tack and that TWS is similar before and after a tack (i.e. TargetAWA is the same before and after a tack). The "All upwind sailing" line is comparing AWA readings from all upwind sailing in the selected segment (excluding maneuvers). When TargetAWA or TargetTWA data is available, you have the option to correct for TargetAWA, which means the TargetAWADelta is compared on port and starbord tack instead of comparing AWA directly. This results in a more accurate calculation, and accounts for different wind speeds across the selected data segments; esp. when average windspeeds are different on port and starbord tack throughout the measured segment.

A "Raw Data" option is also available which is similar to the calibration report, and offers raw data for more detailed (manual) analysis.

View type: Calibration

Sail Crossover

Menu item for view type: Sail Crossover

Available In Only Races, Aggregate all Dates in Event, individual races/trainings, Entire Day, Performance Database

Visualizes the true wind angles and speeds at which you have sailed the boat's sails (actual sailing data - as opposed to a sail designer crossover chart). TWA/TWS data is grouped into buckets, the size of which you can configure from fine to coarser. When more than one sail was used in a TWA/TWS bucket, the sail with highest boatspeed is shown (using 80th percentile boat speed in that bucket). Hover over the chart to see a tooltip with more information for each bucket.

View type: Sail Crossover

Data Explainer

Menu item for view type: Data Explainer

Available In individual races/trainings, Entire Day

Displays the dependency hierarchy for a selected metric and, using metric values at a highlighted time, explains how a value is calculated or where (in which file/column) it originates. For example, if your VMG value seems off, you can understand how it is calculated and see the BoatSpeed and TWA values to figure out which one of these is inaccurate.

Metric values in each node are shown either for the highlighted time (opposite view) or for the first highlighted range (average values). Selecting more than one boat is supported for comparative analysis

Select Show Dependents to include metrics that depend on the selected metric (e.g. when selecting VMG, this might show VMGPercOfTarget above the VMG node).

Select Show Logical Origins to include related nodes for values that originate in a file (connected using dashed lines). E.g., even when VMG originates in your log file, this will still show BoatSpeed and TWA nodes as those influence the VMG value, even when the calculation did not happen in Njord.

Works best with recent uploads (December 2023 or later). Older uploads may show limited information.

View type: Data Explainer

Adding Team Members to a Boat in Njord Analytics

Explains how to share access to a boat with team members and invite them to Njord Analytics

Step 1

Navigate to https://app.sailnjord.com/data

Step 2

Select the boat you would like to add team members to

Step 3

Click "Settings"

Step 4

Click "Permissions"

Step 5

Click the "Add user…" field.

Step 6

Type in the full email address of the team member you want to add, and click "Invite"

Step 7

Repeat as necessary

Step 8

Click to select a user (the coach, in this example)

Step 9

From the role selection field, select "Manager" (to allow the coach to upload data to the boat)

Step 10

Select another user

Step 11

Click the "Restrict" field and select a year or date range to restrict the access of a user

Step 12

Click "Save". Invitation emails will be sent to all added users. The envelope symbol next to an email address indicates that the user has not signed up following the invitation yet.

Adding Wind Data

Having wind direction and speed data is obviously very benefitial for sailing data analysis. If your boat does not have a wind instrument and is not able to record wind data, there are other ways to add approximate wind direction and speed data to help with data analysis.

Adding wind direction data provides TWA and VMG data, which is useful for analysis and also enables features such as upwind/downwind leg and maneuver detection for easier navigation of your data and to enable maneuver analysis.

Adding wind speed data is helpful for record keeping and putting the performance data on a given day into context for later reference. Some features, like target analysis, only work with TWS data.

Step 1

Navigate to https://app.sailnjord.com/

Step 2

Click "Wind"

Step 3

You will see an overview of race times and boats in the selected event, with an overview of available wind data for each race and boat.

Step 4

Click "Add Wind Direction / Speed"

Step 5

Select "Inferred from typical TWA" for "Wind Direction Source".

This option is recommended if your sailing on that day consists of good straight line upwind/downwind sailing and clean maneuvers. Otherwise, try using the "Weather Data" option or entering wind direction manually ("Constant Value" or "Interpolated over Time" options).

Step 6

Select "Weather Data" for "Wind Speed Source".

This option is recommended if you don't have any wind speed measurements on that day. Otherwise, consider entering wind speed manually ("Constant Value" or "Interpolated over Time" options).

Step 7

Wait for the orange "Preview" line to load in the charts below and verify that the wind data is accurate enough to be usable. If it isn't, try different settings.

Step 8

Click "Apply selected Wind Data"

Step 9

Click on a race, which should now be broken into legs due to TWA data being present.

Step 10

Using TWA data, maneuvers can be detected and analyzed. Select the map view and click on "Maneuvers".

Step 11

Maneuvers are highlighted along the boat's track and maneuver loss is displayed.

What's New in Njord Analytics?

Note: for changes to Njord Player, refer to the version-specific changelog on our website.

2nd Quarter 2024

  • Improved sample rate of map view in Entire Day view
  • Fixes TWD inference with irregularly sampled boat data
  • Invert suggested calibration offset for AWA calibration
  • Add CSV download to Scatter Chart in Performance Database
  • Add Bin Table option to require at least N samples per cell
  • Added user settings to configure fractional digits and units per metric

1st Quarter 2024

  • Added support for logging in with Passkeys; go to Profile - Security to add a Passkey to your account
  • Added filter capability to Maneuvers view type (to only show maneuvers in a certain TWS range, for example)
  • TWA(), TWS(), AWA(), AWS() and ARCTAN2() functions
  • Added support for PGN 129284 (Navigation data, BRG/DTW/VMC)

November 2023

  • Added XTE metric (calculated when viewing one leg of a race with full course marks)
  • New data explainer view to understand the calculation of variables and investigate accuracy of values
View type: Data Explainer

October 2023

September 2023

  • Improvements to the wind data management page, to add wind data from a separate file
  • Add option to log in using an email one-time code
  • When attempting to upload data to a boat without a valid license, will provide more information on why existing license are not applicable

August 2023

  • New sail crossover view type, visualizing the true wind angles and speeds at which you have sailed a boat's sails
  • New wind data management page to view wind direction and speed ranges for each start, and to add wind direction and speed data from various sources (inferred, weather data, from other boats, manual input).
Wind

July 2023

  • Added a search bar to quickly locate boats, events and other resources. The search bar may be activated through the search icon in the sidebar or by pressing Ctrl/Cmd + Shift + Period.
  • Updated Stats view type to be faster; added CSV download; hover min/max value to jump to time of min/max; now also available in the Performance Database

June 2023

  • New Calibration view type, displaying statistics to help with the calibration of the speed transducer/paddlewheel, compass, and wind angle reading.
  • Polar Diagram view shows one or more of the boat's preconfigured polar files for reference (configurable via the settings menu).
  • Adds calculated metrics to many views, including BelowLineCalc, TimeToGunCalc and VMC (VMC is only available when selecting a single leg in a race with a course)
  • Data table view: added support for comparing more than two boats
  • Data table view: added "Raw Data" option to view all rows of the underlying log file without averaging/resampling
  • Data table view: added a "color" checkbox to metrics select to color column cells by metric value.

May 2023

  • On a boat's polar settings page, show the full polar table next to target tables.
  • Improved support for reading the start timer from Vakaros files

April 2023

  • New Maneuvers view type, similar to the Maneuver Report. This enables quicker access and deeper analysis of maneuvers, including the ability to highlight the maneuver timestamp across analytics views.
  • Extended download options in Polar Diagram view, offering polar file download in Expedition, B&G, Deckman, Adrena, ORC and SailGrib formats
View type: Polar Diagram
  • Added a form to send messages to Njord Support and find suggested help content, accessible at https://www.sailnjord.com/support/ and via the Message Support item in the cogwheel menu

March 2023

  • New views in any event / race date: Entire Day and Only Races
    • Entire Day shows the full 24 hours of the selected day, which is useful to get an overview of your day using views like the Map view or Line Chart view
    • Only Races and its sub-items Only Trainings and Only Races & Trainings only show combined data between the start and end time of all races (and/or trainings, as chosen) of that day. This is useful to visualise the overall performance for your day using views like Targets, Polar Diagram or Scatter Chart. For best results, make sure that your trainings are trimmed to "good sailing sections" and races are trimmed to start time (gun time) and to the time your boat crossed the finish line, this limits performance analysis to "good" data only.
    • The Aggregated Data / Multiple Races view (showing data across multiple days of the same event) has been moved below Only Races and works in a similar manner
Event Race Shortcuts
  • Editing/trimming races has moved to the Trim Races entry and has been improved with a race selector, the capability to enter multi-day races and to upload mark files for easier mark input
  • The Targets view for analysing upwind/downwind targets is now available outside the performance database, for any single race and in the Only Races/Multi Races section (requires upwind/downwind filter)
  • The Scatter Chart and Correlation view types are now available in the performance database
  • Most race views have gained an upwind/downwind and port/starboard filter control (top bar) to help you narrow down your analysis in views such as the Scatter Chart view faster
Filter Analytics View
  • Data loading speed of the Table view has been improved
  • Map view gains the ability to show maneuver loss, activated via the Maneuvers button. It uses our "maneuver loss from COG" method, for more details refer to the maneuver report.
Map View Maneuvers

February 2023

  • New Polar Diagram view type, in event/race view and performance database (with ability to compare different boats, or multiple events)
Polar Diagram
  • Bin Table view type now available in the performance database
  • Ladders button in map to show "ladder" connecting boat's tracks in a lineup of two boats:
Lineup Ladders Map
  • Line Chart supporting more than two boats, and more than two metrics at a time
  • New license checkout form makes it easy to find the best price for a certain usage period; allows pre-paying for a fixed usage period
  • ROLLINGSUM() function

January 2023

  • Download button in maneuver report to export maneuver data in CSV or XLS format
  • SIN() and COS() functions
  • Live Map showing all online boats and wind stations that you have access to (custom setup required)
  • Tool to measure distance and bearing on map:
Map distance tool

Frequently Asked Questions

How can I add additional data (like heart rate) once a base log file has been uploaded?

To augment data or change any other settings that you made during the initial upload, go to the uploaded file (under Data) then click on the link "Uploaded by ... at ...", then select "Augment uploaded files". You will be able to add (or remove) files from the upload, and finally click "Update Data".

How do I access calibration info (e.g. difference between TWA tack to tack and HDG tack to tack and TWS upwind to downwind, etc)?

The Njord Analytics single boat report contains a calibration report which contains data to help with compass, paddlewheel and wind instrument calibration.

You can create a single boat report via the left hand panel, or via the cogwheel menu ("Edit Reports"). You will find the calibration report at the very bottom of the report main page.

Do you have an app that coaches can use for speaking in coach comments?

We offer text input for coach comments, which you can do by accessing https://app.sailnjord.com/ on your mobile phone.

For hands-free use on the water, consider using the dictation feature of your phone to let your speech be transcribed into a text comment.

Input comments on the water

Is it possible to see HDG-COG?

If you want to see a HDG-COG number in all chart types, you can calculate it like so:

  • Go to the uploaded data segment; select Process
  • Select Add Metric, then Custom Formula
  • Enter HDG-COG = Heading - COG
  • Press Apply
Calculate HDG-COG

You can also see HDG-COG in the calibration report without performing the steps above.

My Velocitek is mounted on the cockpit side, how can I add 90 degrees to Heading to ensure that it is correct?

You can change Heading data like so:

  • Go to the uploaded data segment; select Process
  • Select Add Metric, then Custom Formula
  • Enter Heading = Heading + 90
  • Press Apply

Heading values will be re-aligned to the 0..360 degrees range after adding 90 degrees.

When setting up the course, is the bearing "from previous element" taken from the starboard end, port end, or middle of the line?

For course elements consisting of two marks (start line, finish line and gates), the center point between the two marks is used to calculate bearing from/to the previous/next course element.

How can I cut a race from a long day's track?

The All Day view helps you to trim a long day's track into relevant training segment or races for further analysis.

  • Use the controls in the timeline to restrict the tracks displayed to the approximate time of the race you want to cut out
  • Click and drag on the lower part of the timeline to let the boats move along the track
  • Click on the track of the boat once to mark the start time, using recognizable maneuvers such as the prestart phase to guide you. As you hover over the track to find the end time, you will see a preview of the race track
  • Click on the track another time to mark the end time
  • Adjust the start and end time as needed, for example to round the start time to the full minute
  • Enter a name for the race and click Create

What do I need to do to see an event in the performance database?

Events need to be added to the performance database first. Click on "Phases Database", then "New Phases Collection". You will be asked which races of that event to include (you could exclude practice races, for example, which is why events are not added to the performance database automatically).

Is there any way to output a GPX file of the race data?

Unfortunately, we don't support exporting data to GPX files yet. Supported export formats include CSV and Bravo file formats.

Does Njord Analytics run on iPad?

Njord Analytics runs on any modern browser, including on iPads.

Do you support yardstick / ratings?

No. Any calculations showing the rank of boats, such as in the Fleet Race Report, assume the boats are identical.

Do I need to recreate the report after changing a race's course?

You don't need to make a new report after adjusting the marks. Simply refresh the report page in your browser and the new course will apply.

How can I add sails, and delete old sails?

You can enter your sails, and enter new sails, in Njord Analytics using one of the 3 following methods:

  1. On the water, use the live sail input page - it's accessible when navigating to your boat and choosing "Live Coach Tools"
  2. When selecting any race or training, go to the annotations view, click "Edit Sails Usage", you can enter new sails there
  3. When using any software to record events on the water, such as Expedition or KND, you can import the events file with your log file and the sail changes from that file will show up

You can rename and remove sails on the Sail Database page.

How do I send a Njord Analytics report to my team?

You need to add people to the boat first, you can do that under Data, then select your boat, then Settings - Permissions and enter the team's email addresses there.

All users that have access to the boat will also be able to access the report by visiting Njord Analytics. You can also have them notified via email with a direct link to the report. To do that, go to the report, and click on the share button next to the title. Select the people you want to send the email to and click Send Notification Emails.

Is it possible to set a manual TWD for each leg?

You may enter a fixed TWD for the entire day when loading data, or, In Njord Analytics, you can also use the TWD inference feature.

You may also use the INTERPOLATED(SERIES(...)) Formula.

In the comparison with another boat, sometimes the boat that loses meters ("VMG gain") has a higher average VMG - why?

It's a different calculation... "VMG gain" is calculated from the start & end position, using the TWD (average TWD, from both boats) as the reference bearing. "Average VMG" that you see in the table above is taking each boat's TWA & Boatspeed, calculating the instantaneous VMG along the track, and averaging that. In principle the winning boat should have higher average VMG, but that is only true when there are no wind shifts during the tests and both boat's wind instruments are perfectly calibrated. This is rarely the case, that's why such a small deviation is not unexpected. Place higher trust in the "VMG gain" value in this case.

How can I add a boat to an event?

Option 1:

  • Go to the event
  • From the cogwheel menu (bottom right) select "Edit Event"
  • Add the boat to the "Boats" field
  • Click "Update"

Option 2

  • Go to the boat and select a relevant segment of uploaded data
  • Uncheck "Show events with boat only"
  • Find the event you want to add the boat to, and click "Add boat to this event"

Njord Analytics API

Summary

Njord Analytics is based on an API that powers every feature of the web app. It is possible to access this API for the purpose of automating tasks.

All API requests and responses are based on the GraphQL format specification. It is recommended to familiarize yourself with the query language and conventions of GraphQL to use the Njord Analytics API effectively.

You can access an interactive GraphQL API console at https://app.sailnjord.com/admin/graphql which allows you to:

  • Send GraphQL requests (queries and mutations) to the live API without any programming required

  • Browse the API documentation outlining all available queries and mutations and their input and output types (see "Documentation Explorer" symbol in the sidebar)

Note: All requests entered in this console are executed under your currently logged in user account, with all associated privileges and the ability to delete data if not careful (most mutations that delete data are clearly named "delete..." however). To avoid damage, send a simple query like { currentUser { name } } to confirm under which user name you are logged in, and consider using a test account without access to your real data if you want to be on the safe side.

The GraphQL API endpoint to send HTTP requests to when not using the console is https://api.prod.sailnjord.com/graphql

Authentication

Virtually all GraphQL queries and mutations require authorization in the form of an Authorization HTTP header sent with each HTTP request to the GraphQL API endpoint.

API Key

For many automated tasks that are tied to one specific user account, an API key or token that must be generated once is a suitable form of access control. To obtain an API key, send a GraphQL query like this from the interactive console (you may adjust the expiration date of the key to suit your needs):

{
  currentUser {
    name
    apiKey(expires: "2024-12-31T23:00Z") {
      authorization
      expires
    }
  }
}

The value of the authorization response field should be sent as the HTTP Authorization header with each GraphQL API request.

OAuth

For advanced use cases where different users require access to the Njord API, integration with Njord's OAuth identity provider is possible. Please contact us if you're interested.

Use Cases

To learn about useful queries and mutations, it can be helpful to inspect the API queries that the Njord Analytics web app performs - simply use the web development tools of your browser of choice, perform the desired task and inspect network requests and responses to the GraphQL API endpoint.

Examples are listed below. Feel free to contact us to get advice on further possibilities.

API Example - Upload Data to a Boat

This example shows how to upload one or more log files to a boat, to achieve the same result as the Upload Data feature in the web app user interface.

Step 1 - Identify the Boat to Upload Data to

Find the key (unique identifier) of the boat you want to upload data to. That key will look like Boat_xxx-xxx-xxx-xxx. You can can easily get it from the Njord Analytics web URL when navigating to the boat (e.g. on https://app.sailnjord.com/data/Boat_xxx-xxx-xxx-xxx), or you can list boats in a GraphQL API request and request their name and key. To list all boats whose name contains "Test", perform this query:

{
  listBoats(filter: { nameMatches: "Test" }) {
    boat {
      key
      name
    }
  }
}

You will use the boat's key in the following requests.

Step 2 - Upload Data

Any data files you want to load need to be uploaded to an AWS S3 bucket, as direct file uploads to the GraphQL API are not supported. You can use your own S3 bucket if you like (must be world readable), or use an Njord-owned bucket. The latter option is recommended and is described here.

Perform the following query (insert the chosen boat key) to get bucket details and AWS credentials to access it. Note the prefix, all files you upload must be stored under this prefix as only PutObject requests under this prefix are permitted with the provided credentials.

{
  getS3UploadDestination(type: Data, boat: "Boat_...") {
    awsRegion
    endpoint
    bucketName
    prefix
    accessKeyId
    secretAccessKey
    sessionToken
    expiration
  }
}

Upload all files to the S3 bucket using an AWS client of your choice and note each file's full Key.

Step 3 - Generate Processing Instructions and Start File Processing

In the most basic form, when you want to upload only one file without any custom options, the request would look like this (insert the chosen boat key and uploaded file key):

mutation {
  createUploadV2(
    input: {
      boatKey: "Boat_..."
      processInput: {
        source: {
          files: [
            {
              s3Bucket: "user-uploads.prod.sailnjord.com"
              s3Key: "<prefix>/yourfile.csv"
            }
          ]
        }
        steps: [{ addDerivedColumns: { add: true } }]
      }
    }
  ) {
    key
    state
  }
}

Note the key of the upload object, which allows you to confirm the progress and result of your upload in the next step.

Many options exist to manipulate uploaded files and combine them in different ways, which can be specificed through processing instructions (input field processInput). To understand these options, is best to perform the equivalent upload using the Njord Analytics web app, and inspect the processInput in the request sent to the API.

Step 4 - Verify Upload Success or Failure

To check the status of your upload, perform the following request and repeat until state becomes Completed or Failed. This step is optional and is for your information only, processing will normally complete in a few seconds up to a minute without further action. Uploaded data will show up under the selected boat in the Njord Analytics web app.

{
  upload(key: "Upload_...") {
    key
    state
    boat {
      name
    }
    files {
      originalFileName
    }
    processedSegments {
      key
      startTime
      endTime
    }
    errorMessage
    logMessages
  }
}

To more easily inspect the result of your upload, you may also visit the following URL (insert your boat and upload keys): https://app.sailnjord.com/data/Boat_.../upload/Upload_...

Overview

To install Njord Player, download the appriate version for your operating system at https://www.sailnjord.com/player/

Njord Player is a document-based application. When launching the app, you will start with an empty document. It is recommended to add boat data and media assets from a single race or racing day to a document only, and create additional documents for other racing days.

To add content to a document, follow these guides:

Once data has been added, configure media playback in the main window and additional windows, and seek on the timeline to play back the race at any point in time.

Don't forget to save the document – this will allow to pick up after reopening the Njord Player app.

Note: you can also use Njord Player in a web browser.

Loading Data into Njord Player via Njord Analytics

This method is recommended when you are using Njord Analytics together with Njord Player. We recommend to load the relevant boat data in Njord Analytics first, as it is then straightforward to use the same data in Njord Player. In some cases support for new data file formats is also available in Njord Analytics first, requiring use of this method.

Step 1

Start with a new Njord Player file

Step 2

Click "File" / "Download from Njord Analytics…"

Step 3

Select the date to download data for

Step 4

Click here

Step 5

Click "Download" and wait for the selected data to be downloaded

Step 6

Navigate the time track which displays all downloaded races, and click in the time track to seek to a time in a race

Loading Data into Njord Player Directly

This method is recommended when you are not using Njord Analytics, or when your computer does not have an internet connection when you load data.

Step 1

Start with a new Njord Player file

Step 2

Click "Load Data"

Step 3

Select the boat you want to load data for (you may create a boat if you haven't done so)

Step 4

Click "Add Files" and select the log file to load

Tip: Learn more about supported data sources at https://www.sailnjord.com/data-sources/

Step 5

Click "Use Data"

Step 6

Use the time track to seek and view the loaded data

Tip: Repeat the process for more than one boat

Step 7

Click "File" / "Save" to save the Njord Player file and persist your work

Loading Media

Adding Media and Performing Time Synchronization

Tip: Always add boat log data to Njord Player first - due to the availability of GPS time in your boat's data, it is much more likely to be accurate than video from most cameras. You can then align video relative to the boat's data to achieve the best results.

Step 1

Click on the media group that you want to add the video to, to open the media list

Step 2

Click "Add Media" and select the video file(s) that you want to add

Step 3

Verify the "File Time" (in the camera's / computer's time/time zone) and the "Event Time" (translated into the Njord Player event's time zone) to spot obvious discrepancies (we will fix those below).

You will also see the added video file show up as a green box on the timeline, which gives you a general idea whether the video aligns with the correct part of your sailing data.

General Time Adjustment

Tip: If the video that you just loaded does not match the data at all, i.e. it is off by minutes or hours, you will most likely have to choose a different time source, or time zone. We will show how in this section.

If the video is off by a few seconds only, proceed with the "Precise Time Adjustment" section (below)

Step 4

Select the video file(s) whose time is off by minutes or hours

Step 5

Click "Time Source"

Step 6

Video files contain multiple timestamps that relate to different events (recording the video, storing it on the memory card, etc.) and depending on the camera, such a timestamp can either denote the start of the video, or the end of the video.

See if any of the options are plausible. Some trial & error may be required, but once you know the settings to use for a certain camera, next time will be easier.

You can also change this setting for multiple video files at the same by selecting all files from the same camera.

Step 7

If the time is off by a few hours exactly, it's possible that the time zone settings on your camera or computer are off. You can correct this by selecting the camera's time zone in the "Time Zone" field.

Precise Time Adjustment

Tip: Most cameras' videos will be off by up to a few seconds even if you synchronize the time before sailing (as is recommended). To correct this small error, use visual cues from the video to achieve sub-second alignment precision.

Step 8

Seek to a time that is suitable to verify the time alignment of your video. This could be a start, or a maneuver. Use the left/right arrow keys to seek more precisely.

Step 9

Click on the Time Offset Adjustment icon

Step 10

If you have navigated to the precise timestamp that you want to synchronize the video to, select "Maintain timeline playback position". We will use this method in our example.

If you have navigated to the precise video frame that you want to synchronize the timeline to, select "Maintain current frame". Adjusting the relative offset between data and video works in the opposite direction in this case.

Step 11

Enable "See-through" mode if you need to see the video behind the overlay

Step 12

Adjust the video asset time offset by pressing plus or minus buttons, until you are happy with the result.

Step 13

In this instance, we have used the position of the boat relative to the start line to synchronize video with data

Step 14

As another example, here we have used the position of the boom and rudder visible in the video to synchronize with a turn up / tack visible in the boat's track.

Locating Media Files

When opening a Njord Player document and media files (videos / photos) are no longer in their original location, the affected files wil show up in red in the timeline, and cannot be played. Click Locate Files… and select the directory where the files are now located. File names must be identical to what they were when adding the file to Njord Player, otherwise re-association is not possible.

Supported Media Formats

Video

Formats: MP4, MOV

The file timestamp is taken from the capture date recorded in the video file (falls back to file creation date if unavailable).

When recording video using DJI drones, it is recommended to enable the Video Caption option and retain the generated .SRT files. These files will allow the Njord Player app to accurately detect file timestamp offsets that may be present in DJI video files.

When using newer GoPro models and GPS is turned on, the GPS based time stamp source GPS Time (GoPro GPMF) will be selected automatically. Otherwise, make sure the GoPro time is set correctly before the recording and select time stamp source QuickTime Time Code = Start of video in Njord Player to make consecutive clips align correctly.

Njord Player supports MP4 files using the AVC/H.264 codec or the HEVC/H.265 codec. Since Njord Player version 2.4.0, HEVC/H.265 playback uses hardware acceleration and requires one of the following graphics cards:

  • NVIDIA GTX950 and above
  • AMD RX460 and above
  • Intel HD4400, HD515 and above
  • AMD Radeon R7, Vega M and above
  • Apple M1, M1 Pro, M1 Max, M1 Ultra and above

Detailed list of hardware support: Intel, AMD and NVIDIA.

HDR video is supported by Njord Player since version 2.4.0.

Photo

Formats: JPG, PNG

The file timestamp is taken from the photo capture date recorded in the file's EXIF tags (falls back to file creation date if unavailable).

Audio

Formats: MP3, M4A/AAC, WAV/PCM, Ogg Vorbis, FLAC

The file timestamp is taken from the file creation date.

Njord Web Player

In addition to the Njord Player desktop app which is available for Windows and Mac and requires separate installation, you can also use Njord Web Player, which runs in any supported web browser.

To launch Njord Web Player:

  • Visit an event and date of your choice in Njord Analytics
  • Click on Njord Player
  • Select Open in Njord Web Player

Njord Web Player displays data loaded into Njord Analytics only. At the moment, there is no extra charge for using Njord Web Player, but you will need to load data into Njord Analytics.

Njord Web Player Unique Features

  • Can be launched very quickly, does not require app download + installation
  • Does not yet support saving your imported videos and photos

Njord Player (desktop app) Unique Features

  • Support multiple windows
  • Supports loading data without an internet connection
  • Saves to Njord Player file which can be kept together with your videos

Frequently Asked Questions

Does Njord Player support 360 degree-type video (e.g. from a Garmin Virb 360)?

Yes, 360 degree video is supported since Njord Player version 2.3.0. Add a 360 degree video and drag/pan the video using your mouse (also during playback).

Do you have a suggestion for a dictaphone, preferably with GPS for time stamping?

Phones (e.g. the iPhone Voice Recorder app) work great as a dictaphone because the timestamps are usually accurate with no effort required.

Other dictaphones work too, but you might have to set the time each morning for it to be accurate.

In any case, it helps to do an audible time countdown at the beginning of the recording, so you can verify the correctness of the recorded timestamp after you load the file in Njord Player.

How to I switch off the dual view in the main window?

From the menu, select View - Window Layout - Single View.

How do I share video with performance data overlays?

Load a video and make sure its timestamp is adjusted properly (to ensure synchronization with your data). In the media list, select the desired video and click "Export" (requires Njord Player 2.5.0 or later).

Does Njord Player run on iPad?

The original Njord Player app does not run on iPad. It runs on Windows and Mac. Find the right download link for your platform on our Njord Player page.

You can try Njord Web Player which runs in any browser, including the iPad's. It does not offer all capabilities of the Njord Player app yet.

I am moving video files off of my laptop onto a hard-drive (running out of space). Does this mean that Njord Player is now looking in the wrong place for the files? Do I have to re-import the media again?

We suggest to keep the Njord Player file (.sail2) in the same folder as your video. E.g., one folder per day usually works great. You can have sub-folders for video, but everything should be in the same top folder. You can then move that entire folder around and it's not going to be a problem for Njord Player.

Setting up a paid license for a boat

Explains how to set up payment details for a boat to continue loading data after the free trial period.

For an overview of latest prices, see https://www.sailnjord.com/pricing/

Step 1

Navigate to https://app.sailnjord.com/data/

Step 2

Select the boat you would like to purchase a license for

Step 3

Click "Settings"

Step 4

Click "Licenses"

Step 5

Click "Add a Paid License"

Step 6

Select the product(s) that you want to use (or deselect the ones you don't want to use)

Step 7

Optional: Click "Add more boats…" to add more than one boat to the new license (volume pricing applies)

Step 8

Compare the daily prices (pay per use) or monthly / annual subscriptions to learn which price is best suited for the expected number of sailing days.

Step 9

If you know the dates of a specific event (or season) that you'd like to purchase a license for, click "Pay upfront for specific dates" and get the best price for those dates.

Step 10

Enter your billing and payment details.

Step 11

Click the subscribe or pay button to complete the purchase. Your license will be ready to use immediately once the payment has been made.