@claudinho/core 0.6.2 → 0.8.0
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.d.ts +163 -1
- package/dist/index.js +1402 -143
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -253,6 +253,153 @@ function nationToRegion(nameOrCode) {
|
|
|
253
253
|
return intlNameMap()[norm(nameOrCode)];
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
+
// src/i18n.ts
|
|
257
|
+
var EN = {
|
|
258
|
+
"bracket.title": "Knockout bracket",
|
|
259
|
+
"bracket.stageTitle": "Knockout \xB7 {stage}",
|
|
260
|
+
"bracket.shareTitle": "Knockout bracket \xB7 2026",
|
|
261
|
+
"bracket.degraded": "Live scores unavailable \u2014 bracket structure only, no confirmed advancement.",
|
|
262
|
+
"bracket.standingsDegraded": "Live standings unavailable \u2014 group slots stay TBD until groups finish.",
|
|
263
|
+
"bracket.treeFallback": "Terminal too narrow for tree view \u2014 showing staged list.",
|
|
264
|
+
"bracket.empty": "No bracket matches available.",
|
|
265
|
+
"bracket.projected": "(proj.)",
|
|
266
|
+
"bracket.invalidStage": "Stage must be one of: R32, R16, QF, SF, 3P, F",
|
|
267
|
+
"bracket.unknownStage": 'Unknown stage "{stage}". Use R32, R16, QF, SF, 3P, or F.',
|
|
268
|
+
"bracket.slot.groupWinner": "Group {group} winner",
|
|
269
|
+
"bracket.slot.groupSecond": "Group {group} 2nd",
|
|
270
|
+
"bracket.slot.third": "3rd ({groups})",
|
|
271
|
+
"bracket.slot.winner": "{stage} {n} winner",
|
|
272
|
+
"bracket.slot.loser": "{stage} {n} loser",
|
|
273
|
+
"bracket.slot.tbd": "TBD",
|
|
274
|
+
"live.data": "Live data: {source}",
|
|
275
|
+
"share.tryIt": "Try it: {line}",
|
|
276
|
+
"stage.group": "Group {group}",
|
|
277
|
+
"stage.groupStage": "Group stage",
|
|
278
|
+
"stage.r32": "Round of 32",
|
|
279
|
+
"stage.r16": "Round of 16",
|
|
280
|
+
"stage.qf": "Quarter-final",
|
|
281
|
+
"stage.sf": "Semi-final",
|
|
282
|
+
"stage.3p": "Third-place play-off",
|
|
283
|
+
"stage.f": "Final",
|
|
284
|
+
"stage.friendly": "Friendly"
|
|
285
|
+
};
|
|
286
|
+
var ES = {
|
|
287
|
+
"bracket.title": "Cuadro de eliminatorias",
|
|
288
|
+
"bracket.stageTitle": "Eliminatorias \xB7 {stage}",
|
|
289
|
+
"bracket.shareTitle": "Cuadro de eliminatorias \xB7 2026",
|
|
290
|
+
"bracket.degraded": "Marcadores en vivo no disponibles \u2014 solo estructura del cuadro, sin avances confirmados.",
|
|
291
|
+
"bracket.standingsDegraded": "Tabla en vivo no disponible \u2014 los cupos de grupo siguen por definir hasta que terminen los grupos.",
|
|
292
|
+
"bracket.treeFallback": "Terminal demasiado estrecha para el \xE1rbol \u2014 mostrando lista por fase.",
|
|
293
|
+
"bracket.empty": "No hay partidos de eliminatorias disponibles.",
|
|
294
|
+
"bracket.projected": "(proy.)",
|
|
295
|
+
"bracket.invalidStage": "La fase debe ser una de: R32, R16, QF, SF, 3P, F",
|
|
296
|
+
"bracket.unknownStage": 'Fase desconocida "{stage}". Usa R32, R16, QF, SF, 3P o F.',
|
|
297
|
+
"bracket.slot.groupWinner": "Ganador del grupo {group}",
|
|
298
|
+
"bracket.slot.groupSecond": "2.\xBA del grupo {group}",
|
|
299
|
+
"bracket.slot.third": "3.\xBA ({groups})",
|
|
300
|
+
"bracket.slot.winner": "Ganador {stage} {n}",
|
|
301
|
+
"bracket.slot.loser": "Perdedor {stage} {n}",
|
|
302
|
+
"bracket.slot.tbd": "Por definir",
|
|
303
|
+
"live.data": "Datos en vivo: {source}",
|
|
304
|
+
"share.tryIt": "Pru\xE9balo: {line}",
|
|
305
|
+
"stage.group": "Grupo {group}",
|
|
306
|
+
"stage.groupStage": "Fase de grupos",
|
|
307
|
+
"stage.r32": "Dieciseisavos de final",
|
|
308
|
+
"stage.r16": "Octavos de final",
|
|
309
|
+
"stage.qf": "Cuartos de final",
|
|
310
|
+
"stage.sf": "Semifinal",
|
|
311
|
+
"stage.3p": "Tercer puesto",
|
|
312
|
+
"stage.f": "Final",
|
|
313
|
+
"stage.friendly": "Amistoso"
|
|
314
|
+
};
|
|
315
|
+
var PT = {
|
|
316
|
+
"bracket.title": "Chave do mata-mata",
|
|
317
|
+
"bracket.stageTitle": "Mata-mata \xB7 {stage}",
|
|
318
|
+
"bracket.shareTitle": "Chave do mata-mata \xB7 2026",
|
|
319
|
+
"bracket.degraded": "Placar ao vivo indispon\xEDvel \u2014 apenas a estrutura da chave, sem avan\xE7os confirmados.",
|
|
320
|
+
"bracket.standingsDegraded": "Classifica\xE7\xE3o ao vivo indispon\xEDvel \u2014 vagas de grupo seguem a definir at\xE9 o fim dos grupos.",
|
|
321
|
+
"bracket.treeFallback": "Terminal estreito demais para a \xE1rvore \u2014 mostrando lista por fase.",
|
|
322
|
+
"bracket.empty": "Nenhum jogo do mata-mata dispon\xEDvel.",
|
|
323
|
+
"bracket.projected": "(proj.)",
|
|
324
|
+
"bracket.invalidStage": "A fase deve ser uma de: R32, R16, QF, SF, 3P, F",
|
|
325
|
+
"bracket.unknownStage": 'Fase desconhecida "{stage}". Use R32, R16, QF, SF, 3P ou F.',
|
|
326
|
+
"bracket.slot.groupWinner": "Vencedor do grupo {group}",
|
|
327
|
+
"bracket.slot.groupSecond": "2.\xBA do grupo {group}",
|
|
328
|
+
"bracket.slot.third": "3.\xBA ({groups})",
|
|
329
|
+
"bracket.slot.winner": "Vencedor {stage} {n}",
|
|
330
|
+
"bracket.slot.loser": "Perdedor {stage} {n}",
|
|
331
|
+
"bracket.slot.tbd": "A definir",
|
|
332
|
+
"live.data": "Dados ao vivo: {source}",
|
|
333
|
+
"share.tryIt": "Experimente: {line}",
|
|
334
|
+
"stage.group": "Grupo {group}",
|
|
335
|
+
"stage.groupStage": "Fase de grupos",
|
|
336
|
+
"stage.r32": "Fase de 32 equipes",
|
|
337
|
+
"stage.r16": "Oitavas de final",
|
|
338
|
+
"stage.qf": "Quartas de final",
|
|
339
|
+
"stage.sf": "Semifinal",
|
|
340
|
+
"stage.3p": "Disputa do 3.\xBA lugar",
|
|
341
|
+
"stage.f": "Final",
|
|
342
|
+
"stage.friendly": "Amistoso"
|
|
343
|
+
};
|
|
344
|
+
var FR = {
|
|
345
|
+
"bracket.title": "Tableau \xE0 \xE9limination directe",
|
|
346
|
+
"bracket.stageTitle": "\xC9liminatoires \xB7 {stage}",
|
|
347
|
+
"bracket.shareTitle": "Tableau \xE0 \xE9limination directe \xB7 2026",
|
|
348
|
+
"bracket.degraded": "Scores en direct indisponibles \u2014 structure du tableau seulement, aucune qualification confirm\xE9e.",
|
|
349
|
+
"bracket.standingsDegraded": "Classement en direct indisponible \u2014 les places de groupe restent \xE0 d\xE9finir jusqu\u2019\xE0 la fin des poules.",
|
|
350
|
+
"bracket.treeFallback": "Terminal trop \xE9troit pour l\u2019arbre \u2014 affichage par phase.",
|
|
351
|
+
"bracket.empty": "Aucun match \xE0 \xE9limination directe disponible.",
|
|
352
|
+
"bracket.projected": "(proj.)",
|
|
353
|
+
"bracket.invalidStage": "La phase doit \xEAtre l\u2019une de : R32, R16, QF, SF, 3P, F",
|
|
354
|
+
"bracket.unknownStage": "Phase inconnue \xAB {stage} \xBB. Utilisez R32, R16, QF, SF, 3P ou F.",
|
|
355
|
+
"bracket.slot.groupWinner": "Vainqueur du groupe {group}",
|
|
356
|
+
"bracket.slot.groupSecond": "2e du groupe {group}",
|
|
357
|
+
"bracket.slot.third": "3e ({groups})",
|
|
358
|
+
"bracket.slot.winner": "Vainqueur {stage} {n}",
|
|
359
|
+
"bracket.slot.loser": "Perdant {stage} {n}",
|
|
360
|
+
"bracket.slot.tbd": "\xC0 d\xE9finir",
|
|
361
|
+
"live.data": "Donn\xE9es en direct : {source}",
|
|
362
|
+
"share.tryIt": "Essayez : {line}",
|
|
363
|
+
"stage.group": "Groupe {group}",
|
|
364
|
+
"stage.groupStage": "Phase de groupes",
|
|
365
|
+
"stage.r32": "Seizi\xE8mes de finale",
|
|
366
|
+
"stage.r16": "Huiti\xE8mes de finale",
|
|
367
|
+
"stage.qf": "Quarts de finale",
|
|
368
|
+
"stage.sf": "Demi-finale",
|
|
369
|
+
"stage.3p": "Match pour la 3e place",
|
|
370
|
+
"stage.f": "Finale",
|
|
371
|
+
"stage.friendly": "Match amical"
|
|
372
|
+
};
|
|
373
|
+
var CATALOGS = { en: EN, es: ES, pt: PT, fr: FR };
|
|
374
|
+
function normalizeLang(lang) {
|
|
375
|
+
const code = (lang ?? "en").slice(0, 2).toLowerCase();
|
|
376
|
+
if (code === "es" || code === "pt" || code === "fr") return code;
|
|
377
|
+
return "en";
|
|
378
|
+
}
|
|
379
|
+
function t(lang, key, vars) {
|
|
380
|
+
const dict = CATALOGS[normalizeLang(lang)];
|
|
381
|
+
let s = dict[key] ?? EN[key] ?? key;
|
|
382
|
+
if (vars) {
|
|
383
|
+
for (const [k, v] of Object.entries(vars)) s = s.replaceAll(`{${k}}`, v);
|
|
384
|
+
}
|
|
385
|
+
return s;
|
|
386
|
+
}
|
|
387
|
+
var STAGE_KEYS = {
|
|
388
|
+
GROUP: "stage.groupStage",
|
|
389
|
+
R32: "stage.r32",
|
|
390
|
+
R16: "stage.r16",
|
|
391
|
+
QF: "stage.qf",
|
|
392
|
+
SF: "stage.sf",
|
|
393
|
+
"3P": "stage.3p",
|
|
394
|
+
F: "stage.f",
|
|
395
|
+
FRIENDLY: "stage.friendly"
|
|
396
|
+
};
|
|
397
|
+
function stageLabelI18n(lang, stage, group) {
|
|
398
|
+
if (group) return t(lang, "stage.group", { group });
|
|
399
|
+
const key = STAGE_KEYS[stage];
|
|
400
|
+
return key ? t(lang, key) : stage;
|
|
401
|
+
}
|
|
402
|
+
|
|
256
403
|
// src/validate.ts
|
|
257
404
|
function isValidTimeZone(tz) {
|
|
258
405
|
if (!tz) return false;
|
|
@@ -372,6 +519,29 @@ function matchLocation(match) {
|
|
|
372
519
|
function byKickoff(a, b) {
|
|
373
520
|
return a.kickoff.localeCompare(b.kickoff);
|
|
374
521
|
}
|
|
522
|
+
function stageLabel(m) {
|
|
523
|
+
if (m.group) return `Group ${m.group}`;
|
|
524
|
+
switch (m.stage) {
|
|
525
|
+
case "GROUP":
|
|
526
|
+
return "Group stage";
|
|
527
|
+
case "R32":
|
|
528
|
+
return "Round of 32";
|
|
529
|
+
case "R16":
|
|
530
|
+
return "Round of 16";
|
|
531
|
+
case "QF":
|
|
532
|
+
return "Quarter-final";
|
|
533
|
+
case "SF":
|
|
534
|
+
return "Semi-final";
|
|
535
|
+
case "3P":
|
|
536
|
+
return "Third-place play-off";
|
|
537
|
+
case "F":
|
|
538
|
+
return "Final";
|
|
539
|
+
case "FRIENDLY":
|
|
540
|
+
return "Friendly";
|
|
541
|
+
default:
|
|
542
|
+
return "";
|
|
543
|
+
}
|
|
544
|
+
}
|
|
375
545
|
|
|
376
546
|
// src/flavor.ts
|
|
377
547
|
var FLAVOR_LEVELS = ["off", "subtle", "full"];
|
|
@@ -464,7 +634,7 @@ var schedule_2026_default = [
|
|
|
464
634
|
flag: "\u{1F1FF}\u{1F1E6}"
|
|
465
635
|
},
|
|
466
636
|
status: "SCHEDULED",
|
|
467
|
-
updatedAt: "2026-06-
|
|
637
|
+
updatedAt: "2026-06-24T01:20:06.301Z"
|
|
468
638
|
},
|
|
469
639
|
{
|
|
470
640
|
id: "760414",
|
|
@@ -485,7 +655,7 @@ var schedule_2026_default = [
|
|
|
485
655
|
flag: "\u{1F1E8}\u{1F1FF}"
|
|
486
656
|
},
|
|
487
657
|
status: "SCHEDULED",
|
|
488
|
-
updatedAt: "2026-06-
|
|
658
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
489
659
|
},
|
|
490
660
|
{
|
|
491
661
|
id: "760416",
|
|
@@ -506,7 +676,7 @@ var schedule_2026_default = [
|
|
|
506
676
|
flag: "\u{1F1E7}\u{1F1E6}"
|
|
507
677
|
},
|
|
508
678
|
status: "SCHEDULED",
|
|
509
|
-
updatedAt: "2026-06-
|
|
679
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
510
680
|
},
|
|
511
681
|
{
|
|
512
682
|
id: "760417",
|
|
@@ -527,7 +697,7 @@ var schedule_2026_default = [
|
|
|
527
697
|
flag: "\u{1F1F5}\u{1F1FE}"
|
|
528
698
|
},
|
|
529
699
|
status: "SCHEDULED",
|
|
530
|
-
updatedAt: "2026-06-
|
|
700
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
531
701
|
},
|
|
532
702
|
{
|
|
533
703
|
id: "760420",
|
|
@@ -548,7 +718,7 @@ var schedule_2026_default = [
|
|
|
548
718
|
flag: "\u{1F1E8}\u{1F1ED}"
|
|
549
719
|
},
|
|
550
720
|
status: "SCHEDULED",
|
|
551
|
-
updatedAt: "2026-06-
|
|
721
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
552
722
|
},
|
|
553
723
|
{
|
|
554
724
|
id: "760419",
|
|
@@ -569,7 +739,7 @@ var schedule_2026_default = [
|
|
|
569
739
|
flag: "\u{1F1F2}\u{1F1E6}"
|
|
570
740
|
},
|
|
571
741
|
status: "SCHEDULED",
|
|
572
|
-
updatedAt: "2026-06-
|
|
742
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
573
743
|
},
|
|
574
744
|
{
|
|
575
745
|
id: "760418",
|
|
@@ -590,7 +760,7 @@ var schedule_2026_default = [
|
|
|
590
760
|
flag: "\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}"
|
|
591
761
|
},
|
|
592
762
|
status: "SCHEDULED",
|
|
593
|
-
updatedAt: "2026-06-
|
|
763
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
594
764
|
},
|
|
595
765
|
{
|
|
596
766
|
id: "760421",
|
|
@@ -611,7 +781,7 @@ var schedule_2026_default = [
|
|
|
611
781
|
flag: "\u{1F1F9}\u{1F1F7}"
|
|
612
782
|
},
|
|
613
783
|
status: "SCHEDULED",
|
|
614
|
-
updatedAt: "2026-06-
|
|
784
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
615
785
|
},
|
|
616
786
|
{
|
|
617
787
|
id: "760422",
|
|
@@ -632,7 +802,7 @@ var schedule_2026_default = [
|
|
|
632
802
|
flag: "\u{1F1E8}\u{1F1FC}"
|
|
633
803
|
},
|
|
634
804
|
status: "SCHEDULED",
|
|
635
|
-
updatedAt: "2026-06-
|
|
805
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
636
806
|
},
|
|
637
807
|
{
|
|
638
808
|
id: "760425",
|
|
@@ -653,7 +823,7 @@ var schedule_2026_default = [
|
|
|
653
823
|
flag: "\u{1F1EF}\u{1F1F5}"
|
|
654
824
|
},
|
|
655
825
|
status: "SCHEDULED",
|
|
656
|
-
updatedAt: "2026-06-
|
|
826
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
657
827
|
},
|
|
658
828
|
{
|
|
659
829
|
id: "760423",
|
|
@@ -674,7 +844,7 @@ var schedule_2026_default = [
|
|
|
674
844
|
flag: "\u{1F1EA}\u{1F1E8}"
|
|
675
845
|
},
|
|
676
846
|
status: "SCHEDULED",
|
|
677
|
-
updatedAt: "2026-06-
|
|
847
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
678
848
|
},
|
|
679
849
|
{
|
|
680
850
|
id: "760424",
|
|
@@ -695,7 +865,7 @@ var schedule_2026_default = [
|
|
|
695
865
|
flag: "\u{1F1F9}\u{1F1F3}"
|
|
696
866
|
},
|
|
697
867
|
status: "SCHEDULED",
|
|
698
|
-
updatedAt: "2026-06-
|
|
868
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
699
869
|
},
|
|
700
870
|
{
|
|
701
871
|
id: "760428",
|
|
@@ -716,7 +886,7 @@ var schedule_2026_default = [
|
|
|
716
886
|
flag: "\u{1F1E8}\u{1F1FB}"
|
|
717
887
|
},
|
|
718
888
|
status: "SCHEDULED",
|
|
719
|
-
updatedAt: "2026-06-
|
|
889
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
720
890
|
},
|
|
721
891
|
{
|
|
722
892
|
id: "760426",
|
|
@@ -737,7 +907,7 @@ var schedule_2026_default = [
|
|
|
737
907
|
flag: "\u{1F1EA}\u{1F1EC}"
|
|
738
908
|
},
|
|
739
909
|
status: "SCHEDULED",
|
|
740
|
-
updatedAt: "2026-06-
|
|
910
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
741
911
|
},
|
|
742
912
|
{
|
|
743
913
|
id: "760429",
|
|
@@ -758,7 +928,7 @@ var schedule_2026_default = [
|
|
|
758
928
|
flag: "\u{1F1FA}\u{1F1FE}"
|
|
759
929
|
},
|
|
760
930
|
status: "SCHEDULED",
|
|
761
|
-
updatedAt: "2026-06-
|
|
931
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
762
932
|
},
|
|
763
933
|
{
|
|
764
934
|
id: "760427",
|
|
@@ -779,7 +949,7 @@ var schedule_2026_default = [
|
|
|
779
949
|
flag: "\u{1F1F3}\u{1F1FF}"
|
|
780
950
|
},
|
|
781
951
|
status: "SCHEDULED",
|
|
782
|
-
updatedAt: "2026-06-
|
|
952
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
783
953
|
},
|
|
784
954
|
{
|
|
785
955
|
id: "760432",
|
|
@@ -800,7 +970,7 @@ var schedule_2026_default = [
|
|
|
800
970
|
flag: "\u{1F1F8}\u{1F1F3}"
|
|
801
971
|
},
|
|
802
972
|
status: "SCHEDULED",
|
|
803
|
-
updatedAt: "2026-06-
|
|
973
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
804
974
|
},
|
|
805
975
|
{
|
|
806
976
|
id: "760430",
|
|
@@ -821,7 +991,7 @@ var schedule_2026_default = [
|
|
|
821
991
|
flag: "\u{1F1F3}\u{1F1F4}"
|
|
822
992
|
},
|
|
823
993
|
status: "SCHEDULED",
|
|
824
|
-
updatedAt: "2026-06-
|
|
994
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
825
995
|
},
|
|
826
996
|
{
|
|
827
997
|
id: "760433",
|
|
@@ -842,7 +1012,7 @@ var schedule_2026_default = [
|
|
|
842
1012
|
flag: "\u{1F1E9}\u{1F1FF}"
|
|
843
1013
|
},
|
|
844
1014
|
status: "SCHEDULED",
|
|
845
|
-
updatedAt: "2026-06-
|
|
1015
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
846
1016
|
},
|
|
847
1017
|
{
|
|
848
1018
|
id: "760431",
|
|
@@ -863,7 +1033,7 @@ var schedule_2026_default = [
|
|
|
863
1033
|
flag: "\u{1F1EF}\u{1F1F4}"
|
|
864
1034
|
},
|
|
865
1035
|
status: "SCHEDULED",
|
|
866
|
-
updatedAt: "2026-06-
|
|
1036
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
867
1037
|
},
|
|
868
1038
|
{
|
|
869
1039
|
id: "760435",
|
|
@@ -884,7 +1054,7 @@ var schedule_2026_default = [
|
|
|
884
1054
|
flag: "\u{1F1E8}\u{1F1E9}"
|
|
885
1055
|
},
|
|
886
1056
|
status: "SCHEDULED",
|
|
887
|
-
updatedAt: "2026-06-
|
|
1057
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
888
1058
|
},
|
|
889
1059
|
{
|
|
890
1060
|
id: "760437",
|
|
@@ -905,7 +1075,7 @@ var schedule_2026_default = [
|
|
|
905
1075
|
flag: "\u{1F1ED}\u{1F1F7}"
|
|
906
1076
|
},
|
|
907
1077
|
status: "SCHEDULED",
|
|
908
|
-
updatedAt: "2026-06-
|
|
1078
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
909
1079
|
},
|
|
910
1080
|
{
|
|
911
1081
|
id: "760434",
|
|
@@ -926,7 +1096,7 @@ var schedule_2026_default = [
|
|
|
926
1096
|
flag: "\u{1F1F5}\u{1F1E6}"
|
|
927
1097
|
},
|
|
928
1098
|
status: "SCHEDULED",
|
|
929
|
-
updatedAt: "2026-06-
|
|
1099
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
930
1100
|
},
|
|
931
1101
|
{
|
|
932
1102
|
id: "760436",
|
|
@@ -947,7 +1117,7 @@ var schedule_2026_default = [
|
|
|
947
1117
|
flag: "\u{1F1E8}\u{1F1F4}"
|
|
948
1118
|
},
|
|
949
1119
|
status: "SCHEDULED",
|
|
950
|
-
updatedAt: "2026-06-
|
|
1120
|
+
updatedAt: "2026-06-24T01:20:06.302Z"
|
|
951
1121
|
},
|
|
952
1122
|
{
|
|
953
1123
|
id: "760438",
|
|
@@ -968,7 +1138,7 @@ var schedule_2026_default = [
|
|
|
968
1138
|
flag: "\u{1F1FF}\u{1F1E6}"
|
|
969
1139
|
},
|
|
970
1140
|
status: "SCHEDULED",
|
|
971
|
-
updatedAt: "2026-06-
|
|
1141
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
972
1142
|
},
|
|
973
1143
|
{
|
|
974
1144
|
id: "760439",
|
|
@@ -989,7 +1159,7 @@ var schedule_2026_default = [
|
|
|
989
1159
|
flag: "\u{1F1E7}\u{1F1E6}"
|
|
990
1160
|
},
|
|
991
1161
|
status: "SCHEDULED",
|
|
992
|
-
updatedAt: "2026-06-
|
|
1162
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
993
1163
|
},
|
|
994
1164
|
{
|
|
995
1165
|
id: "760440",
|
|
@@ -1010,7 +1180,7 @@ var schedule_2026_default = [
|
|
|
1010
1180
|
flag: "\u{1F1F6}\u{1F1E6}"
|
|
1011
1181
|
},
|
|
1012
1182
|
status: "SCHEDULED",
|
|
1013
|
-
updatedAt: "2026-06-
|
|
1183
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1014
1184
|
},
|
|
1015
1185
|
{
|
|
1016
1186
|
id: "760441",
|
|
@@ -1031,7 +1201,7 @@ var schedule_2026_default = [
|
|
|
1031
1201
|
flag: "\u{1F1F0}\u{1F1F7}"
|
|
1032
1202
|
},
|
|
1033
1203
|
status: "SCHEDULED",
|
|
1034
|
-
updatedAt: "2026-06-
|
|
1204
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1035
1205
|
},
|
|
1036
1206
|
{
|
|
1037
1207
|
id: "760442",
|
|
@@ -1052,7 +1222,7 @@ var schedule_2026_default = [
|
|
|
1052
1222
|
flag: "\u{1F1E6}\u{1F1FA}"
|
|
1053
1223
|
},
|
|
1054
1224
|
status: "SCHEDULED",
|
|
1055
|
-
updatedAt: "2026-06-
|
|
1225
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1056
1226
|
},
|
|
1057
1227
|
{
|
|
1058
1228
|
id: "760445",
|
|
@@ -1073,7 +1243,7 @@ var schedule_2026_default = [
|
|
|
1073
1243
|
flag: "\u{1F1F2}\u{1F1E6}"
|
|
1074
1244
|
},
|
|
1075
1245
|
status: "SCHEDULED",
|
|
1076
|
-
updatedAt: "2026-06-
|
|
1246
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1077
1247
|
},
|
|
1078
1248
|
{
|
|
1079
1249
|
id: "760444",
|
|
@@ -1094,7 +1264,7 @@ var schedule_2026_default = [
|
|
|
1094
1264
|
flag: "\u{1F1ED}\u{1F1F9}"
|
|
1095
1265
|
},
|
|
1096
1266
|
status: "SCHEDULED",
|
|
1097
|
-
updatedAt: "2026-06-
|
|
1267
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1098
1268
|
},
|
|
1099
1269
|
{
|
|
1100
1270
|
id: "760443",
|
|
@@ -1115,7 +1285,7 @@ var schedule_2026_default = [
|
|
|
1115
1285
|
flag: "\u{1F1F5}\u{1F1FE}"
|
|
1116
1286
|
},
|
|
1117
1287
|
status: "SCHEDULED",
|
|
1118
|
-
updatedAt: "2026-06-
|
|
1288
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1119
1289
|
},
|
|
1120
1290
|
{
|
|
1121
1291
|
id: "760447",
|
|
@@ -1136,7 +1306,7 @@ var schedule_2026_default = [
|
|
|
1136
1306
|
flag: "\u{1F1F8}\u{1F1EA}"
|
|
1137
1307
|
},
|
|
1138
1308
|
status: "SCHEDULED",
|
|
1139
|
-
updatedAt: "2026-06-
|
|
1309
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1140
1310
|
},
|
|
1141
1311
|
{
|
|
1142
1312
|
id: "760448",
|
|
@@ -1157,7 +1327,7 @@ var schedule_2026_default = [
|
|
|
1157
1327
|
flag: "\u{1F1E8}\u{1F1EE}"
|
|
1158
1328
|
},
|
|
1159
1329
|
status: "SCHEDULED",
|
|
1160
|
-
updatedAt: "2026-06-
|
|
1330
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1161
1331
|
},
|
|
1162
1332
|
{
|
|
1163
1333
|
id: "760446",
|
|
@@ -1178,7 +1348,7 @@ var schedule_2026_default = [
|
|
|
1178
1348
|
flag: "\u{1F1E8}\u{1F1FC}"
|
|
1179
1349
|
},
|
|
1180
1350
|
status: "SCHEDULED",
|
|
1181
|
-
updatedAt: "2026-06-
|
|
1351
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1182
1352
|
},
|
|
1183
1353
|
{
|
|
1184
1354
|
id: "760449",
|
|
@@ -1199,7 +1369,7 @@ var schedule_2026_default = [
|
|
|
1199
1369
|
flag: "\u{1F1EF}\u{1F1F5}"
|
|
1200
1370
|
},
|
|
1201
1371
|
status: "SCHEDULED",
|
|
1202
|
-
updatedAt: "2026-06-
|
|
1372
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1203
1373
|
},
|
|
1204
1374
|
{
|
|
1205
1375
|
id: "760453",
|
|
@@ -1220,7 +1390,7 @@ var schedule_2026_default = [
|
|
|
1220
1390
|
flag: "\u{1F1F8}\u{1F1E6}"
|
|
1221
1391
|
},
|
|
1222
1392
|
status: "SCHEDULED",
|
|
1223
|
-
updatedAt: "2026-06-
|
|
1393
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1224
1394
|
},
|
|
1225
1395
|
{
|
|
1226
1396
|
id: "760451",
|
|
@@ -1241,7 +1411,7 @@ var schedule_2026_default = [
|
|
|
1241
1411
|
flag: "\u{1F1EE}\u{1F1F7}"
|
|
1242
1412
|
},
|
|
1243
1413
|
status: "SCHEDULED",
|
|
1244
|
-
updatedAt: "2026-06-
|
|
1414
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1245
1415
|
},
|
|
1246
1416
|
{
|
|
1247
1417
|
id: "760450",
|
|
@@ -1262,7 +1432,7 @@ var schedule_2026_default = [
|
|
|
1262
1432
|
flag: "\u{1F1E8}\u{1F1FB}"
|
|
1263
1433
|
},
|
|
1264
1434
|
status: "SCHEDULED",
|
|
1265
|
-
updatedAt: "2026-06-
|
|
1435
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1266
1436
|
},
|
|
1267
1437
|
{
|
|
1268
1438
|
id: "760452",
|
|
@@ -1283,7 +1453,7 @@ var schedule_2026_default = [
|
|
|
1283
1453
|
flag: "\u{1F1EA}\u{1F1EC}"
|
|
1284
1454
|
},
|
|
1285
1455
|
status: "SCHEDULED",
|
|
1286
|
-
updatedAt: "2026-06-
|
|
1456
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1287
1457
|
},
|
|
1288
1458
|
{
|
|
1289
1459
|
id: "760456",
|
|
@@ -1304,7 +1474,7 @@ var schedule_2026_default = [
|
|
|
1304
1474
|
flag: "\u{1F1E6}\u{1F1F9}"
|
|
1305
1475
|
},
|
|
1306
1476
|
status: "SCHEDULED",
|
|
1307
|
-
updatedAt: "2026-06-
|
|
1477
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1308
1478
|
},
|
|
1309
1479
|
{
|
|
1310
1480
|
id: "760457",
|
|
@@ -1325,7 +1495,7 @@ var schedule_2026_default = [
|
|
|
1325
1495
|
flag: "\u{1F1EE}\u{1F1F6}"
|
|
1326
1496
|
},
|
|
1327
1497
|
status: "SCHEDULED",
|
|
1328
|
-
updatedAt: "2026-06-
|
|
1498
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1329
1499
|
},
|
|
1330
1500
|
{
|
|
1331
1501
|
id: "760454",
|
|
@@ -1346,7 +1516,7 @@ var schedule_2026_default = [
|
|
|
1346
1516
|
flag: "\u{1F1F8}\u{1F1F3}"
|
|
1347
1517
|
},
|
|
1348
1518
|
status: "SCHEDULED",
|
|
1349
|
-
updatedAt: "2026-06-
|
|
1519
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1350
1520
|
},
|
|
1351
1521
|
{
|
|
1352
1522
|
id: "760455",
|
|
@@ -1367,7 +1537,7 @@ var schedule_2026_default = [
|
|
|
1367
1537
|
flag: "\u{1F1E9}\u{1F1FF}"
|
|
1368
1538
|
},
|
|
1369
1539
|
status: "SCHEDULED",
|
|
1370
|
-
updatedAt: "2026-06-
|
|
1540
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1371
1541
|
},
|
|
1372
1542
|
{
|
|
1373
1543
|
id: "760461",
|
|
@@ -1388,7 +1558,7 @@ var schedule_2026_default = [
|
|
|
1388
1558
|
flag: "\u{1F1FA}\u{1F1FF}"
|
|
1389
1559
|
},
|
|
1390
1560
|
status: "SCHEDULED",
|
|
1391
|
-
updatedAt: "2026-06-
|
|
1561
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1392
1562
|
},
|
|
1393
1563
|
{
|
|
1394
1564
|
id: "760458",
|
|
@@ -1409,7 +1579,7 @@ var schedule_2026_default = [
|
|
|
1409
1579
|
flag: "\u{1F1EC}\u{1F1ED}"
|
|
1410
1580
|
},
|
|
1411
1581
|
status: "SCHEDULED",
|
|
1412
|
-
updatedAt: "2026-06-
|
|
1582
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1413
1583
|
},
|
|
1414
1584
|
{
|
|
1415
1585
|
id: "760460",
|
|
@@ -1430,7 +1600,7 @@ var schedule_2026_default = [
|
|
|
1430
1600
|
flag: "\u{1F1ED}\u{1F1F7}"
|
|
1431
1601
|
},
|
|
1432
1602
|
status: "SCHEDULED",
|
|
1433
|
-
updatedAt: "2026-06-
|
|
1603
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1434
1604
|
},
|
|
1435
1605
|
{
|
|
1436
1606
|
id: "760459",
|
|
@@ -1451,7 +1621,7 @@ var schedule_2026_default = [
|
|
|
1451
1621
|
flag: "\u{1F1E8}\u{1F1E9}"
|
|
1452
1622
|
},
|
|
1453
1623
|
status: "SCHEDULED",
|
|
1454
|
-
updatedAt: "2026-06-
|
|
1624
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1455
1625
|
},
|
|
1456
1626
|
{
|
|
1457
1627
|
id: "760462",
|
|
@@ -1472,7 +1642,7 @@ var schedule_2026_default = [
|
|
|
1472
1642
|
flag: "\u{1F1F6}\u{1F1E6}"
|
|
1473
1643
|
},
|
|
1474
1644
|
status: "SCHEDULED",
|
|
1475
|
-
updatedAt: "2026-06-
|
|
1645
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1476
1646
|
},
|
|
1477
1647
|
{
|
|
1478
1648
|
id: "760463",
|
|
@@ -1493,7 +1663,7 @@ var schedule_2026_default = [
|
|
|
1493
1663
|
flag: "\u{1F1E8}\u{1F1E6}"
|
|
1494
1664
|
},
|
|
1495
1665
|
status: "SCHEDULED",
|
|
1496
|
-
updatedAt: "2026-06-
|
|
1666
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1497
1667
|
},
|
|
1498
1668
|
{
|
|
1499
1669
|
id: "760464",
|
|
@@ -1514,7 +1684,7 @@ var schedule_2026_default = [
|
|
|
1514
1684
|
flag: "\u{1F1ED}\u{1F1F9}"
|
|
1515
1685
|
},
|
|
1516
1686
|
status: "SCHEDULED",
|
|
1517
|
-
updatedAt: "2026-06-
|
|
1687
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1518
1688
|
},
|
|
1519
1689
|
{
|
|
1520
1690
|
id: "760465",
|
|
@@ -1535,7 +1705,7 @@ var schedule_2026_default = [
|
|
|
1535
1705
|
flag: "\u{1F1E7}\u{1F1F7}"
|
|
1536
1706
|
},
|
|
1537
1707
|
status: "SCHEDULED",
|
|
1538
|
-
updatedAt: "2026-06-
|
|
1708
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1539
1709
|
},
|
|
1540
1710
|
{
|
|
1541
1711
|
id: "760467",
|
|
@@ -1556,7 +1726,7 @@ var schedule_2026_default = [
|
|
|
1556
1726
|
flag: "\u{1F1F2}\u{1F1FD}"
|
|
1557
1727
|
},
|
|
1558
1728
|
status: "SCHEDULED",
|
|
1559
|
-
updatedAt: "2026-06-
|
|
1729
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1560
1730
|
},
|
|
1561
1731
|
{
|
|
1562
1732
|
id: "760466",
|
|
@@ -1577,7 +1747,7 @@ var schedule_2026_default = [
|
|
|
1577
1747
|
flag: "\u{1F1F0}\u{1F1F7}"
|
|
1578
1748
|
},
|
|
1579
1749
|
status: "SCHEDULED",
|
|
1580
|
-
updatedAt: "2026-06-
|
|
1750
|
+
updatedAt: "2026-06-24T01:20:06.394Z"
|
|
1581
1751
|
},
|
|
1582
1752
|
{
|
|
1583
1753
|
id: "760473",
|
|
@@ -1598,7 +1768,7 @@ var schedule_2026_default = [
|
|
|
1598
1768
|
flag: "\u{1F1E8}\u{1F1EE}"
|
|
1599
1769
|
},
|
|
1600
1770
|
status: "SCHEDULED",
|
|
1601
|
-
updatedAt: "2026-06-
|
|
1771
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1602
1772
|
},
|
|
1603
1773
|
{
|
|
1604
1774
|
id: "760468",
|
|
@@ -1619,7 +1789,7 @@ var schedule_2026_default = [
|
|
|
1619
1789
|
flag: "\u{1F1E9}\u{1F1EA}"
|
|
1620
1790
|
},
|
|
1621
1791
|
status: "SCHEDULED",
|
|
1622
|
-
updatedAt: "2026-06-
|
|
1792
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1623
1793
|
},
|
|
1624
1794
|
{
|
|
1625
1795
|
id: "760471",
|
|
@@ -1640,7 +1810,7 @@ var schedule_2026_default = [
|
|
|
1640
1810
|
flag: "\u{1F1F8}\u{1F1EA}"
|
|
1641
1811
|
},
|
|
1642
1812
|
status: "SCHEDULED",
|
|
1643
|
-
updatedAt: "2026-06-
|
|
1813
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1644
1814
|
},
|
|
1645
1815
|
{
|
|
1646
1816
|
id: "760472",
|
|
@@ -1661,7 +1831,7 @@ var schedule_2026_default = [
|
|
|
1661
1831
|
flag: "\u{1F1F3}\u{1F1F1}"
|
|
1662
1832
|
},
|
|
1663
1833
|
status: "SCHEDULED",
|
|
1664
|
-
updatedAt: "2026-06-
|
|
1834
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1665
1835
|
},
|
|
1666
1836
|
{
|
|
1667
1837
|
id: "760469",
|
|
@@ -1682,7 +1852,7 @@ var schedule_2026_default = [
|
|
|
1682
1852
|
flag: "\u{1F1E6}\u{1F1FA}"
|
|
1683
1853
|
},
|
|
1684
1854
|
status: "SCHEDULED",
|
|
1685
|
-
updatedAt: "2026-06-
|
|
1855
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1686
1856
|
},
|
|
1687
1857
|
{
|
|
1688
1858
|
id: "760470",
|
|
@@ -1703,7 +1873,7 @@ var schedule_2026_default = [
|
|
|
1703
1873
|
flag: "\u{1F1FA}\u{1F1F8}"
|
|
1704
1874
|
},
|
|
1705
1875
|
status: "SCHEDULED",
|
|
1706
|
-
updatedAt: "2026-06-
|
|
1876
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1707
1877
|
},
|
|
1708
1878
|
{
|
|
1709
1879
|
id: "760475",
|
|
@@ -1724,7 +1894,7 @@ var schedule_2026_default = [
|
|
|
1724
1894
|
flag: "\u{1F1EB}\u{1F1F7}"
|
|
1725
1895
|
},
|
|
1726
1896
|
status: "SCHEDULED",
|
|
1727
|
-
updatedAt: "2026-06-
|
|
1897
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1728
1898
|
},
|
|
1729
1899
|
{
|
|
1730
1900
|
id: "760474",
|
|
@@ -1745,7 +1915,7 @@ var schedule_2026_default = [
|
|
|
1745
1915
|
flag: "\u{1F1EE}\u{1F1F6}"
|
|
1746
1916
|
},
|
|
1747
1917
|
status: "SCHEDULED",
|
|
1748
|
-
updatedAt: "2026-06-
|
|
1918
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1749
1919
|
},
|
|
1750
1920
|
{
|
|
1751
1921
|
id: "760478",
|
|
@@ -1766,7 +1936,7 @@ var schedule_2026_default = [
|
|
|
1766
1936
|
flag: "\u{1F1F8}\u{1F1E6}"
|
|
1767
1937
|
},
|
|
1768
1938
|
status: "SCHEDULED",
|
|
1769
|
-
updatedAt: "2026-06-
|
|
1939
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1770
1940
|
},
|
|
1771
1941
|
{
|
|
1772
1942
|
id: "760479",
|
|
@@ -1787,7 +1957,7 @@ var schedule_2026_default = [
|
|
|
1787
1957
|
flag: "\u{1F1EA}\u{1F1F8}"
|
|
1788
1958
|
},
|
|
1789
1959
|
status: "SCHEDULED",
|
|
1790
|
-
updatedAt: "2026-06-
|
|
1960
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1791
1961
|
},
|
|
1792
1962
|
{
|
|
1793
1963
|
id: "760476",
|
|
@@ -1808,7 +1978,7 @@ var schedule_2026_default = [
|
|
|
1808
1978
|
flag: "\u{1F1EE}\u{1F1F7}"
|
|
1809
1979
|
},
|
|
1810
1980
|
status: "SCHEDULED",
|
|
1811
|
-
updatedAt: "2026-06-
|
|
1981
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1812
1982
|
},
|
|
1813
1983
|
{
|
|
1814
1984
|
id: "760477",
|
|
@@ -1829,7 +1999,7 @@ var schedule_2026_default = [
|
|
|
1829
1999
|
flag: "\u{1F1E7}\u{1F1EA}"
|
|
1830
2000
|
},
|
|
1831
2001
|
status: "SCHEDULED",
|
|
1832
|
-
updatedAt: "2026-06-
|
|
2002
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1833
2003
|
},
|
|
1834
2004
|
{
|
|
1835
2005
|
id: "760480",
|
|
@@ -1850,7 +2020,7 @@ var schedule_2026_default = [
|
|
|
1850
2020
|
flag: "\u{1F1EC}\u{1F1ED}"
|
|
1851
2021
|
},
|
|
1852
2022
|
status: "SCHEDULED",
|
|
1853
|
-
updatedAt: "2026-06-
|
|
2023
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1854
2024
|
},
|
|
1855
2025
|
{
|
|
1856
2026
|
id: "760485",
|
|
@@ -1871,7 +2041,7 @@ var schedule_2026_default = [
|
|
|
1871
2041
|
flag: "\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}"
|
|
1872
2042
|
},
|
|
1873
2043
|
status: "SCHEDULED",
|
|
1874
|
-
updatedAt: "2026-06-
|
|
2044
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1875
2045
|
},
|
|
1876
2046
|
{
|
|
1877
2047
|
id: "760481",
|
|
@@ -1892,7 +2062,7 @@ var schedule_2026_default = [
|
|
|
1892
2062
|
flag: "\u{1F1F5}\u{1F1F9}"
|
|
1893
2063
|
},
|
|
1894
2064
|
status: "SCHEDULED",
|
|
1895
|
-
updatedAt: "2026-06-
|
|
2065
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1896
2066
|
},
|
|
1897
2067
|
{
|
|
1898
2068
|
id: "760482",
|
|
@@ -1913,7 +2083,7 @@ var schedule_2026_default = [
|
|
|
1913
2083
|
flag: "\u{1F1FA}\u{1F1FF}"
|
|
1914
2084
|
},
|
|
1915
2085
|
status: "SCHEDULED",
|
|
1916
|
-
updatedAt: "2026-06-
|
|
2086
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1917
2087
|
},
|
|
1918
2088
|
{
|
|
1919
2089
|
id: "760484",
|
|
@@ -1934,7 +2104,7 @@ var schedule_2026_default = [
|
|
|
1934
2104
|
flag: "\u{1F1E6}\u{1F1F9}"
|
|
1935
2105
|
},
|
|
1936
2106
|
status: "SCHEDULED",
|
|
1937
|
-
updatedAt: "2026-06-
|
|
2107
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1938
2108
|
},
|
|
1939
2109
|
{
|
|
1940
2110
|
id: "760483",
|
|
@@ -1955,7 +2125,7 @@ var schedule_2026_default = [
|
|
|
1955
2125
|
flag: "\u{1F1E6}\u{1F1F7}"
|
|
1956
2126
|
},
|
|
1957
2127
|
status: "SCHEDULED",
|
|
1958
|
-
updatedAt: "2026-06-
|
|
2128
|
+
updatedAt: "2026-06-24T01:20:06.523Z"
|
|
1959
2129
|
},
|
|
1960
2130
|
{
|
|
1961
2131
|
id: "760486",
|
|
@@ -1975,7 +2145,7 @@ var schedule_2026_default = [
|
|
|
1975
2145
|
flag: "\u{1F3F3}\uFE0F"
|
|
1976
2146
|
},
|
|
1977
2147
|
status: "SCHEDULED",
|
|
1978
|
-
updatedAt: "2026-06-
|
|
2148
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
1979
2149
|
},
|
|
1980
2150
|
{
|
|
1981
2151
|
id: "760487",
|
|
@@ -1995,7 +2165,7 @@ var schedule_2026_default = [
|
|
|
1995
2165
|
flag: "\u{1F3F3}\uFE0F"
|
|
1996
2166
|
},
|
|
1997
2167
|
status: "SCHEDULED",
|
|
1998
|
-
updatedAt: "2026-06-
|
|
2168
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
1999
2169
|
},
|
|
2000
2170
|
{
|
|
2001
2171
|
id: "760489",
|
|
@@ -2005,8 +2175,8 @@ var schedule_2026_default = [
|
|
|
2005
2175
|
city: "Foxborough, Massachusetts",
|
|
2006
2176
|
country: "USA",
|
|
2007
2177
|
home: {
|
|
2008
|
-
code: "
|
|
2009
|
-
name: "
|
|
2178
|
+
code: "TBD",
|
|
2179
|
+
name: "Germany",
|
|
2010
2180
|
flag: "\u{1F3F3}\uFE0F"
|
|
2011
2181
|
},
|
|
2012
2182
|
away: {
|
|
@@ -2015,7 +2185,7 @@ var schedule_2026_default = [
|
|
|
2015
2185
|
flag: "\u{1F3F3}\uFE0F"
|
|
2016
2186
|
},
|
|
2017
2187
|
status: "SCHEDULED",
|
|
2018
|
-
updatedAt: "2026-06-
|
|
2188
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2019
2189
|
},
|
|
2020
2190
|
{
|
|
2021
2191
|
id: "760488",
|
|
@@ -2035,7 +2205,7 @@ var schedule_2026_default = [
|
|
|
2035
2205
|
flag: "\u{1F3F3}\uFE0F"
|
|
2036
2206
|
},
|
|
2037
2207
|
status: "SCHEDULED",
|
|
2038
|
-
updatedAt: "2026-06-
|
|
2208
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2039
2209
|
},
|
|
2040
2210
|
{
|
|
2041
2211
|
id: "760490",
|
|
@@ -2055,7 +2225,7 @@ var schedule_2026_default = [
|
|
|
2055
2225
|
flag: "\u{1F3F3}\uFE0F"
|
|
2056
2226
|
},
|
|
2057
2227
|
status: "SCHEDULED",
|
|
2058
|
-
updatedAt: "2026-06-
|
|
2228
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2059
2229
|
},
|
|
2060
2230
|
{
|
|
2061
2231
|
id: "760492",
|
|
@@ -2075,7 +2245,7 @@ var schedule_2026_default = [
|
|
|
2075
2245
|
flag: "\u{1F3F3}\uFE0F"
|
|
2076
2246
|
},
|
|
2077
2247
|
status: "SCHEDULED",
|
|
2078
|
-
updatedAt: "2026-06-
|
|
2248
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2079
2249
|
},
|
|
2080
2250
|
{
|
|
2081
2251
|
id: "760491",
|
|
@@ -2085,8 +2255,8 @@ var schedule_2026_default = [
|
|
|
2085
2255
|
city: "Mexico City",
|
|
2086
2256
|
country: "Mexico",
|
|
2087
2257
|
home: {
|
|
2088
|
-
code: "
|
|
2089
|
-
name: "
|
|
2258
|
+
code: "TBD",
|
|
2259
|
+
name: "Mexico",
|
|
2090
2260
|
flag: "\u{1F3F3}\uFE0F"
|
|
2091
2261
|
},
|
|
2092
2262
|
away: {
|
|
@@ -2095,7 +2265,7 @@ var schedule_2026_default = [
|
|
|
2095
2265
|
flag: "\u{1F3F3}\uFE0F"
|
|
2096
2266
|
},
|
|
2097
2267
|
status: "SCHEDULED",
|
|
2098
|
-
updatedAt: "2026-06-
|
|
2268
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2099
2269
|
},
|
|
2100
2270
|
{
|
|
2101
2271
|
id: "760495",
|
|
@@ -2115,7 +2285,7 @@ var schedule_2026_default = [
|
|
|
2115
2285
|
flag: "\u{1F3F3}\uFE0F"
|
|
2116
2286
|
},
|
|
2117
2287
|
status: "SCHEDULED",
|
|
2118
|
-
updatedAt: "2026-06-
|
|
2288
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2119
2289
|
},
|
|
2120
2290
|
{
|
|
2121
2291
|
id: "760493",
|
|
@@ -2135,7 +2305,7 @@ var schedule_2026_default = [
|
|
|
2135
2305
|
flag: "\u{1F3F3}\uFE0F"
|
|
2136
2306
|
},
|
|
2137
2307
|
status: "SCHEDULED",
|
|
2138
|
-
updatedAt: "2026-06-
|
|
2308
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2139
2309
|
},
|
|
2140
2310
|
{
|
|
2141
2311
|
id: "760494",
|
|
@@ -2145,8 +2315,8 @@ var schedule_2026_default = [
|
|
|
2145
2315
|
city: "Santa Clara, California",
|
|
2146
2316
|
country: "USA",
|
|
2147
2317
|
home: {
|
|
2148
|
-
code: "
|
|
2149
|
-
name: "
|
|
2318
|
+
code: "TBD",
|
|
2319
|
+
name: "United States",
|
|
2150
2320
|
flag: "\u{1F3F3}\uFE0F"
|
|
2151
2321
|
},
|
|
2152
2322
|
away: {
|
|
@@ -2155,7 +2325,7 @@ var schedule_2026_default = [
|
|
|
2155
2325
|
flag: "\u{1F3F3}\uFE0F"
|
|
2156
2326
|
},
|
|
2157
2327
|
status: "SCHEDULED",
|
|
2158
|
-
updatedAt: "2026-06-
|
|
2328
|
+
updatedAt: "2026-06-24T01:20:06.529Z"
|
|
2159
2329
|
},
|
|
2160
2330
|
{
|
|
2161
2331
|
id: "760497",
|
|
@@ -2175,7 +2345,7 @@ var schedule_2026_default = [
|
|
|
2175
2345
|
flag: "\u{1F3F3}\uFE0F"
|
|
2176
2346
|
},
|
|
2177
2347
|
status: "SCHEDULED",
|
|
2178
|
-
updatedAt: "2026-06-
|
|
2348
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2179
2349
|
},
|
|
2180
2350
|
{
|
|
2181
2351
|
id: "760496",
|
|
@@ -2195,7 +2365,7 @@ var schedule_2026_default = [
|
|
|
2195
2365
|
flag: "\u{1F3F3}\uFE0F"
|
|
2196
2366
|
},
|
|
2197
2367
|
status: "SCHEDULED",
|
|
2198
|
-
updatedAt: "2026-06-
|
|
2368
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2199
2369
|
},
|
|
2200
2370
|
{
|
|
2201
2371
|
id: "760498",
|
|
@@ -2215,7 +2385,7 @@ var schedule_2026_default = [
|
|
|
2215
2385
|
flag: "\u{1F3F3}\uFE0F"
|
|
2216
2386
|
},
|
|
2217
2387
|
status: "SCHEDULED",
|
|
2218
|
-
updatedAt: "2026-06-
|
|
2388
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2219
2389
|
},
|
|
2220
2390
|
{
|
|
2221
2391
|
id: "760499",
|
|
@@ -2235,7 +2405,7 @@ var schedule_2026_default = [
|
|
|
2235
2405
|
flag: "\u{1F3F3}\uFE0F"
|
|
2236
2406
|
},
|
|
2237
2407
|
status: "SCHEDULED",
|
|
2238
|
-
updatedAt: "2026-06-
|
|
2408
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2239
2409
|
},
|
|
2240
2410
|
{
|
|
2241
2411
|
id: "760500",
|
|
@@ -2245,8 +2415,8 @@ var schedule_2026_default = [
|
|
|
2245
2415
|
city: "Miami Gardens, Florida",
|
|
2246
2416
|
country: "USA",
|
|
2247
2417
|
home: {
|
|
2248
|
-
code: "
|
|
2249
|
-
name: "
|
|
2418
|
+
code: "TBD",
|
|
2419
|
+
name: "Argentina",
|
|
2250
2420
|
flag: "\u{1F3F3}\uFE0F"
|
|
2251
2421
|
},
|
|
2252
2422
|
away: {
|
|
@@ -2255,7 +2425,7 @@ var schedule_2026_default = [
|
|
|
2255
2425
|
flag: "\u{1F3F3}\uFE0F"
|
|
2256
2426
|
},
|
|
2257
2427
|
status: "SCHEDULED",
|
|
2258
|
-
updatedAt: "2026-06-
|
|
2428
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2259
2429
|
},
|
|
2260
2430
|
{
|
|
2261
2431
|
id: "760501",
|
|
@@ -2275,7 +2445,7 @@ var schedule_2026_default = [
|
|
|
2275
2445
|
flag: "\u{1F3F3}\uFE0F"
|
|
2276
2446
|
},
|
|
2277
2447
|
status: "SCHEDULED",
|
|
2278
|
-
updatedAt: "2026-06-
|
|
2448
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2279
2449
|
},
|
|
2280
2450
|
{
|
|
2281
2451
|
id: "760502",
|
|
@@ -2295,7 +2465,7 @@ var schedule_2026_default = [
|
|
|
2295
2465
|
flag: "\u{1F3F3}\uFE0F"
|
|
2296
2466
|
},
|
|
2297
2467
|
status: "SCHEDULED",
|
|
2298
|
-
updatedAt: "2026-06-
|
|
2468
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2299
2469
|
},
|
|
2300
2470
|
{
|
|
2301
2471
|
id: "760503",
|
|
@@ -2315,7 +2485,7 @@ var schedule_2026_default = [
|
|
|
2315
2485
|
flag: "\u{1F3F3}\uFE0F"
|
|
2316
2486
|
},
|
|
2317
2487
|
status: "SCHEDULED",
|
|
2318
|
-
updatedAt: "2026-06-
|
|
2488
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2319
2489
|
},
|
|
2320
2490
|
{
|
|
2321
2491
|
id: "760504",
|
|
@@ -2335,7 +2505,7 @@ var schedule_2026_default = [
|
|
|
2335
2505
|
flag: "\u{1F3F3}\uFE0F"
|
|
2336
2506
|
},
|
|
2337
2507
|
status: "SCHEDULED",
|
|
2338
|
-
updatedAt: "2026-06-
|
|
2508
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2339
2509
|
},
|
|
2340
2510
|
{
|
|
2341
2511
|
id: "760505",
|
|
@@ -2355,7 +2525,7 @@ var schedule_2026_default = [
|
|
|
2355
2525
|
flag: "\u{1F3F3}\uFE0F"
|
|
2356
2526
|
},
|
|
2357
2527
|
status: "SCHEDULED",
|
|
2358
|
-
updatedAt: "2026-06-
|
|
2528
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2359
2529
|
},
|
|
2360
2530
|
{
|
|
2361
2531
|
id: "760506",
|
|
@@ -2375,7 +2545,7 @@ var schedule_2026_default = [
|
|
|
2375
2545
|
flag: "\u{1F3F3}\uFE0F"
|
|
2376
2546
|
},
|
|
2377
2547
|
status: "SCHEDULED",
|
|
2378
|
-
updatedAt: "2026-06-
|
|
2548
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2379
2549
|
},
|
|
2380
2550
|
{
|
|
2381
2551
|
id: "760507",
|
|
@@ -2395,7 +2565,7 @@ var schedule_2026_default = [
|
|
|
2395
2565
|
flag: "\u{1F3F3}\uFE0F"
|
|
2396
2566
|
},
|
|
2397
2567
|
status: "SCHEDULED",
|
|
2398
|
-
updatedAt: "2026-06-
|
|
2568
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2399
2569
|
},
|
|
2400
2570
|
{
|
|
2401
2571
|
id: "760509",
|
|
@@ -2415,7 +2585,7 @@ var schedule_2026_default = [
|
|
|
2415
2585
|
flag: "\u{1F3F3}\uFE0F"
|
|
2416
2586
|
},
|
|
2417
2587
|
status: "SCHEDULED",
|
|
2418
|
-
updatedAt: "2026-06-
|
|
2588
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2419
2589
|
},
|
|
2420
2590
|
{
|
|
2421
2591
|
id: "760508",
|
|
@@ -2435,7 +2605,7 @@ var schedule_2026_default = [
|
|
|
2435
2605
|
flag: "\u{1F3F3}\uFE0F"
|
|
2436
2606
|
},
|
|
2437
2607
|
status: "SCHEDULED",
|
|
2438
|
-
updatedAt: "2026-06-
|
|
2608
|
+
updatedAt: "2026-06-24T01:20:06.593Z"
|
|
2439
2609
|
},
|
|
2440
2610
|
{
|
|
2441
2611
|
id: "760510",
|
|
@@ -2445,17 +2615,17 @@ var schedule_2026_default = [
|
|
|
2445
2615
|
city: "Foxborough, Massachusetts",
|
|
2446
2616
|
country: "USA",
|
|
2447
2617
|
home: {
|
|
2448
|
-
code: "
|
|
2618
|
+
code: "RD32",
|
|
2449
2619
|
name: "Round of 16 1 Winner",
|
|
2450
2620
|
flag: "\u{1F3F3}\uFE0F"
|
|
2451
2621
|
},
|
|
2452
2622
|
away: {
|
|
2453
|
-
code: "
|
|
2623
|
+
code: "RD32",
|
|
2454
2624
|
name: "Round of 16 2 Winner",
|
|
2455
2625
|
flag: "\u{1F3F3}\uFE0F"
|
|
2456
2626
|
},
|
|
2457
2627
|
status: "SCHEDULED",
|
|
2458
|
-
updatedAt: "2026-06-
|
|
2628
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2459
2629
|
},
|
|
2460
2630
|
{
|
|
2461
2631
|
id: "760511",
|
|
@@ -2465,17 +2635,17 @@ var schedule_2026_default = [
|
|
|
2465
2635
|
city: "Inglewood, California",
|
|
2466
2636
|
country: "USA",
|
|
2467
2637
|
home: {
|
|
2468
|
-
code: "
|
|
2638
|
+
code: "RD32",
|
|
2469
2639
|
name: "Round of 16 5 Winner",
|
|
2470
2640
|
flag: "\u{1F3F3}\uFE0F"
|
|
2471
2641
|
},
|
|
2472
2642
|
away: {
|
|
2473
|
-
code: "
|
|
2643
|
+
code: "RD32",
|
|
2474
2644
|
name: "Round of 16 6 Winner",
|
|
2475
2645
|
flag: "\u{1F3F3}\uFE0F"
|
|
2476
2646
|
},
|
|
2477
2647
|
status: "SCHEDULED",
|
|
2478
|
-
updatedAt: "2026-06-
|
|
2648
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2479
2649
|
},
|
|
2480
2650
|
{
|
|
2481
2651
|
id: "760512",
|
|
@@ -2485,17 +2655,17 @@ var schedule_2026_default = [
|
|
|
2485
2655
|
city: "Miami Gardens, Florida",
|
|
2486
2656
|
country: "USA",
|
|
2487
2657
|
home: {
|
|
2488
|
-
code: "
|
|
2658
|
+
code: "RD32",
|
|
2489
2659
|
name: "Round of 16 3 Winner",
|
|
2490
2660
|
flag: "\u{1F3F3}\uFE0F"
|
|
2491
2661
|
},
|
|
2492
2662
|
away: {
|
|
2493
|
-
code: "
|
|
2663
|
+
code: "RD32",
|
|
2494
2664
|
name: "Round of 16 4 Winner",
|
|
2495
2665
|
flag: "\u{1F3F3}\uFE0F"
|
|
2496
2666
|
},
|
|
2497
2667
|
status: "SCHEDULED",
|
|
2498
|
-
updatedAt: "2026-06-
|
|
2668
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2499
2669
|
},
|
|
2500
2670
|
{
|
|
2501
2671
|
id: "760513",
|
|
@@ -2505,17 +2675,17 @@ var schedule_2026_default = [
|
|
|
2505
2675
|
city: "Kansas City, Missouri",
|
|
2506
2676
|
country: "USA",
|
|
2507
2677
|
home: {
|
|
2508
|
-
code: "
|
|
2678
|
+
code: "RD32",
|
|
2509
2679
|
name: "Round of 16 7 Winner",
|
|
2510
2680
|
flag: "\u{1F3F3}\uFE0F"
|
|
2511
2681
|
},
|
|
2512
2682
|
away: {
|
|
2513
|
-
code: "
|
|
2683
|
+
code: "RD32",
|
|
2514
2684
|
name: "Round of 16 8 Winner",
|
|
2515
2685
|
flag: "\u{1F3F3}\uFE0F"
|
|
2516
2686
|
},
|
|
2517
2687
|
status: "SCHEDULED",
|
|
2518
|
-
updatedAt: "2026-06-
|
|
2688
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2519
2689
|
},
|
|
2520
2690
|
{
|
|
2521
2691
|
id: "760514",
|
|
@@ -2525,17 +2695,17 @@ var schedule_2026_default = [
|
|
|
2525
2695
|
city: "Arlington, Texas",
|
|
2526
2696
|
country: "USA",
|
|
2527
2697
|
home: {
|
|
2528
|
-
code: "
|
|
2698
|
+
code: "RD32",
|
|
2529
2699
|
name: "Quarterfinal 1 Winner",
|
|
2530
2700
|
flag: "\u{1F3F3}\uFE0F"
|
|
2531
2701
|
},
|
|
2532
2702
|
away: {
|
|
2533
|
-
code: "
|
|
2703
|
+
code: "RD32",
|
|
2534
2704
|
name: "Quarterfinal 2 Winner",
|
|
2535
2705
|
flag: "\u{1F3F3}\uFE0F"
|
|
2536
2706
|
},
|
|
2537
2707
|
status: "SCHEDULED",
|
|
2538
|
-
updatedAt: "2026-06-
|
|
2708
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2539
2709
|
},
|
|
2540
2710
|
{
|
|
2541
2711
|
id: "760515",
|
|
@@ -2545,17 +2715,17 @@ var schedule_2026_default = [
|
|
|
2545
2715
|
city: "Atlanta, Georgia",
|
|
2546
2716
|
country: "USA",
|
|
2547
2717
|
home: {
|
|
2548
|
-
code: "
|
|
2718
|
+
code: "RD32",
|
|
2549
2719
|
name: "Quarterfinal 3 Winner",
|
|
2550
2720
|
flag: "\u{1F3F3}\uFE0F"
|
|
2551
2721
|
},
|
|
2552
2722
|
away: {
|
|
2553
|
-
code: "
|
|
2723
|
+
code: "RD32",
|
|
2554
2724
|
name: "Quarterfinal 4 Winner",
|
|
2555
2725
|
flag: "\u{1F3F3}\uFE0F"
|
|
2556
2726
|
},
|
|
2557
2727
|
status: "SCHEDULED",
|
|
2558
|
-
updatedAt: "2026-06-
|
|
2728
|
+
updatedAt: "2026-06-24T01:20:06.650Z"
|
|
2559
2729
|
},
|
|
2560
2730
|
{
|
|
2561
2731
|
id: "760516",
|
|
@@ -2565,17 +2735,17 @@ var schedule_2026_default = [
|
|
|
2565
2735
|
city: "Miami Gardens, Florida",
|
|
2566
2736
|
country: "USA",
|
|
2567
2737
|
home: {
|
|
2568
|
-
code: "
|
|
2738
|
+
code: "RD32",
|
|
2569
2739
|
name: "Semifinal 1 Loser",
|
|
2570
2740
|
flag: "\u{1F3F3}\uFE0F"
|
|
2571
2741
|
},
|
|
2572
2742
|
away: {
|
|
2573
|
-
code: "
|
|
2743
|
+
code: "RD32",
|
|
2574
2744
|
name: "Semifinal 2 Loser",
|
|
2575
2745
|
flag: "\u{1F3F3}\uFE0F"
|
|
2576
2746
|
},
|
|
2577
2747
|
status: "SCHEDULED",
|
|
2578
|
-
updatedAt: "2026-06-
|
|
2748
|
+
updatedAt: "2026-06-24T01:20:06.749Z"
|
|
2579
2749
|
},
|
|
2580
2750
|
{
|
|
2581
2751
|
id: "760517",
|
|
@@ -2585,22 +2755,93 @@ var schedule_2026_default = [
|
|
|
2585
2755
|
city: "East Rutherford, New Jersey",
|
|
2586
2756
|
country: "USA",
|
|
2587
2757
|
home: {
|
|
2588
|
-
code: "
|
|
2758
|
+
code: "RD32",
|
|
2589
2759
|
name: "Semifinal 1 Winner",
|
|
2590
2760
|
flag: "\u{1F3F3}\uFE0F"
|
|
2591
2761
|
},
|
|
2592
2762
|
away: {
|
|
2593
|
-
code: "
|
|
2763
|
+
code: "RD32",
|
|
2594
2764
|
name: "Semifinal 2 Winner",
|
|
2595
2765
|
flag: "\u{1F3F3}\uFE0F"
|
|
2596
2766
|
},
|
|
2597
2767
|
status: "SCHEDULED",
|
|
2598
|
-
updatedAt: "2026-06-
|
|
2768
|
+
updatedAt: "2026-06-24T01:20:06.749Z"
|
|
2599
2769
|
}
|
|
2600
2770
|
];
|
|
2601
2771
|
|
|
2772
|
+
// src/bracket/placeholders.ts
|
|
2773
|
+
var PLACEHOLDER_FLAG = "\u{1F3F3}\uFE0F";
|
|
2774
|
+
function winnerName(stage, index) {
|
|
2775
|
+
switch (stage) {
|
|
2776
|
+
case "R32":
|
|
2777
|
+
return `Round of 32 ${index} Winner`;
|
|
2778
|
+
case "R16":
|
|
2779
|
+
return `Round of 16 ${index} Winner`;
|
|
2780
|
+
case "QF":
|
|
2781
|
+
return `Quarterfinal ${index} Winner`;
|
|
2782
|
+
case "SF":
|
|
2783
|
+
return `Semifinal ${index} Winner`;
|
|
2784
|
+
default:
|
|
2785
|
+
return `${stage}-${index} Winner`;
|
|
2786
|
+
}
|
|
2787
|
+
}
|
|
2788
|
+
function slotRefToTeam(ref) {
|
|
2789
|
+
switch (ref.kind) {
|
|
2790
|
+
case "group":
|
|
2791
|
+
return {
|
|
2792
|
+
code: ref.position === 1 ? `1${ref.group}` : `2${ref.group}`,
|
|
2793
|
+
name: ref.position === 1 ? `Group ${ref.group} Winner` : `Group ${ref.group} 2nd Place`,
|
|
2794
|
+
flag: PLACEHOLDER_FLAG
|
|
2795
|
+
};
|
|
2796
|
+
case "third":
|
|
2797
|
+
return {
|
|
2798
|
+
code: "3RD",
|
|
2799
|
+
name: `Third Place Group ${ref.groups.join("/")}`,
|
|
2800
|
+
flag: PLACEHOLDER_FLAG
|
|
2801
|
+
};
|
|
2802
|
+
case "winner":
|
|
2803
|
+
return { code: "RD32", name: winnerName(ref.stage, ref.index), flag: PLACEHOLDER_FLAG };
|
|
2804
|
+
case "loser":
|
|
2805
|
+
return {
|
|
2806
|
+
code: "RD32",
|
|
2807
|
+
name: `Semifinal ${ref.index} Loser`,
|
|
2808
|
+
flag: PLACEHOLDER_FLAG
|
|
2809
|
+
};
|
|
2810
|
+
case "seed":
|
|
2811
|
+
return { code: "TBD", name: ref.label, flag: PLACEHOLDER_FLAG };
|
|
2812
|
+
default:
|
|
2813
|
+
return { code: "TBD", name: "TBD", flag: PLACEHOLDER_FLAG };
|
|
2814
|
+
}
|
|
2815
|
+
}
|
|
2816
|
+
function isResolvedNation(team) {
|
|
2817
|
+
return team.flag !== PLACEHOLDER_FLAG;
|
|
2818
|
+
}
|
|
2819
|
+
|
|
2602
2820
|
// src/schedule.ts
|
|
2603
2821
|
var SCHEDULE = schedule_2026_default;
|
|
2822
|
+
function sanitizeBundledFixture(m, node) {
|
|
2823
|
+
const base = {
|
|
2824
|
+
id: m.id,
|
|
2825
|
+
stage: m.stage,
|
|
2826
|
+
group: m.group,
|
|
2827
|
+
kickoff: m.kickoff,
|
|
2828
|
+
venue: m.venue,
|
|
2829
|
+
city: m.city,
|
|
2830
|
+
country: m.country,
|
|
2831
|
+
home: m.home,
|
|
2832
|
+
away: m.away,
|
|
2833
|
+
status: "SCHEDULED",
|
|
2834
|
+
updatedAt: m.updatedAt
|
|
2835
|
+
};
|
|
2836
|
+
if (node && m.stage !== "GROUP" && m.stage !== "FRIENDLY") {
|
|
2837
|
+
return {
|
|
2838
|
+
...base,
|
|
2839
|
+
home: slotRefToTeam(node.home),
|
|
2840
|
+
away: slotRefToTeam(node.away)
|
|
2841
|
+
};
|
|
2842
|
+
}
|
|
2843
|
+
return base;
|
|
2844
|
+
}
|
|
2604
2845
|
function allFixtures() {
|
|
2605
2846
|
return SCHEDULE;
|
|
2606
2847
|
}
|
|
@@ -2660,11 +2901,11 @@ function blankRow(team) {
|
|
|
2660
2901
|
}
|
|
2661
2902
|
function computeStandings(matches) {
|
|
2662
2903
|
const rows = /* @__PURE__ */ new Map();
|
|
2663
|
-
const ensure = (
|
|
2664
|
-
let r = rows.get(
|
|
2904
|
+
const ensure = (t2) => {
|
|
2905
|
+
let r = rows.get(t2.code);
|
|
2665
2906
|
if (!r) {
|
|
2666
|
-
r = blankRow(
|
|
2667
|
-
rows.set(
|
|
2907
|
+
r = blankRow(t2);
|
|
2908
|
+
rows.set(t2.code, r);
|
|
2668
2909
|
}
|
|
2669
2910
|
return r;
|
|
2670
2911
|
};
|
|
@@ -2699,6 +2940,14 @@ function computeStandings(matches) {
|
|
|
2699
2940
|
(a, b) => b.points - a.points || b.goalDiff - a.goalDiff || b.goalsFor - a.goalsFor || a.team.name.localeCompare(b.team.name)
|
|
2700
2941
|
);
|
|
2701
2942
|
}
|
|
2943
|
+
function rosterAtZero(matches) {
|
|
2944
|
+
const teams = /* @__PURE__ */ new Map();
|
|
2945
|
+
for (const m of matches) {
|
|
2946
|
+
teams.set(m.home.code, m.home);
|
|
2947
|
+
teams.set(m.away.code, m.away);
|
|
2948
|
+
}
|
|
2949
|
+
return [...teams.values()].sort((a, b) => a.name.localeCompare(b.name)).map(blankRow);
|
|
2950
|
+
}
|
|
2702
2951
|
|
|
2703
2952
|
// src/adapters/espn.ts
|
|
2704
2953
|
var ESPN_SOCCER = "https://site.api.espn.com/apis/site/v2/sports/soccer";
|
|
@@ -2747,10 +2996,10 @@ function toInt(s) {
|
|
|
2747
2996
|
const n = parseInt(s, 10);
|
|
2748
2997
|
return Number.isFinite(n) ? n : void 0;
|
|
2749
2998
|
}
|
|
2750
|
-
function toTeam(
|
|
2751
|
-
const name =
|
|
2752
|
-
const code = (
|
|
2753
|
-
return { code, name, flag: nationToFlag(
|
|
2999
|
+
function toTeam(t2) {
|
|
3000
|
+
const name = t2?.displayName ?? t2?.name ?? t2?.location ?? t2?.shortDisplayName ?? "TBD";
|
|
3001
|
+
const code = (t2?.abbreviation ?? name.slice(0, 3)).toUpperCase();
|
|
3002
|
+
return { code, name, flag: nationToFlag(t2?.displayName ?? t2?.abbreviation ?? name) };
|
|
2754
3003
|
}
|
|
2755
3004
|
function mapEspnEvent(ev, ctx = {}) {
|
|
2756
3005
|
const comp = ev.competitions?.[0];
|
|
@@ -2768,6 +3017,11 @@ function mapEspnEvent(ev, ctx = {}) {
|
|
|
2768
3017
|
const hs = toInt(homeC?.score);
|
|
2769
3018
|
const as = toInt(awayC?.score);
|
|
2770
3019
|
const hasScore = status !== "SCHEDULED" && hs !== void 0 && as !== void 0;
|
|
3020
|
+
let winnerCode;
|
|
3021
|
+
if (isFinished(status)) {
|
|
3022
|
+
if (homeC?.winner) winnerCode = home.code;
|
|
3023
|
+
else if (awayC?.winner) winnerCode = away.code;
|
|
3024
|
+
}
|
|
2771
3025
|
return {
|
|
2772
3026
|
id: ev.id,
|
|
2773
3027
|
stage,
|
|
@@ -2781,6 +3035,7 @@ function mapEspnEvent(ev, ctx = {}) {
|
|
|
2781
3035
|
score: hasScore ? { home: hs, away: as } : void 0,
|
|
2782
3036
|
minute: parseMinute(ev.status ?? comp?.status),
|
|
2783
3037
|
status,
|
|
3038
|
+
winnerCode,
|
|
2784
3039
|
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
2785
3040
|
};
|
|
2786
3041
|
}
|
|
@@ -2872,7 +3127,7 @@ var EspnAdapter = class {
|
|
|
2872
3127
|
const map = {};
|
|
2873
3128
|
try {
|
|
2874
3129
|
const tables = parseStandings(await this.get(this.standingsUrl()));
|
|
2875
|
-
for (const
|
|
3130
|
+
for (const t2 of tables) for (const r of t2.rows) map[r.team.code] = t2.group;
|
|
2876
3131
|
} catch {
|
|
2877
3132
|
}
|
|
2878
3133
|
this.groupMap = map;
|
|
@@ -2909,6 +3164,854 @@ var EspnAdapter = class {
|
|
|
2909
3164
|
}
|
|
2910
3165
|
};
|
|
2911
3166
|
|
|
3167
|
+
// src/bracket/parse.ts
|
|
3168
|
+
var PLACEHOLDER_FLAG2 = "\u{1F3F3}\uFE0F";
|
|
3169
|
+
function parseTeamSlot(team) {
|
|
3170
|
+
const name = team.name;
|
|
3171
|
+
let m = name.match(/^Group ([A-L]) Winner$/);
|
|
3172
|
+
if (m) return { kind: "group", position: 1, group: m[1] };
|
|
3173
|
+
m = name.match(/^Group ([A-L]) 2nd Place$/);
|
|
3174
|
+
if (m) return { kind: "group", position: 2, group: m[1] };
|
|
3175
|
+
m = name.match(/^Third Place Group ([A-L](?:\/[A-L])+)$/);
|
|
3176
|
+
if (m) return { kind: "third", groups: m[1].split("/") };
|
|
3177
|
+
m = name.match(/^Round of 32 (\d+) Winner$/);
|
|
3178
|
+
if (m) return { kind: "winner", stage: "R32", index: Number(m[1]) };
|
|
3179
|
+
m = name.match(/^Round of 16 (\d+) Winner$/);
|
|
3180
|
+
if (m) return { kind: "winner", stage: "R16", index: Number(m[1]) };
|
|
3181
|
+
m = name.match(/^Quarterfinal (\d+) Winner$/);
|
|
3182
|
+
if (m) return { kind: "winner", stage: "QF", index: Number(m[1]) };
|
|
3183
|
+
m = name.match(/^Semifinal (\d+) Winner$/);
|
|
3184
|
+
if (m) return { kind: "winner", stage: "SF", index: Number(m[1]) };
|
|
3185
|
+
m = name.match(/^Semifinal (\d+) Loser$/);
|
|
3186
|
+
if (m) return { kind: "loser", stage: "SF", index: Number(m[1]) };
|
|
3187
|
+
if (isResolvedNation(team)) {
|
|
3188
|
+
return { kind: "seed", label: team.name, code: "TBD" };
|
|
3189
|
+
}
|
|
3190
|
+
if (team.flag === PLACEHOLDER_FLAG2 && team.code === "TBD") {
|
|
3191
|
+
return { kind: "seed", label: team.name, code: "TBD" };
|
|
3192
|
+
}
|
|
3193
|
+
return null;
|
|
3194
|
+
}
|
|
3195
|
+
|
|
3196
|
+
// src/bracket/types.ts
|
|
3197
|
+
var BRACKET_STAGE_ORDER = ["R32", "R16", "QF", "SF", "3P", "F"];
|
|
3198
|
+
var EXPECTED_KNOCKOUT_COUNTS = {
|
|
3199
|
+
R32: 16,
|
|
3200
|
+
R16: 8,
|
|
3201
|
+
QF: 4,
|
|
3202
|
+
SF: 2,
|
|
3203
|
+
"3P": 1,
|
|
3204
|
+
F: 1
|
|
3205
|
+
};
|
|
3206
|
+
function teamFromMatch(match, code) {
|
|
3207
|
+
if (match.home.code === code) return match.home;
|
|
3208
|
+
if (match.away.code === code) return match.away;
|
|
3209
|
+
return void 0;
|
|
3210
|
+
}
|
|
3211
|
+
|
|
3212
|
+
// src/bracket/build.ts
|
|
3213
|
+
function matchKey(stage, index) {
|
|
3214
|
+
return `${stage}:${index}`;
|
|
3215
|
+
}
|
|
3216
|
+
function orderByBracketIndex(matches) {
|
|
3217
|
+
return [...matches].sort((a, b) => Number(a.id) - Number(b.id));
|
|
3218
|
+
}
|
|
3219
|
+
function buildBracketTopology(matches, generatedAt) {
|
|
3220
|
+
const knockout = matches.filter((m) => m.stage !== "GROUP" && m.stage !== "FRIENDLY");
|
|
3221
|
+
const problems = [];
|
|
3222
|
+
const nodes = [];
|
|
3223
|
+
for (const stage of BRACKET_STAGE_ORDER) {
|
|
3224
|
+
const stageMatches = orderByBracketIndex(knockout.filter((m) => m.stage === stage));
|
|
3225
|
+
const expected = EXPECTED_KNOCKOUT_COUNTS[stage];
|
|
3226
|
+
if (expected != null && stageMatches.length !== expected) {
|
|
3227
|
+
problems.push(`stage ${stage}: expected ${expected}, got ${stageMatches.length}`);
|
|
3228
|
+
}
|
|
3229
|
+
stageMatches.forEach((m, i) => {
|
|
3230
|
+
const home = parseTeamSlot(m.home);
|
|
3231
|
+
const away = parseTeamSlot(m.away);
|
|
3232
|
+
if (!home) problems.push(`${m.id}: unparsed home slot "${m.home.name}"`);
|
|
3233
|
+
if (!away) problems.push(`${m.id}: unparsed away slot "${m.away.name}"`);
|
|
3234
|
+
if (home && away) {
|
|
3235
|
+
nodes.push({ matchId: m.id, stage, index: i + 1, home, away });
|
|
3236
|
+
}
|
|
3237
|
+
});
|
|
3238
|
+
}
|
|
3239
|
+
const knockoutIds = new Set(knockout.map((m) => m.id));
|
|
3240
|
+
const topologyIds = new Set(nodes.map((n) => n.matchId));
|
|
3241
|
+
for (const id of knockoutIds) {
|
|
3242
|
+
if (!topologyIds.has(id)) problems.push(`knockout fixture ${id} missing from topology`);
|
|
3243
|
+
}
|
|
3244
|
+
for (const id of topologyIds) {
|
|
3245
|
+
if (!knockoutIds.has(id)) problems.push(`topology match ${id} not in knockout schedule`);
|
|
3246
|
+
}
|
|
3247
|
+
validateWinnerChain(nodes, problems);
|
|
3248
|
+
validateThirdPlace(nodes, problems);
|
|
3249
|
+
validateBracketIndexing(knockout, nodes, problems);
|
|
3250
|
+
if (problems.length > 0) {
|
|
3251
|
+
throw new Error(
|
|
3252
|
+
`bracket topology validation failed:
|
|
3253
|
+
${problems.map((p) => ` - ${p}`).join("\n")}`
|
|
3254
|
+
);
|
|
3255
|
+
}
|
|
3256
|
+
return { generatedAt, stages: [...BRACKET_STAGE_ORDER], matches: nodes };
|
|
3257
|
+
}
|
|
3258
|
+
function validateBracketIndexing(knockout, nodes, problems) {
|
|
3259
|
+
for (const stage of ["R32", "R16"]) {
|
|
3260
|
+
const byKickoff2 = [...knockout.filter((m) => m.stage === stage)].sort(
|
|
3261
|
+
(a, b) => a.kickoff.localeCompare(b.kickoff)
|
|
3262
|
+
);
|
|
3263
|
+
const byId = orderByBracketIndex(knockout.filter((m) => m.stage === stage));
|
|
3264
|
+
const kickoffIds = byKickoff2.map((m) => m.id).join(",");
|
|
3265
|
+
const idIds = byId.map((m) => m.id).join(",");
|
|
3266
|
+
if (kickoffIds !== idIds) {
|
|
3267
|
+
const diverged = byKickoff2.map((m, i) => ({ kickoffRank: i + 1, idRank: byId.findIndex((x) => x.id === m.id) + 1, id: m.id })).filter((x) => x.kickoffRank !== x.idRank);
|
|
3268
|
+
if (diverged.length > 0 && stage === "R32") {
|
|
3269
|
+
const r32ById = new Map(nodes.filter((n) => n.stage === "R32").map((n) => [n.index, n.matchId]));
|
|
3270
|
+
const r16First = nodes.find((n) => n.stage === "R16" && n.index === 1);
|
|
3271
|
+
if (r16First) {
|
|
3272
|
+
const home = r16First.home;
|
|
3273
|
+
const away = r16First.away;
|
|
3274
|
+
if (home.kind === "winner" && home.stage === "R32") {
|
|
3275
|
+
const expectedId = r32ById.get(home.index);
|
|
3276
|
+
if (!expectedId) {
|
|
3277
|
+
problems.push(`R32 index ${home.index} missing for R16-1 home ref`);
|
|
3278
|
+
}
|
|
3279
|
+
}
|
|
3280
|
+
if (away.kind === "winner" && away.stage === "R32") {
|
|
3281
|
+
const expectedId = r32ById.get(away.index);
|
|
3282
|
+
if (!expectedId) {
|
|
3283
|
+
problems.push(`R32 index ${away.index} missing for R16-1 away ref`);
|
|
3284
|
+
}
|
|
3285
|
+
}
|
|
3286
|
+
}
|
|
3287
|
+
}
|
|
3288
|
+
}
|
|
3289
|
+
}
|
|
3290
|
+
}
|
|
3291
|
+
function validateWinnerChain(nodes, problems) {
|
|
3292
|
+
const indexMap = new Map(nodes.map((n) => [matchKey(n.stage, n.index), n]));
|
|
3293
|
+
const chains = [
|
|
3294
|
+
{ from: "R32", to: "R16", count: 16 },
|
|
3295
|
+
{ from: "R16", to: "QF", count: 8 },
|
|
3296
|
+
{ from: "QF", to: "SF", count: 4 },
|
|
3297
|
+
{ from: "SF", to: "F", count: 2 }
|
|
3298
|
+
];
|
|
3299
|
+
for (const { from, to, count } of chains) {
|
|
3300
|
+
const refs = nodes.filter((n) => n.stage === to).flatMap((n) => [n.home, n.away]).filter((r) => r.kind === "winner" && r.stage === from);
|
|
3301
|
+
const indices = refs.map((r) => r.index);
|
|
3302
|
+
if (indices.length !== count) {
|
|
3303
|
+
problems.push(`${to}: expected ${count} ${from} winner refs, got ${indices.length}`);
|
|
3304
|
+
}
|
|
3305
|
+
const unique = new Set(indices);
|
|
3306
|
+
if (unique.size !== count) {
|
|
3307
|
+
problems.push(`${to}: ${from} winner indices must be unique 1..${count}`);
|
|
3308
|
+
}
|
|
3309
|
+
for (let i = 1; i <= count; i++) {
|
|
3310
|
+
if (!unique.has(i)) problems.push(`${to}: missing ${from} winner index ${i}`);
|
|
3311
|
+
if (!indexMap.has(matchKey(from, i))) problems.push(`missing ${from} match index ${i}`);
|
|
3312
|
+
}
|
|
3313
|
+
}
|
|
3314
|
+
}
|
|
3315
|
+
function validateThirdPlace(nodes, problems) {
|
|
3316
|
+
const third = nodes.find((n) => n.stage === "3P");
|
|
3317
|
+
if (!third) {
|
|
3318
|
+
problems.push("missing third-place play-off node");
|
|
3319
|
+
return;
|
|
3320
|
+
}
|
|
3321
|
+
const slots = [third.home, third.away];
|
|
3322
|
+
const indices = /* @__PURE__ */ new Set();
|
|
3323
|
+
for (const slot of slots) {
|
|
3324
|
+
if (slot.kind !== "loser" || slot.stage !== "SF") {
|
|
3325
|
+
problems.push("3P slots must reference SF losers");
|
|
3326
|
+
return;
|
|
3327
|
+
}
|
|
3328
|
+
indices.add(slot.index);
|
|
3329
|
+
}
|
|
3330
|
+
if (!indices.has(1) || !indices.has(2)) {
|
|
3331
|
+
problems.push("3P must reference Semifinal 1 Loser and Semifinal 2 Loser");
|
|
3332
|
+
}
|
|
3333
|
+
}
|
|
3334
|
+
|
|
3335
|
+
// src/bracket/resolve.ts
|
|
3336
|
+
function isGroupComplete(group, tables, standingsDegraded) {
|
|
3337
|
+
if (standingsDegraded) return false;
|
|
3338
|
+
const table = tables.find((t2) => t2.group === group);
|
|
3339
|
+
if (!table?.rows.length || table.rows.length !== 4) return false;
|
|
3340
|
+
return table.rows.every((r) => r.played >= 3);
|
|
3341
|
+
}
|
|
3342
|
+
function teamFromStandings(group, position, tables) {
|
|
3343
|
+
const table = tables.find((t2) => t2.group === group);
|
|
3344
|
+
if (!table) return void 0;
|
|
3345
|
+
const row = table.rows[position - 1];
|
|
3346
|
+
return row?.team;
|
|
3347
|
+
}
|
|
3348
|
+
function resolveWinner(match) {
|
|
3349
|
+
if (!isFinished(match.status)) return void 0;
|
|
3350
|
+
if (match.winnerCode) {
|
|
3351
|
+
const w = teamFromMatch(match, match.winnerCode);
|
|
3352
|
+
if (w && w.flag !== "\u{1F3F3}\uFE0F") return w;
|
|
3353
|
+
}
|
|
3354
|
+
if (!match.score) return void 0;
|
|
3355
|
+
const outcome = outcomeFromScore(match.score.home, match.score.away);
|
|
3356
|
+
if (outcome === "H") return match.home.flag !== "\u{1F3F3}\uFE0F" ? match.home : void 0;
|
|
3357
|
+
if (outcome === "A") return match.away.flag !== "\u{1F3F3}\uFE0F" ? match.away : void 0;
|
|
3358
|
+
return void 0;
|
|
3359
|
+
}
|
|
3360
|
+
function resolveLoser(match) {
|
|
3361
|
+
if (!isFinished(match.status)) return void 0;
|
|
3362
|
+
if (match.winnerCode) {
|
|
3363
|
+
const winner = teamFromMatch(match, match.winnerCode);
|
|
3364
|
+
if (winner?.code === match.home.code) {
|
|
3365
|
+
return match.away.flag !== "\u{1F3F3}\uFE0F" ? match.away : void 0;
|
|
3366
|
+
}
|
|
3367
|
+
if (winner?.code === match.away.code) {
|
|
3368
|
+
return match.home.flag !== "\u{1F3F3}\uFE0F" ? match.home : void 0;
|
|
3369
|
+
}
|
|
3370
|
+
}
|
|
3371
|
+
if (!match.score) return void 0;
|
|
3372
|
+
const outcome = outcomeFromScore(match.score.home, match.score.away);
|
|
3373
|
+
if (outcome === "H") return match.away.flag !== "\u{1F3F3}\uFE0F" ? match.away : void 0;
|
|
3374
|
+
if (outcome === "A") return match.home.flag !== "\u{1F3F3}\uFE0F" ? match.home : void 0;
|
|
3375
|
+
return void 0;
|
|
3376
|
+
}
|
|
3377
|
+
function participant(team, status) {
|
|
3378
|
+
return { label: team.name, flag: team.flag, code: team.code, status };
|
|
3379
|
+
}
|
|
3380
|
+
function tbd(label) {
|
|
3381
|
+
return { label, flag: "\u{1F3F3}\uFE0F", status: "tbd" };
|
|
3382
|
+
}
|
|
3383
|
+
function winnerLabel(ctx, stage, index) {
|
|
3384
|
+
return t(ctx.lang, "bracket.slot.winner", {
|
|
3385
|
+
stage: stageLabelI18n(ctx.lang, stage),
|
|
3386
|
+
n: String(index)
|
|
3387
|
+
});
|
|
3388
|
+
}
|
|
3389
|
+
function resolveSlot(ref, ctx) {
|
|
3390
|
+
switch (ref.kind) {
|
|
3391
|
+
case "seed":
|
|
3392
|
+
return tbd(ref.label);
|
|
3393
|
+
case "group": {
|
|
3394
|
+
if (isGroupComplete(ref.group, ctx.tables, ctx.standingsDegraded)) {
|
|
3395
|
+
const team = teamFromStandings(ref.group, ref.position, ctx.tables);
|
|
3396
|
+
if (team) return participant(team, "projected");
|
|
3397
|
+
}
|
|
3398
|
+
const label = ref.position === 1 ? t(ctx.lang, "bracket.slot.groupWinner", { group: ref.group }) : t(ctx.lang, "bracket.slot.groupSecond", { group: ref.group });
|
|
3399
|
+
return tbd(label);
|
|
3400
|
+
}
|
|
3401
|
+
case "third":
|
|
3402
|
+
return tbd(t(ctx.lang, "bracket.slot.third", { groups: ref.groups.join("/") }));
|
|
3403
|
+
case "winner": {
|
|
3404
|
+
const node = ctx.nodesByKey.get(matchKey(ref.stage, ref.index));
|
|
3405
|
+
const match = node ? ctx.matchesById.get(node.matchId) : void 0;
|
|
3406
|
+
if (match) {
|
|
3407
|
+
const winner = resolveWinner(match);
|
|
3408
|
+
if (winner) return participant(winner, "confirmed");
|
|
3409
|
+
}
|
|
3410
|
+
return tbd(winnerLabel(ctx, ref.stage, ref.index));
|
|
3411
|
+
}
|
|
3412
|
+
case "loser": {
|
|
3413
|
+
const node = ctx.nodesByKey.get(matchKey(ref.stage, ref.index));
|
|
3414
|
+
const match = node ? ctx.matchesById.get(node.matchId) : void 0;
|
|
3415
|
+
if (match) {
|
|
3416
|
+
const loser = resolveLoser(match);
|
|
3417
|
+
if (loser) return participant(loser, "confirmed");
|
|
3418
|
+
}
|
|
3419
|
+
return tbd(
|
|
3420
|
+
t(ctx.lang, "bracket.slot.loser", {
|
|
3421
|
+
stage: stageLabelI18n(ctx.lang, ref.stage),
|
|
3422
|
+
n: String(ref.index)
|
|
3423
|
+
})
|
|
3424
|
+
);
|
|
3425
|
+
}
|
|
3426
|
+
default:
|
|
3427
|
+
return tbd(t(ctx.lang, "bracket.slot.tbd"));
|
|
3428
|
+
}
|
|
3429
|
+
}
|
|
3430
|
+
function buildBracketView(topology, matches, tables, standingsDegraded, liveDegraded, filterStage, lang) {
|
|
3431
|
+
const knockout = matches.filter((m) => m.stage !== "GROUP" && m.stage !== "FRIENDLY");
|
|
3432
|
+
const matchesById = new Map(knockout.map((m) => [m.id, m]));
|
|
3433
|
+
const nodesByKey = new Map(topology.matches.map((n) => [matchKey(n.stage, n.index), n]));
|
|
3434
|
+
const ctx = { nodesByKey, matchesById, tables, standingsDegraded, lang };
|
|
3435
|
+
const want = filterStage?.toUpperCase();
|
|
3436
|
+
const stages = [];
|
|
3437
|
+
for (const stage of topology.stages) {
|
|
3438
|
+
if (want && stage !== want) continue;
|
|
3439
|
+
const nodes = topology.matches.filter((n) => n.stage === stage);
|
|
3440
|
+
const matchViews = nodes.map((node) => {
|
|
3441
|
+
const match = matchesById.get(node.matchId) ?? {
|
|
3442
|
+
id: node.matchId,
|
|
3443
|
+
stage: node.stage,
|
|
3444
|
+
kickoff: "",
|
|
3445
|
+
venue: "",
|
|
3446
|
+
home: { code: "?", name: "TBD", flag: "\u{1F3F3}\uFE0F" },
|
|
3447
|
+
away: { code: "?", name: "TBD", flag: "\u{1F3F3}\uFE0F" },
|
|
3448
|
+
status: "SCHEDULED",
|
|
3449
|
+
updatedAt: ""
|
|
3450
|
+
};
|
|
3451
|
+
return {
|
|
3452
|
+
matchId: node.matchId,
|
|
3453
|
+
stage: node.stage,
|
|
3454
|
+
index: node.index,
|
|
3455
|
+
kickoff: match.kickoff,
|
|
3456
|
+
home: resolveSlot(node.home, ctx),
|
|
3457
|
+
away: resolveSlot(node.away, ctx),
|
|
3458
|
+
match
|
|
3459
|
+
};
|
|
3460
|
+
});
|
|
3461
|
+
stages.push({
|
|
3462
|
+
stage,
|
|
3463
|
+
label: stageLabelI18n(lang, stage),
|
|
3464
|
+
matches: matchViews
|
|
3465
|
+
});
|
|
3466
|
+
}
|
|
3467
|
+
return {
|
|
3468
|
+
stages,
|
|
3469
|
+
degraded: liveDegraded,
|
|
3470
|
+
standingsDegraded
|
|
3471
|
+
};
|
|
3472
|
+
}
|
|
3473
|
+
|
|
3474
|
+
// src/data/bracket.2026.json
|
|
3475
|
+
var bracket_2026_default = {
|
|
3476
|
+
generatedAt: "2026-06-24T01:20:06.749Z",
|
|
3477
|
+
stages: [
|
|
3478
|
+
"R32",
|
|
3479
|
+
"R16",
|
|
3480
|
+
"QF",
|
|
3481
|
+
"SF",
|
|
3482
|
+
"3P",
|
|
3483
|
+
"F"
|
|
3484
|
+
],
|
|
3485
|
+
matches: [
|
|
3486
|
+
{
|
|
3487
|
+
matchId: "760486",
|
|
3488
|
+
stage: "R32",
|
|
3489
|
+
index: 1,
|
|
3490
|
+
home: {
|
|
3491
|
+
kind: "group",
|
|
3492
|
+
position: 2,
|
|
3493
|
+
group: "A"
|
|
3494
|
+
},
|
|
3495
|
+
away: {
|
|
3496
|
+
kind: "group",
|
|
3497
|
+
position: 2,
|
|
3498
|
+
group: "B"
|
|
3499
|
+
}
|
|
3500
|
+
},
|
|
3501
|
+
{
|
|
3502
|
+
matchId: "760487",
|
|
3503
|
+
stage: "R32",
|
|
3504
|
+
index: 2,
|
|
3505
|
+
home: {
|
|
3506
|
+
kind: "group",
|
|
3507
|
+
position: 1,
|
|
3508
|
+
group: "C"
|
|
3509
|
+
},
|
|
3510
|
+
away: {
|
|
3511
|
+
kind: "group",
|
|
3512
|
+
position: 2,
|
|
3513
|
+
group: "F"
|
|
3514
|
+
}
|
|
3515
|
+
},
|
|
3516
|
+
{
|
|
3517
|
+
matchId: "760488",
|
|
3518
|
+
stage: "R32",
|
|
3519
|
+
index: 3,
|
|
3520
|
+
home: {
|
|
3521
|
+
kind: "group",
|
|
3522
|
+
position: 1,
|
|
3523
|
+
group: "F"
|
|
3524
|
+
},
|
|
3525
|
+
away: {
|
|
3526
|
+
kind: "group",
|
|
3527
|
+
position: 2,
|
|
3528
|
+
group: "C"
|
|
3529
|
+
}
|
|
3530
|
+
},
|
|
3531
|
+
{
|
|
3532
|
+
matchId: "760489",
|
|
3533
|
+
stage: "R32",
|
|
3534
|
+
index: 4,
|
|
3535
|
+
home: {
|
|
3536
|
+
kind: "seed",
|
|
3537
|
+
label: "Germany",
|
|
3538
|
+
code: "TBD"
|
|
3539
|
+
},
|
|
3540
|
+
away: {
|
|
3541
|
+
kind: "third",
|
|
3542
|
+
groups: [
|
|
3543
|
+
"A",
|
|
3544
|
+
"B",
|
|
3545
|
+
"C",
|
|
3546
|
+
"D",
|
|
3547
|
+
"F"
|
|
3548
|
+
]
|
|
3549
|
+
}
|
|
3550
|
+
},
|
|
3551
|
+
{
|
|
3552
|
+
matchId: "760490",
|
|
3553
|
+
stage: "R32",
|
|
3554
|
+
index: 5,
|
|
3555
|
+
home: {
|
|
3556
|
+
kind: "group",
|
|
3557
|
+
position: 2,
|
|
3558
|
+
group: "E"
|
|
3559
|
+
},
|
|
3560
|
+
away: {
|
|
3561
|
+
kind: "group",
|
|
3562
|
+
position: 2,
|
|
3563
|
+
group: "I"
|
|
3564
|
+
}
|
|
3565
|
+
},
|
|
3566
|
+
{
|
|
3567
|
+
matchId: "760491",
|
|
3568
|
+
stage: "R32",
|
|
3569
|
+
index: 6,
|
|
3570
|
+
home: {
|
|
3571
|
+
kind: "seed",
|
|
3572
|
+
label: "Mexico",
|
|
3573
|
+
code: "TBD"
|
|
3574
|
+
},
|
|
3575
|
+
away: {
|
|
3576
|
+
kind: "third",
|
|
3577
|
+
groups: [
|
|
3578
|
+
"C",
|
|
3579
|
+
"E",
|
|
3580
|
+
"F",
|
|
3581
|
+
"H",
|
|
3582
|
+
"I"
|
|
3583
|
+
]
|
|
3584
|
+
}
|
|
3585
|
+
},
|
|
3586
|
+
{
|
|
3587
|
+
matchId: "760492",
|
|
3588
|
+
stage: "R32",
|
|
3589
|
+
index: 7,
|
|
3590
|
+
home: {
|
|
3591
|
+
kind: "group",
|
|
3592
|
+
position: 1,
|
|
3593
|
+
group: "I"
|
|
3594
|
+
},
|
|
3595
|
+
away: {
|
|
3596
|
+
kind: "third",
|
|
3597
|
+
groups: [
|
|
3598
|
+
"C",
|
|
3599
|
+
"D",
|
|
3600
|
+
"F",
|
|
3601
|
+
"G",
|
|
3602
|
+
"H"
|
|
3603
|
+
]
|
|
3604
|
+
}
|
|
3605
|
+
},
|
|
3606
|
+
{
|
|
3607
|
+
matchId: "760493",
|
|
3608
|
+
stage: "R32",
|
|
3609
|
+
index: 8,
|
|
3610
|
+
home: {
|
|
3611
|
+
kind: "group",
|
|
3612
|
+
position: 1,
|
|
3613
|
+
group: "G"
|
|
3614
|
+
},
|
|
3615
|
+
away: {
|
|
3616
|
+
kind: "third",
|
|
3617
|
+
groups: [
|
|
3618
|
+
"A",
|
|
3619
|
+
"E",
|
|
3620
|
+
"H",
|
|
3621
|
+
"I",
|
|
3622
|
+
"J"
|
|
3623
|
+
]
|
|
3624
|
+
}
|
|
3625
|
+
},
|
|
3626
|
+
{
|
|
3627
|
+
matchId: "760494",
|
|
3628
|
+
stage: "R32",
|
|
3629
|
+
index: 9,
|
|
3630
|
+
home: {
|
|
3631
|
+
kind: "seed",
|
|
3632
|
+
label: "United States",
|
|
3633
|
+
code: "TBD"
|
|
3634
|
+
},
|
|
3635
|
+
away: {
|
|
3636
|
+
kind: "third",
|
|
3637
|
+
groups: [
|
|
3638
|
+
"B",
|
|
3639
|
+
"E",
|
|
3640
|
+
"F",
|
|
3641
|
+
"I",
|
|
3642
|
+
"J"
|
|
3643
|
+
]
|
|
3644
|
+
}
|
|
3645
|
+
},
|
|
3646
|
+
{
|
|
3647
|
+
matchId: "760495",
|
|
3648
|
+
stage: "R32",
|
|
3649
|
+
index: 10,
|
|
3650
|
+
home: {
|
|
3651
|
+
kind: "group",
|
|
3652
|
+
position: 1,
|
|
3653
|
+
group: "L"
|
|
3654
|
+
},
|
|
3655
|
+
away: {
|
|
3656
|
+
kind: "third",
|
|
3657
|
+
groups: [
|
|
3658
|
+
"E",
|
|
3659
|
+
"H",
|
|
3660
|
+
"I",
|
|
3661
|
+
"J",
|
|
3662
|
+
"K"
|
|
3663
|
+
]
|
|
3664
|
+
}
|
|
3665
|
+
},
|
|
3666
|
+
{
|
|
3667
|
+
matchId: "760496",
|
|
3668
|
+
stage: "R32",
|
|
3669
|
+
index: 11,
|
|
3670
|
+
home: {
|
|
3671
|
+
kind: "group",
|
|
3672
|
+
position: 2,
|
|
3673
|
+
group: "K"
|
|
3674
|
+
},
|
|
3675
|
+
away: {
|
|
3676
|
+
kind: "group",
|
|
3677
|
+
position: 2,
|
|
3678
|
+
group: "L"
|
|
3679
|
+
}
|
|
3680
|
+
},
|
|
3681
|
+
{
|
|
3682
|
+
matchId: "760497",
|
|
3683
|
+
stage: "R32",
|
|
3684
|
+
index: 12,
|
|
3685
|
+
home: {
|
|
3686
|
+
kind: "group",
|
|
3687
|
+
position: 1,
|
|
3688
|
+
group: "H"
|
|
3689
|
+
},
|
|
3690
|
+
away: {
|
|
3691
|
+
kind: "group",
|
|
3692
|
+
position: 2,
|
|
3693
|
+
group: "J"
|
|
3694
|
+
}
|
|
3695
|
+
},
|
|
3696
|
+
{
|
|
3697
|
+
matchId: "760498",
|
|
3698
|
+
stage: "R32",
|
|
3699
|
+
index: 13,
|
|
3700
|
+
home: {
|
|
3701
|
+
kind: "group",
|
|
3702
|
+
position: 1,
|
|
3703
|
+
group: "B"
|
|
3704
|
+
},
|
|
3705
|
+
away: {
|
|
3706
|
+
kind: "third",
|
|
3707
|
+
groups: [
|
|
3708
|
+
"E",
|
|
3709
|
+
"F",
|
|
3710
|
+
"G",
|
|
3711
|
+
"I",
|
|
3712
|
+
"J"
|
|
3713
|
+
]
|
|
3714
|
+
}
|
|
3715
|
+
},
|
|
3716
|
+
{
|
|
3717
|
+
matchId: "760499",
|
|
3718
|
+
stage: "R32",
|
|
3719
|
+
index: 14,
|
|
3720
|
+
home: {
|
|
3721
|
+
kind: "group",
|
|
3722
|
+
position: 2,
|
|
3723
|
+
group: "D"
|
|
3724
|
+
},
|
|
3725
|
+
away: {
|
|
3726
|
+
kind: "group",
|
|
3727
|
+
position: 2,
|
|
3728
|
+
group: "G"
|
|
3729
|
+
}
|
|
3730
|
+
},
|
|
3731
|
+
{
|
|
3732
|
+
matchId: "760500",
|
|
3733
|
+
stage: "R32",
|
|
3734
|
+
index: 15,
|
|
3735
|
+
home: {
|
|
3736
|
+
kind: "seed",
|
|
3737
|
+
label: "Argentina",
|
|
3738
|
+
code: "TBD"
|
|
3739
|
+
},
|
|
3740
|
+
away: {
|
|
3741
|
+
kind: "group",
|
|
3742
|
+
position: 2,
|
|
3743
|
+
group: "H"
|
|
3744
|
+
}
|
|
3745
|
+
},
|
|
3746
|
+
{
|
|
3747
|
+
matchId: "760501",
|
|
3748
|
+
stage: "R32",
|
|
3749
|
+
index: 16,
|
|
3750
|
+
home: {
|
|
3751
|
+
kind: "group",
|
|
3752
|
+
position: 1,
|
|
3753
|
+
group: "K"
|
|
3754
|
+
},
|
|
3755
|
+
away: {
|
|
3756
|
+
kind: "third",
|
|
3757
|
+
groups: [
|
|
3758
|
+
"D",
|
|
3759
|
+
"E",
|
|
3760
|
+
"I",
|
|
3761
|
+
"J",
|
|
3762
|
+
"L"
|
|
3763
|
+
]
|
|
3764
|
+
}
|
|
3765
|
+
},
|
|
3766
|
+
{
|
|
3767
|
+
matchId: "760502",
|
|
3768
|
+
stage: "R16",
|
|
3769
|
+
index: 1,
|
|
3770
|
+
home: {
|
|
3771
|
+
kind: "winner",
|
|
3772
|
+
stage: "R32",
|
|
3773
|
+
index: 1
|
|
3774
|
+
},
|
|
3775
|
+
away: {
|
|
3776
|
+
kind: "winner",
|
|
3777
|
+
stage: "R32",
|
|
3778
|
+
index: 3
|
|
3779
|
+
}
|
|
3780
|
+
},
|
|
3781
|
+
{
|
|
3782
|
+
matchId: "760503",
|
|
3783
|
+
stage: "R16",
|
|
3784
|
+
index: 2,
|
|
3785
|
+
home: {
|
|
3786
|
+
kind: "winner",
|
|
3787
|
+
stage: "R32",
|
|
3788
|
+
index: 2
|
|
3789
|
+
},
|
|
3790
|
+
away: {
|
|
3791
|
+
kind: "winner",
|
|
3792
|
+
stage: "R32",
|
|
3793
|
+
index: 5
|
|
3794
|
+
}
|
|
3795
|
+
},
|
|
3796
|
+
{
|
|
3797
|
+
matchId: "760504",
|
|
3798
|
+
stage: "R16",
|
|
3799
|
+
index: 3,
|
|
3800
|
+
home: {
|
|
3801
|
+
kind: "winner",
|
|
3802
|
+
stage: "R32",
|
|
3803
|
+
index: 4
|
|
3804
|
+
},
|
|
3805
|
+
away: {
|
|
3806
|
+
kind: "winner",
|
|
3807
|
+
stage: "R32",
|
|
3808
|
+
index: 6
|
|
3809
|
+
}
|
|
3810
|
+
},
|
|
3811
|
+
{
|
|
3812
|
+
matchId: "760505",
|
|
3813
|
+
stage: "R16",
|
|
3814
|
+
index: 4,
|
|
3815
|
+
home: {
|
|
3816
|
+
kind: "winner",
|
|
3817
|
+
stage: "R32",
|
|
3818
|
+
index: 7
|
|
3819
|
+
},
|
|
3820
|
+
away: {
|
|
3821
|
+
kind: "winner",
|
|
3822
|
+
stage: "R32",
|
|
3823
|
+
index: 8
|
|
3824
|
+
}
|
|
3825
|
+
},
|
|
3826
|
+
{
|
|
3827
|
+
matchId: "760506",
|
|
3828
|
+
stage: "R16",
|
|
3829
|
+
index: 5,
|
|
3830
|
+
home: {
|
|
3831
|
+
kind: "winner",
|
|
3832
|
+
stage: "R32",
|
|
3833
|
+
index: 11
|
|
3834
|
+
},
|
|
3835
|
+
away: {
|
|
3836
|
+
kind: "winner",
|
|
3837
|
+
stage: "R32",
|
|
3838
|
+
index: 12
|
|
3839
|
+
}
|
|
3840
|
+
},
|
|
3841
|
+
{
|
|
3842
|
+
matchId: "760507",
|
|
3843
|
+
stage: "R16",
|
|
3844
|
+
index: 6,
|
|
3845
|
+
home: {
|
|
3846
|
+
kind: "winner",
|
|
3847
|
+
stage: "R32",
|
|
3848
|
+
index: 9
|
|
3849
|
+
},
|
|
3850
|
+
away: {
|
|
3851
|
+
kind: "winner",
|
|
3852
|
+
stage: "R32",
|
|
3853
|
+
index: 10
|
|
3854
|
+
}
|
|
3855
|
+
},
|
|
3856
|
+
{
|
|
3857
|
+
matchId: "760508",
|
|
3858
|
+
stage: "R16",
|
|
3859
|
+
index: 7,
|
|
3860
|
+
home: {
|
|
3861
|
+
kind: "winner",
|
|
3862
|
+
stage: "R32",
|
|
3863
|
+
index: 13
|
|
3864
|
+
},
|
|
3865
|
+
away: {
|
|
3866
|
+
kind: "winner",
|
|
3867
|
+
stage: "R32",
|
|
3868
|
+
index: 15
|
|
3869
|
+
}
|
|
3870
|
+
},
|
|
3871
|
+
{
|
|
3872
|
+
matchId: "760509",
|
|
3873
|
+
stage: "R16",
|
|
3874
|
+
index: 8,
|
|
3875
|
+
home: {
|
|
3876
|
+
kind: "winner",
|
|
3877
|
+
stage: "R32",
|
|
3878
|
+
index: 14
|
|
3879
|
+
},
|
|
3880
|
+
away: {
|
|
3881
|
+
kind: "winner",
|
|
3882
|
+
stage: "R32",
|
|
3883
|
+
index: 16
|
|
3884
|
+
}
|
|
3885
|
+
},
|
|
3886
|
+
{
|
|
3887
|
+
matchId: "760510",
|
|
3888
|
+
stage: "QF",
|
|
3889
|
+
index: 1,
|
|
3890
|
+
home: {
|
|
3891
|
+
kind: "winner",
|
|
3892
|
+
stage: "R16",
|
|
3893
|
+
index: 1
|
|
3894
|
+
},
|
|
3895
|
+
away: {
|
|
3896
|
+
kind: "winner",
|
|
3897
|
+
stage: "R16",
|
|
3898
|
+
index: 2
|
|
3899
|
+
}
|
|
3900
|
+
},
|
|
3901
|
+
{
|
|
3902
|
+
matchId: "760511",
|
|
3903
|
+
stage: "QF",
|
|
3904
|
+
index: 2,
|
|
3905
|
+
home: {
|
|
3906
|
+
kind: "winner",
|
|
3907
|
+
stage: "R16",
|
|
3908
|
+
index: 5
|
|
3909
|
+
},
|
|
3910
|
+
away: {
|
|
3911
|
+
kind: "winner",
|
|
3912
|
+
stage: "R16",
|
|
3913
|
+
index: 6
|
|
3914
|
+
}
|
|
3915
|
+
},
|
|
3916
|
+
{
|
|
3917
|
+
matchId: "760512",
|
|
3918
|
+
stage: "QF",
|
|
3919
|
+
index: 3,
|
|
3920
|
+
home: {
|
|
3921
|
+
kind: "winner",
|
|
3922
|
+
stage: "R16",
|
|
3923
|
+
index: 3
|
|
3924
|
+
},
|
|
3925
|
+
away: {
|
|
3926
|
+
kind: "winner",
|
|
3927
|
+
stage: "R16",
|
|
3928
|
+
index: 4
|
|
3929
|
+
}
|
|
3930
|
+
},
|
|
3931
|
+
{
|
|
3932
|
+
matchId: "760513",
|
|
3933
|
+
stage: "QF",
|
|
3934
|
+
index: 4,
|
|
3935
|
+
home: {
|
|
3936
|
+
kind: "winner",
|
|
3937
|
+
stage: "R16",
|
|
3938
|
+
index: 7
|
|
3939
|
+
},
|
|
3940
|
+
away: {
|
|
3941
|
+
kind: "winner",
|
|
3942
|
+
stage: "R16",
|
|
3943
|
+
index: 8
|
|
3944
|
+
}
|
|
3945
|
+
},
|
|
3946
|
+
{
|
|
3947
|
+
matchId: "760514",
|
|
3948
|
+
stage: "SF",
|
|
3949
|
+
index: 1,
|
|
3950
|
+
home: {
|
|
3951
|
+
kind: "winner",
|
|
3952
|
+
stage: "QF",
|
|
3953
|
+
index: 1
|
|
3954
|
+
},
|
|
3955
|
+
away: {
|
|
3956
|
+
kind: "winner",
|
|
3957
|
+
stage: "QF",
|
|
3958
|
+
index: 2
|
|
3959
|
+
}
|
|
3960
|
+
},
|
|
3961
|
+
{
|
|
3962
|
+
matchId: "760515",
|
|
3963
|
+
stage: "SF",
|
|
3964
|
+
index: 2,
|
|
3965
|
+
home: {
|
|
3966
|
+
kind: "winner",
|
|
3967
|
+
stage: "QF",
|
|
3968
|
+
index: 3
|
|
3969
|
+
},
|
|
3970
|
+
away: {
|
|
3971
|
+
kind: "winner",
|
|
3972
|
+
stage: "QF",
|
|
3973
|
+
index: 4
|
|
3974
|
+
}
|
|
3975
|
+
},
|
|
3976
|
+
{
|
|
3977
|
+
matchId: "760516",
|
|
3978
|
+
stage: "3P",
|
|
3979
|
+
index: 1,
|
|
3980
|
+
home: {
|
|
3981
|
+
kind: "loser",
|
|
3982
|
+
stage: "SF",
|
|
3983
|
+
index: 1
|
|
3984
|
+
},
|
|
3985
|
+
away: {
|
|
3986
|
+
kind: "loser",
|
|
3987
|
+
stage: "SF",
|
|
3988
|
+
index: 2
|
|
3989
|
+
}
|
|
3990
|
+
},
|
|
3991
|
+
{
|
|
3992
|
+
matchId: "760517",
|
|
3993
|
+
stage: "F",
|
|
3994
|
+
index: 1,
|
|
3995
|
+
home: {
|
|
3996
|
+
kind: "winner",
|
|
3997
|
+
stage: "SF",
|
|
3998
|
+
index: 1
|
|
3999
|
+
},
|
|
4000
|
+
away: {
|
|
4001
|
+
kind: "winner",
|
|
4002
|
+
stage: "SF",
|
|
4003
|
+
index: 2
|
|
4004
|
+
}
|
|
4005
|
+
}
|
|
4006
|
+
]
|
|
4007
|
+
};
|
|
4008
|
+
|
|
4009
|
+
// src/bracket/topology.ts
|
|
4010
|
+
var TOPOLOGY = bracket_2026_default;
|
|
4011
|
+
function loadBracketTopology() {
|
|
4012
|
+
return TOPOLOGY;
|
|
4013
|
+
}
|
|
4014
|
+
|
|
2912
4015
|
// src/live.ts
|
|
2913
4016
|
function resolveCompetition(explicit) {
|
|
2914
4017
|
if (explicit) return explicit;
|
|
@@ -2950,7 +4053,7 @@ async function getStandings(adapter, group) {
|
|
|
2950
4053
|
if (adapter.fetchStandings) {
|
|
2951
4054
|
try {
|
|
2952
4055
|
const all = await adapter.fetchStandings();
|
|
2953
|
-
const tables2 = (want ? all.filter((
|
|
4056
|
+
const tables2 = (want ? all.filter((t2) => t2.group === want) : all).sort(
|
|
2954
4057
|
(a, b) => a.group.localeCompare(b.group)
|
|
2955
4058
|
);
|
|
2956
4059
|
return { tables: tables2, degraded: false, source: adapter.name };
|
|
@@ -2958,9 +4061,45 @@ async function getStandings(adapter, group) {
|
|
|
2958
4061
|
}
|
|
2959
4062
|
}
|
|
2960
4063
|
const letters = want ? [want] : groups();
|
|
2961
|
-
const tables = letters.map((g) => ({ group: g, rows:
|
|
4064
|
+
const tables = letters.map((g) => ({ group: g, rows: rosterAtZero(fixturesByGroup(g)) })).filter((t2) => t2.rows.length > 0);
|
|
2962
4065
|
return { tables, degraded: true };
|
|
2963
4066
|
}
|
|
4067
|
+
var KNOCKOUT_WINDOW_START = "20260628";
|
|
4068
|
+
var KNOCKOUT_WINDOW_END = "20260719";
|
|
4069
|
+
async function getBracket(adapter, opts = {}) {
|
|
4070
|
+
const topology = loadBracketTopology();
|
|
4071
|
+
const base = allFixtures().filter((m) => m.stage !== "GROUP" && m.stage !== "FRIENDLY");
|
|
4072
|
+
let matches = base;
|
|
4073
|
+
let liveDegraded = true;
|
|
4074
|
+
let source;
|
|
4075
|
+
try {
|
|
4076
|
+
const live = adapter.fetchWindow ? await adapter.fetchWindow(KNOCKOUT_WINDOW_START, KNOCKOUT_WINDOW_END) : [];
|
|
4077
|
+
matches = mergeLive(base, live);
|
|
4078
|
+
liveDegraded = false;
|
|
4079
|
+
source = adapter.name;
|
|
4080
|
+
} catch {
|
|
4081
|
+
}
|
|
4082
|
+
const standings = await getStandings(adapter);
|
|
4083
|
+
if (!source && !standings.degraded && standings.source) {
|
|
4084
|
+
source = standings.source;
|
|
4085
|
+
}
|
|
4086
|
+
const view = buildBracketView(
|
|
4087
|
+
topology,
|
|
4088
|
+
matches,
|
|
4089
|
+
standings.tables,
|
|
4090
|
+
standings.degraded,
|
|
4091
|
+
liveDegraded,
|
|
4092
|
+
opts.stage,
|
|
4093
|
+
opts.lang
|
|
4094
|
+
);
|
|
4095
|
+
if (source) view.source = source;
|
|
4096
|
+
return {
|
|
4097
|
+
view,
|
|
4098
|
+
degraded: liveDegraded,
|
|
4099
|
+
standingsDegraded: standings.degraded,
|
|
4100
|
+
source
|
|
4101
|
+
};
|
|
4102
|
+
}
|
|
2964
4103
|
function shiftUtcDate(dateISO, days) {
|
|
2965
4104
|
const [y, m, d] = dateISO.slice(0, 10).split("-").map(Number);
|
|
2966
4105
|
return new Date(Date.UTC(y ?? 1970, (m ?? 1) - 1, (d ?? 1) + days)).toISOString().slice(0, 10);
|
|
@@ -3118,9 +4257,9 @@ function outcomeLabel(o, match) {
|
|
|
3118
4257
|
return o.label;
|
|
3119
4258
|
}
|
|
3120
4259
|
function utcHhmm(iso) {
|
|
3121
|
-
const
|
|
3122
|
-
if (!Number.isFinite(
|
|
3123
|
-
return `${new Date(
|
|
4260
|
+
const t2 = Date.parse(iso);
|
|
4261
|
+
if (!Number.isFinite(t2)) return "";
|
|
4262
|
+
return `${new Date(t2).toISOString().slice(11, 16)} UTC`;
|
|
3124
4263
|
}
|
|
3125
4264
|
function marketFavoriteText(signal, match) {
|
|
3126
4265
|
const fav = signal.favorite;
|
|
@@ -3493,6 +4632,7 @@ function socialCard(m, input) {
|
|
|
3493
4632
|
}
|
|
3494
4633
|
const loc = matchLocation(m);
|
|
3495
4634
|
if (loc) lines.push(loc);
|
|
4635
|
+
if (m.stage !== "GROUP") lines.push(stageLabel(m));
|
|
3496
4636
|
return lines;
|
|
3497
4637
|
}
|
|
3498
4638
|
function formatShareSnippet(input, options = {}) {
|
|
@@ -3567,7 +4707,111 @@ function formatShareTable(input, options = {}) {
|
|
|
3567
4707
|
);
|
|
3568
4708
|
return blocks.join("\n\n");
|
|
3569
4709
|
}
|
|
4710
|
+
|
|
4711
|
+
// src/bracket/format.ts
|
|
4712
|
+
function formatParticipant(p, flags, locale) {
|
|
4713
|
+
const suffix = p.status === "projected" ? ` ${t(locale, "bracket.projected")}` : "";
|
|
4714
|
+
if (flags && p.flag !== "\u{1F3F3}\uFE0F") return `${p.flag} ${p.label}${suffix}`;
|
|
4715
|
+
if (p.code) return `${p.code}${suffix}`;
|
|
4716
|
+
return `${p.label}${suffix}`;
|
|
4717
|
+
}
|
|
4718
|
+
function statusTail2(m) {
|
|
4719
|
+
if (m.status === "LIVE" && m.minute) return ` ${m.minute}'`;
|
|
4720
|
+
if (m.status === "HT") return " HT";
|
|
4721
|
+
if (m.status === "FT") return " FT";
|
|
4722
|
+
if (isLive(m.status)) return " LIVE";
|
|
4723
|
+
return "";
|
|
4724
|
+
}
|
|
4725
|
+
function formatBracketMatchLine(mv, opts = {}) {
|
|
4726
|
+
const flags = opts.flags !== false;
|
|
4727
|
+
const home = formatParticipant(mv.home, flags, opts.locale);
|
|
4728
|
+
const away = formatParticipant(mv.away, flags, opts.locale);
|
|
4729
|
+
const m = mv.match;
|
|
4730
|
+
if (isFinished(m.status) || isLive(m.status)) {
|
|
4731
|
+
return ` ${home} ${scoreline(m)} ${away}${statusTail2(m)}`;
|
|
4732
|
+
}
|
|
4733
|
+
const kickoff = mv.kickoff ? formatKickoff(mv.kickoff, { tz: opts.tz, locale: opts.locale }) : "";
|
|
4734
|
+
return ` ${home} vs ${away}${kickoff ? ` \xB7 ${kickoff}` : ""}`;
|
|
4735
|
+
}
|
|
4736
|
+
function formatBracketList(view, opts = {}) {
|
|
4737
|
+
const blocks = [];
|
|
4738
|
+
for (const stage of view.stages) {
|
|
4739
|
+
blocks.push(stage.label);
|
|
4740
|
+
for (const mv of stage.matches) {
|
|
4741
|
+
blocks.push(formatBracketMatchLine(mv, opts));
|
|
4742
|
+
}
|
|
4743
|
+
blocks.push("");
|
|
4744
|
+
}
|
|
4745
|
+
if (opts.footer !== false) {
|
|
4746
|
+
if (view.degraded) {
|
|
4747
|
+
blocks.push(`(${t(opts.locale, "bracket.degraded")})`);
|
|
4748
|
+
} else if (view.standingsDegraded) {
|
|
4749
|
+
blocks.push(`(${t(opts.locale, "bracket.standingsDegraded")})`);
|
|
4750
|
+
}
|
|
4751
|
+
if (view.source) {
|
|
4752
|
+
blocks.push(t(opts.locale, "live.data", { source: liveSourceLabel(view.source) }));
|
|
4753
|
+
}
|
|
4754
|
+
}
|
|
4755
|
+
return blocks.join("\n").trimEnd();
|
|
4756
|
+
}
|
|
4757
|
+
var MIN_TREE_WIDTH = 80;
|
|
4758
|
+
function formatBracketTree(view, opts = {}) {
|
|
4759
|
+
const width = opts.width ?? 80;
|
|
4760
|
+
if (width < MIN_TREE_WIDTH) return null;
|
|
4761
|
+
const blocks = [];
|
|
4762
|
+
for (let i = 0; i < view.stages.length; i++) {
|
|
4763
|
+
const stage = view.stages[i];
|
|
4764
|
+
blocks.push(`\u2501\u2501\u2501 ${stage.label} \u2501\u2501\u2501`);
|
|
4765
|
+
for (const mv of stage.matches) {
|
|
4766
|
+
blocks.push(formatBracketMatchLine(mv, opts));
|
|
4767
|
+
}
|
|
4768
|
+
if (i < view.stages.length - 1) {
|
|
4769
|
+
blocks.push(" \u2502");
|
|
4770
|
+
blocks.push(" \u25BC");
|
|
4771
|
+
}
|
|
4772
|
+
blocks.push("");
|
|
4773
|
+
}
|
|
4774
|
+
if (opts.footer !== false) {
|
|
4775
|
+
if (view.degraded) {
|
|
4776
|
+
blocks.push(`(${t(opts.locale, "bracket.degraded")})`);
|
|
4777
|
+
} else if (view.standingsDegraded) {
|
|
4778
|
+
blocks.push(`(${t(opts.locale, "bracket.standingsDegraded")})`);
|
|
4779
|
+
}
|
|
4780
|
+
if (view.source) {
|
|
4781
|
+
blocks.push(t(opts.locale, "live.data", { source: liveSourceLabel(view.source) }));
|
|
4782
|
+
}
|
|
4783
|
+
}
|
|
4784
|
+
return blocks.join("\n").trimEnd();
|
|
4785
|
+
}
|
|
4786
|
+
function formatShareBracket(input, options = {}) {
|
|
4787
|
+
const includeHashtag = options.includeHashtag !== false;
|
|
4788
|
+
const includeInstall = options.includeInstallLine !== false;
|
|
4789
|
+
const locale = options.locale;
|
|
4790
|
+
const blocks = [t(locale, "bracket.shareTitle"), ""];
|
|
4791
|
+
if (input.view.stages.length === 0) {
|
|
4792
|
+
blocks.push(input.emptyNote ?? t(locale, "bracket.empty"));
|
|
4793
|
+
} else {
|
|
4794
|
+
blocks.push(formatBracketList(input.view, { footer: false, locale }));
|
|
4795
|
+
if (input.view.degraded) {
|
|
4796
|
+
blocks.push(`(${t(locale, "bracket.degraded")})`);
|
|
4797
|
+
} else if (input.view.standingsDegraded) {
|
|
4798
|
+
blocks.push(`(${t(locale, "bracket.standingsDegraded")})`);
|
|
4799
|
+
}
|
|
4800
|
+
}
|
|
4801
|
+
const footer = [];
|
|
4802
|
+
const src = input.source ?? input.view.source;
|
|
4803
|
+
if (src) footer.push(t(locale, "live.data", { source: liveSourceLabel(src) }));
|
|
4804
|
+
footer.push(
|
|
4805
|
+
[includeHashtag ? SHARE_HASHTAG : "", SHARE_DISCLAIMER].filter(Boolean).join(" \xB7 ")
|
|
4806
|
+
);
|
|
4807
|
+
if (includeInstall && input.installLine) {
|
|
4808
|
+
footer.push(t(locale, "share.tryIt", { line: input.installLine }));
|
|
4809
|
+
}
|
|
4810
|
+
blocks.push("", footer.join("\n"));
|
|
4811
|
+
return blocks.join("\n");
|
|
4812
|
+
}
|
|
3570
4813
|
export {
|
|
4814
|
+
BRACKET_STAGE_ORDER,
|
|
3571
4815
|
DEFAULT_COMPETITION,
|
|
3572
4816
|
DEFAULT_FLAVOR,
|
|
3573
4817
|
DEFAULT_MAX_AGE_MS,
|
|
@@ -3580,6 +4824,8 @@ export {
|
|
|
3580
4824
|
SHARE_HASHTAG,
|
|
3581
4825
|
allFixtures,
|
|
3582
4826
|
asFlavorLevel,
|
|
4827
|
+
buildBracketTopology,
|
|
4828
|
+
buildBracketView,
|
|
3583
4829
|
buildMarketSignal,
|
|
3584
4830
|
byKickoff,
|
|
3585
4831
|
competitionBase,
|
|
@@ -3593,11 +4839,16 @@ export {
|
|
|
3593
4839
|
fixturesByTeam,
|
|
3594
4840
|
fixturesInLiveWindow,
|
|
3595
4841
|
flagEmoji,
|
|
4842
|
+
formatBracketList,
|
|
4843
|
+
formatBracketMatchLine,
|
|
4844
|
+
formatBracketTree,
|
|
3596
4845
|
formatDate,
|
|
3597
4846
|
formatKickoff,
|
|
4847
|
+
formatShareBracket,
|
|
3598
4848
|
formatShareSnippet,
|
|
3599
4849
|
formatShareTable,
|
|
3600
4850
|
formatTime,
|
|
4851
|
+
getBracket,
|
|
3601
4852
|
getLiveMatches,
|
|
3602
4853
|
getMarketSignal,
|
|
3603
4854
|
getMarketSignals,
|
|
@@ -3614,6 +4865,7 @@ export {
|
|
|
3614
4865
|
isValidDate,
|
|
3615
4866
|
isValidTimeZone,
|
|
3616
4867
|
liveSourceLabel,
|
|
4868
|
+
loadBracketTopology,
|
|
3617
4869
|
localDate,
|
|
3618
4870
|
makeAdapter,
|
|
3619
4871
|
makeMarketProvider,
|
|
@@ -3628,16 +4880,23 @@ export {
|
|
|
3628
4880
|
marketRelevant,
|
|
3629
4881
|
marketSourceLabel,
|
|
3630
4882
|
matchFlavor,
|
|
4883
|
+
matchKey,
|
|
3631
4884
|
matchLocation,
|
|
3632
4885
|
mergeLive,
|
|
3633
4886
|
nationToFlag,
|
|
3634
4887
|
nationToRegion,
|
|
3635
4888
|
nextFixtureForTeam,
|
|
4889
|
+
normalizeLang,
|
|
3636
4890
|
normalizeOutcomes,
|
|
3637
4891
|
outcomeFromScore,
|
|
3638
4892
|
parseStandings,
|
|
4893
|
+
parseTeamSlot,
|
|
3639
4894
|
resolveCompetition,
|
|
3640
4895
|
resolveMarketSource,
|
|
3641
4896
|
resolveTz,
|
|
3642
|
-
|
|
4897
|
+
sanitizeBundledFixture,
|
|
4898
|
+
scoreline,
|
|
4899
|
+
stageLabel,
|
|
4900
|
+
stageLabelI18n,
|
|
4901
|
+
t
|
|
3643
4902
|
};
|