@idmui/spot 0.6.1 → 0.6.3

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.
package/dist/index.js CHANGED
@@ -1,4512 +1,14 @@
1
- import H from "moment";
2
- import W from "moment-timezone";
3
- import { ArrowRightBold as Ve, Calendar as $e, Download as et, Search as tt } from "@element-plus/icons-vue";
4
- import { LngLatHelper as _e } from "@idm-plugin/geo";
5
- import * as Be from "echarts";
6
- import { markRaw as st, resolveComponent as Ie, openBlock as r, createElementBlock as l, createElementVNode as s, createVNode as be, withCtx as Qe, Fragment as we, renderList as pe, createBlock as Pe, normalizeClass as me, toDisplayString as p, createTextVNode as ne, createCommentVNode as Me, withDirectives as Oe, vShow as Ye, normalizeStyle as Ce } from "vue";
7
- import ze from "axios";
8
- const Se = [
9
- {
10
- rank: 0,
11
- name: "Best Match",
12
- alias: "BEST MATCH",
13
- model: "best_match",
14
- models: ["best_match"]
15
- },
16
- {
17
- rank: 1,
18
- name: "GFS",
19
- alias: "GFS",
20
- model: "gfs_seamless",
21
- provider: "NOAA",
22
- country: "United States",
23
- resolution: 25,
24
- tips: "3-25km",
25
- length: 16,
26
- frequency: 1,
27
- // models: ['gfs_seamless', 'gfs_global', 'gfs_hrrr', 'ncep_nbm_conus', 'gfs_graphcast025'],
28
- models: ["gfs_seamless"],
29
- // ncep_gfs013: 美国国家环境预报中心(NCEP)的全球预报系统(GFS),0.13度
30
- // ncep_gfs025: 美国国家环境预报中心(NCEP)的全球预报系统(GFS),0.25度
31
- // ncep_gfs_graphcast025: 是美国国家环境预测中心(NCEP)设立的一个实验性中期全球天气预报系统
32
- // ncep_hrrr_conus: 美国国家环境预报中心(NCEP)的高分辨率快速更新(HRRR)系统针对美国本土(CONUS)的气象预报产品和服务
33
- // ncep_nbm_conus: 美国国家环境预报中心(NCEP)的国家多模式融合预报系统(NBM)针对美国本土(CONUS)的部分
34
- categories: "ncep_gfs013,ncep_gfs025,ncep_gfs_graphcast025,ncep_hrrr_conus,ncep_nbm_conus",
35
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
36
- },
37
- {
38
- rank: 2,
39
- name: "ECMWF",
40
- alias: "ECMWF",
41
- model: "ecmwf_ifs025",
42
- provider: "ECMWF",
43
- country: "European Union",
44
- resolution: 25,
45
- tips: "25km",
46
- length: 15,
47
- frequency: 6,
48
- models: ["ecmwf_ifs025", "ecmwf_aifs025_single"],
49
- categories: "ecmwf_ifs025,ecmwf_aifs025_single",
50
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
51
- },
52
- {
53
- rank: 3,
54
- disabled: !0,
55
- name: "ICON",
56
- alias: "ECMWF",
57
- model: "icon_seamless",
58
- provider: "Deutscher Wetterdienst (DWD)",
59
- country: "Germany",
60
- resolution: 13,
61
- tips: "2-13km",
62
- length: 7.5,
63
- frequency: 3,
64
- models: ["icon_seamless", "icon_global", "icon_eu", "icon_d2"],
65
- categories: "dwd_icon,dwd_icon_eps,dwd_icon_d2,dwd_icon_d2_eps,dwd_icon_eu,dwd_icon_eu_eps",
66
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
67
- },
68
- {
69
- rank: 4,
70
- name: "ARPEGE",
71
- disabled: !0,
72
- alias: "ECMWF",
73
- model: "arpege_seamless",
74
- provider: "Météo-France",
75
- country: "France",
76
- resolution: 25,
77
- tips: "1-25km",
78
- length: 4,
79
- frequency: 1,
80
- models: ["arpege_seamless", "arpege_world", "arpege_europe"],
81
- categories: "meteofrance_arpege_europe,meteofrance_arpege_europe_probabilities,meteofrance_arpege_world025",
82
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
83
- },
84
- {
85
- rank: 5,
86
- name: "UKMO",
87
- disabled: !0,
88
- alias: "ECMWF",
89
- model: "ukmo_seamless",
90
- provider: "UK Met Office",
91
- country: "United Kingdom",
92
- resolution: 10,
93
- tips: "2-10km",
94
- length: 7,
95
- frequency: 1,
96
- models: ["ukmo_seamless", "ukmo_global_deterministic_10km", "ukmo_uk_deterministic_2km"],
97
- categories: "ukmo_global_deterministic_10km,ukmo_uk_deterministic_2km",
98
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
99
- },
100
- {
101
- rank: 6,
102
- name: "JMA",
103
- disabled: !0,
104
- alias: "GFS",
105
- model: "jma_seamless",
106
- provider: "JMA",
107
- country: "Japan",
108
- resolution: 55,
109
- tips: "5-55km",
110
- length: 11,
111
- frequency: 3,
112
- models: ["jma_seamless", "jma_msm", "jma_gsm"],
113
- categories: "jma_gsm,jma_msm",
114
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
115
- },
116
- {
117
- rank: 7,
118
- name: "GEM",
119
- disabled: !0,
120
- alias: "GFS",
121
- model: "gem_seamless",
122
- provider: "Canadian Weather Service",
123
- country: "Canada",
124
- resolution: 2.5,
125
- tips: "2.5km",
126
- length: 10,
127
- frequency: 6,
128
- models: ["gem_seamless", "gem_global", "gem_regional"],
129
- // cmc_gem_gdps: 加拿大气象中心(CMC)基于全球环境多尺度(GEM)模型的全球确定性预报系统(Global Deterministic Prediction System),耦合了大气(GEM)、海洋和海冰(NEMO - CICE)的确定性数值天气预报模型
130
- // cmc_gem_hrdps: 加拿大气象中心(CMC)全球环境多尺度(GEM)模型的高分辨率确定性预报系统(High - Resolution Deterministic Prediction System),覆盖加拿大地区
131
- // cmc_gem_rdps: 拿大气象中心(CMC)的全球环境多尺度(GEM)模型的区域确定性预报系统(Regional Deterministic Prediction System),盖北美地区和北极地区
132
- categories: "cmc_gem_gdps,cmc_gem_hrdps,cmc_gem_rdps",
133
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
134
- },
135
- {
136
- rank: 8,
137
- name: "GRAPES",
138
- disabled: !0,
139
- alias: "GFS",
140
- model: "cma_grapes_global",
141
- provider: "China Meteorological Administration (CMA)",
142
- country: "China",
143
- resolution: 15,
144
- tips: "15km",
145
- length: 10,
146
- frequency: 6,
147
- models: ["cma_grapes_global"],
148
- categories: "cma_grapes_global",
149
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
150
- },
151
- {
152
- rank: 9,
153
- name: "ACCESS-G",
154
- disabled: !0,
155
- alias: "GFS",
156
- model: "bom_access_global",
157
- provider: "Australian Bureau of Meteorology (BOM)",
158
- country: "Australia",
159
- resolution: 15,
160
- tips: "15km",
161
- length: 10,
162
- frequency: 6,
163
- models: ["bom_access_global"],
164
- categories: "bom_access_global",
165
- variables: "temperature_2m,relative_humidity_2m,dew_point_2m,apparent_temperature,precipitation_probability,precipitation,rain,showers,snowfall_water_equivalent,snowfall,frozen_precipitation_percent,pressure_msl,cloud_cover,visibility,wind_speed_10m,wind_u_component_10m,wind_v_component_10m,wind_direction_10m,wind_gusts_10m,cape,lifted_index,weather_code"
166
- }
167
- ], Fe = [
168
- {
169
- rank: 0,
170
- name: "Best Match",
171
- alias: "BEST MATCH",
172
- model: "best_match",
173
- models: ["best_match"]
174
- },
175
- {
176
- rank: 1,
177
- name: "MFWAM",
178
- alias: "ECMWF",
179
- model: "meteofrance_wave",
180
- provider: "MeteoFrance",
181
- country: "France",
182
- resolution: 8,
183
- tips: "8km",
184
- length: 10,
185
- frequency: 12,
186
- models: ["meteofrance_wave"],
187
- categories: "meteofrance_wave",
188
- variables: "swell_wave_direction,swell_wave_height,swell_wave_period,swell_wave_peak_period,wave_direction,wave_height,wave_period,wind_wave_direction,wind_wave_height,wind_wave_period,wind_wave_peak_period"
189
- },
190
- {
191
- rank: 2,
192
- disabled: !0,
193
- name: "SMOC",
194
- alias: "ECMWF",
195
- model: "meteofrance_currents",
196
- provider: "MeteoFrance",
197
- country: "France",
198
- resolution: 8,
199
- tips: "8km",
200
- length: 10,
201
- frequency: 24,
202
- models: ["meteofrance_currents"],
203
- categories: "meteofrance_currents, meteofrance_sea_surface_temperature",
204
- variables: "ocean_u_current,ocean_v_current,invert_barometer_height,sea_level_height_msl,sea_surface_temperature"
205
- },
206
- {
207
- rank: 3,
208
- disabled: !0,
209
- name: "EWAM",
210
- alias: "ECMWF",
211
- model: "ewam",
212
- provider: "DWD",
213
- country: "Germany",
214
- resolution: 5,
215
- tips: "5km",
216
- length: 8,
217
- frequency: 2,
218
- models: ["ewam"],
219
- categories: "dwd_ewam",
220
- variables: "swell_wave_direction,swell_wave_height,swell_wave_period,swell_wave_peak_period,wave_direction,wave_height,wave_period,wind_wave_direction,wind_wave_height,wind_wave_period,wind_wave_peak_period"
221
- },
222
- {
223
- rank: 4,
224
- disabled: !0,
225
- name: "GWAM",
226
- alias: "ECMWF",
227
- model: "gwam",
228
- provider: "DWD",
229
- country: "Germany",
230
- resolution: 5,
231
- tips: "5km",
232
- length: 4,
233
- frequency: 2,
234
- models: ["gwam"],
235
- categories: "dwd_gwam",
236
- variables: "swell_wave_direction,swell_wave_height,swell_wave_period,swell_wave_peak_period,wave_direction,wave_height,wave_period,wind_wave_direction,wind_wave_height,wind_wave_period,wind_wave_peak_period"
237
- },
238
- {
239
- rank: 5,
240
- disabled: !0,
241
- name: "ECWAM",
242
- alias: "ECMWF",
243
- model: "ecmwf_wam025",
244
- provider: "ECMWF",
245
- country: "Europe",
246
- resolution: 25,
247
- tips: "25km",
248
- length: 10,
249
- frequency: 6,
250
- models: ["ecmwf_wam025"],
251
- categories: "ecmwf_wam025",
252
- variables: "swell_wave_direction,swell_wave_height,swell_wave_period,swell_wave_peak_period,wave_direction,wave_height,wave_period,wind_wave_direction,wind_wave_height,wind_wave_period,wind_wave_peak_period"
253
- },
254
- {
255
- rank: 6,
256
- name: "GFSWave",
257
- alias: "GFS",
258
- model: "ncep_gfswave025",
259
- provider: "NCEP",
260
- country: "USA",
261
- resolution: 25,
262
- tips: "25km",
263
- length: 10,
264
- frequency: 6,
265
- models: ["ncep_gfswave025", "ncep_gfswave016"],
266
- categories: "ncep_gfswave025,ncep_gfswave016",
267
- variables: "swell_wave_direction,swell_wave_height,swell_wave_period,swell_wave_peak_period,wave_direction,wave_height,wave_period,wind_wave_direction,wind_wave_height,wind_wave_period,wind_wave_peak_period"
268
- },
269
- {
270
- rank: 7,
271
- disabled: !0,
272
- name: "ERA5-Ocean",
273
- alias: "ECMWF",
274
- model: "era5_ocean",
275
- provider: "Copernicus",
276
- country: "Europe",
277
- resolution: 50,
278
- tips: "50km",
279
- length: -5,
280
- frequency: 1,
281
- models: ["era5_ocean"],
282
- categories: "copernicus_era5_ocean",
283
- variables: "swell_wave_direction,swell_wave_height,swell_wave_period,swell_wave_peak_period,wave_direction,wave_height,wave_period,wind_wave_direction,wind_wave_height,wind_wave_period,wind_wave_peak_period"
284
- }
285
- ];
286
- class ke {
287
- static standardWeatherModels() {
288
- return Se.filter((e) => !e.disabled && e.alias);
289
- }
290
- static standardMarineModels() {
291
- return Fe.filter((e) => !e.disabled && e.alias);
292
- }
293
- static autoPickMeteoModel(e = "best_match") {
294
- var a, h;
295
- const t = e.toLowerCase().split(","), o = [], u = [];
296
- for (const v of t) {
297
- let I = Se.find((x) => {
298
- var C, M, N;
299
- return ((C = x.models) == null ? void 0 : C.includes(v)) || ((M = x.alias) == null ? void 0 : M.toLowerCase()) === v || ((N = x.name) == null ? void 0 : N.toLowerCase()) === v;
300
- }), b = Fe.find((x) => {
301
- var C, M, N;
302
- return ((C = x.models) == null ? void 0 : C.includes(v)) || ((M = x.alias) == null ? void 0 : M.toLowerCase()) === v || ((N = x.name) == null ? void 0 : N.toLowerCase()) === v;
303
- });
304
- I = I || Se.find((x) => {
305
- var C, M;
306
- return ((C = x.alias) == null ? void 0 : C.toLowerCase()) === ((M = b == null ? void 0 : b.alias) == null ? void 0 : M.toLowerCase());
307
- }), b = b || Fe.find((x) => {
308
- var C, M;
309
- return ((C = x.alias) == null ? void 0 : C.toLowerCase()) === ((M = I == null ? void 0 : I.alias) == null ? void 0 : M.toLowerCase());
310
- }), I = I || Se[0], b = b || Fe[0], o.push((a = I.models) != null && a.includes(v) ? v : I.model), u.push((h = b.models) != null && h.includes(v) ? v : b.model);
311
- }
312
- return {
313
- weatherModels: o.join(","),
314
- marineModels: u.join(",")
315
- };
316
- }
317
- static pickHourly(e, a) {
318
- var h, t, o, u, v, I, b, x, C, M, N, se, ae, le, Y, U, R, X, q, J, Z, V, $, ee, te, c, F, T, P, m, S, k, L, D, he, de, Ae, g, ue, E, z, _, ce, A, O, ie, Q, re, j, d;
319
- const f = typeof a == "string" ? H(a) : a, K = e == null ? void 0 : e.weather, y = e == null ? void 0 : e.marine, ve = H((t = (h = K == null ? void 0 : K[0]) == null ? void 0 : h.hourly) == null ? void 0 : t.date).utc(), G = ve.clone().add((v = (u = (o = K == null ? void 0 : K[0]) == null ? void 0 : o.hourly) == null ? void 0 : u.time) == null ? void 0 : v.at(0), "h"), oe = ve.clone().add((x = (b = (I = K == null ? void 0 : K[0]) == null ? void 0 : I.hourly) == null ? void 0 : b.time) == null ? void 0 : x.at(-1), "h"), fe = [];
320
- if (f.isBetween(G, oe, "millisecond", "[]")) {
321
- const B = f.utc().diff(G, "h", !1);
322
- let i, w;
323
- if (K) {
324
- let xe = 0, Le = 0;
325
- for (const ge of K) {
326
- const ye = ge.hourly;
327
- for (let Ee = B - (B - 1) % 3; Ee <= B; Ee++)
328
- xe += (C = ye.precipitation) == null ? void 0 : C.at(Ee);
329
- for (let Ee = B - (B - 1) % 6; Ee <= B; Ee++)
330
- Le += (M = ye.precipitation) == null ? void 0 : M.at(Ee);
331
- i = {
332
- temp: (N = ye.temperature_2m) == null ? void 0 : N.at(B),
333
- apparentTemp: (se = ye.apparent_temperature) == null ? void 0 : se.at(B),
334
- rh: (ae = ye.relative_humidity_2m) == null ? void 0 : ae.at(B),
335
- dp: (le = ye.dew_point_2m) == null ? void 0 : le.at(B),
336
- precip: {
337
- probability: (Y = ye.precipitation_probability) == null ? void 0 : Y.at(B),
338
- sum: (U = ye.precipitation) == null ? void 0 : U.at(B),
339
- sum3Hours: Math.round(xe * 100) / 100,
340
- sum6Hours: Math.round(Le * 100) / 100
341
- },
342
- pmsl: (R = ye.pressure_msl) == null ? void 0 : R.at(B),
343
- psurf: (X = ye.surface_pressure) == null ? void 0 : X.at(B),
344
- code: (q = ye.weather_code) == null ? void 0 : q.at(B),
345
- visibility: this.m2nm((J = ye.visibility) == null ? void 0 : J.at(B)),
346
- wind: {
347
- speed: (Z = ye.wind_speed_10m) == null ? void 0 : Z.at(B),
348
- kts: (V = ye.wind_speed_10m) == null ? void 0 : V.at(B),
349
- degree: ($ = ye.wind_direction_10m) == null ? void 0 : $.at(B),
350
- bearing: ((ee = ye.wind_direction_10m) == null ? void 0 : ee.at(B)) !== null ? (((te = ye.wind_direction_10m) == null ? void 0 : te.at(B)) + 180) % 360 : null,
351
- gusts: (c = ye.wind_gusts_10m) == null ? void 0 : c.at(B)
352
- },
353
- isDay: (F = ye.is_day) == null ? void 0 : F.at(B)
354
- };
355
- const { name: Ne, url: Te, bg: Ge } = this.parseWeatherCode(i.code, i.isDay);
356
- i.name = Ne, i.url = Te, i.bg = Ge, i.wind.scale = this.beaufort(this.kts2ms(i.wind.kts)), i.wind.direction = this.degree2Direction(i.wind.degree), fe.push({
357
- utc: G.add(B, "h").format(),
358
- model: ge.model,
359
- weather: { ...i }
360
- });
361
- }
362
- }
363
- if (y) {
364
- let xe = 0;
365
- for (const Le of y) {
366
- const ge = Le.hourly;
367
- w = {
368
- wave: {
369
- sig: {
370
- height: (T = ge.wave_height) == null ? void 0 : T.at(B),
371
- degree: (P = ge.wave_direction) == null ? void 0 : P.at(B),
372
- bearing: ((m = ge.wave_direction) == null ? void 0 : m.at(B)) !== null ? (((S = ge.wave_direction) == null ? void 0 : S.at(B)) + 180) % 360 : null,
373
- period: (k = ge.wave_period) == null ? void 0 : k.at(B)
374
- },
375
- swell: {
376
- height: (L = ge.swell_wave_height) == null ? void 0 : L.at(B),
377
- degree: (D = ge.swell_wave_direction) == null ? void 0 : D.at(B),
378
- bearing: ((he = ge.swell_wave_direction) == null ? void 0 : he.at(B)) !== null ? (((de = ge.swell_wave_direction) == null ? void 0 : de.at(B)) + 180) % 360 : null,
379
- period: (Ae = ge.swell_wave_period) == null ? void 0 : Ae.at(B),
380
- peakPeriod: (g = ge.swell_wave_peak_period) == null ? void 0 : g.at(B)
381
- },
382
- wd: {
383
- height: (ue = ge.wind_wave_height) == null ? void 0 : ue.at(B),
384
- degree: (E = ge.wind_wave_direction) == null ? void 0 : E.at(B),
385
- bearing: ((z = ge.wind_wave_direction) == null ? void 0 : z.at(B)) !== null ? (((_ = ge.wind_wave_direction) == null ? void 0 : _.at(B)) + 180) % 360 : null,
386
- period: (ce = ge.wind_wave_period) == null ? void 0 : ce.at(B),
387
- peakPeriod: (A = ge.wind_wave_peak_period) == null ? void 0 : A.at(B)
388
- }
389
- },
390
- current: {
391
- speed: (O = ge.ocean_current_velocity) == null ? void 0 : O.at(B),
392
- kts: (ie = ge.ocean_current_velocity) == null ? void 0 : ie.at(B),
393
- degree: (Q = ge.ocean_current_direction) == null ? void 0 : Q.at(B),
394
- bearing: ((re = ge.ocean_current_direction) == null ? void 0 : re.at(B)) ?? null
395
- },
396
- sst: (j = ge.sea_surface_temperature) == null ? void 0 : j.at(B),
397
- height: (d = ge.sea_level_height_msl) == null ? void 0 : d.at(B)
398
- }, w.wave = this.parseWave(w.wave), w.current.direction = this.degree2Direction(w.current.degree), Object.assign(fe[xe], w), xe++;
399
- }
400
- }
401
- }
402
- return fe;
403
- }
404
- static toLegacy(e) {
405
- var a, h, t, o, u, v, I, b, x, C;
406
- return {
407
- wind: (a = e == null ? void 0 : e.weather) == null ? void 0 : a.wind,
408
- visibility: (h = e == null ? void 0 : e.weather) == null ? void 0 : h.visibility,
409
- temp: (t = e == null ? void 0 : e.weather) == null ? void 0 : t.temp,
410
- prmsl: (o = e == null ? void 0 : e.weather) == null ? void 0 : o.pmsl,
411
- gusts: {
412
- kts: (v = (u = e == null ? void 0 : e.weather) == null ? void 0 : u.wind) == null ? void 0 : v.gusts
413
- },
414
- precip: (I = e == null ? void 0 : e.weather) == null ? void 0 : I.precip,
415
- code: (b = e == null ? void 0 : e.weather) == null ? void 0 : b.code,
416
- name: (x = e == null ? void 0 : e.weather) == null ? void 0 : x.name,
417
- url: (C = e == null ? void 0 : e.weather) == null ? void 0 : C.url,
418
- wave: e == null ? void 0 : e.wave,
419
- current: e == null ? void 0 : e.current,
420
- sst: e == null ? void 0 : e.sst,
421
- height: e == null ? void 0 : e.height,
422
- utc: e == null ? void 0 : e.utc,
423
- source: e == null ? void 0 : e.model
424
- };
425
- }
426
- static pickDaily(e, a) {
427
- var h, t, o, u, v, I, b, x, C, M, N, se, ae, le, Y, U, R, X, q, J, Z, V, $, ee, te, c, F, T, P, m, S, k, L, D, he, de, Ae, g, ue, E, z, _, ce, A;
428
- const O = typeof a == "string" ? H(a) : a, ie = e == null ? void 0 : e.weather, Q = e == null ? void 0 : e.marine, re = H((o = (t = (h = ie == null ? void 0 : ie[0]) == null ? void 0 : h.daily) == null ? void 0 : t.time) == null ? void 0 : o.at(0)), j = H((I = (v = (u = ie == null ? void 0 : ie[0]) == null ? void 0 : u.daily) == null ? void 0 : v.time) == null ? void 0 : I.at(-1)), d = [];
429
- if (O.isBetween(re, j, "millisecond", "[]")) {
430
- let f, K;
431
- const y = O.diff(re, "d", !1);
432
- if (ie)
433
- for (const ve of ie) {
434
- const G = ve.daily;
435
- f = {
436
- code: (b = G.weather_code) == null ? void 0 : b.at(y),
437
- temp: {
438
- max: (x = G.temperature_2m_max) == null ? void 0 : x.at(y),
439
- min: (C = G.temperature_2m_min) == null ? void 0 : C.at(y),
440
- mean: (M = G.temperature_2m_mean) == null ? void 0 : M.at(y)
441
- },
442
- apparentTemp: {
443
- max: (N = G.apparent_temperature_max) == null ? void 0 : N.at(y),
444
- min: (se = G.apparent_temperature_min) == null ? void 0 : se.at(y)
445
- },
446
- precip: {
447
- sum: (ae = G.precipitation_sum) == null ? void 0 : ae.at(y),
448
- rainSum: (le = G.rain_sum) == null ? void 0 : le.at(y),
449
- snowfallSum: (Y = G.snowfall_sum) == null ? void 0 : Y.at(y),
450
- showersSum: (U = G.showers_sum) == null ? void 0 : U.at(y),
451
- hours: (R = G.precipitation_hours) == null ? void 0 : R.at(y),
452
- probability: (X = G.precipitation_probability_max) == null ? void 0 : X.at(y)
453
- },
454
- rh: {
455
- max: (q = G.relative_humidity_2m_max) == null ? void 0 : q.at(y),
456
- min: (J = G.relative_humidity_2m_min) == null ? void 0 : J.at(y),
457
- mean: (Z = G.relative_humidity_2m_mean) == null ? void 0 : Z.at(y)
458
- },
459
- wind: {
460
- speed: (V = G.wind_speed_10m_max) == null ? void 0 : V.at(y),
461
- kts: ($ = G.wind_speed_10m_max) == null ? void 0 : $.at(y),
462
- degree: (ee = G.wind_direction_10m_dominant) == null ? void 0 : ee.at(y),
463
- gusts: (te = G.wind_gusts_10m_max) == null ? void 0 : te.at(y),
464
- bearing: ((c = G.wind_direction_10m_dominant) == null ? void 0 : c.at(y)) !== null ? (((F = G.wind_direction_10m_dominant) == null ? void 0 : F.at(y)) + 180) % 360 : null
465
- }
466
- };
467
- const { name: oe, url: fe, bg: B } = this.parseWeatherCode(f.code, !0);
468
- f.name = oe, f.url = fe, f.bg = B, f.wind.scale = this.beaufort(this.kts2ms(f.wind.kts)), f.wind.direction = this.degree2Direction(f.wind.degree), d.push({
469
- utc: re.add(y, "d").utc().format(),
470
- model: ve.model,
471
- weather: { ...f }
472
- });
473
- }
474
- if (Q) {
475
- let ve = 0;
476
- for (const G of Q) {
477
- const oe = G.daily;
478
- K = {
479
- wave: {
480
- sig: {
481
- height: (T = oe.wave_height_max) == null ? void 0 : T.at(y),
482
- degree: (P = oe.wave_direction_dominant) == null ? void 0 : P.at(y),
483
- period: (m = oe.wave_period_max) == null ? void 0 : m.at(y),
484
- bearing: ((S = oe.wave_direction_dominant) == null ? void 0 : S.at(y)) !== null ? (((k = oe.wave_direction_dominant) == null ? void 0 : k.at(y)) + 180) % 360 : null
485
- },
486
- swell: {
487
- height: (L = oe.swell_wave_height_max) == null ? void 0 : L.at(y),
488
- degree: (D = oe.swell_wave_direction_dominant) == null ? void 0 : D.at(y),
489
- period: (he = oe.swell_wave_period_max) == null ? void 0 : he.at(y),
490
- peakPeriod: (de = oe.swell_wave_peak_period_max) == null ? void 0 : de.at(y),
491
- bearing: ((Ae = oe.swell_wave_direction_dominant) == null ? void 0 : Ae.at(y)) !== null ? (((g = oe.swell_wave_direction_dominant) == null ? void 0 : g.at(y)) + 180) % 360 : null
492
- },
493
- wd: {
494
- height: (ue = oe.wind_wave_height_max) == null ? void 0 : ue.at(y),
495
- degree: (E = oe.wind_wave_direction_dominant) == null ? void 0 : E.at(y),
496
- period: (z = oe.wind_wave_period_max) == null ? void 0 : z.at(y),
497
- peakPeriod: (_ = oe.wind_wave_peak_period_max) == null ? void 0 : _.at(y),
498
- bearing: ((ce = oe.wind_wave_direction_dominant) == null ? void 0 : ce.at(y)) !== null ? (((A = oe.wind_wave_direction_dominant) == null ? void 0 : A.at(y)) + 180) % 360 : null
499
- }
500
- }
501
- }, K.wave = this.parseWave(K.wave), Object.assign(d[ve], K), ve++;
502
- }
503
- }
504
- }
505
- return d;
506
- }
507
- static parseWave(e) {
508
- return e.sig.direction = this.degree2Direction(e.sig.degree), e.swell.direction = this.degree2Direction(e.swell.degree), e.wd.direction = this.degree2Direction(e.wd.degree), e.sig.scale = this.douglas(e.sig.height), e.swell.scale = this.douglas(e.swell.height), e.wd.scale = this.douglas(e.wd.height), e;
509
- }
510
- static parseWeatherCode(e, a) {
511
- const h = this.weatherCode(e);
512
- return (a ? h.day : h.night) || {};
513
- }
514
- static weatherCode(e) {
515
- const a = {
516
- code: e
517
- };
518
- switch (e) {
519
- case 0:
520
- a.day = {
521
- name: "Sunny",
522
- url: "https://osshz.idmwx.com/asset/weather/01d.svg",
523
- bg: "https://osshz.idmwx.com/asset/weather/bg1.png"
524
- }, a.night = {
525
- name: "Clear",
526
- url: "https://osshz.idmwx.com/asset/weather/01n.svg",
527
- bg: "https://osshz.idmwx.com/asset/weather/bg1.png"
528
- };
529
- break;
530
- case 1:
531
- a.day = {
532
- name: "Mainly Sunny",
533
- url: "https://osshz.idmwx.com/asset/weather/01d.svg",
534
- bg: "https://osshz.idmwx.com/asset/weather/bg1.png"
535
- }, a.night = {
536
- name: "Mainly Clear",
537
- url: "https://osshz.idmwx.com/asset/weather/01n.svg",
538
- bg: "https://osshz.idmwx.com/asset/weather/bg1.png"
539
- };
540
- break;
541
- case 2:
542
- a.day = {
543
- name: "Partly Cloudy",
544
- url: "https://osshz.idmwx.com/asset/weather/02d.svg",
545
- bg: "https://osshz.idmwx.com/asset/weather/bg2.png"
546
- }, a.night = {
547
- name: "Partly Cloudy",
548
- url: "https://osshz.idmwx.com/asset/weather/02n.svg",
549
- bg: "https://osshz.idmwx.com/asset/weather/bg2.png"
550
- };
551
- break;
552
- case 3:
553
- a.day = {
554
- name: "Overcast",
555
- url: "https://osshz.idmwx.com/asset/weather/04d.svg",
556
- bg: "https://osshz.idmwx.com/asset/weather/bg3.png"
557
- }, a.night = {
558
- name: "Overcast",
559
- url: "https://osshz.idmwx.com/asset/weather/04n.svg",
560
- bg: "https://osshz.idmwx.com/asset/weather/bg3.png"
561
- };
562
- break;
563
- case 45:
564
- a.day = {
565
- name: "Foggy",
566
- url: "https://osshz.idmwx.com/asset/weather/50d.svg",
567
- bg: "https://osshz.idmwx.com/asset/weather/bg4.png"
568
- }, a.night = {
569
- name: "Foggy",
570
- url: "https://osshz.idmwx.com/asset/weather/50n.svg",
571
- bg: "https://osshz.idmwx.com/asset/weather/bg4.png"
572
- };
573
- break;
574
- case 48:
575
- a.day = {
576
- name: "Rime Fog",
577
- url: "https://osshz.idmwx.com/asset/weather/50d.svg",
578
- bg: "https://osshz.idmwx.com/asset/weather/bg4.png"
579
- }, a.night = {
580
- name: "Rime Fog",
581
- url: "https://osshz.idmwx.com/asset/weather/50n.svg",
582
- bg: "https://osshz.idmwx.com/asset/weather/bg4.png"
583
- };
584
- break;
585
- case 51:
586
- a.day = {
587
- name: "Light Drizzle",
588
- url: "https://osshz.idmwx.com/asset/weather/14d.svg",
589
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
590
- }, a.night = {
591
- name: "Light Drizzle",
592
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
593
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
594
- };
595
- break;
596
- case 53:
597
- a.day = {
598
- name: "Drizzle",
599
- url: "https://osshz.idmwx.com/asset/weather/14d.svg",
600
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
601
- }, a.night = {
602
- name: "Drizzle",
603
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
604
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
605
- };
606
- break;
607
- case 55:
608
- a.day = {
609
- name: "Heavy Drizzle",
610
- url: "https://osshz.idmwx.com/asset/weather/15d.svg",
611
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
612
- }, a.night = {
613
- name: "Heavy Drizzle",
614
- url: "https://osshz.idmwx.com/asset/weather/15n.svg",
615
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
616
- };
617
- break;
618
- case 56:
619
- a.day = {
620
- name: "Light Freezing Drizzle",
621
- url: "https://osshz.idmwx.com/asset/weather/14d.svg",
622
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
623
- }, a.night = {
624
- name: "Light Freezing Drizzle",
625
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
626
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
627
- };
628
- break;
629
- case 57:
630
- a.day = {
631
- name: "Freezing Drizzle",
632
- url: "https://osshz.idmwx.com/asset/weather/14d.svg",
633
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
634
- }, a.night = {
635
- name: "Freezing Drizzle",
636
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
637
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
638
- };
639
- break;
640
- case 61:
641
- a.day = {
642
- name: "Light Rain",
643
- url: "https://osshz.idmwx.com/asset/weather/16d.svg",
644
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
645
- }, a.night = {
646
- name: "Light Rain",
647
- url: "https://osshz.idmwx.com/asset/weather/10n.svg",
648
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
649
- };
650
- break;
651
- case 63:
652
- a.day = {
653
- name: "Rain",
654
- url: "https://osshz.idmwx.com/asset/weather/16d.svg",
655
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
656
- }, a.night = {
657
- name: "Rain",
658
- url: "https://osshz.idmwx.com/asset/weather/10n.svg",
659
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
660
- };
661
- break;
662
- case 65:
663
- a.day = {
664
- name: "Heavy Rain",
665
- url: "https://osshz.idmwx.com/asset/weather/16d.svg",
666
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
667
- }, a.night = {
668
- name: "Heavy Rain",
669
- url: "https://osshz.idmwx.com/asset/weather/10n.svg",
670
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
671
- };
672
- break;
673
- case 66:
674
- a.day = {
675
- name: "Light Freezing Rain",
676
- url: "https://osshz.idmwx.com/asset/weather/16d.svg",
677
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
678
- }, a.night = {
679
- name: "Light Freezing Rain",
680
- url: "https://osshz.idmwx.com/asset/weather/10n.svg",
681
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
682
- };
683
- break;
684
- case 67:
685
- a.day = {
686
- name: "Freezing Rain",
687
- url: "https://osshz.idmwx.com/asset/weather/16d.svg",
688
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
689
- }, a.night = {
690
- name: "Freezing Rain",
691
- url: "https://osshz.idmwx.com/asset/weather/10n.svg",
692
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
693
- };
694
- break;
695
- case 71:
696
- a.day = {
697
- name: "Light Snow",
698
- url: "https://osshz.idmwx.com/asset/weather/17d.svg",
699
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
700
- }, a.night = {
701
- name: "Light Snow",
702
- url: "https://osshz.idmwx.com/asset/weather/13n.svg",
703
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
704
- };
705
- break;
706
- case 73:
707
- a.day = {
708
- name: "Snow",
709
- url: "https://osshz.idmwx.com/asset/weather/17d.svg",
710
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
711
- }, a.night = {
712
- name: "Snow",
713
- url: "https://osshz.idmwx.com/asset/weather/13n.svg",
714
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
715
- };
716
- break;
717
- case 75:
718
- a.day = {
719
- name: "Heavy Snow",
720
- url: "https://osshz.idmwx.com/asset/weather/17d.svg",
721
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
722
- }, a.night = {
723
- name: "Heavy Snow",
724
- url: "https://osshz.idmwx.com/asset/weather/13n.svg",
725
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
726
- };
727
- break;
728
- case 77:
729
- a.day = {
730
- name: "Snow Grains",
731
- url: "https://osshz.idmwx.com/asset/weather/17d.svg",
732
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
733
- }, a.night = {
734
- name: "Snow Grains",
735
- url: "https://osshz.idmwx.com/asset/weather/13n.svg",
736
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
737
- };
738
- break;
739
- case 80:
740
- a.day = {
741
- name: "Light Showers",
742
- url: "https://osshz.idmwx.com/asset/weather/09d.svg",
743
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
744
- }, a.night = {
745
- name: "Light Showers",
746
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
747
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
748
- };
749
- break;
750
- case 81:
751
- a.day = {
752
- name: "Showers",
753
- url: "https://osshz.idmwx.com/asset/weather/09d.svg",
754
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
755
- }, a.night = {
756
- name: "Showers",
757
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
758
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
759
- };
760
- break;
761
- case 82:
762
- a.day = {
763
- name: "Heavy Showers",
764
- url: "https://osshz.idmwx.com/asset/weather/09d.svg",
765
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
766
- }, a.night = {
767
- name: "Heavy Showers",
768
- url: "https://osshz.idmwx.com/asset/weather/09n.svg",
769
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
770
- };
771
- break;
772
- case 85:
773
- a.day = {
774
- name: "Light Snow Showers",
775
- url: "https://osshz.idmwx.com/asset/weather/13d.svg",
776
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
777
- }, a.night = {
778
- name: "Light Snow Showers",
779
- url: "https://osshz.idmwx.com/asset/weather/13n.svg",
780
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
781
- };
782
- break;
783
- case 86:
784
- a.day = {
785
- name: "Snow Showers",
786
- url: "https://osshz.idmwx.com/asset/weather/13d.svg",
787
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
788
- }, a.night = {
789
- name: "Snow Showers",
790
- url: "https://osshz.idmwx.com/asset/weather/13n.svg",
791
- bg: "https://osshz.idmwx.com/asset/weather/bg6.png"
792
- };
793
- break;
794
- case 95:
795
- a.day = {
796
- name: "Thunderstorm",
797
- url: "https://osshz.idmwx.com/asset/weather/11d.svg",
798
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
799
- }, a.night = {
800
- name: "Thunderstorm",
801
- url: "https://osshz.idmwx.com/asset/weather/11n.svg",
802
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
803
- };
804
- break;
805
- case 96:
806
- a.day = {
807
- name: "Light Thunderstorms With Hail",
808
- url: "https://osshz.idmwx.com/asset/weather/11d.svg",
809
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
810
- }, a.night = {
811
- name: "Light Thunderstorms With Hail",
812
- url: "https://osshz.idmwx.com/asset/weather/11n.svg",
813
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
814
- };
815
- break;
816
- case 99:
817
- a.day = {
818
- name: "Thunderstorms With Hail",
819
- url: "https://osshz.idmwx.com/asset/weather/11d.svg",
820
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
821
- }, a.night = {
822
- name: "Thunderstorms With Hail",
823
- url: "https://osshz.idmwx.com/asset/weather/11n.svg",
824
- bg: "https://osshz.idmwx.com/asset/weather/bg5.png"
825
- };
826
- break;
827
- }
828
- return a;
829
- }
830
- static kts2ms(e) {
831
- return isNaN(e) || e === null ? e : Math.round(e * 1852 / 3600 * 1e4) / 1e4;
832
- }
833
- static kts2kmh(e) {
834
- return isNaN(e) || e === null ? e : e * 1.852;
835
- }
836
- static m2nm(e) {
837
- return isNaN(e) || e === null ? e : Math.round(e / 1e3 / 1.852 * 1e4) / 1e4;
838
- }
839
- static kmh2kts(e) {
840
- return isNaN(e) || e === null ? e : this.ms2kts(e * 1e3 / 3600);
841
- }
842
- static ms2kts(e) {
843
- return isNaN(e) || e === null ? e : Math.round(e * 3600 / 1852 * 1e4) / 1e4;
844
- }
845
- /**
846
- * 角度转为弧度
847
- * @param degree
848
- */
849
- static degree2Radian(e) {
850
- if (isNaN(e) || e === null)
851
- return e;
852
- let a = e % 360 / 360 * 2 * Math.PI;
853
- return a = a < 0 ? a + 2 * Math.PI : a, a;
854
- }
855
- /**
856
- * 将方位角转换为方向
857
- * @param degree 角度[-360,360]
858
- * @return {string}
859
- */
860
- static degree2Direction(e) {
861
- const a = this.degree2Radian(e);
862
- if (isNaN(a) || a === null)
863
- return null;
864
- let h = "N/A";
865
- const t = Math.PI / 16;
866
- return a < t ? h = "N" : a >= t && a < 3 * t ? h = "NNE" : a >= 3 * t && a < 5 * t ? h = "NE" : a >= 5 * t && a < 7 * t ? h = "ENE" : a >= 7 * t && a < 9 * t ? h = "E" : a >= 9 * t && a < 11 * t ? h = "ESE" : a >= 11 * t && a < 13 * t ? h = "SE" : a >= 13 * t && a < 15 * t ? h = "SSE" : a >= 15 * t && a < 17 * t ? h = "S" : a >= 17 * t && a < 19 * t ? h = "SSW" : a >= 19 * t && a < 21 * t ? h = "SW" : a >= 21 * t && a < 23 * t ? h = "WSW" : a >= 23 * t && a < 25 * t ? h = "W" : a >= 25 * t && a < 27 * t ? h = "WNW" : a >= 27 * t && a < 29 * t ? h = "NW" : a >= 29 * t && a < 31 * t ? h = "NNW" : a >= 31 * t && a < 32 * t && (h = "N"), h;
867
- }
868
- /**
869
- * 计算风力蒲福等级
870
- * @param speed m/s
871
- * @returns {number}
872
- */
873
- static beaufort(e) {
874
- let a = 0;
875
- return isNaN(e) || (e = Math.round(e * 10) / 10, e <= 0.2 ? a = 0 : e <= 1.5 ? a = 1 : e <= 3.3 ? a = 2 : e <= 5.4 ? a = 3 : e <= 7.9 ? a = 4 : e <= 10.7 ? a = 5 : e <= 13.8 ? a = 6 : e <= 17.1 ? a = 7 : e <= 20.7 ? a = 8 : e <= 22.4 ? a = 9 : e <= 28.4 ? a = 10 : e <= 32.6 ? a = 11 : e > 32.6 && (a = 12)), a;
876
- }
877
- /**
878
- * 计算海浪等级
879
- * @param height 高度 m
880
- */
881
- static douglas(e) {
882
- let a = "Calm";
883
- return isNaN(e) || e <= 0.1 ? a = "Calm" : e <= 0.5 ? a = "Smooth" : e <= 1.25 ? a = "Slight" : e <= 2.5 ? a = "Moderate" : e <= 4 ? a = "Rough" : e <= 6 ? a = "VeryRough" : e <= 9 ? a = "High" : e <= 14 ? a = "VeryHigh" : a = "Precipitous", a;
884
- }
885
- }
886
- const He = "data:image/gif;base64,R0lGODlhQAHwAPcAAAAAAACE/wGE/wKF/wOF/wSG/wWG/waH/weH/wiI/wmI/wqJ/wuJ/wyK/w2K/w6L/w+L/xCM/xGM/xKN/xON/xSO/xWO/xaP/xeP/xiQ/xmQ/xqR/xuR/xyS/x2S/x6S/x+T/yCT/yGU/yKU/yOV/ySV/yWW/yaW/yeX/yiX/ymY/yqY/yuZ/yyZ/y2a/y6a/y+b/zCb/zGc/zKc/zOd/zSd/zWe/zae/zef/zif/zmf/zqg/zug/zyh/z6i/z+i/0Cj/0Gj/0Kk/0Ok/0Sl/0Wl/0am/0em/0in/0mn/0qo/0uo/0yp/02p/06q/0+q/1Cr/1Gr/1Ks/1Os/1St/1Wt/1at/1eu/1iu/1mv/1qv/1uw/1yw/12x/16x/1+y/2Cy/2Gz/2Kz/2O0/2S0/2W1/2a1/2e2/2i2/2m3/2q3/2u4/2y4/225/265/2+6/3C6/3G7/3K7/3O7/3S8/3W8/3a9/3e9/3i+/3m+/3q//3u//3zA/33A/37B/3/B/4DC/4HC/4LD/4PD/4TE/4XE/4bF/4fF/4jG/4nG/4rH/4vH/4zI/43I/47I/4/J/5DJ/5HK/5LK/5PL/5TL/5XM/5bM/5fN/5jN/5nO/5rO/5vP/5zP/53Q/57Q/5/R/6DR/6HS/6LS/6PT/6TT/6XU/6bU/6fV/6jV/6nW/6rW/6vW/6zX/63X/67Y/6/Y/7DZ/7HZ/7La/7Pa/7Tb/7Xb/7bc/7fc/7jd/7nd/7re/7ve/7zf/73f/77g/7/g/8Dh/8Hh/8Li/8Pi/8Tj/8Xj/8bk/8fk/8jk/8nl/8rl/8vm/8zm/83n/87n/8/o/9Do/9Hp/9Lp/9Pq/9Tq/9Xr/9br/9fs/9js/9nt/9rt/9vu/9zu/93v/97v/9/w/+Dw/+Hx/+Lx/+Px/+Ty/+Xy/+bz/+fz/+j0/+n0/+r1/+v1/+z2/+32/+73/+/3//D4//H4//L5//P5//T6//X6//b7//f7//j8//n8//r9//v9//z+//3+//7//////yH5BAQCAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAQAHwAAAI/gD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/OXbW97lnz/v1aZW7gqQ4BMHACX/XbiQABDpT6t2wAfPi82Dft18zX939M3BcAA+/kIWAAaOi3VDcuwGcBMv9IcKAwfRzYhoJK9SBgCf6scKA41yRwXwHLYIhUPQcGIA4r9sG3hkDA8FCBDbeYOFQ0SGwARDL7MCDgAfX8I4wZYqjij41IZeMjfA2IU+F9fiDplBwHLuJPJkYwcYqUTolx4CFcOgWOKcL4o4qABVQTJlOUEACfEfjU4aYFray5FDQCCOjIP+1Mk4+dSy1yoBaAOvXJgXkU2tQ8INzHQTqKNmWOGj+kQU6kmGaq6aacdurpp6CGKuqopJZq6qmopqrqqqy26uqrn7DGKuustNZq66245qrrrrz26uuvwAYr7LDEFmvsscgmq+yyzDbr7LPQRivttNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqvuuuy26+678MYr77z01mvvvfjmq+++/Pbr778AByzwwAQXbPDBCCes8MIMN+zwwxBHLPHEFFds8cUYZ6zxxhx37PHHIIcs8sgkl2zyySinrPLKLHcUEAAh+QQFAgAAACyCAEwAIwASAAAI4QABCBxIsKDBgwL/IVyI8F+3SpDAJTQ0IUALYQwz/htFAEAABbr+eSLY4FzGgf+G8SkkDoC9BwMDpPh3hGAATScB/NsjMMCDZ9QKBvinxObIk9psMpmXgKCJf61iUli3EJkteP9eFXz6aGCCXDo7pYgA5BlCdTsC+MSFzaYVncYAMeKWM2GVmBXyxRn44Vvdg/8U2JT2j9egT/P+AgZBcAA7xQdt8TBx5h2kmHMgG5QVoGePf6CIGAGlueC/Gzaj/Vtd2rQIm8laA/ZCMIQ+2Qb/rUMNYIQ03ID9QUuWD7jBgAAh+QQFAgAAACyDAE0AIwARAAAI3AABCBxIsKDBfqnkBAonUB+dCQeQfDNIseI/KgIDPKj2L8/AACr2VTQoTo0NLNP+ASMY4Mo/DiyTjSSIDkPGB94+Fazxr0PMmQL/FWLpxxlLNf/4fFTBryIqLGGQ/YvDcs0/ORlXqAPAD88FBUq8UfyXJiOBXK9Y2gLwT1kmWvmAEszG8sdVgQgIyZ0pq2AJtuSCudtrMB0quOMIfCRDeKSsBgECpDDnaOCNdY0punPwUcy/a6Fy9ctMsVbBGKSByiToJPVMf0AGLnjmeuQ/en6GfLFWG+i/371HBgQAIfkEBQIAAAAsgwBNACQAEAAACNwAAQgcSLCgwX/p/EzBcw7Av3psNHBIM8+gxYsA0nEQGKADu39cBgaAgtGgv0QaAtBY9i8QwQCJ8BF42a7kwH+XRFqYJ+alHHsDXqYrGU/gvxova3l62erfE5E/MNZCEUADqn83kvK7wnGNQ3hVDAxQgu5iswIcBzhzRFDEPYfRYnEryG8fxn9vXurp90cCACbebNr851WkIIf//gm+GO1JCSvehhFUEHgxxmsPOHqIJ6qDQGOW7555KSpx4tB3pbzEhFrwv0cEEXxrLVifFYERZtF2/S/bsIq7SwYEACH5BAUCAAAALIQATQAjABAAAAjdAAEIHEiwoMF/wbAEuQMPwL96cVDMaMTPoMWB0pDlc4hrgMAANfj9gzIwAJ6LBrexABDAg7R/QwgG2EWuoAOUBP/ZKNninwyZp7IVLHAx3yxQQuUVDBDvDUEE5fqt/PjEIjkVLAlowmeAoIJ88WICgKDK4bYaAQIUUXdQSkkE7eKU/CPw3zVk9XKqW3fxHwWZwfhFIgKAFM6iu2zN+xeD4ABzhw9vK5H2wjJYHln6iYxTZ0kY/4iJ8VKLM850S+mZ5mzvAMELqzn/c/qxU+zI//g9GsLk9up/wH1HDggAIfkEBQIAAAAshABNACQADwAACNcAAQgcSLCgQQD+JPW4ASgfgH/3CA2BEuugRYHUKHV691DPwABfHjr56OliwX+DBAbIsG3fAoIC3F0jGOCESYLcaFqpVzAAOWI0KVj0F2pJE1f/XBVc8Q/IRxj/7Fn4SOXgvzMqA3hyRlPKv3E0AASAse0hMAxibZg7OI4min9eBlqY+XAcuIL5ptE9CJQghX/+VMV5pO7mQXh2bEhZNu/BxyyGb957oVLBtFUKBOooHPniKJpr/q2blayzyX+ECmoxHfmfMJqlWLf2KHCO7Nb/uMHKeftmQAAh+QQFAgAAACyFAE0AJAAPAAAI3wABCBxIsKBBAOzSoIhhSeA/fp/E1Jl2sCKAeI3A8EEHwB+OgQEgAfjXZaCBXhYLxkMhMAAHdcwKlvh3jWCAHSnj7RvZyGahYQU1/MtlM0NFXikCPID0743NMvcwgGTzbx0CkE8ObrvaspYom6T+KTsBYICWeiNDHQAQIIQ3g/8OPeUnpSWYfg7JzSP4z1yrWfcIghMm7x8hm2xGFhMlLWXFfF4CBHDwKttagQaaOXb8bw/IBu10tSBQw9dmzi1s2vrH+vTmfzdsPnPt+t/XgUto07aNg0UffLp3tw5+OiAAIfkEBQIAAAAshgBNACQADgAACNwAAQgcSLCgwX/QlICw4Urgv3/HEnl6Z7CiQ11MYpQ5B+BchIEDfgH450dgAAvULBb8Z2uAyRT5IhEM0OVfuJlILPb7BSrlvyEzbSWaaeVfrpkbKrrrASBAgED/aMxEhY3AwACqbM4MctANQQHY8hBkgO4fqw0BHgwd+cekg2QHZcwsVU+KQA24Bvp714/gv2KEGIkbOGuLF1//lsxcNjLcNX4qLf5r2zTAqmMHTGKJzFngOqsmW/yTtkYLqb6dIysrSCG1a4HwFBCc8tr1v06gWZSrbVvbpli8XQcEACH5BAUCAAAALIYATQAlAA4AAAjgAAEIHEiwoEEA/1rRsBDE2cB/7nI563ewIoB6biooqLLuX6+BASCUQ+iKAYAAMsxZLPjvC0gj/7QQDCDpXzwHIKdU/AcAzJVVAO4VmKmOysxF/4TNpHDw3ySQh+4NIHqK4AFu/7jNTHFQH86BDfRJAakEYSIIAULYEvjPi8AAAUoN7EdOHwB0BQPEg1fFwAIu7gb6m1eQnyYqV24R9BCgwSR/IAi6YPuP58qK0Ya+Dfbrqwdpl0P/yzOTzj92q2rdCy2aNEg/rGOzhaYZAINusmX/k6XiQA9muXNXrhw8dkAAIfkEBQIAAAAshwBNACUADQAACNsAAQgcSLCgQHPtBvo7ZAIDFnMD//2rZ7AiwX/LVgQIQIXeP0MDA8DgB+Cftx4AEoChaLFgPQwh2/wbQTBAMokwQoKx+G0Kgw6M/u0qKOJfh5rF/m2riaCivRAhORUr+OKfnJAh8v0TV1OBwX+vavrgJyPkJgD4zCAIkKOawH9HQqYR+I6Sn1//ThX08Q9dGBI9RhHkd+9ivDQcNMjJBwCbBgAbA7FzELWl5YtICBJAF8wEAAqLLosuWQGpRHgkR1/+p4NggoSqVf8DlkDgAEuxc/+79ifPs9yxAwIAIfkEBQIAAAAsiABNACYADQAACOEAAQgcSLAggHXAtA2cp+aDCDv5CP77Z7BiwX+EDAAIoIXfPygDA5gR+K/fJB9ELlkcuC7YOQD/gBEMgEldwQP6YNoJ+cbivz0GAhDo86/PzCvmCg7A929fgpAF5Bn8h2omL0kz4/zbEfIJzHkzA5Cb6mVmH3cdBkrw9o8cEQADoLAj2SNkCoHz4mwYgchfz5CS2rIpsqbbQIr4JIarESAACGgwh4RsZE3BwA/vVmrO9myfQGkzVfxjNsUGnJeaUw8cVhAFSYqqYwOoZyGkUdm4YQ7zIHBNzty4//HTBg947oAAIfkEBQIAAAAsiABNACcADQAACOAAAQgcSLAggH6/QEET+C/clRA1QBmcSLFgvBwCA7wBcK/EwACiGP4zR6lRtYoC32kaJAzAvzsEAxirFXMHw2cRBApwVLEaBgABAvz5FyQmJFYxY7j8J+QjgXMT/xkhSKDcl5i12uXMSGhphpi8BoaDdfKfhZi/rkHISKTfv2EnAhhIs4/hkI8BvrnsQyDoGH89qJ77B46PmU/6Bv6Lh4/gP5xAA8QROCvmqmIKMi5CWRGdJDy3GLKJGeeft0KCmnFerfhPTJ6sYysetxUACXiyc7vM9gVIHXa6df8bHjx3QAAh+QQFAgAAACyJAE0AJwAMAAAIzAABCBxIsCAAcwAOMRP4r1kTAEyUGZxIkeA/Yw8EBngEwJuDgQqwDfz3rx65igL9AXCyxBSAfzUIInAHiGCAOAz94REoAhfFfzg1OvpXMICzOjbPMPQk09vEdQUv/JMhE0Awm7QYTrHpaKCaKZQASCtY4N+ugQEivZz0UcGhkVxshgWGdks+DASTvOymCNGzguAK/iuGNkK6fzpsdusVQWCMcSh/7gJigcjffxRsEvsXL1fkz4L1DmwMurRFbBsEOshquvXLeaxOuXYdEAAh+QQFAgAAACyKAE0AJwAMAAAI0gABCBxIsOA/YHj0RBP4z9eTHW7SFZxIkeK/QgMJxPrXi2CKif8qErwGgAEITADaFUzxzwnBAKoG/mu350kechXbXRgYYNWzggP+AXl5iWG9jwIrfAP56SWTeQVz/DtEsAA3hqJeshE4hcCBMvZQEmTyz9PACs0A5PMisMEomRh5QvFng2cccS9j/tt2KdU7mQCgGUzGM0AhwQQ3/MMlAsCGSiIjXyQQIEAQAMwKhgDw71+8yKAFkotVTGA/pAACGArN2iK3HwIRtZ4NsjPt2wACAgAh+QQFAgAAACyKAE0AKAALAAAI5gABCBxIkOA/APgqhaGzTeA/W1moVNpXsKLFgfOgyRPID4jAAA+m/SP1MYAWgxcr+tODIICCSP9oDQwQYMu/EwQDdBv4758+aOFSjszJTFLOIP8m5CTm8J8xDTSPsBtIDdSufv+sfAQQwFCzmQHw/IMyM8I8h/s0zMQC4F8cmgGK4AMD9tK/Px97yPtXLgbNBzIdSsupAECtnJaSGeAKwAO8ttheGSPYz5mweAbN5cTwj07OMP98FZFRRlzK0/+6lBz0L1LOQw5Pyxa4b5EOHZTaviMxsMS72cAv/lPHZwoAzMGTDwwIACH5BAUCAAAALIsATQApAAsAAAjjAAEIHEiw4L9wc57UOSfwny41b4AVnEiRYD5borwBOFhBYIAO7f5NGhhgZMWTAr2RABCAQKd/dwgGeLTPAcEH+wj+24ly4xKCCdqFkUnnXcEA5AbuXJbmy6qCZogEovdPgkxhm2Ta+ieC5Ael/3gV8FhG4DEFHn/4g0FQADl+WQQKqLMRWASWDn6B/UEywLV/R2QegzXAI52G136NU/rOFap1Ov+t9BhA1r8TMmf9Q7YGzayeJ/99IUlA3L+hAxWoA836HzoZAQIIcLTRHAuBD16x3g2gny5Q2ZTu60WLt/GCAQEAIfkEBQIAAAAsjABNACkACwAACOAAAQgcSLDgv19ZiPyhJ/DfskKTyhWcSHGgwz15ngH4V2uAwAA++v1zNLDBsIooG0L6SODVvx0EAxRzd2BgABkpC+rDJzBeApsl/pWIKUsjQY8E/yntRxAelwMEqMCLVjDAPzMEFaSD9/NjjKT/bpEAkCLWRiM2r9BjQNDGv3c9BD5otbHSxwW9km4zMFDAsHQFDfDrhHQCs4bTijFsGG2Ro28GE8UUY66ggo3XJo16lxPlP0Y2A3D558Omm86oN4pr8DFArX/pnBigsCdfatT/kN0IcMHuRqX/bgsHsG9gQAAh+QQFAgAAACyMAE0AKwALAAAI6AABCBxIsCAAf5mSFJnUT+A/cap87TNIsaJAeYSMaEkG4F+egQHgdNRUAEAAFeQsqhSYj4bAAAaO5UNA8AA9dAZAXllZ0BwqX/3+vSIYwAq8ggHO3SLKgeI/g/8cGQgQIIc8SgWF/HP5EsY/bERxFPz3jx6uYfwGSiO6Zy1IQv+unTB5olpHMS8L4CJIVpkFgSm2dZREdMg/RgRMVsEnkF81aw0F+iNFhs2ysf9QgBT7bxXRMx3P+frG0+K/oyADyAOQ78XACt1Kl/63rwFIBfo6wvvzBE9K2bMVmaSqB7hxirCeGLkkMCAAIfkEBQIAAAAsjQBNACsADAAACOgAAQgcSLAgAHl8hDCBNfAfvmruDEqcKPBfsCIgiCwD4M/HwACnAPyjVQGAACz3KKoU2cyAwAAOxCEjGGDGP3UNPuJZSXDdIC6I5v1DQ3NRrYIj/jH8uIKnQHEbXtbIt4WmIHcOPqr594tmDoP/wv5r2IZmKlUECUT7Z4sCgABG4gHgZ+NlAFMFw94bNairyCQ0If0TpADAhlQV8UULR/BdnRpAEOed9+LlF5F6aG78d6+cU4phF9F89Q+eDIECAn12Gvay3Twi983ypG3153+MPgbgZLv3QHo4Agh/Uc+38Xyc3kSiByAgACH5BAUCAAAALI4ATQAsAA0AAAjpAAEIHEgQAL+B/8KV+aEFGsJ//wpKnDiRH54JAXJUA8BOw0AF1gD8sxaEgYlJFFMW/BdoYAAP9yARDNDmH70NLjWpLOivkQoMYNr9KzHzl5+ZWP7NmoljJ8I/Lof8MzGTGLGZoP7JminDqcB/FGaGE+Ryxb5/jA4AENBG5LwMLhNJhAiR4D8DM7fx43MBAhVyX+E9S4eQWo8BDOwctAtx2B1C4r5OIVjja0SvAPRRhChpYANhItcZEVhkHGbM/+4xcKnCMjt3p0//AzczwL7YuL/uuyAwQAARuYNrTeDbAKzgyMMlEkRNYEAAIfkEBQIAAAAsjwBNACwADgAACO8AAQgcSPBcuIH/lmkRAkcdwYcQI0r81+0GgAA2xiU0IDDACXsA/tEDhESMMokoAWDzJvAfjYEBhPzLQjAAqX/+fAw0wCvlw2UlAgQY4q7cwwD1itSU9M9YzSA+B9rTAHNMu4cJ9i0iKEDav1g1TUQVCOxhh39aYNoBoG+LwASWQqZLAJPMWADMHsL4hy/PCx2R+rUUp+wdQlYPhNZYF/Gf438D/eWAWeouwXm/lgmG6DifqEC2WrZDk2IILMt3Hdez0fHKZseoLTueVPNU7NuO18AMAOc2bkwdhVLyfRvfD6EBWMwjfnvfJzaN5AEICAAh+QQFAgAAACyPAE0ALgAPAAAI8QABCBxIUN4waAP/0cICZdI+ghAjSpwo8N8pBgAC+ID3z9PAAFsq/mMWCdU8iiiRRXL1cNyBj23+kSAYAByAf4oEBtCADWVEf1505qBXCqKMfw9oGvtnjsBHJT4J/mNF89Eumkf+MSEowd6/XzQtRE1Yh+aXfjkGGvj1j9yLjBF03RRHc8fYipdoGvonb8+RMMsG9nM2jF5CPzoRBLsrkJ6LgS7gMa4YLI+fnhL/af4Hka8jNZkMTx67+d4uX/pGq5b6j5oHgSWyrV6t2a7Ox7NHa6YZgFzuyZo76AwwQPJvxv9CBVgeYMxx1bSQ5DCUOiAAIfkEBQIAAAAskABNAC4AEQAACPkAAQgcOPBfNFPIBvoTtUUML4IQI0qcOLDfFoEBpPD7B2dggE4F/5GLR7GkNztSEtn7V4rgx3UDCGoQ+G9aCwADqsArGTGaA4w9+qlxeUYaxJj/+qHwiIUnwX9TXPY65BJRvgseeQD4h83lAacFZbgc1S4ERhLv/vGKACDAB2pbybn8CXZrGoIEtv1bFwiMonc04+Xida9g1LYB6NTdqg6GQAOaFg+0t2cFCkD8JP/ThyvVOcmg/4n+B7p0xNGjTave+k8akAgzdq0u/e+dhYEGjM3WjMpjgKa76/475ftI8MXsJARYHmDS8cXKRAQYkCbz87r8uLETGBAAIfkEBQIAAAAskQBNAC8AEgAACPsAAQgcONDeKknHBurLZAZQOIIQI0qcOPBfORICA8gB0K/IwAfUCP77R7EkAH6IXJR4U++fGIIBoOmCqUXgP3+cjjAZZTLivzgDA1z5FwMmqE0wbQAYCSionZ4E9SEgKMAdFZjKosFks5Tfg6AG5EEVWA9iAHXUIGT8svRPRhjsltqDGeDh2H9CgvZYOu7QHVkVs42ypa9ikKAg+o3luwNAgCLkFtvsBiNAgAvGJC/9d86dZojQhpX9TLq06dM2R45E/Vn1vVaZurGWPFKdCoEFOs2+++8NWLu7S478ETRAqeA9/5FxbDlAL+Q9wVlozkMxdJPi3DwZRA9AQAAh+QQFAgAAACyRAE0AMAAUAAAI/gABCBw48J83R4acCfxHT9OfUvoISpxIsSK7eQtxIRAooNO/eC4EBtCBr6JJk/+a1QgwIEy+fyIINrB3iGCATAXz6arl7mRFehgGBsiD0eY3MDbhLCyXQiCDVD4l/sMlUQVMghDwQbLpCcC/f1uEKlAXtWAviTP+2TogkAAoAPd2iBwS8WtMobTKDsxXQujbf9wYObo2cN+sR7H4FRQiNIAyvQu9QaFQIxTkgsPYBgiQ5HLBf54lUmMTRdG90KhTq17NuvXEr19dh4YNW/Zl2KmwkFlmW+/XQAMN5Ood9R++BEJVEPf5r1zjAMuZl9i8mUV0n8ogbGYQ7LpPdJkuBIkDEBAAIfkEBQIAAAAskgBNADEAFgAACP4AAQgcOPAfrzyBuAn8J49UpWgEI0qcSBGAuVrXFtoZqIDYP3AeBAb4U7FkxX92BgQIEKZfOIIBdvzbAjPjwn84TVL8RwtmqF8RJ/yDAXPUTV9CTIABpzPiPzkwyaAjMDCAkX9SYC5byMyAyAzsmhY8BPPPP0ciMVT7Ry2CSC8F08CMJHYhOgsDOaAD8G/aJFLwFp5jNGcVwX9cYAaquxAcGyR2zDFeCKtqAGOTM0/8l0hBgARoNYuOWA+avNGoU6tezbq1a5M4c74WGzv2bJ2x3/F5ckfd7ZI4770YWOLd75OoLA86vlOSyJVfmFN0trJ6IukUAVXPMQ87RWaSWATpAxAQACH5BAUCAAAALJMATQAyABgAAAj+AAEIHDgQHyc4htIJ/Gcvl655BCNKnEgRgD1Ui3wJ1LdDYAAO4/5R2yBQgsaKKCuOI+HRzT9TBAPA+YeDYAZ9KXMS/Acm5jNBMZ/8ixiA2sB//8DBuqZT4j8YMUPZijnonwaCBNgt/JeIAIAAVfA1PVolpjOeHnfM+wdqYIA5R426HTR2YbUIHtEsTPZJF7+FvspcEbUzU0whdReWU6RHV+KFt2JOeUxZYj8fXwMYMFa588B7jI5oOea5tOnTqFOrXs26tWudSGO/Thm79uyKseWFmoTtNkWk4TwILADTd0SkPT06gGf8ONTMAXg1j7glgHXr06YT1Pbg+hPtEbUHoYHSKB+AgAAh+QQFAgAAACyUAE0AMgAbAAAI/gABCBwo8B+6Qmgm2SvY79o4ghAjSpwI4B8yOGVmVRR3QWAAHPr+QRMBIEAPdBRTUvwXamAAQv/YEAxwql8Jl01U6oTYzwJBBfaYzCyEDSIBiP+S7pQYD2KAcIFm9kLp8gHBf/5EVQFDbOnVEwQ/9JPHw2Obil1c9hmYNI/Lll4rCrMKIAIwgf12iXo2MJ+hHTskXa2HwKXPuBXZnXIFD3HBhy4DyHNM+eo/Ex4DqKjMuaCyDQECSCjWufQ9WanclV7NurXr17Bjy55NuzblpEptr8SdW3dE3rh9//7XbswIG6qEI/0HxOUt5WyLZm4OXWC10NhvVgfQzwT2AGW2DwtsxiE0jnXiBeIjxkxgQAAh+QQFAgAAACyUAE0ANAAeAAAI/gABCBw48J80O2lUFfz3j6DDhxAjErRHCIgSWAD+6TIgMICajNV6AKjgh5/Ekyj/HRkYoNQ/GgQDfLvngeUglDgf/mMWc8a/CTGB/YppIqdRgf9qORyhkmCCdsFipnDIkOHRh+0YsFzzL1tNAAY+AdCHwiZBhosuGGDi7WrBWBAABEgSLyM9WabEIf3mpIEFPSaR/uvEEkQ9t0jpIdOLOOM/IDFbNZ5MlQjLAKYoa844qmMAB+o2a/4XyUKAEsBEq4anurXr17Bjy55Nu7bt27hz665qVTdE3r19LwQu/CxDUCUYLGFcnKEtliz2FUeaxXMAXtMFagnAnXvm7LG6FAdAQC67QD0EAjxAZX6gOmiHAQQEACH5BAUCAAAALJUATQA0ACEAAAj+AAEIHDjwny45dpARXMiwocOH/5wp2WDDFoB/iAYOIHXRnBgYS3Y9HEkSgDgHGpXJQ0Bwwz97JjTqKkmT4L9CBAOkybYwAL5XOZHUHPqPT84w+igMDODi36icOIbW/LcsJ65/shQACCDh2L9yWgUGALTw3z95z9hJtRlqAoAKlgT+Q3dq1Tu5tDQECHAFn81/nRYAMJBnbcF97PqV5IftHMN/2ggszWS4csN/lJcescy5oKulAaJ0Hp3vxda9uEaPbsfGhA6gqmPLnk27tu3buHPr3s27t+/fwIMLv2zW7PCCxYsfv5jc+HGz/DiF+YNuudkqYjlUPw4twOkAhY8bx9pLXujxcgTIB1izHEAf8hvEtQeQqw4jtQEBACH5BAUCAAAALJYATQA0ACUAAAj+AAEIBNBvIAB+puQUGmewocOHECP+a5QhAAthAP5NERggArWM9yiZUaQuosmT/0ANDODgXDGDAaj829eDY4ZwJ3M6/DcE5qdPDWX8ewVzjc6jAv8dgSlKGswy/yDBFIL06L9RBi+8+8eHo4ly/4zBtLPz37+qDf9F+uDgyMeM0Dq9spe0DkcY7dL+q5dLVz60A82eRUnNU6y/Bs1W4yAwBDTAkB+a5bGyROTLgQdzDNAN82WzIVYKyOs58j9SAVIHKFPas68oQxjxa027tu3buHPr3s27t+/fwIMLH068uPHjmQUjzyjY7PHmyo1Ddy79X75COIrMQv5PzGZZx98eCVAdgKpxcuQDhD4+gnwV5MAcpAbxbXk6U67qAQgIACH5BAUCAAAALJcATQA0ACkAAAj+AAEIhEdOIIB/9jr9AYXPoMOHECNKhNiOCYAALaYBoPdCYAAa9Q7+i3bK2cSTKA9WMRjgRL9GDgNI+vfPjUclDVPqNPjvQMxrZ2Ku+ecrZqKdSP89iEnuUkxM/wzFdIJ05787LKUAwPfDoxB8/07FRFN1Jz9ELV7osSeQX61HsvYJzJfD4wNsEGnSLMsXgL1JWuZ0y0tzGixvfRNH/OdvjEACfRRLFvivVcxZkxX/myM0c+J/klgG8OM5MbwTAVJHCFc6cTs6P7pca027tu3buHPr3s27t+/fwIMLH068uPHjyJN/1vvvOPO9xJ9DHy69eXGa1DTVknsd5kUd9IoglyOQOvWh4rnKp9ZKvJr6AGKMJylvwGTxenx2TDkGICAAIfkEDQIAAAAsmABNADQALgAACP4AAQDYNw2bQAD/3nFqROygw4cQI0qE+G/YBgABbpj7102DwABvDv77B2+iyZMC7104GGDKPy0OA0RDOMsDgAyXUOp8WOzhhH8wYob6t+0Ay1c7kxp0WOJflpjM/jWKaSXpzn9NWG76p20lxjEIMcXEYlXnP3uAhDhxJfAfO0uBbrVVN+FjgFpl85r8Fw3JhBOeJI78p7fwxJH9rn0zzFgk0RUCiahrbHgkDpZMKBf+Ny+mgHqa8/7Tp8BuAXyhRe8JwDqAmNSFHaEgMcce7Nu4c+vezbu379/AgwsfTry48ePIkytfzry5c+aDCSOPPvI49erGr0svrn16vVis4CZtL87tA+sJypA3aR0gBnIL7AOANr6C/QLkldjTSd5pB41E/AAQEAAh+QQFAgAAACyYAE0AMwA0AAAI/gABAPiHjhc0gf/+pStl6pzAhxAjSpxIEeG/QwQCBFBy718wBwACKKBl8V/FkygHJnuo0dC/Eywv7EvIjo4QNdlS6nz4jxHEAEXk/QwA7p+9FAIDNKC2U+e/UT/J+MvAckG9f6pYBuDSNKXRFUkfXHs6IGQASAkpaRXSFWVCd3yeuNk28B8zPXR+1bVWVmOAP20DU0yoKYFGIvQkJjQpuK07XM0mLk7YuDLEyYstW57cK4cEJNc0C16M7YDZCuREt13cx6zGQapX/8vjV+Oc2IGdDaiNC3fgVBECGIDtO/C9aPCKK1/OvLnz59CjS59Ovbr169iza9/Ovbv374MzQGfHzNg6+fLVz2NXvx7z+Mng48ufH51VnETstKPx28HhdW61BYAHdrEEKAV20gTYGnZX+MUBOtnx84kYgaQDQEAAIfkEBQIAAAAsmQBNADIAOwAACP4AAQD4p+zVNIED080ixg+hw4cQI0p0eO+IwABuBppCACBAi3ITQ4p8+A+RwwC62CVAGMCKwH//tI0qNrImwn9RTgoC9rDCwH+KLu6AZ3PkPzYnRV07SWOgtpMZi4b8581nxxj3/mlBOGDWQFEnZ0gV+U9cnjCO6gnk12mLGGMv4bJMMrauxH9SLhogZrfvQ36fsqB55rew4cN1YSpGbFfxNkWNxDEeC9OWAYENgk0uCpMEyxGbbf5ryDLAudA1/6noGCBAA32oa/ZK0DqAo9g2r8VBcwu379/AgwsfTry48ePIkytfzry58+fQo0ufTr269evYs2tPvTi54u7GvziDLy4eJvLy/7yLVz++uKMLBI6MS26qdoAYyYvYD7D0eI392SDHh30sJGfPFK2dcJBy5VzTD0IBAQAh+QQFAgAAACyaAE0AMABCAAAI/gABAKAXS1Q3gQD+tXumDqHDhxAjShT4LxsIgQMyJVxkAMAANf0mihyJ8F8ShwfUFXMYoFPJf/9IyqQ4geWvQSyrUCxHpcIKSzNH/rvB0htQhAHMJOwHA+mjoBP/8eoIIMAbAPA8CAygYFpCZixLQI1KLc+cVxTJtQGCBWxCZSwzjJ0LkZ+JrQHU0N1LkRuQAAKszONLGCu8wogTK5YIE+ZiqI0bP54JU1oSEEqiTRb6T11NgRC+bRb572jVAHVGR32K94vqidwOBJgd4NPriawczC7D7/bEecTA+R5OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+CNQEeOiXw8+ePmzxdPX358cvPLJR8HZkWJJuW3BtC+k9wG7QAH1IMcBP8FYA5yPfy3QnLNRDCbA8Qop04nmpzzUEAAIfkEBQIAAAAsmwBNACwASQAACP4AAfwb52nUOQAI/91DyLChw4cQH/5zhQBAgAbBAPjLgyAAiFsRQ4pkmI8CwwAo/mVqiODbyJcPuTkMUC9JwwCWEv7bFqnTOpgR6ylo2OEflZucBP5jZQBhhIxAHf57xHDAqn+8BiAMcOHnP34WTp6IKlFYHT7QEtLqAYKJtYTmbgaAR7Zuwn0VTk7gZ9fuP1NaAwRI2rcvtT1yhhVezLix48eQHf+bPDnySMr/8Nn7Zznk5HpeCgBgoq4zxMlyTg4xLfFfh5MBurGWamKr4LezGzoSLFhFv9wO+SwIkGMb8If76B1fzry58+fQo0ufTr269evYs2vfzr279+/gw02LH0++vPnz6NODx+wcc2Xm7t8fj895efzm9/FTPt4v3LvnyYwQAAFs8LVcPBfwhhNzqigYgE3LNahgFszBUwFvAxjTnDM5DJCCLBAFBAAh+QQFAgAAACybAE0AKQBQAAAI/gABAPjHrFIqewIH/kvIsKHDhw3/4REYQMQ4APnqVKiwBR3Ejx//RWMYAMy/OgkD2ADJMuKnhjH+aSA5UuC/mwtbRjRGkso/DCSb2exXSESHN/F0MvyXheIEa//gpETBTyGhlEKUMvTXqs6icwLztXkg4Ac3m/9EkJSmtWW/pf86pAzAs23bf3RSbsBn124+NAcCkFDWtzA9cYUTK17MuLHjxTcfs8SJUzJEypEtO7y5bAaAD6c0R4RHIeGAYKIT/mM1F0vqhLECAAhAO8lrgfU40KZt6bbAaCkCFIDz1rfAcfKMK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDTIsfT768+fPo06vfnNk45pyv38NPLd93/dv38VPWzC7XteWaJEDbFlXdxsxutG3iGyEIBuCFb5E0aIdv61ywWwXkGLcNFzOEAU5LAQEAIfkEBQIAAAAsnABNACoAVQAACP4AAQDol6sSrn4CEypcyLChQwD5iggMUETfv3yAbgTZ9LDjw3+YFAbQ9I9LwgCAPKpU+O+MSDXtFj5YSfMfI5GOvi0UgE/gv5/JZqWjuTCei4kv6P1rcTJIwn/2jgg8IImoQnqY6mSqB+AfNqYBYIB7ekihgGdWPXbTtvAfFJxp0/5bczKAqLhW/3WrACBAABP08KYN10YInKGCEytezLix48eQI0t+/LPy5LaVLV/2+dOYlyqjNnPmRWBiHtE/JU4sgPjyvxd9/QYIJhoAG9kBDKir3U6FbEe1BdozFQla8OPIkytfzry58+fQo0ufTr269evYs2vfzr279+/gw0qLH0++vPnz6NOr5/wPeeaftd/DRy0/fv3G8CCNgcT16f3F6IQgGw49+acZY3bgFgAptUGhoCC1AaLgLrXFE4NsbhyXjyuVRNNYQAAh+QQFAgAAACydAE0AKgBWAAAI/gABALDnilM0gQgTKlzIsKFAciQEBvAjkB+nMHiwOdzo8N+XhAGq/auCUMExjigT/oMBchQ0kENSyvwXBSQyWQpFKPzHU+bOaRAkYgFgDqQVhDzrLfpi6J1PpOIIyTkl8B8niSPCIdWXA6GHok8dmksly55KViDhhA37LxLIJ2uf/kOGMECAPHHlAhJg94XTvE+tUWoFuLDhw4gTK17MuLHjx4x59oSMVPJkypbh9ftHGQBPYBEpfOr8b52DusQwo6obAExnWHZjX+lsj0PsAFQ7L2MRYAGhzgnVAR9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDP4sfT768+fNVLQO3LBnxuzAZOtDZyZ7z4SK316isfxjc7d77sXfYNv8hEGB7iM1wGxcLIYjYOEQIgEAX8XQWEAAh+QQFAgAAACyUAE0ANABWAAAI/gABCBxIUCC7VajUFVzIsKHDhwD+FZMgkEEtgf+CTbIFsaPHgf9UEMwQ8ctAGvA+qmw4r2CAb8AIBrizsiZBfxcIKqj3SOYQm0D/hRoYQNE/WjLNFPzH9B/QhxIBvNElsB8TgQEseCP4j16bEjQ+PV3JD8AcQue4/ntCdNHYtxHRycQAd+y/bjIJ1LVLA2sAJXvf7ggQYAa5wG+3ZUPMuLHjx5AjS55MubLly5g7Os3MsClTzmo9bwbtOR690ZyZtmsCeuE/KkSVtv5nwO+C1gIhECY8ADcAN7sDQPENoMuAAEkUEgcQb7nz59CjS59Ovbr169iza9/Ovbv37+DDTosfT768+fPo06tfz769+/fw4xcUByaGlGG+54XYXYAYSM+VlRJcAFP8B+BklwwoBEaioQZZNwYE51ZEDVamCgWEdRFaU5dRk9aGn00WEAAh+QQFAgAAACyNAE0APQBWAAAI/gABCBxIsCDBf+YA/DLIsKHDhxAL/gslMEAKcQL/tYM2L6LHjw7XEQxABcA/QQIREALJEuQ/XQUx/OM1MlbLmxCvFbTxr87IMjiDMvznZeCAWv8OjZwjtClBfp/GrFEmEJ2FigqsHfz3z98+p067jZnhZJlEfncYAFiCEazbgVwXDbT4ti5XGyNp1nX7L8fcALb28uVUMcCFjoLdRqIQ4AWzxHvpQZ5MubLly5gza97MubPnz6BDixbKdbRDrqhND0VdWvVW1q63NhtDxVNsuMTmMr0NwEnhAux41whAnPgw3nGKBygg8na6EsUZ8RYojxOhZNOza9/Ovbv37+DDV4sfT768+fPo06tfz769+/fw48ufT7++/fv4869/5kw7ORjEkdDMdE8o98F0ECgXQH+s/TMadMp502BroHmi3BImTTgaLUrYsEdGGt42oYO8NbgdhaEFBAAh+QQFAgAAACyHAE0ARABTAAAI/gABCBxIsKBBgf/+AfhXDkC3gxAjSpxIcaDChX8GAAigZR/ChBVDiqz47xfBAJUWzpJBociykTBjIhR0cso/ZBoFMgAnsyfJTAMDBFjzj83JQD6TSpRXQmCAB9n+oTmZB6HSqxbV5Xly5lpCX0EDKFtY8CJWrAlDbQhA4VPZhP3e9TtLF8A7fgYTutoAgAOquoAJ/ttmYONGsIEB/2t08ktPs4nLYgq7JTLgdRU2Cq1lGXA1HwIyAO1MurTp06hTq17NurXr15Yhw55Nu7bt251l495NNyFI3gd9+waeV/hv4h+NI7f4r9UPGn/yLUcIK6jj6QCACBU6wB12G9uFd0rDTic8hHvY28kQmsAVdoH7cp0y976+/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBG2NM7oWAiTn3YYCAUAn9h50R4C7SDHQjhBQDWcbwVUWJUwgHXzAPbdWGcbraBc8cXnfAzI4277YjdjPW1CFxAACH5BAUCAAAALIIATQBJAFAAAAj+AAEIHEiwoMGDBP+dk2YPocOHECNKLKjvi0AHniZq3MgxYSOCBKwB+FcujxhM+DqqXDnSCMEAk/6FqyAwQA6WODX+w/IS1L85L0vlHPrwH7KBAUDM+yflZSCiUA/+I0bFBplxIx+9pBW1K0R8SgAECGBRqtezAJB9Mib1n9t/aOMm/PfOyoEHdfLJjevWCVI1e9H+q/cSgd7AXf81RBpgMeKo/7SIHYvk8dl6XggEKKLOMtp79DyLHk26tOnTqFOrXs26tevXsGPLnk27tu3buEW/dZt77u7eA3e/BT5SOFzgbrthaoXveO9/pmqq6AycnoOxY+EQh4Z9LA7i6gRodF9CHIAX7AN2lc9XqAcT9eXjy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEFEpMDBD0oU544DGCnQDbENdJdAHEQp8iFYwyHWzcHdLfKb7jZkkEABtxhXG/UxGOcc7m9SNyK5ZF4W0AAIfkEBQIAAAAsfgBNAE0ATQAACP4AAQgcSLCgwYMIAfyrl7Chw4cQIxaEBwVAABvXJGrcyJHgPy8ETQj8988ZrXUdU6oc+I8CwQDM/uFTItBAo5U4N/7b8JLav5sDAyjLSfThv0FBeyiU8rJQ0acJ/T0CQIIMO4VsXm6CyhVitwkCA5CQ17Vsw29whsRBZ7YtR5Jw3cpl+a/YkhkA3M11+y8awRd72/5L85JU4LL/tAQN4PRw11RhAwQw5rgsHgEBBPypbBYcLXCcQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+u+HXc3Xbj/fCsEHnw3cZK+jxc3zk5VLHvLdQd7IHkEaN8nJEu24huedskhhFwf+F5DuJrvoYQDKGSjhyn18OPLn0+/vv37+PPr38+/v///XEETCCLiqHfKAJI9kIxwF3zngm/vfCeZcCB8d0FvuOViwISgAKebNHW4MQxxyR1XIoknIgefirgFBAAh+QQFAgAAACx8AE0ATwBJAAAI/gABCBxIsKDBgwgJ/vuXsKHDhxAjFlxIrsmBCnHySdzIsaNBfzQEBgjQZuBChh5TqiyIreADAAthxagA5drKmx5bEmQAcxjBCupwCo34D8fAAGdgeiEYINLQpw7PSVnAIE09mFuYFoLKFeJCWUcHQFMIs6tZhZUmBJAg6qzbhvzE6XOI8q1dhSfr3j3L8KQyQ57m7XXb91+jgSPGDSbMzsDRKYvNLkzGVEPks+0OiAxg9LLZRyMDFMDl+eyuM2yWlV7NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OXC/x4wmNI1/OnGPe5nkXMo+uPDj16tajT9e+HBweMaX8aDHnJiF0yeVnQo8kt/yH+gDHloNRb8Dd8m0VQg9qfq4QnV3NBSjggAQWaOCBG+1jT4D8yJGAAEacw9wh6unAnA3vPbPcDu8Vg51vnqjHwT3SHSeIAgGo4MxJy+WDDnfIUbfdczN+2FtAACH5BAUCAAAALHoATgBRAEUAAAj+AAEIHEiwoMGDCAv+yxZFhBBbCSNKnEixosF3GgYO6GWxo8ePB/+FIhggisB/9kIJ0gWypUuD/y6RLALgn7wXAgNA4feyZ8twCAYGkFRTEUlTPpN2/FeLQ4ACbnj+A0NyjtKrFsnNG/gPktAAm7CK9VgvB4AAAWrYG8u24r5TdjatbUu3rl27//L+u8uXq968fe/qdbQBwRNzgevmLSXUxb7EbfMm+ZoLcuTJZ9Gmstz2FFq0DNJxbntIQYAMEEe3rfeNp+rXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KP3/Nv8L+Dl1q8nz75XOXfs1plq18t2T3tyTAwCQCDFfNnnAAS0Lc/zPgCl5XPqi1qebMBnCvAMlI4mmSBGXCkeBCCDMgMxEwFaDRBjXD8F7fBeCsxBUB85y9nw3gH1dIfcLv4JdId5xxGjBRSc+KMXeOF5lx1zMdIoYnIBAQAh+QQFAgAAACx4AE4AUQBDAAAI/gABCBxIsKDBgwgR/qsWBkAedQkjSpxIsWLBf9kaDCQRz6LHjyAP/ltDMIAlgf9S9gvJsqXIKiUDAUj5SgQAFrVc6mT5b1PJXjOjESSgbKdRj/zKCBTQB6WfkmyOSrX4a9zAf4JKppnK1eM/bgkEBgjgq6vZisFqBMjg6azbt3Djyp1Lt67ClCntvsWbbtYzvW5TjhpIBbDZf+lKEjLM9R+tgWNvMOY6LQCAsQGETOZqBXMAV5u59qkBBHTo06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OnDbe4XjzAo/+3JydKIfs6aaekl0HzD62WXNP5DnArNzc/8kpb0j8c1aYBcb6h1u7wSeWATDpR592vS0EDDAFPAa9Akgr/EknGxmebWFQerQZ4JkCD1JHGz3lQSDSc7UR4dkcwZEzRAAEhHHPcO/MY1BAACH5BAUCAAAALHcATgBOAEoAAAj+AAEIHEiwoMGDCBMC+FdND51cCiNKnEhR4r9fBwAECECnosePIAv+y0FQQDeC/0KqXCnyAsEAvAT+8ycrUCp9LHN+/MeEoAFzC/9ZERgghjudSC1q8xAAgABIMnu9vJO0qkJ6ry5VG/gv0ssgVsNO/Bfs5RmxaBP++/dFY4AL3tLKRXiLziF0c/Pq3cu3r9+/K9euBYxW8GDCVgXPM5XpG+Kqa8N9EIjg1WOka7sMDBBB3mWd/2BsDiDss84pG1NvNc2SmoPUTljrrDYGCSJ8snPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KNLn069uvXr2LNjN4blSCR+zoVyEUidxnmT1AEEnGuuA32AsszxbBRoQF1zdy0GQjq8HB8qSdEI1pxhAiKXElcEGkfggUHxR9yCzkHI3IIMLifhhAk+5+BxyUihgx70OGeMAakR4dwR7knTnAnuDdNcF+hVUE9z5qSwkQTAPJfPLq68c1BAACH5BAUCAAAALHYATgBPAFAAAAj+AAEIHEiwoMGDCBMO/BduUyp4CiNKnEhx4r9VBwRKQFaxo8ePBvVNINgCpMmTErsVDGBv4b+XKGOCrMdgYIAMC81l+YAjlcyfFP9NsilK4L9+L2yOAspU4T9jduQYWzjVpoymWIMOIxiARNavEfF5EBggwBqwaBFOk1GWSby0cA12Oxe3rt27ePPq3cu370uYfZv+/RuY6V9xsq79K/zzpSMCAs0wlvkvG9eik0/+A2UzQJXMKHWVHf0F9Ml+O0YTKGb6pDs1KYbsak27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPnacv1GSOq3/FwFUaPOS5ndFltxqdveA/wynihsgOdGX9XYqAXwMTjQZKDyh/84YMJF8+/+Phg6AAGKOCABBZooIH5+Zegcfz1R1yDDPIX4X+/weNKLfgQRKFvszxQ1gniGAePA95hYRwu44lgXDTjCRGXg2gpMRoCxBxnzyFHlEFNRQEBACH5BAUCAAAALHUATgBSAFQAAAj+AAEIHEiwoMGDCBMW/CdPWTmFECNKnEhR4D9UDAAEmGKvosePIAn+M4dgYAA8IVOqhPgvVcEXK2PKtAiMYIAfA//904dM2syfE/vxMOnK4j9pHwTqGAe0aUJ5fXoomZXzXwuTQ5xqlTjSZoB6W8Mi/IdPgUkE+cSqXbhHYIAAcNbKJfipx41D/Obq3cu3r9+/gAMLHky4MEudhn/qXJw45uLHjVXq1KfHAwg/eSOD1EnHZB7Nm/9FcBuAgT7QH/8xeMtaHuqPYVgHgPH6Yzseb0NMqw0yGrLTvIMLH068uPHjyJMrX868ufPn0KNLn069ukJxrpBJ32TgbRPgzc1+dWdt6fks2QGqPH/2duAX6EMFDij277m7NCeC5ELs/DHj/v5FB5l1BBZo4HH1Hajgggw26OCDEEYo4YQUNjXgc/4l2FyGGjLH4XHyQOPOQhkat8cBARiACIkXCqcKesKI1KJwXaDXx3NsoAfJc9IowBoH7EBnjBM0mCHOTwEBACH5BAUCAAAALHUATgBTAFUAAAj+AAEIHEiwoMGDCBMa/MdQocOHECNKJPjPVgoALFpN3Mix48JrBgYKGOaxpMmH/wQRDFDmpMuXA/8hWgmGYkOYOCP+45ZgYABdMf+Vc3SoWs6jCv8FozFgAyeK0CAIHHAJqVWd/5IQNIDuqteEDEP4DLDrq9mFTsZuO8t24DUMAeKuaUsXALtEclzV3cu3r9+/gAMLHky4sOHDiAszXPwvsUnGNx13XByOGL3Gkjn+60dGIIRZmTVv8umAXeiJ/7AIjBvg1OmJcVjHTfVa4rUDrDHEqy2xVw0JRYzyHk68uPHjyJMrX868ufPn0KNLpwtLBwky7aD7GsB6B/QssgN8SHsuJe5qYM8dBRioILvzfEsEJjCFuTlDZrLSRbYPGXr/6QAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVgjTYsnZk89B/xH3zQ8BDEAFPDZ1yJsMsl1RImPEbROeAf0EZeJr44THwIoYEneEbG8UNGNt8JzhQQl7bMhWQAAh+QQFAgAAACx1AE8AVABUAAAI/gABCBxIsKDBgwgTGvwHLYsQO+oUSpxIsaJFgf+oKRhYQt7FjyBDLkxDMEAmkShTUvxXpaQglTBjEvzXqeSvmf9yytx5sZ8aAQEG/MH5DU4URvd4Kp14Dli5gv/IVRAYIEe+pVgt/sNT0lPWrxL/iSnZB6zZg/9ADQwQwNXZtwT7iWEbAEs/uHgFMvM0LK/fv4ADCx5MuLDhw4gTK17MuLHZnP8cp4QMWbJIypUtf4Qs7xm8yJov5sy0EcGj0KKnrQ2ADLXFSXTZcnVNcVTsAHVoU5yXge6AZropSuNhAMWr4MiTK1/OvLnz59AV80N2TF/0geRWsC3B7ToAJ7GDgHifEJuAdxABBm68XoigGtDQ+w0C0cFOPvjPMeuMrt87xv3+BSjggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYfiTNJrdc5R0gdK1wDlT4BZcNUHSN9R9lyaVymwoD9YecM7clsSJmyX1BlwKtAaBfibq5osYd2ODE4nUyvhUQACH5BAUCAAAALHQATwBWAFMAAAj+AAEIHEiwoMGDCBMi/OfOEqJkCiNKnEixYsF/4DoIDEDHosePIBP++0IwALSQKFNW/CejJCiVMGMa/BemZDGZOGWG87CxysV/QP/lHEoxXiY6rH62e7NDSzWiUD/+29dS4IJmUbNO/KerpE+tYBemKnkjrFmD6BRsDCDnrNuBsSAECHAD3tu78GwNu8u3r9+/gAMLHky4sOHDiBMrXsy4seOsQR+jDApUslTKlS2vxCxUM0Wg6t4AGePN82d8KgZaWGd64qu5sBW1lpgJ9twysyNasx3gUu6IfWAPwfc7IjNJtoorXw742iFF4ZgffGVgbgOI0gmKsO0j+0B7czd3TvCumiAN8gIrEXSFHsC/WVrAAOtMnnN795Tv69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEZYUTnT6KMfGHNlAEt7kth2ADfoMcGbevhlVtwXvH1SYmTFOXMAbBe8wxl9vy3jBAlRZLMii97N2J59P/IYWEAAIfkEBQIAAAAsdABPAFcAUAAACP4AAQgcSLCgwYMIEyb89y+cNoUQI0qcSPHgP3hHBJpQVrGjx48K/50heKEeyJMoK/4jQTDArpQwY1qU0fKYzJsxGZoCEICnjX44g6b894qICjPsCjJcKrQpSIb+Mhlh4sqpVYoM+wwMIOmq15D8Gmx1sO+rWYIMTW4NoO6sW4H/fggMEIDl27feVtCVEOzuXX29aMHzS7iw4cOIEytezLix48eQI0ueTLmy5cuYM2sWupThZqydPX+OGFr06JClT0NkCEwIiS7mVEOUdmAui7KyEcKhy7tXboRmeNMlJXDYGjfLfgMoJXzAQ1K8B8j63U8LXQKOBIYQDkM5gGevwn+tnQvBu0EQBG2YR9tqgEADL9cP/Lfsjp5q/+TPD61/v+n+ACoV4IAEFmjggQgmqOCCDDbo4IMQRijhhBRWaOGFp8ETSBWAtAMgPi/wJgI6/TEnXB39OSJcAFAAwJR3y6wICH/eESIAXTTIk5p31lgSyz6l5adfkP0RWWRnkwUEACH5BAUCAAAALHUATwBWAE0AAAj+AAEIHEiwoMGDCBMq/PdPocOHECNKPPjPnyUbOAbhm8ixo8eE/xINDFDlo8mTE/99IBjAG8qXMA3+o8CSWcybMP99GalhI86fJuE1CRBgAzGgSE2Sm6aPIsOGSaNKZPitjhhRUrMu/LcNgsAAXLSKLcjwDMtgY9MC+NdkZIBJasf+K/SVKNq4Yu0RIRoADN60/F4lyvW3sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s2fDTxl+3hq64bU8bu6OXlv6n7EEfDGtZl1aCN8AE/itZkiN0il7/0C4fbcb0wAAAVKs80HQwmx4sPnSAWZg4KfZy24HEPKPWp03wqBvjh6n3Urr2QC08DVwjLb41fkSDbFSDL39+/jz69/Pv7///wAGKOCABBZo4IEIJqjggmLNowop5/DXzQdEMXDLflXcJsE8+oWg3TD6FaFdNk/dp4wCfE1R2n3VjKHEIvmsmF9r79lH437n4VgiZgEBACH5BAUCAAAALHUAUABWAEgAAAj+AAEIHEiwoMGDCBMq/EfuUqZxCiNKnEixYsF/wxYIPMDKosePIBP+i0EQgr2QKFNW/FcwgDSVMGMa/MdiYAAD7mTqjPlvVwIAAQII2kkUZjdBcm4VXcr0n1OWTKOudFotVDCpWCM6DTRQSb6sYC9aIxiAUNizAP6JIisEbdh/xmwGqOL2LZWgN4/VDcsv0hEuyfYKHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNXzJcq0jLNE+XFwDsIdERCeAMMgGgaYZQANnG1RniG7NjZaZ8CoKZgoBOorZ8Kh8aFCKF7uIUrF558eW6nuJ8zj36xWSVc/YBTF/gHL5Gv2wVrXksd4FJ4gaPIlzkP4BZ5ruf3jQ4KQRx7AOzg9OBy+77//wAGKOCABBZo4IEIJqigQPyEE89/yYhwkx333YNBapKwRwx5MrAnDXkwQBfeEKktott28FyRwAR/+DNdeMtpR12M7Dl3n3KaBQQAIfkEBQIAAAAsdQBQAFYARAAACP4AAQgcSLCgwYMIEyoE8O8fv34LI0qcSLHiP3lbDADQ0q6ix48gE/7zMjAAkJAoU1pUQDBAOJUwYxr856BkAG8yc8b8B6fkDZ1AVebbM2HAEnJBkypdyhRkw39Noy58+lSqVYIN6615EOFNvqtXG6IpOQas1YYNSg54Z1YqTYEB4pprG/Ufm7hxZdCVao+LgAAutu212m7c4MOIEytezLix48eQI0ueTLmy5cuYUdaL1jGzR1MPAhgQ5JniuAN4A+wqLdFTgJJ0WEfs1JK0bIXpIAw8YO22wn/F9KqwBdU3QqoNjf+mqry58+dhq0LHiny6QOTJrWMvPn27dYbYv2rfI1QkDDXu05fgZZDt+7PUAdp8fwXfyvds8CF9B5AHb456+wFgDCSr7BPggQgmqCBMtiTRQyL87CdLamfsB0RqArxk3QzwBfOdHqkl0A56ztHDQ1wEeCIddP3wQgo4zGkX3nczyrjibQEBACH5BAUCAAAALHUAUABVAEEAAAj+AAEIHEiwoMGDCBMqHPjv38KHECNKnNgwmp4+0SZq3Mgx4T9aBQQKyNSxpEmJ/1YQTCDvpMuXBf8dIBjgGcybLv/tGBiAJc6fHf85sxCgqCSgSDm+22RoWdKnUKNKnUpVY8OrDqtWbbiP1iRmWrfe+yEwAJ+wU/9NomkMbdR/YXgGGOQW6r9FZYtqqgtVnoqiAUq05Pu0XZ4nddQRXsy4sePHkCNLnky5suXLmDMT5KeIBo9PmjfOARwAU2iJ+hQEAFDUxemI6FYPBPEaoj/aA73UfvjvlwOBJ8rtXtiQnapa+bIO94h1ufPn0KNLn069uvXr2LM/xaq8Ovfu0r9tg48u3np589ytUwMF7Kr1P4Cf7EMYTRi93dNIBwhlcN6QohP8Utsj+r1h0B6kaYDPa57o94hBQejXy2vxfACYBu8YZIV+xIx3mThi3AAGOAcVM4BsLfTj4XO25CCCFua459136KU3Y3PX4QhdQAAh+QQFAgAAACx1AFEAUwBBAAAI/gABCBxIsKDBgwgTKhz47x8/fQsjSpxIUeK/fGYQFJhSrqLHjyAN/pMzMICMkChTWuRAMIAzlTBjMhRRMoAymThT/jNU8gS/nEBB+jt0QcAPbkGTKl3KtKnTp1CXNmwYNerUqVWfNtxniYoabFmbNtwy8AG1sFK9tXSCVuk/YjVHtFVKL0KAuwGizFXq6sDdC9n2KuVGiZM7wYgTK17MuLHjx4L79RqFFDLKe0DuEsBkOaQivAEMnOv8UUlLXaQr/iNb8lpqiv+MDRho+jXsXkdm0JlnG/bVf719Uw1OvLjx48iTK1/OvLnz59CjS59OvTrKWXIMoYuOBy+GcMixZw48NwD0meO/gQM4Btqk8fTq4yW4KxCK+uDwBx4KIJABs+G95TfQLWrksY14AaZHkID4XVUQg6lBYwgl6yj0W2+cCHAXBt08x44CoHHxnC7t0fBcNe2FAR0WeFXwDXT8YJJFHeARFBAAIfkEBQIAAAAsdgBRAE8ASAAACP4AAQgcSLCgwYMIEyok+O/fwocQI0pU2PBdJ0rZJmrcyHHgv20ZBBKI1LGkyYT/rBAkEO6kS5f/YBAMAOulzY7/pgwMEMDZzZ8as1kAwFMl0KMR0x0a84kf0qdQo0qdSrWq1atYDTbcmvXpVq5df27VNUXJprBi/7XauQetzYY5dhZQ5/blvxICeQZYVvdlGr0BFsTr67LdC54EPBF+me8Vpm2LI0ueHFVenBlIgFHuOESvgWSbNUILkDcAmNATY82kglqiOAIEK7WO+O/RAIFH9M2G2HDbKGH+dtP+Kry48ePIkytfzry58+fQo0ufTr06Qn2TpsDxFr2K3grfnmpXAxzgzfNc5IU8X2eAtMA2Dp03cu+BXPzm/4wNugSv4fOvYDkH4H0CBmjdgcURB92A/zFYIIANQhihgcxJqBwwejzCTnR86MWBOM9FQ94az4FC3hDP+UKeHdA1odcKGz63DyhvQCIPQgEBACH5BAUCAAAALHUAUgBRAE0AAAj+AAEIHEiwoMGDCBMqLPiv4b+FECNKnLiwoS8kNOjAo8ixo0eC/4gNEBjgBb6PKFMq/IeFYABVKmPKBPBPictJM3N+/JdpYIAA0XQK5ejvDYEABRwNXUqxHLB0TKNKnUq1qtWrWLNq3cqVpsOuSx1+BauzYT1LcUTtI5vznz0ZA5mwncnTZ4BXc2P+q0PyZ568MVf9HNwTcMp+RAa7qEeQnDV+hinmy5QG0ryB96r8LCEtcko/gwOc6Of5Ywu74kp3/LeCoAB3qjn+I0RQSmzZ/PBESKBl422KYhv+li18uPHjyJMrX868ufPn0KNLn059rjE4d4JSJyXgp4Fd1Dt6hK4xvV/oAAaoqwgwEMVD6bEICBzw6n30f83qyFlW/H5w+/6JVZ2A1RVo4IEIJqjgggw26OCDnhE43X8TUijdfwA+hyF1FirnDSF6LAOShMnZgsBPAohC3QahWUBadO+cF8A70vFTQWggUCfKAD8xgEt10RDSyDgdBQQAIfkEBQIAAAAsdQBTAFIAUAAACP4AAQgcSLCgwYMIEyo0+O+fvnL+FkqcSLHiwoaUHgD4EMuix48gC/4LRrAAtJAoU16kQzBAHpUwYwr896flS5k4UXZjACBAgALPcgoFuaxHAhWzhipdyrSp06dQo0qdSrWq1atYs35syFWrUK5dveLk2m8cvX9iZTZMNgLAAT1pY/67h2FggFEEhylClS9uxX/E7AYQMrCOzwA36PmlCO2wTx4CqwUQ6NPRYoo2HEsSmKklmMsTxxUR0IDPwI4EGYGmaK8fQX0xBnpotxrkP3h9mrwpV9s2WLS9gwsfTry48ePIkytfzry58+cLq73aBp0gG58Cala/5TgAs+qBunmrhm5pMuVK1ddVGGhBXfV/1p6MgFINOPTf9p/jrz4zLP//AAYo4IAEFmjggQgmqOCCDDbo4IMQRlgcWP/t956FzuHX0HHDBGEBDr0QpOFx1CBw2AHWiPjbcXR0Z5qKGx63Rnd2VMeLYwMow18lEgTwgSkA7gOPUgEBACH5BAUCAAAALHUAUwBTAFAAAAj+AAEIHEiwoMGDCBMqRPjv38KHECNKlNjQGyxqEzNq3HiwoaEBAAJ42cexpMmH/6YRDLDopMuXA/9pWmkEpk2T/24NDBDgys2fG/v94BnAgDGgSCfeIwRECrGkUKNKnUq1qtWrWLNq3cq1q9evYG02dBj25tiGBpmRwVKq7MSzYwkGM0DUj9uIY9GVYlWPIJCdCO7dRfmvVwOBILwJ/EdhJbnBKEXsnLLYB8EQkB++CxCS52EA/5J9PqAzs0J+FIgG+LD4nzhHiriRNZ2QkWpIMc/SfthJyBBQu4MLH068uPHjyJMrX858+SgaJdz0bU5wleoo1AkKUR3gXHaBOjiBCwyg8jseghbyfQcgr4dAB7VmU//nzxgtd2i/w82vX/f6/wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhYPFc8su9hgEF3K/SMCTBs0QtJ98wvHzgWovmLifceJwF0A8uX1YXD0JqAZBPzX6V5wgtxVk43GvhDHGLB2haFNAACH5BAUCAAAALHUAVABUAE8AAAj+AAEIHEiwoMGDCBMqTPiv4cKHECNKlNiwmqRT9iZq3MjxYMNMAwSS+NaxpEmI/+IlGBiAycmXMAn+e0YwgISYOE/+a2dAYIAALHIK7fiv0c8AAlwNXbqxF5k0w5hKnUq1qtWrWLNq3cq1q9evYMMuXLcmxhNlYoXum3FUAba0OGsFYCkHrsaGDglSqmnGLkW8eQUyK/jKb0TAgQH82zNQjGGUDe3p6pVP5r9qppr9e/ywITUOAkt4s5yYM8McLJ2YLingaIADqztucA0hNkdEru3Y5ujIxYpC/HYLH068uPGs/ZAVq3x8obkXP0NQa65Qi+sb1BPOdp0xu0EUBA9+MPdOUBHBMpvJE/R3iASHOPjSqxeIuDT5+vMN4s3Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVgjAOd35R00MARTQRT399YOCa2GQJp9x1rgWgAID4XdcOCo+QJ+Lxz3hGh0z0lhcPXOIAMIe++SIWH865gfYVgEBACH5BAUCAAAALHUAVQBVAEwAAAj+AAEIHEiwoMGDCBMqVPiv4b+FECNKnDixYbhHkMZR3MixI8KGwxgIZFDLo8mTEhvOGBjggj6UMGMSbFiAZYBpMnPC/LdSYAAD8XQKNUlsQYCjfoYq7bitThlXS6NKnUq1qtWrWLNq3cqVaicYItbM6yqV1NGjT8gu/UfD5jq1Q/9lIBjAHFyh/7AQrHEXrzkXAkNQ64u337Fi+Qh3dPjQoEPFHBk3hCxTcmPKKC1j3mnvToserDZnvsISlmiT684eFXLaYzjVAVC09jhCdZfZHYFFOJrCLrlGhnDijtjOla7EziAcJRB6OEUjqjk4pwgigM8A76ZLxEHwQT/tEWt2DRi46DL4hP+GhcHCavJ5hpLfQ4wvv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDBLYTjF3/cZJAAAKowU9/2xCg2iL9iQLbEAO5Z58tsDkBgGb17ZPDWQPkYpl578mTRw1ElDRjfzvySB9/LN4VEAAh+QQFAgAAACx1AFYAVgBIAAAI/gABCBxIsKDBgwgTKlz4r+G/hRAjSpxIsWE+WJqyUdzIsaPCf+9iCCRgyaPJkxXxEBygEaXLlwX/ESEYIBPMmy//tRkYIIAsnEBPjuPQM8CMoEg9nqMD5Y+8pFCjSp1KtarVq1bLWalQ4ydWqy2KDhj2lSoummLKTg1VkItaqdsKen2b9J+mAwLp0I3akF2wcQ/38m0ouLDhw4gTK14s0CFhxi4dP4bsUfJkyhwtBxa350wrzBP/+cIxwYg1ANoiFLUDOiI2vAACZJAnpmgAAupaL/RjOwCqHwF4PtOtEE9vSl4IFnhHPOEu2wKoYYswEFDg5gfvCAhgABKAf+L+aMChdR37QXG/0jWWbD60w/bw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4H5yROCAGfTwl4dtSPBHlG3d7NdBb9G8d98etonAj2P4wXFAACtMYxl+9JTz3Yr6acYfjDGSiFlAACH5BAUCAAAALHUAVwBWAEQAAAj+AAEIHEiwoMGDCBMqXAjgn8N/DCNKnEhx4cN2yNZV3Mixo0GHkQ4IPOSxpMmI/6IJDAAgQKyTMGMO/BeJYIAtMnOa/EdqYIAAY3QK7WgPxc8AA4oNXVrxHBcRN2wxnUq1qlWKrXCUSAPvqteBtY4GIPL1KxCb3cpa/UfCpjW1Vf+JIXgCbtx1NARiWGY3br9iu+r1XetwsOHDiBMrXsy4sePHTO9dggMK8sl7OI4asVzyk9gAtzhLfFhYDsuVNUVbJO1wUkFdqlezjldiIJF+sRWyfviuEBhJ+CDmRvjPny1An+7tFj4c4dyWNASTbp6Q2WfX1BmG+owmO8NgnwtgeWcI5OgGdOMX2jsUZQ659PDjy59Pv779+/jz69/Pv7///wAGKOCAi8mThgctbKKfE2JZgp86n4GAnzmfJZAfD2I1MR1949DwkwzkbFgfNdX4sxt+y6HImn4rssjccAEBACH5BAUCAAAALHUAWABWAD8AAAj+AAEIHEiwoMGDCBMqXDjwn0OGECNKnMjQoUWKGDNqNOgQHhkOLkBtHEkSokMjAwN0KsmyZUNxBAOUcEmT5L9uKQNMqMlT478aAYIGoNKzKEVwL4LeOEfR3p8eUYYZdTntWsYnQg0Ym8pVobOYWLqKNfgqJYAjY9MK7DaAICS1af8lGohEH9yxDq+FAubvbtyLfgMLnvpvsOHDiBMrRsytk6x8i2t6IhA0xrvILeMxEBrgDmaWwwKkLPK55LSCY0rbJDLQwFfVG//N05MjCrLCsH1aBJw7427cvU3yDk7xN/CGxBUaP568ovHmEpdDl9iOkiBhD6czJNdBaCHtENlrcDbQDvxCIJwDPDOvEAvnAerYJ2ymQCgb+QqppbHiCb///wAGKOCABBZo4IEItsROGzRI0UyB/QAV1ALVEBhMeloQSEt6PhDozgOczZFdgLMsEBQN7gz3Xzqu+LLPbgRKF+NvBT5n4IjgBQQAIfkEBQIAAAAsdQBaAFYAOQAACP4AAQgcSLCgwYMIEypcOPCfQ4cMI0qcSHGhw3acKnmryLGjx4IOr10QeEDWx5MoGTp0MjBABHopY8psGKJlgGEUyeUJw4nfzJ8C/y0RGKAouIngKhQN8AUoUGkPlnqhKMamNqc/s7GhgsmnxH8yCAb4hbXsxH9bCCZoZ7atxWwWBmJySzfhv3SPBi37V7evwYd+AwseTLiw4cOI6b5Dl7gtvi0CAuQI1xgrnqUBdlR2iiIA0QBsN8v8J4LggHqiR88hCCX16HtiDABgss716H/46kG0nfLhbt7AgwsfTry48ePIkzcErDyi79/N7T7nG1368+rWfWNHOH37wX6FSGuAuJPP+8FBmN2YN8gBM4P1BQdgRgCfoBDMLOsL5FaiqApx+g2kzzHJ7BMgRewsQoctBwJQTgdL3XFgHJgJkE2AT2AWQCgBAqLhMNTB905/njXhD3TmvYMIGZ3sw1x904UIX4wHdlfji9UFBAAh+QQFAgAAACx2AFsAUwA0AAAI/gABCBxIsKDBgwgTKlxI8J/DfwwjSpxIEeHDhxUzatw40KGzJjDAmJOYbRKoeRxTTvzXbcFAEygXmiIQIMCHcCpzKvz3h2CATAvfNRgYAIzOowb/0SEaANBCXwVlIJ06UFjNq7gWTivIharXQwJqwmH4z8nAB9m8eg0nS1vEf/kWQTHjVq1diRfv6t3Lt6/fv4ADC1a7bo4QNuQG67WX4qqHd4rtngogsGalyGqdEh2E2eurgro6U+0XZWAXiKKR/vN365Euf6mnXnQYmyrt2rhz697Nu7fv38CDCx9OvLjx48iTK885G/XyhrOfF2wuHXregfvC7VNOXWAqCgEoXphK3v1agasEqBm/ZwjKGm+3ATi6WpOP8SNXKyQeqIl+gDrF+eJfHgStI0FNAhXjXHCS+DdGQcSkAMAFoGAkHDD+iZJUPNEN18VVRmw3XXfD4ZJILPwcRGJ1AHS4XEAAIfkEBQIAAAAsdgBdAFEANwAACP4AAQgcKNDcsnkEEypcyLChw4f/IkZ8CECOgAAPVlHcyLEjQYn/6k1sOCqAwAAJ0HlcyVJhxGk0AFCo1PCfEoIBXLXcyfLfvQ4DczL81wRnMJ5IOf7zhZPIUJ0Dc/RLSvVhsaABdNT0hKLClnVVwzLkxyKA2QCKaoIUy1bhNhoBCqjZ17Yuy3T07Ordy7cvwX7Klk31S1igtxRmW4wrTFjJ2QBLGPfFRyBoBMl88xkgOALz3n9fCKb1bDdkGw0gCvkjXRrkP9afR8KeTbu27du4c+vezbu379/AgwsfTry48ePIk3uc90nRM+ULz4k4Swl6QjaPE7izPhDI4wC8uGULXHMWQABp4gFse2ASABPZxF0PxHYmyiJ88Ie7fg1gP//4+wnkn3EDCrgWgQF+pFyC1uVjYH7IBaNCAB+0kh4A4jBwFgHQpEfId4Ckd8d3haQ3THbeXHgJexrUcqFA+YgzGEEBAQAh+QQFAgAAACx2AF0AUAA9AAAI/gABCBwIoB4aDCEQEVzIsKHDhxAjShw4RWCAAI0matzIceC/iN4IBnjRsaTJhf9SpnyobCGLkzA7qvyXb9/HhvguECQUs+fElPCoEDhABl/Df8EwCOyyz6fThymvDAzQxuE/fM/G3XzKleA/fgWmKtDXtezGfwoAXAwg4J7ZtxLXrA1wBK7dh/WsCAgg5NxAd36kBIJ39+67dATpqVj7wmjhxwA4BbAYABXkx29ERrp8958lkcc42/13D8dAMKI74xsFaJa/1KNnwp5Nu7bt27hz697Nu7fv38CDCx9OvLjx48iBowskBlS/5A/PcVjLBbrDPXMDSLPO0Ev2UdwXbDa6ODB0+IHxXgqcsvK8QHmR4pTq1979TJXuBd7fmv9+/v8ABijggCbx959/B+6XIIL2Kdifgw/ix909r4DyjUf1QTdOChcdkAqATcwVgVv5PZDdNP+RMFcC8pTFn4F2eTKXIwHSggUWskQUEAAh+QQFAgAAACx1AFwAUgBEAAAI/gABCBw48N2gMJTwEVzIsKHDhxAjSiT4rkSAi0T6TdzIsaPHPgQD7PJIsqTJf09CgjLJsmXEf3MICqjmsubGf/9eohMx0I/Nnw9xCs0ZNJ6lQL+IAl06cCjOl0+ZSgUgVNaQGn/yTd0q8Z8sgl64inX4z8jAi94G1jOzQIGZemOl/sMh8GKAYAPX2A2gJq7UQXsTtBOoT8HZCH6Z3ity8YCngfQWWkgsVZipcQT/9SCYhnLcf99mCFwiz/NYodvIKTXNdSjr17Bjy55Nu7bt27hz697Nu7fv38CDC799qw4jdsM35rHbwVzyiOUE7I3zHGKwvQGEVH+YTvpAMNsfbMoZ+KDa6vAD/ZUSM6dbVPSZnZ6HLx9+Q6f28+vfz7+///8ABijggAQWaOCBrQnlX338yTcfeg42yKB+Ez4Xyw8klIFcUwpuR8peN/QHA3bOUPbgUh1gVwx/Y+zFwT38vRPERSs885832LQUEAAh+QQFAgAAACx1AFsAUwBIAAAI/gABCBxIMB8xY/wIKlzIsKHDhxAjLpzmIUCAFuUkatzIsSMAfyoGBrDisaTJktcUYjjJsuVDcApruJxJE8A/JARf1dx58l+8NiZ0tOJJtOS/o/+KKl3KlCPSowzN/RLXVOlTqAobFQgwwE9VokiTuSKXdOAzi2iBfd35Lx8TgQY2EQREMECgtTX/URJ5gJzAf4XqasJL898WgWhB/eW2YGCGd4Rp5kFrcehfYz4yILEWmaa4B2hF2Bt4tWxnl9CcsNhCVSHW07Bjy55Nu7bt27hz697Nu7fv38CDA7g265zwjmIsFsh0XKMpygRgNofIhnIAUtMh+gkg0nL2htoUdQz8QO+7w3/FfICAws20edel3zeML5/h0/r48+vfz7+///8ABijggAQWaOCBCCao4IIMNujgcVf1R99+pbkn3Dhs/KCFNPBF2Bw7HKC1QDYEVThdI9bBUaKHzd1hHRgLvTbdLtaV0h8gBARAQB3/qZPMOksFBAAh+QQFAgAAACx1AFsAVABIAAAI/gABCBxIMNkQEEyuEVzIsKHDhxAjSmS4jYHAABngTdzIsaNHgWsIBhD1saTJkv+oiNR0sqVLiP8sEWRQ7qXNmwL3aRH4QBbOny7//es2bB7Qo0iTKiXYrtOlcEujQrR2IUAABLekal1oJAAAqyG2HhX6j+E/AyI1irVJluzCfxoIblh7s63bgTEJdqLL9h+9SXJU9SModNUTKbDK8g0ab8VALm/bLn75j9FAq8gmK0VjtbMkzUk1dbYaCzTSei4679hnGmk8RWAg2WtNu7bt27hz697Nu3dDWT1WwJHnuySu0UmKf4wyOgA45R2HeP0awBl0jnwIQqB3faM8HgITd6RS3D3iv37BWp0TWl6iXfbtzUuOT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBG+JsWW5hi1nztVTKaHYS9F58FoxXwDl4ettdcANSQaFd8O4ymAWsCvUded9SEYFUEvkR2V3z5CINLPA3tiFRAACH5BAUCAAAALHUAWgBVAEkAAAj+AAEIHEgQgLdFj8YVXMiwocOHECNGtIUgQAAGxiRq3Mix48B9GAYG4OGxpMmT0wpCOMmyZUR3BQj6cEmz5sB/dgYqUGazZ8t//k6NgXPNp1GW/5IeXapxlRxJ8ZhKlSjGYoAS76ZqZYgsgECLhraKHSiJYIAwY8fGKjgprdh9Owa6uOd26797k8Q0mle3ZtK/DP/+60tTsFLCUg0fRnw0KT5VkqANZtwY3ouBjSg3/iOSADrNRp9YtTgLtM86owMUM93z2wOrM1n3vBZmiB++sqduM2Yvt818USxaAOabpqHRGfIVb0kkdbTlLJuYzQb9JCuCOCZX9/hPk4gIVM5xad/OUfF48hoVoy8peL379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggwqyM8hJqAwB278/TFaEf5xkBo2NwFW3wWp8QSAevSlMdoH+ghkHn31fFFAACY006Fh9s2jEEEr8kdif+0RFhAAIfkEBQIAAAAsdQBZAFUASAAACP4AAQgcSHDgu4IIEypcyLChw4cAWm0IwCEWxIsYM2ZcRvBAN40gQ4pUQzAAJJEoUzb8V6akJpUwYwr8V4tghXUyc6b8R0kCABg6g6L812/eP6FIH4brg8Zi0qcOrz0IQPUO1KsKqwwMUIAd1q8zRZSMBvbrvyIEI5Q1m4zgp7VmuwHCgwwu2H94j9rdy7ev37+AZ+INHDRvXsI5DR9GDFPxYMYq/+WLg0HDnXyQI7PZahWAKkfDMoOcSjWABQA5StMRnZFBaa6QXge4xvqilNdFwgQQSPVVbYjlYlBt8a0z72O/Lz5zJvAbhIE//CXX+E9bGSKA6OmdftExd+qGv2GLH0++vPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///08nTyiryyFdNBlRR8Et8QLyGQXwNyCYNfC68JoA5ACimXi0FlNaSd+o5Q8YUlQim4XuObdceiPCdGN9jjAUEACH5BAUCAAAALHUAWQBWAEQAAAj+AAEIHEhQIDEzZ3gVXMiwocOHECNKBDAAQIAAoSZq3MiRI78KAgMA8NCxpMmTAMQVFICypcuH+ygQ7PGypk0A/0wRtHazZ8t/1hRZYuez6MZacACNE/jPqFOJgC4GiJDtqdWH5AgMDODlqteFsQoC+UpWIE+CdMqS/Tdm4Ih1ar/+87cqDiN3cdf+25u3r9+/gAMLHky4sOHDiPOymqOpXuKOe/kKxCIVhuPHEyNHBnBM6kVKmDNrbvpJZMg3oSVGvsf3VkFJqSP+E6UBgItlAPjtGFgiXmyIxkwHmADvnz1GX/ywa/rbYR3PAViNZt684RzopXBqru5wl+cE5bhjazyUYHhY8RrnVUXPvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABE7kDSnC6JcJARcNMc995xjgWRz3yQKdDPdhA10Q2803hlQD1DIafZYYEQUv0+E3HXX0rXhfiipuFltAACH5BAUCAAAALHUAWABWAEEAAAj+AAEIHEhwoDxm6goqXMiwocOHECMC+MQgAIE/EjNq3MhRGcEAuziKHEnyH56BAQLUIcmy5cN///oUXOSyps2B/64lGIhh3c2fLv8B64FhSTagSDfa6wSoFgCYMJNKjTgPRsoAZv5N3QqREMoAz7iKXfhvyEdVY9PiJPP1mlq1OR8MXPP27T9vdcSQ8lfXLtS+Y7USFAyYK+HCiBMrXsyY8eHGb7cxqmQOMlJaBlJGCGv5ZoirAYp0FnlY67oAKD2Mrplv58Aeq4PKFDjAVmzSOP2JmrIl2OPbL6FqFf4XeETiUYkbl4j89/LjyJ9z/KfuT5hL+pxLd7juA+oATrZwbywEOgAy8RnBlE+FXqKh8pzbP3xn4uoX+RLjQYqzCr///wAGKOCABBZo4IEIJqjgggw26CBExjBiCj4K/nHVC+4gCI4AoLWB4CzlzYDgNxxetURUBt5xlQHGCGfgKVqkEY1yBzaHoI030pgjiugFBAAh+QQFAgAAACx1AFgAVgA9AAAI/gABCBxIcGAuJ0Qk8SvIsKHDhxAjSpR4KgCAAAHcTNzIsaNHgv9AECxQ76PJkyj/FQxwDqXLlxL/3SAIA6bNmyCbVRDooRrOnyjZlUo17x88V7HoAV3qkRgEjBqsMZ3asR+JgQGOUN0qUVvBnVzDNmRXkIfYsyDFDBzQC63bf/sWDZECzK3df3hV2t3Lt6/fv4ADCx5MGMC0WuoKA9VXBWOCU4pxXsLoeF1km1AsXgxw6zJMLQQDPPPs8l/bgTlIl/7XygaIL5ZVp8yLV/bq2rZz697Nu/de2np9xwQufCJw3MUfHg+evOHy5g/5YaKCphpz6AXHUFYwDXtDcZQxYILxzvBX+ABGyBc0NyB8HvUFAVEuERv+QGGCNsmzz7+///8ABljYMIR0Ms9/gVCGAln8iUNAeG30Z154MvRXzoOUKYGcen1QhkAxefGnShdqRENbf8/xl6KKxPl3YnMBAQAh+QQFAgAAACx2AFcAVAA6AAAI/gABCBxIcKC6WcwKKlzIsKHDhxAhmkoQIACTfBEzatzIUeC2AgMDOOpIsmTJSgQDSDHJsuVDUAXjuJxJU+C8DwMrfKvJk6Q7ZOv+hQMTQ4u2nkg1UqJoING/p/+SSn2ILIDAisimanUoJ+WgrWAL/ruTMlPYswD+RTMw0IM8tGf/7boxIUk2uHGhRsXLt6/fv4ADCx5M+Cy5JQY6TCrMU0bFiqkYz4RmFUDFJZJdBkvZJHNLeREIdvLM8p8uCwLT9CNt8ik+aef2si6pV/bs27hz697Nu7fv38CDCx9OvGPt4gpr2y6ufDnx5sgHQo8u0B21fVCpA5hDIMCGX86HVod6HGACPe1MyAcQpl2JemgKrb2aBnwU+RgK6Tx+A3xRBQJHjFNQMerRoh0k6qGhXSvq2RFecPm0UBEACmTzFHXpmBGDE8xkR9100YEY4nHapeXhcAEBACH5BAUCAAAALHYAVwBTADgAAAj+AAEIHEhwoK8iL9rAK8iwocOHECNKfNhrgMAAOyZq3MixI4B/QAgGcOaxpEmP/0iILHaypcuH/8YQ3IDvpc2b/9bVELgh2c2fJfndeZBAC7x+yYDdA8qU454AAAIEmNK06sZ/EAgOsGe1K8x+FgcOWOq1bMF/SwhmMct24D9zPQQmWdi27b9/5NL9q8u3r9+/gAMLHuwR3aE5tAg3DXdBagA6ioGqcRxAgLnIN3cODDAM88t/VwgeeOfZ5T9pDwYOKm36H7c8Z2TtZd3yru3ZtE/azs27t+/fwIMLH068uPHjyJMrX868ufPn0HXfjf7x9sB6ZyRc0MPv+O3dAL5nUPbj/fvefQcoXyj/HQC/9I4JsAcPoIpUgUhwDx+nz7rAdDgIBIM40wkHTAgBOBBJQ/9cU40/9P22DgSU6cKQefr5tgllAahxoXnCVcLhHQz6F9w3CDhWgDXQ2fJBABy0Qh0AdBEUEAAh+QQFAgAAACx2AFYAUAA/AAAI/gABCBxIkCA7VbUKKlzIsKHDhxAbPggQAIW5iBgzasw4L8LAAF02ihw50lfBEiRTqnQIreCRlTBjAvhnZKACZDJzbvwjJIy1en6EZNFJFOOPAAACPOj271/Rpw5hEQxQB6pVho8KjrnKlaBJgqW6iv23VaxZgU2LZRLm9GzXpm7jyp1Lt65dh9x6BGDQ567OFhQpZvIb0xlSgQFeEl45rKCTxSvtXQALWeW/ZCQE7mlbeWRTf+Lqce7suelo0qhTq17NurXr17Bjy55Nu7bt27hz697N8JwpW7wB0FJAkYW63RcCB0ij+5vyACd2H1BOY/ebwwBGnbZ96AYQVHB1SJs2vXt8+NmnzW9vbb7g+djq16NXL55+7vjlx+PO1sZKJ7S5RTMRRWbstsRz5OgGwnM45caEch7pFg0FFB0g1W7qVNLINgoFBAAh+QQFAgAAACx2AFYATABFAAAI/gABCBxIkOA0JyOiYCvIsKHDhxAjShSobWCAC+0matzIEeI/NgQDdOpIsqTGf1NCUjLJsmXBf5YIHujmsiZJe6coYeOnRSAEVzaDakyHIkAAApv+cRsmT6hTj14ABJCqoOm/p1gb/hMR8lnWry9rWDzwDqzZf/9aWTRkti2Af722WDnl1i3aq3Xz6t3L1+W+VZCW9X1aD4fRAH4GC1001agAb4ptJgkJK7LLf2FCLrTM8t8zBQOzcG6J9tkXI4vyjSZ9F+9q1q9jy55Nu7bt27hz697Nu7fv38CDC9f4zZAfaMMFJmNgdACq5EIOB9iQHIT0AOWGFzEqUIFq4cQMYgws5Br4v2hsvLRCm7z13eHuy5tvnfxt/fv48+vfz7+//7fvteeegAMKF598vsVHYIC9URPKMAPR55sdh0XBz3C0XCfKcHNcB8dwh1wXyXDpZHBYC/N8hWBW4bCBBB/xOBQQACH5BAUCAAAALHUAVQBGAEsAAAj+AAEIHEiwIIB7slS1M8iwocOHECMK3DYiQAAIwiRq3Mix4D8cAwOc6EiypMN5BQPEM8mSpT4FBCn0a0lzozx8//aE/FSz58NtNAIcsNNvExIot3wqNYhPhECLlP5JXUp1IC2CAYxU3SqwVUEoXLfGqxAyaViq/5S1AICB59mqUuf9e0u3rt27HDkdeTILb88/Fi2e8ksT5tMZhFluK+g0cUl8EQiOcVzyH6oCAkuUo0xSardMqexxrix16ujTqFOrXs26tevXsGPLnk27tu26vQSVwncbwJvANurZphbYYiTbrIoHAGObmcWndm4nGSjh2+17iaKk4Waadunvtr9cd68Nvrf58+jTq1/Pvr379/Djy59Pv3780ubFzyWvP3x//uK91o0t4BCk336r8QOGRQIEYmB5rEWinDK2MaGcI7YtWBwqfiFIUjMHBCZDPm95WBMzWAxBiDwPBQQAIfkEBQIAAAAsdQBVAD0ATgAACP4AAQgcSLAggHZsYBTxZbChw4cQIxK890JgAAPJJGrcyBEVwQBhOIocWfCfpIJWSKoU+a/Zx1IrYz7khsZJoXuNCAAYgEemz4LaIAAIEACJP3S/yP1cCuDflo/KmEr9J+PjLKlM/5EhuIAd1qX/zJEQeODU16z1TmHydhbrv7Zw45IsRuOADGFyY45jQDTAgnB5VR762CjwyH9zPjoyzFIXwQPfGHP8909QAQAQzEqe/K8dtHpvN3OmLLq06dOoU6tezbq169ewY8sueG7Yu9kA9gwIkICTbFx9AxDoFntO8AC+YQMKMDCAqdjYDgyk0C72P10xIPRoFvo15e+krV2D7+4dPO7z6NOrX8++vfv38OPLn0+/vv37+PPr38+//vfZ45HnWoACSgbPH0584RJBBJqWDwx9JRDVQA2WtspxWTAYoGmTHDdESeaZBs1xhMiWE1FR4DMbUttoFBAAIfkEBQIAAAAsdQBUADIATwAACP4AAQgcSLDgQGiyyhlcyLChw4L2ogQIYGDTw4sYF/7bM5AiuYwgMf6jQTCArJAoG/4LUtJZypcC5+US1u/kwCkwXx6zMJHGOlpKeCjSlxPlPQ0dy/xbWjQlsYIpmsJ8VvCI1Jf+fAw0EOxqyn/v2sg40tXr16X/zIJ8d05tSntZBATAMc4tSDsTJ+6wK/JCxwDw+D78R4FggXqCHf4zQxBMYsX1vhgwwAXxY5X/8uFLe1kx086gQ4seTbq06dOoU6s2bU2LDjfsTouDkDfGPtN/8k7MZRrNRAATRZm22LGaaX1WBe7hTPqfv1yYmn1ujhbt6erMV2vfzr279+/gw1OLH0++vPnz6NOrX8++vfv38OPLH8iuLup6VSaSEFYQ++M5uk0Qz0DYTWeXCboFYAuBBSZWQ4K+MOifYKPo5sJtAhWYnV2oBKECGer0N6Fp1gEQEAAh+QQFAgAAACx1AFQAKABOAAAI/gABCBxIsOBAUEeSlDLIsKFDgv/qCAwQoNLDixjVERgYQATGjw2lFZQAsiRBfBMIWjH5UZmREFa+zWIgEIc6lherKZgIgl47WcP64Xz4bwzBAKyGfvx35OhCpRf/ISLY4BxUjPmeCIxw6yrGf/+qDZvntSE+aeXKYvyFgaIYfmobyqswMcCkuAyTcpSC1+Crgkb7EqSnYSCBZoIhVgsCoYWsxBDBSoZcECzly5gza97MubNnwfe23dPs6UGABp0wVxtAMcAAaJcXtaaY6HKjABwhXeaGYCACb5f/2RoBQMStf8HB2ptMWTJzzM8/S59Ovbr169iza9/Ovbv37+DDRYsfT768+fPlo2XpUScd5mwMWod4d1nO7ACSIuMdc9+OQOeWlbXKfV0BAGCAXt1BQAAC0DHQgciphc4v4UQGYHIXYmhZQAAh+QQFAgAAACx1AFMAHwBNAAAI/gABCBxIsCDBecvOGVzI0GCoBwEEyGlI0eCyAQMDsKrI8R8fggHOcKz4rxBIPyMXnvMEah24BgMpjEtZEBjEABOeKSsiYko2mgT3acgI5J/Rf0AJUisIIelCdQVtODX4L81ABMKmFvzXT5MUMc60Cjy3jJ7Ao2IBxBEQAIKrtANDBRAYQAHUtP+UgJQF918TkMX6bhyYAy4Ao51MUMByt+9RpIYjS55MubLly5iTjiu1q59kUwcCBNghz3A8BqJFAzI8TDQA0XrhQptLF4zhfz8GGkh2O94bGUWAQcb72Gjk4pSHZ17OvLnz59CjS59Ovbr169iza9/Ovbv3hfpAOMXhdC9yvyKpYbwzPCu1aD2GIbkPwIT1/InInbJJ/eFcceNO9eLHJOv9p5xWBt7233GPTYYWAAEBACH5BAUCAAAALHUAUwAZAEkAAAj+AAEIHEiwIEFwdbxw4mewoUFnAwN4cUgRwD8iBANoq9jwH4iMwDga/LeEIIN3IgEgw7FAhq9rFwQiUJVyGwOBARR0e/cJk7iU/+xkTJSS4L8zQ4sO/CeLoAJuSpcKOgAgg62o337++ydv2z6l5nYECBCEXdSBRXAG2HIWQLqMFNq+JTii7UWCkOyum5IAQ6G2ArcKBky4sOHDiBMrrhivlKdzhLFpGMuAF+AnY8eSAFwhgNp4Z/+lICjB7iaChOz+O5VECKd/gAUPVj17se3buHPr3s27t+/fwIMLH068uPHjhbV56dFmHeBzFjKXgNfWUOaxj9reuR4ATttf3EscyVZaSMBYLf1kwy7abVUz9Vtpjw8NP7Z6wvMDAgAh+QQFAgAAACx2AFIAGABGAAAI/gABCBxIsGDBevgMKlR4DsqAAl7qLZzo78bAAGwmLpRWUINGhc8Kivgo0NwjRNT4sbiYiOQyCQECDEjlbQiACopI/ntx0UK/f0BJApBIMMA7oQP/XSDIAWnSTgMNzHIKrx+Af8DWwImGNNiJABdCXQ2K9IHAAAKSORXIqOidtf8EFf0D99mAgQi0rb06ygIADrX2juXHzqrgw4gTK17M+OO1V9gQz4kZYI7gYJRjDtvrJ8DZAIj2Lioqau84CAM5zNv77xkTE1a6CQZK+9/h2o1z697Nu7fv38CDCx9OvLjx48iTC1yNWJmLABY4CZZXITOtvbUyB2iyd5d2InvzIZXITIm20202AhyQww+3U3n5apN1Kn8+0vq2Wcu/bZ9gQAAh+QQFAgAAACx2AFIAGQBCAAAI/gABCBxIsGBBYIhS6TPI0GA/LwEi4rDXsCKAVQQDRLLI8N+cjGY4EuwH4N+kjBtFVtsR4MIleioG5qDIsZ0FgRFrwVNkJhM+kQA2ZewClOC/lAPFFCXIzcDAAcKWDvzXKgOAC6mWjoKxQcy7f/3YkSy6KgCAiEOkCvwnI6M3tf84ZMwGlwvBF2pLrsMh8ETetf6iKeP3d+2/f4UTK17MmOG6donVHYn4BN7fKhEjKlWrzynOm2rrFfyQ958SgnZKq0sCoMCYfKUP17t3+O/h241z697Nu7fv38CDCx9OvLjx48iL8qsGLrG1ExGVzPsbI3MANXnRWQ8gIS++A9YnIPx9Y/1Nban55FTAMCcfbri330uNL38p/fPw4yfGbzEgACH5BAUCAAAALHYAUgAaAD0AAAj+AAEIHEiwYMFbP0qEWWewocF/rQYGoNHPoUUA/3AQDIDsosN/JDb28jgQ3iQ8uP6lIajBHkkA4D4ACBDADjwhAk0se/nPCkEB4v5xq1aR54iNwF4W/EeEoAF1Sgn+Q6ZAYIBIUQFwmhJG2b9tfewUy+qGZgADxP6pzcptI5OsA2cVtAFXILiCd+piHDTwhjy9aplJapVP70C1/wwrXsy48UVxZn6QEWc43gezHuDpzRTAagBNeudsRFT3H6qNyUr3kzIQjuF//nx18voa8VrFtx3r3s27t+/fwIMLH068uPHjxs+5WxwORwABWe4Z3mE2QB297qoHyKDXXoHqFgwfgzELIE3uqPO4GCjgpd75qP/y6bMN2PZ7+PZr01caEAAh+QQFAgAAACx3AFEAGQA7AAAI/gABCBxIsGDBfsyW9TPIkOE0FQECtBDXsCKAfiYGBlhisWG1ggg6EsTHD0C4giNEAlAHhcCCOPykaNwksp8NjYHq3aFBRJZKZgVXAPhHVCUAYgVjGB3ZQSMlo/1mPfr1TxoMAA4SGdVnJGIAMkTl7VsaSWMAY0sF/ptCMECmtEPTtBUG9x+2BwOpwFWLTY2USGP3DiX6T7Dhw4gb5uN1a57hcCciXlgmeIrXAC/2/lNgll7dCgQtaAZE8JDmfo1kyHjkTzPhooYJJ55Nu7bt27hz697Nu7fv38APc+MS4ws4wewuePUQb2+ly273HoJ+Z+8yrwJbFYaLJ4DALf62E6etGiqZ7LqvYaN/LTi9eNeCAwIAIfkEBQIAAAAsdgBRABsANwAACP4AAQgcSLCgQQCjyAA6d7ChQX5FBAbgQM6hRQCrCAa4c7HhP0Aap3QkeOqPqX2vND4aCeDeEAABAhDRF2XgEXwsHWls5c/WI14sAfyronFQUIL/9mi0dRQAuXL/1HUYyOUoPCMxeZhrhyiOqqP/oAwMsETov6bwChZoOjAtQQpsBf57QtBo3H/wuCywADKu3H+Az/odTLiwxXh1dlyBRrhHzAALsPn9FUBigDh+OWkU4/dZQVJ+/9EZKGUwYGedfgkOHdiw69ewY8ueTbu27du4c+uGvS4YusKQDAQg0DeuNAGPAwjzKyl5gDx+TzlXGldehsoADFRb3dRakQgydA8BZh14/N3y5s+3Jrw+bkAAIfkEBQIAAAAsdgBRABwAMwAACP4AAQgcSLCgwX+qWjT4Uc2gw4f/YA0MkCHew4sC//0jQjAAK4wY/+3ouAokQX58JiCw0m4RQQsWTQL4NyeAwABK+LkxAMDGM5kz+zHo2O4fvnVAB+Ib0NFd0oL/mBCE8hTAujMynjBTxxHAFXhP66m4uUDbP3Yxn3rqiKfqwH+COqZxm1FXx1t0M8IZ6Cdvxn/ZYHHzS7jwRXnh+hnOYyBAiGOEQwWYHOCCPb9FJgYYlvcfkI7QOlMiWMPvP399HgAgMo6wRn/5/hnWKNu14du4c+vezbu379/Agws/tylUu8LBGky2EI3wCsoBjBCGHkC1Xw2TATgm7Ihgpdp0/xKRSpLElEbTtGmjTw8+fHrCAQEAIfkEBQIAAAAsdQBQAB4AMQAACP4AAQgcSLCgwYH8hOWad7ChQwDZUAQIcEHZw4sC/80YGEAFxovwCgYI+ZFgtEij6OVLQNDBvpIZEwmYaCJdHo6OYAqcRjAAHH+XjkCRpRPAv0wFgxj9VzTjrYJumgKoN2qStX4/BoYw17RciYkDON179IWQu6b/qnBcQO8fU6n/KPSEJnXgPxgEE5Cs+48VwUd1Cf775UUL0cCC3SJebBCdKFPyGAMI5mBiBmyL+30FMJHJYm49OyxuVxDI4n9jBg7gdZofoyFRgEl2S1tyRtu4c+vezbu379/Agws3aC2Ur36SGc0McETfYm/LJ2Ja/GqidTGLh00U6DOzjYEKqhQxbtdmBpRkbxHTrn16fXr17BEHBAAh+QQFAgAAACx1AFAAHgAuAAAI/gABCBxIsKDBgf5YkZGT7aDDh/+6CAywwNnDiwSTEQxQBSPGf6EK0vBoEBgPDU20QdvohiTBYAQmfphHZ6ANdy4F/ouysdW/ZJNw9cupU8jGU0QJ3gPwzxDBCOySAvgWJICDP/gkCiwmNR+KiQE0/StXjZ9UALc2GjlLkFXBJWwHuoswMICruDqDlQAAoRLegf/+sdv3t/BAfZzWOJpn+EiAxy0Y440VAKzfuP8AbZSDF+RGVZ3x4RhYZGjne5bedNJXOLBrw7Bjy55Nu7bt27hz490XLh/sVxYCPNhUWNyBx4+X/d2E/HGfv50qT/zz19yCgQOe/f2nKwSAC6T+Dm0P/M5f4PGuz6NXjzcgACH5BAUCAAAALHUAUAAfACwAAAj+AAEIHEiwoEGCw35E0DHsoMOHAKIZEBhAgTeIGAX+Y0MwwKGMB+/ZggXvn5eOhUAWnAYiQIAKzFwRNGBN5cB/LAYGkPGvkAIAIWrZHEiuYIB8//KV8zd0IL0CBDM0HdjuEBpQ/OLoDDUVgDkQAFxe6UcJCRVfXf+d6cjsn9uuAP7h6NgK7s2TAwmEs6ux24WBjPjeXPfozzHBBd/ajUZGyiR+iAE8U+AyAJjITnQGKMr334iO0QT/i0LQAj7R2DAIPAALsVt3nSh1+xfZre3IuHPr3s27t+/fwIMDyEcJy51yuJdU1mAOsbLKLv0gbuUyrGXE0QIQVOSazEAX8VwS+4uVBxM92qJt33atXjf6yAEBACH5BAUCAAAALHUATwAgACoAAAj+AAEIHEiwoEGD34rVO8iw4UB4TAIEkIDLoUWC/8YMDBCB3sWL/zIQDDDso8F5fX5UUfYPxUhtJgnmqyEwQAJpljZeiUkQ1cgx/z792LEoH0+B/xgVpALg37+jAs+t+1ds5CaoAsfxkAhlHp+BabAC8Ddj45p/217BFDut4AexBaUVfAGXYD8YG6/WRTpuyYEPlfZidPq0riYkT24JHrhHosRWi9sZ2Jhj8bOCJBbTY0AwrOCgBAS2aLfYabdNsIwubkp4tevXsGPLnk27tu2C6qgUcHCH3+oljgMYWuwueIAWi80F2OiidPOBd0pPcwlgysLP//phG+d0NeHW3sEDCw4IACH5BAUCAAAALHUATwAgACgAAAj+AAEIHEiwoEGD1xId0nawoUOB/z4NABAAQa6HGAnSYzAwQIuMDttJuwcAWsECIA36s2MgQARX7w4QtJGS4L9IHROgYzQQgrGaA//xIBjg1D9ifySlAxpUCFFdTAfGE4RlELxTBGfsiwoA3keKL+x9ghECgDuuAAYRHfWvLVoA/7gQNfQ2KCKixOpCnEdj4B69QfOpgqSsrjs8R9iMAyzwHowAkDuwY8yJKCTA/+oQxYPZFNFemPcxGdiGMVx/uiYZ+2cablvWrWPLnk27tu3bAslJ22pa3xbIH5CZXgQZMgd9jIEUhzyN8Q+i3zBXHtiDcdtEFgxAQWf69evu3mEFW3drOiAAIfkEBQIAAAAsdgBPACAAJQAACP4AAQgcSLCgwYLu8OyIMuygw4cC77EQGMDAMYgYB/4zRTBAl4wOq+2xk+xfpI5KQBpMRXHAqGYdK6kkuI/CwAAd/jEqAEBAGn4zB4IrGADfP3XAzgUFEC4bgHwQCL5YSlBJgAAwuIEaIFBCMqoA/km5yeNftEOR1oEFcI/rzXlrCd4jQFDBvrgaPw7Mg1djvTUZPhzqF1ebHDCkwv5bjHfag6sB3vQV+G/JTQHoJv8D0TGaZiIEJ9zT3OyBwAKsJism5+hQNdUaGcOeTbu27du4MdJDRo52KwhX18BWtwBygMSTVwWgGECM6lYd6aiel2FgAWiq/00DsqDFrH/ZFweLny1e9uSAACH5BAUCAAAALHYATgAhACQAAAj+AAEIHEiwoMGDAOwhXMhQ4L9PIAKMuNWw4sB/tgYGQPDNYsV/VggGmOTRIDcnEEhs+ndFpKWSBOFxEBgggCxXBCOgg+kQlMgr/y51ICDkGU+HlQpOAfCvKU99kaa88dbtgEacRwH0K0KzwrdWGABMwJRVICyRcv7xG8evLNNEBau4JfiPosZLcwn68zJwyr650g5BOte0VyRf/uaaIlAzgrS8A+c50NgEskBiBUdYBhBO6eZ/ZgZGyPa5XygxdTpuZtr03+rXsGPLnl1RXjrY+swwvrFtdaGaNWmshhGAZoBylv+hENkueR6CRz7nI1MAQBF1n5vio+c0e+vVAQEAIfkEBQIAAAAsdwBOACEAIwAACP4AAQgcSLCgwYPRgsU7yLAhQXQ3AAR4UMuhxYL/pgwMIMHexYbQXm0D8G8CwQDLPhrMRyVAAAGA/ok4SU4lwX+GTkLLtLGMzZtDTlb6p2rJkk39frqjtu/flZO4fhLk14ZAgA2/kBkYSCSpVJKFNk6gl4zLkUb4vgr8x+KksH9w1Q78B0OnXIyPCAq5K9AbrGsA/CEKkQGNPL6ABLh8QzIuX18BBLqMynftnJOBKq/1c3KTZpLdGgxEUe8zSWhQYow5Z7ox3H+tY8ueTbu2Q3ZnSvygbFqHywADiple5lJiADCmY520YjpcAYKeP//LREDgFH6m4Y6LxQx29teOWwSHNx0QACH5BAUCAAAALHcATgAhACEAAAj+AAEIHEiwoMGD2Bgt+nawocOB/zgNABBgQbCHGAvCUzAwgIyMDomBsUIKwLOCBUAa/Pep4x52BgjeUFnQ3wWCCO4VGujAGE2C8QoGIPdvmCBJ537aKqNm2T8UBKH+hBgoAMUBu4RBEMhh2dSB5wh01PGvXSpY9r4OBFZQhNqD6cQOzPJ2YL55AP41GqjCXF1+cxAE4MHtnzNJqO7VBbBTYIAXiwn+A0EwwLbIAv9lqFwOc941BJt4zlvPS4EBU+CNzvsP371/q2PLnk3bob1Qg4bFhucigO88qwX59i2g22giHQPM8vzvS2VvzKVxFChm9L9/1cpMscRv9fXvsL0EX48dEAAh+QQFAgAAACx4AE4AIQAfAAAI+wABCBxIsKBBg/QSSSET7aDDhwPz4RAYQAE0iBgB4OsH4J8qggG+ZHTYrYiABnn8RQJZZKRBex4GBniEDKQilwVhgdTxzw9FK/hw7gu371+rgj46douFDSeAVRcCRPAUr4LMUE4JGhtAUYCzZTQAeNiUdeC/NSAJ/Vv7r6xZNSAfuTX4jxjBCefmAsh3SAcSXP9MlSgQpJref1kCAAggwBbbtnqpgTSit+CsgjcqEyxngCAgzWY1ERCYJCjojv/CrTrm7zTBta5jy56dsV4YBQ3a5IsNJoDvAHRc1+tMcYNrdAVjnv43g2Dw5dlWCJRSz/Vaf9rMQbb+OHZAACH5BAUCAAAALHgATgAiAB4AAAj7AAEIHEiwoEGD/3wN6UDE2cGHEAf+Q1ZAYAAI5SJqBCAtVDIA/8IQDABp40N+YAAECPDFn5WRiUwi5DQyFimCBrDJLPgv5cAAffztQQDgg6ydAMYNmsPrn52RnkDWy4jU2AOVARaBqzBwxj2kBP/NIKiA3jc3UxrVAxu2YIBtbB/+W0GQwr64A/vNapTLH64DAhHEwitwn5KVAbj8u3aIUDfCAimN5AU57JSRJSsL/AdnZC7Nm79NGCgFtMRvcqpU0mda4r9/rWPLhtiskq1+sv0gJpKvtTTEKy+1ljQSjel/o0Y6Oj7PBEF4rf+hewMkzbjYr7PDlv1adkAAIfkEBQIAAAAseQBNACIAHQAACPkAAQgcSLCgwYMA9MVDyLDhwHxpEgRoIc2hRYL/6AwM0AHfRYZrplTi948DwQDGPhb8x8uAwABc/oU46UwlxhonwQnamMMmxgknifELBIIDmXU2mxCQIMgfEoIQ6AH4989nPhMbL2EzCQACLZ8Eb5308W+eq1XvwBJkVTCI2oLz0rqTsJHUW4H1vgwIMARdMKwTJN2dWmZjEarv+A0GgM/lQAH2Fg/EN4AgAo+Sp0YhqCazwH/vqBRI0Caf58//+PWrerq1a4PUvhAZFPn0tQcBcitpDWZjgGie//E42St4GoINFmb+dw4rgAKlTlO1h6qSNtbBqVJtHRAAIfkEBQIAAAAsegBNACIAHAAACPEAAQgcSLCgwYP8nCnjd7ChQ4L/noUAEODEtocYDfYrMTBAj4wO3415EKFNvosEA+gDafDfj45w2BWkwNKgtoIV/o3p6KgmAF2PfgGIVtDCv32MhkRpVRMfkgBQvfRD0ZGOT4iLUvbaxgNAAzr5rg78ByXlo3//6DEUOzZNylpsB+qLJEXNNm4SBpaNC8DfkgAUH3D7RufLp7VxbaV0AwAtX4H/HhWs8hii0I6UKkMEMzAKYs1ogUXa5U9zy3+mUx/M92ZCBThhVbuBCvWN6nwIOkZQHa8gBNX/ZBBcAxxbCoFI5AH/188aONSqG6OFrjogACH5BAUCAAAALHoATQAiABsAAAjzAAEIHEiwoMGD/7aJeoXvoMOHBP8NEhggxTmIGAHA81UNwL+OAwOcyejwnyUFAQJIyfepIA2SB6ERDADJ10wsMAv+QzQzij8kAyVcy/npxoo8+DbNVPNPXyYzhcjB3BkSDLwPAx9sy1nQHwSCA+KNQ/PjDDeuBe0VDKDO4z+0A7cNi/ePB8EdcAtuSfng1bYTAnGMyzswUMgG7/g5s+aPsMB/Lmbycqwzx0xqlCOCIvgks05PNVLoaeg54r+3pcnVK10wGYkACPiwFjjvQsqUpmarmnmF9b9SM8n4Vudg4ABls/8NUwGAw+7kp+udnv14OvWAACH5BAUCAAAALHsATQAiABoAAAjzAAEIHEiwoMGD+Uzx8WTvoMOHBOnVEBhgRj2IGOdpolNq379HBANQwvjwnAmKS/yNCfmG5MF/LQcGyBUpZCeXAusNmwbgH5CQkurhoGhEH85aFQIEKEJvTUhj//SlWmSrH050CmTuIfeBYhucB02F5PEvXiZDxsAa/BerYBW1BvtNApIkVr4UAxEog0vwXxmKAVSZMyNjyjO+BL2FtPGvMeKCwAqefGyQXQKCMSn3HXVAoBB6mteac1XMX2gA7p5dPF1wUIEAEE6xHigrAAClB8DN/pcl5KjdWkLS2n2LIIt9u/+FKuGgibjZAhtLh96XusCAACH5BAUCAAAALHwATQAiABgAAAjyAAEIHEiwoEGD/7DZATMp38GHEAf+U6ZAYIAjETP+W0XExp98/5QQDEAs48N/kAYGyPKvxUhTJg/+wzASHRmCBLzFBPCuUBdE8/4NGIntHAuBBirtRAfCIo18Qwii6Pcvn65W5Xb+ozMylbejAFZM24nwychI//o9o0aW4Ddc4f79GZmsbcF/dgQEGBAIHgyBAgDZLXiKbj5Wk6oNJvgPy9nFMm+qRAUZYTMDA1/gq4wwWBIZbdxxFtitWj+B/1KPBjAPSYAAJ66tJkgmAIDXMmajbqAyADvd/xwQRLB59r82BOfoBlBVTgYNd5ajTq16eUAAIfkEBQIAAAAsfQBNACIAFwAACOwAAQgcSLCgQYP/Sj05MonfwYcP7+kT+O/QwABtIGoU6A0JgQNm8vFzQJBAvI0P+am4OGdewQDjUB5EVrDDvxsXUcgEkM/OAwJKyiUrSOKfNRIAAoiQJvNfRoEBeuzTCTURgH/8lDVz2JQBwQDnuiExIILRzoP/DHxV96/tWYKukvyg5C8LwSVvDVKCGmAPvCofxcDLS5AfBIIL9v3Ll49wwZNf6zlGS1Wgj8lolVEQqAIc5oHj3FGMZ6vXxM/YWAQQAKbxZ4L6TPAd9JqgsK84ag/8VfCIboH5Plyc9fvqtR4DNnQqfrWtc+YBAQAh+QQFAgAAACx9AE0AIgAWAAAI7gABCBxIsKDBg/Lm0Nix6aBDh+uAWRPo78fAAJMeagTwTxGAAAGsAHBW8MTGh8MIBrCUkuCGkwPNkXJl758glVXoWbiYBuY/UAg+mhhHSeWcf8JAfKRSD2a5Axe/tOswsMI3gfzCuYMpMFZBGP/ErQny5ipXge+CYQOArOCTswdPNQCpRd+RgQ+iwS249qKle42m0DG7dyAjlVQ4/itc8B+mgnIYO2x3Aa83yQf/ZasCg0pfzMFWBChxS/G/xZgBcFMgMMCBbKkJ/tOjMlHsgf/cqGx0W+A/XQQZiOutGBIDABt6Eff97164fssBBAQAIfkEBQIAAAAsfgBNACIAFgAACPEAAQgcSLCgQYP/oi0BQaPVwYcH7Z0KNEvguQgDA/SCyBEAOhQCA2j5ByljgC4dD/7714ZgAGCJXFpJKRAdHSFrxP374XLStQIZV9E8xyEAgAAc2o1xKexfKw4AIiii+a+Py0feLoQMA2DlPwD9aHblmpHPP3aQBPESO7BamCGE7GFy6YutwWQKQiLZN0UggUJ2C/5D4vLZP2axxgUmuJKES1yLH/7jQtDBu8gqy4EE4IAW5oG0eqSII+8fPlmp2H0WSGvA0QCEVzPGYdKb7IH/QrikdlvgvysET4Tt/a9cC4EbpPXGzU8Yr3vLGa+MLjAgACH5BAUCAAAALH8ATQAiABUAAAjqAAEIHEiwoEGD/0qpgGCD2MGHCIWNmbKp379bBBeMg8jxn6iBAdT8y0IwwCOOBffJE/jvA8EB6qyUbIRSIL87DALMoPavYIBprQgqAFfzHx+QIvblILhh3z9LGQTACFYTwL8OJZNR2yDQArCB/3qixLbNKoeS0f7Zy7XLXtWB214ECPCjXR6CO94e5HcC5Bd9ciI4EMNOr8FmBTFYDWv44LSCLxp3XCowwEfJBHuleZN23RcPNFRhJihpbgADvcIyHi0QXgKQPVgbXFYwhOyC6woQlHkbLKKBHcT1BvuPmKBK74YTVC1WOYCAACH5BAUCAAAALH8ATQAjABQAAAjoAAEIHEiwoMGD+uhIGACE28GHB+PNUcGiEYB/egYGIKEPoseLQjQW+teBYIBjHwmyK5XqHYBoJkP8+2AyWcqLsxwACGBBGkqCGP710bhi3016EDQGwbdBoxoA/PRomPBk3E0AyApG+KeMBAACW+pdFXgv0hdB7sgVpHHRn7h5YwXWsyFwY7wzAw3wilvwXySTkfp92hLnGt++TzXKOQzxXyWTrhgX3JaKGYB7PQaakUzQkIAAAbT02+cKkjHOA4VpDGAKdd88JuG4JvhPkUlHswf+Q1dhoIl4uXVr45IjzbngtP8pRy4wIAAh+QQFAgAAACyAAEwAIwAUAAAI6gABCBxIsKDBgwL39UPIkGG9gf/SNQFQgAq8hhj/+XIRAEIiAP96DAwgBWPDcAtGojpXcAA+kwLpKYKCRts/RwQDWFFX0MBLk/dkCAzwoNujnFv+LRkJBua/TznjjEs51Nc/eGMudIBzr2E+eSAD5bzyrxgOCDVewRzI746CADa03cq5SeC/f2sh9hmZol+aoWD45TX4b0POav+ipZo2+OA/DDm7NUYo+J8bgkcmG3xUIUCPbffQKEDwJZ5mgp1GnuB3F+9piEJHKntNOEVOZ7QL/qtDcMbC3BDxfRkAIAg54Lr/0WPnGrnAgAAh+QQFAgAAACyBAEwAIgAUAAAI5wABCBxIsKDBgwD+2UPIECG7Z+8E/lMWI8ACOfwaNuzXZkCABJMAwKMwMIAhjQj/ZSIY4BksljFQJgx1QsCNZf+asEw0iyUOlP9WlZzQzgvLT/dClNwE1AjLU8cMDBwx75+3JhZWUGJYDZEkdP+AsET1b5iTG2/OyUxIaQCAABOqVSJ4Ad5ag+WkCgwQxR+fBgB6SLtrsCfBEwn73SN80FpBKowN0vJShtg/MQMzaItMsFGAtwNk+TO15hA7zgPZ6X1bA/XBZQU1uDboLgFBLLML/gsp8IS53AT//Yv2SNRC4Lr/IS8YEAA7";
887
- const at = (n, e) => {
888
- const a = n.__vccOpts || n;
889
- for (const [h, t] of e)
890
- a[h] = t;
891
- return a;
892
- }, it = {
893
- name: "SpotReport",
894
- components: { ArrowRightBold: Ve, Calendar: $e, Download: et },
895
- props: {
896
- token: {
897
- type: String,
898
- default: ""
899
- },
900
- timeZone: {
901
- type: Number,
902
- default: 8
903
- },
904
- point: {
905
- type: Object,
906
- default: () => ({})
907
- }
908
- },
909
- emits: ["url"],
910
- data() {
911
- return {
912
- loading: {
913
- weatherEchart: !1,
914
- meteogramEchart: !1,
915
- hoursTable: !1,
916
- daysTable: !1,
917
- hourlyTable: !1,
918
- seasonalEchart: !1
919
- },
920
- menuIndex: 2,
921
- placeholder: "search for port name or coordinates",
922
- searchName: void 0,
923
- rawSearchIcon: st(tt),
924
- forecastModel: "Best Match",
925
- modelList: ["Best Match", "GFS", "ECMWF"],
926
- followList: void 0,
927
- followItem: void 0,
928
- followDialogTitle: "",
929
- showFollowDialog: !1,
930
- followRemark: "",
931
- showDownloadDialog: !1,
932
- etime: void 0,
933
- positionOffset: void 0,
934
- positionGmt: void 0,
935
- issuedDate: void 0,
936
- meteoData: void 0,
937
- positionList: [],
938
- position: void 0,
939
- activeIndex: void 0,
940
- hoursTableData: {},
941
- pickedDate: void 0,
942
- pickedWeek: "Today",
943
- meteogramData: void 0,
944
- daysTableData: [],
945
- hourlyTableData: [],
946
- currentMonth: void 0,
947
- seasonalData: void 0,
948
- monthsOptions: [],
949
- dateRange: [],
950
- dateRangeZ: [],
951
- datePickerOptions: {},
952
- selectDate: void 0,
953
- gateway: "https://cbe.idmwx.com"
954
- };
955
- },
956
- computed: {
957
- computeHourLT() {
958
- return function(n) {
959
- if (n) {
960
- const e = W(n).tz(this.positionGmt);
961
- return `${e == null ? void 0 : e.format("HH")}`;
962
- }
963
- return "-";
964
- };
965
- },
966
- computeHourZ() {
967
- return function(n) {
968
- if (n) {
969
- const e = H(n).utc();
970
- return `${e == null ? void 0 : e.format("HH")}Z`;
971
- }
972
- return "-";
973
- };
974
- },
975
- computeWeekLT() {
976
- return function(n) {
977
- if (n) {
978
- const e = W(n).tz(this.positionGmt);
979
- return `${e == null ? void 0 : e.format("dddd")}`;
980
- }
981
- return "-";
982
- };
983
- },
984
- computeMMMDDLT() {
985
- return function(n) {
986
- if (n) {
987
- const e = W(n).tz(this.positionGmt);
988
- return `${e == null ? void 0 : e.format("MMM-DD")}`;
989
- }
990
- return "-";
991
- };
992
- },
993
- computeMMMDDHHmmLT() {
994
- return function(n) {
995
- if (n) {
996
- const e = W(n).tz(this.positionGmt);
997
- return `${e == null ? void 0 : e.format("MMM-DD HHmm")}`;
998
- }
999
- return "-";
1000
- };
1001
- },
1002
- computeMMMDDyyyyLT() {
1003
- return function(n) {
1004
- if (n) {
1005
- const e = W(n).tz(this.positionGmt);
1006
- return `${e == null ? void 0 : e.format("MMM-DD, yyyy")}`;
1007
- }
1008
- return "-";
1009
- };
1010
- },
1011
- computeLat() {
1012
- return function(n, e = 4) {
1013
- return _e.lat2pretty(n, e).pretty;
1014
- };
1015
- },
1016
- computeLng() {
1017
- return function(n, e = 4) {
1018
- return _e.lng2pretty(n, e).pretty;
1019
- };
1020
- },
1021
- roundPrecision() {
1022
- return function(n, e = 4) {
1023
- return isNaN(n) ? "-" : _e.roundPrecision(n, e);
1024
- };
1025
- }
1026
- },
1027
- watch: {
1028
- point: {
1029
- async handler() {
1030
- var n, e, a, h, t, o;
1031
- this.point && (this.positionOffset = "-", this.position = {
1032
- portId: (n = this.point) == null ? void 0 : n.portId,
1033
- lat: (e = this.point) == null ? void 0 : e.lat,
1034
- lng: (a = this.point) == null ? void 0 : a.lng,
1035
- name: ((h = this.point) == null ? void 0 : h.portName) || this.computeLat(this.point.lat) + ", " + this.computeLng(this.point.lng),
1036
- remark: (t = this.point) == null ? void 0 : t.remark
1037
- }, this.forecastModel = ((o = this.point) == null ? void 0 : o.forecastModel) || "Best Match", this.handleRender());
1038
- },
1039
- deep: !0,
1040
- immediate: !0
1041
- },
1042
- menuIndex: {
1043
- handler() {
1044
- this.loading = {
1045
- weatherEchart: !0,
1046
- meteogramEchart: !0,
1047
- hoursTable: !0,
1048
- daysTable: !0,
1049
- hourlyTable: !0,
1050
- seasonalEchart: !0
1051
- }, this.handleRender();
1052
- }
1053
- }
1054
- },
1055
- mounted() {
1056
- this.fetchMyFollows(), this.$nextTick(() => {
1057
- document.addEventListener("click", (n) => {
1058
- const e = document.getElementById("seasonal-title");
1059
- !(e != null && e.contains(n.target)) && this.seasonalData && (this.seasonalData.showMonths = !1);
1060
- }), document.addEventListener("click", (n) => {
1061
- var t, o;
1062
- const e = document.getElementById("history-date-title"), a = (t = document.getElementsByClassName("datetime-select-box")) == null ? void 0 : t[0], h = (o = document.getElementsByClassName("el-picker__popper")) == null ? void 0 : o[0];
1063
- !(e != null && e.contains(n.target)) && !(a != null && a.contains(n.target)) && !(h != null && h.contains(n.target)) && this.meteoData && (this.meteoData.showDateSelect = !1);
1064
- });
1065
- }), localStorage.removeItem("idmCollectList");
1066
- },
1067
- methods: {
1068
- handleSearchFocus() {
1069
- this.placeholder = "", this.positionList = JSON.parse(JSON.stringify(this.followList));
1070
- },
1071
- async fetchSuggestPosition(n) {
1072
- var h;
1073
- const e = n.replaceAll(",", ",");
1074
- if (!e)
1075
- return !1;
1076
- const a = await ze.get(`${this.gateway}/api/arc/ports/suggest?n=${e}`, {
1077
- headers: {
1078
- Authorization: this.token
1079
- }
1080
- });
1081
- (a == null ? void 0 : a.data.code) === 0 && (this.positionList = (h = a == null ? void 0 : a.data.data) == null ? void 0 : h.map((t) => (t.name = t.id ? t.name : this.computeLat(t.lat) + ", " + this.computeLng(t.lng), t.portId = t.id, t)));
1082
- },
1083
- async handleSearch(n) {
1084
- var e, a, h, t;
1085
- if (this.searchName) {
1086
- this.handleClearHoursTable(), this.followList ? this.followItem = this.followList.find((u) => u.name === this.searchName) : await this.fetchMyFollows();
1087
- const o = this.positionList.find((u) => u.name === this.searchName);
1088
- this.position = {
1089
- portId: ((e = this.followItem) == null ? void 0 : e.portId) || (o == null ? void 0 : o.portId),
1090
- lat: o == null ? void 0 : o.lat,
1091
- lng: o == null ? void 0 : o.lng,
1092
- name: this.searchName,
1093
- remark: ((a = this.followItem) == null ? void 0 : a.remark) || (o == null ? void 0 : o.remark),
1094
- followId: ((h = this.followItem) == null ? void 0 : h.followId) || o.followId
1095
- }, this.positionOffset = "-", this.followRemark = ((t = this.followItem) == null ? void 0 : t.remark) || "", this.$emit("url", this.position), (this.menuIndex === 1 || this.menuIndex === 3) && await this.fetchForecastMeteo(), this.handleRender();
1096
- }
1097
- },
1098
- handleModelChange() {
1099
- this.position.forecastModel = this.forecastModel, this.$emit("url", this.position), this.handleRender();
1100
- },
1101
- handleFollowDialogOpen() {
1102
- var e;
1103
- this.showFollowDialog = !0;
1104
- const n = (e = this.position) != null && e.portId ? "Port" : "Coordinate";
1105
- this.followDialogTitle = this.followItem ? `Remove the ${n} from My Follows ?` : `Add the ${n} to My Follows ?`;
1106
- },
1107
- async fetchMyFollows() {
1108
- var e, a, h;
1109
- this.followList = [];
1110
- const n = await ze.get(`${this.gateway}/api/rsv/follows`, {
1111
- headers: {
1112
- Authorization: this.token
1113
- },
1114
- params: { b: 2, pn: 1, ps: 1e4 }
1115
- });
1116
- ((e = n == null ? void 0 : n.data) == null ? void 0 : e.code) === 0 && ((h = (a = n.data) == null ? void 0 : a.data) == null || h.rows.forEach((t) => {
1117
- var u, v, I, b, x, C, M, N;
1118
- const o = {};
1119
- o.followId = t.id, o.remark = t.remark, o.name = ((u = t.port) == null ? void 0 : u.name) || this.computeLat((v = t == null ? void 0 : t.coordinate) == null ? void 0 : v.lat) + ", " + this.computeLng((I = t == null ? void 0 : t.coordinate) == null ? void 0 : I.lng), o.nameRemark = o.remark ? `${o.name} ( ${o.remark} )` : o.name, o.portId = (b = t.port) == null ? void 0 : b.id, o.lat = ((x = t.port) == null ? void 0 : x.lat) || ((C = t == null ? void 0 : t.coordinate) == null ? void 0 : C.lat), o.lng = ((M = t.port) == null ? void 0 : M.lng) || ((N = t == null ? void 0 : t.coordinate) == null ? void 0 : N.lng), this.followList.push(o);
1120
- }), this.followItem = this.followList.find((t) => {
1121
- var o, u;
1122
- return t.followId && ((o = this.position) == null ? void 0 : o.followId) && t.followId === ((u = this.position) == null ? void 0 : u.followId);
1123
- }));
1124
- },
1125
- handleClickFollow() {
1126
- if (this.followItem)
1127
- ze.delete(`${this.gateway}/api/rsv/follows/${this.position.followId}`, {
1128
- headers: {
1129
- Authorization: this.token
1130
- }
1131
- }).then((n) => {
1132
- var e;
1133
- ((e = n.data) == null ? void 0 : e.code) === 0 && (this.showFollowDialog = !1, this.searchName = "", this.followItem = void 0, this.followRemark = "", this.position.followId = void 0, this.position.remark = "", this.fetchMyFollows());
1134
- });
1135
- else {
1136
- const n = {
1137
- portId: this.position.portId,
1138
- lng: this.position.portId ? void 0 : this.position.lng,
1139
- lat: this.position.portId ? void 0 : this.position.lat,
1140
- remark: this.followRemark
1141
- };
1142
- ze.post(`${this.gateway}/api/rsv/follows`, n, {
1143
- headers: {
1144
- Authorization: this.token
1145
- }
1146
- }).then((e) => {
1147
- var a, h, t;
1148
- ((a = e.data) == null ? void 0 : a.code) === 0 && (this.showFollowDialog = !1, this.position.remark = this.followRemark, this.position.followId = (t = (h = e.data) == null ? void 0 : h.data) == null ? void 0 : t.id, this.fetchMyFollows());
1149
- });
1150
- }
1151
- },
1152
- handleDownload() {
1153
- },
1154
- async fetchForecastMeteo(n) {
1155
- var o, u, v, I, b, x, C;
1156
- if (this.meteoData = void 0, !this.token)
1157
- return !1;
1158
- this.loading = {
1159
- weatherEchart: !0,
1160
- meteogramEchart: !0,
1161
- hoursTable: !0,
1162
- daysTable: !0,
1163
- hourlyTable: !0,
1164
- seasonalEchart: !0
1165
- };
1166
- const { weatherModels: e, marineModels: a } = ke.autoPickMeteoModel(this.forecastModel), h = {
1167
- lat: this.position.lat,
1168
- lng: this.position.lng,
1169
- forecastDays: n || 7,
1170
- weatherModels: e,
1171
- marineModels: a
1172
- }, t = await ze.post(`${this.gateway}/api/arc/meteo2/spot/forecast`, h, {
1173
- headers: {
1174
- Authorization: this.token
1175
- }
1176
- });
1177
- (t == null ? void 0 : t.data.code) === 0 && (this.meteoData = {
1178
- ...t == null ? void 0 : t.data.data
1179
- }, this.etime = (o = t == null ? void 0 : t.data) == null ? void 0 : o.etime, this.positionGmt = (I = (v = (u = this.meteoData) == null ? void 0 : u.weather) == null ? void 0 : v[0]) == null ? void 0 : I.timezone, this.positionOffset = (C = (x = (b = this.meteoData) == null ? void 0 : b.weather) == null ? void 0 : x[0]) == null ? void 0 : C.offset, this.issuedDate = H(this.etime).utc().format("MMM-DD/HHmm[Z], YYYY"));
1180
- },
1181
- async fetchHistoryMeteo(n) {
1182
- var u, v, I, b, x, C, M;
1183
- if (this.meteoData = void 0, !this.token)
1184
- return !1;
1185
- this.loading.meteogramEchart = !0, this.loading.hourlyTable = !0;
1186
- const { weatherModels: e, marineModels: a } = ke.autoPickMeteoModel(this.forecastModel), h = W(this.dateRangeZ[0] || this.etime).tz(this.positionGmt).set({ hour: 0, minute: 0, second: 0 }).format(), t = {
1187
- lat: this.position.lat,
1188
- lng: this.position.lng,
1189
- datetime: h,
1190
- forecastDays: n,
1191
- weatherModels: e,
1192
- marineModels: a
1193
- }, o = await ze.post(`${this.gateway}/api/arc/meteo2/spot/forecast`, t, {
1194
- headers: {
1195
- Authorization: this.token
1196
- }
1197
- });
1198
- (o == null ? void 0 : o.data.code) === 0 && (this.meteoData = o == null ? void 0 : o.data.data, this.meteoData.showDateSelect = !1, this.etime = (u = o == null ? void 0 : o.data) == null ? void 0 : u.etime, this.positionGmt = (b = (I = (v = this.meteoData) == null ? void 0 : v.weather) == null ? void 0 : I[0]) == null ? void 0 : b.timezone, this.positionOffset = (M = (C = (x = this.meteoData) == null ? void 0 : x.weather) == null ? void 0 : C[0]) == null ? void 0 : M.offset, this.issuedDate = H(this.etime).utc().format("MMM-DD/HHmm[Z], YYYY"));
1199
- },
1200
- async handleRender() {
1201
- if (this.disposeEcharts(), this.menuIndex === 1) {
1202
- this.initDatePickerInfo();
1203
- const n = H(this.dateRangeZ[1]).diff(H(this.dateRangeZ[0]), "d", !0) + 1;
1204
- await this.fetchHistoryMeteo(n), this.handleMeteogramData14(this.meteoData, n, this.dateRangeZ[0]), this.initHourlyTableData(this.meteoData, n, this.dateRangeZ[0], !0);
1205
- } else
1206
- this.menuIndex === 2 ? (await this.fetchForecastMeteo(7), this.initInfo(), this.initWeatherEchart(), this.handleMeteogramData7(this.meteoData), this.initHoursTableData()) : this.menuIndex === 3 ? (await this.fetchForecastMeteo(14), this.handleMeteogramData14(this.meteoData), this.initDaysTableData(), this.initHourlyTableData(this.meteoData)) : this.menuIndex === 4 && (await this.fetchSeasonalData(), this.initSeasonalEchart());
1207
- },
1208
- initInfo() {
1209
- this.activeIndex = W(this.etime).tz(this.positionGmt).hour(), this.pickedDate = W(this.etime).tz(this.positionGmt).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).format();
1210
- },
1211
- initDatePickerInfo() {
1212
- if (!this.dateRangeZ[0] || !this.dateRange[1]) {
1213
- this.dateRangeZ = [H(this.etime).add(-7, "day").utc().format(), H(this.etime).add(-1, "day").utc().format()];
1214
- const n = [
1215
- W(this.dateRangeZ[0]).tz(this.positionGmt).format("yyyy-MM-DD"),
1216
- W(this.dateRangeZ[1]).tz(this.positionGmt).format("yyyy-MM-DD")
1217
- ];
1218
- this.dateRange = [H(n[0]).format(), H(n[1]).format()];
1219
- } else {
1220
- const n = [
1221
- W(this.dateRangeZ[0]).tz(this.positionGmt).format("yyyy-MM-DD"),
1222
- W(this.dateRangeZ[1]).tz(this.positionGmt).format("yyyy-MM-DD")
1223
- ];
1224
- this.dateRange = [H(n[0]).format(), H(n[1]).format()];
1225
- }
1226
- this.datePickerOptions = {
1227
- shortcuts: [
1228
- {
1229
- text: "Last week",
1230
- value: (n) => {
1231
- const e = H(this.etime).add(-1, "day").unix() * 1e3;
1232
- return [H(this.etime).add(-7, "day").unix() * 1e3, e];
1233
- }
1234
- },
1235
- {
1236
- text: "Last 2 weeks",
1237
- value: (n) => {
1238
- const e = H(this.etime).add(-1, "day").unix() * 1e3;
1239
- return [H(this.etime).add(-14, "day").unix() * 1e3, e];
1240
- }
1241
- }
1242
- ],
1243
- disabledDate: (n) => {
1244
- const e = n.getTime() > H(this.etime).add(-1, "day").unix() * 1e3, a = this.selectDate && Math.abs(H(n).diff(H(this.selectDate), "d", !0)) >= 14;
1245
- return e || a;
1246
- }
1247
- };
1248
- },
1249
- initWeatherEchart() {
1250
- const n = [], e = [], a = [], h = [], t = [], o = [], u = [], v = [], I = [], b = [], x = {}, C = "data:image/svg+xml;base64," + window.btoa(
1251
- unescape(
1252
- encodeURIComponent(
1253
- '<svg t="1740385441519" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10951" width="200" height="200"><path d="M512 804.83593751A276.87183211 276.87183211 0 0 1 235.12816789 527.9641054Q235.12816789 375.21005376 512 13.82031251q276.87183211 361.30792288 276.87183211 514.14379289a276.87183211 276.87183211 0 0 1-276.87183211 276.87183211zM294.4461577 527.9641054a217.47202472 217.47202472 0 0 0 217.5538423 217.55384231 19.79993605 19.79993605 0 1 0 0-39.51805453 177.9539702 177.9539702 0 0 1-177.9539702-178.03578778 19.79993605 19.79993605 0 0 0-39.5998721 0z" fill="#0c73a8" p-id="10952"></path></svg>'
1254
- )
1255
- )
1256
- ), M = "data:image/svg+xml;base64," + window.btoa(
1257
- unescape(
1258
- encodeURIComponent(
1259
- '<svg t="1740383449285" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10797" width="200" height="200"><path d="M133.8 579l-44.4-44.4c-18.8-18.8-18.8-49.2 0-67.8L478 78c18.8-18.8 49.2-18.8 67.8 0l388.6 388.6c18.8 18.8 18.8 49.2 0 67.8L890 578.8c-19 19-50 18.6-68.6-0.8L592 337.2V912c0 26.6-21.4 48-48 48h-64c-26.6 0-48-21.4-48-48V337.2L202.4 578.2c-18.6 19.6-49.6 20-68.6 0.8z" fill="#333" p-id="10798"></path></svg>'
1260
- )
1261
- )
1262
- ), N = new Image(64, 64);
1263
- N.src = M, N.onload = () => {
1264
- var R, X, q, J, Z, V, $, ee, te, c, F, T, P;
1265
- this.loading.weatherEchart = !1;
1266
- for (let m = 0; m < 7; m++) {
1267
- const S = H(this.pickedDate).clone().add(m, "d").format();
1268
- n.push(W(S).tz(this.positionGmt).format("yyyy-MM-DD")), e.push(this.computeMMMDDLT(S)), a.push(m === 0 ? "Today" : this.computeWeekLT(S));
1269
- const k = ((R = ke.pickDaily(this.meteoData, S)) == null ? void 0 : R[0]) || {};
1270
- h.push(this.roundPrecision((q = (X = k.weather) == null ? void 0 : X.temp) == null ? void 0 : q.min, 0)), t.push(this.roundPrecision((Z = (J = k.weather) == null ? void 0 : J.temp) == null ? void 0 : Z.max, 0)), v.push(this.roundPrecision(($ = (V = k.weather) == null ? void 0 : V.wind) == null ? void 0 : $.kts, 1) ?? "- kts"), b.push(this.roundPrecision((te = (ee = k.weather) == null ? void 0 : ee.precip) == null ? void 0 : te.sum, 1) ?? "- mm"), o.push({ symbol: "image://" + ((c = k.weather) == null ? void 0 : c.url) }), u.push((F = k.weather) == null ? void 0 : F.name), I.push((P = (T = k.weather) == null ? void 0 : T.wind) == null ? void 0 : P.bearing);
1271
- const L = document.createElement("canvas"), D = L.getContext("2d");
1272
- L.width = N.width, L.height = N.height;
1273
- const de = I[m] * (Math.PI / 180);
1274
- D.translate(L.width / 2, L.height / 2), D.rotate(de), D.translate(-N.width / 2, -N.height / 2), D.drawImage(N, 0, 0, 64, 64);
1275
- const Ae = L.toDataURL();
1276
- x[`WindIcon${m}`] = {
1277
- height: 12,
1278
- width: 12,
1279
- align: "left",
1280
- backgroundColor: {
1281
- image: Ae
1282
- }
1283
- };
1284
- }
1285
- const se = Math.max(...t.filter((m) => typeof m == "number" && !isNaN(m))) - Math.min(...h.filter((m) => typeof m == "number" && !isNaN(m))), ae = Math.min(...h.filter((m) => typeof m == "number" && !isNaN(m))) - 1.5 * se, le = Math.max(...t.filter((m) => typeof m == "number" && !isNaN(m))) + 2 * se, Y = 4 + 0.5 / n.length * 92 + "%", U = {
1286
- grid: {
1287
- bottom: 0,
1288
- top: 0,
1289
- left: "4%",
1290
- right: "4%"
1291
- },
1292
- tooltip: {
1293
- trigger: "item",
1294
- show: !0,
1295
- position: "right",
1296
- formatter: function(m) {
1297
- return m.seriesName === "Weather Icon" ? u[m.dataIndex] : !1;
1298
- }
1299
- },
1300
- legend: {
1301
- show: !1
1302
- },
1303
- xAxis: {
1304
- left: 0,
1305
- right: 0,
1306
- top: "50%",
1307
- height: "50%",
1308
- type: "category",
1309
- data: n,
1310
- show: !1
1311
- },
1312
- singleAxis: [
1313
- {
1314
- left: Y,
1315
- right: Y,
1316
- type: "category",
1317
- show: !1,
1318
- axisLine: {
1319
- show: !1
1320
- // 隐藏轴线
1321
- },
1322
- axisTick: {
1323
- show: !1
1324
- // 隐藏刻度
1325
- },
1326
- axisLabel: {
1327
- show: !1
1328
- // 隐藏刻度标签
1329
- },
1330
- splitLine: {
1331
- show: !1
1332
- // 隐藏分割线
1333
- },
1334
- boundaryGap: !1,
1335
- data: n,
1336
- top: "7%",
1337
- height: "2%"
1338
- },
1339
- {
1340
- left: Y,
1341
- right: Y,
1342
- type: "category",
1343
- show: !1,
1344
- axisLine: {
1345
- show: !1
1346
- // 隐藏轴线
1347
- },
1348
- axisTick: {
1349
- show: !1
1350
- // 隐藏刻度
1351
- },
1352
- axisLabel: {
1353
- show: !1
1354
- // 隐藏刻度标签
1355
- },
1356
- splitLine: {
1357
- show: !1
1358
- // 隐藏分割线
1359
- },
1360
- boundaryGap: !1,
1361
- data: n,
1362
- top: "16%",
1363
- height: "2%"
1364
- },
1365
- {
1366
- left: Y,
1367
- right: Y,
1368
- type: "category",
1369
- show: !1,
1370
- axisLine: {
1371
- show: !1
1372
- // 隐藏轴线
1373
- },
1374
- axisTick: {
1375
- show: !1
1376
- // 隐藏刻度
1377
- },
1378
- axisLabel: {
1379
- show: !1
1380
- // 隐藏刻度标签
1381
- },
1382
- splitLine: {
1383
- show: !1
1384
- // 隐藏分割线
1385
- },
1386
- boundaryGap: !1,
1387
- data: n,
1388
- top: "27%",
1389
- height: "2%"
1390
- },
1391
- {
1392
- left: Y,
1393
- right: Y,
1394
- type: "category",
1395
- show: !1,
1396
- axisLine: {
1397
- show: !1
1398
- // 隐藏轴线
1399
- },
1400
- axisTick: {
1401
- show: !1
1402
- // 隐藏刻度
1403
- },
1404
- axisLabel: {
1405
- show: !1
1406
- // 隐藏刻度标签
1407
- },
1408
- splitLine: {
1409
- show: !1
1410
- // 隐藏分割线
1411
- },
1412
- boundaryGap: !1,
1413
- data: n,
1414
- top: "84%",
1415
- height: "2%"
1416
- },
1417
- {
1418
- left: Y,
1419
- right: Y,
1420
- type: "category",
1421
- show: !1,
1422
- axisLine: {
1423
- show: !1
1424
- // 隐藏轴线
1425
- },
1426
- axisTick: {
1427
- show: !1
1428
- // 隐藏刻度
1429
- },
1430
- axisLabel: {
1431
- show: !1
1432
- // 隐藏刻度标签
1433
- },
1434
- splitLine: {
1435
- show: !1
1436
- // 隐藏分割线
1437
- },
1438
- boundaryGap: !1,
1439
- data: n,
1440
- top: "93%",
1441
- height: "2%"
1442
- }
1443
- ],
1444
- yAxis: {
1445
- type: "value",
1446
- name: "温度(℃)",
1447
- show: !1,
1448
- min: ae,
1449
- max: le,
1450
- axisLabel: {
1451
- formatter: "{value} °C"
1452
- }
1453
- },
1454
- series: [
1455
- {
1456
- singleAxisIndex: 0,
1457
- coordinateSystem: "singleAxis",
1458
- type: "scatter",
1459
- data: a,
1460
- label: {
1461
- show: !0,
1462
- color: "rgba(0,0,0,0.7)",
1463
- fontSize: 14,
1464
- formatter: "{c}"
1465
- },
1466
- symbolSize: 0
1467
- },
1468
- {
1469
- singleAxisIndex: 1,
1470
- coordinateSystem: "singleAxis",
1471
- type: "scatter",
1472
- data: e,
1473
- label: {
1474
- show: !0,
1475
- color: "rgba(0,0,0,0.7)",
1476
- formatter: "{c}"
1477
- },
1478
- symbolSize: 0
1479
- },
1480
- {
1481
- name: "Weather Icon",
1482
- singleAxisIndex: 2,
1483
- coordinateSystem: "singleAxis",
1484
- type: "scatter",
1485
- data: o,
1486
- symbolSize: 44
1487
- },
1488
- {
1489
- name: "温度(℃)",
1490
- type: "line",
1491
- data: h,
1492
- smooth: !0,
1493
- itemStyle: {
1494
- color: "#FF9500"
1495
- },
1496
- label: {
1497
- show: !0,
1498
- color: "rgba(0,0,0,0.7)",
1499
- position: [-10, 12],
1500
- formatter: "{c} °C",
1501
- fontSize: 12
1502
- },
1503
- markArea: {
1504
- itemStyle: {
1505
- color: "rgba(64,159,255,0.25)"
1506
- },
1507
- data: [
1508
- [
1509
- {
1510
- x: "4%"
1511
- },
1512
- {
1513
- x: 4 + 1 / n.length * 92 + "%"
1514
- }
1515
- ]
1516
- ]
1517
- }
1518
- },
1519
- {
1520
- name: "温度(℃)",
1521
- type: "line",
1522
- data: t,
1523
- smooth: !0,
1524
- itemStyle: {
1525
- color: "#d88102"
1526
- },
1527
- label: {
1528
- show: !0,
1529
- color: "rgba(0,0,0,0.7)",
1530
- position: [-10, -12],
1531
- formatter: "{c} °C",
1532
- fontSize: 12
1533
- }
1534
- },
1535
- {
1536
- singleAxisIndex: 3,
1537
- coordinateSystem: "singleAxis",
1538
- type: "scatter",
1539
- data: v,
1540
- label: {
1541
- show: !0,
1542
- color: "rgba(0,0,0,0.7)",
1543
- // formatter: '{c}'
1544
- rich: {
1545
- ...x,
1546
- title: {
1547
- align: "center",
1548
- vertical: "center"
1549
- }
1550
- },
1551
- formatter: function(m) {
1552
- return `{WindIcon${m.dataIndex}|}{title|${m.value}} kts`;
1553
- }
1554
- },
1555
- symbolSize: 0
1556
- },
1557
- {
1558
- singleAxisIndex: 4,
1559
- coordinateSystem: "singleAxis",
1560
- type: "scatter",
1561
- data: b,
1562
- label: {
1563
- show: !0,
1564
- color: "rgba(0,0,0,0.7)",
1565
- // formatter: '{c}',
1566
- rich: {
1567
- dIcon: {
1568
- height: 16,
1569
- width: 16,
1570
- align: "left",
1571
- backgroundColor: {
1572
- image: C
1573
- }
1574
- },
1575
- title: {
1576
- align: "center",
1577
- vertical: "center"
1578
- }
1579
- },
1580
- formatter: function(m) {
1581
- return `{dIcon|}{title|${m.value}} mm`;
1582
- }
1583
- },
1584
- symbolSize: 0
1585
- }
1586
- ]
1587
- };
1588
- this.$nextTick(() => {
1589
- const m = Be.init(document.getElementById("weather-chart"));
1590
- m.setOption(U), m.on("click", (S) => {
1591
- const k = S.dataIndex, L = n[k].split("-");
1592
- this.pickedDate = W().tz(this.positionGmt).set({ year: L[0], month: Number(L[1] - 1), date: Number(L[2]), hour: 0, minute: 0, second: 0, millisecond: 0 }).format(), this.pickedWeek = k === 0 ? "Today" : this.computeWeekLT(this.pickedDate), this.activeIndex = k === 0 ? W(this.etime).tz(this.positionGmt).hour() : void 0, this.initHoursTableData(), U.series[3].markArea = {
1593
- itemStyle: {
1594
- color: "rgba(64,159,255,0.25)"
1595
- },
1596
- data: [
1597
- [
1598
- {
1599
- x: 4 + k / n.length * 92 + "%"
1600
- },
1601
- {
1602
- x: 4 + (k + 1) / n.length * 92 + "%"
1603
- }
1604
- ]
1605
- ]
1606
- }, m.setOption(U);
1607
- });
1608
- });
1609
- };
1610
- },
1611
- handleMeteogramData7(n) {
1612
- this.meteogramData = {
1613
- xDates: [],
1614
- dates: [],
1615
- hours: [],
1616
- temperaturesY: [],
1617
- temperaturesX: [],
1618
- weatherIcons: [],
1619
- weatherNames: [],
1620
- windspeed: [],
1621
- windGusts: [],
1622
- windDir: [],
1623
- windDirIcons: {},
1624
- precip: [],
1625
- sigWaveHeight: [],
1626
- swellHeight: [],
1627
- markarea: [],
1628
- offset: void 0
1629
- };
1630
- let a = { start: void 0, end: void 0 };
1631
- const h = "data:image/svg+xml;base64," + window.btoa(
1632
- unescape(
1633
- encodeURIComponent(
1634
- '<svg t="1740383449285" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10797" width="200" height="200"><path d="M133.8 579l-44.4-44.4c-18.8-18.8-18.8-49.2 0-67.8L478 78c18.8-18.8 49.2-18.8 67.8 0l388.6 388.6c18.8 18.8 18.8 49.2 0 67.8L890 578.8c-19 19-50 18.6-68.6-0.8L592 337.2V912c0 26.6-21.4 48-48 48h-64c-26.6 0-48-21.4-48-48V337.2L202.4 578.2c-18.6 19.6-49.6 20-68.6 0.8z" fill="#60c43e" p-id="10798"></path></svg>'
1635
- )
1636
- )
1637
- ), t = new Image(64, 64);
1638
- t.src = h, t.onload = () => {
1639
- var u, v, I, b, x, C, M, N, se, ae, le, Y, U, R, X, q, J, Z, V, $, ee, te, c, F, T, P, m, S, k, L, D, he, de, Ae, g, ue, E, z, _, ce, A;
1640
- this.loading.meteogramEchart = !1;
1641
- const o = W(this.etime).tz(this.positionGmt).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).format();
1642
- for (let O = 0; O < 7 * 24; O++) {
1643
- const ie = H(o).clone().add(O, "h").format();
1644
- (u = this.meteogramData) == null || u.dates.push(ie);
1645
- const Q = ((v = ke.pickHourly(n, ie)) == null ? void 0 : v[0]) || {};
1646
- if (O % 12 === 0 && O % 24 !== 0 ? (I = this.meteogramData) == null || I.xDates.push(W(ie).tz(this.positionGmt).format("MMM-DD")) : (b = this.meteogramData) == null || b.xDates.push(""), O % 3 === 0 ? (x = this.meteogramData) == null || x.hours.push(this.computeHourLT(ie)) : (C = this.meteogramData) == null || C.hours.push(""), (N = this.meteogramData) == null || N.temperaturesX.push([ie, this.roundPrecision((M = Q == null ? void 0 : Q.weather) == null ? void 0 : M.temp, 0)]), (ae = this.meteogramData) == null || ae.temperaturesY.push(this.roundPrecision((se = Q == null ? void 0 : Q.weather) == null ? void 0 : se.temp, 0)), (U = this.meteogramData) == null || U.precip.push(this.roundPrecision((Y = (le = Q == null ? void 0 : Q.weather) == null ? void 0 : le.precip) == null ? void 0 : Y.sum, 1)), (q = this.meteogramData) == null || q.windspeed.push(this.roundPrecision((X = (R = Q.weather) == null ? void 0 : R.wind) == null ? void 0 : X.kts, 1)), (V = this.meteogramData) == null || V.windGusts.push(this.roundPrecision((Z = (J = Q == null ? void 0 : Q.weather) == null ? void 0 : J.wind) == null ? void 0 : Z.gusts, 1)), (te = this.meteogramData) == null || te.sigWaveHeight.push(this.roundPrecision((ee = ($ = Q == null ? void 0 : Q.wave) == null ? void 0 : $.sig) == null ? void 0 : ee.height)), (T = this.meteogramData) == null || T.swellHeight.push(this.roundPrecision((F = (c = Q == null ? void 0 : Q.wave) == null ? void 0 : c.swell) == null ? void 0 : F.height)), O % 6 === 0 ? ((m = this.meteogramData) == null || m.weatherIcons.push({ symbol: "image://" + ((P = Q.weather) == null ? void 0 : P.url), symbolSize: 30 }), (k = this.meteogramData) == null || k.weatherNames.push((S = Q.weather) == null ? void 0 : S.name)) : ((D = this.meteogramData) == null || D.weatherIcons.push({ symbol: "image://" + ((L = Q.weather) == null ? void 0 : L.url), symbolSize: 0 }), (he = this.meteogramData) == null || he.weatherNames.push("")), O % 3 === 0 ? (g = this.meteogramData) == null || g.windDir.push((Ae = (de = Q.weather) == null ? void 0 : de.wind) == null ? void 0 : Ae.bearing) : (ue = this.meteogramData) == null || ue.windDir.push(void 0), O % 3 === 0) {
1647
- const re = document.createElement("canvas"), j = re.getContext("2d");
1648
- re.width = t.width, re.height = t.height;
1649
- const f = ((E = this.meteogramData) == null ? void 0 : E.windDir[O]) * (Math.PI / 180);
1650
- j.translate(re.width / 2, re.height / 2), j.rotate(f), j.translate(-t.width / 2, -t.height / 2), j.drawImage(t, 0, 0, 64, 64);
1651
- const K = re.toDataURL();
1652
- this.meteogramData.windDirIcons[O] = K;
1653
- } else
1654
- this.meteogramData.windDirIcons[O] = void 0;
1655
- (z = Q == null ? void 0 : Q.weather) != null && z.isDay ? a.end === void 0 && a.start >= 0 && (a.end = O) : a.start === void 0 && (a.start = O), (a.start >= 0 && a.end >= 0 || a.start >= 0 && O === 7 * 24 - 1) && ((_ = this.meteogramData) == null || _.markarea.push([
1656
- {
1657
- x: 4 + a.start / (7 * 24) * 92 + "%"
1658
- },
1659
- {
1660
- x: 4 + (a.end + 1) / (7 * 24) * 92 + "%"
1661
- }
1662
- ]), a = { start: void 0, end: void 0 });
1663
- }
1664
- this.meteogramData.offset = 4 + 0.5 / ((A = (ce = this.meteogramData) == null ? void 0 : ce.dates) == null ? void 0 : A.length) * 92 + "%", this.$nextTick(() => {
1665
- this.initMeteogramEchart(7);
1666
- });
1667
- };
1668
- },
1669
- handleMeteogramData14(n, e, a) {
1670
- const h = e || 14, t = a || this.etime;
1671
- this.meteogramData = {
1672
- xDates: [],
1673
- dates: [],
1674
- hours: [],
1675
- temperaturesX: [],
1676
- temperaturesY: [],
1677
- weatherIcons: [],
1678
- weatherNames: [],
1679
- windspeed: [],
1680
- windGusts: [],
1681
- windDir: [],
1682
- windDirIcons: {},
1683
- precip: [],
1684
- sigWaveHeight: [],
1685
- swellHeight: [],
1686
- markarea: [],
1687
- offset: void 0
1688
- };
1689
- let o = { start: void 0, end: void 0 };
1690
- const u = "data:image/svg+xml;base64," + window.btoa(
1691
- unescape(
1692
- encodeURIComponent(
1693
- '<svg t="1740383449285" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10797" width="200" height="200"><path d="M133.8 579l-44.4-44.4c-18.8-18.8-18.8-49.2 0-67.8L478 78c18.8-18.8 49.2-18.8 67.8 0l388.6 388.6c18.8 18.8 18.8 49.2 0 67.8L890 578.8c-19 19-50 18.6-68.6-0.8L592 337.2V912c0 26.6-21.4 48-48 48h-64c-26.6 0-48-21.4-48-48V337.2L202.4 578.2c-18.6 19.6-49.6 20-68.6 0.8z" fill="#60c43e" p-id="10798"></path></svg>'
1694
- )
1695
- )
1696
- ), v = new Image(64, 64);
1697
- v.src = u, v.onload = () => {
1698
- var b, x, C, M, N, se, ae, le, Y, U, R, X, q, J, Z, V, $, ee, te, c, F, T, P, m, S, k, L, D, he, de, Ae, g, ue, E, z, _, ce, A, O, ie, Q, re;
1699
- this.loading.meteogramEchart = !1;
1700
- const I = W(t).tz(this.positionGmt).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).format();
1701
- for (let j = 0; j < h * 24; j++) {
1702
- const d = H(I).clone().add(j, "h").format();
1703
- (b = this.meteogramData) == null || b.dates.push(d);
1704
- const f = ((x = ke.pickHourly(n, d)) == null ? void 0 : x[0]) || {};
1705
- if ((M = this.meteogramData) == null || M.temperaturesY.push(this.roundPrecision((C = f == null ? void 0 : f.weather) == null ? void 0 : C.temp, 0)), (ae = this.meteogramData) == null || ae.windspeed.push(this.roundPrecision((se = (N = f.weather) == null ? void 0 : N.wind) == null ? void 0 : se.kts, 1)), (U = this.meteogramData) == null || U.windGusts.push(this.roundPrecision((Y = (le = f == null ? void 0 : f.weather) == null ? void 0 : le.wind) == null ? void 0 : Y.gusts, 1)), (q = this.meteogramData) == null || q.sigWaveHeight.push(this.roundPrecision((X = (R = f == null ? void 0 : f.wave) == null ? void 0 : R.sig) == null ? void 0 : X.height)), (V = this.meteogramData) == null || V.swellHeight.push(this.roundPrecision((Z = (J = f == null ? void 0 : f.wave) == null ? void 0 : J.swell) == null ? void 0 : Z.height)), j % 3 === 0 ? ((te = this.meteogramData) == null || te.precip.push(this.roundPrecision((ee = ($ = f == null ? void 0 : f.weather) == null ? void 0 : $.precip) == null ? void 0 : ee.sum3Hours, 1)), (F = this.meteogramData) == null || F.temperaturesX.push([d, this.roundPrecision((c = f == null ? void 0 : f.weather) == null ? void 0 : c.temp, 0)])) : (T = this.meteogramData) == null || T.precip.push(null), j % 12 === 0 && j % 24 !== 0 ? (P = this.meteogramData) == null || P.xDates.push(W(d).tz(this.positionGmt).format("MMM-DD")) : (m = this.meteogramData) == null || m.xDates.push(""), j % 6 === 0 ? (S = this.meteogramData) == null || S.hours.push(this.computeHourLT(d)) : (k = this.meteogramData) == null || k.hours.push(""), j % 12 === 0 ? ((D = this.meteogramData) == null || D.weatherIcons.push({ symbol: "image://" + ((L = f.weather) == null ? void 0 : L.url), symbolSize: 30 }), (de = this.meteogramData) == null || de.weatherNames.push((he = f.weather) == null ? void 0 : he.name)) : ((g = this.meteogramData) == null || g.weatherIcons.push({ symbol: "image://" + ((Ae = f.weather) == null ? void 0 : Ae.url), symbolSize: 0 }), (ue = this.meteogramData) == null || ue.weatherNames.push("")), j % 6 === 0 ? (_ = this.meteogramData) == null || _.windDir.push((z = (E = f.weather) == null ? void 0 : E.wind) == null ? void 0 : z.bearing) : (ce = this.meteogramData) == null || ce.windDir.push(void 0), j % 6 === 0) {
1706
- const K = document.createElement("canvas"), y = K.getContext("2d");
1707
- K.width = v.width, K.height = v.height;
1708
- const G = ((A = this.meteogramData) == null ? void 0 : A.windDir[j]) * (Math.PI / 180);
1709
- y.translate(K.width / 2, K.height / 2), y.rotate(G), y.translate(-v.width / 2, -v.height / 2), y.drawImage(v, 0, 0, 64, 64);
1710
- const oe = K.toDataURL();
1711
- this.meteogramData.windDirIcons[j] = oe;
1712
- } else
1713
- this.meteogramData.windDirIcons[j] = void 0;
1714
- (O = f == null ? void 0 : f.weather) != null && O.isDay ? o.end === void 0 && o.start >= 0 && (o.end = j) : o.start === void 0 && (o.start = j), (o.start >= 0 && o.end >= 0 || o.start >= 0 && j === h * 24 - 1) && ((ie = this.meteogramData) == null || ie.markarea.push([
1715
- {
1716
- x: 4 + o.start / (h * 24) * 92 + "%"
1717
- },
1718
- {
1719
- x: 4 + (o.end + 1) / (h * 24) * 92 + "%"
1720
- }
1721
- ]), o = { start: void 0, end: void 0 });
1722
- }
1723
- this.meteogramData.offset = 4 + 0.5 / ((re = (Q = this.meteogramData) == null ? void 0 : Q.dates) == null ? void 0 : re.length) * 92 + "%", this.$nextTick(() => {
1724
- this.initMeteogramEchart(14);
1725
- });
1726
- };
1727
- },
1728
- initMeteogramEchart(n) {
1729
- var se, ae, le, Y, U, R, X, q, J, Z, V, $, ee, te, c, F, T, P, m, S, k, L, D, he, de, Ae, g, ue, E, z, _, ce, A, O, ie, Q, re, j;
1730
- const e = Be.init(document.getElementById("weather-icons")), a = {
1731
- grid: {
1732
- show: !0,
1733
- bottom: "0%",
1734
- top: "0%",
1735
- left: "4%",
1736
- right: "4%",
1737
- borderColor: "#666",
1738
- borderWidth: 1,
1739
- z: 1,
1740
- zlevel: 1
1741
- },
1742
- tooltip: {
1743
- trigger: "item",
1744
- show: !0,
1745
- position: "right",
1746
- formatter: (d) => {
1747
- const f = d == null ? void 0 : d.dataIndex;
1748
- return d.seriesName === "Weather Icons" ? `<strong>${this.meteogramData.weatherNames[f]}</strong>` : !1;
1749
- }
1750
- },
1751
- legend: {
1752
- show: !1,
1753
- right: "4%"
1754
- },
1755
- xAxis: {
1756
- left: 0,
1757
- right: 0,
1758
- top: "50%",
1759
- height: "50%",
1760
- type: "category",
1761
- data: (se = this.meteogramData) == null ? void 0 : se.dates,
1762
- show: !1
1763
- },
1764
- singleAxis: [
1765
- {
1766
- left: (ae = this.meteogramData) == null ? void 0 : ae.offset,
1767
- right: (le = this.meteogramData) == null ? void 0 : le.offset,
1768
- type: "category",
1769
- show: !1,
1770
- axisLine: {
1771
- show: !1
1772
- // 隐藏轴线
1773
- },
1774
- axisTick: {
1775
- show: !1
1776
- // 隐藏刻度
1777
- },
1778
- axisLabel: {
1779
- show: !1
1780
- // 隐藏刻度标签
1781
- },
1782
- splitLine: {
1783
- show: !1
1784
- // 隐藏分割线
1785
- },
1786
- boundaryGap: !1,
1787
- data: (Y = this.meteogramData) == null ? void 0 : Y.dates,
1788
- top: "50%",
1789
- height: "2%"
1790
- }
1791
- ],
1792
- series: [
1793
- {
1794
- name: "Weather Icons",
1795
- type: "scatter",
1796
- singleAxisIndex: 0,
1797
- coordinateSystem: "singleAxis",
1798
- data: (U = this.meteogramData) == null ? void 0 : U.weatherIcons,
1799
- symbolSize: 24
1800
- }
1801
- ]
1802
- };
1803
- e.setOption(a);
1804
- let h = Math.max(...this.meteogramData.temperaturesY.filter((d) => typeof d == "number" && !isNaN(d))), t = Math.min(...this.meteogramData.temperaturesY.filter((d) => typeof d == "number" && !isNaN(d))) > 0 ? 0 : Math.min(...this.meteogramData.temperaturesY.filter((d) => typeof d == "number" && !isNaN(d))), o = Math.floor(t / 5) * 5, u = Math.ceil(h / 5) * 5, v = Math.ceil((u - o) / 5), I = "", b = [];
1805
- n === 7 ? (I = "Precip.1h ( mm ) ", b = [
1806
- {
1807
- gte: 50,
1808
- color: "rgba(197, 5, 58, 1)",
1809
- label: "Heavy Rainstorm, >=20mm"
1810
- },
1811
- {
1812
- gte: 8,
1813
- lte: 19.9,
1814
- color: "rgba(248, 1, 1, 1)",
1815
- label: "Rainstorm, <=19.9mm"
1816
- },
1817
- {
1818
- gte: 4,
1819
- lte: 7.9,
1820
- color: "rgba(190, 226, 2, 18)",
1821
- label: "Heavy, <=7.9mm"
1822
- },
1823
- {
1824
- gte: 2,
1825
- lte: 3.9,
1826
- color: "rgba(3, 248, 103, 1)",
1827
- label: "Moderate, <=3.9mm"
1828
- },
1829
- {
1830
- lt: 2,
1831
- color: "rgba(172, 210, 255, 1)",
1832
- label: "Light, <2mm"
1833
- }
1834
- ]) : (I = "Precip.3h ( mm ) ", b = [
1835
- {
1836
- gte: 100,
1837
- color: "rgba(197, 5, 58, 1)",
1838
- label: "Heavy Rainstorm, >=50mm"
1839
- },
1840
- {
1841
- gte: 25,
1842
- lte: 49.9,
1843
- color: "rgba(248, 1, 1, 1)",
1844
- label: "Rainstorm, <=49.9mm"
1845
- },
1846
- {
1847
- gte: 10,
1848
- lte: 24.9,
1849
- color: "rgba(190, 226, 2, 18)",
1850
- label: "Heavy, <=24.9mm"
1851
- },
1852
- {
1853
- gte: 5,
1854
- lte: 9.9,
1855
- color: "rgba(3, 248, 103, 1)",
1856
- label: "Moderate, <=9.9mm"
1857
- },
1858
- {
1859
- lt: 5,
1860
- color: "rgba(172, 210, 255, 1)",
1861
- label: "Light, <5mm"
1862
- }
1863
- ]);
1864
- const x = Be.init(document.getElementById("weather-condition")), C = {
1865
- title: {
1866
- text: "Weather conditions",
1867
- top: "10px",
1868
- left: "5px",
1869
- textStyle: {
1870
- fontWeight: "normal",
1871
- fontSize: 14
1872
- }
1873
- },
1874
- grid: {
1875
- show: !0,
1876
- bottom: "20%",
1877
- top: "90px",
1878
- left: "4%",
1879
- right: "4%",
1880
- borderColor: "#666",
1881
- borderWidth: 1,
1882
- z: 1,
1883
- zlevel: 1
1884
- },
1885
- tooltip: {
1886
- trigger: "axis",
1887
- show: !0,
1888
- position: "right",
1889
- formatter: (d) => {
1890
- var K, y, ve, G, oe, fe, B, i, w, xe, Le, ge, ye, Ne, Te, Ge, Ee, je, Ke, Ue, We, Re, Xe, qe, Je, Ze;
1891
- const f = (K = d == null ? void 0 : d.find((De) => De.seriesType === "bar")) == null ? void 0 : K.dataIndex;
1892
- if (d.find((De) => De.seriesType === "scatter"))
1893
- return !1;
1894
- {
1895
- let De = "";
1896
- return n === 7 ? (((y = d[1]) == null ? void 0 : y.value) < 2 ? De = "rgba(172, 210, 255, 1)" : ((ve = d[1]) == null ? void 0 : ve.value) <= 3.9 ? De = "rgba(3, 248, 103, 1)" : ((G = d[1]) == null ? void 0 : G.value) <= 7.9 ? De = "rgba(190, 226, 2, 18)" : ((oe = d[1]) == null ? void 0 : oe.value) <= 19.9 ? De = "rgba(248, 1, 1, 1)" : ((fe = d[1]) == null ? void 0 : fe.value) >= 20 ? De = "rgba(197, 5, 58, 1)" : De = "rgba(172, 210, 255, 1)", `<div style="font-size: 13px;"><strong>${W((B = this.meteogramData) == null ? void 0 : B.dates[f]).tz(this.positionGmt).format("MMM-DD/HHmm[LT]")}</strong></div>
1897
- <div style="display: ${(i = this.meteogramData) != null && i.weatherNames[f] ? "block" : "none"}; font-size: 13px;">
1898
- <span>Weather : </span><strong>${(w = this.meteogramData) == null ? void 0 : w.weatherNames[f]}</strong>
1899
- </div>
1900
- <div style="font-size: 13px;">
1901
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #FF9500;}"></span>
1902
- <span>Temperature : </span><strong>${(Le = (xe = d[0]) == null ? void 0 : xe.value) == null ? void 0 : Le[1]}</strong><span style="padding-left: 3px;">℃</span>
1903
- </div>
1904
- <div style="font-size: 13px;">
1905
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background: ${De};"></span>
1906
- <span>Precip.1h : </span><strong>${(ge = d[1]) == null ? void 0 : ge.value}</strong><span style="padding-left: 3px;">mm</span>
1907
- </div>`) : n === 14 ? (((ye = d[1]) == null ? void 0 : ye.value) < 5 ? De = "rgba(172, 210, 255, 1)" : ((Ne = d[1]) == null ? void 0 : Ne.value) <= 9.9 ? De = "rgba(3, 248, 103, 1)" : ((Te = d[1]) == null ? void 0 : Te.value) <= 24.9 ? De = "rgba(190, 226, 2, 18)" : ((Ge = d[1]) == null ? void 0 : Ge.value) <= 49.9 ? De = "rgba(248, 1, 1, 1)" : ((Ee = d[1]) == null ? void 0 : Ee.value) > 50 ? De = "rgba(197, 5, 58, 1)" : De = "rgba(172, 210, 255, 1)", `<div style="font-size: 13px;"
1908
- <strong>${W((je = this.meteogramData) == null ? void 0 : je.dates[f]).tz(this.positionGmt).format("MMM-DD/HHmm[LT]")}</strong>
1909
- </div>
1910
- <div style="display: ${(Ke = this.meteogramData) != null && Ke.weatherNames[f] ? "block" : "none"}; font-size: 13px;">
1911
- <span>Weather : </span><strong>${(Ue = this.meteogramData) == null ? void 0 : Ue.weatherNames[f]}</strong>
1912
- </div>
1913
- <div style="display: ${isNaN((Re = (We = d[0]) == null ? void 0 : We.value) == null ? void 0 : Re[1]) ? "none" : "block"};font-size: 13px;">
1914
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #FF9500;}"></span>
1915
- <span>Temperature : </span><strong>${(qe = (Xe = d[0]) == null ? void 0 : Xe.value) == null ? void 0 : qe[1]}</strong><span style="padding-left: 3px;">℃</span>
1916
- </div>
1917
- <div style="display: ${isNaN((Je = d[1]) == null ? void 0 : Je.value) ? "none" : "block"};font-size: 13px;">
1918
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background: ${De};"></span>
1919
- <span>Precip.3h : </span><strong>${(Ze = d[1]) == null ? void 0 : Ze.value}</strong><span style="padding-left: 3px;">mm</span>
1920
- </div>`) : !1;
1921
- }
1922
- }
1923
- },
1924
- legend: {
1925
- show: !0,
1926
- top: "10px",
1927
- right: "4%",
1928
- data: [
1929
- "Temperature"
1930
- // {
1931
- // name: 'Precipitation:',
1932
- // icon: 'none',
1933
- // // icon: 'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHcAAAAvCAMAAADuOqUiAAAAIGNIUk0AAHomAACAhAAA+gAAAIDo AAB1MAAA6mAAADqYAAAXcJy6UTwAAAKpUExURa/S+q3S/KzR/azS/6rU/qbT+p/U85bX7Y/Z5ojZ 3YHb2Xnd0XLfzGvgxWTivVzjuFXlsE3nqUXppD7rnDbsly/sjijviCHxgxnzexL1dAv2bQj1Zwr3 YRP2Xxr1WSL0VSv0UDPyTTvxR0TwREvwPlXuPFztNmTsMm3sLXXqKn3pJIboIY3pHJblGJ3mE6Xk D63lCrbiB77gBcDXA8TNAMXCAci6AcuwAcylAM+cAtOSAtWJAth/Adp1A9xrAeBhAuJYAONNAedE Aek6AewwAO4mAvAdAPMRAfQKAfUDAfUBA/QBB/EBCu4BC+wCD+oCEOcDFOYBFeQCGOEBGd8DHd0D HtoDItgDI9UDJtQEKNEEK84DLswEMswEM8gENMYEOMUFOMUEObDT+67T/a3S/pDa54na3nPgzWzh xmXjvlbmsT/snTftmDDtjynwiRr0fBP2dQz3bgn2aAv4Yiz1UTLxTDzySEzxP13uN2XtM3brK37q JZfmGZ7nFKblEL/hBsHYBMXOAcbDAsm7As6nAtSTA91sAuROAuwwAvAdAvQSAvYCBO8CDO0DEOUC FeUDGeICGtsEI9kEJNYEJ88EL84FM8kFNccFOa3T/6TU+p7V85jW7ZDY5oDa2M2mAe0xA/QBBfEC COIDGOACGdQDKtEELc0EMq7T/5nX7pHZ54Lc2hv2WkXxRYfpIrfjCNCdA/cDBfUCBvABB+4EEeYD FuMEGeEDGuAEHtUEK80FNK7R+Xre0uJMAO4nAPMSAKvR/vQTAfUCCNUFKa7mC9IDLdADLs4DMsYF Oi32UtEEL88EM84GNarT/+4mBPAcBBP0dA31bRT1dQ72bsUGOsQFOZzlEsqvAJLa6Mq8A8QDOKvQ /HHey94EH5fY7mbkvwz5Y47qHd4CHP///4u083EAAAABYktHROLGAZ4cAAAAB3RJTUUH6QMUAyMQ xByDrgAAAtZJREFUWMNjYGBkYsYKWFjZ2Dk4ubh5ePn4BQSFhEVExcQlJKWkZWTl5BUUlZRVVNXU NTS1tHV09fQNDI2MTUzNzC0sraxtbO3sHRydnF1c3dw9PL28fXz9/AMCg4JDQsPCIyKjomNi4+IT EhmSklNw25uaxsWdnpHJnyUolJ2TmyeeX1BYVAy0t6S0TLlctaJSo6paW6emts7AsL6hsanZvMWy FWhvm71Du5Nzh2tnl4dnt7dPT69/QF//hJDQiZMmR0ZNmRo7bTrQXoZkphnY7Z05a/actLkI/+ZC /FsM9m8Z1L8ge/XqwP5tMjOfh+Tf+a6dIP8uWAjyb9+ixSD/Tl6ydMoyiL1JycuZcdm7YiXnKiz+ XS1foli2BurftWD/roP4d956dP9u2LipZ7N/wJat27aD/Ltj6ZSpO8H27sIbv2lcu9H9K4PiX9T4 hft3DzB+97rtg8dvHyR+geEcvWznNHD8MqbsxxO/q8iOX6C9B4DxexAlfg8hxy/OcJ69Mg2SnrPw xa+uXt1hLPHbgRq/2yDxe+ToMZC9x/GkZ1D8pq3ajS1+T+CI3xak+J0PSc9o8Xvk5KnTEP/SLP9i iV9Q/l1G4/wLjV/i8++ZMzTMv0dOHsOVfxH2UpZ/z57Dkn+B8Uvj/AtNz3TPv9DyeZDk36XRywYk /wLLZxrnX2zxS4/8O1r/jta/9Mu/o/UvtfPvaP07Wv/SL/8Osfr3/IWBqX8vXqJ9/cvKNjD1Lyvb aP07UPUvMD1TJf9eJjH/gtMzFfLvFTz+hcQvSfl3Hq3qX1j+BYczrvhFthcl/4LsheUjvPE7B5qe 8ZfPV+ug/r2GJ37B+TcCFr+J+OP3ehop+fcGankFr39B/t26DZyel0Dz702GXcm38MfvbbT2Fche surfO+D8CwpnQvF7F5J/76H49z40fmH59wGR9e9DjPKZcHrOQkrP2PIv0L8NJOXfRABFQw1LH9X/ VAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyNS0wMy0yMFQwMzozNToxNiswMDowMF0Ec3MAAAAldEVY dGRhdGU6bW9kaWZ5ADIwMjUtMDMtMjBUMDM6MzU6MTYrMDA6MDAsWcvPAAAAKHRFWHRkYXRlOnRp bWVzdGFtcAAyMDI1LTAzLTIwVDAzOjM1OjE2KzAwOjAwe0zqEAAAAABJRU5ErkJggg=='
1934
- // }
1935
- ],
1936
- itemWidth: 40
1937
- },
1938
- xAxis: {
1939
- show: !0,
1940
- left: 0,
1941
- right: 0,
1942
- top: "50%",
1943
- height: "50%",
1944
- type: "category",
1945
- data: (R = this.meteogramData) == null ? void 0 : R.dates,
1946
- axisLabel: {
1947
- show: !1
1948
- },
1949
- axisLine: {
1950
- show: !1,
1951
- onZero: !1
1952
- },
1953
- axisTick: {
1954
- show: !0,
1955
- inside: !0,
1956
- lineStyle: {
1957
- color: "rgba(0,0,0,0.7)"
1958
- }
1959
- },
1960
- z: 1,
1961
- zlevel: 1
1962
- },
1963
- singleAxis: [
1964
- {
1965
- left: (X = this.meteogramData) == null ? void 0 : X.offset,
1966
- right: (q = this.meteogramData) == null ? void 0 : q.offset,
1967
- type: "category",
1968
- show: !1,
1969
- axisLine: {
1970
- show: !1
1971
- // 隐藏轴线
1972
- },
1973
- axisTick: {
1974
- show: !1
1975
- // 隐藏刻度
1976
- },
1977
- axisLabel: {
1978
- show: !1
1979
- // 隐藏刻度标签
1980
- },
1981
- splitLine: {
1982
- show: !1
1983
- // 隐藏分割线
1984
- },
1985
- boundaryGap: !1,
1986
- data: (J = this.meteogramData) == null ? void 0 : J.dates,
1987
- top: "17%",
1988
- height: "2%"
1989
- },
1990
- {
1991
- left: (Z = this.meteogramData) == null ? void 0 : Z.offset,
1992
- right: (V = this.meteogramData) == null ? void 0 : V.offset,
1993
- type: "category",
1994
- show: !1,
1995
- axisLine: {
1996
- show: !1
1997
- // 隐藏轴线
1998
- },
1999
- axisTick: {
2000
- show: !1
2001
- // 隐藏刻度
2002
- },
2003
- axisLabel: {
2004
- show: !1
2005
- // 隐藏刻度标签
2006
- },
2007
- splitLine: {
2008
- show: !1
2009
- // 隐藏分割线
2010
- },
2011
- boundaryGap: !1,
2012
- data: ($ = this.meteogramData) == null ? void 0 : $.dates,
2013
- top: "27%",
2014
- height: "2%"
2015
- },
2016
- {
2017
- left: (ee = this.meteogramData) == null ? void 0 : ee.offset,
2018
- right: (te = this.meteogramData) == null ? void 0 : te.offset,
2019
- type: "category",
2020
- show: !1,
2021
- axisLine: {
2022
- show: !1
2023
- // 隐藏轴线
2024
- },
2025
- axisTick: {
2026
- show: !1
2027
- // 隐藏刻度
2028
- },
2029
- axisLabel: {
2030
- show: !1
2031
- // 隐藏刻度标签
2032
- },
2033
- splitLine: {
2034
- show: !1
2035
- // 隐藏分割线
2036
- },
2037
- boundaryGap: !1,
2038
- data: (c = this.meteogramData) == null ? void 0 : c.dates,
2039
- top: "84%",
2040
- height: "2%"
2041
- },
2042
- {
2043
- left: (F = this.meteogramData) == null ? void 0 : F.offset,
2044
- right: (T = this.meteogramData) == null ? void 0 : T.offset,
2045
- type: "category",
2046
- show: !1,
2047
- axisLine: {
2048
- show: !1
2049
- // 隐藏轴线
2050
- },
2051
- axisTick: {
2052
- show: !1
2053
- // 隐藏刻度
2054
- },
2055
- axisLabel: {
2056
- show: !1
2057
- // 隐藏刻度标签
2058
- },
2059
- splitLine: {
2060
- show: !1
2061
- // 隐藏分割线
2062
- },
2063
- boundaryGap: !1,
2064
- data: (P = this.meteogramData) == null ? void 0 : P.dates,
2065
- top: "92%",
2066
- height: "2%"
2067
- }
2068
- ],
2069
- yAxis: [
2070
- {
2071
- type: "value",
2072
- name: "Temperature ( ℃ ) ",
2073
- show: !0,
2074
- min: o,
2075
- max: u,
2076
- // data: this.meteogramData?.temperaturesY,
2077
- interval: v,
2078
- splitNumber: 5,
2079
- nameRotate: 90,
2080
- nameLocation: "middle",
2081
- nameGap: 25,
2082
- splitLine: {
2083
- show: !0
2084
- },
2085
- z: 0,
2086
- zlevel: 0
2087
- },
2088
- {
2089
- position: "right",
2090
- type: "value",
2091
- name: I,
2092
- min: 0,
2093
- max: Math.ceil((Math.max(...this.meteogramData.precip.filter((d) => typeof d == "number" && !isNaN(d))) + 1) / 5) * 5,
2094
- interval: Math.ceil((Math.max(...this.meteogramData.precip.filter((d) => typeof d == "number" && !isNaN(d))) + 1) / 5),
2095
- splitNumber: 5,
2096
- show: !0,
2097
- nameRotate: 90,
2098
- nameLocation: "middle",
2099
- nameGap: 25,
2100
- splitLine: {
2101
- show: !0
2102
- },
2103
- z: 0,
2104
- zlevel: 0
2105
- }
2106
- ],
2107
- visualMap: {
2108
- type: "piecewise",
2109
- orient: "horizontal",
2110
- top: 31,
2111
- right: "4%",
2112
- show: !0,
2113
- pieces: b,
2114
- seriesIndex: 1,
2115
- dimension: 1
2116
- },
2117
- series: [
2118
- {
2119
- name: "Temperature",
2120
- type: "line",
2121
- yAxisIndex: 0,
2122
- data: (m = this.meteogramData) == null ? void 0 : m.temperaturesX,
2123
- symbol: "none",
2124
- smooth: !1,
2125
- itemStyle: {
2126
- color: "#FF9500"
2127
- },
2128
- label: {
2129
- show: !1
2130
- },
2131
- markArea: {
2132
- z: -1,
2133
- zlevel: -1,
2134
- itemStyle: {
2135
- color: "rgba(239,239,239,0.6)"
2136
- },
2137
- data: (S = this.meteogramData) == null ? void 0 : S.markarea,
2138
- emphasis: {
2139
- disabled: !0
2140
- }
2141
- }
2142
- },
2143
- {
2144
- name: "Precipitation:",
2145
- type: "bar",
2146
- yAxisIndex: 1,
2147
- data: (k = this.meteogramData) == null ? void 0 : k.precip,
2148
- itemStyle: {
2149
- color: "#0c73a8"
2150
- },
2151
- label: {
2152
- show: !1
2153
- }
2154
- },
2155
- {
2156
- singleAxisIndex: 2,
2157
- coordinateSystem: "singleAxis",
2158
- type: "scatter",
2159
- data: (L = this.meteogramData) == null ? void 0 : L.hours,
2160
- label: {
2161
- show: !0,
2162
- fontSize: 11,
2163
- formatter: "{c}"
2164
- },
2165
- itemStyle: {
2166
- color: "#fff"
2167
- },
2168
- symbolSize: 0
2169
- },
2170
- {
2171
- singleAxisIndex: 3,
2172
- coordinateSystem: "singleAxis",
2173
- type: "scatter",
2174
- data: (D = this.meteogramData) == null ? void 0 : D.xDates,
2175
- label: {
2176
- show: !0,
2177
- fontSize: 13,
2178
- formatter: "{c}"
2179
- },
2180
- itemStyle: {
2181
- color: "#fff"
2182
- },
2183
- symbolSize: 0
2184
- }
2185
- ]
2186
- };
2187
- x.setOption(C);
2188
- const M = Be.init(document.getElementById("wave-swell")), N = {
2189
- title: {
2190
- text: "Wave & Swell",
2191
- top: "10px",
2192
- left: "5px",
2193
- textStyle: {
2194
- fontWeight: "normal",
2195
- fontSize: 14
2196
- }
2197
- },
2198
- grid: {
2199
- show: !0,
2200
- bottom: "20%",
2201
- top: "40px",
2202
- left: "4%",
2203
- right: "4%",
2204
- borderColor: "#666",
2205
- borderWidth: 1,
2206
- z: 1,
2207
- zlevel: 1
2208
- },
2209
- tooltip: {
2210
- trigger: "axis",
2211
- triggerOn: "mousemove",
2212
- show: !0,
2213
- position: "right",
2214
- formatter: (d) => {
2215
- var K, y, ve, G, oe, fe, B, i, w, xe;
2216
- const f = (K = d == null ? void 0 : d[0]) == null ? void 0 : K.dataIndex;
2217
- return d.find((Le) => Le.seriesType === "scatter") ? !1 : `<div style="font-size: 13px;"><strong>${W((y = this.meteogramData) == null ? void 0 : y.dates[f]).tz(this.positionGmt).format("MMM-DD/HHmm[LT]")}</strong></div>
2218
- <div style="font-size: 13px;display: ${isNaN((ve = d[0]) == null ? void 0 : ve.value) ? "none" : "block"}">
2219
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #60c43e;}"></span>
2220
- <span>Wind Speed : </span><strong>${(G = d[0]) == null ? void 0 : G.value}</strong><span style="padding-left: 3px;">kts</span>
2221
- </div>
2222
- <div style="font-size: 13px;display: ${isNaN((oe = d[2]) == null ? void 0 : oe.value) ? "none" : "block"}">
2223
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #4ba229;}"></span>
2224
- <span>Wind Gusts : </span><strong>${(fe = d[2]) == null ? void 0 : fe.value}</strong><span style="padding-left: 3px;">kts</span>
2225
- </div>
2226
- <div style="font-size: 13px;display: ${isNaN((B = d[3]) == null ? void 0 : B.value) ? "none" : "block"}">
2227
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #21baa3;"></span>
2228
- <span>Swell Height : </span><strong>${(i = d[3]) == null ? void 0 : i.value}</strong><span style="padding-left: 3px;">m</span>
2229
- </div>
2230
- <div style="font-size: 13px;display: ${isNaN((w = d[4]) == null ? void 0 : w.value) ? "none" : "block"}">
2231
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #049f9c;}"></span>
2232
- <span>Sig.Wave Height : </span><strong>${(xe = d[4]) == null ? void 0 : xe.value}</strong><span style="padding-left: 3px;">m</span>
2233
- </div>
2234
- `;
2235
- }
2236
- },
2237
- legend: {
2238
- // show: false,
2239
- right: "4%",
2240
- top: "5%",
2241
- itemWidth: 40,
2242
- data: [
2243
- "Wind Speed",
2244
- {
2245
- name: "Wind Direction",
2246
- itemWidth: 20,
2247
- icon: "path://M445.00000001 133.8l44.39999999-44.39999999c18.8-18.8 49.2-18.8 67.8-1e-8L946 477.99999999c18.8 18.8 18.8 49.2 0 67.80000001l-388.6 388.6c-18.8 18.8-49.2 18.8-67.8 0L445.2 890c-19-19-18.6-50 0.8-68.6L686.80000001 592 112 592c-26.6 0-48-21.4-48-48l0-64c0-26.6 21.4-48 48-48L686.80000001 432 445.8 202.4c-19.6-18.6-20-49.6-0.79999999-68.6z",
2248
- itemStyle: {
2249
- color: "#60c43e"
2250
- }
2251
- },
2252
- "Wind Gusts",
2253
- "Swell Height",
2254
- "Sig.Wave Height"
2255
- ]
2256
- },
2257
- xAxis: {
2258
- show: !0,
2259
- left: 0,
2260
- right: 0,
2261
- top: "50%",
2262
- height: "50%",
2263
- type: "category",
2264
- data: (he = this.meteogramData) == null ? void 0 : he.dates,
2265
- axisLabel: {
2266
- show: !1
2267
- },
2268
- axisLine: {
2269
- show: !1
2270
- },
2271
- axisTick: {
2272
- show: !0,
2273
- inside: !0,
2274
- lineStyle: {
2275
- color: "rgba(0,0,0,0.7)"
2276
- }
2277
- },
2278
- z: 1,
2279
- zlevel: 1
2280
- },
2281
- singleAxis: [
2282
- {
2283
- left: (de = this.meteogramData) == null ? void 0 : de.offset,
2284
- right: (Ae = this.meteogramData) == null ? void 0 : Ae.offset,
2285
- type: "category",
2286
- show: !1,
2287
- axisLine: {
2288
- show: !1
2289
- // 隐藏轴线
2290
- },
2291
- axisTick: {
2292
- show: !1
2293
- // 隐藏刻度
2294
- },
2295
- axisLabel: {
2296
- show: !1
2297
- // 隐藏刻度标签
2298
- },
2299
- splitLine: {
2300
- show: !1
2301
- // 隐藏分割线
2302
- },
2303
- boundaryGap: !1,
2304
- data: (g = this.meteogramData) == null ? void 0 : g.dates,
2305
- top: "84%",
2306
- height: "2%"
2307
- },
2308
- {
2309
- left: (ue = this.meteogramData) == null ? void 0 : ue.offset,
2310
- right: (E = this.meteogramData) == null ? void 0 : E.offset,
2311
- type: "category",
2312
- show: !1,
2313
- axisLine: {
2314
- show: !1
2315
- // 隐藏轴线
2316
- },
2317
- axisTick: {
2318
- show: !1
2319
- // 隐藏刻度
2320
- },
2321
- axisLabel: {
2322
- show: !1
2323
- // 隐藏刻度标签
2324
- },
2325
- splitLine: {
2326
- show: !1
2327
- // 隐藏分割线
2328
- },
2329
- boundaryGap: !1,
2330
- data: (z = this.meteogramData) == null ? void 0 : z.dates,
2331
- top: "92%",
2332
- height: "2%"
2333
- }
2334
- ],
2335
- yAxis: [
2336
- {
2337
- type: "value",
2338
- name: "Wind Speed ( kts )",
2339
- show: !0,
2340
- min: 0,
2341
- max: Math.ceil(
2342
- Math.max(...[...this.meteogramData.windGusts, ...this.meteogramData.windspeed].filter((d) => typeof d == "number" && !isNaN(d))) / 5
2343
- ) * 5,
2344
- interval: Math.ceil(
2345
- Math.max(...[...this.meteogramData.windGusts, ...this.meteogramData.windspeed].filter((d) => typeof d == "number" && !isNaN(d))) / 5
2346
- ),
2347
- splitNumber: 5,
2348
- nameRotate: 90,
2349
- nameLocation: "middle",
2350
- nameGap: 25,
2351
- splitLine: {
2352
- show: !0
2353
- },
2354
- z: 0,
2355
- zlevel: 0
2356
- },
2357
- {
2358
- position: "right",
2359
- type: "value",
2360
- name: "Sig.Wave & Swell ( m )",
2361
- min: 0,
2362
- max: Math.ceil(
2363
- Math.max(
2364
- ...[...this.meteogramData.sigWaveHeight, ...this.meteogramData.swellHeight].filter((d) => typeof d == "number" && !isNaN(d))
2365
- ) / 5
2366
- ) * 5,
2367
- interval: Math.ceil(
2368
- Math.max(
2369
- ...[...this.meteogramData.sigWaveHeight, ...this.meteogramData.swellHeight].filter((d) => typeof d == "number" && !isNaN(d))
2370
- ) / 5
2371
- ),
2372
- splitNumber: 5,
2373
- show: !0,
2374
- nameRotate: 90,
2375
- nameLocation: "middle",
2376
- nameGap: 25,
2377
- splitLine: {
2378
- show: !0
2379
- },
2380
- z: 0,
2381
- zlevel: 0
2382
- }
2383
- ],
2384
- series: [
2385
- {
2386
- name: "Wind Speed",
2387
- type: "line",
2388
- yAxisIndex: 0,
2389
- data: (_ = this.meteogramData) == null ? void 0 : _.windspeed,
2390
- symbol: "none",
2391
- smooth: !1,
2392
- itemStyle: {
2393
- color: "#60c43e"
2394
- },
2395
- markArea: {
2396
- itemStyle: {
2397
- color: "rgba(239,239,239,0.6)"
2398
- },
2399
- data: (ce = this.meteogramData) == null ? void 0 : ce.markarea,
2400
- emphasis: {
2401
- disabled: !0
2402
- },
2403
- z: -1,
2404
- zlevel: -1
2405
- }
2406
- },
2407
- {
2408
- name: "Wind Direction",
2409
- type: "custom",
2410
- yAxisIndex: 0,
2411
- renderItem: (d, f) => {
2412
- var ve, G;
2413
- const K = d.dataIndex, y = f.coord([f.value(0), f.value(1)]);
2414
- return ((G = (ve = this.meteogramData) == null ? void 0 : ve.windDir) == null ? void 0 : G[K]) >= 0 ? {
2415
- type: "image",
2416
- position: y,
2417
- style: {
2418
- image: this.meteogramData.windDirIcons[K],
2419
- x: -12 / 2,
2420
- y: 6,
2421
- width: 12,
2422
- height: 12
2423
- }
2424
- } : !1;
2425
- },
2426
- data: (A = this.meteogramData) == null ? void 0 : A.windspeed,
2427
- z: 10
2428
- },
2429
- {
2430
- name: "Wind Gusts",
2431
- type: "line",
2432
- yAxisIndex: 0,
2433
- data: (O = this.meteogramData) == null ? void 0 : O.windGusts,
2434
- symbol: "none",
2435
- smooth: !1,
2436
- itemStyle: {
2437
- color: "#4ba229"
2438
- },
2439
- lineStyle: {
2440
- color: "#4ba229",
2441
- type: "dashed"
2442
- },
2443
- label: {
2444
- show: !1
2445
- }
2446
- },
2447
- {
2448
- name: "Swell Height",
2449
- type: "line",
2450
- yAxisIndex: 1,
2451
- data: (ie = this.meteogramData) == null ? void 0 : ie.swellHeight,
2452
- symbol: "none",
2453
- smooth: !1,
2454
- itemStyle: {
2455
- color: "#21baa3"
2456
- },
2457
- label: {
2458
- show: !1
2459
- }
2460
- },
2461
- {
2462
- name: "Sig.Wave Height",
2463
- type: "line",
2464
- yAxisIndex: 1,
2465
- data: (Q = this.meteogramData) == null ? void 0 : Q.sigWaveHeight,
2466
- symbol: "none",
2467
- smooth: !1,
2468
- itemStyle: {
2469
- color: "#017c8a"
2470
- },
2471
- label: {
2472
- show: !1
2473
- }
2474
- },
2475
- {
2476
- name: "Hours",
2477
- singleAxisIndex: 0,
2478
- coordinateSystem: "singleAxis",
2479
- type: "scatter",
2480
- data: (re = this.meteogramData) == null ? void 0 : re.hours,
2481
- itemStyle: {
2482
- color: "#fff"
2483
- },
2484
- label: {
2485
- show: !0,
2486
- fontSize: 10,
2487
- formatter: "{c}"
2488
- },
2489
- symbolSize: 0
2490
- },
2491
- {
2492
- name: "Dates",
2493
- singleAxisIndex: 1,
2494
- coordinateSystem: "singleAxis",
2495
- type: "scatter",
2496
- data: (j = this.meteogramData) == null ? void 0 : j.xDates,
2497
- itemStyle: {
2498
- color: "#fff"
2499
- },
2500
- label: {
2501
- show: !0,
2502
- fontSize: 13,
2503
- formatter: "{c}"
2504
- },
2505
- symbolSize: 0
2506
- }
2507
- ]
2508
- };
2509
- M.setOption(N), M.on("legendselectchanged", (d) => {
2510
- d.name === "Wind Speed" && (d.selected["Wind Direction"] = d.selected["Wind Speed"]);
2511
- });
2512
- },
2513
- async fetchSeasonalData() {
2514
- var t, o, u, v, I, b, x, C, M, N, se, ae, le, Y, U, R, X, q, J, Z, V, $, ee, te, c, F, T, P, m, S, k;
2515
- if (!this.token)
2516
- return !1;
2517
- this.loading.seasonalEchart = !0, this.seasonalData = {
2518
- dates: [],
2519
- xDates: [],
2520
- highTemp: [],
2521
- lastYearHighTemp: [],
2522
- lowTemp: [],
2523
- lastYearLowTemp: [],
2524
- windSpeed: [],
2525
- windDirection: [],
2526
- lastYearWindSpeed: [],
2527
- precip: [],
2528
- lastYearPrecip: []
2529
- };
2530
- const n = W(this.etime).tz(this.positionGmt).date() >= 14 ? W(this.etime).tz(this.positionGmt).month() + 1 : W(this.etime).tz(this.positionGmt).month(), e = W(this.etime).tz(this.positionGmt).set({ month: n });
2531
- this.monthsOptions = [];
2532
- for (let L = 0; L < 6; L++)
2533
- this.monthsOptions.push({
2534
- date: W(this.etime).tz(this.positionGmt).set({ year: e.year(), month: e.month() + L, date: 1, hour: 0, minute: 0, second: 0 }).format(),
2535
- month: W(this.etime).tz(this.positionGmt).set({ year: e.year(), month: e.month() + L }).format("MMMM yyyy")
2536
- });
2537
- this.currentMonth = this.currentMonth ? this.currentMonth : this.monthsOptions[0];
2538
- let a = {
2539
- lat: this.position.lat,
2540
- lng: this.position.lng,
2541
- startDate: W().tz(this.positionGmt).set({ year: e.year(), month: e.month(), date: 1, hour: 0, minute: 0, second: 0 }).format(),
2542
- endDate: W().tz(this.positionGmt).set({ year: e.year(), month: e.month() + 1, date: 1, hour: 0, minute: 0, second: 0 }).format(),
2543
- pastYear: 1
2544
- }, h = await ze.post(`${this.gateway}/api/arc/meteo2/spot/seasonal`, a, {
2545
- headers: {
2546
- Authorization: this.token
2547
- }
2548
- });
2549
- if ((h == null ? void 0 : h.data.code) === 0) {
2550
- this.etime = (t = h == null ? void 0 : h.data) == null ? void 0 : t.etime, this.positionGmt = (v = (u = (o = this.meteoData) == null ? void 0 : o.weather) == null ? void 0 : u[0]) == null ? void 0 : v.timezone, this.positionOffset = (x = (b = (I = this.meteoData) == null ? void 0 : I.weather) == null ? void 0 : b[0]) == null ? void 0 : x.offset, this.issuedDate = H(this.etime).utc().format("MMM-DD/HHmm[Z], YYYY");
2551
- let L = (C = h == null ? void 0 : h.data.data) == null ? void 0 : C.seasonal, D = W(this.etime).tz(this.positionGmt).set({ year: e.year(), month: e.month(), date: 1, hour: 0, minute: 0, second: 0 }).format();
2552
- const he = H(a.endDate).diff(H(a.startDate), "day", !0);
2553
- for (let E = 0; E < he; E++) {
2554
- const z = H(D).clone().add(E, "d").format(), _ = ((M = ke.pickDaily(L, z)) == null ? void 0 : M[0]) || {};
2555
- (N = this.seasonalData) == null || N.dates.push(W(z).tz(this.positionGmt).format("MMM-DD")), (se = this.seasonalData) == null || se.xDates.push(W(z).tz(this.positionGmt).format("DD")), (Y = this.seasonalData) == null || Y.highTemp.push(this.roundPrecision((le = (ae = _ == null ? void 0 : _.weather) == null ? void 0 : ae.temp) == null ? void 0 : le.max, 0)), (X = this.seasonalData) == null || X.lowTemp.push(this.roundPrecision((R = (U = _ == null ? void 0 : _.weather) == null ? void 0 : U.temp) == null ? void 0 : R.min, 0)), (Z = this.seasonalData) == null || Z.windSpeed.push(this.roundPrecision((J = (q = _.weather) == null ? void 0 : q.wind) == null ? void 0 : J.kts, 1)), (ee = this.seasonalData) == null || ee.windDirection.push(($ = (V = _.weather) == null ? void 0 : V.wind) == null ? void 0 : $.direction), (F = this.seasonalData) == null || F.precip.push(this.roundPrecision((c = (te = _ == null ? void 0 : _.weather) == null ? void 0 : te.precip) == null ? void 0 : c.sum, 1));
2556
- }
2557
- (((P = (T = h == null ? void 0 : h.data.data) == null ? void 0 : T.past) == null ? void 0 : P.reverse()) || []).forEach((E, z) => {
2558
- var _, ce, A, O, ie, Q, re, j, d, f, K, y, ve;
2559
- D = W(this.etime).tz(this.positionGmt).set({ year: e.year() - (z + 1), month: e.month(), date: 1, hour: 0, minute: 0, second: 0 }).format();
2560
- for (let G = 0; G < he; G++) {
2561
- const oe = H(D).clone().add(G, "d").format(), fe = ((_ = ke.pickDaily(E, oe)) == null ? void 0 : _[0]) || {};
2562
- (O = this.seasonalData) == null || O.lastYearHighTemp.push(this.roundPrecision((A = (ce = fe == null ? void 0 : fe.weather) == null ? void 0 : ce.temp) == null ? void 0 : A.max, 0)), (re = this.seasonalData) == null || re.lastYearLowTemp.push(this.roundPrecision((Q = (ie = fe == null ? void 0 : fe.weather) == null ? void 0 : ie.temp) == null ? void 0 : Q.min, 0)), (f = this.seasonalData) == null || f.lastYearWindSpeed.push(this.roundPrecision((d = (j = fe.weather) == null ? void 0 : j.wind) == null ? void 0 : d.kts, 1)), (ve = this.seasonalData) == null || ve.lastYearPrecip.push(this.roundPrecision((y = (K = fe == null ? void 0 : fe.weather) == null ? void 0 : K.precip) == null ? void 0 : y.sum, 1));
2563
- }
2564
- }), this.seasonalData.offset = 4 + 0.5 / ((S = (m = this.seasonalData) == null ? void 0 : m.dates) == null ? void 0 : S.length) * 92 + "%", this.seasonalData.minHighTemp = Math.min(...this.seasonalData.highTemp.filter((E) => typeof E == "number" && !isNaN(E))), this.seasonalData.maxHighTemp = Math.max(...this.seasonalData.highTemp.filter((E) => typeof E == "number" && !isNaN(E))), this.seasonalData.minLowTemp = Math.min(...this.seasonalData.lowTemp.filter((E) => typeof E == "number" && !isNaN(E))), this.seasonalData.maxLowTemp = Math.max(...this.seasonalData.lowTemp.filter((E) => typeof E == "number" && !isNaN(E)));
2565
- let Ae = 0;
2566
- this.seasonalData.highTemp.forEach((E, z) => {
2567
- E === this.seasonalData.maxHighTemp && (Ae = z);
2568
- }), this.seasonalData.hottestDay = this.seasonalData.dates[Ae];
2569
- let g = 0;
2570
- this.seasonalData.lowTemp.forEach((E, z) => {
2571
- E === this.seasonalData.minLowTemp && (g = z);
2572
- }), this.seasonalData.coldestDay = this.seasonalData.dates[g], this.seasonalData.meanWind = this.seasonalData.windSpeed.reduce((E, z) => E + z, 0) / ((k = this.seasonalData.windSpeed) == null ? void 0 : k.length), this.seasonalData.maxWindSpeed = Math.max(...this.seasonalData.windSpeed.filter((E) => typeof E == "number" && !isNaN(E)));
2573
- let ue = 0;
2574
- this.seasonalData.windSpeed.forEach((E, z) => {
2575
- E === this.seasonalData.maxWindSpeed && (ue = z);
2576
- }), this.seasonalData.windiestDay = this.seasonalData.dates[ue], this.seasonalData.dominantWind = this.findMostFrequent(this.seasonalData.windDirection);
2577
- }
2578
- },
2579
- findMostFrequent(n) {
2580
- const e = {};
2581
- let a = 0, h;
2582
- for (const t of n)
2583
- e[t] ? e[t]++ : e[t] = 1;
2584
- for (const t in e)
2585
- e[t] > a && (a = e[t], h = t);
2586
- return h;
2587
- },
2588
- initSeasonalEchart() {
2589
- var U, R, X, q, J, Z, V, $, ee, te;
2590
- let n = Math.max(
2591
- ...[...this.seasonalData.highTemp, ...this.seasonalData.lastYearHighTemp].filter((c) => typeof c == "number" && !isNaN(c))
2592
- ), e = Math.min(...[...this.seasonalData.lowTemp, ...this.seasonalData.lastYearLowTemp].filter((c) => typeof c == "number" && !isNaN(c))), a = Math.ceil((n + 1) / 5) * 5, h = Math.floor((e - 1) / 5) * 5, t = Math.ceil((a - h) / 5);
2593
- const o = {
2594
- title: {
2595
- text: "Temperature",
2596
- top: "10px",
2597
- left: "5px",
2598
- textStyle: {
2599
- fontWeight: "normal",
2600
- fontSize: 14
2601
- }
2602
- },
2603
- grid: {
2604
- show: !0,
2605
- bottom: "15%",
2606
- top: "45px",
2607
- left: "6%",
2608
- right: "6%",
2609
- borderColor: "#666",
2610
- borderWidth: 1,
2611
- z: 1,
2612
- zlevel: 1
2613
- },
2614
- tooltip: {
2615
- trigger: "axis",
2616
- show: !0,
2617
- position: "right",
2618
- formatter: (c) => {
2619
- var T, P, m, S, k, L;
2620
- const F = (T = c == null ? void 0 : c[0]) == null ? void 0 : T.dataIndex;
2621
- return c.find((D) => D.seriesType === "scatter") ? !1 : `<div style="font-size: 13px;"><strong>${(P = this.seasonalData) == null ? void 0 : P.dates[F]}</strong></div>
2622
- <div style="font-size: 13px;">
2623
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #FF9500;}"></span>
2624
- <span>High : </span><strong>${(m = c[0]) == null ? void 0 : m.value}</strong><span style="padding-left: 3px;">℃</span>
2625
- </div>
2626
- <div style="font-size: 13px;">
2627
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #f7c587;}"></span>
2628
- <span>High, last year : </span><strong>${(S = c[1]) == null ? void 0 : S.value}</strong><span style="padding-left: 3px;">mm</span>
2629
- </div>
2630
- <div style="font-size: 13px;">
2631
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #2164bf;}"></span>
2632
- <span>Low : </span><strong>${(k = c[2]) == null ? void 0 : k.value}</strong><span style="padding-left: 3px;">mm</span>
2633
- </div>
2634
- <div style="font-size: 13px;">
2635
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #7baef7;}"></span>
2636
- <span>Low, last year : </span><strong>${(L = c[3]) == null ? void 0 : L.value}</strong><span style="padding-left: 3px;">℃</span>
2637
- </div>
2638
- `;
2639
- }
2640
- },
2641
- legend: {
2642
- show: !0,
2643
- top: "15px",
2644
- right: "6%",
2645
- // data: ['Temperature', 'Precipitation'],
2646
- itemWidth: 40
2647
- },
2648
- xAxis: {
2649
- show: !0,
2650
- left: 0,
2651
- right: 0,
2652
- top: "50%",
2653
- height: "50%",
2654
- type: "category",
2655
- boundaryGap: !0,
2656
- data: (U = this.seasonalData) == null ? void 0 : U.xDates,
2657
- axisLabel: {
2658
- show: !0
2659
- },
2660
- axisLine: {
2661
- show: !0,
2662
- onZero: !1
2663
- },
2664
- axisTick: {
2665
- show: !0,
2666
- inside: !0,
2667
- lineStyle: {
2668
- color: "rgba(0,0,0,0.7)"
2669
- }
2670
- },
2671
- z: 1,
2672
- zlevel: 1
2673
- },
2674
- yAxis: [
2675
- {
2676
- type: "value",
2677
- name: "Temperature ( ℃ ) ",
2678
- show: !0,
2679
- min: h,
2680
- max: a,
2681
- interval: t,
2682
- splitNumber: 5,
2683
- nameRotate: 90,
2684
- nameLocation: "middle",
2685
- nameGap: 25,
2686
- splitLine: {
2687
- show: !0
2688
- },
2689
- z: 0,
2690
- zlevel: 0
2691
- }
2692
- ],
2693
- series: [
2694
- {
2695
- name: "High",
2696
- type: "line",
2697
- data: (R = this.seasonalData) == null ? void 0 : R.highTemp,
2698
- symbol: "none",
2699
- smooth: !1,
2700
- itemStyle: {
2701
- color: "#FF9500"
2702
- },
2703
- label: {
2704
- show: !1
2705
- }
2706
- },
2707
- {
2708
- name: "High, last year",
2709
- type: "line",
2710
- symbol: "none",
2711
- data: (X = this.seasonalData) == null ? void 0 : X.lastYearHighTemp,
2712
- itemStyle: {
2713
- color: "#f7c587"
2714
- },
2715
- lineStyle: {
2716
- color: "#f7c587"
2717
- // type: 'dashed',
2718
- },
2719
- label: {
2720
- show: !1
2721
- }
2722
- },
2723
- {
2724
- name: "Low",
2725
- type: "line",
2726
- data: (q = this.seasonalData) == null ? void 0 : q.lowTemp,
2727
- symbol: "none",
2728
- smooth: !1,
2729
- itemStyle: {
2730
- color: "#2164bf"
2731
- },
2732
- label: {
2733
- show: !1
2734
- }
2735
- },
2736
- {
2737
- name: "Low, last year",
2738
- type: "line",
2739
- symbol: "none",
2740
- data: (J = this.seasonalData) == null ? void 0 : J.lastYearLowTemp,
2741
- itemStyle: {
2742
- color: "#7baef7"
2743
- },
2744
- lineStyle: {
2745
- color: "#7baef7"
2746
- // type: 'dashed',
2747
- },
2748
- label: {
2749
- show: !1
2750
- }
2751
- }
2752
- ]
2753
- };
2754
- this.loading.seasonalEchart = !1, this.$nextTick(() => {
2755
- Be.init(document.getElementById("temperature-echart")).setOption(o);
2756
- });
2757
- function u(c) {
2758
- return {
2759
- image: (() => {
2760
- const F = document.createElementNS("http://www.w3.org/2000/svg", "svg");
2761
- F.setAttribute("width", "10"), F.setAttribute("height", "5"), F.setAttribute("viewBox", "0 0 10 5");
2762
- const T = document.createElementNS("http://www.w3.org/2000/svg", "rect");
2763
- T.setAttribute("x", "0"), T.setAttribute("y", "0"), T.setAttribute("width", "10"), T.setAttribute("height", "5"), T.setAttribute("fill", c), F.appendChild(T);
2764
- const P = document.createElementNS("http://www.w3.org/2000/svg", "line");
2765
- P.setAttribute("x1", "0"), P.setAttribute("y1", "0"), P.setAttribute("x2", "10"), P.setAttribute("y2", "5"), P.setAttribute("stroke", "#fff"), P.setAttribute("stroke-width", "1"), F.appendChild(P);
2766
- const m = new XMLSerializer().serializeToString(F), S = new Blob([m], { type: "image/svg+xml;charset=utf-8" });
2767
- return URL.createObjectURL(S);
2768
- })(),
2769
- repeat: "repeat"
2770
- };
2771
- }
2772
- let v = Math.max(
2773
- ...[...this.seasonalData.windSpeed, ...this.seasonalData.lastYearWindSpeed].filter((c) => typeof c == "number" && !isNaN(c))
2774
- ), b = Math.min(...[...this.seasonalData.windSpeed, ...this.seasonalData.lastYearWindSpeed].filter((c) => typeof c == "number" && !isNaN(c))) > 0 ? 0 : Math.min(...[...this.seasonalData.windSpeed, ...this.seasonalData.lastYearWindSpeed].filter((c) => typeof c == "number" && !isNaN(c))), x = Math.ceil((v + 1) / 5) * 5, C = Math.ceil((x - b) / 5), M = Math.max(...[...this.seasonalData.precip, ...this.seasonalData.lastYearPrecip].filter((c) => typeof c == "number" && !isNaN(c))), se = 0, ae = Math.ceil(M * 2 / 5) * 5, le = Math.ceil((ae - se) / 5);
2775
- const Y = {
2776
- title: {
2777
- text: "Wind & Preciption",
2778
- top: "10px",
2779
- left: "5px",
2780
- textStyle: {
2781
- fontWeight: "normal",
2782
- fontSize: 14
2783
- }
2784
- },
2785
- grid: {
2786
- show: !0,
2787
- bottom: "15%",
2788
- top: "100px",
2789
- left: "6%",
2790
- right: "6%",
2791
- borderColor: "#666",
2792
- borderWidth: 1,
2793
- z: 1,
2794
- zlevel: 1
2795
- },
2796
- tooltip: {
2797
- trigger: "axis",
2798
- show: !0,
2799
- position: "right",
2800
- formatter: (c) => {
2801
- var T, P, m, S, k, L, D, he, de, Ae, g, ue, E, z, _, ce;
2802
- const F = (T = c == null ? void 0 : c[0]) == null ? void 0 : T.dataIndex;
2803
- if (c.find((A) => A.seriesType === "scatter"))
2804
- return !1;
2805
- {
2806
- let A = { color: "", colorLastYear: "", url: "" };
2807
- return ((P = c[2]) == null ? void 0 : P.value) < 9.9 ? A.color = "rgba(172, 210, 255, 1)" : ((m = c[2]) == null ? void 0 : m.value) < 24.9 ? A.color = "rgba(3, 248, 103, 1)" : ((S = c[2]) == null ? void 0 : S.value) < 49.9 ? A.color = "rgba(190, 226, 2, 18)" : ((k = c[2]) == null ? void 0 : k.value) < 99.9 ? A.color = "rgba(248, 1, 1, 1)" : ((L = c[2]) == null ? void 0 : L.value) > 100 ? A.color = "rgba(197, 5, 58, 1)" : A.color = "rgba(172, 210, 255, 1)", ((D = c[3]) == null ? void 0 : D.value) < 9.9 ? A.colorLastYear = "rgba(172, 210, 255, 1)" : ((he = c[3]) == null ? void 0 : he.value) < 24.9 ? A.colorLastYear = "rgba(3, 248, 103, 1)" : ((de = c[3]) == null ? void 0 : de.value) < 49.9 ? A.colorLastYear = "rgba(190, 226, 2, 18)" : ((Ae = c[3]) == null ? void 0 : Ae.value) < 99.9 ? A.colorLastYear = "rgba(248, 1, 1, 1)" : ((g = c[3]) == null ? void 0 : g.value) > 100 ? A.colorLastYear = "rgba(197, 5, 58, 1)" : A.colorLastYear = "rgba(172, 210, 255, 1)", A.url = (() => {
2808
- const O = document.createElementNS("http://www.w3.org/2000/svg", "svg");
2809
- O.setAttribute("width", "10"), O.setAttribute("height", "10"), O.setAttribute("viewBox", "0 0 10 10");
2810
- const ie = document.createElementNS("http://www.w3.org/2000/svg", "rect");
2811
- ie.setAttribute("x", "0"), ie.setAttribute("y", "0"), ie.setAttribute("width", "10"), ie.setAttribute("height", "10"), ie.setAttribute("fill", A.colorLastYear), O.appendChild(ie);
2812
- const Q = document.createElementNS("http://www.w3.org/2000/svg", "line");
2813
- Q.setAttribute("x1", "0"), Q.setAttribute("y1", "0"), Q.setAttribute("x2", "10"), Q.setAttribute("y2", "5"), Q.setAttribute("stroke", "#fff"), Q.setAttribute("stroke-width", "1"), O.appendChild(Q);
2814
- const re = document.createElementNS("http://www.w3.org/2000/svg", "line");
2815
- re.setAttribute("x1", "0"), re.setAttribute("y1", "5"), re.setAttribute("x2", "10"), re.setAttribute("y2", "10"), re.setAttribute("stroke", "#fff"), re.setAttribute("stroke-width", "1"), O.appendChild(re);
2816
- const j = new XMLSerializer().serializeToString(O), d = new Blob([j], { type: "image/svg+xml;charset=utf-8" });
2817
- return URL.createObjectURL(d);
2818
- })(), `<div style="font-size: 13px;"><strong>${(ue = this.seasonalData) == null ? void 0 : ue.dates[F]}</strong></div>
2819
- <div style="font-size: 13px;">
2820
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #60c43e;}"></span>
2821
- <span>Wind : </span><strong>${(E = c[0]) == null ? void 0 : E.value}</strong><span style="padding-left: 3px;">kts</span>
2822
- </div>
2823
- <div style="font-size: 13px;">
2824
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: #9af77b;}"></span>
2825
- <span>Wind, last year : </span><strong>${(z = c[1]) == null ? void 0 : z.value}</strong><span style="padding-left: 3px;">kts</span>
2826
- </div>
2827
- <div style="font-size: 13px;">
2828
- <span style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;background-color: ${A.color};}"></span>
2829
- <span>Precip : </span><strong>${(_ = c[2]) == null ? void 0 : _.value}</strong><span style="padding-left: 3px;">mm</span>
2830
- </div>
2831
- <div style="font-size: 13px;">
2832
- <img src="${A.url}" style="display:inline-block; height: 10px;width: 10px;border-radius: 50%;}" />
2833
- <span>Precip, last year : </span><strong>${(ce = c[3]) == null ? void 0 : ce.value}</strong><span style="padding-left: 3px;">mm</span>
2834
- </div>
2835
- `;
2836
- }
2837
- }
2838
- },
2839
- legend: {
2840
- show: !0,
2841
- // orient: 'vertical',
2842
- top: "15px",
2843
- right: "6%",
2844
- data: [
2845
- "Wind",
2846
- "Wind, last year"
2847
- // '\n',
2848
- // {
2849
- // name: 'Precip',
2850
- // icon: 'none'
2851
- // // icon: 'image://data:image/png;base64,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'
2852
- // },
2853
- // '\n',
2854
- // {
2855
- // name: 'Precip, last year',
2856
- // icon: 'none'
2857
- // // icon: 'image://data:image/png;base64,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'
2858
- // }
2859
- ],
2860
- itemWidth: 40
2861
- },
2862
- xAxis: {
2863
- show: !0,
2864
- left: 0,
2865
- right: 0,
2866
- top: "50%",
2867
- height: "50%",
2868
- type: "category",
2869
- boundaryGap: !0,
2870
- data: (Z = this.seasonalData) == null ? void 0 : Z.xDates,
2871
- axisLabel: {
2872
- show: !0
2873
- },
2874
- axisLine: {
2875
- show: !0
2876
- },
2877
- axisTick: {
2878
- show: !0,
2879
- inside: !0,
2880
- lineStyle: {
2881
- color: "rgba(0,0,0,0.7)"
2882
- }
2883
- },
2884
- z: 1,
2885
- zlevel: 1
2886
- },
2887
- yAxis: [
2888
- {
2889
- type: "value",
2890
- name: "Wind speed max ( kts ) ",
2891
- show: !0,
2892
- min: b,
2893
- max: x,
2894
- interval: C,
2895
- splitNumber: 5,
2896
- nameRotate: 90,
2897
- nameLocation: "middle",
2898
- nameGap: 25,
2899
- splitLine: {
2900
- show: !0
2901
- },
2902
- z: 0,
2903
- zlevel: 0
2904
- },
2905
- {
2906
- type: "value",
2907
- name: "Precipitation ( mm ) ",
2908
- show: !0,
2909
- min: se,
2910
- max: ae,
2911
- interval: le,
2912
- splitNumber: 5,
2913
- nameRotate: 90,
2914
- nameLocation: "middle",
2915
- nameGap: 30,
2916
- splitLine: {
2917
- show: !0
2918
- },
2919
- z: 0,
2920
- zlevel: 0
2921
- }
2922
- ],
2923
- visualMap: [
2924
- {
2925
- type: "piecewise",
2926
- orient: "horizontal",
2927
- top: 40,
2928
- right: "6%",
2929
- show: !0,
2930
- pieces: [
2931
- {
2932
- gte: 100,
2933
- color: "rgba(197, 5, 58, 1)",
2934
- label: "Heavy Rainstorm, >=100mm"
2935
- },
2936
- {
2937
- gte: 50,
2938
- lte: 99.9,
2939
- color: "rgba(248, 1, 1, 1)",
2940
- label: "Rainstorm, <=99.9mm"
2941
- },
2942
- {
2943
- gte: 25,
2944
- lte: 49.9,
2945
- color: "rgba(190, 226, 2, 18)",
2946
- label: "Heavy, <=49.9mm"
2947
- },
2948
- {
2949
- gte: 10,
2950
- lte: 24.9,
2951
- color: "rgba(3, 248, 103, 1)",
2952
- label: "Moderate, <=24.9mm"
2953
- },
2954
- {
2955
- lt: 10,
2956
- color: "rgba(172, 210, 255, 1)",
2957
- label: "Light, <10mm"
2958
- }
2959
- ],
2960
- seriesIndex: 2,
2961
- dimension: 1
2962
- },
2963
- {
2964
- type: "piecewise",
2965
- orient: "horizontal",
2966
- top: 65,
2967
- right: "6%",
2968
- show: !0,
2969
- pieces: [
2970
- {
2971
- gte: 100,
2972
- color: u("#C5053A"),
2973
- label: "Heavy Rainstorm, last year"
2974
- },
2975
- {
2976
- gte: 50,
2977
- lte: 99.9,
2978
- color: u("#F80101"),
2979
- label: "Rainstorm, last year"
2980
- },
2981
- {
2982
- gte: 25,
2983
- lte: 49.9,
2984
- color: u("#BEE202"),
2985
- label: "Heavy, last year"
2986
- },
2987
- {
2988
- gte: 10,
2989
- lte: 24.9,
2990
- color: u("#03F867"),
2991
- label: "Moderate, last year"
2992
- },
2993
- {
2994
- lt: 10,
2995
- color: u("#ACD2FF"),
2996
- label: "Light, last year"
2997
- }
2998
- ],
2999
- seriesIndex: 3,
3000
- dimension: 1
3001
- }
3002
- ],
3003
- series: [
3004
- {
3005
- name: "Wind",
3006
- type: "line",
3007
- data: (V = this.seasonalData) == null ? void 0 : V.windSpeed,
3008
- symbol: "none",
3009
- smooth: !1,
3010
- itemStyle: {
3011
- color: "#60c43e"
3012
- },
3013
- label: {
3014
- show: !1
3015
- }
3016
- },
3017
- {
3018
- name: "Wind, last year",
3019
- type: "line",
3020
- symbol: "none",
3021
- data: ($ = this.seasonalData) == null ? void 0 : $.lastYearWindSpeed,
3022
- itemStyle: {
3023
- color: "#9af77b"
3024
- },
3025
- lineStyle: {
3026
- color: "#9af77b"
3027
- // type: 'dashed',
3028
- },
3029
- label: {
3030
- show: !1
3031
- }
3032
- },
3033
- {
3034
- name: "Precip",
3035
- type: "bar",
3036
- yAxisIndex: 1,
3037
- barWidth: "30%",
3038
- data: (ee = this.seasonalData) == null ? void 0 : ee.precip,
3039
- symbol: "none",
3040
- smooth: !1,
3041
- itemStyle: {
3042
- color: "#0c73a8"
3043
- },
3044
- label: {
3045
- show: !1
3046
- }
3047
- },
3048
- {
3049
- name: "Precip, last year",
3050
- type: "bar",
3051
- yAxisIndex: 1,
3052
- barWidth: "30%",
3053
- data: (te = this.seasonalData) == null ? void 0 : te.lastYearPrecip,
3054
- itemStyle: {
3055
- color: "rgba(12,116,168,0.5)"
3056
- },
3057
- label: {
3058
- show: !1
3059
- }
3060
- }
3061
- ]
3062
- };
3063
- this.$nextTick(() => {
3064
- Be.init(document.getElementById("wind-precip-echart")).setOption(Y);
3065
- });
3066
- },
3067
- disposeEcharts() {
3068
- document.getElementById("weather-chart") && Be.dispose(document.getElementById("weather-chart")), document.getElementById("weather-icons") && Be.dispose(document.getElementById("weather-icons")), document.getElementById("weather-condition") && Be.dispose(document.getElementById("weather-condition")), document.getElementById("wave-swell") && Be.dispose(document.getElementById("wave-swell")), document.getElementById("temperature-echart") && Be.dispose(document.getElementById("temperature-echart")), document.getElementById("wind-precip-echart") && Be.dispose(document.getElementById("wind-precip-echart"));
3069
- },
3070
- initHoursTableData() {
3071
- var n, e, a, h, t, o, u, v, I, b, x, C, M, N, se, ae, le, Y, U, R, X, q, J, Z, V, $, ee, te, c, F, T, P, m, S;
3072
- this.hoursTableData = {
3073
- hours: [],
3074
- utcHours: [],
3075
- weatherUrls: [],
3076
- weatherNames: [],
3077
- temp: [],
3078
- precipProbability: [],
3079
- precip1h: [],
3080
- visibility: [],
3081
- humidity: [],
3082
- windSpeed: [],
3083
- windDir: [],
3084
- windGust: [],
3085
- sigwaveHeight: [],
3086
- sigwaveDir: [],
3087
- windwaveHeight: [],
3088
- windwaveDir: [],
3089
- windwavePeriod: [],
3090
- swellHeight: [],
3091
- swellDir: [],
3092
- swellPeriod: [],
3093
- currentSpeed: [],
3094
- currentDir: [],
3095
- seaLevel: [],
3096
- seaTemp: []
3097
- };
3098
- for (let k = 0; k < 24; k++) {
3099
- const L = H(this.pickedDate).clone().add(k, "h").format();
3100
- this.hoursTableData.hours.push(L);
3101
- const D = ((n = ke.pickHourly(this.meteoData, L)) == null ? void 0 : n[0]) || {};
3102
- this.hoursTableData.weatherUrls.push((e = D.weather) == null ? void 0 : e.url), this.hoursTableData.weatherNames.push(((a = D.weather) == null ? void 0 : a.name) ?? "-"), this.hoursTableData.temp.push(this.roundPrecision((h = D.weather) == null ? void 0 : h.temp, 0) ?? "-"), this.hoursTableData.precipProbability.push(this.roundPrecision((o = (t = D.weather) == null ? void 0 : t.precip) == null ? void 0 : o.probability, 1) ?? "-"), this.hoursTableData.precip1h.push(this.roundPrecision((v = (u = D.weather) == null ? void 0 : u.precip) == null ? void 0 : v.sum, 1) ?? "-"), this.hoursTableData.visibility.push(this.roundPrecision((I = D.weather) == null ? void 0 : I.visibility, 0) ?? "-"), this.hoursTableData.humidity.push(this.roundPrecision((b = D.weather) == null ? void 0 : b.rh, 0) ?? "-"), this.hoursTableData.windSpeed.push(this.roundPrecision((C = (x = D.weather) == null ? void 0 : x.wind) == null ? void 0 : C.kts, 1)), this.hoursTableData.windDir.push((N = (M = D.weather) == null ? void 0 : M.wind) == null ? void 0 : N.bearing), this.hoursTableData.windGust.push(this.roundPrecision((ae = (se = D.weather) == null ? void 0 : se.wind) == null ? void 0 : ae.gusts, 1) ?? "-"), this.hoursTableData.sigwaveHeight.push(this.roundPrecision((Y = (le = D.wave) == null ? void 0 : le.sig) == null ? void 0 : Y.height, 1) ?? "-"), this.hoursTableData.sigwaveDir.push((R = (U = D.wave) == null ? void 0 : U.sig) == null ? void 0 : R.bearing), this.hoursTableData.windwaveHeight.push(this.roundPrecision((q = (X = D.wave) == null ? void 0 : X.wd) == null ? void 0 : q.height, 1) ?? "-"), this.hoursTableData.windwaveDir.push((Z = (J = D.wave) == null ? void 0 : J.wd) == null ? void 0 : Z.bearing), this.hoursTableData.windwavePeriod.push(this.roundPrecision(($ = (V = D.wave) == null ? void 0 : V.wd) == null ? void 0 : $.period, 1) ?? "-"), this.hoursTableData.swellHeight.push(this.roundPrecision((te = (ee = D.wave) == null ? void 0 : ee.swell) == null ? void 0 : te.height, 1) ?? "-"), this.hoursTableData.swellDir.push((F = (c = D.wave) == null ? void 0 : c.swell) == null ? void 0 : F.bearing), this.hoursTableData.swellPeriod.push(this.roundPrecision((P = (T = D.wave) == null ? void 0 : T.swell) == null ? void 0 : P.period, 1) ?? "-"), this.hoursTableData.currentSpeed.push(this.roundPrecision((m = D.current) == null ? void 0 : m.speed, 1) ?? "-"), this.hoursTableData.currentDir.push((S = D.current) == null ? void 0 : S.bearing), this.hoursTableData.seaLevel.push(this.roundPrecision(D.height, 1) ?? "-"), this.hoursTableData.seaTemp.push(this.roundPrecision(D.sst, 0) ?? "-");
3103
- }
3104
- this.loading.hoursTable = !1;
3105
- },
3106
- handleClearHoursTable() {
3107
- this.position = {}, this.meteoData = {}, this.followItem = void 0, Be && document.getElementById("weather-chart") && Be.dispose(document.getElementById("weather-chart"));
3108
- },
3109
- initDaysTableData() {
3110
- var e, a, h, t, o, u, v, I, b, x, C, M, N, se, ae, le, Y, U, R, X, q, J, Z, V, $, ee, te, c, F, T, P, m, S, k, L, D, he;
3111
- this.daysTableData = [];
3112
- const n = W(this.etime).tz(this.positionGmt).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).format();
3113
- for (let de = 0; de < 14; de++) {
3114
- const Ae = H(n).clone().add(de, "d").format(), g = ((e = ke.pickDaily(this.meteoData, Ae)) == null ? void 0 : e[0]) || {};
3115
- this.daysTableData.push({
3116
- localWeek: this.computeWeekLT(Ae),
3117
- localDate: this.computeMMMDDLT(Ae),
3118
- weatherUrl: (a = g == null ? void 0 : g.weather) == null ? void 0 : a.url,
3119
- minTemp: this.roundPrecision((t = (h = g == null ? void 0 : g.weather) == null ? void 0 : h.temp) == null ? void 0 : t.min, 0) ?? "-",
3120
- maxTemp: this.roundPrecision((u = (o = g == null ? void 0 : g.weather) == null ? void 0 : o.temp) == null ? void 0 : u.max, 0) ?? "-",
3121
- weatherName: (v = g == null ? void 0 : g.weather) == null ? void 0 : v.name,
3122
- precipSum: this.roundPrecision((b = (I = g == null ? void 0 : g.weather) == null ? void 0 : I.precip) == null ? void 0 : b.sum, 1) ?? "-",
3123
- precipRainSum: this.roundPrecision((C = (x = g == null ? void 0 : g.weather) == null ? void 0 : x.precip) == null ? void 0 : C.rainSum, 1) ?? "-",
3124
- precipSnowfallSum: this.roundPrecision((N = (M = g == null ? void 0 : g.weather) == null ? void 0 : M.precip) == null ? void 0 : N.snowfallSum, 1) ?? "-",
3125
- windSpeedMax: this.roundPrecision((ae = (se = g == null ? void 0 : g.weather) == null ? void 0 : se.wind) == null ? void 0 : ae.kts, 1) ?? "-",
3126
- windSpeedDir: (Y = (le = g == null ? void 0 : g.weather) == null ? void 0 : le.wind) == null ? void 0 : Y.bearing,
3127
- gustSpeedMax: this.roundPrecision((R = (U = g == null ? void 0 : g.weather) == null ? void 0 : U.wind) == null ? void 0 : R.gusts, 1) ?? "-",
3128
- windWaveHeight: this.roundPrecision((q = (X = g == null ? void 0 : g.wave) == null ? void 0 : X.wd) == null ? void 0 : q.height, 1) ?? "-",
3129
- windWavePeriod: this.roundPrecision((Z = (J = g == null ? void 0 : g.wave) == null ? void 0 : J.wd) == null ? void 0 : Z.period, 1) ?? "-",
3130
- windWaveDir: ($ = (V = g == null ? void 0 : g.wave) == null ? void 0 : V.wd) == null ? void 0 : $.bearing,
3131
- swellWaveHeight: this.roundPrecision((te = (ee = g == null ? void 0 : g.wave) == null ? void 0 : ee.swell) == null ? void 0 : te.height, 1) ?? "-",
3132
- swellWavePeriod: this.roundPrecision((F = (c = g == null ? void 0 : g.wave) == null ? void 0 : c.swell) == null ? void 0 : F.period, 1) ?? "-",
3133
- swellWaveDir: (P = (T = g == null ? void 0 : g.wave) == null ? void 0 : T.swell) == null ? void 0 : P.bearing,
3134
- sigWaveHeight: this.roundPrecision((S = (m = g == null ? void 0 : g.wave) == null ? void 0 : m.sig) == null ? void 0 : S.height, 1) ?? "-",
3135
- sigWavePeriod: this.roundPrecision((L = (k = g == null ? void 0 : g.wave) == null ? void 0 : k.sig) == null ? void 0 : L.period, 1) ?? "-",
3136
- sigWaveDir: (he = (D = g == null ? void 0 : g.wave) == null ? void 0 : D.sig) == null ? void 0 : he.bearing
3137
- });
3138
- }
3139
- this.loading.daysTable = !1;
3140
- },
3141
- initHourlyTableData(n, e, a, h) {
3142
- var v, I, b, x, C, M, N, se, ae, le, Y, U, R, X, q, J, Z, V, $, ee, te, c, F, T, P, m, S, k, L, D, he, de, Ae, g, ue, E;
3143
- this.hourlyTableData = [];
3144
- const t = e || 14, o = a || this.etime, u = W(o).tz(this.positionGmt).set({ hour: 0, minute: 0, second: 0, millisecond: 0 }).format();
3145
- for (let z = 0; z < t * 24; z++) {
3146
- let _, ce;
3147
- if (z % 3 === 0 && (ce = 3), h ? z % 3 === 0 && (_ = H(u).clone().add(z, "h").format()) : z < 3 * 24 ? _ = H(u).clone().add(z, "h").format() : z < 7 * 24 ? z % 3 === 0 && (_ = H(u).clone().add(z, "h").format()) : z % 6 === 0 && (_ = H(u).clone().add(z, "h").format()), _) {
3148
- const A = ((v = ke.pickHourly(n, _)) == null ? void 0 : v[0]) || {}, O = ce === 6 ? this.roundPrecision((b = (I = A == null ? void 0 : A.weather) == null ? void 0 : I.precip) == null ? void 0 : b.sum6Hours, 1) : ce === 3 ? this.roundPrecision((C = (x = A == null ? void 0 : A.weather) == null ? void 0 : x.precip) == null ? void 0 : C.sum3Hours, 1) : "-";
3149
- this.hourlyTableData.push({
3150
- localDate: this.computeMMMDDHHmmLT(_),
3151
- temp: this.roundPrecision((M = A == null ? void 0 : A.weather) == null ? void 0 : M.temp, 0) ?? "-",
3152
- precipSum: O ?? "-",
3153
- visibility: this.roundPrecision((N = A == null ? void 0 : A.weather) == null ? void 0 : N.visibility, 1) ?? "-",
3154
- windSpeed: this.roundPrecision((ae = (se = A == null ? void 0 : A.weather) == null ? void 0 : se.wind) == null ? void 0 : ae.kts, 1) ?? "-",
3155
- windDir: (Y = (le = A == null ? void 0 : A.weather) == null ? void 0 : le.wind) == null ? void 0 : Y.direction,
3156
- windBearing: (R = (U = A == null ? void 0 : A.weather) == null ? void 0 : U.wind) == null ? void 0 : R.bearing,
3157
- windBF: ((q = (X = A == null ? void 0 : A.weather) == null ? void 0 : X.wind) == null ? void 0 : q.scale) ?? "-",
3158
- windGusts: this.roundPrecision((Z = (J = A == null ? void 0 : A.weather) == null ? void 0 : J.wind) == null ? void 0 : Z.gusts, 1) ?? "-",
3159
- windWaveHeight: this.roundPrecision(($ = (V = A == null ? void 0 : A.wave) == null ? void 0 : V.wd) == null ? void 0 : $.height, 1) ?? "-",
3160
- windWavePeriod: this.roundPrecision((te = (ee = A == null ? void 0 : A.wave) == null ? void 0 : ee.wd) == null ? void 0 : te.period, 1) ?? "-",
3161
- windWaveDir: (F = (c = A == null ? void 0 : A.wave) == null ? void 0 : c.wd) == null ? void 0 : F.direction,
3162
- windWaveBearing: (P = (T = A == null ? void 0 : A.wave) == null ? void 0 : T.wd) == null ? void 0 : P.bearing,
3163
- sigWaveHeight: this.roundPrecision((S = (m = A == null ? void 0 : A.wave) == null ? void 0 : m.sig) == null ? void 0 : S.height, 1) ?? "-",
3164
- sigWavePeriod: this.roundPrecision((L = (k = A == null ? void 0 : A.wave) == null ? void 0 : k.sig) == null ? void 0 : L.period, 1) ?? "-",
3165
- sigWaveDir: (he = (D = A == null ? void 0 : A.wave) == null ? void 0 : D.sig) == null ? void 0 : he.direction,
3166
- sigWaveBearing: (Ae = (de = A == null ? void 0 : A.wave) == null ? void 0 : de.sig) == null ? void 0 : Ae.bearing,
3167
- currentDir: (g = A == null ? void 0 : A.current) == null ? void 0 : g.direction,
3168
- currentSpd: this.roundPrecision((ue = A == null ? void 0 : A.current) == null ? void 0 : ue.kts, 1) ?? "-",
3169
- currentBearing: (E = A == null ? void 0 : A.current) == null ? void 0 : E.bearing,
3170
- seaLevel: this.roundPrecision(A == null ? void 0 : A.height, 1) ?? "-",
3171
- seaSurfaceTemp: this.roundPrecision(A == null ? void 0 : A.sst, 0) ?? "-"
3172
- });
3173
- }
3174
- }
3175
- this.loading.hourlyTable = !1;
3176
- },
3177
- async handleSelectMonth(n) {
3178
- this.currentMonth = n, await this.fetchSeasonalData(), this.initSeasonalEchart();
3179
- },
3180
- async handleDateRange() {
3181
- const { year0: n, month0: e, date0: a, year1: h, month1: t, date1: o } = {
3182
- year0: H(this.dateRange[0]).year(),
3183
- month0: H(this.dateRange[0]).month(),
3184
- date0: H(this.dateRange[0]).date(),
3185
- year1: H(this.dateRange[1]).year(),
3186
- month1: H(this.dateRange[1]).month(),
3187
- date1: H(this.dateRange[1]).date()
3188
- };
3189
- this.dateRangeZ = [
3190
- H(this.dateRangeZ[0]).set({ year: n, month: e, date: a }).utc().format(),
3191
- H(this.dateRangeZ[1]).set({ year: h, month: t, date: o }).utc().format()
3192
- ];
3193
- const u = H(this.dateRangeZ[1]).diff(H(this.dateRangeZ[0]), "d", !0) + 1;
3194
- await this.fetchHistoryMeteo(u), this.handleMeteogramData14(this.meteoData, u, this.dateRangeZ[0]), this.initHourlyTableData(this.meteoData, u, this.dateRangeZ[0], !0), this.selectDate = void 0;
3195
- },
3196
- handlePickDate(n) {
3197
- n[1] ? this.selectDate = null : this.selectDate = n[0].getTime();
3198
- }
3199
- }
3200
- }, ot = { class: "spot-report" }, nt = { class: "search-header-box" }, rt = { class: "search-header-box-inner flex-between" }, lt = { class: "search-box flex-start" }, At = { class: "menu-box flex-end" }, ht = { class: "content-box" }, dt = { class: "title-section flex-between" }, gt = { class: "main-title" }, ct = { class: "sub-title" }, wt = { key: 0 }, pt = { class: "flex-end" }, mt = {
3201
- key: 0,
3202
- class: "meteogram-echart-section"
3203
- }, ut = {
3204
- key: 0,
3205
- class: "card"
3206
- }, ft = { class: "title flex-start" }, vt = { style: { "margin-right": "5px" } }, yt = { class: "datetime-select-box" }, Dt = {
3207
- key: 1,
3208
- class: "card flex-center"
3209
- }, Bt = {
3210
- key: 2,
3211
- class: "card flex-center"
3212
- }, xt = {
3213
- key: 1,
3214
- class: "weather-echart-section"
3215
- }, bt = {
3216
- key: 0,
3217
- id: "weather-chart",
3218
- class: "weather-chart"
3219
- }, Ct = {
3220
- key: 1,
3221
- class: "weather-chart weather-chart-loading flex-center"
3222
- }, It = {
3223
- key: 2,
3224
- class: "weather-chart flex-center"
3225
- }, Et = {
3226
- key: 2,
3227
- class: "hours-table-section",
3228
- style: { border: "1px solid var(--idm-gray-light)" }
3229
- }, Qt = {
3230
- key: 0,
3231
- class: "card"
3232
- }, Mt = { class: "date" }, kt = { class: "basic-table" }, Lt = { class: "day" }, zt = { class: "hour" }, Ht = { class: "icon" }, Pt = ["src"], Nt = { class: "text" }, Tt = { class: "text" }, Gt = { class: "text" }, St = { class: "text" }, Ft = { class: "text" }, _t = { class: "text" }, Ot = { key: 1 }, Yt = { class: "text" }, jt = { class: "text" }, Kt = { class: "wave-current-table" }, Ut = { class: "text" }, Wt = { class: "text" }, Rt = { key: 1 }, Xt = { class: "text" }, qt = { class: "text" }, Jt = { class: "text" }, Zt = { key: 1 }, Vt = { class: "text" }, $t = { class: "text" }, es = { class: "text" }, ts = { key: 1 }, ss = { class: "text" }, as = { class: "sea-table" }, is = { class: "text" }, os = { class: "text" }, ns = {
3233
- key: 1,
3234
- class: "card card-loading flex-center"
3235
- }, rs = {
3236
- key: 2,
3237
- class: "card flex-center"
3238
- }, ls = {
3239
- key: 3,
3240
- class: "days-table-section"
3241
- }, As = {
3242
- key: 0,
3243
- class: "card"
3244
- }, hs = { class: "conditions-table" }, ds = {
3245
- rowspan: "1",
3246
- colspan: "1",
3247
- class: "tr-title font-gray",
3248
- style: { "text-align": "right", "padding-right": "10px", "box-sizing": "border-box" }
3249
- }, gs = {
3250
- rowspan: "1",
3251
- colspan: "1"
3252
- }, cs = ["src"], ws = {
3253
- rowspan: "1",
3254
- colspan: "1",
3255
- class: "text-align-left"
3256
- }, ps = {
3257
- rowspan: "1",
3258
- colspan: "1",
3259
- class: "text-align-left"
3260
- }, ms = {
3261
- rowspan: "1",
3262
- colspan: "1",
3263
- class: "text-align-left"
3264
- }, us = {
3265
- rowspan: "1",
3266
- colspan: "1",
3267
- class: "text-align-left"
3268
- }, fs = {
3269
- rowspan: "1",
3270
- colspan: "1",
3271
- class: "text-align-left"
3272
- }, vs = {
3273
- rowspan: "1",
3274
- colspan: "1",
3275
- class: "text-align-right",
3276
- style: { "padding-right": "30px" }
3277
- }, ys = { key: 1 }, Ds = {
3278
- rowspan: "1",
3279
- colspan: "1",
3280
- class: "text-align-right",
3281
- style: { "padding-right": "25px" }
3282
- }, Bs = {
3283
- rowspan: "1",
3284
- colspan: "1",
3285
- class: "text-align-right",
3286
- style: { "padding-right": "30px" }
3287
- }, xs = { key: 1 }, bs = {
3288
- rowspan: "1",
3289
- colspan: "1",
3290
- class: "text-align-right",
3291
- style: { "padding-right": "30px" }
3292
- }, Cs = { key: 1 }, Is = {
3293
- rowspan: "1",
3294
- colspan: "1",
3295
- class: "text-align-right",
3296
- style: { "padding-right": "30px" }
3297
- }, Es = { key: 1 }, Qs = {
3298
- key: 1,
3299
- class: "card card-loading flex-center"
3300
- }, Ms = {
3301
- key: 2,
3302
- class: "card flex-center"
3303
- }, ks = {
3304
- key: 4,
3305
- class: "hourly-table-section"
3306
- }, Ls = {
3307
- key: 0,
3308
- class: "card"
3309
- }, zs = { class: "conditions-table" }, Hs = {
3310
- rowspan: "1",
3311
- colspan: "1",
3312
- class: "border"
3313
- }, Ps = {
3314
- rowspan: "1",
3315
- colspan: "1",
3316
- class: "border"
3317
- }, Ns = {
3318
- rowspan: "1",
3319
- colspan: "1",
3320
- class: "border"
3321
- }, Ts = {
3322
- rowspan: "1",
3323
- colspan: "1",
3324
- class: "border"
3325
- }, Gs = {
3326
- rowspan: "1",
3327
- colspan: "1",
3328
- class: "border",
3329
- style: { "font-size": "11px", "text-align": "right", "padding-right": "3px" }
3330
- }, Ss = { key: 1 }, Fs = {
3331
- rowspan: "1",
3332
- colspan: "1",
3333
- class: "border"
3334
- }, _s = {
3335
- rowspan: "1",
3336
- colspan: "1",
3337
- class: "border"
3338
- }, Os = {
3339
- rowspan: "1",
3340
- colspan: "1",
3341
- class: "border"
3342
- }, Ys = {
3343
- rowspan: "1",
3344
- colspan: "1",
3345
- class: "border",
3346
- style: { "font-size": "11px", "text-align": "right", "padding-right": "3px" }
3347
- }, js = { key: 1 }, Ks = {
3348
- rowspan: "1",
3349
- colspan: "1",
3350
- class: "border"
3351
- }, Us = {
3352
- rowspan: "1",
3353
- colspan: "1",
3354
- class: "border"
3355
- }, Ws = {
3356
- rowspan: "1",
3357
- colspan: "1",
3358
- class: "border",
3359
- style: { "font-size": "11px", "text-align": "right", "padding-right": "3px" }
3360
- }, Rs = { key: 1 }, Xs = {
3361
- rowspan: "1",
3362
- colspan: "1",
3363
- class: "border"
3364
- }, qs = {
3365
- rowspan: "1",
3366
- colspan: "1",
3367
- class: "border"
3368
- }, Js = {
3369
- rowspan: "1",
3370
- colspan: "1",
3371
- class: "border",
3372
- style: { "font-size": "11px", "text-align": "right", "padding-right": "3px" }
3373
- }, Zs = { key: 1 }, Vs = {
3374
- rowspan: "1",
3375
- colspan: "1",
3376
- class: "border"
3377
- }, $s = {
3378
- rowspan: "1",
3379
- colspan: "1",
3380
- class: "border"
3381
- }, ea = {
3382
- rowspan: "1",
3383
- colspan: "1",
3384
- class: "border"
3385
- }, ta = {
3386
- key: 1,
3387
- class: "card card-loading flex-center"
3388
- }, sa = {
3389
- key: 2,
3390
- class: "card flex-center"
3391
- }, aa = {
3392
- key: 5,
3393
- class: "seasonal-weather-section"
3394
- }, ia = {
3395
- key: 0,
3396
- class: "card flex-space"
3397
- }, oa = {
3398
- class: "echart-box",
3399
- style: {}
3400
- }, na = { style: { cursor: "pointer" } }, ra = { style: { padding: "3px 0 0 5px", cursor: "pointer" } }, la = { class: "months-select-box" }, Aa = { class: "bg-select" }, ha = ["onClick"], da = { class: "flex-col-start-start right-bar" }, ga = {
3401
- class: "",
3402
- style: { "font-size": "16px", "font-weight": "bold", "margin-bottom": "20px" }
3403
- }, ca = { class: "text" }, wa = { class: "text" }, pa = { class: "text" }, ma = { class: "text" }, ua = { class: "text" }, fa = { class: "text" }, va = { class: "text" }, ya = { class: "text" }, Da = { class: "text" }, Ba = { class: "text" }, xa = { class: "text" }, ba = { class: "text" }, Ca = {
3404
- key: 1,
3405
- class: "card flex-center"
3406
- }, Ia = {
3407
- key: 2,
3408
- class: "card flex-center"
3409
- }, Ea = {
3410
- key: 0,
3411
- class: "info-box-item flex-start"
3412
- }, Qa = { class: "text" }, Ma = { class: "info-box-item flex-start" }, ka = { class: "text" }, La = { class: "info-box-item flex-start" }, za = {
3413
- key: 1,
3414
- class: "text"
3415
- }, Ha = { class: "info-box-item flex-center" };
3416
- function Pa(n, e, a, h, t, o) {
3417
- var Y, U, R, X, q, J, Z, V, $, ee, te, c, F, T, P, m, S, k, L, D, he, de, Ae, g, ue, E, z, _, ce, A, O, ie, Q, re, j, d, f, K, y, ve, G, oe, fe, B;
3418
- const u = Ie("ElOption"), v = Ie("ElSelect"), I = Ie("ElTooltip"), b = Ie("Calendar"), x = Ie("el-icon"), C = Ie("ArrowRightBold"), M = Ie("ElIcon"), N = Ie("el-date-picker"), se = Ie("ElInput"), ae = Ie("ElButton"), le = Ie("ElDialog");
3419
- return r(), l("div", ot, [
3420
- s("div", nt, [
3421
- s("div", rt, [
3422
- s("div", lt, [
3423
- be(v, {
3424
- modelValue: t.searchName,
3425
- "onUpdate:modelValue": e[0] || (e[0] = (i) => t.searchName = i),
3426
- filterable: "",
3427
- class: "input",
3428
- clearable: "",
3429
- remote: "",
3430
- placeholder: t.placeholder,
3431
- autocomplete: "",
3432
- "remote-show-suffix": "",
3433
- "remote-method": o.fetchSuggestPosition,
3434
- onFocus: o.handleSearchFocus,
3435
- onBlur: e[1] || (e[1] = (i) => t.placeholder = "search for port name or coordinates"),
3436
- onChange: o.handleSearch
3437
- }, {
3438
- default: Qe(() => [
3439
- (r(!0), l(we, null, pe(t.positionList, (i) => (r(), Pe(u, {
3440
- key: i.name,
3441
- label: i.nameRemark,
3442
- value: i.name
3443
- }, null, 8, ["label", "value"]))), 128))
3444
- ]),
3445
- _: 1
3446
- }, 8, ["modelValue", "placeholder", "remote-method", "onFocus", "onChange"]),
3447
- be(v, {
3448
- modelValue: t.forecastModel,
3449
- "onUpdate:modelValue": e[2] || (e[2] = (i) => t.forecastModel = i),
3450
- filterable: "",
3451
- class: "input",
3452
- clearable: "",
3453
- placeholder: "Forecast Model",
3454
- style: { width: "150px", "margin-left": "10px" },
3455
- onChange: o.handleModelChange
3456
- }, {
3457
- default: Qe(() => [
3458
- (r(!0), l(we, null, pe(t.modelList, (i) => (r(), Pe(u, {
3459
- key: i,
3460
- label: i,
3461
- value: i
3462
- }, null, 8, ["label", "value"]))), 128))
3463
- ]),
3464
- _: 1
3465
- }, 8, ["modelValue", "onChange"])
3466
- ]),
3467
- s("div", At, [
3468
- s("div", {
3469
- class: me(["item flex-center", t.menuIndex === 1 ? "active" : ""]),
3470
- onClick: e[3] || (e[3] = (i) => t.menuIndex = 1)
3471
- }, "History", 2),
3472
- s("div", {
3473
- class: me(["item flex-center", t.menuIndex === 2 ? "active" : ""]),
3474
- onClick: e[4] || (e[4] = (i) => t.menuIndex = 2)
3475
- }, "7-Day Forecast", 2),
3476
- s("div", {
3477
- class: me(["item flex-center", t.menuIndex === 3 ? "active" : ""]),
3478
- onClick: e[5] || (e[5] = (i) => t.menuIndex = 3)
3479
- }, "14-Day Forecast", 2),
3480
- s("div", {
3481
- class: me(["item flex-center", t.menuIndex === 4 ? "active" : ""]),
3482
- onClick: e[6] || (e[6] = (i) => t.menuIndex = 4)
3483
- }, "Seasonal Forecast", 2)
3484
- ])
3485
- ])
3486
- ]),
3487
- s("div", ht, [
3488
- s("div", dt, [
3489
- s("div", null, [
3490
- s("div", gt, p(t.menuIndex === 4 ? "Seasonal" : "") + " Weather forecast for " + p(((Y = t.position) == null ? void 0 : Y.name) || "-") + " ( UTC" + p(t.positionOffset) + " )", 1),
3491
- s("div", ct, [
3492
- ne(" At " + p((U = t.position) != null && U.portId ? "port" : "coordinates"), 1),
3493
- (R = t.position) != null && R.portId ? (r(), l("span", wt, ", " + p(o.computeLat(t.position.lat)) + ", " + p(o.computeLng(t.position.lng)), 1)) : Me("", !0),
3494
- ne(", issued " + p(t.issuedDate), 1)
3495
- ])
3496
- ]),
3497
- s("div", pt, [
3498
- be(I, {
3499
- placement: "left",
3500
- effect: "light",
3501
- content: t.followItem ? "Remove the Port/Coordinate from My Follows" : "Add the Port/Coordinate to My Follows",
3502
- "show-after": 1e3
3503
- }, {
3504
- default: Qe(() => [
3505
- t.followItem ? (r(), l("span", {
3506
- key: 0,
3507
- class: "iconfont icon active",
3508
- onClick: e[7] || (e[7] = (...i) => o.handleFollowDialogOpen && o.handleFollowDialogOpen(...i))
3509
- }, "")) : (r(), l("span", {
3510
- key: 1,
3511
- class: "iconfont icon",
3512
- onClick: e[8] || (e[8] = (...i) => o.handleFollowDialogOpen && o.handleFollowDialogOpen(...i))
3513
- }, ""))
3514
- ]),
3515
- _: 1
3516
- }, 8, ["content"])
3517
- ])
3518
- ]),
3519
- t.menuIndex === 1 || t.menuIndex === 2 || t.menuIndex === 3 ? (r(), l("div", mt, [
3520
- (X = t.position) != null && X.name && a.token && !((q = t.loading) != null && q.meteogramEchart) ? (r(), l("div", ut, [
3521
- s("div", ft, [
3522
- e[15] || (e[15] = s("div", { style: { "margin-right": "20px" } }, "Meteogram", -1)),
3523
- Oe(s("div", {
3524
- id: "history-date-title",
3525
- class: "flex-space",
3526
- style: { cursor: "pointer" },
3527
- onClick: e[9] || (e[9] = (i) => t.meteoData.showDateSelect = !t.meteoData.showDateSelect)
3528
- }, [
3529
- be(x, {
3530
- size: "16",
3531
- style: { "margin-right": "10px" }
3532
- }, {
3533
- default: Qe(() => [
3534
- be(b)
3535
- ]),
3536
- _: 1
3537
- }),
3538
- s("span", vt, p(o.computeMMMDDyyyyLT(t.dateRangeZ[0])) + " ~ " + p(o.computeMMMDDyyyyLT(t.dateRangeZ[1])), 1),
3539
- be(M, { size: "16" }, {
3540
- default: Qe(() => [
3541
- be(C)
3542
- ]),
3543
- _: 1
3544
- })
3545
- ], 512), [
3546
- [Ye, t.menuIndex === 1]
3547
- ]),
3548
- Oe(s("div", yt, [
3549
- be(N, {
3550
- modelValue: t.dateRange,
3551
- "onUpdate:modelValue": e[10] || (e[10] = (i) => t.dateRange = i),
3552
- type: "daterange",
3553
- "range-separator": "~",
3554
- "start-placeholder": "Start date",
3555
- "end-placeholder": "End date",
3556
- shortcuts: t.datePickerOptions.shortcuts,
3557
- disabledDate: t.datePickerOptions.disabledDate,
3558
- onCalendarChange: o.handlePickDate,
3559
- onChange: o.handleDateRange
3560
- }, null, 8, ["modelValue", "shortcuts", "disabledDate", "onCalendarChange", "onChange"])
3561
- ], 512), [
3562
- [Ye, ((J = t.meteoData) == null ? void 0 : J.showDateSelect) && t.menuIndex === 1]
3563
- ])
3564
- ]),
3565
- e[16] || (e[16] = s("div", { id: "weather-icons" }, null, -1)),
3566
- e[17] || (e[17] = s("div", { id: "weather-condition" }, null, -1)),
3567
- e[18] || (e[18] = s("div", { id: "wave-swell" }, null, -1))
3568
- ])) : (Z = t.loading) != null && Z.meteogramEchart ? (r(), l("div", Dt, e[19] || (e[19] = [
3569
- s("img", {
3570
- style: { height: "200px" },
3571
- src: He
3572
- }, null, -1)
3573
- ]))) : (r(), l("div", Bt, "No Data"))
3574
- ])) : Me("", !0),
3575
- t.menuIndex === 2 ? (r(), l("div", xt, [
3576
- (V = t.position) != null && V.name && a.token && !(($ = t.loading) != null && $.weatherEchart) ? (r(), l("div", bt)) : (ee = t.loading) != null && ee.weatherEchart ? (r(), l("div", Ct, e[20] || (e[20] = [
3577
- s("img", {
3578
- style: { height: "200px" },
3579
- src: He
3580
- }, null, -1)
3581
- ]))) : (r(), l("div", It, "No Data"))
3582
- ])) : Me("", !0),
3583
- t.menuIndex === 2 ? (r(), l("div", Et, [
3584
- (te = t.position) != null && te.name && a.token && !((c = t.loading) != null && c.hoursTable) ? (r(), l("div", Qt, [
3585
- s("div", Mt, p(t.pickedWeek) + " " + p(o.computeMMMDDLT(t.pickedDate)), 1),
3586
- s("table", kt, [
3587
- s("tr", Lt, [
3588
- e[21] || (e[21] = s("th", {
3589
- rowspan: "1",
3590
- colspan: "1",
3591
- class: "td-title"
3592
- }, [
3593
- ne("Local time"),
3594
- s("span", { class: "unit" }, "(LT)")
3595
- ], -1)),
3596
- (r(!0), l(we, null, pe(t.hoursTableData.hours, (i, w) => (r(), l("th", {
3597
- key: `${i}${w}hoursLT`,
3598
- rowspan: "1",
3599
- colspan: "1",
3600
- class: me(t.activeIndex === w ? "active" : "")
3601
- }, p(o.computeHourLT(i)), 3))), 128))
3602
- ]),
3603
- s("tr", zt, [
3604
- e[22] || (e[22] = s("th", {
3605
- rowspan: "1",
3606
- colspan: "1",
3607
- class: "td-title"
3608
- }, [
3609
- ne("UTC"),
3610
- s("span", { class: "unit" })
3611
- ], -1)),
3612
- (r(!0), l(we, null, pe(t.hoursTableData.hours, (i, w) => (r(), l("th", {
3613
- key: `${i}${w}hoursLZ`,
3614
- rowspan: "1",
3615
- colspan: "1",
3616
- class: me(t.activeIndex === w ? "active" : "")
3617
- }, p(o.computeHourZ(i)), 3))), 128))
3618
- ]),
3619
- s("tr", Ht, [
3620
- e[23] || (e[23] = s("td", {
3621
- rowspan: "1",
3622
- colspan: "1",
3623
- class: "td-title"
3624
- }, [
3625
- ne("Weather"),
3626
- s("span", { class: "unit" })
3627
- ], -1)),
3628
- (r(!0), l(we, null, pe(t.hoursTableData.weatherUrls, (i, w) => (r(), l("td", {
3629
- key: `${i}${w}weatherUrls-weatherNames`,
3630
- rowspan: "1",
3631
- colspan: "1",
3632
- class: me(t.activeIndex === w ? "active" : "")
3633
- }, [
3634
- be(I, {
3635
- placement: "top",
3636
- effect: "light",
3637
- content: t.hoursTableData.weatherNames[w],
3638
- "show-after": 500
3639
- }, {
3640
- default: Qe(() => [
3641
- i ? (r(), l("img", {
3642
- key: 0,
3643
- class: "iconfont weather-icon",
3644
- src: i
3645
- }, null, 8, Pt)) : Me("", !0)
3646
- ]),
3647
- _: 2
3648
- }, 1032, ["content"])
3649
- ], 2))), 128))
3650
- ]),
3651
- s("tr", Nt, [
3652
- e[24] || (e[24] = s("td", {
3653
- rowspan: "1",
3654
- colspan: "1",
3655
- class: "td-title"
3656
- }, [
3657
- ne("Temperature"),
3658
- s("span", { class: "unit" }, "°C")
3659
- ], -1)),
3660
- (r(!0), l(we, null, pe(t.hoursTableData.temp, (i, w) => (r(), l("td", {
3661
- key: `${i}${w}temp`,
3662
- rowspan: "1",
3663
- colspan: "1",
3664
- class: me(t.activeIndex === w ? "active" : "")
3665
- }, p(i), 3))), 128))
3666
- ]),
3667
- s("tr", Tt, [
3668
- e[25] || (e[25] = s("td", {
3669
- rowspan: "1",
3670
- colspan: "1",
3671
- class: "td-title"
3672
- }, [
3673
- ne("Precipitation Probability"),
3674
- s("span", { class: "unit" }, "%")
3675
- ], -1)),
3676
- (r(!0), l(we, null, pe(t.hoursTableData.precipProbability, (i, w) => (r(), l("td", {
3677
- key: `${i}${w}precipProbability`,
3678
- rowspan: "1",
3679
- colspan: "1",
3680
- class: me(t.activeIndex === w ? "active" : "")
3681
- }, p(i), 3))), 128))
3682
- ]),
3683
- s("tr", Gt, [
3684
- e[26] || (e[26] = s("td", {
3685
- rowspan: "1",
3686
- colspan: "1",
3687
- class: "td-title"
3688
- }, [
3689
- ne("Precipitation 1h"),
3690
- s("span", { class: "unit" }, "mm")
3691
- ], -1)),
3692
- (r(!0), l(we, null, pe(t.hoursTableData.precip1h, (i, w) => (r(), l("td", {
3693
- key: `${i}${w}precip1h`,
3694
- rowspan: "1",
3695
- colspan: "1",
3696
- class: me(t.activeIndex === w ? "active" : "")
3697
- }, p(i), 3))), 128))
3698
- ]),
3699
- s("tr", St, [
3700
- e[27] || (e[27] = s("td", {
3701
- rowspan: "1",
3702
- colspan: "1",
3703
- class: "td-title"
3704
- }, [
3705
- ne("Visibility"),
3706
- s("span", { class: "unit" }, "nm")
3707
- ], -1)),
3708
- (r(!0), l(we, null, pe(t.hoursTableData.visibility, (i, w) => (r(), l("td", {
3709
- key: `${i}${w}visibility`,
3710
- rowspan: "1",
3711
- colspan: "1",
3712
- class: me(t.activeIndex === w ? "active" : "")
3713
- }, p(i), 3))), 128))
3714
- ]),
3715
- s("tr", Ft, [
3716
- e[28] || (e[28] = s("td", {
3717
- rowspan: "1",
3718
- colspan: "1",
3719
- class: "td-title"
3720
- }, [
3721
- ne("Relative Humidity"),
3722
- s("span", { class: "unit" }, "%")
3723
- ], -1)),
3724
- (r(!0), l(we, null, pe(t.hoursTableData.humidity, (i, w) => (r(), l("td", {
3725
- key: `${i}${w}humidity`,
3726
- rowspan: "1",
3727
- colspan: "1",
3728
- class: me(t.activeIndex === w ? "active" : "")
3729
- }, p(i), 3))), 128))
3730
- ]),
3731
- s("tr", _t, [
3732
- e[29] || (e[29] = s("td", {
3733
- rowspan: "1",
3734
- colspan: "1",
3735
- class: "td-title"
3736
- }, [
3737
- ne("Wind direction"),
3738
- s("span", { class: "unit" })
3739
- ], -1)),
3740
- (r(!0), l(we, null, pe(t.hoursTableData.windDir, (i, w) => (r(), l("td", {
3741
- key: `${i}${w}windDir`,
3742
- rowspan: "1",
3743
- colspan: "1",
3744
- class: me(t.activeIndex === w ? "active" : "")
3745
- }, [
3746
- isNaN(i) ? (r(), l("span", Ot, "-")) : (r(), l("span", {
3747
- key: 0,
3748
- class: "iconfont icon",
3749
- style: Ce({ display: "inline-block", transform: `rotate(${i}deg)` })
3750
- }, "", 4))
3751
- ], 2))), 128))
3752
- ]),
3753
- s("tr", Yt, [
3754
- e[30] || (e[30] = s("td", {
3755
- rowspan: "1",
3756
- colspan: "1",
3757
- class: "td-title"
3758
- }, [
3759
- ne("Wind speed"),
3760
- s("span", { class: "unit" }, "kts")
3761
- ], -1)),
3762
- (r(!0), l(we, null, pe(t.hoursTableData.windSpeed, (i, w) => (r(), l("td", {
3763
- key: `${i}${w}windSpeed`,
3764
- rowspan: "1",
3765
- colspan: "1",
3766
- class: me(t.activeIndex === w ? "active" : "")
3767
- }, p(i), 3))), 128))
3768
- ]),
3769
- s("tr", jt, [
3770
- e[31] || (e[31] = s("td", {
3771
- rowspan: "1",
3772
- colspan: "1",
3773
- class: "td-title"
3774
- }, [
3775
- ne("Wind gust"),
3776
- s("span", { class: "unit" }, "kts")
3777
- ], -1)),
3778
- (r(!0), l(we, null, pe(t.hoursTableData.windGust, (i, w) => (r(), l("td", {
3779
- key: `${i}${w}windGust`,
3780
- rowspan: "1",
3781
- colspan: "1",
3782
- class: me(t.activeIndex === w ? "active" : "")
3783
- }, p(i), 3))), 128))
3784
- ])
3785
- ]),
3786
- e[43] || (e[43] = s("div", { style: { "text-align": "center", padding: "3px" } }, null, -1)),
3787
- s("table", Kt, [
3788
- s("tr", Ut, [
3789
- e[32] || (e[32] = s("td", {
3790
- rowspan: "1",
3791
- colspan: "1",
3792
- class: "td-title"
3793
- }, [
3794
- ne("Wind wave height"),
3795
- s("span", { class: "unit" }, "m")
3796
- ], -1)),
3797
- (r(!0), l(we, null, pe(t.hoursTableData.windwaveHeight, (i, w) => (r(), l("td", {
3798
- key: `${i}${w}windwaveHeight`,
3799
- rowspan: "1",
3800
- colspan: "1",
3801
- class: me(t.activeIndex === w ? "active" : "")
3802
- }, p(i), 3))), 128))
3803
- ]),
3804
- s("tr", Wt, [
3805
- e[33] || (e[33] = s("td", {
3806
- rowspan: "1",
3807
- colspan: "1",
3808
- class: "td-title"
3809
- }, [
3810
- ne("Wind wave direction"),
3811
- s("span", { class: "unit" })
3812
- ], -1)),
3813
- (r(!0), l(we, null, pe(t.hoursTableData.windwaveDir, (i, w) => (r(), l("td", {
3814
- key: `${i}${w}windwaveDir`,
3815
- rowspan: "1",
3816
- colspan: "1",
3817
- class: me(t.activeIndex === w ? "active" : "")
3818
- }, [
3819
- isNaN(i) ? (r(), l("span", Rt, "-")) : (r(), l("span", {
3820
- key: 0,
3821
- class: "iconfont icon",
3822
- style: Ce({ display: "inline-block", transform: `rotate(${i}deg)` })
3823
- }, "", 4))
3824
- ], 2))), 128))
3825
- ]),
3826
- s("tr", Xt, [
3827
- e[34] || (e[34] = s("td", {
3828
- rowspan: "1",
3829
- colspan: "1",
3830
- class: "td-title"
3831
- }, [
3832
- ne("Wind wave period"),
3833
- s("span", { class: "unit" }, "s")
3834
- ], -1)),
3835
- (r(!0), l(we, null, pe(t.hoursTableData.windwavePeriod, (i, w) => (r(), l("td", {
3836
- key: `${i}${w}windwavePeriod`,
3837
- rowspan: "1",
3838
- colspan: "1",
3839
- class: me(t.activeIndex === w ? "active" : "")
3840
- }, p(i), 3))), 128))
3841
- ]),
3842
- s("tr", qt, [
3843
- e[35] || (e[35] = s("td", {
3844
- rowspan: "1",
3845
- colspan: "1",
3846
- class: "td-title"
3847
- }, [
3848
- ne("Swell height"),
3849
- s("span", { class: "unit" }, "m")
3850
- ], -1)),
3851
- (r(!0), l(we, null, pe(t.hoursTableData.swellHeight, (i, w) => (r(), l("td", {
3852
- key: `${i}${w}swellHeight`,
3853
- rowspan: "1",
3854
- colspan: "1",
3855
- class: me(t.activeIndex === w ? "active" : "")
3856
- }, p(i), 3))), 128))
3857
- ]),
3858
- s("tr", Jt, [
3859
- e[36] || (e[36] = s("td", {
3860
- rowspan: "1",
3861
- colspan: "1",
3862
- class: "td-title"
3863
- }, [
3864
- ne("Swell direction"),
3865
- s("span", { class: "unit" })
3866
- ], -1)),
3867
- (r(!0), l(we, null, pe(t.hoursTableData.swellDir, (i, w) => (r(), l("td", {
3868
- key: `${i}${w}swellDir`,
3869
- rowspan: "1",
3870
- colspan: "1",
3871
- class: me(t.activeIndex === w ? "active" : "")
3872
- }, [
3873
- isNaN(i) ? (r(), l("span", Zt, "-")) : (r(), l("span", {
3874
- key: 0,
3875
- class: "iconfont icon",
3876
- style: Ce({ display: "inline-block", transform: `rotate(${i}deg)` })
3877
- }, "", 4))
3878
- ], 2))), 128))
3879
- ]),
3880
- s("tr", Vt, [
3881
- e[37] || (e[37] = s("td", {
3882
- rowspan: "1",
3883
- colspan: "1",
3884
- class: "td-title"
3885
- }, [
3886
- ne("Swell period"),
3887
- s("span", { class: "unit" }, "s")
3888
- ], -1)),
3889
- (r(!0), l(we, null, pe(t.hoursTableData.swellPeriod, (i, w) => (r(), l("td", {
3890
- key: `${i}${w}swellPeriod`,
3891
- rowspan: "1",
3892
- colspan: "1",
3893
- class: me(t.activeIndex === w ? "active" : "")
3894
- }, p(i), 3))), 128))
3895
- ]),
3896
- s("tr", $t, [
3897
- e[38] || (e[38] = s("td", {
3898
- rowspan: "1",
3899
- colspan: "1",
3900
- class: "td-title"
3901
- }, [
3902
- ne("Sig wave height"),
3903
- s("span", { class: "unit" }, "m")
3904
- ], -1)),
3905
- (r(!0), l(we, null, pe(t.hoursTableData.sigwaveHeight, (i, w) => (r(), l("td", {
3906
- key: `${i}${w}sigwaveHeight`,
3907
- rowspan: "1",
3908
- colspan: "1",
3909
- class: me(t.activeIndex === w ? "active" : "")
3910
- }, p(i), 3))), 128))
3911
- ]),
3912
- s("tr", es, [
3913
- e[39] || (e[39] = s("td", {
3914
- rowspan: "1",
3915
- colspan: "1",
3916
- class: "td-title"
3917
- }, [
3918
- ne("Current direction"),
3919
- s("span", { class: "unit" })
3920
- ], -1)),
3921
- (r(!0), l(we, null, pe(t.hoursTableData.currentDir, (i, w) => (r(), l("td", {
3922
- key: `${i}${w}currentDir`,
3923
- rowspan: "1",
3924
- colspan: "1",
3925
- class: me(t.activeIndex === w ? "active" : "")
3926
- }, [
3927
- isNaN(i) ? (r(), l("span", ts, "-")) : (r(), l("span", {
3928
- key: 0,
3929
- class: "iconfont icon",
3930
- style: Ce({ display: "inline-block", transform: `rotate(${i}deg)` })
3931
- }, "", 4))
3932
- ], 2))), 128))
3933
- ]),
3934
- s("tr", ss, [
3935
- e[40] || (e[40] = s("td", {
3936
- rowspan: "1",
3937
- colspan: "1",
3938
- class: "td-title"
3939
- }, [
3940
- ne("Current speed"),
3941
- s("span", { class: "unit" }, "kts")
3942
- ], -1)),
3943
- (r(!0), l(we, null, pe(t.hoursTableData.currentSpeed, (i, w) => (r(), l("td", {
3944
- key: `${i}${w}currentSpeed`,
3945
- rowspan: "1",
3946
- colspan: "1",
3947
- class: me(t.activeIndex === w ? "active" : "")
3948
- }, p(i), 3))), 128))
3949
- ])
3950
- ]),
3951
- e[44] || (e[44] = s("div", { style: { "text-align": "center", padding: "3px" } }, null, -1)),
3952
- s("table", as, [
3953
- s("tr", is, [
3954
- e[41] || (e[41] = s("td", {
3955
- rowspan: "1",
3956
- colspan: "1",
3957
- class: "td-title"
3958
- }, [
3959
- ne("Sea level height"),
3960
- s("span", { class: "unit" }, "m")
3961
- ], -1)),
3962
- (r(!0), l(we, null, pe(t.hoursTableData.seaLevel, (i, w) => (r(), l("td", {
3963
- key: `${i}${w}seaLevel`,
3964
- rowspan: "1",
3965
- colspan: "1",
3966
- class: me(t.activeIndex === w ? "active" : "")
3967
- }, p(i), 3))), 128))
3968
- ]),
3969
- s("tr", os, [
3970
- e[42] || (e[42] = s("td", {
3971
- rowspan: "1",
3972
- colspan: "1",
3973
- class: "td-title"
3974
- }, [
3975
- ne("Sea surface temperature"),
3976
- s("span", { class: "unit" }, "°C")
3977
- ], -1)),
3978
- (r(!0), l(we, null, pe(t.hoursTableData.seaTemp, (i, w) => (r(), l("td", {
3979
- key: `${i}${w}seaTemp`,
3980
- rowspan: "1",
3981
- colspan: "1",
3982
- class: me(t.activeIndex === w ? "active" : "")
3983
- }, p(i), 3))), 128))
3984
- ])
3985
- ])
3986
- ])) : (F = t.loading) != null && F.hoursTable ? (r(), l("div", ns, e[45] || (e[45] = [
3987
- s("img", {
3988
- style: { height: "200px" },
3989
- src: He
3990
- }, null, -1)
3991
- ]))) : (r(), l("div", rs, "No Data"))
3992
- ])) : Me("", !0),
3993
- t.menuIndex === 3 ? (r(), l("div", ls, [
3994
- (T = t.position) != null && T.name && a.token && !((P = t.loading) != null && P.daysTable) ? (r(), l("div", As, [
3995
- e[57] || (e[57] = s("div", { class: "date" }, "Daily Forecast", -1)),
3996
- s("table", hs, [
3997
- e[55] || (e[55] = s("tr", { class: "day tr-title" }, [
3998
- s("th", {
3999
- rowspan: "1",
4000
- colspan: "1"
4001
- }),
4002
- s("th", {
4003
- rowspan: "1",
4004
- colspan: "3",
4005
- class: "text-align-left"
4006
- }, "Conditions"),
4007
- s("th", {
4008
- rowspan: "1",
4009
- colspan: "3",
4010
- class: "text-align-left"
4011
- }, "Precipitation"),
4012
- s("th", {
4013
- rowspan: "1",
4014
- colspan: "2",
4015
- class: "text-align-left"
4016
- }, "Wind"),
4017
- s("th", {
4018
- rowspan: "1",
4019
- colspan: "4",
4020
- class: "text-align-left"
4021
- }, "Wave")
4022
- ], -1)),
4023
- e[56] || (e[56] = s("tr", { class: "hour tr-title border-bottom" }, [
4024
- s("th", {
4025
- rowspan: "1",
4026
- colspan: "1",
4027
- class: "font-black",
4028
- style: { "text-align": "right", "padding-right": "10px", "box-sizing": "border-box" }
4029
- }, "Date"),
4030
- s("th", {
4031
- rowspan: "1",
4032
- colspan: "1",
4033
- class: "font-black text-align-left",
4034
- style: { width: "40px" }
4035
- }, "Weather"),
4036
- s("th", {
4037
- rowspan: "1",
4038
- colspan: "1",
4039
- class: "font-black text-align-left",
4040
- style: { width: "70px" }
4041
- }),
4042
- s("th", {
4043
- rowspan: "1",
4044
- colspan: "1",
4045
- class: "font-black text-align-left"
4046
- }, "Temperature"),
4047
- s("th", {
4048
- rowspan: "1",
4049
- colspan: "1",
4050
- class: "font-black text-align-left"
4051
- }, "Sum"),
4052
- s("th", {
4053
- rowspan: "1",
4054
- colspan: "1",
4055
- class: "font-black text-align-left"
4056
- }, "Rain"),
4057
- s("th", {
4058
- rowspan: "1",
4059
- colspan: "1",
4060
- class: "font-black text-align-left"
4061
- }, "Snowfall"),
4062
- s("th", {
4063
- rowspan: "1",
4064
- colspan: "1",
4065
- class: "font-black text-align-left"
4066
- }, "Speed_max"),
4067
- s("th", {
4068
- rowspan: "1",
4069
- colspan: "1",
4070
- class: "font-black text-align-left"
4071
- }, "Gust_max"),
4072
- s("th", {
4073
- rowspan: "1",
4074
- colspan: "1",
4075
- class: "font-black text-align-left",
4076
- style: { width: "75px" }
4077
- }, "Wind wave_max"),
4078
- s("th", {
4079
- rowspan: "1",
4080
- colspan: "1",
4081
- class: "font-black text-align-left",
4082
- style: { width: "75px" }
4083
- }, "Swell wave_max"),
4084
- s("th", {
4085
- rowspan: "1",
4086
- colspan: "1",
4087
- class: "font-black text-align-left",
4088
- style: { width: "75px" }
4089
- }, "Sig.wave_max")
4090
- ], -1)),
4091
- (r(!0), l(we, null, pe(t.daysTableData, (i) => (r(), l("tr", {
4092
- key: Math.random() + i.localDate,
4093
- class: "text border-bottom"
4094
- }, [
4095
- s("td", ds, [
4096
- s("div", null, p(i.localWeek), 1),
4097
- s("div", null, p(i.localDate), 1)
4098
- ]),
4099
- s("td", gs, [
4100
- i.weatherUrl ? (r(), l("img", {
4101
- key: 0,
4102
- class: "iconfont weather-icon",
4103
- style: { width: "34px", height: "34px" },
4104
- src: i.weatherUrl
4105
- }, null, 8, cs)) : Me("", !0)
4106
- ]),
4107
- s("td", ws, p(i.weatherName), 1),
4108
- s("td", ps, [
4109
- ne(p(i.minTemp) + " / " + p(i.maxTemp), 1),
4110
- e[46] || (e[46] = s("span", { class: "unit" }, "°C", -1))
4111
- ]),
4112
- s("td", ms, [
4113
- ne(p(i.precipSum), 1),
4114
- e[47] || (e[47] = s("span", { class: "unit" }, "mm", -1))
4115
- ]),
4116
- s("td", us, [
4117
- ne(p(i.precipRainSum), 1),
4118
- e[48] || (e[48] = s("span", { class: "unit" }, "mm", -1))
4119
- ]),
4120
- s("td", fs, [
4121
- ne(p(i.precipSnowfallSum), 1),
4122
- e[49] || (e[49] = s("span", { class: "unit" }, "mm", -1))
4123
- ]),
4124
- s("td", vs, [
4125
- s("span", null, p(i.windSpeedMax), 1),
4126
- e[50] || (e[50] = s("span", { class: "unit" }, "kts", -1)),
4127
- !isNaN(i.windSpeedDir) && !isNaN(i.windSpeedMax) ? (r(), l("span", {
4128
- key: 0,
4129
- class: "iconfont icon",
4130
- style: Ce({ display: "inline-block", transform: `rotate(${i.windSpeedDir}deg)` })
4131
- }, "", 4)) : (r(), l("span", ys, "-"))
4132
- ]),
4133
- s("td", Ds, [
4134
- s("span", null, p(i.gustSpeedMax), 1),
4135
- e[51] || (e[51] = s("span", { class: "unit" }, "kts", -1))
4136
- ]),
4137
- s("td", Bs, [
4138
- s("span", null, p(i.windWaveHeight), 1),
4139
- e[52] || (e[52] = s("span", { class: "unit" }, "m", -1)),
4140
- !isNaN(i.windWaveDir) && !isNaN(i.windWaveHeight) ? (r(), l("span", {
4141
- key: 0,
4142
- class: "iconfont icon",
4143
- style: Ce({ display: "inline-block", transform: `rotate(${i.windWaveDir}deg)` })
4144
- }, "", 4)) : (r(), l("span", xs, "-"))
4145
- ]),
4146
- s("td", bs, [
4147
- s("span", null, p(i.swellWaveHeight), 1),
4148
- e[53] || (e[53] = s("span", { class: "unit" }, "m", -1)),
4149
- !isNaN(i.swellWaveDir) && !isNaN(i.swellWaveHeight) ? (r(), l("span", {
4150
- key: 0,
4151
- class: "iconfont icon",
4152
- style: Ce({ display: "inline-block", transform: `rotate(${i.swellWaveDir}deg)` })
4153
- }, "", 4)) : (r(), l("span", Cs, "-"))
4154
- ]),
4155
- s("td", Is, [
4156
- s("span", null, p(i.sigWaveHeight), 1),
4157
- e[54] || (e[54] = s("span", { class: "unit" }, "m", -1)),
4158
- !isNaN(i.sigWaveDir) && !isNaN(i.sigWaveHeight) ? (r(), l("span", {
4159
- key: 0,
4160
- class: "iconfont icon",
4161
- style: Ce({ display: "inline-block", transform: `rotate(${i.sigWaveDir}deg)` })
4162
- }, "", 4)) : (r(), l("span", Es, "-"))
4163
- ])
4164
- ]))), 128))
4165
- ])
4166
- ])) : (m = t.loading) != null && m.daysTable ? (r(), l("div", Qs, e[58] || (e[58] = [
4167
- s("img", {
4168
- style: { height: "200px" },
4169
- src: He
4170
- }, null, -1)
4171
- ]))) : (r(), l("div", Ms, "No Data"))
4172
- ])) : Me("", !0),
4173
- t.menuIndex === 1 || t.menuIndex === 3 ? (r(), l("div", ks, [
4174
- (S = t.position) != null && S.name && a.token && !((k = t.loading) != null && k.hourlyTable) ? (r(), l("div", Ls, [
4175
- e[61] || (e[61] = s("div", { class: "date" }, "Hourly Forecast", -1)),
4176
- s("table", zs, [
4177
- e[59] || (e[59] = s("tr", { class: "day tr-title" }, [
4178
- s("th", {
4179
- rowspan: "2",
4180
- colspan: "1",
4181
- class: "border",
4182
- style: { width: "70px" }
4183
- }, "DateTime"),
4184
- s("th", {
4185
- rowspan: "1",
4186
- colspan: "1",
4187
- class: "border"
4188
- }, "Temp"),
4189
- s("th", {
4190
- rowspan: "1",
4191
- colspan: "1",
4192
- class: "border"
4193
- }, "Precip.3h"),
4194
- s("th", {
4195
- rowspan: "1",
4196
- colspan: "1",
4197
- class: "border"
4198
- }, "Visibility"),
4199
- s("th", {
4200
- rowspan: "1",
4201
- colspan: "4",
4202
- class: "border"
4203
- }, "Wind"),
4204
- s("th", {
4205
- rowspan: "1",
4206
- colspan: "3",
4207
- class: "border"
4208
- }, "Wind wave"),
4209
- s("th", {
4210
- rowspan: "1",
4211
- colspan: "3",
4212
- class: "border"
4213
- }, "Sig.wave"),
4214
- s("th", {
4215
- rowspan: "1",
4216
- colspan: "2",
4217
- class: "border"
4218
- }, "Current"),
4219
- s("th", {
4220
- rowspan: "1",
4221
- colspan: "1",
4222
- class: "border"
4223
- }, "Sea Level"),
4224
- s("th", {
4225
- rowspan: "1",
4226
- colspan: "1",
4227
- class: "border"
4228
- }, "Sea Surface")
4229
- ], -1)),
4230
- e[60] || (e[60] = s("tr", { class: "hour tr-title" }, [
4231
- s("th", {
4232
- rowspan: "1",
4233
- colspan: "1",
4234
- class: "border"
4235
- }, "°C"),
4236
- s("th", {
4237
- rowspan: "1",
4238
- colspan: "1",
4239
- class: "border",
4240
- style: { width: "60px" }
4241
- }, "Acc (mm)"),
4242
- s("th", {
4243
- rowspan: "1",
4244
- colspan: "1",
4245
- class: "border"
4246
- }, "Dist (nm)"),
4247
- s("th", {
4248
- rowspan: "1",
4249
- colspan: "1",
4250
- class: "border"
4251
- }, "Dir"),
4252
- s("th", {
4253
- rowspan: "1",
4254
- colspan: "1",
4255
- class: "border"
4256
- }, "Spd(kts)"),
4257
- s("th", {
4258
- rowspan: "1",
4259
- colspan: "1",
4260
- class: "border"
4261
- }, "BF"),
4262
- s("th", {
4263
- rowspan: "1",
4264
- colspan: "1",
4265
- class: "border"
4266
- }, "Gusts(kts)"),
4267
- s("th", {
4268
- rowspan: "1",
4269
- colspan: "1",
4270
- class: "border"
4271
- }, "Dir"),
4272
- s("th", {
4273
- rowspan: "1",
4274
- colspan: "1",
4275
- class: "border"
4276
- }, "Hgt(m)"),
4277
- s("th", {
4278
- rowspan: "1",
4279
- colspan: "1",
4280
- class: "border"
4281
- }, "Prd(s)"),
4282
- s("th", {
4283
- rowspan: "1",
4284
- colspan: "1",
4285
- class: "border"
4286
- }, "Dir"),
4287
- s("th", {
4288
- rowspan: "1",
4289
- colspan: "1",
4290
- class: "border"
4291
- }, "Hgt(m)"),
4292
- s("th", {
4293
- rowspan: "1",
4294
- colspan: "1",
4295
- class: "border"
4296
- }, "Prd(s)"),
4297
- s("th", {
4298
- rowspan: "1",
4299
- colspan: "1",
4300
- class: "border"
4301
- }, "Dir"),
4302
- s("th", {
4303
- rowspan: "1",
4304
- colspan: "1",
4305
- class: "border"
4306
- }, "Spd(kts)"),
4307
- s("th", {
4308
- rowspan: "1",
4309
- colspan: "1",
4310
- class: "border"
4311
- }, "Hgt(m)"),
4312
- s("th", {
4313
- rowspan: "1",
4314
- colspan: "1",
4315
- class: "border"
4316
- }, "Temp(°C)")
4317
- ], -1)),
4318
- (r(!0), l(we, null, pe(t.hourlyTableData, (i) => (r(), l("tr", {
4319
- key: Math.random() + i.localDate,
4320
- class: "text border-bottom"
4321
- }, [
4322
- s("td", Hs, [
4323
- s("div", null, p(i.localDate), 1)
4324
- ]),
4325
- s("td", Ps, [
4326
- s("div", null, p(i.temp), 1)
4327
- ]),
4328
- s("td", Ns, p(i.precipSum), 1),
4329
- s("td", Ts, p(i.visibility), 1),
4330
- s("td", Gs, [
4331
- ne(p(i.windDir) + " ", 1),
4332
- !isNaN(i.windBearing) && i.windDir ? (r(), l("span", {
4333
- key: 0,
4334
- class: "iconfont icon",
4335
- style: Ce({ display: "inline-block", transform: `rotate(${i.windBearing}deg)` })
4336
- }, "", 4)) : (r(), l("span", Ss, "-"))
4337
- ]),
4338
- s("td", Fs, p(i.windSpeed), 1),
4339
- s("td", _s, p(i.windBF), 1),
4340
- s("td", Os, p(i.windGusts), 1),
4341
- s("td", Ys, [
4342
- ne(p(i.windWaveDir) + " ", 1),
4343
- !isNaN(i.windWaveBearing) && i.windWaveDir ? (r(), l("span", {
4344
- key: 0,
4345
- class: "iconfont icon",
4346
- style: Ce({ display: "inline-block", transform: `rotate(${i.windWaveBearing}deg)` })
4347
- }, "", 4)) : (r(), l("span", js, "-"))
4348
- ]),
4349
- s("td", Ks, p(i.windWaveHeight), 1),
4350
- s("td", Us, p(i.windWavePeriod), 1),
4351
- s("td", Ws, [
4352
- ne(p(i.sigWaveDir) + " ", 1),
4353
- !isNaN(i.sigWaveBearing) && i.sigWaveDir ? (r(), l("span", {
4354
- key: 0,
4355
- class: "iconfont icon",
4356
- style: Ce({ display: "inline-block", transform: `rotate(${i.sigWaveBearing}deg)` })
4357
- }, "", 4)) : (r(), l("span", Rs, "-"))
4358
- ]),
4359
- s("td", Xs, p(i.sigWaveHeight), 1),
4360
- s("td", qs, p(i.sigWavePeriod), 1),
4361
- s("td", Js, [
4362
- ne(p(i.currentDir) + " ", 1),
4363
- !isNaN(i.currentBearing) && i.currentDir ? (r(), l("span", {
4364
- key: 0,
4365
- class: "iconfont icon",
4366
- style: Ce({ display: "inline-block", transform: `rotate(${i.currentBearing}deg)` })
4367
- }, "", 4)) : (r(), l("span", Zs, "-"))
4368
- ]),
4369
- s("td", Vs, p(i.currentSpd), 1),
4370
- s("td", $s, p(i.seaLevel), 1),
4371
- s("td", ea, p(i.seaSurfaceTemp), 1)
4372
- ]))), 128))
4373
- ])
4374
- ])) : (L = t.loading) != null && L.hourlyTable ? (r(), l("div", ta, e[62] || (e[62] = [
4375
- s("img", {
4376
- style: { height: "200px" },
4377
- src: He
4378
- }, null, -1)
4379
- ]))) : (r(), l("div", sa, "No Data"))
4380
- ])) : Me("", !0),
4381
- t.menuIndex === 4 ? (r(), l("div", aa, [
4382
- (D = t.position) != null && D.name && a.token && !((he = t.loading) != null && he.seasonalEchart) ? (r(), l("div", ia, [
4383
- s("div", oa, [
4384
- s("div", {
4385
- id: "seasonal-title",
4386
- class: "title flex-start",
4387
- onClick: e[11] || (e[11] = (i) => t.seasonalData.showMonths = !t.seasonalData.showMonths)
4388
- }, [
4389
- s("div", na, p((g = (Ae = (de = t.currentMonth) == null ? void 0 : de.month) == null ? void 0 : Ae.split("-")) == null ? void 0 : g[0]) + " " + p((z = (E = (ue = t.currentMonth) == null ? void 0 : ue.month) == null ? void 0 : E.split("-")) == null ? void 0 : z[1]), 1),
4390
- s("div", ra, [
4391
- be(M, null, {
4392
- default: Qe(() => [
4393
- be(C)
4394
- ]),
4395
- _: 1
4396
- })
4397
- ]),
4398
- Oe(s("div", la, [
4399
- s("div", Aa, [
4400
- (r(!0), l(we, null, pe(t.monthsOptions, (i) => {
4401
- var w;
4402
- return r(), l("div", {
4403
- key: i,
4404
- class: me(["month-option", ((w = t.currentMonth) == null ? void 0 : w.month) === i.month ? "active" : ""]),
4405
- onClick: (xe) => o.handleSelectMonth(i)
4406
- }, p(i.month), 11, ha);
4407
- }), 128))
4408
- ])
4409
- ], 512), [
4410
- [Ye, t.seasonalData.showMonths]
4411
- ])
4412
- ]),
4413
- e[63] || (e[63] = s("div", { id: "temperature-echart" }, null, -1)),
4414
- e[64] || (e[64] = s("div", { id: "wind-precip-echart" }, null, -1))
4415
- ]),
4416
- s("div", da, [
4417
- s("div", ga, p((_ = t.currentMonth) == null ? void 0 : _.month) + " Summary", 1),
4418
- e[65] || (e[65] = s("div", { class: "label" }, "Temperature", -1)),
4419
- s("div", ca, "Avg High Temp: " + p(t.seasonalData.minHighTemp) + " to " + p(t.seasonalData.maxHighTemp) + " °C", 1),
4420
- s("div", wa, "Avg Low Temp: " + p(t.seasonalData.minLowTemp) + " to " + p(t.seasonalData.maxLowTemp) + " °C", 1),
4421
- s("div", pa, "Hottest Day: " + p(t.seasonalData.hottestDay), 1),
4422
- s("div", ma, "Coldest Day: " + p(t.seasonalData.coldestDay), 1),
4423
- e[66] || (e[66] = s("div", { class: "label" }, "Precipitation", -1)),
4424
- s("div", ua, "Light (<10mm): " + p((O = (A = (ce = t.seasonalData) == null ? void 0 : ce.precip) == null ? void 0 : A.filter((i) => i < 10)) == null ? void 0 : O.length) + " days", 1),
4425
- s("div", fa, "Moderate (<=24.9mm): " + p((re = (Q = (ie = t.seasonalData) == null ? void 0 : ie.precip) == null ? void 0 : Q.filter((i) => i >= 10 && i < 24.9)) == null ? void 0 : re.length) + " days", 1),
4426
- s("div", va, "Heavy (<=49.9mm): " + p((f = (d = (j = t.seasonalData) == null ? void 0 : j.precip) == null ? void 0 : d.filter((i) => i >= 24.9 && i < 49.9)) == null ? void 0 : f.length) + " days", 1),
4427
- s("div", ya, "Rainstorm (<=99.9mm): " + p((ve = (y = (K = t.seasonalData) == null ? void 0 : K.precip) == null ? void 0 : y.filter((i) => i >= 49.9 && i < 99.9)) == null ? void 0 : ve.length) + " days", 1),
4428
- s("div", Da, "Heavy Rainstorm (>=100mm): " + p((fe = (oe = (G = t.seasonalData) == null ? void 0 : G.precip) == null ? void 0 : oe.filter((i) => i >= 100)) == null ? void 0 : fe.length) + " days", 1),
4429
- e[67] || (e[67] = s("div", { class: "label" }, "Wind", -1)),
4430
- s("div", Ba, "Mean Wind: " + p(o.roundPrecision(t.seasonalData.meanWind, 1)) + " kts", 1),
4431
- s("div", xa, "Windiest Day: " + p(t.seasonalData.windiestDay) + " ( " + p(t.seasonalData.maxWindSpeed) + "kts )", 1),
4432
- s("div", ba, "Dominant Wind Dir: " + p(t.seasonalData.dominantWind), 1)
4433
- ])
4434
- ])) : (B = t.loading) != null && B.seasonalEchart ? (r(), l("div", Ca, e[68] || (e[68] = [
4435
- s("img", {
4436
- style: { height: "200px" },
4437
- src: He
4438
- }, null, -1)
4439
- ]))) : (r(), l("div", Ia, "No Data"))
4440
- ])) : Me("", !0)
4441
- ]),
4442
- be(le, {
4443
- modelValue: t.showFollowDialog,
4444
- "onUpdate:modelValue": e[14] || (e[14] = (i) => t.showFollowDialog = i),
4445
- title: t.followDialogTitle,
4446
- modal: !1,
4447
- width: "440",
4448
- draggable: !0,
4449
- "show-close": !1,
4450
- class: "follow-dialog",
4451
- "close-on-click-modal": !1
4452
- }, {
4453
- default: Qe(() => [
4454
- s("div", null, [
4455
- s("div", {
4456
- class: "iconfont close-btn",
4457
- onClick: e[12] || (e[12] = (i) => t.showFollowDialog = !1)
4458
- }, ""),
4459
- t.position.portId ? (r(), l("div", Ea, [
4460
- e[69] || (e[69] = s("span", { class: "label" }, "Port:", -1)),
4461
- s("span", Qa, p(t.position.name), 1)
4462
- ])) : Me("", !0),
4463
- s("div", Ma, [
4464
- e[70] || (e[70] = s("span", { class: "label" }, "Postion:", -1)),
4465
- s("span", ka, p(this.computeLat(this.position.lat) + ", " + this.computeLng(this.position.lng)), 1)
4466
- ]),
4467
- s("div", La, [
4468
- e[71] || (e[71] = s("span", { class: "label" }, "Remark:", -1)),
4469
- t.followItem ? (r(), l("span", za, p(t.position.remark || "-"), 1)) : (r(), Pe(se, {
4470
- key: 0,
4471
- modelValue: t.followRemark,
4472
- "onUpdate:modelValue": e[13] || (e[13] = (i) => t.followRemark = i),
4473
- class: "text"
4474
- }, null, 8, ["modelValue"]))
4475
- ]),
4476
- s("div", Ha, [
4477
- t.followItem ? (r(), Pe(ae, {
4478
- key: 0,
4479
- type: "info",
4480
- plain: "",
4481
- onClick: o.handleClickFollow
4482
- }, {
4483
- default: Qe(() => e[72] || (e[72] = [
4484
- ne("Remove")
4485
- ])),
4486
- _: 1
4487
- }, 8, ["onClick"])) : (r(), Pe(ae, {
4488
- key: 1,
4489
- type: "primary",
4490
- onClick: o.handleClickFollow
4491
- }, {
4492
- default: Qe(() => e[73] || (e[73] = [
4493
- ne("Confirm")
4494
- ])),
4495
- _: 1
4496
- }, 8, ["onClick"]))
4497
- ])
4498
- ])
4499
- ]),
4500
- _: 1
4501
- }, 8, ["modelValue", "title"])
4502
- ]);
4503
- }
4504
- const Na = /* @__PURE__ */ at(it, [["render", Pa], ["__scopeId", "data-v-058b5de0"]]), Ya = {
4505
- install(n) {
4506
- n.component("SpotReport", Na);
4507
- }
4508
- };
1
+ import { c as s, b as g, a as h, S as l } from "./index-c9746e15.js";
2
+ import "moment";
3
+ import "moment-timezone";
4
+ import "@element-plus/icons-vue";
5
+ import "@idm-plugin/geo";
6
+ import "vue";
7
+ import "echarts";
8
+ import "axios";
4509
9
  export {
4510
- Na as SpotReport,
4511
- Ya as SpotReportPlugin
10
+ s as SpotReport,
11
+ g as SpotReportPlugin,
12
+ h as SpotWeather,
13
+ l as SpotWeatherPlugin
4512
14
  };