@chrtco/sdk 0.6.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,10 +20,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/atlas/browser.ts
21
21
  var browser_exports = {};
22
22
  __export(browser_exports, {
23
+ clearS52SymbolImageCache: () => clearS52SymbolImageCache,
24
+ getS52AtlasVersion: () => getS52AtlasVersion,
23
25
  loadS52SymbolImages: () => loadS52SymbolImages,
26
+ loadS52SymbolImagesCached: () => loadS52SymbolImagesCached,
24
27
  loadSymbolImages: () => loadSymbolImages,
25
28
  loadThemedBridgeImages: () => loadThemedBridgeImages,
26
- reloadS52SymbolImages: () => reloadS52SymbolImages
29
+ reloadS52SymbolImages: () => reloadS52SymbolImages,
30
+ reloadS52SymbolImagesCached: () => reloadS52SymbolImagesCached
27
31
  });
28
32
  module.exports = __toCommonJS(browser_exports);
29
33
 
@@ -311,7 +315,7 @@ var S52_POINT_SVGS = {
311
315
  "BOYDEF03": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 21.8 10.8 L 22.4 9.6 L 22.9 8.6 L 23.6 7.9 L 24.3 7.2 L 25.4 6.8 L 26.4 6.9 L 27.6 7.2 L 28.8 7.5 L 29.8 8.9 L 30.5 9.7 L 31.0 10.6 L 31.0 11.7 L 30.5 12.7 L 30.0 13.5 L 29.1 14.5 L 28.2 15.6 L 27.3 16.6 L 26.8 17.4 L 26.3 18.1 L 26.2 19.1 L 26.2 20.0 L 26.2 20.7 L 26.3 21.6 L 26.3 21.7" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 25.4 25.2 L 27.6 25.2" fill="none" stroke="CHMGD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <circle cx="9.45" cy="16.19" r="8.45" fill="none" stroke="CHGRD" stroke-width="0.8" />\n <path d="M 9.4 16.2 Z" fill="CHGRD" />\n <circle cx="9.45" cy="16.19" r="8.45" fill="none" stroke="OUTLW" stroke-width="0.8" />\n <circle cx="9.45" cy="16.19" r="0.62" fill="none" stroke="OUTLW" stroke-width="0.8" />\n <path d="M 9.4 16.2 Z" fill="OUTLW" />\n</svg>\n',
312
316
  "BOYGEN03": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 22.4 10.5 L 22.9 9.4 L 23.4 8.4 L 24.1 7.7 L 24.7 7.1 L 25.7 6.7 L 26.6 6.8 L 27.8 7.1 L 28.9 7.4 L 29.8 8.7 L 30.5 9.5 L 31.0 10.3 L 31.0 11.3 L 30.5 12.2 L 30.0 13.1 L 29.2 14.0 L 28.3 15.0 L 27.5 16.0 L 27.0 16.7 L 26.6 17.4 L 26.5 18.3 L 26.5 19.2 L 26.5 19.8 L 26.6 20.7 L 26.6 20.8" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 25.7 24.1 L 27.8 24.1" fill="none" stroke="CHMGD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <circle cx="11.24" cy="14.16" r="6.78" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <circle cx="11.31" cy="23.14" r="2.16" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <path d="M 13.5 23.1 L 21.6 23.1" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 23.1 L 9.1 23.1" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
313
317
  "BOYINB01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.02" cy="22.46" r="2.28" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <circle cx="16.02" cy="9.75" r="2.49" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <path d="M 1.0 22.5 L 13.6 22.5" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 18.1 22.5 L 31.0 22.5" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 2.6 22.5 L 6.0 12.5 L 26.0 12.5 L 29.4 22.5" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
314
- "BOYISD12": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="20.52" cy="7.07" r="6.07" fill="none" stroke="CHRED" stroke-width="0.8" />\n <path d="M 20.5 7.1 Z" fill="CHRED" />\n <circle cx="11.48" cy="24.93" r="6.07" fill="none" stroke="CHRED" stroke-width="0.8" />\n <path d="M 11.5 24.9 Z" fill="CHRED" />\n <circle cx="20.52" cy="7.07" r="6.07" fill="none" stroke="OUTLW" stroke-width="0.8" />\n <circle cx="11.48" cy="24.93" r="6.07" fill="none" stroke="OUTLW" stroke-width="0.8" />\n</svg>\n',
318
+ "BOYISD12": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 27.0 L 12.5 27.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" />\n <path d="M 19.5 27.0 L 31.0 27.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" />\n <path d="M 10.5 27.0 L 12.5 15.0 L 19.5 15.0 L 21.5 27.0 Z" fill="CHBLK" stroke="CHBLK" stroke-width="0.8" stroke-linejoin="round" />\n <rect x="11.4" y="19.0" width="9.2" height="3.5" fill="LITRD" />\n <line x1="16" y1="15.0" x2="16" y2="11.0" stroke="CHBLK" stroke-width="0.8" />\n <circle cx="16" cy="8.5" r="2.0" fill="CHBLK" />\n <circle cx="16" cy="3.5" r="2.0" fill="CHBLK" />\n</svg>\n',
315
319
  "BOYLAT13": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 30.8 31.0 L 30.8 1.0 L 1.2 31.0 L 30.8 31.0 Z" fill="CHGRN" />\n <path d="M 30.8 31.0 L 30.8 1.0 L 1.2 31.0 L 30.8 31.0" fill="none" stroke="CHGRN" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 30.8 31.0 L 30.8 1.0 L 1.2 31.0 L 30.8 31.0" fill="none" stroke="OUTLW" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <circle cx="22.32" cy="21.30" r="1.03" fill="none" stroke="OUTLW" stroke-width="0.8" />\n <path d="M 22.3 21.3 Z" fill="OUTLW" />\n</svg>\n',
316
320
  "BOYLAT14": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 30.8 31.0 L 30.8 1.0 L 1.2 31.0 L 30.8 31.0 Z" fill="CHRED" />\n <path d="M 30.8 31.0 L 30.8 1.0 L 1.2 31.0 L 30.8 31.0" fill="none" stroke="CHRED" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 30.8 31.0 L 30.8 1.0 L 1.2 31.0 L 30.8 31.0" fill="none" stroke="OUTLW" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <circle cx="22.32" cy="21.30" r="1.03" fill="none" stroke="OUTLW" stroke-width="0.8" />\n <path d="M 22.3 21.3 Z" fill="OUTLW" />\n</svg>\n',
317
321
  "BOYLAT23": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 27.3 L 9.6 4.7 L 31.0 4.7 L 23.8 27.3 L 1.0 27.3 Z" fill="CHGRN" />\n <path d="M 1.0 27.3 L 9.6 4.7 L 31.0 4.7 L 23.8 27.3 L 1.0 27.3" fill="none" stroke="CHGRN" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 27.3 L 9.6 4.7 L 31.0 4.7 L 23.8 27.3 L 1.0 27.3" fill="none" stroke="OUTLW" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <circle cx="16.63" cy="15.52" r="0.85" fill="none" stroke="OUTLW" stroke-width="0.8" />\n <path d="M 16.6 15.5 Z" fill="OUTLW" />\n</svg>\n',
@@ -322,7 +326,7 @@ var S52_POINT_SVGS = {
322
326
  "BOYMOR03": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="14.88" cy="26.37" r="3.17" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <circle cx="19.41" cy="6.11" r="3.65" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <path d="M 1.0 26.4 L 11.5 26.4" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 17.8 26.4 L 28.7 26.4" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 3.3 26.4 L 7.9 10.2 L 31.0 10.2 L 26.6 26.4" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
323
327
  "BOYMOR11": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.30" cy="11.89" r="2.81" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <path d="M 16.3 11.9 Z" fill="CHBLK" />\n <path d="M 1.0 22.9 L 3.6 15.1 L 28.4 15.1 L 31.0 22.9 L 1.0 22.9 Z" fill="CHBLK" />\n <path d="M 1.0 22.9 L 3.6 15.1 L 28.4 15.1 L 31.0 22.9 L 1.0 22.9" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
324
328
  "BOYPIL01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.43" cy="25.37" r="2.96" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <path d="M 1.0 25.4 L 13.6 25.4" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 19.1 25.4 L 31.0 25.4" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 4.3 25.4 L 15.3 13.6 L 18.6 3.7 L 23.5 3.7 L 23.5 15.6 L 28.2 25.4" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
325
- "BOYSAW12": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="14.78" fill="none" stroke="CHRED" stroke-width="0.8" />\n <path d="M 16.0 16.0 Z" fill="CHRED" />\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="OUTLW" stroke-width="0.8" />\n <circle cx="16.00" cy="16.00" r="1.11" fill="none" stroke="OUTLW" stroke-width="0.8" />\n <path d="M 16.0 16.0 Z" fill="OUTLW" />\n</svg>\n',
329
+ "BOYSAW12": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 27.0 L 12.5 27.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" />\n <path d="M 19.5 27.0 L 31.0 27.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" />\n <path d="M 10.5 27.0 L 12.5 14.0 L 19.5 14.0 L 21.5 27.0 Z" fill="LITWT" stroke="CHBLK" stroke-width="0.8" stroke-linejoin="round" />\n <rect x="13.2" y="14.0" width="2.0" height="13.0" fill="LITRD" />\n <rect x="16.8" y="14.0" width="2.0" height="13.0" fill="LITRD" />\n <line x1="16" y1="14.0" x2="16" y2="8.0" stroke="CHBLK" stroke-width="0.8" />\n <circle cx="16" cy="5.5" r="2.5" fill="LITRD" stroke="CHBLK" stroke-width="0.6" />\n</svg>\n',
326
330
  "BOYSPH01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="15.76" cy="26.22" r="2.81" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <path d="M 18.7 26.2 L 31.0 26.2" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 4.1 26.2 L 2.6 22.6 L 2.2 19.6 L 1.8 16.4 L 2.5 12.9 L 3.5 10.5 L 5.3 8.1 L 7.3 6.1 L 9.8 4.5 L 12.1 3.7 L 14.9 3.0 L 17.9 3.0 L 20.9 3.7 L 24.2 5.1 L 26.4 6.8 L 27.9 9.0 L 29.7 11.8 L 30.7 14.6 L 30.8 17.7 L 30.5 21.5 L 29.4 24.2 L 28.3 26.2" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 26.2 L 12.9 26.2" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
327
331
  "BOYSPP11": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="CHYLW" stroke-width="0.8" />\n <path d="M 16.0 16.0 Z" fill="CHYLW" />\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="OUTLW" stroke-width="0.8" />\n <circle cx="16.00" cy="16.00" r="1.13" fill="none" stroke="OUTLW" stroke-width="0.8" />\n <path d="M 16.0 16.0 Z" fill="OUTLW" />\n</svg>\n',
328
332
  "BOYSPP15": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 30.8 31.0 L 30.8 1.0 L 1.2 31.0 L 30.8 31.0 Z" fill="CHYLW" />\n <path d="M 30.8 31.0 L 30.8 1.0 L 1.2 31.0 L 30.8 31.0" fill="none" stroke="CHYLW" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 30.8 31.0 L 30.8 1.0 L 1.2 31.0 L 30.8 31.0" fill="none" stroke="OUTLW" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <circle cx="20.95" cy="21.30" r="1.03" fill="none" stroke="OUTLW" stroke-width="0.8" />\n <path d="M 21.0 21.3 Z" fill="OUTLW" />\n</svg>\n',
@@ -331,7 +335,11 @@ var S52_POINT_SVGS = {
331
335
  "BOYSUP01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.02" cy="23.18" r="2.28" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <path d="M 1.0 23.2 L 13.6 23.2" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 18.1 23.2 L 31.0 23.2" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 2.6 23.2 L 6.0 13.2 L 26.0 13.2 L 29.4 23.2" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.0 13.2 L 16.0 6.5" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
332
336
  "BOYSUP02": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.1 25.3 L 4.9 14.1 L 27.2 14.1 L 31.0 25.3" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.1 14.1 L 16.1 6.7" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 25.2 L 4.9 14.0 L 27.2 14.1 L 31.0 25.2 L 1.0 25.2 Z" fill="CHBLK" />\n <path d="M 1.0 25.2 L 4.9 14.0 L 27.2 14.1 L 31.0 25.2 L 1.0 25.2" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
333
337
  "BOYSUP03": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.12" cy="24.98" r="2.07" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <path d="M 16.1 9.9 L 16.1 5.0" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 12.7 6.6 L 19.3 9.9" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 12.7 9.9 L 19.3 6.6" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 25.0 L 14.0 25.0" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 18.0 25.0 L 31.0 25.0" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 2.6 25.0 L 6.0 14.9 L 26.0 14.9 L 29.4 25.0" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.1 14.9 L 16.1 8.0" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
334
- "BRIDGE01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="CHMGD" stroke-width="0.8" />\n <circle cx="16.07" cy="15.70" r="8.63" fill="none" stroke="CHMGD" stroke-width="0.8" />\n</svg>\n',
338
+ "BRIDGE01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <line x1="4" y1="14" x2="28" y2="14" stroke="CHBLK" stroke-width="2" />\n <line x1="8" y1="14" x2="8" y2="24" stroke="CHBLK" stroke-width="1.8" />\n <line x1="24" y1="14" x2="24" y2="24" stroke="CHBLK" stroke-width="1.8" />\n <path d="M8,14 Q16,6 24,14" fill="none" stroke="CHBLK" stroke-width="1.5" />\n</svg>\n',
339
+ "BRIDGE02": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <line x1="4" y1="14" x2="28" y2="14" stroke="CHBLK" stroke-width="2" />\n <line x1="8" y1="14" x2="8" y2="24" stroke="CHBLK" stroke-width="1.8" />\n <line x1="24" y1="14" x2="24" y2="24" stroke="CHBLK" stroke-width="1.8" />\n <path d="M8,14 Q16,6 24,14" fill="none" stroke="TRFCD" stroke-width="1.5" stroke-dasharray="3,2" />\n</svg>\n',
340
+ "BRIDGE03": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <line x1="4" y1="14" x2="28" y2="14" stroke="CHBLK" stroke-width="2" />\n <line x1="8" y1="14" x2="8" y2="24" stroke="CHBLK" stroke-width="1.8" />\n <line x1="24" y1="14" x2="24" y2="24" stroke="CHBLK" stroke-width="1.8" />\n <circle cx="16" cy="14" r="3" fill="none" stroke="TRFCD" stroke-width="1.5" />\n <circle cx="16" cy="14" r="1" fill="TRFCD" />\n</svg>\n',
341
+ "BRIDGE04": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <line x1="4" y1="16" x2="28" y2="16" stroke="CHBLK" stroke-width="2" />\n <line x1="8" y1="16" x2="8" y2="24" stroke="CHBLK" stroke-width="1.8" />\n <line x1="24" y1="16" x2="24" y2="24" stroke="CHBLK" stroke-width="1.8" />\n <line x1="12" y1="16" x2="12" y2="6" stroke="TRFCD" stroke-width="1.5" />\n <polygon points="12,4 9,8 15,8" fill="TRFCD" />\n <line x1="20" y1="16" x2="20" y2="6" stroke="TRFCD" stroke-width="1.5" />\n <polygon points="20,4 17,8 23,8" fill="TRFCD" />\n</svg>\n',
342
+ "BRIDGE05": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <line x1="4" y1="14" x2="28" y2="14" stroke="CHBLK" stroke-width="2" />\n <line x1="8" y1="14" x2="8" y2="24" stroke="CHBLK" stroke-width="1.8" />\n <line x1="24" y1="14" x2="24" y2="24" stroke="CHBLK" stroke-width="1.8" />\n <line x1="14" y1="14" x2="20" y2="6" stroke="TRFCD" stroke-width="2" />\n <circle cx="14" cy="14" r="1.5" fill="TRFCD" />\n</svg>\n',
335
343
  "BRTHNO01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="CHMGD" stroke-width="0.8" />\n</svg>\n',
336
344
  "BUAARE02": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="LANDF" stroke-width="0.8" />\n <path d="M 16.0 16.0 Z" fill="LANDF" />\n</svg>\n',
337
345
  "BUIREL01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 8.5 1.0 L 23.5 1.0 L 16.0 8.5 L 8.5 1.0 Z" fill="LANDF" />\n <path d="M 8.5 1.0 L 23.5 1.0 L 16.0 8.5 L 8.5 1.0" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 31.0 8.5 L 31.0 23.5 L 23.5 16.0 L 31.0 8.5 Z" fill="LANDF" />\n <path d="M 31.0 8.5 L 31.0 23.5 L 23.5 16.0 L 31.0 8.5" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 8.5 31.0 L 23.5 31.0 L 16.0 23.5 L 8.5 31.0 Z" fill="LANDF" />\n <path d="M 8.5 31.0 L 23.5 31.0 L 16.0 23.5 L 8.5 31.0" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 8.5 L 1.0 23.5 L 8.5 16.0 L 1.0 8.5 Z" fill="LANDF" />\n <path d="M 1.0 8.5 L 1.0 23.5 L 8.5 16.0 L 1.0 8.5" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 8.5 16.0 L 23.5 16.0" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.0 8.5 L 16.0 23.5" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 8.5 1.0 L 23.5 1.0 L 16.0 8.5 L 8.5 1.0" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 31.0 8.5 L 31.0 23.5 L 23.5 16.0 L 31.0 8.5" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 23.5 31.0 L 8.5 31.0 L 16.0 23.5 L 23.5 31.0" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 8.5 L 1.0 23.5 L 8.5 16.0 L 1.0 8.5" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
@@ -342,6 +350,8 @@ var S52_POINT_SVGS = {
342
350
  "BUIREL15": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 4.8 1.0 L 6.5 3.2 L 8.4 4.9 L 10.6 6.0 L 12.8 6.9 L 15.2 7.2 L 17.1 7.1 L 19.1 6.9 L 21.3 6.2 L 23.0 5.1 L 24.5 4.2 L 25.8 2.8 L 26.7 1.7 L 27.2 1.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <circle cx="16.48" cy="24.63" r="6.37" fill="none" stroke="CHBLK" stroke-width="0.8" />\n <path d="M 16.5 17.9 L 16.5 7.1" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <circle cx="16.61" cy="24.56" r="1.29" fill="none" stroke="CHBLK" stroke-width="0.8" />\n <path d="M 16.6 24.6 Z" fill="CHBLK" />\n</svg>\n',
343
351
  "BUISGL01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 1.0 L 31.0 1.0 L 31.0 31.0 L 1.0 31.0 L 1.0 1.0 Z" fill="CHBRN" />\n <path d="M 1.0 1.0 L 31.0 1.0 L 31.0 31.0 L 1.0 31.0 L 1.0 1.0" fill="none" stroke="CHBRN" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 1.0 L 31.0 1.0 L 31.0 31.0 L 1.0 31.0 L 1.0 1.0" fill="none" stroke="LANDF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
344
352
  "BUISGL11": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 1.0 L 31.0 1.0 L 31.0 31.0 L 1.0 31.0 L 1.0 1.0 Z" fill="LANDF" />\n <path d="M 1.0 1.0 L 31.0 1.0 L 31.0 31.0 L 1.0 31.0 L 1.0 1.0" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 1.0 L 31.0 1.0 L 31.0 31.0 L 1.0 31.0 L 1.0 1.0" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
353
+ "CABLE01": '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">\n <path d="M 10 2 L 5 8 L 9 8 L 6 14 L 11 6 L 7 6 Z" fill="CHMGD" stroke="CHMGD" stroke-width="0.4" stroke-linejoin="round" />\n</svg>\n',
354
+ "CABOHD01": '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">\n <path d="M 3 5 L 8 11 L 13 5" fill="none" stroke="CHMGD" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
345
355
  "CAIRNS01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 17.5 1.1 L 20.1 1.9 L 21.7 2.7 L 23.2 4.6 L 23.8 6.2 L 24.2 7.4 L 24.2 9.4 L 23.4 10.9 L 22.9 12.1 L 21.8 13.5 L 21.3 14.1 L 21.8 12.5 L 22.7 10.9 L 22.9 9.8 L 22.9 7.8 L 22.2 5.8 L 21.7 4.6 L 20.7 3.5 L 19.1 2.1 L 17.5 1.1 Z" fill="LANDF" />\n <path d="M 17.5 1.1 L 20.1 1.9 L 21.7 2.7 L 23.2 4.6 L 23.8 6.2 L 24.2 7.4 L 24.2 9.4 L 23.4 10.9 L 22.9 12.1 L 21.8 13.5 L 21.3 14.1 L 21.8 12.5 L 22.7 10.9 L 22.9 9.8 L 22.9 7.8 L 22.2 5.8 L 21.7 4.6 L 20.7 3.5 L 19.1 2.1 L 17.5 1.1" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 11.7 13.7 L 13.2 15.1 L 14.8 16.3 L 15.4 17.2 L 15.9 18.8 L 16.4 20.4 L 16.4 21.6 L 15.6 23.5 L 15.0 25.1 L 14.0 26.3 L 12.2 27.7 L 13.2 26.1 L 14.0 24.5 L 14.8 21.4 L 14.8 19.8 L 14.0 17.9 L 13.4 16.7 L 12.2 14.7 L 11.7 13.7 Z" fill="LANDF" />\n <path d="M 11.7 13.7 L 13.2 15.1 L 14.8 16.3 L 15.4 17.2 L 15.9 18.8 L 16.4 20.4 L 16.4 21.6 L 15.6 23.5 L 15.0 25.1 L 14.0 26.3 L 12.2 27.7 L 13.2 26.1 L 14.0 24.5 L 14.8 21.4 L 14.8 19.8 L 14.0 17.9 L 13.4 16.7 L 12.2 14.7 L 11.7 13.7" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 24.4 14.5 L 26.0 14.7 L 27.6 15.3 L 29.1 16.8 L 29.7 17.9 L 30.5 19.4 L 30.7 21.0 L 30.5 22.6 L 30.1 24.0 L 29.5 25.1 L 28.5 26.1 L 27.4 27.7 L 28.5 25.5 L 29.1 23.5 L 29.5 21.4 L 29.0 18.8 L 27.9 17.2 L 26.6 15.7 L 25.4 15.1 L 24.4 14.5 Z" fill="LANDF" />\n <path d="M 24.4 14.5 L 26.0 14.7 L 27.6 15.3 L 29.1 16.8 L 29.7 17.9 L 30.5 19.4 L 30.7 21.0 L 30.5 22.6 L 30.1 24.0 L 29.5 25.1 L 28.5 26.1 L 27.4 27.7 L 28.5 25.5 L 29.1 23.5 L 29.5 21.4 L 29.0 18.8 L 27.9 17.2 L 26.6 15.7 L 25.4 15.1 L 24.4 14.5" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <circle cx="16.38" cy="28.67" r="2.33" fill="none" stroke="LANDF" stroke-width="1.2" />\n <circle cx="8.70" cy="21.00" r="7.42" fill="none" stroke="LANDF" stroke-width="1.2" />\n <circle cx="16.75" cy="8.23" r="7.23" fill="none" stroke="LANDF" stroke-width="1.2" />\n <circle cx="23.80" cy="21.38" r="6.86" fill="none" stroke="LANDF" stroke-width="1.2" />\n <path d="M 2.4 28.7 L 13.8 28.7" fill="none" stroke="LANDF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 18.7 28.7 L 29.7 28.7" fill="none" stroke="LANDF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
346
356
  "CAIRNS11": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 17.5 1.1 L 20.1 1.9 L 21.7 2.7 L 23.2 4.6 L 23.8 6.2 L 24.2 7.4 L 24.2 9.4 L 23.4 10.9 L 22.9 12.1 L 21.8 13.5 L 21.3 14.1 L 21.8 12.5 L 22.7 10.9 L 22.9 9.8 L 22.9 7.8 L 22.2 5.8 L 21.7 4.6 L 20.7 3.5 L 19.1 2.1 L 17.5 1.1 Z" fill="CHBLK" />\n <path d="M 17.5 1.1 L 20.1 1.9 L 21.7 2.7 L 23.2 4.6 L 23.8 6.2 L 24.2 7.4 L 24.2 9.4 L 23.4 10.9 L 22.9 12.1 L 21.8 13.5 L 21.3 14.1 L 21.8 12.5 L 22.7 10.9 L 22.9 9.8 L 22.9 7.8 L 22.2 5.8 L 21.7 4.6 L 20.7 3.5 L 19.1 2.1 L 17.5 1.1" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 11.7 13.7 L 13.2 15.1 L 14.8 16.3 L 15.4 17.2 L 15.9 18.8 L 16.4 20.4 L 16.4 21.6 L 15.6 23.5 L 15.0 25.1 L 14.0 26.3 L 12.2 27.7 L 13.2 26.1 L 14.0 24.5 L 14.8 21.4 L 14.8 19.8 L 14.0 17.9 L 13.4 16.7 L 12.2 14.7 L 11.7 13.7 Z" fill="CHBLK" />\n <path d="M 11.7 13.7 L 13.2 15.1 L 14.8 16.3 L 15.4 17.2 L 15.9 18.8 L 16.4 20.4 L 16.4 21.6 L 15.6 23.5 L 15.0 25.1 L 14.0 26.3 L 12.2 27.7 L 13.2 26.1 L 14.0 24.5 L 14.8 21.4 L 14.8 19.8 L 14.0 17.9 L 13.4 16.7 L 12.2 14.7 L 11.7 13.7" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 24.4 14.5 L 26.0 14.7 L 27.6 15.3 L 29.1 16.8 L 29.7 17.9 L 30.5 19.4 L 30.7 21.0 L 30.5 22.6 L 30.1 24.0 L 29.5 25.1 L 28.5 26.1 L 27.4 27.7 L 28.5 25.5 L 29.1 23.5 L 29.5 21.4 L 29.0 18.8 L 27.9 17.2 L 26.6 15.7 L 25.4 15.1 L 24.4 14.5 Z" fill="CHBLK" />\n <path d="M 24.4 14.5 L 26.0 14.7 L 27.6 15.3 L 29.1 16.8 L 29.7 17.9 L 30.5 19.4 L 30.7 21.0 L 30.5 22.6 L 30.1 24.0 L 29.5 25.1 L 28.5 26.1 L 27.4 27.7 L 28.5 25.5 L 29.1 23.5 L 29.5 21.4 L 29.0 18.8 L 27.9 17.2 L 26.6 15.7 L 25.4 15.1 L 24.4 14.5" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <circle cx="16.38" cy="28.67" r="2.33" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <circle cx="8.70" cy="21.00" r="7.42" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <circle cx="16.75" cy="8.23" r="7.23" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <circle cx="23.80" cy="21.38" r="6.86" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <path d="M 2.4 28.7 L 13.8 28.7" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 18.7 28.7 L 29.7 28.7" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
347
357
  "CBLARE51": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 19.5 1.0 L 11.0 14.5 L 21.0 18.1 L 13.0 31.0" fill="none" stroke="CHMGF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
@@ -380,6 +390,18 @@ var S52_POINT_SVGS = {
380
390
  "DIRBOYB1": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 9.0 20.9 L 2.2 20.9 L 16.0 7.1 L 29.7 20.9 L 22.7 20.9 L 22.7 25.5 L 9.0 25.5 L 9.0 20.9" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <circle cx="4.48" cy="10.02" r="3.48" fill="none" stroke="CHGRN" stroke-width="1.8" />\n <circle cx="27.59" cy="10.02" r="3.41" fill="none" stroke="CHRED" stroke-width="1.8" />\n</svg>\n',
381
391
  "DISMAR03": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="CHMGD" stroke-width="1.2" />\n</svg>\n',
382
392
  "DISMAR04": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 5.1 L 1.0 26.9" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 8.4 13.3 L 1.0 21.5" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 3.5 18.7 L 9.2 26.9" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 14.6 13.3 L 14.6 26.9" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 14.6 15.5 L 16.5 13.5 L 18.2 13.0 L 19.3 13.0 L 21.6 14.1 L 22.8 15.7 L 22.8 26.9" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 22.8 16.0 L 23.9 13.8 L 26.1 12.8 L 27.5 12.8 L 29.7 13.8 L 31.0 16.0 L 31.0 26.9" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
393
+ "DNGCIR01": `<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
394
+ <!-- S-52 PresLib \xA7CSYM02 isolated-danger ring. Per IHO S-52 spec, hazards
395
+ (UWTROC / OBSTRN / WRECKS) whose VALSOU is shallower than the
396
+ mariner's safety contour, OR that cover-and-uncover with the tide
397
+ (always dangerous regardless of sounded depth), get a thin DASHED
398
+ MAGENTA RING overlaid on top of the base hazard icon.
399
+ Thin 1.0-px stroke (no fill) at r=14 surrounds the 18-unit base
400
+ hazard asterisks/crosses with ~3 px of breathing room at z16,
401
+ reading as the standard NOAA / ECDIS isolated-danger marker. -->
402
+ <circle cx="16" cy="16" r="14" fill="none" stroke="CHMGD" stroke-width="1.0" stroke-dasharray="2,2" />
403
+ </svg>
404
+ `,
383
405
  "DNGHILIT": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 1.0 L 31.0 1.0 L 31.0 31.0 L 1.0 31.0 L 1.0 1.0 Z" fill="DNGHL" />\n <path d="M 1.0 1.0 L 31.0 1.0 L 31.0 31.0 L 1.0 31.0 L 1.0 1.0" fill="none" stroke="DNGHL" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 31.0 L 31.0 31.0 L 31.0 1.0 L 1.0 1.0 L 1.0 31.0" fill="none" stroke="DNGHL" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
384
406
  "DOMES001": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="15.73" cy="25.99" r="2.56" fill="none" stroke="LANDF" stroke-width="0.8" />\n <path d="M 13.2 25.8 L 3.4 25.8" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 3.4 25.8 L 2.8 24.9 L 2.0 22.8 L 1.2 20.7 L 1.0 19.0 L 1.0 16.6 L 1.6 14.1 L 2.7 11.2 L 3.6 9.4 L 5.3 7.6 L 7.1 6.1 L 8.8 5.2 L 11.6 4.2 L 14.0 3.7 L 16.6 3.4 L 19.5 3.9 L 22.3 4.8 L 25.0 6.5 L 27.5 8.9 L 28.9 10.8 L 30.2 13.3 L 30.9 16.4 L 31.0 20.1 L 30.4 22.6 L 29.6 24.6 L 28.7 25.6" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 18.2 25.8 L 28.6 25.8 L 28.8 25.3" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
385
407
  "DOMES011": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="15.73" cy="25.99" r="2.56" fill="none" stroke="CHBLK" stroke-width="0.8" />\n <path d="M 13.2 25.8 L 3.4 25.8" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 3.4 25.8 L 2.8 24.9 L 2.0 22.8 L 1.2 20.7 L 1.0 19.0 L 1.0 16.6 L 1.6 14.1 L 2.7 11.2 L 3.6 9.4 L 5.3 7.6 L 7.1 6.1 L 8.8 5.2 L 11.6 4.2 L 14.0 3.7 L 16.6 3.4 L 19.5 3.9 L 22.3 4.8 L 25.0 6.5 L 27.5 8.9 L 28.9 10.8 L 30.2 13.3 L 30.9 16.4 L 31.0 20.1 L 30.4 22.6 L 29.6 24.6 L 28.7 25.6" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 18.2 25.8 L 28.6 25.8 L 28.8 25.3" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
@@ -424,9 +446,10 @@ var S52_POINT_SVGS = {
424
446
  "ISODGR01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 16.0 1.0 L 26.7 5.3 L 31.0 16.0 L 26.7 26.7 L 16.0 31.0 L 5.3 26.7 L 1.0 16.0 L 5.3 5.3 L 16.0 1.0 L 16.0 12.8 L 21.9 6.9 L 25.1 10.1 L 19.2 16.0 L 25.1 21.9 L 21.9 25.1 L 16.0 19.2 L 10.1 25.1 L 6.9 21.9 L 12.8 16.0 L 6.9 10.1 L 10.1 6.9 L 16.0 12.8 L 16.0 1.0 Z" fill="ISDNG" />\n <path d="M 16.0 1.0 L 26.7 5.3 L 31.0 16.0 L 26.7 26.7 L 16.0 31.0 L 5.3 26.7 L 1.0 16.0 L 5.3 5.3 L 16.0 1.0 L 16.0 12.8 L 21.9 6.9 L 25.1 10.1 L 19.2 16.0 L 25.1 21.9 L 21.9 25.1 L 16.0 19.2 L 10.1 25.1 L 6.9 21.9 L 12.8 16.0 L 6.9 10.1 L 10.1 6.9 L 16.0 12.8 L 16.0 1.0" fill="none" stroke="ISDNG" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 16.0 L 5.3 5.3 L 16.0 1.0 L 26.7 5.3 L 31.0 16.0 L 26.7 26.7 L 16.0 31.0 L 5.3 26.7 L 1.0 16.0" fill="none" stroke="ISDNG" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
425
447
  "ITZARE51": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 4.7 27.8 L 4.7 4.2" fill="none" stroke="CHMGF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 23.1 4.3 L 23.1 27.8" fill="none" stroke="CHMGF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 4.3 L 8.7 4.3" fill="none" stroke="CHMGF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.3 27.7 L 8.7 27.7" fill="none" stroke="CHMGF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 15.1 4.3 L 31.0 4.3" fill="none" stroke="CHMGF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
426
448
  "LIGHTDEF": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 16.3 31.0 L 10.9 6.9 L 10.9 5.8 L 11.2 4.2 L 12.0 2.8 L 12.8 2.1 L 14.1 1.0 L 16.0 1.0 L 17.6 1.0 L 18.7 1.3 L 20.3 2.3 L 20.8 3.9 L 21.1 5.3 L 21.1 6.6 L 16.3 31.0 Z" fill="CHMGD" />\n <path d="M 16.3 31.0 L 10.9 6.9 L 10.9 5.8 L 11.2 4.2 L 12.0 2.8 L 12.8 2.1 L 14.1 1.0 L 16.0 1.0 L 17.6 1.0 L 18.7 1.3 L 20.3 2.3 L 20.8 3.9 L 21.1 5.3 L 21.1 6.6 L 16.3 31.0" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.3 31.0 L 10.9 6.4 L 10.9 4.7 L 11.4 3.1 L 12.3 2.3 L 13.6 1.3 L 15.2 1.0 L 16.3 1.0 L 17.6 1.0 L 18.9 1.5 L 20.0 2.6 L 20.8 4.2 L 21.1 5.3 L 20.8 7.7 L 16.3 31.0" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
427
- "LIGHTS11": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 16.3 28.0 L 11.8 7.1 L 11.8 6.3 L 11.8 4.9 L 12.4 3.5 L 13.2 3.0 L 14.3 2.1 L 16.0 1.9 L 17.4 2.1 L 18.5 2.4 L 19.6 3.2 L 20.2 4.6 L 20.4 5.7 L 20.4 6.9 L 16.3 28.0 Z" fill="LITRD" />\n <path d="M 16.3 28.0 L 11.8 7.1 L 11.8 6.3 L 11.8 4.9 L 12.4 3.5 L 13.2 3.0 L 14.3 2.1 L 16.0 1.9 L 17.4 2.1 L 18.5 2.4 L 19.6 3.2 L 20.2 4.6 L 20.4 5.7 L 20.4 6.9 L 16.3 28.0" fill="none" stroke="LITRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 21.3 5.2 L 21.0 6.6 L 16.3 31.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.3 28.0 L 11.5 6.6 L 11.8 5.2 L 12.1 4.1 L 12.9 3.2 L 14.1 2.1 L 15.4 1.9 L 16.3 1.9 L 17.4 2.1 L 18.8 2.7 L 19.6 3.5 L 20.2 4.6 L 20.4 5.7 L 20.2 7.7 L 16.3 28.0" fill="none" stroke="LITRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.3 31.0 L 10.7 6.0 L 11.5 3.5 L 13.8 1.6 L 16.3 1.0 L 18.5 1.9 L 19.9 2.7 L 21.0 4.9" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
449
+ "LIGHTHOUSE01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <rect x="6" y="26" width="20" height="4" fill="CHBLK" />\n <path d="M 9 26 L 12 8 L 20 8 L 23 26 Z" fill="CHBLK" />\n <rect x="13" y="4" width="6" height="4" fill="CHBLK" />\n <path d="M 12 4 L 16 1 L 20 4 Z" fill="CHBLK" />\n</svg>\n',
450
+ "LIGHTS11": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <g transform="translate(10 10) rotate(135) scale(0.9) translate(-16.3 -28)" fill="LITRD">\n <path d="M 16.3 28 L 11.8 7.1 L 11.8 6.3 L 11.8 4.9 L 12.4 3.5 L 13.2 3 L 14.3 2.1 L 16 1.9 L 17.4 2.1 L 18.5 2.4 L 19.6 3.2 L 20.2 4.6 L 20.4 5.7 L 20.4 6.9 L 16.3 28 Z" />\n </g>\n</svg>\n',
428
451
  "LIGHTS12": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 16.3 28.0 L 11.8 7.1 L 11.8 6.3 L 11.8 4.9 L 12.4 3.5 L 13.2 3.0 L 14.3 2.1 L 16.0 1.9 L 17.4 2.1 L 18.5 2.4 L 19.6 3.2 L 20.2 4.6 L 20.4 5.7 L 20.4 6.9 L 16.3 28.0 Z" fill="LITGN" />\n <path d="M 16.3 28.0 L 11.8 7.1 L 11.8 6.3 L 11.8 4.9 L 12.4 3.5 L 13.2 3.0 L 14.3 2.1 L 16.0 1.9 L 17.4 2.1 L 18.5 2.4 L 19.6 3.2 L 20.2 4.6 L 20.4 5.7 L 20.4 6.9 L 16.3 28.0" fill="none" stroke="LITGN" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 21.3 5.2 L 21.0 6.6 L 16.3 31.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.3 28.0 L 11.5 6.6 L 11.8 5.2 L 12.1 4.1 L 12.9 3.2 L 14.1 2.1 L 15.4 1.9 L 16.3 1.9 L 17.4 2.1 L 18.8 2.7 L 19.6 3.5 L 20.2 4.6 L 20.4 5.7 L 20.2 7.7 L 16.3 28.0" fill="none" stroke="LITGN" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.3 31.0 L 10.7 6.0 L 11.5 3.5 L 13.8 1.6 L 16.3 1.0 L 18.5 1.9 L 19.9 2.7 L 21.0 4.9" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
429
- "LIGHTS13": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 16.3 28.0 L 11.8 7.1 L 11.8 6.3 L 11.8 4.9 L 12.4 3.5 L 13.2 3.0 L 14.3 2.1 L 16.0 1.9 L 17.4 2.1 L 18.5 2.4 L 19.6 3.2 L 20.2 4.6 L 20.4 5.7 L 20.4 6.9 L 16.3 28.0 Z" fill="LITYW" />\n <path d="M 16.3 28.0 L 11.8 7.1 L 11.8 6.3 L 11.8 4.9 L 12.4 3.5 L 13.2 3.0 L 14.3 2.1 L 16.0 1.9 L 17.4 2.1 L 18.5 2.4 L 19.6 3.2 L 20.2 4.6 L 20.4 5.7 L 20.4 6.9 L 16.3 28.0" fill="none" stroke="LITYW" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 21.3 5.2 L 21.0 6.6 L 16.3 31.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.3 28.0 L 11.5 6.6 L 11.8 5.2 L 12.1 4.1 L 12.9 3.2 L 14.1 2.1 L 15.4 1.9 L 16.3 1.9 L 17.4 2.1 L 18.8 2.7 L 19.6 3.5 L 20.2 4.6 L 20.4 5.7 L 20.2 7.7 L 16.3 28.0" fill="none" stroke="LITYW" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.3 31.0 L 10.7 6.0 L 11.5 3.5 L 13.8 1.6 L 16.3 1.0 L 18.5 1.9 L 19.9 2.7 L 21.0 4.9" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
452
+ "LIGHTS13": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <g transform="translate(10 10) rotate(135) scale(0.9) translate(-16.3 -28)" fill="LITYW">\n <path d="M 16.3 28 L 11.8 7.1 L 11.8 6.3 L 11.8 4.9 L 12.4 3.5 L 13.2 3 L 14.3 2.1 L 16 1.9 L 17.4 2.1 L 18.5 2.4 L 19.6 3.2 L 20.2 4.6 L 20.4 5.7 L 20.4 6.9 L 16.3 28 Z" />\n </g>\n</svg>\n',
430
453
  "LIGHTS14": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 16.3 28.0 L 11.8 7.1 L 11.8 6.3 L 11.8 4.9 L 12.4 3.5 L 13.2 3.0 L 14.3 2.1 L 16.0 1.9 L 17.4 2.1 L 18.5 2.4 L 19.6 3.2 L 20.2 4.6 L 20.4 5.7 L 20.4 6.9 L 16.3 28.0 Z" fill="CHMGD" />\n <path d="M 16.3 28.0 L 11.8 7.1 L 11.8 6.3 L 11.8 4.9 L 12.4 3.5 L 13.2 3.0 L 14.3 2.1 L 16.0 1.9 L 17.4 2.1 L 18.5 2.4 L 19.6 3.2 L 20.2 4.6 L 20.4 5.7 L 20.4 6.9 L 16.3 28.0" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 21.3 5.2 L 21.0 6.6 L 16.3 31.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.3 28.0 L 11.5 6.6 L 11.8 5.2 L 12.1 4.1 L 12.9 3.2 L 14.1 2.1 L 15.4 1.9 L 16.3 1.9 L 17.4 2.1 L 18.8 2.7 L 19.6 3.5 L 20.2 4.6 L 20.4 5.7 L 20.2 7.7 L 16.3 28.0" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.3 31.0 L 10.7 6.0 L 11.5 3.5 L 13.8 1.6 L 16.3 1.0 L 18.5 1.9 L 19.9 2.7 L 21.0 4.9" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
431
454
  "LIGHTS81": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 25.9 L 6.9 5.9 L 12.9 26.0 L 19.0 5.9 L 25.0 26.1 L 31.0 5.9" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
432
455
  "LIGHTS82": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="6.96" cy="17.80" r="5.96" fill="none" stroke="CHMGD" stroke-width="1.2" />\n <path d="M 14.9 23.1 L 25.9 23.5" fill="none" stroke="CHMGD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 13.3 12.1 L 28.0 8.2" fill="none" stroke="CHMGD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 15.8 17.5 L 31.0 16.0" fill="none" stroke="CHMGD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
@@ -436,6 +459,8 @@ var S52_POINT_SVGS = {
436
459
  "LITVES01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="24.83" r="2.33" fill="none" stroke="CHBLK" stroke-width="1.2" />\n <path d="M 1.0 24.8 L 12.7 24.8" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 6.0 24.8 L 2.7 16.5" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 26.0 24.8 L 29.3 16.5" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.0 19.0 L 16.0 9.8" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 9.3 19.0 L 9.3 13.0" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 22.7 19.0 L 22.7 13.2" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.0 9.8 L 16.0 4.8" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 12.7 6.5 L 19.3 9.8" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 12.7 9.8 L 19.3 6.5" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 4.7 21.5 L 10.2 21.5" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 21.8 21.5 L 27.3 21.5" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 2.7 16.5 L 9.2 19.0 L 16.0 19.0 L 22.7 19.0 L 29.3 16.5" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 19.3 24.8 L 31.0 24.8" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
437
460
  "LITVES02": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 5.9 23.3 L 1.0 15.1 L 31.0 15.1 L 25.6 23.3 L 5.9 23.3 Z" fill="CHBLK" />\n <path d="M 5.9 23.3 L 1.0 15.1 L 31.0 15.1 L 25.6 23.3 L 5.9 23.3" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.0 15.1 L 16.0 8.7" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
438
461
  "LNDARE01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="13.54" fill="none" stroke="LANDA" stroke-width="0.8" />\n <path d="M 16.0 16.0 Z" fill="LANDA" />\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="CSTLN" stroke-width="1.2" />\n</svg>\n',
462
+ "LNDMRK18": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <line x1="16" y1="28" x2="16" y2="10" stroke="CHBLK" stroke-width="1.5"/>\n <circle cx="16" cy="10" r="2" fill="CHBLK"/>\n <line x1="16" y1="10" x2="6" y2="2" stroke="CHBLK" stroke-width="1.2"/>\n <line x1="16" y1="10" x2="26" y2="2" stroke="CHBLK" stroke-width="1.2"/>\n <line x1="16" y1="10" x2="6" y2="18" stroke="CHBLK" stroke-width="1.2"/>\n <line x1="16" y1="10" x2="26" y2="18" stroke="CHBLK" stroke-width="1.2"/>\n <circle cx="16" cy="16" r="7" fill="none" stroke="CHBLK" stroke-width="0.6" stroke-dasharray="2,2"/>\n</svg>\n',
463
+ "LNDMRK19": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <line x1="16" y1="28" x2="16" y2="10" stroke="CHBLK" stroke-width="1.5"/>\n <circle cx="16" cy="10" r="1.5" fill="CHBLK"/>\n <line x1="16" y1="10" x2="16" y2="2" stroke="CHBLK" stroke-width="1.2"/>\n <line x1="16" y1="10" x2="9" y2="17" stroke="CHBLK" stroke-width="1.2"/>\n <line x1="16" y1="10" x2="23" y2="17" stroke="CHBLK" stroke-width="1.2"/>\n <circle cx="16" cy="16" r="7" fill="none" stroke="CHBLK" stroke-width="0.6" stroke-dasharray="2,2"/>\n</svg>\n',
439
464
  "LOCMAG01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 18.9 22.5 L 18.9 31.0" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 18.9 23.4 L 18.9 1.0 L 13.1 17.9 L 14.2 18.3 L 15.1 18.7 L 15.9 19.4 L 16.4 20.0 L 17.0 20.6 L 17.8 21.6 L 18.3 22.4 L 18.8 23.3" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
440
465
  "LOCMAG51": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 18.9 23.6 L 18.9 1.0 L 13.0 18.1 L 14.1 18.5 L 15.0 18.9 L 15.8 19.6 L 16.4 20.2 L 17.0 20.8 L 17.7 21.8 L 18.3 22.6 L 18.8 23.5" fill="none" stroke="CHMGF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 19.0 23.5 L 19.0 31.0" fill="none" stroke="CHMGF" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
441
466
  "LOWACC01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 4.5 10.2 L 5.8 10.2" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 5.0 8.0 L 5.0 6.6 L 5.0 6.1 L 5.4 5.6 L 5.7 5.2 L 6.3 4.5 L 6.6 3.9 L 6.8 3.2 L 6.6 2.5 L 6.3 2.0 L 5.8 1.5 L 5.3 1.1 L 4.8 1.1 L 4.2 1.0 L 3.7 1.1 L 3.2 1.4 L 2.7 1.9 L 2.4 2.4 L 2.3 2.8 L 2.3 3.3 L 2.4 3.7 L 2.5 3.8" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 6.8 8.1 L 29.7 31.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
@@ -458,9 +483,19 @@ var S52_POINT_SVGS = {
458
483
  "NMKRCD04": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 16.0 L 16.0 1.0 L 16.0 31.0 L 1.0 16.0 Z" fill="CHGRN" />\n <path d="M 1.0 16.0 L 16.0 1.0 L 16.0 31.0 L 1.0 16.0" fill="none" stroke="CHGRN" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 31.0 16.0 L 16.0 31.0 L 16.0 1.0 L 31.0 16.0 Z" fill="CHWHT" />\n <path d="M 31.0 16.0 L 16.0 31.0 L 16.0 1.0 L 31.0 16.0" fill="none" stroke="CHWHT" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 16.0 L 16.0 1.0 L 31.0 16.0 L 16.0 31.0 L 1.0 16.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
459
484
  "NORTHAR1": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 16.3 31.0 L 16.3 1.0" fill="none" stroke="SCLBR" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 12.8 20.7 L 12.8 14.1 L 19.6 20.7 L 19.6 14.2" fill="none" stroke="SCLBR" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 12.4 8.9 L 19.6 8.9 L 16.2 1.1 L 12.4 8.9 Z" fill="SCLBR" />\n <path d="M 12.4 8.9 L 19.6 8.9 L 16.2 1.1 L 12.4 8.9" fill="none" stroke="SCLBR" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
460
485
  "NOTBRD11": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 8.5 31.0 L 23.5 31.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.0 31.0 L 16.0 16.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 4.8 16.0 L 27.3 16.0 L 27.3 1.0 L 4.8 1.0 L 4.8 16.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
461
- "OBSTRN01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="DEPVS" stroke-width="0.8" />\n <path d="M 16.0 16.0 Z" fill="DEPVS" />\n</svg>\n',
486
+ "OBSTRN01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <!-- S-52 PresLib OBSTRN01 / INT1 K40: obstruction, position-fixed (fish weir,\n snag, sunken object, foul ground point). NOAA portrayal: bold "+" cross\n inside a dashed oval. The dashed boundary (longer dashes than the dotted\n K41 variant) signals "area of obstruction" \u2014 mariners should give the\n feature a wide berth even when its precise extent is unclear. 18-unit\n cross with 1.6 stroke for harbor-zoom visibility. -->\n <ellipse cx="16" cy="16" rx="13" ry="10" fill="none" stroke="CHBLK" stroke-width="1.0" stroke-dasharray="1.8,1.4" />\n <path d="M 16 7 L 16 25" fill="none" stroke="CHBLK" stroke-width="1.6" stroke-linecap="round" />\n <path d="M 7 16 L 25 16" fill="none" stroke="CHBLK" stroke-width="1.6" stroke-linecap="round" />\n</svg>\n',
462
487
  "OBSTRN02": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"></svg>\n',
463
- "OBSTRN03": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="DEPIT" stroke-width="0.8" />\n <path d="M 16.0 16.0 Z" fill="DEPIT" />\n</svg>\n',
488
+ "OBSTRN03": `<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
489
+ <!-- S-52 PresLib OBSTRN03 / INT1 K41: obstruction always submerged with
490
+ sounded depth (WATLEV=3). NOAA portrayal: bold "+" cross inside a
491
+ DOTTED oval (shorter, tighter dashes than OBSTRN01's dashed style).
492
+ Depth rendered separately via VALSOU label. 18-unit cross matching
493
+ UWTROC bold weight for visual hazard consistency. -->
494
+ <ellipse cx="16" cy="16" rx="13" ry="10" fill="none" stroke="CHBLK" stroke-width="0.9" stroke-dasharray="1.0,1.2" />
495
+ <path d="M 16 7 L 16 25" fill="none" stroke="CHBLK" stroke-width="1.6" stroke-linecap="round" />
496
+ <path d="M 7 16 L 25 16" fill="none" stroke="CHBLK" stroke-width="1.6" stroke-linecap="round" />
497
+ </svg>
498
+ `,
464
499
  "OBSTRN18": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 1.0 L 1.0 31.0 L 31.0 31.0 L 30.8 1.0 L 1.0 1.0 Z" fill="LANDA" />\n <path d="M 1.0 1.0 L 1.0 31.0 L 31.0 31.0 L 30.8 1.0 L 1.0 1.0" fill="none" stroke="LANDA" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 1.0 L 1.0 31.0 L 31.0 31.0 L 30.8 1.0 L 1.0 1.0" fill="none" stroke="CSTLN" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
465
500
  "OFSPLF01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="3.75" fill="none" stroke="CHBLK" stroke-width="0.8" />\n <path d="M 16.0 16.0 Z" fill="CHBLK" />\n <path d="M 1.0 1.0 L 31.0 1.0 L 31.0 31.0 L 1.0 31.0 L 1.0 1.0" fill="none" stroke="CHBLK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
466
501
  "OSPONE02": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 16.0 L 31.0 16.0" fill="none" stroke="SHIPS" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
@@ -471,6 +506,8 @@ var S52_POINT_SVGS = {
471
506
  "PASTRK02": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 16.0 L 31.0 16.0" fill="none" stroke="SYTRK" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
472
507
  "PILBOP02": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 16.0 1.0 L 10.2 16.2 L 16.0 31.0 L 22.1 16.2 L 16.0 1.0 Z" fill="CHMGD" />\n <path d="M 16.0 1.0 L 10.2 16.2 L 16.0 31.0 L 22.1 16.2 L 16.0 1.0" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <circle cx="16.00" cy="16.17" r="14.77" fill="none" stroke="CHMGD" stroke-width="0.8" />\n</svg>\n',
473
508
  "PILPNT02": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="CHBLK" stroke-width="0.8" />\n <path d="M 16.0 16.0 Z" fill="CHBLK" />\n</svg>\n',
509
+ "PIPLIN01": '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">\n <circle cx="8" cy="8" r="3.5" fill="none" stroke="PIPLN" stroke-width="1.6" />\n</svg>\n',
510
+ "PIPOHD01": '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">\n <path d="M 3 12 L 8 5 L 13 12" fill="none" stroke="PIPLN" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" />\n <line x1="3" y1="13" x2="5" y2="13" stroke="PIPLN" stroke-width="1.4" stroke-linecap="round" />\n <line x1="11" y1="13" x2="13" y2="13" stroke="PIPLN" stroke-width="1.4" stroke-linecap="round" />\n</svg>\n',
474
511
  "PLNPOS01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 15.9 L 1.4 14.3 L 3.4 12.5 L 6.7 11.2 L 10.2 10.6 L 15.6 10.2 L 21.2 10.6 L 25.0 11.2 L 28.2 12.5 L 30.3 14.3 L 31.0 15.9 L 30.8 18.0 L 28.2 19.7 L 25.0 20.8 L 21.2 21.8 L 15.6 21.8 L 10.2 21.8 L 6.7 21.0 L 2.9 19.7 L 1.1 18.1 L 1.0 15.9" fill="none" stroke="PLRTE" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
475
512
  "PLNPOS02": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 16.0 L 31.0 16.0" fill="none" stroke="PLRTE" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
476
513
  "PLNSPD03": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 26.1 L 1.1 5.8 L 31.0 5.8 L 31.0 26.2 L 1.0 26.1" fill="none" stroke="PLRTE" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
@@ -584,12 +621,14 @@ var S52_POINT_SVGS = {
584
621
  "TWRTPT53": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 13.3 4.5 L 16.0 1.0 L 18.6 4.5" fill="none" stroke="TRFCD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 11.3 7.0 L 9.6 9.5 L 12.8 9.5" fill="none" stroke="TRFCD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 18.9 9.4 L 22.4 9.4 L 20.4 6.8" fill="none" stroke="TRFCD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 12.7 26.9 L 12.7 31.0 L 19.2 31.0 L 19.2 27.0" fill="none" stroke="TRFCD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 12.7 23.7 L 12.7 20.3" fill="none" stroke="TRFCD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 12.7 13.0 L 12.7 16.2" fill="none" stroke="TRFCD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 19.6 12.8 L 19.6 15.9" fill="none" stroke="TRFCD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 19.5 20.1 L 19.5 23.4" fill="none" stroke="TRFCD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
585
622
  "UNITFTH1": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 6.3 14.0 L 25.7 14.0" fill="none" stroke="SCLBR" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 25.8 1.0 L 6.3 1.0 L 6.2 31.0" fill="none" stroke="SCLBR" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
586
623
  "UNITMTR1": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 3.1 31.0 L 3.1 1.0 L 16.1 25.2 L 28.9 1.4 L 28.9 30.6" fill="none" stroke="SCLBR" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
587
- "UWTROC03": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="DEPVS" stroke-width="0.8" />\n <path d="M 16.0 16.0 Z" fill="DEPVS" />\n <path d="M 16.1 6.4 L 16.1 27.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 5.9 16.4 L 26.2 16.4" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
588
- "UWTROC04": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 31.0 16.1 L 1.0 16.1" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 24.8 3.9 L 7.1 28.2" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 24.8 27.7 L 6.8 3.8" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
624
+ "UWTROC01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <!-- S-52 PresLib UWTROC01 / INT1 K11: rock that covers and uncovers\n (WATLEV=4). Per IHO S-52 PresLib Edition 4.0 Annex A, the symbol is a\n plain 4-line asterisk \u2014 geometrically identical to UWTROC04 (K13).\n The K11/K13 distinction is conveyed by attribute context: K11 has no\n VALSOU (depth varies with tide so no fixed sounding), K13 carries a\n VALSOU label rendered separately. 18-unit asterisk, 1.6 stroke. -->\n <path d="M 16 7 L 16 25" fill="none" stroke="CHBLK" stroke-width="1.6" stroke-linecap="round" />\n <path d="M 7 16 L 25 16" fill="none" stroke="CHBLK" stroke-width="1.6" stroke-linecap="round" />\n <path d="M 9.5 9.5 L 22.5 22.5" fill="none" stroke="CHBLK" stroke-width="1.6" stroke-linecap="round" />\n <path d="M 22.5 9.5 L 9.5 22.5" fill="none" stroke="CHBLK" stroke-width="1.6" stroke-linecap="round" />\n</svg>\n',
625
+ "UWTROC03": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <!-- S-52 PresLib UWTROC03 / INT1 K12: rock awash at chart datum (WATLEV=5).\n NOAA portrayal: bold 4-line asterisk enclosed in a dotted oval \u2014 the\n oval signals "at chart datum, dangerous" and visually distinguishes\n awash rocks from sounded submerged rocks (UWTROC04). 18-unit asterisk\n inside a 28\xD722 dotted oval. -->\n <ellipse cx="16" cy="16" rx="14" ry="11" fill="none" stroke="CHBLK" stroke-width="1.0" stroke-dasharray="1.0,1.2" />\n <path d="M 16 7 L 16 25" fill="none" stroke="CHBLK" stroke-width="1.5" stroke-linecap="round" />\n <path d="M 7 16 L 25 16" fill="none" stroke="CHBLK" stroke-width="1.5" stroke-linecap="round" />\n <path d="M 9.5 9.5 L 22.5 22.5" fill="none" stroke="CHBLK" stroke-width="1.5" stroke-linecap="round" />\n <path d="M 22.5 9.5 L 9.5 22.5" fill="none" stroke="CHBLK" stroke-width="1.5" stroke-linecap="round" />\n</svg>\n',
626
+ "UWTROC04": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <!-- S-52 PresLib UWTROC04 / INT1 K13: underwater rock always submerged with\n sounded depth (WATLEV=3, dangerous to surface navigation). NOAA portrayal:\n bold 4-line asterisk, depth value rendered separately by VALSOU label.\n 18-unit span with 1.6 stroke for clear visibility at harbor zoom \u2014 these\n are safety-critical hazards and need to read like NOAA paper-chart\n asterisks (~2 mm at 1:5000 \u2248 18 px on screen at z16). -->\n <path d="M 16 7 L 16 25" fill="none" stroke="CHBLK" stroke-width="1.6" stroke-linecap="round" />\n <path d="M 7 16 L 25 16" fill="none" stroke="CHBLK" stroke-width="1.6" stroke-linecap="round" />\n <path d="M 9.5 9.5 L 22.5 22.5" fill="none" stroke="CHBLK" stroke-width="1.6" stroke-linecap="round" />\n <path d="M 22.5 9.5 L 9.5 22.5" fill="none" stroke="CHBLK" stroke-width="1.6" stroke-linecap="round" />\n</svg>\n',
589
627
  "VECGND01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 7.5 26.4 L 15.9 15.8 L 24.6 26.6" fill="none" stroke="SHIPS" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 23.3 L 15.8 5.4 L 31.0 23.4" fill="none" stroke="SHIPS" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
590
628
  "VECGND21": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 7.5 26.4 L 15.9 15.8 L 24.6 26.6" fill="none" stroke="ARPAT" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 23.3 L 15.8 5.4 L 31.0 23.4" fill="none" stroke="ARPAT" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
591
629
  "VECWTR01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 24.9 L 15.8 7.0 L 31.0 25.0" fill="none" stroke="SHIPS" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
592
630
  "VECWTR21": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 24.9 L 15.8 7.0 L 31.0 25.0" fill="none" stroke="ARPAT" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
631
+ "WATTUR01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 8 11 Q 12 9 16 11 T 24 11" fill="none" stroke="CHBLK" stroke-width="1.4" stroke-linecap="round" />\n <path d="M 8 16 Q 12 14 16 16 T 24 16" fill="none" stroke="CHBLK" stroke-width="1.4" stroke-linecap="round" />\n <path d="M 8 21 Q 12 19 16 21 T 24 21" fill="none" stroke="CHBLK" stroke-width="1.4" stroke-linecap="round" />\n</svg>\n',
593
632
  "WATTUR02": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 1.0 18.9 L 2.8 18.3 L 5.0 16.8 L 7.0 13.9 L 9.0 12.9 L 11.2 13.1 L 9.0 15.1 L 9.0 17.0 L 11.3 19.1 L 13.2 18.3 L 15.0 17.1 L 17.1 13.9 L 19.3 13.0 L 21.1 13.1 L 19.0 15.1 L 18.9 17.2 L 21.3 19.1 L 23.3 18.2 L 25.0 17.1 L 27.0 14.1 L 29.3 13.0 L 31.0 13.2 L 29.0 15.7 L 29.1 17.2 L 30.9 19.1" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
594
633
  "WAYPNT01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="PLRTE" stroke-width="1.8" />\n</svg>\n',
595
634
  "WAYPNT03": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <circle cx="16.00" cy="16.00" r="15.00" fill="none" stroke="APLRT" stroke-width="1.2" />\n</svg>\n',
@@ -607,6 +646,7 @@ var S52_POINT_SVGS = {
607
646
  };
608
647
  var S52_PATTERN_SVGS = {
609
648
  "AIRARE02": '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28">\n <path d="M 8.9 25.1 L 18.8 25.1 L 15.9 21.8 L 15.9 17.6 L 27.0 17.6 L 16.8 10.7 L 16.8 5.6 L 14.3 2.9 L 11.3 5.6 L 11.3 10.7 L 1.0 17.3 L 11.5 17.4 L 11.5 22.0 L 8.9 25.1" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
649
+ "CBLARE01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 0 32 L 32 0" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-opacity="0.7" />\n <path d="M -16 32 L 16 0" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-opacity="0.7" />\n <path d="M 16 32 L 48 0" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-opacity="0.7" />\n</svg>\n',
610
650
  "DIAMOND1": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 8.2 1.0 L 23.8 31.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 8.2 31.0 L 23.8 1.0" fill="none" stroke="CHBLK" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
611
651
  "DQUALA11": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 22.4 9.2 L 27.7 9.2" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 26.7 7.1 L 23.5 11.4" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 23.5 7.1 L 26.7 11.4" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 13.1 9.2 L 18.5 9.2" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 17.4 7.1 L 14.2 11.4" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 14.2 7.1 L 17.4 11.4" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 3.8 9.3 L 9.1 9.3" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 8.1 7.2 L 4.9 11.5" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 4.9 7.2 L 8.1 11.5" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 8.8 15.5 L 14.1 15.5" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 13.0 13.4 L 9.8 17.6" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 9.9 13.4 L 13.0 17.6" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 18.1 15.4 L 23.4 15.4" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 22.4 13.3 L 19.2 17.6" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 19.2 13.3 L 22.4 17.5" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 13.7 21.4 L 19.0 21.4" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 18.0 19.3 L 14.8 23.6" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 14.8 19.3 L 18.0 23.6" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.5 9.0 L 1.0 7.6 L 1.2 6.6 L 1.5 5.9 L 2.4 5.6 L 2.9 5.5 L 28.1 5.5 L 29.6 5.7 L 30.5 6.1 L 30.8 6.6 L 31.0 7.1 L 31.0 7.5 L 31.0 8.2 L 30.7 8.7 L 18.5 24.9 L 18.0 25.4 L 17.6 26.0 L 17.1 26.3 L 16.8 26.3 L 16.4 26.5 L 15.8 26.4 L 15.5 26.3 L 14.8 26.1 L 14.4 25.8 L 14.1 25.4 L 13.7 25.0 L 1.5 9.0" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
612
652
  "DQUALA21": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 22.4 9.2 L 27.7 9.2" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 26.7 7.1 L 23.5 11.4" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 23.5 7.1 L 26.7 11.4" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 13.1 9.2 L 18.5 9.2" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 17.4 7.1 L 14.2 11.4" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 14.2 7.1 L 17.4 11.4" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 3.8 9.3 L 9.1 9.3" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 8.1 7.2 L 4.9 11.5" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 4.9 7.2 L 8.1 11.5" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 8.8 15.5 L 14.1 15.5" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 13.0 13.4 L 9.8 17.6" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 9.9 13.4 L 13.0 17.6" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 18.1 15.4 L 23.4 15.4" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 22.4 13.3 L 19.2 17.6" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 19.2 13.3 L 22.4 17.5" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.5 9.0 L 1.0 7.6 L 1.2 6.6 L 1.5 5.9 L 2.4 5.6 L 2.9 5.5 L 28.1 5.5 L 29.6 5.7 L 30.5 6.1 L 30.8 6.6 L 31.0 7.1 L 31.0 7.5 L 31.0 8.2 L 30.7 8.7 L 18.5 24.9 L 18.0 25.4 L 17.6 26.0 L 17.1 26.3 L 16.8 26.3 L 16.4 26.5 L 15.8 26.4 L 15.5 26.3 L 14.8 26.1 L 14.4 25.8 L 14.1 25.4 L 13.7 25.0 L 1.5 9.0" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
@@ -624,6 +664,7 @@ var S52_PATTERN_SVGS = {
624
664
  "MARSHES1": '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">\n <path d="M 8.0 10.4 L 8.0 1.1" fill="none" stroke="CHBRN" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 3.7 14.9 L 12.4 14.9" fill="none" stroke="CHBRN" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 1.0 12.0 L 15.0 12.0" fill="none" stroke="CHBRN" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 5.0 11.6 L 2.5 5.8" fill="none" stroke="CHBRN" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 10.8 11.6 L 13.3 6.0" fill="none" stroke="CHBRN" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
625
665
  "NODATA03": '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28">\n <path d="M 1.0 14.1 L 27.0 13.9" fill="none" stroke="CHGRD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
626
666
  "OVERSC01": '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">\n <path d="M 8.0 1.0 L 8.0 15.0" fill="none" stroke="CHGRD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
667
+ "PIPARE01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 0 32 L 32 0" fill="none" stroke="PIPLN" stroke-width="0.8" stroke-opacity="0.7" />\n <path d="M -16 32 L 16 0" fill="none" stroke="PIPLN" stroke-width="0.8" stroke-opacity="0.7" />\n <path d="M 16 32 L 48 0" fill="none" stroke="PIPLN" stroke-width="0.8" stroke-opacity="0.7" />\n</svg>\n',
627
668
  "PRTSUR01": '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">\n <path d="M 1.0 8.0 L 15.0 8.0" fill="none" stroke="CHGRD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
628
669
  "QUESMRK1": '<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">\n <path d="M 5.5 4.9 L 6.1 3.8 L 6.6 2.7 L 7.3 2.1 L 8.0 1.4 L 9.0 1.0 L 10.0 1.1 L 11.2 1.4 L 12.3 1.7 L 13.3 3.1 L 14.0 3.8 L 14.5 4.7 L 14.5 5.8 L 14.0 6.7 L 13.5 7.6 L 12.6 8.6 L 11.7 9.6 L 10.9 10.6 L 10.3 11.4 L 9.9 12.1 L 9.8 13.0 L 9.8 13.9 L 9.8 14.6 L 9.9 15.5 L 9.9 15.6" fill="none" stroke="CHMGD" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 9.0 19.0 L 11.2 19.0" fill="none" stroke="CHMGD" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
629
670
  "RCKLDG01": '<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">\n <path d="M 5.6 29.0 L 9.8 25.7" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 4.2 7.2 L 6.2 13.2" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 16.1 14.7 L 13.0 19.2" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 13.2 7.8 L 14.7 3.1" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 17.9 22.2 L 18.9 27.8" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 28.8 21.5 L 31.0 16.5" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 29.1 9.8 L 24.2 8.2" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 6.2 13.1 L 1.0 10.4" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 13.2 19.1 L 12.7 13.9" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 5.5 29.0 L 6.0 24.0" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 18.0 22.2 L 22.1 25.5" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 30.9 16.5 L 25.7 18.7" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 24.3 8.3 L 28.3 5.6" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n <path d="M 14.7 3.0 L 16.8 7.6" fill="none" stroke="LANDF" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round" />\n</svg>\n',
@@ -699,10 +740,33 @@ function applyColorTheme(svgString, colorTable = "DAY") {
699
740
  }
700
741
  );
701
742
  }
743
+ function applyStrokeBoost(svgString, multiplier) {
744
+ if (multiplier === 1) return svgString;
745
+ return svgString.replace(
746
+ /stroke-width="([0-9.]+)"/g,
747
+ (_match, w) => `stroke-width="${(parseFloat(w) * multiplier).toFixed(3)}"`
748
+ );
749
+ }
750
+ var S52_STROKE_BOOST = 1.25;
702
751
 
703
752
  // src/atlas/s52-svg-loader-browser.ts
753
+ var SDF_SYMBOLS = /* @__PURE__ */ new Set([
754
+ "LIGHTS11",
755
+ "LIGHTS13"
756
+ ]);
757
+ var LOGICAL_SIZE = 32;
758
+ var PIXEL_RATIO = 2;
759
+ var RENDER_SIZE = LOGICAL_SIZE * PIXEL_RATIO;
760
+ function upsampleSvg(svg2) {
761
+ return svg2.replace(
762
+ /width="(\d+)"\s+height="(\d+)"/,
763
+ `width="${RENDER_SIZE}" height="${RENDER_SIZE}"`
764
+ );
765
+ }
766
+ function prepareSvg(rawSvg, colorTable) {
767
+ return upsampleSvg(applyStrokeBoost(applyColorTheme(rawSvg, colorTable), S52_STROKE_BOOST));
768
+ }
704
769
  async function loadS52SymbolImages(map, colorTable = "DAY") {
705
- const SIZE3 = 32;
706
770
  const entries = Object.entries(ALL_S52_SVGS);
707
771
  const promises = entries.map(([name, rawSvg]) => {
708
772
  return new Promise((resolve) => {
@@ -710,11 +774,11 @@ async function loadS52SymbolImages(map, colorTable = "DAY") {
710
774
  resolve();
711
775
  return;
712
776
  }
713
- const themedSvg = applyColorTheme(rawSvg, colorTable);
714
- const img = new Image(SIZE3, SIZE3);
777
+ const themedSvg = prepareSvg(rawSvg, colorTable);
778
+ const img = new Image(RENDER_SIZE, RENDER_SIZE);
715
779
  img.onload = () => {
716
780
  if (!map.hasImage(name)) {
717
- map.addImage(name, img, { sdf: false });
781
+ map.addImage(name, img, { sdf: SDF_SYMBOLS.has(name), pixelRatio: PIXEL_RATIO });
718
782
  }
719
783
  resolve();
720
784
  };
@@ -725,7 +789,6 @@ async function loadS52SymbolImages(map, colorTable = "DAY") {
725
789
  await Promise.all(promises);
726
790
  }
727
791
  async function reloadS52SymbolImages(map, colorTable) {
728
- const SIZE3 = 32;
729
792
  const entries = Object.entries(ALL_S52_SVGS);
730
793
  const promises = entries.map(([name, rawSvg]) => {
731
794
  return new Promise((resolve) => {
@@ -733,11 +796,11 @@ async function reloadS52SymbolImages(map, colorTable) {
733
796
  if (map.hasImage(name)) map.removeImage(name);
734
797
  } catch {
735
798
  }
736
- const themedSvg = applyColorTheme(rawSvg, colorTable);
737
- const img = new Image(SIZE3, SIZE3);
799
+ const themedSvg = prepareSvg(rawSvg, colorTable);
800
+ const img = new Image(RENDER_SIZE, RENDER_SIZE);
738
801
  img.onload = () => {
739
802
  if (!map.hasImage(name)) {
740
- map.addImage(name, img, { sdf: false });
803
+ map.addImage(name, img, { sdf: SDF_SYMBOLS.has(name), pixelRatio: PIXEL_RATIO });
741
804
  }
742
805
  resolve();
743
806
  };
@@ -748,6 +811,192 @@ async function reloadS52SymbolImages(map, colorTable) {
748
811
  await Promise.all(promises);
749
812
  }
750
813
 
814
+ // src/atlas/s52-image-cache.ts
815
+ var SDF_SYMBOLS2 = /* @__PURE__ */ new Set(["LIGHTS11", "LIGHTS13"]);
816
+ var LOGICAL_SIZE2 = 32;
817
+ var PIXEL_RATIO2 = 2;
818
+ var RENDER_SIZE2 = LOGICAL_SIZE2 * PIXEL_RATIO2;
819
+ var DB_NAME = "chrt-s52-atlas";
820
+ var DB_VERSION = 1;
821
+ var STORE_NAME = "bitmaps";
822
+ var PARAM_VERSION = "v2";
823
+ function computeAtlasVersion() {
824
+ const names = Object.keys(ALL_S52_SVGS).sort().join("|");
825
+ let h = 2166136261;
826
+ for (let i = 0; i < names.length; i++) {
827
+ h ^= names.charCodeAt(i);
828
+ h = Math.imul(h, 16777619);
829
+ }
830
+ return `${PARAM_VERSION}-${(h >>> 0).toString(16)}-${Object.keys(ALL_S52_SVGS).length}`;
831
+ }
832
+ var ATLAS_VERSION = /* @__PURE__ */ computeAtlasVersion();
833
+ function makeKey(colorTable, name) {
834
+ return `${ATLAS_VERSION}:${colorTable}:${name}`;
835
+ }
836
+ function upsampleSvg2(svg2) {
837
+ return svg2.replace(
838
+ /width="(\d+)"\s+height="(\d+)"/,
839
+ `width="${RENDER_SIZE2}" height="${RENDER_SIZE2}"`
840
+ );
841
+ }
842
+ function prepareSvg2(rawSvg, colorTable) {
843
+ return upsampleSvg2(applyStrokeBoost(applyColorTheme(rawSvg, colorTable), S52_STROKE_BOOST));
844
+ }
845
+ function hasIndexedDB() {
846
+ return typeof indexedDB !== "undefined";
847
+ }
848
+ function hasCanvasToBitmap() {
849
+ return typeof createImageBitmap === "function" && typeof document !== "undefined" && typeof document.createElement === "function";
850
+ }
851
+ var dbPromise = null;
852
+ function openDb() {
853
+ if (!hasIndexedDB()) return Promise.reject(new Error("IndexedDB not available"));
854
+ if (dbPromise) return dbPromise;
855
+ dbPromise = new Promise((resolve, reject) => {
856
+ const req = indexedDB.open(DB_NAME, DB_VERSION);
857
+ req.onupgradeneeded = () => {
858
+ const db = req.result;
859
+ if (!db.objectStoreNames.contains(STORE_NAME)) {
860
+ db.createObjectStore(STORE_NAME);
861
+ }
862
+ };
863
+ req.onsuccess = () => resolve(req.result);
864
+ req.onerror = () => reject(req.error ?? new Error("indexedDB.open failed"));
865
+ req.onblocked = () => reject(new Error("indexedDB.open blocked"));
866
+ });
867
+ dbPromise.catch(() => {
868
+ dbPromise = null;
869
+ });
870
+ return dbPromise;
871
+ }
872
+ async function idbPut(key, value) {
873
+ const db = await openDb();
874
+ return new Promise((resolve, reject) => {
875
+ const tx = db.transaction(STORE_NAME, "readwrite");
876
+ const store = tx.objectStore(STORE_NAME);
877
+ const req = store.put(value, key);
878
+ req.onsuccess = () => resolve();
879
+ req.onerror = () => reject(req.error);
880
+ });
881
+ }
882
+ async function idbGetAllForTheme(colorTable) {
883
+ const out = /* @__PURE__ */ new Map();
884
+ const db = await openDb();
885
+ const names = Object.keys(ALL_S52_SVGS);
886
+ await new Promise((resolve, reject) => {
887
+ const tx = db.transaction(STORE_NAME, "readonly");
888
+ const store = tx.objectStore(STORE_NAME);
889
+ tx.oncomplete = () => resolve();
890
+ tx.onerror = () => reject(tx.error);
891
+ tx.onabort = () => reject(tx.error ?? new Error("idb txn aborted"));
892
+ for (const name of names) {
893
+ const req = store.get(makeKey(colorTable, name));
894
+ req.onsuccess = () => {
895
+ const bm = req.result;
896
+ if (bm) out.set(name, bm);
897
+ };
898
+ }
899
+ });
900
+ return out;
901
+ }
902
+ function decodeSvgToImage(themedSvg) {
903
+ return new Promise((resolve) => {
904
+ const img = new Image(RENDER_SIZE2, RENDER_SIZE2);
905
+ img.onload = () => resolve(img);
906
+ img.onerror = () => resolve(null);
907
+ img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(themedSvg)}`;
908
+ });
909
+ }
910
+ async function imageToBitmap(img) {
911
+ try {
912
+ const canvas = document.createElement("canvas");
913
+ canvas.width = RENDER_SIZE2;
914
+ canvas.height = RENDER_SIZE2;
915
+ const ctx = canvas.getContext("2d");
916
+ if (!ctx) return null;
917
+ ctx.drawImage(img, 0, 0, RENDER_SIZE2, RENDER_SIZE2);
918
+ return await createImageBitmap(canvas);
919
+ } catch {
920
+ return null;
921
+ }
922
+ }
923
+ function addImageToMap(map, name, image) {
924
+ if (map.hasImage(name)) return;
925
+ try {
926
+ map.addImage(name, image, {
927
+ sdf: SDF_SYMBOLS2.has(name),
928
+ pixelRatio: PIXEL_RATIO2
929
+ });
930
+ } catch {
931
+ }
932
+ }
933
+ function getS52AtlasVersion() {
934
+ return ATLAS_VERSION;
935
+ }
936
+ async function loadS52SymbolImagesCached(map, colorTable = "DAY", opts = {}) {
937
+ if (!hasIndexedDB() || !hasCanvasToBitmap()) {
938
+ return loadS52SymbolImages(map, colorTable);
939
+ }
940
+ const names = Object.keys(ALL_S52_SVGS);
941
+ let cached;
942
+ if (opts.forceRefresh) {
943
+ cached = /* @__PURE__ */ new Map();
944
+ } else {
945
+ try {
946
+ cached = await idbGetAllForTheme(colorTable);
947
+ } catch {
948
+ cached = /* @__PURE__ */ new Map();
949
+ }
950
+ }
951
+ for (const [name, bitmap] of cached) {
952
+ addImageToMap(map, name, bitmap);
953
+ }
954
+ const missing = names.filter((n) => !cached.has(n) && !map.hasImage(n));
955
+ if (missing.length === 0) return;
956
+ await Promise.all(
957
+ missing.map(async (name) => {
958
+ const rawSvg = ALL_S52_SVGS[name];
959
+ if (!rawSvg) return;
960
+ const themed = prepareSvg2(rawSvg, colorTable);
961
+ const img = await decodeSvgToImage(themed);
962
+ if (!img) return;
963
+ addImageToMap(map, name, img);
964
+ try {
965
+ const bitmap = await imageToBitmap(img);
966
+ if (!bitmap) return;
967
+ await idbPut(makeKey(colorTable, name), bitmap);
968
+ } catch {
969
+ }
970
+ })
971
+ );
972
+ }
973
+ async function reloadS52SymbolImagesCached(map, colorTable) {
974
+ if (!hasIndexedDB() || !hasCanvasToBitmap()) {
975
+ return reloadS52SymbolImages(map, colorTable);
976
+ }
977
+ for (const name of Object.keys(ALL_S52_SVGS)) {
978
+ try {
979
+ if (map.hasImage(name)) map.removeImage(name);
980
+ } catch {
981
+ }
982
+ }
983
+ return loadS52SymbolImagesCached(map, colorTable);
984
+ }
985
+ async function clearS52SymbolImageCache() {
986
+ if (!hasIndexedDB()) return;
987
+ try {
988
+ const db = await openDb();
989
+ await new Promise((resolve, reject) => {
990
+ const tx = db.transaction(STORE_NAME, "readwrite");
991
+ const store = tx.objectStore(STORE_NAME);
992
+ const req = store.clear();
993
+ req.onsuccess = () => resolve();
994
+ req.onerror = () => reject(req.error);
995
+ });
996
+ } catch {
997
+ }
998
+ }
999
+
751
1000
  // src/atlas/symbols.ts
752
1001
  var SIZE = 32;
753
1002
  function svg(inner) {
@@ -1019,14 +1268,14 @@ function topmarkXShape() {
1019
1268
  }
1020
1269
  function lightMajor() {
1021
1270
  return svg(`
1022
- <circle cx="16" cy="22" r="3" fill="#d200d2"/>
1023
- <path d="M16,22 L12.5,12 Q16,2 19.5,12 Z" fill="#d200d2"/>
1271
+ <circle cx="16" cy="16" r="2.5" fill="#d200d2"/>
1272
+ <path d="M16,16 L20.6,25.5 Q30,30 25.5,20.6 Z" fill="#d200d2"/>
1024
1273
  `);
1025
1274
  }
1026
1275
  function lightMinor() {
1027
1276
  return svg(`
1028
- <circle cx="16" cy="22" r="2.5" fill="#d200d2"/>
1029
- <path d="M16,22 L14,14 Q16,7 18,14 Z" fill="#d200d2"/>
1277
+ <circle cx="16" cy="16" r="2" fill="#d200d2"/>
1278
+ <path d="M16,16 L20.3,23.1 Q26.6,26.6 23.1,20.3 Z" fill="#d200d2"/>
1030
1279
  `);
1031
1280
  }
1032
1281
  function lightSector() {
@@ -3178,9 +3427,13 @@ async function loadThemedBridgeImages(map, colorTable) {
3178
3427
  }
3179
3428
  // Annotate the CommonJS export names for ESM import in node:
3180
3429
  0 && (module.exports = {
3430
+ clearS52SymbolImageCache,
3431
+ getS52AtlasVersion,
3181
3432
  loadS52SymbolImages,
3433
+ loadS52SymbolImagesCached,
3182
3434
  loadSymbolImages,
3183
3435
  loadThemedBridgeImages,
3184
- reloadS52SymbolImages
3436
+ reloadS52SymbolImages,
3437
+ reloadS52SymbolImagesCached
3185
3438
  });
3186
3439
  //# sourceMappingURL=browser.cjs.map