recce-nightly 1.10.0.20250630__py3-none-any.whl → 1.11.0.20250702__py3-none-any.whl
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.
Potentially problematic release.
This version of recce-nightly might be problematic. Click here for more details.
- recce/VERSION +1 -1
- recce/adapter/dbt_adapter/__init__.py +97 -68
- recce/cli.py +6 -3
- recce/data/404.html +2 -2
- recce/data/_next/static/chunks/{708-9ff66431dcebf1bd.js → 181-acc61ddada3bc0ca.js} +2 -2
- recce/data/_next/static/chunks/3998a672-03adacad07b346ac.js +1 -0
- recce/data/_next/static/chunks/app/page-acebcaa45b4de895.js +1 -0
- recce/data/index.html +2 -2
- recce/data/index.txt +3 -3
- recce/models/types.py +20 -0
- recce/tasks/valuediff.py +1 -1
- recce/util/cll.py +1 -2
- recce/util/perf_tracking.py +85 -0
- {recce_nightly-1.10.0.20250630.dist-info → recce_nightly-1.11.0.20250702.dist-info}/METADATA +1 -1
- {recce_nightly-1.10.0.20250630.dist-info → recce_nightly-1.11.0.20250702.dist-info}/RECORD +23 -22
- tests/adapter/dbt_adapter/test_dbt_cll.py +35 -0
- recce/data/_next/static/chunks/3998a672-d8f888988d01023f.js +0 -1
- recce/data/_next/static/chunks/app/page-3daeb9d2f9ffa0ef.js +0 -1
- /recce/data/_next/static/{gjlMeLxcm3GSibv55ZUM_ → 0B_qD27U3VEMnPnujEJxV}/_buildManifest.js +0 -0
- /recce/data/_next/static/{gjlMeLxcm3GSibv55ZUM_ → 0B_qD27U3VEMnPnujEJxV}/_ssgManifest.js +0 -0
- /recce/data/_next/static/chunks/{92-50d227cce7a25498.js → 92-2153b66ddfaa2359.js} +0 -0
- {recce_nightly-1.10.0.20250630.dist-info → recce_nightly-1.11.0.20250702.dist-info}/WHEEL +0 -0
- {recce_nightly-1.10.0.20250630.dist-info → recce_nightly-1.11.0.20250702.dist-info}/entry_points.txt +0 -0
- {recce_nightly-1.10.0.20250630.dist-info → recce_nightly-1.11.0.20250702.dist-info}/licenses/LICENSE +0 -0
- {recce_nightly-1.10.0.20250630.dist-info → recce_nightly-1.11.0.20250702.dist-info}/top_level.txt +0 -0
recce/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.11.0.20250702
|
|
@@ -31,9 +31,10 @@ from recce.util.lineage import (
|
|
|
31
31
|
find_downstream,
|
|
32
32
|
find_upstream,
|
|
33
33
|
)
|
|
34
|
+
from recce.util.perf_tracking import LineagePerfTracker
|
|
34
35
|
|
|
35
36
|
from ...tasks.profile import ProfileTask
|
|
36
|
-
from ...util.breaking import parse_change_category
|
|
37
|
+
from ...util.breaking import BreakingPerformanceTracking, parse_change_category
|
|
37
38
|
|
|
38
39
|
try:
|
|
39
40
|
import agate
|
|
@@ -658,8 +659,8 @@ class DbtAdapter(BaseAdapter):
|
|
|
658
659
|
@lru_cache(maxsize=2)
|
|
659
660
|
def get_lineage_cached(self, base: Optional[bool] = False, cache_key=0):
|
|
660
661
|
if base is False:
|
|
661
|
-
|
|
662
|
-
|
|
662
|
+
perf_tracker = LineagePerfTracker()
|
|
663
|
+
perf_tracker.start_lineage()
|
|
663
664
|
|
|
664
665
|
manifest = self.curr_manifest if base is False else self.base_manifest
|
|
665
666
|
catalog = self.curr_catalog if base is False else self.base_catalog
|
|
@@ -777,10 +778,10 @@ class DbtAdapter(BaseAdapter):
|
|
|
777
778
|
parent_map = self.build_parent_map(nodes, base)
|
|
778
779
|
|
|
779
780
|
if base is False:
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
log_performance("model lineage",
|
|
783
|
-
|
|
781
|
+
perf_tracker.end_lineage()
|
|
782
|
+
perf_tracker.set_total_nodes(len(nodes))
|
|
783
|
+
log_performance("model lineage", perf_tracker.to_dict())
|
|
784
|
+
perf_tracker.reset()
|
|
784
785
|
|
|
785
786
|
return dict(
|
|
786
787
|
parent_map=parent_map,
|
|
@@ -814,17 +815,22 @@ class DbtAdapter(BaseAdapter):
|
|
|
814
815
|
|
|
815
816
|
@lru_cache(maxsize=128)
|
|
816
817
|
def get_change_analysis_cached(self, node_id: str):
|
|
818
|
+
breaking_perf_tracker = BreakingPerformanceTracking()
|
|
817
819
|
lineage_diff = self.get_lineage_diff()
|
|
818
820
|
diff = lineage_diff.diff
|
|
819
821
|
|
|
820
822
|
if node_id not in diff or diff[node_id].change_status != "modified":
|
|
821
823
|
return diff.get(node_id)
|
|
822
824
|
|
|
825
|
+
breaking_perf_tracker.increment_modified_nodes()
|
|
826
|
+
breaking_perf_tracker.start_lineage_diff()
|
|
827
|
+
|
|
823
828
|
base = lineage_diff.base
|
|
824
829
|
current = lineage_diff.current
|
|
825
830
|
|
|
826
831
|
base_manifest = as_manifest(self.get_manifest(True))
|
|
827
832
|
curr_manifest = as_manifest(self.get_manifest(False))
|
|
833
|
+
breaking_perf_tracker.record_checkpoint("manifest")
|
|
828
834
|
|
|
829
835
|
def ref_func(*args):
|
|
830
836
|
if len(args) == 1:
|
|
@@ -895,6 +901,7 @@ class DbtAdapter(BaseAdapter):
|
|
|
895
901
|
old_schema=base_schema,
|
|
896
902
|
new_schema=curr_schema,
|
|
897
903
|
dialect=dialect,
|
|
904
|
+
perf_tracking=breaking_perf_tracker,
|
|
898
905
|
)
|
|
899
906
|
|
|
900
907
|
# Make sure that the case of the column names are the same
|
|
@@ -917,6 +924,9 @@ class DbtAdapter(BaseAdapter):
|
|
|
917
924
|
# TODO: telemetry
|
|
918
925
|
pass
|
|
919
926
|
|
|
927
|
+
breaking_perf_tracker.end_lineage_diff()
|
|
928
|
+
log_performance("change analysis per node", breaking_perf_tracker.to_dict())
|
|
929
|
+
breaking_perf_tracker.reset()
|
|
920
930
|
node_diff = diff.get(node_id)
|
|
921
931
|
node_diff.change = change
|
|
922
932
|
return node_diff
|
|
@@ -931,7 +941,15 @@ class DbtAdapter(BaseAdapter):
|
|
|
931
941
|
no_downstream: Optional[bool] = False,
|
|
932
942
|
no_filter: Optional[bool] = False,
|
|
933
943
|
) -> CllData:
|
|
934
|
-
cll_tracker =
|
|
944
|
+
cll_tracker = LineagePerfTracker()
|
|
945
|
+
cll_tracker.set_params(
|
|
946
|
+
has_node=node_id is not None,
|
|
947
|
+
has_column=column is not None,
|
|
948
|
+
change_analysis=change_analysis,
|
|
949
|
+
no_cll=no_cll,
|
|
950
|
+
no_upstream=no_upstream,
|
|
951
|
+
no_downstream=no_downstream,
|
|
952
|
+
)
|
|
935
953
|
cll_tracker.start_column_lineage()
|
|
936
954
|
|
|
937
955
|
manifest = self.curr_manifest
|
|
@@ -944,6 +962,8 @@ class DbtAdapter(BaseAdapter):
|
|
|
944
962
|
lineage_diff = self.get_lineage_diff()
|
|
945
963
|
cll_node_ids = set(lineage_diff.diff.keys())
|
|
946
964
|
|
|
965
|
+
cll_tracker.set_init_nodes(len(cll_node_ids))
|
|
966
|
+
|
|
947
967
|
nodes = {}
|
|
948
968
|
columns = {}
|
|
949
969
|
parent_map = {}
|
|
@@ -955,29 +975,41 @@ class DbtAdapter(BaseAdapter):
|
|
|
955
975
|
cll_node_ids = cll_node_ids.union(find_downstream(cll_node_ids, manifest_dict.get("child_map")))
|
|
956
976
|
|
|
957
977
|
if not no_cll:
|
|
978
|
+
allowed_related_nodes = set()
|
|
979
|
+
for key in ["sources", "nodes", "exposures", "metrics"]:
|
|
980
|
+
attr = getattr(manifest, key)
|
|
981
|
+
allowed_related_nodes.update(set(attr.keys()))
|
|
982
|
+
if hasattr(manifest, "semantic_models"):
|
|
983
|
+
attr = getattr(manifest, "semantic_models")
|
|
984
|
+
allowed_related_nodes.update(set(attr.keys()))
|
|
958
985
|
for cll_node_id in cll_node_ids:
|
|
959
|
-
if
|
|
960
|
-
cll_node_id not in manifest.sources
|
|
961
|
-
and cll_node_id not in manifest.nodes
|
|
962
|
-
and cll_node_id not in manifest.exposures
|
|
963
|
-
):
|
|
986
|
+
if cll_node_id not in allowed_related_nodes:
|
|
964
987
|
continue
|
|
965
988
|
cll_data_one = deepcopy(self.get_cll_cached(cll_node_id, base=False))
|
|
989
|
+
cll_tracker.increment_cll_nodes()
|
|
966
990
|
if cll_data_one is None:
|
|
967
991
|
continue
|
|
968
992
|
|
|
969
993
|
nodes[cll_node_id] = cll_data_one.nodes.get(cll_node_id)
|
|
970
|
-
node_diff =
|
|
994
|
+
node_diff = None
|
|
995
|
+
if change_analysis:
|
|
996
|
+
node_diff = self.get_change_analysis_cached(cll_node_id)
|
|
997
|
+
cll_tracker.increment_change_analysis_nodes()
|
|
971
998
|
if node_diff is not None:
|
|
972
999
|
nodes[cll_node_id].change_status = node_diff.change_status
|
|
973
1000
|
if node_diff.change is not None:
|
|
974
1001
|
nodes[cll_node_id].change_category = node_diff.change.category
|
|
975
1002
|
for c_id, c in cll_data_one.columns.items():
|
|
976
1003
|
columns[c_id] = c
|
|
977
|
-
if node_diff is not None
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
1004
|
+
if node_diff is not None:
|
|
1005
|
+
if node_diff.change_status == "added":
|
|
1006
|
+
c.change_status = "added"
|
|
1007
|
+
elif node_diff.change_status == "removed":
|
|
1008
|
+
c.change_status = "removed"
|
|
1009
|
+
elif node_diff.change is not None and node_diff.change.columns is not None:
|
|
1010
|
+
column_diff = node_diff.change.columns.get(c.name)
|
|
1011
|
+
if column_diff:
|
|
1012
|
+
c.change_status = column_diff
|
|
981
1013
|
|
|
982
1014
|
for p_id, parents in cll_data_one.parent_map.items():
|
|
983
1015
|
parent_map[p_id] = parents
|
|
@@ -987,13 +1019,7 @@ class DbtAdapter(BaseAdapter):
|
|
|
987
1019
|
cll_node_columns: Dict[str, CllColumn] = {}
|
|
988
1020
|
|
|
989
1021
|
if cll_node_id in manifest.sources:
|
|
990
|
-
|
|
991
|
-
cll_node = CllNode(
|
|
992
|
-
id=n.unique_id,
|
|
993
|
-
name=n.name,
|
|
994
|
-
source_name=n.source_name,
|
|
995
|
-
package_name=n.package_name,
|
|
996
|
-
)
|
|
1022
|
+
cll_node = CllNode.build_cll_node(manifest, "sources", cll_node_id)
|
|
997
1023
|
if self.curr_catalog and cll_node_id in self.curr_catalog.sources:
|
|
998
1024
|
cll_node_columns = {
|
|
999
1025
|
column.name: CllColumn(
|
|
@@ -1005,15 +1031,7 @@ class DbtAdapter(BaseAdapter):
|
|
|
1005
1031
|
for column in self.curr_catalog.sources[cll_node_id].columns.values()
|
|
1006
1032
|
}
|
|
1007
1033
|
elif cll_node_id in manifest.nodes:
|
|
1008
|
-
|
|
1009
|
-
if n.resource_type not in ["model", "seed", "snapshot"]:
|
|
1010
|
-
continue
|
|
1011
|
-
cll_node = CllNode(
|
|
1012
|
-
id=n.unique_id,
|
|
1013
|
-
name=n.name,
|
|
1014
|
-
package_name=n.package_name,
|
|
1015
|
-
resource_type=n.resource_type,
|
|
1016
|
-
)
|
|
1034
|
+
cll_node = CllNode.build_cll_node(manifest, "nodes", cll_node_id)
|
|
1017
1035
|
if self.curr_catalog and cll_node_id in self.curr_catalog.nodes:
|
|
1018
1036
|
cll_node_columns = {
|
|
1019
1037
|
column.name: CllColumn(
|
|
@@ -1025,19 +1043,20 @@ class DbtAdapter(BaseAdapter):
|
|
|
1025
1043
|
for column in self.curr_catalog.nodes[cll_node_id].columns.values()
|
|
1026
1044
|
}
|
|
1027
1045
|
elif cll_node_id in manifest.exposures:
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
resource_type=n.resource_type,
|
|
1034
|
-
)
|
|
1046
|
+
cll_node = CllNode.build_cll_node(manifest, "exposures", cll_node_id)
|
|
1047
|
+
elif hasattr(manifest, "semantic_models") and cll_node_id in manifest.semantic_models:
|
|
1048
|
+
cll_node = CllNode.build_cll_node(manifest, "semantic_models", cll_node_id)
|
|
1049
|
+
elif cll_node_id in manifest.metrics:
|
|
1050
|
+
cll_node = CllNode.build_cll_node(manifest, "metrics", cll_node_id)
|
|
1035
1051
|
|
|
1036
1052
|
if not cll_node:
|
|
1037
1053
|
continue
|
|
1038
1054
|
nodes[cll_node_id] = cll_node
|
|
1039
1055
|
|
|
1040
|
-
node_diff =
|
|
1056
|
+
node_diff = None
|
|
1057
|
+
if change_analysis:
|
|
1058
|
+
node_diff = self.get_change_analysis_cached(cll_node_id)
|
|
1059
|
+
cll_tracker.increment_change_analysis_nodes()
|
|
1041
1060
|
if node_diff is not None:
|
|
1042
1061
|
cll_node.change_status = node_diff.change_status
|
|
1043
1062
|
if node_diff.change is not None:
|
|
@@ -1063,7 +1082,19 @@ class DbtAdapter(BaseAdapter):
|
|
|
1063
1082
|
if node_id is None and column is None:
|
|
1064
1083
|
if change_analysis:
|
|
1065
1084
|
# If change analysis is requested, we need to find the nodes that have changes
|
|
1066
|
-
|
|
1085
|
+
lineage_diff = self.get_lineage_diff()
|
|
1086
|
+
for nid, nd in lineage_diff.diff.items():
|
|
1087
|
+
if nd.change_status == "added":
|
|
1088
|
+
extra_node_ids.add(nid)
|
|
1089
|
+
n = lineage_diff.current["nodes"].get(nid)
|
|
1090
|
+
n_columns = n.get("columns", {})
|
|
1091
|
+
for c in n_columns:
|
|
1092
|
+
anchor_node_ids.add(build_column_key(nid, c))
|
|
1093
|
+
continue
|
|
1094
|
+
if nd.change_status == "removed":
|
|
1095
|
+
extra_node_ids.add(nid)
|
|
1096
|
+
continue
|
|
1097
|
+
|
|
1067
1098
|
node_diff = self.get_change_analysis_cached(nid)
|
|
1068
1099
|
if node_diff is not None and node_diff.change is not None:
|
|
1069
1100
|
extra_node_ids.add(nid)
|
|
@@ -1107,6 +1138,7 @@ class DbtAdapter(BaseAdapter):
|
|
|
1107
1138
|
else:
|
|
1108
1139
|
anchor_node_ids.add(f"{node_id}_{column}")
|
|
1109
1140
|
|
|
1141
|
+
cll_tracker.set_anchor_nodes(len(anchor_node_ids))
|
|
1110
1142
|
result_node_ids = set(anchor_node_ids)
|
|
1111
1143
|
if not no_upstream:
|
|
1112
1144
|
result_node_ids = result_node_ids.union(find_upstream(anchor_node_ids, parent_map))
|
|
@@ -1125,7 +1157,7 @@ class DbtAdapter(BaseAdapter):
|
|
|
1125
1157
|
parent_map, child_map = filter_dependency_maps(parent_map, child_map, result_node_ids)
|
|
1126
1158
|
|
|
1127
1159
|
cll_tracker.end_column_lineage()
|
|
1128
|
-
cll_tracker.set_total_nodes(len(nodes))
|
|
1160
|
+
cll_tracker.set_total_nodes(len(nodes) + len(columns))
|
|
1129
1161
|
log_performance("column level lineage", cll_tracker.to_dict())
|
|
1130
1162
|
cll_tracker.reset()
|
|
1131
1163
|
|
|
@@ -1144,6 +1176,9 @@ class DbtAdapter(BaseAdapter):
|
|
|
1144
1176
|
if node is None:
|
|
1145
1177
|
return None
|
|
1146
1178
|
|
|
1179
|
+
cll_tracker.set_total_nodes(1)
|
|
1180
|
+
cll_tracker.start_column_lineage()
|
|
1181
|
+
|
|
1147
1182
|
def _apply_all_columns(node: CllNode, transformation_type):
|
|
1148
1183
|
cll_data = CllData()
|
|
1149
1184
|
cll_data.nodes[node.id] = node
|
|
@@ -1268,6 +1303,10 @@ class DbtAdapter(BaseAdapter):
|
|
|
1268
1303
|
depends_on.add(parent_key)
|
|
1269
1304
|
column.transformation_type = c2c_map[name].transformation_type
|
|
1270
1305
|
cll_data.parent_map[column_id] = set(depends_on)
|
|
1306
|
+
|
|
1307
|
+
cll_tracker.end_column_lineage()
|
|
1308
|
+
log_performance("column level lineage per node", cll_tracker.to_dict())
|
|
1309
|
+
cll_tracker.reset()
|
|
1271
1310
|
return cll_data
|
|
1272
1311
|
|
|
1273
1312
|
def get_cll_node(self, node_id: str, base: Optional[bool] = False) -> Tuple[Optional[CllNode], list[str]]:
|
|
@@ -1279,17 +1318,8 @@ class DbtAdapter(BaseAdapter):
|
|
|
1279
1318
|
# model, seed, snapshot
|
|
1280
1319
|
if node_id in manifest.nodes:
|
|
1281
1320
|
found = manifest.nodes[node_id]
|
|
1282
|
-
if found.resource_type not in ["model", "seed", "snapshot"]:
|
|
1283
|
-
return None, []
|
|
1284
|
-
|
|
1285
1321
|
unique_id = found.unique_id
|
|
1286
|
-
node = CllNode(
|
|
1287
|
-
id=found.unique_id,
|
|
1288
|
-
name=found.name,
|
|
1289
|
-
package_name=found.package_name,
|
|
1290
|
-
resource_type=found.resource_type,
|
|
1291
|
-
raw_code=found.raw_code,
|
|
1292
|
-
)
|
|
1322
|
+
node = CllNode.build_cll_node(manifest, "nodes", node_id)
|
|
1293
1323
|
if hasattr(found.depends_on, "nodes"):
|
|
1294
1324
|
parent_list = found.depends_on.nodes
|
|
1295
1325
|
|
|
@@ -1305,14 +1335,7 @@ class DbtAdapter(BaseAdapter):
|
|
|
1305
1335
|
if node_id in manifest.sources:
|
|
1306
1336
|
found = manifest.sources[node_id]
|
|
1307
1337
|
unique_id = found.unique_id
|
|
1308
|
-
|
|
1309
|
-
node = CllNode(
|
|
1310
|
-
id=found.unique_id,
|
|
1311
|
-
name=found.name,
|
|
1312
|
-
package_name=found.package_name,
|
|
1313
|
-
resource_type=found.resource_type,
|
|
1314
|
-
source_name=found.source_name,
|
|
1315
|
-
)
|
|
1338
|
+
node = CllNode.build_cll_node(manifest, "sources", node_id)
|
|
1316
1339
|
parent_list = []
|
|
1317
1340
|
|
|
1318
1341
|
if catalog is not None and unique_id in catalog.sources:
|
|
@@ -1326,13 +1349,19 @@ class DbtAdapter(BaseAdapter):
|
|
|
1326
1349
|
# exposure
|
|
1327
1350
|
if node_id in manifest.exposures:
|
|
1328
1351
|
found = manifest.exposures[node_id]
|
|
1352
|
+
node = CllNode.build_cll_node(manifest, "exposures", node_id)
|
|
1353
|
+
if hasattr(found.depends_on, "nodes"):
|
|
1354
|
+
parent_list = found.depends_on.nodes
|
|
1329
1355
|
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1356
|
+
if hasattr(manifest, "semantic_models") and node_id in manifest.semantic_models:
|
|
1357
|
+
found = manifest.semantic_models[node_id]
|
|
1358
|
+
node = CllNode.build_cll_node(manifest, "semantic_models", node_id)
|
|
1359
|
+
if hasattr(found.depends_on, "nodes"):
|
|
1360
|
+
parent_list = found.depends_on.nodes
|
|
1361
|
+
|
|
1362
|
+
if node_id in manifest.metrics:
|
|
1363
|
+
found = manifest.metrics[node_id]
|
|
1364
|
+
node = CllNode.build_cll_node(manifest, "metrics", node_id)
|
|
1336
1365
|
if hasattr(found.depends_on, "nodes"):
|
|
1337
1366
|
parent_list = found.depends_on.nodes
|
|
1338
1367
|
|
recce/cli.py
CHANGED
|
@@ -228,8 +228,9 @@ def debug(**kwargs):
|
|
|
228
228
|
|
|
229
229
|
return [True, manifest_is_ready, catalog_is_ready]
|
|
230
230
|
|
|
231
|
-
|
|
232
|
-
|
|
231
|
+
project_dir_path = Path(kwargs.get("project_dir") or "./")
|
|
232
|
+
target_path = project_dir_path.joinpath(Path(kwargs.get("target_path", "target")))
|
|
233
|
+
target_base_path = project_dir_path.joinpath(Path(kwargs.get("target_base_path", "target-base")))
|
|
233
234
|
|
|
234
235
|
curr_is_ready = check_artifacts("Development", target_path)
|
|
235
236
|
base_is_ready = check_artifacts("Base", target_base_path)
|
|
@@ -411,7 +412,9 @@ def server(host, port, lifetime, state_file=None, **kwargs):
|
|
|
411
412
|
}
|
|
412
413
|
|
|
413
414
|
# Check Single Environment Onboarding Mode if the review mode is False
|
|
414
|
-
|
|
415
|
+
project_dir_path = Path(kwargs.get("project_dir") or "./")
|
|
416
|
+
target_base_path = project_dir_path.joinpath(Path(kwargs.get("target_base_path", "target-base")))
|
|
417
|
+
if not target_base_path.is_dir() and not is_review:
|
|
415
418
|
# Mark as single env onboarding mode if user provides the target-path only
|
|
416
419
|
flag["single_env_onboarding"] = True
|
|
417
420
|
flag["show_relaunch_hint"] = True
|
recce/data/404.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/a2b12b4ba4227f0a.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/951e2e0eea2d4a5b.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-7b49d5ba7e3a434d.js"/><script src="/_next/static/chunks/86730205-cfb14e3f051bab35.js" async=""></script><script src="/_next/static/chunks/217-879a84d70f7a907c.js" async=""></script><script src="/_next/static/chunks/main-app-39061b0166c47f55.js" async=""></script><script src="/_next/static/chunks/9746af58-a42b7d169cacadf0.js" async=""></script><script src="/_next/static/chunks/47d8844f-929aed9b1c73a905.js" async=""></script><script src="/_next/static/chunks/a30376cd-de84559016d7e133.js" async=""></script><script src="/_next/static/chunks/6dc81886-adbfa45836061d79.js" async=""></script><script src="/_next/static/chunks/3a92ee20-1081c360214f9602.js" async=""></script><script src="/_next/static/chunks/3998a672-d8f888988d01023f.js" async=""></script><script src="/_next/static/chunks/1bff33f1-1ef85cf5e658a751.js" async=""></script><script src="/_next/static/chunks/bbda5537-9ec25eb1dd62348a.js" async=""></script><script src="/_next/static/chunks/41-f30276c289169376.js" async=""></script><script src="/_next/static/chunks/608-3b079b544e5d5f5e.js" async=""></script><script src="/_next/static/chunks/92-50d227cce7a25498.js" async=""></script><script src="/_next/static/chunks/app/layout-292f035bb0d2a98e.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>recce</title><meta name="description" content="Recce: Data validation toolkit for comprehensive PR review"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><style data-emotion="css-global dh58eu">:host,:root,[data-theme]{--chakra-ring-inset:var(--chakra-empty,/*!*/ /*!*/);--chakra-ring-offset-width:0px;--chakra-ring-offset-color:#fff;--chakra-ring-color:rgba(66, 153, 225, 0.6);--chakra-ring-offset-shadow:0 0 #0000;--chakra-ring-shadow:0 0 #0000;--chakra-space-x-reverse:0;--chakra-space-y-reverse:0;--chakra-colors-transparent:transparent;--chakra-colors-current:currentColor;--chakra-colors-black:#000000;--chakra-colors-white:#FFFFFF;--chakra-colors-whiteAlpha-50:rgba(255, 255, 255, 0.04);--chakra-colors-whiteAlpha-100:rgba(255, 255, 255, 0.06);--chakra-colors-whiteAlpha-200:rgba(255, 255, 255, 0.08);--chakra-colors-whiteAlpha-300:rgba(255, 255, 255, 0.16);--chakra-colors-whiteAlpha-400:rgba(255, 255, 255, 0.24);--chakra-colors-whiteAlpha-500:rgba(255, 255, 255, 0.36);--chakra-colors-whiteAlpha-600:rgba(255, 255, 255, 0.48);--chakra-colors-whiteAlpha-700:rgba(255, 255, 255, 0.64);--chakra-colors-whiteAlpha-800:rgba(255, 255, 255, 0.80);--chakra-colors-whiteAlpha-900:rgba(255, 255, 255, 0.92);--chakra-colors-blackAlpha-50:rgba(0, 0, 0, 0.04);--chakra-colors-blackAlpha-100:rgba(0, 0, 0, 0.06);--chakra-colors-blackAlpha-200:rgba(0, 0, 0, 0.08);--chakra-colors-blackAlpha-300:rgba(0, 0, 0, 0.16);--chakra-colors-blackAlpha-400:rgba(0, 0, 0, 0.24);--chakra-colors-blackAlpha-500:rgba(0, 0, 0, 0.36);--chakra-colors-blackAlpha-600:rgba(0, 0, 0, 0.48);--chakra-colors-blackAlpha-700:rgba(0, 0, 0, 0.64);--chakra-colors-blackAlpha-800:rgba(0, 0, 0, 0.80);--chakra-colors-blackAlpha-900:rgba(0, 0, 0, 0.92);--chakra-colors-gray-50:#F7FAFC;--chakra-colors-gray-100:#EDF2F7;--chakra-colors-gray-200:#E2E8F0;--chakra-colors-gray-300:#CBD5E0;--chakra-colors-gray-400:#A0AEC0;--chakra-colors-gray-500:#718096;--chakra-colors-gray-600:#4A5568;--chakra-colors-gray-700:#2D3748;--chakra-colors-gray-800:#1A202C;--chakra-colors-gray-900:#171923;--chakra-colors-red-50:#FFF5F5;--chakra-colors-red-100:#FED7D7;--chakra-colors-red-200:#FEB2B2;--chakra-colors-red-300:#FC8181;--chakra-colors-red-400:#F56565;--chakra-colors-red-500:#E53E3E;--chakra-colors-red-600:#C53030;--chakra-colors-red-700:#9B2C2C;--chakra-colors-red-800:#822727;--chakra-colors-red-900:#63171B;--chakra-colors-orange-50:#FFFAF0;--chakra-colors-orange-100:#FEEBC8;--chakra-colors-orange-200:#FBD38D;--chakra-colors-orange-300:#F6AD55;--chakra-colors-orange-400:#ED8936;--chakra-colors-orange-500:#DD6B20;--chakra-colors-orange-600:#C05621;--chakra-colors-orange-700:#9C4221;--chakra-colors-orange-800:#7B341E;--chakra-colors-orange-900:#652B19;--chakra-colors-yellow-50:#FFFFF0;--chakra-colors-yellow-100:#FEFCBF;--chakra-colors-yellow-200:#FAF089;--chakra-colors-yellow-300:#F6E05E;--chakra-colors-yellow-400:#ECC94B;--chakra-colors-yellow-500:#D69E2E;--chakra-colors-yellow-600:#B7791F;--chakra-colors-yellow-700:#975A16;--chakra-colors-yellow-800:#744210;--chakra-colors-yellow-900:#5F370E;--chakra-colors-green-50:#F0FFF4;--chakra-colors-green-100:#C6F6D5;--chakra-colors-green-200:#9AE6B4;--chakra-colors-green-300:#68D391;--chakra-colors-green-400:#48BB78;--chakra-colors-green-500:#38A169;--chakra-colors-green-600:#2F855A;--chakra-colors-green-700:#276749;--chakra-colors-green-800:#22543D;--chakra-colors-green-900:#1C4532;--chakra-colors-teal-50:#E6FFFA;--chakra-colors-teal-100:#B2F5EA;--chakra-colors-teal-200:#81E6D9;--chakra-colors-teal-300:#4FD1C5;--chakra-colors-teal-400:#38B2AC;--chakra-colors-teal-500:#319795;--chakra-colors-teal-600:#2C7A7B;--chakra-colors-teal-700:#285E61;--chakra-colors-teal-800:#234E52;--chakra-colors-teal-900:#1D4044;--chakra-colors-blue-50:#ebf8ff;--chakra-colors-blue-100:#bee3f8;--chakra-colors-blue-200:#90cdf4;--chakra-colors-blue-300:#63b3ed;--chakra-colors-blue-400:#4299e1;--chakra-colors-blue-500:#3182ce;--chakra-colors-blue-600:#2b6cb0;--chakra-colors-blue-700:#2c5282;--chakra-colors-blue-800:#2a4365;--chakra-colors-blue-900:#1A365D;--chakra-colors-cyan-50:#EDFDFD;--chakra-colors-cyan-100:#C4F1F9;--chakra-colors-cyan-200:#9DECF9;--chakra-colors-cyan-300:#76E4F7;--chakra-colors-cyan-400:#0BC5EA;--chakra-colors-cyan-500:#00B5D8;--chakra-colors-cyan-600:#00A3C4;--chakra-colors-cyan-700:#0987A0;--chakra-colors-cyan-800:#086F83;--chakra-colors-cyan-900:#065666;--chakra-colors-purple-50:#FAF5FF;--chakra-colors-purple-100:#E9D8FD;--chakra-colors-purple-200:#D6BCFA;--chakra-colors-purple-300:#B794F4;--chakra-colors-purple-400:#9F7AEA;--chakra-colors-purple-500:#805AD5;--chakra-colors-purple-600:#6B46C1;--chakra-colors-purple-700:#553C9A;--chakra-colors-purple-800:#44337A;--chakra-colors-purple-900:#322659;--chakra-colors-pink-50:#FFF5F7;--chakra-colors-pink-100:#FED7E2;--chakra-colors-pink-200:#FBB6CE;--chakra-colors-pink-300:#F687B3;--chakra-colors-pink-400:#ED64A6;--chakra-colors-pink-500:#D53F8C;--chakra-colors-pink-600:#B83280;--chakra-colors-pink-700:#97266D;--chakra-colors-pink-800:#702459;--chakra-colors-pink-900:#521B41;--chakra-colors-brand-100:#fd683e;--chakra-colors-brand-200:#fd683e;--chakra-colors-brand-300:#fd683e;--chakra-colors-brand-400:#fd683e;--chakra-colors-brand-500:#fd683e;--chakra-colors-brand-600:#fd683e;--chakra-colors-brand-700:#fd683e;--chakra-colors-brand-800:#fd683e;--chakra-colors-brand-900:#fd683e;--chakra-borders-none:0;--chakra-borders-1px:1px solid;--chakra-borders-2px:2px solid;--chakra-borders-4px:4px solid;--chakra-borders-8px:8px solid;--chakra-fonts-heading:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-mono:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--chakra-fontSizes-3xs:0.45rem;--chakra-fontSizes-2xs:0.625rem;--chakra-fontSizes-xs:0.75rem;--chakra-fontSizes-sm:0.875rem;--chakra-fontSizes-md:1rem;--chakra-fontSizes-lg:1.125rem;--chakra-fontSizes-xl:1.25rem;--chakra-fontSizes-2xl:1.5rem;--chakra-fontSizes-3xl:1.875rem;--chakra-fontSizes-4xl:2.25rem;--chakra-fontSizes-5xl:3rem;--chakra-fontSizes-6xl:3.75rem;--chakra-fontSizes-7xl:4.5rem;--chakra-fontSizes-8xl:6rem;--chakra-fontSizes-9xl:8rem;--chakra-fontWeights-hairline:100;--chakra-fontWeights-thin:200;--chakra-fontWeights-light:300;--chakra-fontWeights-normal:400;--chakra-fontWeights-medium:500;--chakra-fontWeights-semibold:600;--chakra-fontWeights-bold:700;--chakra-fontWeights-extrabold:800;--chakra-fontWeights-black:900;--chakra-letterSpacings-tighter:-0.05em;--chakra-letterSpacings-tight:-0.025em;--chakra-letterSpacings-normal:0;--chakra-letterSpacings-wide:0.025em;--chakra-letterSpacings-wider:0.05em;--chakra-letterSpacings-widest:0.1em;--chakra-lineHeights-3:.75rem;--chakra-lineHeights-4:1rem;--chakra-lineHeights-5:1.25rem;--chakra-lineHeights-6:1.5rem;--chakra-lineHeights-7:1.75rem;--chakra-lineHeights-8:2rem;--chakra-lineHeights-9:2.25rem;--chakra-lineHeights-10:2.5rem;--chakra-lineHeights-normal:normal;--chakra-lineHeights-none:1;--chakra-lineHeights-shorter:1.25;--chakra-lineHeights-short:1.375;--chakra-lineHeights-base:1.5;--chakra-lineHeights-tall:1.625;--chakra-lineHeights-taller:2;--chakra-radii-none:0;--chakra-radii-sm:0.125rem;--chakra-radii-base:0.25rem;--chakra-radii-md:0.375rem;--chakra-radii-lg:0.5rem;--chakra-radii-xl:0.75rem;--chakra-radii-2xl:1rem;--chakra-radii-3xl:1.5rem;--chakra-radii-full:9999px;--chakra-space-1:0.25rem;--chakra-space-2:0.5rem;--chakra-space-3:0.75rem;--chakra-space-4:1rem;--chakra-space-5:1.25rem;--chakra-space-6:1.5rem;--chakra-space-7:1.75rem;--chakra-space-8:2rem;--chakra-space-9:2.25rem;--chakra-space-10:2.5rem;--chakra-space-12:3rem;--chakra-space-14:3.5rem;--chakra-space-16:4rem;--chakra-space-20:5rem;--chakra-space-24:6rem;--chakra-space-28:7rem;--chakra-space-32:8rem;--chakra-space-36:9rem;--chakra-space-40:10rem;--chakra-space-44:11rem;--chakra-space-48:12rem;--chakra-space-52:13rem;--chakra-space-56:14rem;--chakra-space-60:15rem;--chakra-space-64:16rem;--chakra-space-72:18rem;--chakra-space-80:20rem;--chakra-space-96:24rem;--chakra-space-px:1px;--chakra-space-0-5:0.125rem;--chakra-space-1-5:0.375rem;--chakra-space-2-5:0.625rem;--chakra-space-3-5:0.875rem;--chakra-shadows-xs:0 0 0 1px rgba(0, 0, 0, 0.05);--chakra-shadows-sm:0 1px 2px 0 rgba(0, 0, 0, 0.05);--chakra-shadows-base:0 1px 3px 0 rgba(0, 0, 0, 0.1),0 1px 2px 0 rgba(0, 0, 0, 0.06);--chakra-shadows-md:0 4px 6px -1px rgba(0, 0, 0, 0.1),0 2px 4px -1px rgba(0, 0, 0, 0.06);--chakra-shadows-lg:0 10px 15px -3px rgba(0, 0, 0, 0.1),0 4px 6px -2px rgba(0, 0, 0, 0.05);--chakra-shadows-xl:0 20px 25px -5px rgba(0, 0, 0, 0.1),0 10px 10px -5px rgba(0, 0, 0, 0.04);--chakra-shadows-2xl:0 25px 50px -12px rgba(0, 0, 0, 0.25);--chakra-shadows-outline:0 0 0 3px rgba(66, 153, 225, 0.6);--chakra-shadows-inner:inset 0 2px 4px 0 rgba(0,0,0,0.06);--chakra-shadows-none:none;--chakra-shadows-dark-lg:rgba(0, 0, 0, 0.1) 0px 0px 0px 1px,rgba(0, 0, 0, 0.2) 0px 5px 10px,rgba(0, 0, 0, 0.4) 0px 15px 40px;--chakra-sizes-1:0.25rem;--chakra-sizes-2:0.5rem;--chakra-sizes-3:0.75rem;--chakra-sizes-4:1rem;--chakra-sizes-5:1.25rem;--chakra-sizes-6:1.5rem;--chakra-sizes-7:1.75rem;--chakra-sizes-8:2rem;--chakra-sizes-9:2.25rem;--chakra-sizes-10:2.5rem;--chakra-sizes-12:3rem;--chakra-sizes-14:3.5rem;--chakra-sizes-16:4rem;--chakra-sizes-20:5rem;--chakra-sizes-24:6rem;--chakra-sizes-28:7rem;--chakra-sizes-32:8rem;--chakra-sizes-36:9rem;--chakra-sizes-40:10rem;--chakra-sizes-44:11rem;--chakra-sizes-48:12rem;--chakra-sizes-52:13rem;--chakra-sizes-56:14rem;--chakra-sizes-60:15rem;--chakra-sizes-64:16rem;--chakra-sizes-72:18rem;--chakra-sizes-80:20rem;--chakra-sizes-96:24rem;--chakra-sizes-px:1px;--chakra-sizes-0-5:0.125rem;--chakra-sizes-1-5:0.375rem;--chakra-sizes-2-5:0.625rem;--chakra-sizes-3-5:0.875rem;--chakra-sizes-max:max-content;--chakra-sizes-min:min-content;--chakra-sizes-full:100%;--chakra-sizes-3xs:14rem;--chakra-sizes-2xs:16rem;--chakra-sizes-xs:20rem;--chakra-sizes-sm:24rem;--chakra-sizes-md:28rem;--chakra-sizes-lg:32rem;--chakra-sizes-xl:36rem;--chakra-sizes-2xl:42rem;--chakra-sizes-3xl:48rem;--chakra-sizes-4xl:56rem;--chakra-sizes-5xl:64rem;--chakra-sizes-6xl:72rem;--chakra-sizes-7xl:80rem;--chakra-sizes-8xl:90rem;--chakra-sizes-prose:60ch;--chakra-sizes-container-sm:640px;--chakra-sizes-container-md:768px;--chakra-sizes-container-lg:1024px;--chakra-sizes-container-xl:1280px;--chakra-zIndices-hide:-1;--chakra-zIndices-auto:auto;--chakra-zIndices-base:0;--chakra-zIndices-docked:10;--chakra-zIndices-dropdown:1000;--chakra-zIndices-sticky:1100;--chakra-zIndices-banner:1200;--chakra-zIndices-overlay:1300;--chakra-zIndices-modal:1400;--chakra-zIndices-popover:1500;--chakra-zIndices-skipLink:1600;--chakra-zIndices-toast:1700;--chakra-zIndices-tooltip:1800;--chakra-transition-property-common:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;--chakra-transition-property-colors:background-color,border-color,color,fill,stroke;--chakra-transition-property-dimensions:width,height;--chakra-transition-property-position:left,right,top,bottom;--chakra-transition-property-background:background-color,background-image,background-position;--chakra-transition-easing-ease-in:cubic-bezier(0.4, 0, 1, 1);--chakra-transition-easing-ease-out:cubic-bezier(0, 0, 0.2, 1);--chakra-transition-easing-ease-in-out:cubic-bezier(0.4, 0, 0.2, 1);--chakra-transition-duration-ultra-fast:50ms;--chakra-transition-duration-faster:100ms;--chakra-transition-duration-fast:150ms;--chakra-transition-duration-normal:200ms;--chakra-transition-duration-slow:300ms;--chakra-transition-duration-slower:400ms;--chakra-transition-duration-ultra-slow:500ms;--chakra-blur-none:0;--chakra-blur-sm:4px;--chakra-blur-base:8px;--chakra-blur-md:12px;--chakra-blur-lg:16px;--chakra-blur-xl:24px;--chakra-blur-2xl:40px;--chakra-blur-3xl:64px;--chakra-breakpoints-base:0em;--chakra-breakpoints-sm:30em;--chakra-breakpoints-md:48em;--chakra-breakpoints-lg:62em;--chakra-breakpoints-xl:80em;--chakra-breakpoints-2xl:96em;}.chakra-ui-light :host:not([data-theme]),.chakra-ui-light :root:not([data-theme]),.chakra-ui-light [data-theme]:not([data-theme]),[data-theme=light] :host:not([data-theme]),[data-theme=light] :root:not([data-theme]),[data-theme=light] [data-theme]:not([data-theme]),:host[data-theme=light],:root[data-theme=light],[data-theme][data-theme=light]{--chakra-colors-chakra-body-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-body-bg:var(--chakra-colors-white);--chakra-colors-chakra-border-color:var(--chakra-colors-gray-200);--chakra-colors-chakra-inverse-text:var(--chakra-colors-white);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-100);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-600);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-gray-500);}.chakra-ui-dark :host:not([data-theme]),.chakra-ui-dark :root:not([data-theme]),.chakra-ui-dark [data-theme]:not([data-theme]),[data-theme=dark] :host:not([data-theme]),[data-theme=dark] :root:not([data-theme]),[data-theme=dark] [data-theme]:not([data-theme]),:host[data-theme=dark],:root[data-theme=dark],[data-theme][data-theme=dark]{--chakra-colors-chakra-body-text:var(--chakra-colors-whiteAlpha-900);--chakra-colors-chakra-body-bg:var(--chakra-colors-gray-800);--chakra-colors-chakra-border-color:var(--chakra-colors-whiteAlpha-300);--chakra-colors-chakra-inverse-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-700);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-400);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-whiteAlpha-400);}</style><style data-emotion="css-global fubdgu">html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;touch-action:manipulation;}body{position:relative;min-height:100%;margin:0;font-feature-settings:"kern";}:where(*, *::before, *::after){border-width:0;border-style:solid;box-sizing:border-box;word-wrap:break-word;}main{display:block;}hr{border-top-width:1px;box-sizing:content-box;height:0;overflow:visible;}:where(pre, code, kbd,samp){font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:1em;}a{background-color:transparent;color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;}abbr[title]{border-bottom:none;-webkit-text-decoration:underline;text-decoration:underline;-webkit-text-decoration:underline dotted;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}:where(b, strong){font-weight:bold;}small{font-size:80%;}:where(sub,sup){font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sub{bottom:-0.25em;}sup{top:-0.5em;}img{border-style:none;}:where(button, input, optgroup, select, textarea){font-family:inherit;font-size:100%;line-height:1.15;margin:0;}:where(button, input){overflow:visible;}:where(button, select){text-transform:none;}:where(
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/a2b12b4ba4227f0a.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/951e2e0eea2d4a5b.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-7b49d5ba7e3a434d.js"/><script src="/_next/static/chunks/86730205-cfb14e3f051bab35.js" async=""></script><script src="/_next/static/chunks/217-879a84d70f7a907c.js" async=""></script><script src="/_next/static/chunks/main-app-39061b0166c47f55.js" async=""></script><script src="/_next/static/chunks/9746af58-a42b7d169cacadf0.js" async=""></script><script src="/_next/static/chunks/47d8844f-929aed9b1c73a905.js" async=""></script><script src="/_next/static/chunks/a30376cd-de84559016d7e133.js" async=""></script><script src="/_next/static/chunks/6dc81886-adbfa45836061d79.js" async=""></script><script src="/_next/static/chunks/3a92ee20-1081c360214f9602.js" async=""></script><script src="/_next/static/chunks/3998a672-03adacad07b346ac.js" async=""></script><script src="/_next/static/chunks/1bff33f1-1ef85cf5e658a751.js" async=""></script><script src="/_next/static/chunks/bbda5537-9ec25eb1dd62348a.js" async=""></script><script src="/_next/static/chunks/41-f30276c289169376.js" async=""></script><script src="/_next/static/chunks/608-3b079b544e5d5f5e.js" async=""></script><script src="/_next/static/chunks/92-2153b66ddfaa2359.js" async=""></script><script src="/_next/static/chunks/app/layout-292f035bb0d2a98e.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>recce</title><meta name="description" content="Recce: Data validation toolkit for comprehensive PR review"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><style data-emotion="css-global dh58eu">:host,:root,[data-theme]{--chakra-ring-inset:var(--chakra-empty,/*!*/ /*!*/);--chakra-ring-offset-width:0px;--chakra-ring-offset-color:#fff;--chakra-ring-color:rgba(66, 153, 225, 0.6);--chakra-ring-offset-shadow:0 0 #0000;--chakra-ring-shadow:0 0 #0000;--chakra-space-x-reverse:0;--chakra-space-y-reverse:0;--chakra-colors-transparent:transparent;--chakra-colors-current:currentColor;--chakra-colors-black:#000000;--chakra-colors-white:#FFFFFF;--chakra-colors-whiteAlpha-50:rgba(255, 255, 255, 0.04);--chakra-colors-whiteAlpha-100:rgba(255, 255, 255, 0.06);--chakra-colors-whiteAlpha-200:rgba(255, 255, 255, 0.08);--chakra-colors-whiteAlpha-300:rgba(255, 255, 255, 0.16);--chakra-colors-whiteAlpha-400:rgba(255, 255, 255, 0.24);--chakra-colors-whiteAlpha-500:rgba(255, 255, 255, 0.36);--chakra-colors-whiteAlpha-600:rgba(255, 255, 255, 0.48);--chakra-colors-whiteAlpha-700:rgba(255, 255, 255, 0.64);--chakra-colors-whiteAlpha-800:rgba(255, 255, 255, 0.80);--chakra-colors-whiteAlpha-900:rgba(255, 255, 255, 0.92);--chakra-colors-blackAlpha-50:rgba(0, 0, 0, 0.04);--chakra-colors-blackAlpha-100:rgba(0, 0, 0, 0.06);--chakra-colors-blackAlpha-200:rgba(0, 0, 0, 0.08);--chakra-colors-blackAlpha-300:rgba(0, 0, 0, 0.16);--chakra-colors-blackAlpha-400:rgba(0, 0, 0, 0.24);--chakra-colors-blackAlpha-500:rgba(0, 0, 0, 0.36);--chakra-colors-blackAlpha-600:rgba(0, 0, 0, 0.48);--chakra-colors-blackAlpha-700:rgba(0, 0, 0, 0.64);--chakra-colors-blackAlpha-800:rgba(0, 0, 0, 0.80);--chakra-colors-blackAlpha-900:rgba(0, 0, 0, 0.92);--chakra-colors-gray-50:#F7FAFC;--chakra-colors-gray-100:#EDF2F7;--chakra-colors-gray-200:#E2E8F0;--chakra-colors-gray-300:#CBD5E0;--chakra-colors-gray-400:#A0AEC0;--chakra-colors-gray-500:#718096;--chakra-colors-gray-600:#4A5568;--chakra-colors-gray-700:#2D3748;--chakra-colors-gray-800:#1A202C;--chakra-colors-gray-900:#171923;--chakra-colors-red-50:#FFF5F5;--chakra-colors-red-100:#FED7D7;--chakra-colors-red-200:#FEB2B2;--chakra-colors-red-300:#FC8181;--chakra-colors-red-400:#F56565;--chakra-colors-red-500:#E53E3E;--chakra-colors-red-600:#C53030;--chakra-colors-red-700:#9B2C2C;--chakra-colors-red-800:#822727;--chakra-colors-red-900:#63171B;--chakra-colors-orange-50:#FFFAF0;--chakra-colors-orange-100:#FEEBC8;--chakra-colors-orange-200:#FBD38D;--chakra-colors-orange-300:#F6AD55;--chakra-colors-orange-400:#ED8936;--chakra-colors-orange-500:#DD6B20;--chakra-colors-orange-600:#C05621;--chakra-colors-orange-700:#9C4221;--chakra-colors-orange-800:#7B341E;--chakra-colors-orange-900:#652B19;--chakra-colors-yellow-50:#FFFFF0;--chakra-colors-yellow-100:#FEFCBF;--chakra-colors-yellow-200:#FAF089;--chakra-colors-yellow-300:#F6E05E;--chakra-colors-yellow-400:#ECC94B;--chakra-colors-yellow-500:#D69E2E;--chakra-colors-yellow-600:#B7791F;--chakra-colors-yellow-700:#975A16;--chakra-colors-yellow-800:#744210;--chakra-colors-yellow-900:#5F370E;--chakra-colors-green-50:#F0FFF4;--chakra-colors-green-100:#C6F6D5;--chakra-colors-green-200:#9AE6B4;--chakra-colors-green-300:#68D391;--chakra-colors-green-400:#48BB78;--chakra-colors-green-500:#38A169;--chakra-colors-green-600:#2F855A;--chakra-colors-green-700:#276749;--chakra-colors-green-800:#22543D;--chakra-colors-green-900:#1C4532;--chakra-colors-teal-50:#E6FFFA;--chakra-colors-teal-100:#B2F5EA;--chakra-colors-teal-200:#81E6D9;--chakra-colors-teal-300:#4FD1C5;--chakra-colors-teal-400:#38B2AC;--chakra-colors-teal-500:#319795;--chakra-colors-teal-600:#2C7A7B;--chakra-colors-teal-700:#285E61;--chakra-colors-teal-800:#234E52;--chakra-colors-teal-900:#1D4044;--chakra-colors-blue-50:#ebf8ff;--chakra-colors-blue-100:#bee3f8;--chakra-colors-blue-200:#90cdf4;--chakra-colors-blue-300:#63b3ed;--chakra-colors-blue-400:#4299e1;--chakra-colors-blue-500:#3182ce;--chakra-colors-blue-600:#2b6cb0;--chakra-colors-blue-700:#2c5282;--chakra-colors-blue-800:#2a4365;--chakra-colors-blue-900:#1A365D;--chakra-colors-cyan-50:#EDFDFD;--chakra-colors-cyan-100:#C4F1F9;--chakra-colors-cyan-200:#9DECF9;--chakra-colors-cyan-300:#76E4F7;--chakra-colors-cyan-400:#0BC5EA;--chakra-colors-cyan-500:#00B5D8;--chakra-colors-cyan-600:#00A3C4;--chakra-colors-cyan-700:#0987A0;--chakra-colors-cyan-800:#086F83;--chakra-colors-cyan-900:#065666;--chakra-colors-purple-50:#FAF5FF;--chakra-colors-purple-100:#E9D8FD;--chakra-colors-purple-200:#D6BCFA;--chakra-colors-purple-300:#B794F4;--chakra-colors-purple-400:#9F7AEA;--chakra-colors-purple-500:#805AD5;--chakra-colors-purple-600:#6B46C1;--chakra-colors-purple-700:#553C9A;--chakra-colors-purple-800:#44337A;--chakra-colors-purple-900:#322659;--chakra-colors-pink-50:#FFF5F7;--chakra-colors-pink-100:#FED7E2;--chakra-colors-pink-200:#FBB6CE;--chakra-colors-pink-300:#F687B3;--chakra-colors-pink-400:#ED64A6;--chakra-colors-pink-500:#D53F8C;--chakra-colors-pink-600:#B83280;--chakra-colors-pink-700:#97266D;--chakra-colors-pink-800:#702459;--chakra-colors-pink-900:#521B41;--chakra-colors-brand-100:#fd683e;--chakra-colors-brand-200:#fd683e;--chakra-colors-brand-300:#fd683e;--chakra-colors-brand-400:#fd683e;--chakra-colors-brand-500:#fd683e;--chakra-colors-brand-600:#fd683e;--chakra-colors-brand-700:#fd683e;--chakra-colors-brand-800:#fd683e;--chakra-colors-brand-900:#fd683e;--chakra-borders-none:0;--chakra-borders-1px:1px solid;--chakra-borders-2px:2px solid;--chakra-borders-4px:4px solid;--chakra-borders-8px:8px solid;--chakra-fonts-heading:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--chakra-fonts-mono:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--chakra-fontSizes-3xs:0.45rem;--chakra-fontSizes-2xs:0.625rem;--chakra-fontSizes-xs:0.75rem;--chakra-fontSizes-sm:0.875rem;--chakra-fontSizes-md:1rem;--chakra-fontSizes-lg:1.125rem;--chakra-fontSizes-xl:1.25rem;--chakra-fontSizes-2xl:1.5rem;--chakra-fontSizes-3xl:1.875rem;--chakra-fontSizes-4xl:2.25rem;--chakra-fontSizes-5xl:3rem;--chakra-fontSizes-6xl:3.75rem;--chakra-fontSizes-7xl:4.5rem;--chakra-fontSizes-8xl:6rem;--chakra-fontSizes-9xl:8rem;--chakra-fontWeights-hairline:100;--chakra-fontWeights-thin:200;--chakra-fontWeights-light:300;--chakra-fontWeights-normal:400;--chakra-fontWeights-medium:500;--chakra-fontWeights-semibold:600;--chakra-fontWeights-bold:700;--chakra-fontWeights-extrabold:800;--chakra-fontWeights-black:900;--chakra-letterSpacings-tighter:-0.05em;--chakra-letterSpacings-tight:-0.025em;--chakra-letterSpacings-normal:0;--chakra-letterSpacings-wide:0.025em;--chakra-letterSpacings-wider:0.05em;--chakra-letterSpacings-widest:0.1em;--chakra-lineHeights-3:.75rem;--chakra-lineHeights-4:1rem;--chakra-lineHeights-5:1.25rem;--chakra-lineHeights-6:1.5rem;--chakra-lineHeights-7:1.75rem;--chakra-lineHeights-8:2rem;--chakra-lineHeights-9:2.25rem;--chakra-lineHeights-10:2.5rem;--chakra-lineHeights-normal:normal;--chakra-lineHeights-none:1;--chakra-lineHeights-shorter:1.25;--chakra-lineHeights-short:1.375;--chakra-lineHeights-base:1.5;--chakra-lineHeights-tall:1.625;--chakra-lineHeights-taller:2;--chakra-radii-none:0;--chakra-radii-sm:0.125rem;--chakra-radii-base:0.25rem;--chakra-radii-md:0.375rem;--chakra-radii-lg:0.5rem;--chakra-radii-xl:0.75rem;--chakra-radii-2xl:1rem;--chakra-radii-3xl:1.5rem;--chakra-radii-full:9999px;--chakra-space-1:0.25rem;--chakra-space-2:0.5rem;--chakra-space-3:0.75rem;--chakra-space-4:1rem;--chakra-space-5:1.25rem;--chakra-space-6:1.5rem;--chakra-space-7:1.75rem;--chakra-space-8:2rem;--chakra-space-9:2.25rem;--chakra-space-10:2.5rem;--chakra-space-12:3rem;--chakra-space-14:3.5rem;--chakra-space-16:4rem;--chakra-space-20:5rem;--chakra-space-24:6rem;--chakra-space-28:7rem;--chakra-space-32:8rem;--chakra-space-36:9rem;--chakra-space-40:10rem;--chakra-space-44:11rem;--chakra-space-48:12rem;--chakra-space-52:13rem;--chakra-space-56:14rem;--chakra-space-60:15rem;--chakra-space-64:16rem;--chakra-space-72:18rem;--chakra-space-80:20rem;--chakra-space-96:24rem;--chakra-space-px:1px;--chakra-space-0-5:0.125rem;--chakra-space-1-5:0.375rem;--chakra-space-2-5:0.625rem;--chakra-space-3-5:0.875rem;--chakra-shadows-xs:0 0 0 1px rgba(0, 0, 0, 0.05);--chakra-shadows-sm:0 1px 2px 0 rgba(0, 0, 0, 0.05);--chakra-shadows-base:0 1px 3px 0 rgba(0, 0, 0, 0.1),0 1px 2px 0 rgba(0, 0, 0, 0.06);--chakra-shadows-md:0 4px 6px -1px rgba(0, 0, 0, 0.1),0 2px 4px -1px rgba(0, 0, 0, 0.06);--chakra-shadows-lg:0 10px 15px -3px rgba(0, 0, 0, 0.1),0 4px 6px -2px rgba(0, 0, 0, 0.05);--chakra-shadows-xl:0 20px 25px -5px rgba(0, 0, 0, 0.1),0 10px 10px -5px rgba(0, 0, 0, 0.04);--chakra-shadows-2xl:0 25px 50px -12px rgba(0, 0, 0, 0.25);--chakra-shadows-outline:0 0 0 3px rgba(66, 153, 225, 0.6);--chakra-shadows-inner:inset 0 2px 4px 0 rgba(0,0,0,0.06);--chakra-shadows-none:none;--chakra-shadows-dark-lg:rgba(0, 0, 0, 0.1) 0px 0px 0px 1px,rgba(0, 0, 0, 0.2) 0px 5px 10px,rgba(0, 0, 0, 0.4) 0px 15px 40px;--chakra-sizes-1:0.25rem;--chakra-sizes-2:0.5rem;--chakra-sizes-3:0.75rem;--chakra-sizes-4:1rem;--chakra-sizes-5:1.25rem;--chakra-sizes-6:1.5rem;--chakra-sizes-7:1.75rem;--chakra-sizes-8:2rem;--chakra-sizes-9:2.25rem;--chakra-sizes-10:2.5rem;--chakra-sizes-12:3rem;--chakra-sizes-14:3.5rem;--chakra-sizes-16:4rem;--chakra-sizes-20:5rem;--chakra-sizes-24:6rem;--chakra-sizes-28:7rem;--chakra-sizes-32:8rem;--chakra-sizes-36:9rem;--chakra-sizes-40:10rem;--chakra-sizes-44:11rem;--chakra-sizes-48:12rem;--chakra-sizes-52:13rem;--chakra-sizes-56:14rem;--chakra-sizes-60:15rem;--chakra-sizes-64:16rem;--chakra-sizes-72:18rem;--chakra-sizes-80:20rem;--chakra-sizes-96:24rem;--chakra-sizes-px:1px;--chakra-sizes-0-5:0.125rem;--chakra-sizes-1-5:0.375rem;--chakra-sizes-2-5:0.625rem;--chakra-sizes-3-5:0.875rem;--chakra-sizes-max:max-content;--chakra-sizes-min:min-content;--chakra-sizes-full:100%;--chakra-sizes-3xs:14rem;--chakra-sizes-2xs:16rem;--chakra-sizes-xs:20rem;--chakra-sizes-sm:24rem;--chakra-sizes-md:28rem;--chakra-sizes-lg:32rem;--chakra-sizes-xl:36rem;--chakra-sizes-2xl:42rem;--chakra-sizes-3xl:48rem;--chakra-sizes-4xl:56rem;--chakra-sizes-5xl:64rem;--chakra-sizes-6xl:72rem;--chakra-sizes-7xl:80rem;--chakra-sizes-8xl:90rem;--chakra-sizes-prose:60ch;--chakra-sizes-container-sm:640px;--chakra-sizes-container-md:768px;--chakra-sizes-container-lg:1024px;--chakra-sizes-container-xl:1280px;--chakra-zIndices-hide:-1;--chakra-zIndices-auto:auto;--chakra-zIndices-base:0;--chakra-zIndices-docked:10;--chakra-zIndices-dropdown:1000;--chakra-zIndices-sticky:1100;--chakra-zIndices-banner:1200;--chakra-zIndices-overlay:1300;--chakra-zIndices-modal:1400;--chakra-zIndices-popover:1500;--chakra-zIndices-skipLink:1600;--chakra-zIndices-toast:1700;--chakra-zIndices-tooltip:1800;--chakra-transition-property-common:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;--chakra-transition-property-colors:background-color,border-color,color,fill,stroke;--chakra-transition-property-dimensions:width,height;--chakra-transition-property-position:left,right,top,bottom;--chakra-transition-property-background:background-color,background-image,background-position;--chakra-transition-easing-ease-in:cubic-bezier(0.4, 0, 1, 1);--chakra-transition-easing-ease-out:cubic-bezier(0, 0, 0.2, 1);--chakra-transition-easing-ease-in-out:cubic-bezier(0.4, 0, 0.2, 1);--chakra-transition-duration-ultra-fast:50ms;--chakra-transition-duration-faster:100ms;--chakra-transition-duration-fast:150ms;--chakra-transition-duration-normal:200ms;--chakra-transition-duration-slow:300ms;--chakra-transition-duration-slower:400ms;--chakra-transition-duration-ultra-slow:500ms;--chakra-blur-none:0;--chakra-blur-sm:4px;--chakra-blur-base:8px;--chakra-blur-md:12px;--chakra-blur-lg:16px;--chakra-blur-xl:24px;--chakra-blur-2xl:40px;--chakra-blur-3xl:64px;--chakra-breakpoints-base:0em;--chakra-breakpoints-sm:30em;--chakra-breakpoints-md:48em;--chakra-breakpoints-lg:62em;--chakra-breakpoints-xl:80em;--chakra-breakpoints-2xl:96em;}.chakra-ui-light :host:not([data-theme]),.chakra-ui-light :root:not([data-theme]),.chakra-ui-light [data-theme]:not([data-theme]),[data-theme=light] :host:not([data-theme]),[data-theme=light] :root:not([data-theme]),[data-theme=light] [data-theme]:not([data-theme]),:host[data-theme=light],:root[data-theme=light],[data-theme][data-theme=light]{--chakra-colors-chakra-body-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-body-bg:var(--chakra-colors-white);--chakra-colors-chakra-border-color:var(--chakra-colors-gray-200);--chakra-colors-chakra-inverse-text:var(--chakra-colors-white);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-100);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-600);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-gray-500);}.chakra-ui-dark :host:not([data-theme]),.chakra-ui-dark :root:not([data-theme]),.chakra-ui-dark [data-theme]:not([data-theme]),[data-theme=dark] :host:not([data-theme]),[data-theme=dark] :root:not([data-theme]),[data-theme=dark] [data-theme]:not([data-theme]),:host[data-theme=dark],:root[data-theme=dark],[data-theme][data-theme=dark]{--chakra-colors-chakra-body-text:var(--chakra-colors-whiteAlpha-900);--chakra-colors-chakra-body-bg:var(--chakra-colors-gray-800);--chakra-colors-chakra-border-color:var(--chakra-colors-whiteAlpha-300);--chakra-colors-chakra-inverse-text:var(--chakra-colors-gray-800);--chakra-colors-chakra-subtle-bg:var(--chakra-colors-gray-700);--chakra-colors-chakra-subtle-text:var(--chakra-colors-gray-400);--chakra-colors-chakra-placeholder-color:var(--chakra-colors-whiteAlpha-400);}</style><style data-emotion="css-global fubdgu">html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:system-ui,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;touch-action:manipulation;}body{position:relative;min-height:100%;margin:0;font-feature-settings:"kern";}:where(*, *::before, *::after){border-width:0;border-style:solid;box-sizing:border-box;word-wrap:break-word;}main{display:block;}hr{border-top-width:1px;box-sizing:content-box;height:0;overflow:visible;}:where(pre, code, kbd,samp){font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:1em;}a{background-color:transparent;color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit;}abbr[title]{border-bottom:none;-webkit-text-decoration:underline;text-decoration:underline;-webkit-text-decoration:underline dotted;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}:where(b, strong){font-weight:bold;}small{font-size:80%;}:where(sub,sup){font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sub{bottom:-0.25em;}sup{top:-0.5em;}img{border-style:none;}:where(button, input, optgroup, select, textarea){font-family:inherit;font-size:100%;line-height:1.15;margin:0;}:where(button, input){overflow:visible;}:where(button, select){text-transform:none;}:where(
|
|
2
2
|
button::-moz-focus-inner,
|
|
3
3
|
[type="button"]::-moz-focus-inner,
|
|
4
4
|
[type="reset"]::-moz-focus-inner,
|
|
@@ -19,4 +19,4 @@
|
|
|
19
19
|
pre
|
|
20
20
|
){margin:0;}button{background:transparent;padding:0;}fieldset{margin:0;padding:0;}:where(ol, ul){margin:0;padding:0;}textarea{resize:vertical;}:where(button, [role="button"]){cursor:pointer;}button::-moz-focus-inner{border:0!important;}table{border-collapse:collapse;}:where(h1, h2, h3, h4, h5, h6){font-size:inherit;font-weight:inherit;}:where(button, input, optgroup, select, textarea){padding:0;line-height:inherit;color:inherit;}:where(img, svg, video, canvas, audio, iframe, embed, object){display:block;}:where(img, video){max-width:100%;height:auto;}[data-js-focus-visible] :focus:not([data-focus-visible-added]):not(
|
|
21
21
|
[data-focus-visible-disabled]
|
|
22
|
-
){outline:none;box-shadow:none;}select::-ms-expand{display:none;}:root,:host{--chakra-vh:100vh;}@supports (height: -webkit-fill-available){:root,:host{--chakra-vh:-webkit-fill-available;}}@supports (height: -moz-fill-available){:root,:host{--chakra-vh:-moz-fill-available;}}@supports (height: 100dvh){:root,:host{--chakra-vh:100dvh;}}</style><style data-emotion="css-global 1cgn62j">body{font-family:var(--chakra-fonts-body);color:var(--chakra-colors-chakra-body-text);background:var(--chakra-colors-chakra-body-bg);transition-property:background-color;transition-duration:var(--chakra-transition-duration-normal);line-height:var(--chakra-lineHeights-base);}*::-webkit-input-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*::-moz-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*:-ms-input-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*::placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*,*::before,::after{border-color:var(--chakra-colors-chakra-border-color);}</style><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><span></span><span id="__chakra_env" hidden=""></span><script src="/_next/static/chunks/webpack-7b49d5ba7e3a434d.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/a2b12b4ba4227f0a.css\",\"style\"]\n2:HL[\"/_next/static/css/951e2e0eea2d4a5b.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"3:I[35639,[],\"\"]\n5:I[51454,[],\"\"]\n6:I[48464,[],\"\"]\n7:I[76413,[\"509\",\"static/chunks/9746af58-a42b7d169cacadf0.js\",\"989\",\"static/chunks/47d8844f-929aed9b1c73a905.js\",\"147\",\"static/chunks/a30376cd-de84559016d7e133.js\",\"495\",\"static/chunks/6dc81886-adbfa45836061d79.js\",\"376\",\"static/chunks/3a92ee20-1081c360214f9602.js\",\"678\",\"static/chunks/3998a672-
|
|
22
|
+
){outline:none;box-shadow:none;}select::-ms-expand{display:none;}:root,:host{--chakra-vh:100vh;}@supports (height: -webkit-fill-available){:root,:host{--chakra-vh:-webkit-fill-available;}}@supports (height: -moz-fill-available){:root,:host{--chakra-vh:-moz-fill-available;}}@supports (height: 100dvh){:root,:host{--chakra-vh:100dvh;}}</style><style data-emotion="css-global 1cgn62j">body{font-family:var(--chakra-fonts-body);color:var(--chakra-colors-chakra-body-text);background:var(--chakra-colors-chakra-body-bg);transition-property:background-color;transition-duration:var(--chakra-transition-duration-normal);line-height:var(--chakra-lineHeights-base);}*::-webkit-input-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*::-moz-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*:-ms-input-placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*::placeholder{color:var(--chakra-colors-chakra-placeholder-color);}*,*::before,::after{border-color:var(--chakra-colors-chakra-border-color);}</style><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><span></span><span id="__chakra_env" hidden=""></span><script src="/_next/static/chunks/webpack-7b49d5ba7e3a434d.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/a2b12b4ba4227f0a.css\",\"style\"]\n2:HL[\"/_next/static/css/951e2e0eea2d4a5b.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"3:I[35639,[],\"\"]\n5:I[51454,[],\"\"]\n6:I[48464,[],\"\"]\n7:I[76413,[\"509\",\"static/chunks/9746af58-a42b7d169cacadf0.js\",\"989\",\"static/chunks/47d8844f-929aed9b1c73a905.js\",\"147\",\"static/chunks/a30376cd-de84559016d7e133.js\",\"495\",\"static/chunks/6dc81886-adbfa45836061d79.js\",\"376\",\"static/chunks/3a92ee20-1081c360214f9602.js\",\"678\",\"static/chunks/3998a672-03adacad07b346ac.js\",\"20\",\"static/chunks/1bff33f1-1ef85cf5e658a751.js\",\"413\",\"static/chunks/bbda5537-9ec25eb1dd62348a.js\",\"41\",\"static/chunks/41-f30276c289169376.js\",\"608\",\"static/chunks/608-3b079b544e5d5f5e.js\",\"92\",\"static/chunks/92-2153b66ddfaa2359.js\",\"185\",\"static/chunks/app/layout-292f035bb0d2a98e.js\"],\"default\"]\nd:I[26480,[],\"\"]\n8:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n9:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\na:{\"display\":\"inline-block\"}\nb:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\ne:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L3\",null,{\"buildId\":\"0B_qD27U3VEMnPnujEJxV\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L4\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/a2b12b4ba4227f0a.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/951e2e0eea2d4a5b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$8\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$9\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$a\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$b\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$Lc\"],\"globalErrorComponent\":\"$d\",\"missingSlots\":\"$We\"}]\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"recce\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Recce: Data validation toolkit for comprehensive PR review\"}]]\n4:null\n"])</script></body></html>
|