From 31ce060ea6d3ebe924ff6465880996b4be15ab1b Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Thu, 15 Dec 2022 13:16:38 +0100 Subject: [PATCH 01/28] feat: Implementation of cpe configs, not tested yet --- src/sec_certs/dataset/cve.py | 26 +++++++- src/sec_certs/dataset/dataset.py | 10 +-- src/sec_certs/sample/cpe.py | 17 +++++ src/sec_certs/sample/cve.py | 104 ++++++++++++++++++++----------- 4 files changed, 112 insertions(+), 45 deletions(-) diff --git a/src/sec_certs/dataset/cve.py b/src/sec_certs/dataset/cve.py index ebbd9171..711524b5 100644 --- a/src/sec_certs/dataset/cve.py +++ b/src/sec_certs/dataset/cve.py @@ -139,8 +139,30 @@ def from_web( return cls(all_cves, json_path) - def get_cve_ids_for_cpe_uri(self, cpe_uri: str) -> set[str] | None: - return self.cpe_to_cve_ids_lookup.get(cpe_uri, None) + def _get_cve_ids_for_cpe_uri(self, cpe_uri: str) -> set[str]: + return self.cpe_to_cve_ids_lookup.get(cpe_uri, set()) + + def _get_cves_from_exactly_matched_cpes(self, cpe_matches: set[str]) -> set[str]: + return set(itertools.chain.from_iterable([self._get_cve_ids_for_cpe_uri(cpe_uri) for cpe_uri in cpe_matches])) + + def _get_cves_from_cpe_configurations(self, cpe_matches: set[str]) -> set[str]: + def do_cve_configurations_match_cpe_matches(cve: CVE, cpe_matches: set[str]) -> bool: + return any( + [cpe_configuration.match(cpe_matches) for cpe_configuration in cve.vulnerable_cpe_configurations] + ) + + return { + cve.cve_id + for cve in self.cves_with_vulnerable_configurations + if do_cve_configurations_match_cpe_matches(cve, cpe_matches) + } + + def get_cves_from_matched_cpes(self, cpe_matches: set[str]) -> set[str]: + cves = self._get_cves_from_exactly_matched_cpes(cpe_matches) + cves_matched_by_configurations = self._get_cves_from_cpe_configurations(cpe_matches) + cves.update(cves_matched_by_configurations) + + return cves def filter_related_cpes(self, relevant_cpes: set[CPE]): """ diff --git a/src/sec_certs/dataset/dataset.py b/src/sec_certs/dataset/dataset.py index 40ea5611..a7120cef 100644 --- a/src/sec_certs/dataset/dataset.py +++ b/src/sec_certs/dataset/dataset.py @@ -538,14 +538,10 @@ def compute_related_cves( cert: Certificate for cert in tqdm(cpe_rich_certs, desc="Computing related CVES"): if cert.heuristics.cpe_matches: - related_cves = [ - self.auxillary_datasets.cve_dset.get_cve_ids_for_cpe_uri(x) for x in cert.heuristics.cpe_matches - ] - related_cves = list(filter(lambda x: x is not None, related_cves)) + related_cves = self.auxillary_datasets.cve_dset.get_cves_from_matched_cpes(cert.heuristics.cpe_matches) + if related_cves: - cert.heuristics.related_cves = set( - itertools.chain.from_iterable(x for x in related_cves if x is not None) - ) + cert.heuristics.related_cves = related_cves else: cert.heuristics.related_cves = None diff --git a/src/sec_certs/sample/cpe.py b/src/sec_certs/sample/cpe.py index a7532f7f..26db4032 100644 --- a/src/sec_certs/sample/cpe.py +++ b/src/sec_certs/sample/cpe.py @@ -10,6 +10,23 @@ from sec_certs.utils import helpers +class CPEConfiguration(ComplexSerializableType): + + __slots__ = ["platform", "cpes"] + + def __init__(self, platform: str, cpes: list[str]) -> None: + super().__init__() + self.platform: str = platform + self.cpes: list[str] = cpes + + def __eq__(self, other) -> bool: + return ( + isinstance(other, self.__class__) and self.platform == other.platform and set(self.cpes) == set(other.cpes) + ) + + def match(self, set_of_cpes: set[str]) -> bool: + return self.platform in set_of_cpes and any([cpe for cpe in set_of_cpes]) + @dataclass(init=False) class CPE(PandasSerializableType, ComplexSerializableType): uri: str diff --git a/src/sec_certs/sample/cve.py b/src/sec_certs/sample/cve.py index ec024d35..1084f361 100644 --- a/src/sec_certs/sample/cve.py +++ b/src/sec_certs/sample/cve.py @@ -6,8 +6,7 @@ from typing import Any, ClassVar from dateutil.parser import isoparse - -from sec_certs.sample.cpe import CPE, cached_cpe +from sec_certs.sample.cpe import CPE, CPEConfiguration, cached_cpe from sec_certs.serialization.json import ComplexSerializableType from sec_certs.serialization.pandas import PandasSerializableType @@ -48,11 +47,12 @@ def from_nist_dict(cls, dct: dict[str, Any]) -> CVE.Impact: cve_id: str vulnerable_cpes: list[CPE] + vulnerable_cpe_configurations: list[CPEConfiguration] impact: Impact published_date: datetime.datetime | None cwe_ids: set[str] | None - __slots__ = ["cve_id", "vulnerable_cpes", "impact", "published_date", "cwe_ids"] + __slots__ = ["cve_id", "vulnerable_cpes", "vulnerable_cpe_configurations", "impact", "published_date", "cwe_ids"] pandas_columns: ClassVar[list[str]] = [ "cve_id", @@ -66,11 +66,12 @@ def from_nist_dict(cls, dct: dict[str, Any]) -> CVE.Impact: ] def __init__( - self, cve_id: str, vulnerable_cpes: list[CPE], impact: Impact, published_date: str, cwe_ids: set[str] | None + self, cve_id: str, vulnerable_cpes: list[CPE], vulnerable_cpe_configurations: list[CPEConfiguration], impact: Impact, published_date: str, cwe_ids: set[str] | None ): super().__init__() self.cve_id = cve_id self.vulnerable_cpes = vulnerable_cpes + self.vulnerable_cpe_configurations = vulnerable_cpe_configurations self.impact = impact self.published_date = isoparse(published_date) self.cwe_ids = cwe_ids @@ -116,68 +117,99 @@ def to_dict(self) -> dict[str, Any]: } @staticmethod - def _parse_nist_dict(lst: list) -> list[CPE]: + def _parse_nist_cpe_dicts(lst: list[dict[str, Any]]) -> list[CPE]: cpes: list[CPE] = [] for x in lst: - if x["vulnerable"]: - cpe_uri = x["cpe23Uri"] - version_start: tuple[str, str] | None - version_end: tuple[str, str] | None - if "versionStartIncluding" in x and x["versionStartIncluding"]: - version_start = ("including", x["versionStartIncluding"]) - elif "versionStartExcluding" in x and x["versionStartExcluding"]: - version_start = ("excluding", x["versionStartExcluding"]) - else: - version_start = None - - if "versionEndIncluding" in x and x["versionEndIncluding"]: - version_end = ("including", x["versionEndIncluding"]) - elif "versionEndExcluding" in x and x["versionEndExcluding"]: - version_end = ("excluding", x["versionEndExcluding"]) - else: - version_end = None - - cpes.append(cached_cpe(cpe_uri, start_version=version_start, end_version=version_end)) + cpe_uri = x["cpe23Uri"] + version_start: Optional[Tuple[str, str]] + version_end: Optional[Tuple[str, str]] + if "versionStartIncluding" in x and x["versionStartIncluding"]: + version_start = ("including", x["versionStartIncluding"]) + elif "versionStartExcluding" in x and x["versionStartExcluding"]: + version_start = ("excluding", x["versionStartExcluding"]) + else: + version_start = None + + if "versionEndIncluding" in x and x["versionEndIncluding"]: + version_end = ("including", x["versionEndIncluding"]) + elif "versionEndExcluding" in x and x["versionEndExcluding"]: + version_end = ("excluding", x["versionEndExcluding"]) + else: + version_end = None + + cpes.append(cached_cpe(cpe_uri, start_version=version_start, end_version=version_end)) return cpes + @staticmethod + def _parse_nist_dict(cpe_list: list[dict[str, Any]], parse_only_vulnerable_cpes: bool) -> list[CPE]: + cpe_dicts_to_be_parsed = cpe_list + + if parse_only_vulnerable_cpes: + cpe_dicts_to_be_parsed = [dct for dct in cpe_list if dct["vulnerable"]] + + return CVE._parse_nist_cpe_dicts(cpe_dicts_to_be_parsed) + @classmethod def from_nist_dict(cls, dct: dict) -> CVE: """ Will load CVE from dictionary defined at https://nvd.nist.gov/feeds/json/cve/1.1 """ - def get_vulnerable_cpes_from_nist_dict(dct: dict) -> list[CPE]: - def get_vulnerable_cpes_from_node(node: dict) -> list[CPE]: - cpes: list[CPE] = [] + def get_cpe_configurations_from_and_cpe_dict(children: list[dict]) -> list[CPEConfiguration]: + configurations: list[CPEConfiguration] = [] + + if not children or len(children) != 2: + return configurations + cpes = CVE._parse_nist_dict(children[0]["cpe_match"], True) + vulnerable_cpe_uris = [cpe.uri for cpe in cpes] + + if not cpes: + return configurations + + # Platform does not have to be vulnerable necessarily + platforms = CVE._parse_nist_dict(children[1]["cpe_match"], False) + + return [CPEConfiguration(platform.uri, vulnerable_cpe_uris) for platform in platforms] + + def get_vulnerable_cpes_from_nist_dict(dct: dict) -> tuple[list[CPE], list[CPEConfiguration]]: + def get_vulnerable_cpes_and_cpe_configurations( + node: Dict, cpes: list[CPE], cpe_configurations: list[CPEConfiguration] + ) -> tuple[list[CPE], list[CPEConfiguration]]: if node["operator"] == "AND": - return cpes + cpe_configurations.extend(get_cpe_configurations_from_and_cpe_dict(node["children"])) if "children" in node: for child in node["children"]: - cpes += get_vulnerable_cpes_from_node(child) + get_vulnerable_cpes_and_cpe_configurations(child, cpes, cpe_configurations) if "cpe_match" not in node: - return cpes + return cpes, cpe_configurations candidates = node["cpe_match"] - cpes += CVE._parse_nist_dict(candidates) + cpes.extend(CVE._parse_nist_dict(candidates, True)) - return cpes + return cpes, cpe_configurations - return list( - itertools.chain.from_iterable(get_vulnerable_cpes_from_node(x) for x in dct["configurations"]["nodes"]) + cpes_and_cpe_configurations = [ + get_vulnerable_cpes_and_cpe_configurations(x, [], []) for x in dct["configurations"]["nodes"] + ] + vulnerable_cpes = list(itertools.chain.from_iterable(map(lambda x: x[0], cpes_and_cpe_configurations))) + vulnerable_cpe_configurations = list( + itertools.chain.from_iterable(map(lambda x: x[1], cpes_and_cpe_configurations)) ) + return vulnerable_cpes, vulnerable_cpe_configurations + cve_id = dct["cve"]["CVE_data_meta"]["ID"] impact = cls.Impact.from_nist_dict(dct) - vulnerable_cpes = get_vulnerable_cpes_from_nist_dict(dct) + vulnerable_cpes, vulnerable_cpe_configurations = get_vulnerable_cpes_from_nist_dict(dct) published_date = dct["publishedDate"] cwe_ids = cls.parse_cwe_data(dct) - return cls(cve_id, vulnerable_cpes, impact, published_date, cwe_ids) + return cls(cve_id, vulnerable_cpes, vulnerable_cpe_configurations, impact, published_date, cwe_ids) @staticmethod def parse_cwe_data(dct: dict) -> set[str] | None: From 67ffd74ef016e7039bc112b973b139bd1c67454a Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Thu, 15 Dec 2022 14:23:32 +0100 Subject: [PATCH 02/28] fix: Fixed critical bug in recursion, fixed tests --- src/sec_certs/sample/cpe.py | 1 + src/sec_certs/sample/cve.py | 16 ++++++++++++---- tests/cc/test_cc_analysis.py | 2 ++ tests/fips/test_fips_analysis.py | 2 ++ tests/test_cve.py | 2 ++ 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/sec_certs/sample/cpe.py b/src/sec_certs/sample/cpe.py index 26db4032..1fdfeaef 100644 --- a/src/sec_certs/sample/cpe.py +++ b/src/sec_certs/sample/cpe.py @@ -27,6 +27,7 @@ def __eq__(self, other) -> bool: def match(self, set_of_cpes: set[str]) -> bool: return self.platform in set_of_cpes and any([cpe for cpe in set_of_cpes]) + @dataclass(init=False) class CPE(PandasSerializableType, ComplexSerializableType): uri: str diff --git a/src/sec_certs/sample/cve.py b/src/sec_certs/sample/cve.py index 1084f361..f82320fc 100644 --- a/src/sec_certs/sample/cve.py +++ b/src/sec_certs/sample/cve.py @@ -6,6 +6,7 @@ from typing import Any, ClassVar from dateutil.parser import isoparse + from sec_certs.sample.cpe import CPE, CPEConfiguration, cached_cpe from sec_certs.serialization.json import ComplexSerializableType from sec_certs.serialization.pandas import PandasSerializableType @@ -66,7 +67,13 @@ def from_nist_dict(cls, dct: dict[str, Any]) -> CVE.Impact: ] def __init__( - self, cve_id: str, vulnerable_cpes: list[CPE], vulnerable_cpe_configurations: list[CPEConfiguration], impact: Impact, published_date: str, cwe_ids: set[str] | None + self, + cve_id: str, + vulnerable_cpes: list[CPE], + vulnerable_cpe_configurations: list[CPEConfiguration], + impact: Impact, + published_date: str, + cwe_ids: set[str] | None, ): super().__init__() self.cve_id = cve_id @@ -122,8 +129,8 @@ def _parse_nist_cpe_dicts(lst: list[dict[str, Any]]) -> list[CPE]: for x in lst: cpe_uri = x["cpe23Uri"] - version_start: Optional[Tuple[str, str]] - version_end: Optional[Tuple[str, str]] + version_start: tuple[str, str] | None + version_end: tuple[str, str] | None if "versionStartIncluding" in x and x["versionStartIncluding"]: version_start = ("including", x["versionStartIncluding"]) elif "versionStartExcluding" in x and x["versionStartExcluding"]: @@ -176,10 +183,11 @@ def get_cpe_configurations_from_and_cpe_dict(children: list[dict]) -> list[CPECo def get_vulnerable_cpes_from_nist_dict(dct: dict) -> tuple[list[CPE], list[CPEConfiguration]]: def get_vulnerable_cpes_and_cpe_configurations( - node: Dict, cpes: list[CPE], cpe_configurations: list[CPEConfiguration] + node: dict, cpes: list[CPE], cpe_configurations: list[CPEConfiguration] ) -> tuple[list[CPE], list[CPEConfiguration]]: if node["operator"] == "AND": cpe_configurations.extend(get_cpe_configurations_from_and_cpe_dict(node["children"])) + return cpes, cpe_configurations if "children" in node: for child in node["children"]: diff --git a/tests/cc/test_cc_analysis.py b/tests/cc/test_cc_analysis.py index ff9fe3c0..57d36841 100644 --- a/tests/cc/test_cc_analysis.py +++ b/tests/cc/test_cc_analysis.py @@ -60,6 +60,7 @@ def cves(cpe_single_sign_on) -> set[CVE]: CVE( "CVE-2017-1732", [cpe_single_sign_on], + [], CVE.Impact(5.3, "MEDIUM", 3.9, 1.4), "2021-05-26T04:15Z", {"CWE-200"}, @@ -67,6 +68,7 @@ def cves(cpe_single_sign_on) -> set[CVE]: CVE( "CVE-2019-4513", [cpe_single_sign_on], + [], CVE.Impact(8.2, "HIGH", 3.9, 4.2), "2000-05-26T04:15Z", {"CVE-611"}, diff --git a/tests/fips/test_fips_analysis.py b/tests/fips/test_fips_analysis.py index b7b5d89f..e68ee6a5 100644 --- a/tests/fips/test_fips_analysis.py +++ b/tests/fips/test_fips_analysis.py @@ -34,6 +34,7 @@ def cve(vulnerable_cpe: CPE) -> CVE: return CVE( "CVE-1234-123456", [vulnerable_cpe], + [], CVE.Impact(10, "HIGH", 10, 10), "2021-05-26T04:15Z", {"CWE-200"}, @@ -45,6 +46,7 @@ def some_other_cve(some_random_cpe: CPE) -> CVE: return CVE( "CVE-2019-4513", [some_random_cpe], + [], CVE.Impact(8.2, "HIGH", 3.9, 4.2), "2000-05-26T04:15Z", {"CVE-611"}, diff --git a/tests/test_cve.py b/tests/test_cve.py index cd098d7b..02c80474 100644 --- a/tests/test_cve.py +++ b/tests/test_cve.py @@ -69,6 +69,7 @@ def cves() -> list[CVE]: CVE( "CVE-2017-1732", [cpe_single_sign_on], + [], CVE.Impact(5.3, "MEDIUM", 3.9, 1.4), "2021-05-26T04:15Z", {"CWE-200"}, @@ -76,6 +77,7 @@ def cves() -> list[CVE]: CVE( "CVE-2019-4513", [cpe_single_sign_on], + [], CVE.Impact(8.2, "HIGH", 3.9, 4.2), "2000-05-26T04:15Z", {"CVE-611"}, From b379c0ec174c22c2b2953b8e417d7a9580295dd5 Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Thu, 15 Dec 2022 14:56:22 +0100 Subject: [PATCH 03/28] feat: Added method for filtering cves with cpe configs --- src/sec_certs/dataset/cve.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/sec_certs/dataset/cve.py b/src/sec_certs/dataset/cve.py index 711524b5..954d950e 100644 --- a/src/sec_certs/dataset/cve.py +++ b/src/sec_certs/dataset/cve.py @@ -55,9 +55,15 @@ def __len__(self) -> int: def __eq__(self, other: object): return isinstance(other, CVEDataset) and self.cves == other.cves + def _filter_cves_with_cpe_configurations(self) -> None: + """ + Method filters the subset of CVEs, which contain at least one CPE configuration. + """ + self.cves_with_vulnerable_configurations = [cve for cve in self if cve.vulnerable_cpe_configurations] + def build_lookup_dict(self, use_nist_mapping: bool = True, nist_matching_filepath: Path | None = None): """ - Builds look-up dictionary CPE -> Set[CVE] + Builds look-up dictionary CPE -> Set[CVE] and filter the CVEs which contain CPE configurations. Developer's note: There are 3 CPEs that are present in the cpe matching feed, but are badly processed by CVE feed, in which case they won't be found as a key in the dictionary. We intentionally ignore those. Feel free to add corner cases and manual fixes. According to our investigation, the suffereing CPEs are: @@ -88,6 +94,8 @@ def build_lookup_dict(self, use_nist_mapping: bool = True, nist_matching_filepat else: self.cpe_to_cve_ids_lookup[cpe.uri].add(cve.cve_id) + self._filter_cves_with_cpe_configurations() + @classmethod def download_cves(cls, output_path_str: str, start_year: int, end_year: int): output_path = Path(output_path_str) From 4f806a8bfaf4f4f1870842c7abf48c9c0e89b314 Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Thu, 15 Dec 2022 15:01:38 +0100 Subject: [PATCH 04/28] feat: Representation of cpes in cpe configs as set --- src/sec_certs/sample/cpe.py | 10 ++++------ src/sec_certs/sample/cve.py | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/sec_certs/sample/cpe.py b/src/sec_certs/sample/cpe.py index 1fdfeaef..273b612d 100644 --- a/src/sec_certs/sample/cpe.py +++ b/src/sec_certs/sample/cpe.py @@ -14,15 +14,13 @@ class CPEConfiguration(ComplexSerializableType): __slots__ = ["platform", "cpes"] - def __init__(self, platform: str, cpes: list[str]) -> None: + def __init__(self, platform: str, cpes: set[str]) -> None: super().__init__() self.platform: str = platform - self.cpes: list[str] = cpes + self.cpes: set[str] = cpes - def __eq__(self, other) -> bool: - return ( - isinstance(other, self.__class__) and self.platform == other.platform and set(self.cpes) == set(other.cpes) - ) + def __eq__(self, other: Any) -> bool: + return isinstance(other, self.__class__) and self.platform == other.platform and self.cpes == other.cpes def match(self, set_of_cpes: set[str]) -> bool: return self.platform in set_of_cpes and any([cpe for cpe in set_of_cpes]) diff --git a/src/sec_certs/sample/cve.py b/src/sec_certs/sample/cve.py index f82320fc..80e786cd 100644 --- a/src/sec_certs/sample/cve.py +++ b/src/sec_certs/sample/cve.py @@ -171,7 +171,7 @@ def get_cpe_configurations_from_and_cpe_dict(children: list[dict]) -> list[CPECo return configurations cpes = CVE._parse_nist_dict(children[0]["cpe_match"], True) - vulnerable_cpe_uris = [cpe.uri for cpe in cpes] + vulnerable_cpe_uris = {cpe.uri for cpe in cpes} if not cpes: return configurations From 929ca521e62aef041302c0b5c4260bf4c58736f7 Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Fri, 16 Dec 2022 15:25:11 +0100 Subject: [PATCH 05/28] fix: fixed tests --- tests/data/cc/analysis/auxillary_datasets/cve_dataset.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/data/cc/analysis/auxillary_datasets/cve_dataset.json b/tests/data/cc/analysis/auxillary_datasets/cve_dataset.json index b71d5c62..5fd4e8ca 100644 --- a/tests/data/cc/analysis/auxillary_datasets/cve_dataset.json +++ b/tests/data/cc/analysis/auxillary_datasets/cve_dataset.json @@ -13,6 +13,7 @@ "end_version": null } ], + "vulnerable_cpe_configurations": [], "impact": { "_type": "sec_certs.sample.cve.CVE.Impact", "base_score": 5.3, @@ -40,6 +41,7 @@ "end_version": null } ], + "vulnerable_cpe_configurations": [], "impact": { "_type": "sec_certs.sample.cve.CVE.Impact", "base_score": 8.2, From d9bf915d0ae1a13d6746b0e49c02e5b44ff5c56d Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Fri, 16 Dec 2022 17:24:38 +0100 Subject: [PATCH 06/28] docs: Added documentation to the major methods --- src/sec_certs/dataset/cve.py | 5 +++++ src/sec_certs/sample/cpe.py | 4 ++++ src/sec_certs/sample/cve.py | 10 ++++++++++ tests/test_cve.py | 1 + 4 files changed, 20 insertions(+) diff --git a/src/sec_certs/dataset/cve.py b/src/sec_certs/dataset/cve.py index 954d950e..c370f3ce 100644 --- a/src/sec_certs/dataset/cve.py +++ b/src/sec_certs/dataset/cve.py @@ -166,6 +166,11 @@ def do_cve_configurations_match_cpe_matches(cve: CVE, cpe_matches: set[str]) -> } def get_cves_from_matched_cpes(self, cpe_matches: set[str]) -> set[str]: + """ + Method returns the set of CVEs which are matched to the set of CPEs. + First are matched the classic CPEs to CVEs with lookup dict and then are matched the + 'AND' type CPEs containing platform. + """ cves = self._get_cves_from_exactly_matched_cpes(cpe_matches) cves_matched_by_configurations = self._get_cves_from_cpe_configurations(cpe_matches) cves.update(cves_matched_by_configurations) diff --git a/src/sec_certs/sample/cpe.py b/src/sec_certs/sample/cpe.py index 273b612d..29e078b6 100644 --- a/src/sec_certs/sample/cpe.py +++ b/src/sec_certs/sample/cpe.py @@ -23,6 +23,10 @@ def __eq__(self, other: Any) -> bool: return isinstance(other, self.__class__) and self.platform == other.platform and self.cpes == other.cpes def match(self, set_of_cpes: set[str]) -> bool: + """ + For a given set of CPEs method returns boolean if the CPE configuration is + matched or not. + """ return self.platform in set_of_cpes and any([cpe for cpe in set_of_cpes]) diff --git a/src/sec_certs/sample/cve.py b/src/sec_certs/sample/cve.py index 80e786cd..ab18b310 100644 --- a/src/sec_certs/sample/cve.py +++ b/src/sec_certs/sample/cve.py @@ -118,6 +118,7 @@ def to_dict(self) -> dict[str, Any]: return { "cve_id": self.cve_id, "vulnerable_cpes": self.vulnerable_cpes, + "vulnerable_cpe_configurations": self.vulnerable_cpe_configurations, "impact": self.impact, "published_date": self.published_date.isoformat() if self.published_date else None, "cwe_ids": self.cwe_ids, @@ -151,6 +152,11 @@ def _parse_nist_cpe_dicts(lst: list[dict[str, Any]]) -> list[CPE]: @staticmethod def _parse_nist_dict(cpe_list: list[dict[str, Any]], parse_only_vulnerable_cpes: bool) -> list[CPE]: + """ + Method parses list of CPE dicts to the list of CPE objects. + The parameter specifies if we want to + parse only vulnerable CPEs or not. + """ cpe_dicts_to_be_parsed = cpe_list if parse_only_vulnerable_cpes: @@ -185,6 +191,10 @@ def get_vulnerable_cpes_from_nist_dict(dct: dict) -> tuple[list[CPE], list[CPECo def get_vulnerable_cpes_and_cpe_configurations( node: dict, cpes: list[CPE], cpe_configurations: list[CPEConfiguration] ) -> tuple[list[CPE], list[CPEConfiguration]]: + """ + Method traverses node of CPE tree and returns the list of CPEs and CPE configuratios, + which depends on if the parent node is OR/AND type. + """ if node["operator"] == "AND": cpe_configurations.extend(get_cpe_configurations_from_and_cpe_dict(node["children"])) return cpes, cpe_configurations diff --git a/tests/test_cve.py b/tests/test_cve.py index 02c80474..a9c35d4a 100644 --- a/tests/test_cve.py +++ b/tests/test_cve.py @@ -46,6 +46,7 @@ def cve_dict() -> dict[str, Any]: "end_version": None, } ], + "vulnerable_cpe_configurations": [], "impact": { "_type": "Impact", "base_score": 5, From b5b0e9d1798338dca205b001e7b38f02c8929a89 Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Fri, 16 Dec 2022 18:37:04 +0100 Subject: [PATCH 07/28] tests: Written tests for cpe configs --- src/sec_certs/sample/__init__.py | 3 +- .../cve_dset_with_cpe_configs.json | 385 ++++++++++++++++++ tests/test_cpe.py | 70 +++- 3 files changed, 455 insertions(+), 3 deletions(-) create mode 100644 tests/data/cc/analysis/auxillary_datasets/cve_dset_with_cpe_configs.json diff --git a/src/sec_certs/sample/__init__.py b/src/sec_certs/sample/__init__.py index 8fa91c2c..595315ae 100644 --- a/src/sec_certs/sample/__init__.py +++ b/src/sec_certs/sample/__init__.py @@ -5,7 +5,7 @@ from sec_certs.sample.cc import CCCertificate from sec_certs.sample.cc_certificate_id import CertificateId from sec_certs.sample.cc_maintenance_update import CCMaintenanceUpdate -from sec_certs.sample.cpe import CPE, cached_cpe +from sec_certs.sample.cpe import CPE, CPEConfiguration, cached_cpe from sec_certs.sample.cve import CVE from sec_certs.sample.fips import FIPSCertificate from sec_certs.sample.fips_algorithm import FIPSAlgorithm @@ -19,6 +19,7 @@ "CCMaintenanceUpdate", "CCCertificate", "CPE", + "CPEConfiguration", "cached_cpe", "CVE", "FIPSCertificate", diff --git a/tests/data/cc/analysis/auxillary_datasets/cve_dset_with_cpe_configs.json b/tests/data/cc/analysis/auxillary_datasets/cve_dset_with_cpe_configs.json new file mode 100644 index 00000000..32d188f5 --- /dev/null +++ b/tests/data/cc/analysis/auxillary_datasets/cve_dset_with_cpe_configs.json @@ -0,0 +1,385 @@ +{ + "_type": "sec_certs.dataset.cve.CVEDataset", + "cves": { + "CVE-2003-0001": { + "_type": "sec_certs.sample.cve.CVE", + "cve_id": "CVE-2003-0001", + "vulnerable_cpes": [ + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.15:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:netbsd:netbsd:1.5.3:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:microsoft:windows_2000_terminal_services:*:sp1:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:netbsd:netbsd:1.6:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.11:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:netbsd:netbsd:1.5:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.12:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.13:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:microsoft:windows_2000:*:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:freebsd:freebsd:4.7:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.16:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.5:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:microsoft:windows_2000:*:sp1:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:freebsd:freebsd:4.2:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.19:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.2:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.9:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:microsoft:windows_2000:*:sp2:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:netbsd:netbsd:1.5.1:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.10:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.17:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.7:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.8:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:freebsd:freebsd:4.4:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:freebsd:freebsd:4.5:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.14:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:netbsd:netbsd:1.5.2:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.1:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:freebsd:freebsd:4.6:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.4:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.6:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:microsoft:windows_2000_terminal_services:*:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:freebsd:freebsd:4.3:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.18:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:microsoft:windows_2000_terminal_services:*:sp2:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.20:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.3:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + } + ], + "vulnerable_cpe_configurations": [], + "impact": { + "_type": "sec_certs.sample.cve.CVE.Impact", + "base_score": 5.0, + "severity": "MEDIUM", + "exploitability_score": 10.0, + "impact_score": 2.9 + }, + "published_date": "2003-01-17T05:00:00+00:00", + "cwe_ids": { + "_type": "Set", + "elements": [ + "CWE-200" + ] + } + }, + "CVE-2003-0070": { + "_type": "sec_certs.sample.cve.CVE", + "cve_id": "CVE-2003-0070", + "vulnerable_cpes": [], + "vulnerable_cpe_configurations": [ + { + "_type": "sec_certs.sample.cpe.CPEConfiguration", + "platform": "cpe:2.3:a:gnome:gnome-terminal:2.0:*:*:*:*:*:*:*", + "cpes": { + "_type": "Set", + "elements": [ + "cpe:2.3:a:nalin_dahyabhai:vte:0.11.21:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.12.2:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.14.2:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.15.0:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.16.14:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.17.4:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.20.5:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.22.5:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.24.3:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.25.1:*:*:*:*:*:*:*" + ] + } + }, + { + "_type": "sec_certs.sample.cpe.CPEConfiguration", + "platform": "cpe:2.3:a:gnome:gnome-terminal:2.2:*:*:*:*:*:*:*", + "cpes": { + "_type": "Set", + "elements": [ + "cpe:2.3:a:nalin_dahyabhai:vte:0.11.21:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.12.2:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.14.2:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.15.0:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.16.14:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.17.4:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.20.5:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.22.5:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.24.3:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.25.1:*:*:*:*:*:*:*" + ] + } + } + ], + "impact": { + "_type": "sec_certs.sample.cve.CVE.Impact", + "base_score": 6.8, + "severity": "MEDIUM", + "exploitability_score": 8.6, + "impact_score": 6.4 + }, + "published_date": "2003-03-03T05:00:00+00:00", + "cwe_ids": { + "_type": "Set", + "elements": [ + "NVD-CWE-Other" + ] + } + }, + "CVE-2010-2325": { + "_type": "sec_certs.sample.cve.CVE", + "cve_id": "CVE-2010-2325", + "vulnerable_cpes": [], + "vulnerable_cpe_configurations": [ + { + "_type": "sec_certs.sample.cpe.CPEConfiguration", + "platform": "cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", + "cpes": { + "_type": "Set", + "elements": [ + "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*" + ] + } + } + ], + "impact": { + "_type": "sec_certs.sample.cve.CVE.Impact", + "base_score": 4.3, + "severity": "MEDIUM", + "exploitability_score": 8.6, + "impact_score": 2.9 + }, + "published_date": "2010-06-18T18:30:00+00:00", + "cwe_ids": { + "_type": "Set", + "elements": [ + "CWE-79" + ] + } + } + } +} \ No newline at end of file diff --git a/tests/test_cpe.py b/tests/test_cpe.py index 26d0cbf3..e94aba78 100644 --- a/tests/test_cpe.py +++ b/tests/test_cpe.py @@ -7,8 +7,8 @@ import tests.data.cc.analysis.auxillary_datasets from sec_certs import constants -from sec_certs.dataset import CPEDataset -from sec_certs.sample import CPE +from sec_certs.dataset import CPEDataset, CVEDataset +from sec_certs.sample import CPE, CPEConfiguration from sec_certs.serialization.json import SerializationError @@ -17,11 +17,21 @@ def cpe_dset_path() -> Path: return Path(tests.data.cc.analysis.auxillary_datasets.__path__[0]) / "cpe_dataset.json" +@pytest.fixture(scope="module") +def cve_dset_with_cpe_configs_path() -> Path: + return Path(tests.data.cc.analysis.auxillary_datasets.__path__[0]) / "cve_dset_with_cpe_configs.json" + + @pytest.fixture(scope="module") def cpe_dset(cpe_dset_path: Path) -> CPEDataset: return CPEDataset.from_json(cpe_dset_path) +@pytest.fixture(scope="module") +def cve_dset_with_cpe_configs(cve_dset_with_cpe_configs_path: Path) -> CVEDataset: + return CVEDataset.from_json(cve_dset_with_cpe_configs_path) + + @pytest.fixture(scope="module") def cpe_dict() -> dict[str, Any]: return { @@ -138,3 +148,59 @@ def test_serialization_missing_path(): dummy_dset = CPEDataset(False, dict()) with pytest.raises(SerializationError): dummy_dset.to_json() + + +def test_single_platform_config_cpe(cve_dset_with_cpe_configs: CVEDataset): + tested_cpe_config = cve_dset_with_cpe_configs["CVE-2010-2325"].vulnerable_cpe_configurations[0] + cpe_set = { + "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", + } + cpe_config = CPEConfiguration( + platform="cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", + cpes=cpe_set, + ) + assert cpe_config == tested_cpe_config + + +def test_multiple_platform_config_cpe(cve_dset_with_cpe_configs: CVEDataset): + tested_cpe_configs = cve_dset_with_cpe_configs["CVE-2003-0070"].vulnerable_cpe_configurations + cpe_set = { + "cpe:2.3:a:nalin_dahyabhai:vte:0.11.21:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.12.2:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.14.2:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.15.0:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.16.14:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.17.4:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.20.5:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.22.5:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.24.3:*:*:*:*:*:*:*", + "cpe:2.3:a:nalin_dahyabhai:vte:0.25.1:*:*:*:*:*:*:*", + } + cpe_configs = [ + CPEConfiguration( + platform="cpe:2.3:a:gnome:gnome-terminal:2.0:*:*:*:*:*:*:*", + cpes=cpe_set, + ), + CPEConfiguration( + platform="cpe:2.3:a:gnome:gnome-terminal:2.2:*:*:*:*:*:*:*", + cpes=cpe_set, + ), + ] + + for cpe_config in cpe_configs: + assert cpe_config in tested_cpe_configs + + +def test_no_cpe_configuration(cve_dset_with_cpe_configs: CVEDataset): + tested_cpe_configs = cve_dset_with_cpe_configs["CVE-2003-0001"].vulnerable_cpe_configurations + assert tested_cpe_configs == [] From 9087cf1e35b9ad1bbe6a003bbfecdb96b9f7bb0e Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Sun, 25 Dec 2022 21:35:23 +0100 Subject: [PATCH 08/28] refactor: Refactoring from code review --- src/sec_certs/dataset/cve.py | 9 ++++----- src/sec_certs/sample/cve.py | 12 +++++------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/sec_certs/dataset/cve.py b/src/sec_certs/dataset/cve.py index c370f3ce..6960c6fc 100644 --- a/src/sec_certs/dataset/cve.py +++ b/src/sec_certs/dataset/cve.py @@ -171,11 +171,10 @@ def get_cves_from_matched_cpes(self, cpe_matches: set[str]) -> set[str]: First are matched the classic CPEs to CVEs with lookup dict and then are matched the 'AND' type CPEs containing platform. """ - cves = self._get_cves_from_exactly_matched_cpes(cpe_matches) - cves_matched_by_configurations = self._get_cves_from_cpe_configurations(cpe_matches) - cves.update(cves_matched_by_configurations) - - return cves + return { + *self._get_cves_from_exactly_matched_cpes(cpe_matches), + *self._get_cves_from_cpe_configurations(cpe_matches), + } def filter_related_cpes(self, relevant_cpes: set[CPE]): """ diff --git a/src/sec_certs/sample/cve.py b/src/sec_certs/sample/cve.py index ab18b310..d3ea1590 100644 --- a/src/sec_certs/sample/cve.py +++ b/src/sec_certs/sample/cve.py @@ -187,7 +187,7 @@ def get_cpe_configurations_from_and_cpe_dict(children: list[dict]) -> list[CPECo return [CPEConfiguration(platform.uri, vulnerable_cpe_uris) for platform in platforms] - def get_vulnerable_cpes_from_nist_dict(dct: dict) -> tuple[list[CPE], list[CPEConfiguration]]: + def get_vulnerable_cpes_from_nist_dict(dct: dict) -> list[list]: def get_vulnerable_cpes_and_cpe_configurations( node: dict, cpes: list[CPE], cpe_configurations: list[CPEConfiguration] ) -> tuple[list[CPE], list[CPEConfiguration]]: @@ -214,16 +214,14 @@ def get_vulnerable_cpes_and_cpe_configurations( cpes_and_cpe_configurations = [ get_vulnerable_cpes_and_cpe_configurations(x, [], []) for x in dct["configurations"]["nodes"] ] - vulnerable_cpes = list(itertools.chain.from_iterable(map(lambda x: x[0], cpes_and_cpe_configurations))) - vulnerable_cpe_configurations = list( - itertools.chain.from_iterable(map(lambda x: x[1], cpes_and_cpe_configurations)) - ) - return vulnerable_cpes, vulnerable_cpe_configurations + return [list(t) for t in zip(*cpes_and_cpe_configurations)] cve_id = dct["cve"]["CVE_data_meta"]["ID"] impact = cls.Impact.from_nist_dict(dct) - vulnerable_cpes, vulnerable_cpe_configurations = get_vulnerable_cpes_from_nist_dict(dct) + cpe_and_cpe_configurations = get_vulnerable_cpes_from_nist_dict(dct) + vulnerable_cpes = list(itertools.chain.from_iterable(cpe_and_cpe_configurations[0])) + vulnerable_cpe_configurations = list(itertools.chain.from_iterable(cpe_and_cpe_configurations[1])) published_date = dct["publishedDate"] cwe_ids = cls.parse_cwe_data(dct) From 33cc8b4200a197603354b1142d1f4a4e964bd88b Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Sun, 25 Dec 2022 22:35:03 +0100 Subject: [PATCH 09/28] refactor: Refactoring from notes of code review --- src/sec_certs/dataset/cve.py | 1 + src/sec_certs/sample/cpe.py | 6 ++++++ src/sec_certs/sample/cve.py | 13 +++++++------ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/sec_certs/dataset/cve.py b/src/sec_certs/dataset/cve.py index 6960c6fc..566bc2e4 100644 --- a/src/sec_certs/dataset/cve.py +++ b/src/sec_certs/dataset/cve.py @@ -35,6 +35,7 @@ def __init__(self, cves: dict[str, CVE], json_path: str | Path = constants.DUMMY self.cves = cves self.json_path = Path(json_path) self.cpe_to_cve_ids_lookup: dict[str, set[str]] = dict() + self.cves_with_vulnerable_configurations: list[CVE] = [] @property def serialized_attributes(self) -> list[str]: diff --git a/src/sec_certs/sample/cpe.py b/src/sec_certs/sample/cpe.py index 29e078b6..0c8cd149 100644 --- a/src/sec_certs/sample/cpe.py +++ b/src/sec_certs/sample/cpe.py @@ -19,6 +19,12 @@ def __init__(self, platform: str, cpes: set[str]) -> None: self.platform: str = platform self.cpes: set[str] = cpes + def __hash__(self) -> int: + return hash(self.platform) + sum([hash(cpe) for cpe in self.cpes]) + + def __lt__(self, other: CPEConfiguration) -> bool: + return self.platform < other.platform + def __eq__(self, other: Any) -> bool: return isinstance(other, self.__class__) and self.platform == other.platform and self.cpes == other.cpes diff --git a/src/sec_certs/sample/cve.py b/src/sec_certs/sample/cve.py index d3ea1590..caf2b4d7 100644 --- a/src/sec_certs/sample/cve.py +++ b/src/sec_certs/sample/cve.py @@ -47,8 +47,8 @@ def from_nist_dict(cls, dct: dict[str, Any]) -> CVE.Impact: raise ValueError("NIST Dict for CVE Impact badly formatted.") cve_id: str - vulnerable_cpes: list[CPE] - vulnerable_cpe_configurations: list[CPEConfiguration] + vulnerable_cpes: set[CPE] + vulnerable_cpe_configurations: set[CPEConfiguration] impact: Impact published_date: datetime.datetime | None cwe_ids: set[str] | None @@ -69,8 +69,8 @@ def from_nist_dict(cls, dct: dict[str, Any]) -> CVE.Impact: def __init__( self, cve_id: str, - vulnerable_cpes: list[CPE], - vulnerable_cpe_configurations: list[CPEConfiguration], + vulnerable_cpes: set[CPE], + vulnerable_cpe_configurations: set[CPEConfiguration], impact: Impact, published_date: str, cwe_ids: set[str] | None, @@ -220,8 +220,9 @@ def get_vulnerable_cpes_and_cpe_configurations( cve_id = dct["cve"]["CVE_data_meta"]["ID"] impact = cls.Impact.from_nist_dict(dct) cpe_and_cpe_configurations = get_vulnerable_cpes_from_nist_dict(dct) - vulnerable_cpes = list(itertools.chain.from_iterable(cpe_and_cpe_configurations[0])) - vulnerable_cpe_configurations = list(itertools.chain.from_iterable(cpe_and_cpe_configurations[1])) + # There exist CVEs such as (CVE-2022-0177) which are rejected and do not contain any assinged CPEs + vulnerable_cpes = set(itertools.chain.from_iterable(cpe_and_cpe_configurations[0])) if cpe_and_cpe_configurations else set() + vulnerable_cpe_configurations = set(itertools.chain.from_iterable(cpe_and_cpe_configurations[1])) if cpe_and_cpe_configurations else set() published_date = dct["publishedDate"] cwe_ids = cls.parse_cwe_data(dct) From 40cbd0572ec5ea7454145303fc8bf1d0c71d9682 Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Sun, 25 Dec 2022 22:43:21 +0100 Subject: [PATCH 10/28] chore: Formating, fixed tests --- src/sec_certs/dataset/cve.py | 2 +- src/sec_certs/sample/cve.py | 8 ++++++-- tests/cc/test_cc_analysis.py | 8 ++++---- tests/fips/test_fips_analysis.py | 8 ++++---- tests/test_cpe.py | 4 ++-- tests/test_cve.py | 8 ++++---- 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/sec_certs/dataset/cve.py b/src/sec_certs/dataset/cve.py index 566bc2e4..9a36fa6b 100644 --- a/src/sec_certs/dataset/cve.py +++ b/src/sec_certs/dataset/cve.py @@ -84,7 +84,7 @@ def build_lookup_dict(self, use_nist_mapping: bool = True, nist_matching_filepat for cve in tqdm(self, desc="Building-up lookup dictionaries for fast CVE matching"): # See note above, we use matching_dict.get(cpe, []) instead of matching_dict[cpe] as would be expected if use_nist_mapping: - vulnerable_configurations = list( + vulnerable_configurations = set( itertools.chain.from_iterable(matching_dict.get(cpe, []) for cpe in cve.vulnerable_cpes) ) else: diff --git a/src/sec_certs/sample/cve.py b/src/sec_certs/sample/cve.py index caf2b4d7..9b2c2437 100644 --- a/src/sec_certs/sample/cve.py +++ b/src/sec_certs/sample/cve.py @@ -221,8 +221,12 @@ def get_vulnerable_cpes_and_cpe_configurations( impact = cls.Impact.from_nist_dict(dct) cpe_and_cpe_configurations = get_vulnerable_cpes_from_nist_dict(dct) # There exist CVEs such as (CVE-2022-0177) which are rejected and do not contain any assinged CPEs - vulnerable_cpes = set(itertools.chain.from_iterable(cpe_and_cpe_configurations[0])) if cpe_and_cpe_configurations else set() - vulnerable_cpe_configurations = set(itertools.chain.from_iterable(cpe_and_cpe_configurations[1])) if cpe_and_cpe_configurations else set() + vulnerable_cpes = ( + set(itertools.chain.from_iterable(cpe_and_cpe_configurations[0])) if cpe_and_cpe_configurations else set() + ) + vulnerable_cpe_configurations = ( + set(itertools.chain.from_iterable(cpe_and_cpe_configurations[1])) if cpe_and_cpe_configurations else set() + ) published_date = dct["publishedDate"] cwe_ids = cls.parse_cwe_data(dct) diff --git a/tests/cc/test_cc_analysis.py b/tests/cc/test_cc_analysis.py index 57d36841..0c660f04 100644 --- a/tests/cc/test_cc_analysis.py +++ b/tests/cc/test_cc_analysis.py @@ -59,16 +59,16 @@ def cves(cpe_single_sign_on) -> set[CVE]: return { CVE( "CVE-2017-1732", - [cpe_single_sign_on], - [], + {cpe_single_sign_on}, + set(), CVE.Impact(5.3, "MEDIUM", 3.9, 1.4), "2021-05-26T04:15Z", {"CWE-200"}, ), CVE( "CVE-2019-4513", - [cpe_single_sign_on], - [], + {cpe_single_sign_on}, + set(), CVE.Impact(8.2, "HIGH", 3.9, 4.2), "2000-05-26T04:15Z", {"CVE-611"}, diff --git a/tests/fips/test_fips_analysis.py b/tests/fips/test_fips_analysis.py index e68ee6a5..14ec1579 100644 --- a/tests/fips/test_fips_analysis.py +++ b/tests/fips/test_fips_analysis.py @@ -33,8 +33,8 @@ def some_random_cpe() -> CPE: def cve(vulnerable_cpe: CPE) -> CVE: return CVE( "CVE-1234-123456", - [vulnerable_cpe], - [], + {vulnerable_cpe}, + set(), CVE.Impact(10, "HIGH", 10, 10), "2021-05-26T04:15Z", {"CWE-200"}, @@ -45,8 +45,8 @@ def cve(vulnerable_cpe: CPE) -> CVE: def some_other_cve(some_random_cpe: CPE) -> CVE: return CVE( "CVE-2019-4513", - [some_random_cpe], - [], + {some_random_cpe}, + set(), CVE.Impact(8.2, "HIGH", 3.9, 4.2), "2000-05-26T04:15Z", {"CVE-611"}, diff --git a/tests/test_cpe.py b/tests/test_cpe.py index e94aba78..3be2c1a6 100644 --- a/tests/test_cpe.py +++ b/tests/test_cpe.py @@ -151,7 +151,7 @@ def test_serialization_missing_path(): def test_single_platform_config_cpe(cve_dset_with_cpe_configs: CVEDataset): - tested_cpe_config = cve_dset_with_cpe_configs["CVE-2010-2325"].vulnerable_cpe_configurations[0] + tested_cpe_config = cve_dset_with_cpe_configs["CVE-2010-2325"].vulnerable_cpe_configurations cpe_set = { "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*", "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", @@ -169,7 +169,7 @@ def test_single_platform_config_cpe(cve_dset_with_cpe_configs: CVEDataset): platform="cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", cpes=cpe_set, ) - assert cpe_config == tested_cpe_config + assert cpe_config in tested_cpe_config def test_multiple_platform_config_cpe(cve_dset_with_cpe_configs: CVEDataset): diff --git a/tests/test_cve.py b/tests/test_cve.py index a9c35d4a..441c3c34 100644 --- a/tests/test_cve.py +++ b/tests/test_cve.py @@ -69,16 +69,16 @@ def cves() -> list[CVE]: return [ CVE( "CVE-2017-1732", - [cpe_single_sign_on], - [], + {cpe_single_sign_on}, + set(), CVE.Impact(5.3, "MEDIUM", 3.9, 1.4), "2021-05-26T04:15Z", {"CWE-200"}, ), CVE( "CVE-2019-4513", - [cpe_single_sign_on], - [], + {cpe_single_sign_on}, + set(), CVE.Impact(8.2, "HIGH", 3.9, 4.2), "2000-05-26T04:15Z", {"CVE-611"}, From 864a725b6a1c5f56daa7dc17a47b7daa758c94c3 Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Tue, 27 Dec 2022 21:51:23 +0100 Subject: [PATCH 11/28] tests: Prepared fixture setup for cpe config match test --- tests/cc/test_cc_analysis.py | 39 ++++++++++++++++++++++++++++++++++++ tests/test_cve.py | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/tests/cc/test_cc_analysis.py b/tests/cc/test_cc_analysis.py index 0c660f04..fa0eecd7 100644 --- a/tests/cc/test_cc_analysis.py +++ b/tests/cc/test_cc_analysis.py @@ -105,6 +105,45 @@ def reference_dataset(data_dir) -> CCDataset: def transitive_vulnerability_dataset(data_dir) -> CCDataset: return CCDataset.from_json(data_dir / "transitive_vulnerability_dataset.json") +@pytest.fixture(scope="module") +def ibm_cpe_configuration() -> CPEConfiguration: + return CPEConfiguration( + "cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", + { + "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", + }, + ) + + +@pytest.fixture(scope="module") +def ibm_xss_cve(ibm_cpe_configuration) -> CVE: + return CVE( + "CVE-2010-2325", + set(), + {ibm_cpe_configuration}, + CVE.Impact(4.3, "MEDIUM", 2.9, 8.6), + "2000-06-18T04:15Z", + {"CWE-79"}, + ) + + +@pytest.fixture(scope="module") +def cpes_ibm_websphere_app_with_platform() -> set[CPE]: + return { + CPE("cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", "IBM zOS"), + CPE("cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", "IBM WebSphere Application Server"), + } + @pytest.fixture def random_certificate(cc_dset: CCDataset) -> CCCertificate: diff --git a/tests/test_cve.py b/tests/test_cve.py index 441c3c34..01352db0 100644 --- a/tests/test_cve.py +++ b/tests/test_cve.py @@ -81,7 +81,7 @@ def cves() -> list[CVE]: set(), CVE.Impact(8.2, "HIGH", 3.9, 4.2), "2000-05-26T04:15Z", - {"CVE-611"}, + {"CWE-611"}, ), ] From 5e2f4aea83e6d1f2d30b7ea46dcc744d6ceb221a Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Sun, 29 Jan 2023 17:55:33 +0100 Subject: [PATCH 12/28] test: Added test for cc, not passing yet --- tests/cc/test_cc_analysis.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tests/cc/test_cc_analysis.py b/tests/cc/test_cc_analysis.py index fa0eecd7..da922208 100644 --- a/tests/cc/test_cc_analysis.py +++ b/tests/cc/test_cc_analysis.py @@ -11,7 +11,7 @@ from sec_certs.dataset.cpe import CPEDataset from sec_certs.dataset.cve import CVEDataset from sec_certs.sample.cc import CCCertificate -from sec_certs.sample.cpe import CPE +from sec_certs.sample.cpe import CPE, CPEConfiguration from sec_certs.sample.cve import CVE from sec_certs.sample.protection_profile import ProtectionProfile from sec_certs.sample.sar import SAR @@ -105,6 +105,7 @@ def reference_dataset(data_dir) -> CCDataset: def transitive_vulnerability_dataset(data_dir) -> CCDataset: return CCDataset.from_json(data_dir / "transitive_vulnerability_dataset.json") + @pytest.fixture(scope="module") def ibm_cpe_configuration() -> CPEConfiguration: return CPEConfiguration( @@ -145,6 +146,17 @@ def cpes_ibm_websphere_app_with_platform() -> set[CPE]: } +def test_find_related_cves_for_cpe_configuration( + cc_dset: CCDataset, + cpes_ibm_websphere_app_with_platform: set[CPE], + ibm_xss_cve: CVE, + random_certificate: CCCertificate, +): + random_certificate.heuristics.cpe_matches = {cve.uri for cve in cpes_ibm_websphere_app_with_platform} + cc_dset.compute_related_cves() + assert ibm_xss_cve.cve_id == random_certificate.heuristics.related_cves + + @pytest.fixture def random_certificate(cc_dset: CCDataset) -> CCCertificate: return cc_dset["ebd276cca70fd723"] From 65a3b18b09c4608da73565cf50978b53a8126c47 Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Tue, 31 Jan 2023 00:02:31 +0100 Subject: [PATCH 13/28] test: Added test for CPE configurations --- tests/cc/test_cc_analysis.py | 36 +++++++++++++--- .../auxillary_datasets/cve_dataset.json | 41 +++++++++++++++++++ 2 files changed, 72 insertions(+), 5 deletions(-) diff --git a/tests/cc/test_cc_analysis.py b/tests/cc/test_cc_analysis.py index da922208..a61c7e67 100644 --- a/tests/cc/test_cc_analysis.py +++ b/tests/cc/test_cc_analysis.py @@ -93,9 +93,30 @@ def cc_dset(data_dir: Path, cve_dset: CVEDataset, tmp_path_factory) -> CCDataset cc_dset.extract_data() cc_dset.auxillary_datasets.cve_dset = cve_dset cc_dset._compute_heuristics() + return cc_dset +@pytest.fixture(scope="module") +def cc_config_dset(data_dir: Path, cve_config_dset: CVEDataset, tmp_path_factory) -> CCDataset: + tmp_dir = tmp_path_factory.mktemp("cc_config_dset") + shutil.copytree(data_dir, tmp_dir, dirs_exist_ok=True) + cc_config_dset = CCDataset.from_json(tmp_dir / "vulnerable_dataset.json") + cc_config_dset.process_protection_profiles() + cc_config_dset.extract_data() + cc_config_dset.auxillary_datasets.cve_dset = cve_config_dset + cc_config_dset._compute_heuristics() + + return cc_config_dset + + +@pytest.fixture(scope="module") +def cve_config_dset(ibm_xss_cve): + cve_dset = CVEDataset({ibm_xss_cve.cve_id: ibm_xss_cve}) + cve_dset.build_lookup_dict(use_nist_mapping=False) + return cve_dset + + @pytest.fixture def reference_dataset(data_dir) -> CCDataset: return CCDataset.from_json(data_dir / "reference_dataset.json") @@ -147,14 +168,14 @@ def cpes_ibm_websphere_app_with_platform() -> set[CPE]: def test_find_related_cves_for_cpe_configuration( - cc_dset: CCDataset, + cc_config_dset: CCDataset, cpes_ibm_websphere_app_with_platform: set[CPE], ibm_xss_cve: CVE, - random_certificate: CCCertificate, + random_config_certificate: CCCertificate, ): - random_certificate.heuristics.cpe_matches = {cve.uri for cve in cpes_ibm_websphere_app_with_platform} - cc_dset.compute_related_cves() - assert ibm_xss_cve.cve_id == random_certificate.heuristics.related_cves + random_config_certificate.heuristics.cpe_matches = {cve.uri for cve in cpes_ibm_websphere_app_with_platform} + cc_config_dset.compute_related_cves() + assert {ibm_xss_cve.cve_id} == random_config_certificate.heuristics.related_cves @pytest.fixture @@ -162,6 +183,11 @@ def random_certificate(cc_dset: CCDataset) -> CCCertificate: return cc_dset["ebd276cca70fd723"] +@pytest.fixture +def random_config_certificate(cc_config_dset: CCDataset) -> CCCertificate: + return cc_config_dset["ebd276cca70fd723"] + + def test_match_cpe(cpe_single_sign_on: CPE, random_certificate: CCCertificate): assert {cpe_single_sign_on.uri} == random_certificate.heuristics.cpe_matches diff --git a/tests/data/cc/analysis/auxillary_datasets/cve_dataset.json b/tests/data/cc/analysis/auxillary_datasets/cve_dataset.json index 5fd4e8ca..4caf45d1 100644 --- a/tests/data/cc/analysis/auxillary_datasets/cve_dataset.json +++ b/tests/data/cc/analysis/auxillary_datasets/cve_dataset.json @@ -56,6 +56,47 @@ "CWE-611" ] } + }, + "CVE-2010-2325": { + "_type": "sec_certs.sample.cve.CVE", + "cve_id": "CVE-2010-2325", + "vulnerable_cpes": [], + "vulnerable_cpe_configurations": [ + { + "_type": "sec_certs.sample.cpe.CPEConfiguration", + "platform": "cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", + "cpes": { + "_type": "Set", + "elements": [ + "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*" + ] + } + } + ], + "impact": { + "_type": "sec_certs.sample.cve.CVE.Impact", + "base_score": 4.3, + "severity": "MEDIUM", + "exploitability_score": 8.6, + "impact_score": 2.9 + }, + "published_date": "2010-06-18T18:30:00+00:00", + "cwe_ids": { + "_type": "Set", + "elements": [ + "CWE-79" + ] + } } } } \ No newline at end of file From 4a638e1e03e1fc8461dfba4185f6274b6f2a1890 Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Thu, 9 Feb 2023 10:12:08 +0100 Subject: [PATCH 14/28] tests: Fixing not passing tests --- tests/test_cve.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/tests/test_cve.py b/tests/test_cve.py index 01352db0..0311dc93 100644 --- a/tests/test_cve.py +++ b/tests/test_cve.py @@ -59,8 +59,25 @@ def cve_dict() -> dict[str, Any]: } + @pytest.fixture(scope="module") -def cves() -> list[CVE]: +def cve_2010_2325_cpe_configs(): + return { + "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*" + } + +@pytest.fixture(scope="module") +def cves(cve_2010_2325_cpe_configs) -> list[CVE]: cpe_single_sign_on = CPE( "cpe:2.3:a:ibm:security_access_manager_for_enterprise_single_sign-on:8.2.2:*:*:*:*:*:*:*", "IBM Security Access Manager For Enterprise Single Sign-On 8.2.2", @@ -83,6 +100,14 @@ def cves() -> list[CVE]: "2000-05-26T04:15Z", {"CWE-611"}, ), + CVE( + "CVE-2010-2325", + set(), + cve_2010_2325_cpe_configs, + CVE.Impact(4.3, "MEDIUM", 8.6, 2.9), + "2010-06-18T18:30", + {"CWE-79"} + ) ] @@ -90,7 +115,7 @@ def test_cve_dset_lookup_dicts(cves: list[CVE], cve_dset: CVEDataset): alt_lookup = {x: set(y) for x, y in cve_dset.cpe_to_cve_ids_lookup.items()} assert alt_lookup == { "cpe:2.3:a:ibm:security_access_manager_for_enterprise_single_sign-on:8.2.2:*:*:*:*:*:*:*": { - x.cve_id for x in cves + "CVE-2017-1732", "CVE-2019-4513" } } From b78550169342e859946241ef040d06a8b0475da8 Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Thu, 9 Feb 2023 10:33:17 +0100 Subject: [PATCH 15/28] format: formatting test file with black --- tests/test_cve.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/test_cve.py b/tests/test_cve.py index 0311dc93..20c04147 100644 --- a/tests/test_cve.py +++ b/tests/test_cve.py @@ -59,7 +59,6 @@ def cve_dict() -> dict[str, Any]: } - @pytest.fixture(scope="module") def cve_2010_2325_cpe_configs(): return { @@ -73,9 +72,10 @@ def cve_2010_2325_cpe_configs(): "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*" + "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*", } + @pytest.fixture(scope="module") def cves(cve_2010_2325_cpe_configs) -> list[CVE]: cpe_single_sign_on = CPE( @@ -106,8 +106,8 @@ def cves(cve_2010_2325_cpe_configs) -> list[CVE]: cve_2010_2325_cpe_configs, CVE.Impact(4.3, "MEDIUM", 8.6, 2.9), "2010-06-18T18:30", - {"CWE-79"} - ) + {"CWE-79"}, + ), ] @@ -115,7 +115,8 @@ def test_cve_dset_lookup_dicts(cves: list[CVE], cve_dset: CVEDataset): alt_lookup = {x: set(y) for x, y in cve_dset.cpe_to_cve_ids_lookup.items()} assert alt_lookup == { "cpe:2.3:a:ibm:security_access_manager_for_enterprise_single_sign-on:8.2.2:*:*:*:*:*:*:*": { - "CVE-2017-1732", "CVE-2019-4513" + "CVE-2017-1732", + "CVE-2019-4513", } } From f0d27cbec6979c8785e4ca9cae1a162661e4ad10 Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Thu, 9 Feb 2023 10:40:07 +0100 Subject: [PATCH 16/28] format: manual fixes, black is complaining, but wont fix it --- src/sec_certs/dataset/protection_profile.py | 1 - src/sec_certs/model/transitive_vulnerability_finder.py | 1 - src/sec_certs/sample/cpe.py | 1 - src/sec_certs/utils/pandas.py | 1 - src/sec_certs/utils/parallel_processing.py | 1 - 5 files changed, 5 deletions(-) diff --git a/src/sec_certs/dataset/protection_profile.py b/src/sec_certs/dataset/protection_profile.py index edfb6850..e4f9f4b8 100644 --- a/src/sec_certs/dataset/protection_profile.py +++ b/src/sec_certs/dataset/protection_profile.py @@ -83,7 +83,6 @@ def from_json(cls, json_path: str | Path): @classmethod def from_web(cls, store_dataset_path: Path | None = None): - logger.info(f"Downloading static PP dataset from: {config.pp_latest_snapshot}") if not store_dataset_path: tmp = tempfile.TemporaryDirectory() diff --git a/src/sec_certs/model/transitive_vulnerability_finder.py b/src/sec_certs/model/transitive_vulnerability_finder.py index 1d4c8243..de733481 100644 --- a/src/sec_certs/model/transitive_vulnerability_finder.py +++ b/src/sec_certs/model/transitive_vulnerability_finder.py @@ -53,7 +53,6 @@ def _fill_dataset_cert_ids_counter(self) -> None: def _get_cert_transitive_cves( self, cert: CertSubType, reference_type: ReferenceType, ref_func: ReferenceLookupFunc ) -> set[str] | None: - references = ( ref_func(cert).directly_referenced_by if reference_type == ReferenceType.DIRECT diff --git a/src/sec_certs/sample/cpe.py b/src/sec_certs/sample/cpe.py index 0c8cd149..64b80b5b 100644 --- a/src/sec_certs/sample/cpe.py +++ b/src/sec_certs/sample/cpe.py @@ -11,7 +11,6 @@ class CPEConfiguration(ComplexSerializableType): - __slots__ = ["platform", "cpes"] def __init__(self, platform: str, cpes: set[str]) -> None: diff --git a/src/sec_certs/utils/pandas.py b/src/sec_certs/utils/pandas.py index 97068e77..b61d11d7 100644 --- a/src/sec_certs/utils/pandas.py +++ b/src/sec_certs/utils/pandas.py @@ -252,7 +252,6 @@ def filter_to_cves_within_validity_period(cc_df: pd.DataFrame, cve_dset: CVEData def filter_cves( cve_dset: CVEDataset, cves: set[str], not_valid_before: pd.Timestamp, not_valid_after: pd.Timestamp ) -> set[str] | float: - # Mypy is complaining, but the Optional date is resolved at the beginning of the and condition result: set[str] = { x diff --git a/src/sec_certs/utils/parallel_processing.py b/src/sec_certs/utils/parallel_processing.py index 50806a67..1101035f 100644 --- a/src/sec_certs/utils/parallel_processing.py +++ b/src/sec_certs/utils/parallel_processing.py @@ -19,7 +19,6 @@ def process_parallel( unpack: bool = False, progress_bar_desc: str | None = None, ) -> list[Any]: - pool: Pool | ThreadPool = ThreadPool(max_workers) if use_threading else Pool(max_workers) results = ( [pool.apply_async(func, (*i,), callback=callback) for i in items] From 0448df8db628f5ae73dc96e4ed80223023bd7ddd Mon Sep 17 00:00:00 2001 From: GeogeFI Date: Thu, 9 Feb 2023 18:58:25 +0100 Subject: [PATCH 17/28] test: Added tests for FIPS --- tests/fips/test_fips_analysis.py | 58 +++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/tests/fips/test_fips_analysis.py b/tests/fips/test_fips_analysis.py index 14ec1579..6cc77cda 100644 --- a/tests/fips/test_fips_analysis.py +++ b/tests/fips/test_fips_analysis.py @@ -7,7 +7,7 @@ import tests.data.fips.dataset from sec_certs.dataset import CPEDataset, CVEDataset from sec_certs.dataset.fips import FIPSDataset -from sec_certs.sample.cpe import CPE +from sec_certs.sample.cpe import CPE, CPEConfiguration from sec_certs.sample.cve import CVE @@ -52,9 +52,48 @@ def some_other_cve(some_random_cpe: CPE) -> CVE: {"CVE-611"}, ) +@pytest.fixture(scope="module") +def ibm_cpe_configurations() -> CPEConfiguration: + return CPEConfiguration( + "cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", + { + "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", + }, + ) + + +@pytest.fixture(scope="module") +def cpes_ibm_websphere_app_with_platform() -> set[CPE]: + return { + CPE("cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", "IBM zOS"), + CPE("cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", "IBM WebSphere Application Server"), + } + + +@pytest.fixture(scope="module") +def ibm_xss_cve(ibm_cpe_configurations) -> CVE: + return CVE( + "CVE-2010-2325", + set(), + {ibm_cpe_configurations}, + CVE.Impact(4.3, "MEDIUM", 2.9, 8.6), + "2000-06-18T04:15Z", + {"CWE-79"}, + ) + @pytest.fixture(scope="module") -def cpe_dataset(vulnerable_cpe: CPE, some_random_cpe: CPE) -> CPEDataset: +def cpe_dataset(vulnerable_cpe: CPE, some_random_cpe: CPE, cpes_ibm_websphere_app_with_platform: set[CPE]) -> CPEDataset: cpes = { vulnerable_cpe, some_random_cpe, @@ -66,13 +105,15 @@ def cpe_dataset(vulnerable_cpe: CPE, some_random_cpe: CPE) -> CPEDataset: "cpe:2.3:a:tracker-software:pdf-xchange_lite_printer:6.0.320.0:*:*:*:*:*:*:*", "Tracker Software PDF-XChange Lite Printer 6.0.320.0", ), + *cpes_ibm_websphere_app_with_platform, } + return CPEDataset(False, {x.uri: x for x in cpes}) @pytest.fixture(scope="module") -def cve_dataset(cve: CVE, some_other_cve: CVE) -> CVEDataset: - cves = {cve, some_other_cve} +def cve_dataset(cve: CVE, some_other_cve: CVE, ibm_xss_cve: CVE) -> CVEDataset: + cves = {cve, some_other_cve, ibm_xss_cve} cve_dset = CVEDataset({x.cve_id: x for x in cves}) cve_dset.build_lookup_dict(use_nist_mapping=False) return cve_dset @@ -218,6 +259,15 @@ def test_find_related_cves(processed_dataset: FIPSDataset, cve: CVE, some_other_ assert some_other_cve not in processed_dataset["2441"].heuristics.related_cves +def test_find_related_cves_for_cpe_configuration(processed_dataset: FIPSDataset, cpes_ibm_websphere_app_with_platform: set[CPE]): + cert = processed_dataset["2441"] + cert.heuristics.cpe_matches = {cve.uri for cve in cpes_ibm_websphere_app_with_platform} + processed_dataset.compute_related_cves() + assert {ibm_xss_cve.cve_id} == random_config_certificate.heuristics.related_cves + + + + def test_keywords_heuristics(processed_dataset: FIPSDataset): keywords = processed_dataset["2441"].pdf_data.keywords assert keywords From 25122b10c710c2e70c74f17c7d03f8f36b7d3a1b Mon Sep 17 00:00:00 2001 From: GeorgeFI Date: Sat, 18 Feb 2023 18:34:27 +0100 Subject: [PATCH 18/28] test: Added tests for fips, raw implementation --- tests/fips/test_fips_analysis.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/tests/fips/test_fips_analysis.py b/tests/fips/test_fips_analysis.py index 6cc77cda..950f0cee 100644 --- a/tests/fips/test_fips_analysis.py +++ b/tests/fips/test_fips_analysis.py @@ -52,6 +52,7 @@ def some_other_cve(some_random_cpe: CPE) -> CVE: {"CVE-611"}, ) + @pytest.fixture(scope="module") def ibm_cpe_configurations() -> CPEConfiguration: return CPEConfiguration( @@ -93,7 +94,9 @@ def ibm_xss_cve(ibm_cpe_configurations) -> CVE: @pytest.fixture(scope="module") -def cpe_dataset(vulnerable_cpe: CPE, some_random_cpe: CPE, cpes_ibm_websphere_app_with_platform: set[CPE]) -> CPEDataset: +def cpe_dataset( + vulnerable_cpe: CPE, some_random_cpe: CPE, cpes_ibm_websphere_app_with_platform: set[CPE] +) -> CPEDataset: cpes = { vulnerable_cpe, some_random_cpe, @@ -119,6 +122,14 @@ def cve_dataset(cve: CVE, some_other_cve: CVE, ibm_xss_cve: CVE) -> CVEDataset: return cve_dset +@pytest.fixture(scope="module") +def cve_dataset2(cve: CVE, some_other_cve: CVE, ibm_xss_cve: CVE) -> CVEDataset: + cves = {cve, some_other_cve, ibm_xss_cve} + cve_dset = CVEDataset({x.cve_id: x for x in cves}) + cve_dset.build_lookup_dict(use_nist_mapping=False) + return cve_dset + + @pytest.fixture(scope="module") def toy_static_dataset(data_dir: Path) -> FIPSDataset: return FIPSDataset.from_json(data_dir / "toy_dataset.json") @@ -259,13 +270,17 @@ def test_find_related_cves(processed_dataset: FIPSDataset, cve: CVE, some_other_ assert some_other_cve not in processed_dataset["2441"].heuristics.related_cves -def test_find_related_cves_for_cpe_configuration(processed_dataset: FIPSDataset, cpes_ibm_websphere_app_with_platform: set[CPE]): +def test_find_related_cves_for_cpe_configuration( + processed_dataset: FIPSDataset, + cve_dataset2: CVEDataset, + ibm_xss_cve: CVE, + cpes_ibm_websphere_app_with_platform: set[CPE], +): cert = processed_dataset["2441"] cert.heuristics.cpe_matches = {cve.uri for cve in cpes_ibm_websphere_app_with_platform} + processed_dataset.auxillary_datasets.cve_dset = cve_dataset2 processed_dataset.compute_related_cves() - assert {ibm_xss_cve.cve_id} == random_config_certificate.heuristics.related_cves - - + assert {ibm_xss_cve.cve_id} == cert.heuristics.related_cves def test_keywords_heuristics(processed_dataset: FIPSDataset): From 599734647e9595e00f67349c8d4b42cb603f306c Mon Sep 17 00:00:00 2001 From: GeorgeFI Date: Sat, 18 Feb 2023 19:10:20 +0100 Subject: [PATCH 19/28] test: Refactored the test --- tests/fips/test_fips_analysis.py | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/tests/fips/test_fips_analysis.py b/tests/fips/test_fips_analysis.py index 950f0cee..ffd78a3f 100644 --- a/tests/fips/test_fips_analysis.py +++ b/tests/fips/test_fips_analysis.py @@ -122,14 +122,6 @@ def cve_dataset(cve: CVE, some_other_cve: CVE, ibm_xss_cve: CVE) -> CVEDataset: return cve_dset -@pytest.fixture(scope="module") -def cve_dataset2(cve: CVE, some_other_cve: CVE, ibm_xss_cve: CVE) -> CVEDataset: - cves = {cve, some_other_cve, ibm_xss_cve} - cve_dset = CVEDataset({x.cve_id: x for x in cves}) - cve_dset.build_lookup_dict(use_nist_mapping=False) - return cve_dset - - @pytest.fixture(scope="module") def toy_static_dataset(data_dir: Path) -> FIPSDataset: return FIPSDataset.from_json(data_dir / "toy_dataset.json") @@ -272,13 +264,14 @@ def test_find_related_cves(processed_dataset: FIPSDataset, cve: CVE, some_other_ def test_find_related_cves_for_cpe_configuration( processed_dataset: FIPSDataset, - cve_dataset2: CVEDataset, + cve_dataset: CVEDataset, ibm_xss_cve: CVE, cpes_ibm_websphere_app_with_platform: set[CPE], ): + cve_dataset.cves = {ibm_xss_cve.cve_id: ibm_xss_cve} cert = processed_dataset["2441"] cert.heuristics.cpe_matches = {cve.uri for cve in cpes_ibm_websphere_app_with_platform} - processed_dataset.auxillary_datasets.cve_dset = cve_dataset2 + processed_dataset.auxillary_datasets.cve_dset = cve_dataset processed_dataset.compute_related_cves() assert {ibm_xss_cve.cve_id} == cert.heuristics.related_cves From 81f78accf96b3680a5f97e6475a5d6f8a051ddd0 Mon Sep 17 00:00:00 2001 From: GeorgeFI Date: Sat, 25 Feb 2023 14:28:41 +0100 Subject: [PATCH 20/28] refactor: Refactored test for CC --- tests/cc/test_cc_analysis.py | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/tests/cc/test_cc_analysis.py b/tests/cc/test_cc_analysis.py index 6d0f4cfe..d6f316fa 100644 --- a/tests/cc/test_cc_analysis.py +++ b/tests/cc/test_cc_analysis.py @@ -98,20 +98,7 @@ def cc_dset(data_dir: Path, cve_dset: CVEDataset, tmp_path_factory) -> CCDataset @pytest.fixture(scope="module") -def cc_config_dset(data_dir: Path, cve_config_dset: CVEDataset, tmp_path_factory) -> CCDataset: - tmp_dir = tmp_path_factory.mktemp("cc_config_dset") - shutil.copytree(data_dir, tmp_dir, dirs_exist_ok=True) - cc_config_dset = CCDataset.from_json(tmp_dir / "vulnerable_dataset.json") - cc_config_dset.process_protection_profiles() - cc_config_dset.extract_data() - cc_config_dset.auxiliary_datasets.cve_dset = cve_config_dset - cc_config_dset._compute_heuristics() - - return cc_config_dset - - -@pytest.fixture(scope="module") -def cve_config_dset(ibm_xss_cve): +def cve_config_dset(ibm_xss_cve) -> CVEDataset: cve_dset = CVEDataset({ibm_xss_cve.cve_id: ibm_xss_cve}) cve_dset.build_lookup_dict(use_nist_mapping=False) return cve_dset @@ -168,14 +155,16 @@ def cpes_ibm_websphere_app_with_platform() -> set[CPE]: def test_find_related_cves_for_cpe_configuration( - cc_config_dset: CCDataset, + cc_dset: CCDataset, cpes_ibm_websphere_app_with_platform: set[CPE], ibm_xss_cve: CVE, - random_config_certificate: CCCertificate, + cve_config_dset: CVEDataset, + random_certificate: CCCertificate, ): - random_config_certificate.heuristics.cpe_matches = {cve.uri for cve in cpes_ibm_websphere_app_with_platform} - cc_config_dset.compute_related_cves() - assert {ibm_xss_cve.cve_id} == random_config_certificate.heuristics.related_cves + random_certificate.heuristics.cpe_matches = {cve.uri for cve in cpes_ibm_websphere_app_with_platform} + cc_dset.auxiliary_datasets.cve_dset = cve_config_dset + cc_dset.compute_related_cves() + assert {ibm_xss_cve.cve_id} == random_certificate.heuristics.related_cves @pytest.fixture @@ -183,11 +172,6 @@ def random_certificate(cc_dset: CCDataset) -> CCCertificate: return cc_dset["ebd276cca70fd723"] -@pytest.fixture -def random_config_certificate(cc_config_dset: CCDataset) -> CCCertificate: - return cc_config_dset["ebd276cca70fd723"] - - def test_match_cpe(cpe_single_sign_on: CPE, random_certificate: CCCertificate): assert {cpe_single_sign_on.uri} == random_certificate.heuristics.cpe_matches From 00558beaf63befabe723d471efef5ff149874024 Mon Sep 17 00:00:00 2001 From: GeorgeFI Date: Sat, 25 Feb 2023 14:33:28 +0100 Subject: [PATCH 21/28] refactor: Refactored match function --- src/sec_certs/sample/cpe.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sec_certs/sample/cpe.py b/src/sec_certs/sample/cpe.py index 64b80b5b..664e70e3 100644 --- a/src/sec_certs/sample/cpe.py +++ b/src/sec_certs/sample/cpe.py @@ -32,7 +32,7 @@ def match(self, set_of_cpes: set[str]) -> bool: For a given set of CPEs method returns boolean if the CPE configuration is matched or not. """ - return self.platform in set_of_cpes and any([cpe for cpe in set_of_cpes]) + return self.platform in set_of_cpes and any(list(set_of_cpes)) @dataclass(init=False) From 3e822b590a8ae6cd0f515625b7ba5e4a123513d0 Mon Sep 17 00:00:00 2001 From: GeorgeFI Date: Sat, 25 Feb 2023 15:46:03 +0100 Subject: [PATCH 22/28] fix: Fixes in jupyter notebook and pandas utils --- notebooks/cc/vulnerabilities.ipynb | 329 +++++++++++++++++++++++++++-- src/sec_certs/utils/pandas.py | 9 +- 2 files changed, 312 insertions(+), 26 deletions(-) diff --git a/notebooks/cc/vulnerabilities.ipynb b/notebooks/cc/vulnerabilities.ipynb index 4c9836ba..642aa732 100644 --- a/notebooks/cc/vulnerabilities.ipynb +++ b/notebooks/cc/vulnerabilities.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -24,7 +24,7 @@ "\n", "from sec_certs.cert_rules import cc_rules\n", "\n", - "plt.style.use(\"seaborn-whitegrid\")\n", + "sns.set_style(\"whitegrid\")\n", "sns.set_palette(\"deep\")\n", "sns.set_context(\"notebook\") # Set to \"paper\" for use in paper :)\n", "\n", @@ -48,7 +48,7 @@ "warnings.simplefilter(action=\"ignore\", category=pd.errors.PerformanceWarning)\n", "\n", "RESULTS_DIR = Path(\"./results\")\n", - "RESULTS_DIR.mkdir(exist_ok=True)\n" + "RESULTS_DIR.mkdir(exist_ok=True)" ] }, { @@ -60,21 +60,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Downloading CC Dataset: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 138M/138M [00:17<00:00, 8.43MB/s]\n", + "Downloading CVEs resources from NVD: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 22/22 [00:06<00:00, 3.65it/s]\n", + "Building CVEDataset from jsons: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 22/22 [00:09<00:00, 2.38it/s]\n" + ] + } + ], "source": [ "# Local instantiation\n", - "dset: CCdataset = CCDataset.from_web_latest()\n", - "# dset.process_maintenance_updates() # Run this only once, can take ~10 minutes to finnish, fully processes maintenance updates\n", - "main_dset = CCDatasetMaintenanceUpdates.from_json(dset.mu_dataset_path)\n", - "cve_dset: CVEDataset = dset._prepare_cve_dataset()\n", - "cpe_dset: CPEDataset = dset._prepare_cpe_dataset()\n", + "# dset: CCDataset = CCDataset.from_web_latest()\n", + "# #dset.process_maintenance_updates() # Run this only once, can take ~10 minutes to finnish, fully processes mainten#ance updates\n", + "# main_dset = CCDatasetMaintenanceUpdates.from_json(dset.mu_dataset_path)\n", + "# cve_dset: CVEDataset = dset._prepare_cve_dataset()\n", + "# cpe_dset: CPEDataset = dset._prepare_cpe_dataset()\n", "\n", "# Remote instantiation\n", - "# dset: CCDataset = CCDataset.from_web_latest()\n", - "# # main_dset: CDatasetMaintenanceUpdates = CCDatasetMaintenanceUpdates.from_web_latest()\n", - "# cve_dset: CVEDataset = CVEDataset.from_web()" + "dset: CCDataset = CCDataset.from_web_latest()\n", + "main_dset: CCDatasetMaintenanceUpdates = CCDatasetMaintenanceUpdates.from_web_latest()\n", + "cve_dset: CVEDataset = CVEDataset.from_web()" ] }, { @@ -90,7 +100,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "pycharm": { "name": "#%%\n" @@ -112,6 +122,7 @@ "cves = list(itertools.chain.from_iterable(x.heuristics.related_cves for x in dset if x.heuristics.related_cves))\n", "cve_dict = {x: cve_dset[x] for x in cves}\n", "cve_dset.cves = cve_dict # Limit cve_dset to CVEs relevant to some certificate\n", + "\n", "df = expand_df_with_cve_cols(df, cve_dset)\n", "\n", "df_cves_within_validity_period = filter_to_cves_within_validity_period(\n", @@ -125,9 +136,179 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
related_cvescve_published_datesearliest_cveworst_cve_scoreavg_cve_score
77cfa16b7ed7975f{CVE-2020-3285, CVE-2020-3187, CVE-2021-1495, ...[2020-05-06, 2020-05-06, 2021-04-29, 2019-11-0...2019-01-2410.07.085106
3dc6e1ebe7dd5584{CVE-2022-40707, CVE-2021-25252, CVE-2022-4070...[2022-09-28, 2021-03-03, 2022-09-28, 2022-09-2...2021-03-037.84.640000
b7f814ed16f2ecca{CVE-2018-8753}[2018-08-15]2018-08-155.95.900000
c290ee3692a00006{CVE-2019-12256, CVE-2019-7487, CVE-2019-12261...[2019-08-09, 2019-12-19, 2019-08-09, 2021-03-2...2019-08-099.88.075000
4fc1208e4c800aa6{CVE-2017-14616, CVE-2017-14615}[2017-09-20, 2017-09-20]2017-09-207.56.800000
..................
bf0f130ebce2e124{CVE-2007-3262, CVE-2009-2747, CVE-2009-0217, ...[2007-06-19, 2011-10-30, 2009-07-14, 2006-10-1...2005-11-0410.05.710390
686005d0b5ff5c5c{CVE-2006-2342, CVE-2007-3262, CVE-2009-2747, ...[2006-05-12, 2007-06-19, 2011-10-30, 2009-07-1...2005-05-0210.05.904348
5f1df5ad8e51ba75{CVE-2007-4615, CVE-2006-0419, CVE-2006-2464, ...[2007-08-31, 2006-01-25, 2006-05-19, 2004-07-2...2003-08-2710.05.594565
ffeef32299d913d6{CVE-2009-0439, CVE-2008-1130}[2009-02-24, 2008-03-04]2008-03-047.26.900000
a092aebf5a286ded{CVE-2004-2558}[2004-12-31]2004-12-317.57.500000
\n", + "

408 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " related_cves \\\n", + "77cfa16b7ed7975f {CVE-2020-3285, CVE-2020-3187, CVE-2021-1495, ... \n", + "3dc6e1ebe7dd5584 {CVE-2022-40707, CVE-2021-25252, CVE-2022-4070... \n", + "b7f814ed16f2ecca {CVE-2018-8753} \n", + "c290ee3692a00006 {CVE-2019-12256, CVE-2019-7487, CVE-2019-12261... \n", + "4fc1208e4c800aa6 {CVE-2017-14616, CVE-2017-14615} \n", + "... ... \n", + "bf0f130ebce2e124 {CVE-2007-3262, CVE-2009-2747, CVE-2009-0217, ... \n", + "686005d0b5ff5c5c {CVE-2006-2342, CVE-2007-3262, CVE-2009-2747, ... \n", + "5f1df5ad8e51ba75 {CVE-2007-4615, CVE-2006-0419, CVE-2006-2464, ... \n", + "ffeef32299d913d6 {CVE-2009-0439, CVE-2008-1130} \n", + "a092aebf5a286ded {CVE-2004-2558} \n", + "\n", + " cve_published_dates \\\n", + "77cfa16b7ed7975f [2020-05-06, 2020-05-06, 2021-04-29, 2019-11-0... \n", + "3dc6e1ebe7dd5584 [2022-09-28, 2021-03-03, 2022-09-28, 2022-09-2... \n", + "b7f814ed16f2ecca [2018-08-15] \n", + "c290ee3692a00006 [2019-08-09, 2019-12-19, 2019-08-09, 2021-03-2... \n", + "4fc1208e4c800aa6 [2017-09-20, 2017-09-20] \n", + "... ... \n", + "bf0f130ebce2e124 [2007-06-19, 2011-10-30, 2009-07-14, 2006-10-1... \n", + "686005d0b5ff5c5c [2006-05-12, 2007-06-19, 2011-10-30, 2009-07-1... \n", + "5f1df5ad8e51ba75 [2007-08-31, 2006-01-25, 2006-05-19, 2004-07-2... \n", + "ffeef32299d913d6 [2009-02-24, 2008-03-04] \n", + "a092aebf5a286ded [2004-12-31] \n", + "\n", + " earliest_cve worst_cve_score avg_cve_score \n", + "77cfa16b7ed7975f 2019-01-24 10.0 7.085106 \n", + "3dc6e1ebe7dd5584 2021-03-03 7.8 4.640000 \n", + "b7f814ed16f2ecca 2018-08-15 5.9 5.900000 \n", + "c290ee3692a00006 2019-08-09 9.8 8.075000 \n", + "4fc1208e4c800aa6 2017-09-20 7.5 6.800000 \n", + "... ... ... ... \n", + "bf0f130ebce2e124 2005-11-04 10.0 5.710390 \n", + "686005d0b5ff5c5c 2005-05-02 10.0 5.904348 \n", + "5f1df5ad8e51ba75 2003-08-27 10.0 5.594565 \n", + "ffeef32299d913d6 2008-03-04 7.2 6.900000 \n", + "a092aebf5a286ded 2004-12-31 7.5 7.500000 \n", + "\n", + "[408 rows x 5 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Take a look at columns related to CVEs\n", "df.loc[\n", @@ -149,11 +330,88 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": { "scrolled": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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s2cxadIkvPfee4iIiDB4mXv27AEADs9KRERERAbhHQcjEBoaivXr1yMiIgLh4eFISUlBVFQUQkNDNd7hMGTIEDx48AAHDx4EkP+26YiICDRp0gTvvPMOLl26JE5ra2sLJycnAMCUKVPQuHFjuLm5iQ9Hr1u3Dl26dGHiQEREREQGYeJgBKytrfH9999jzpw5iIiIQM2aNdGvXz9ERkZqTKdSqaBUKsW/L1++jPT0dKSnp2PAgAEa07777rtYsGABgPwXv+3atQuxsbHIzc1Fw4YNMXr0aIwaNariV46IiIiIXglMHIxEs2bNsG7dumKnWb9+vcbfffr0QZ8+ffTWHR4ejvDw8LKER0RERETVHJ9xICIiIiIivZg4EBERERGRXkwciIiIiIhILyYORERERESkFxMHIiIiIiLSi4kDERERERHpxcSBiIiIiIj0YuJARERERER6MXEgIiIiIiK9mDgQEREREZFeTByIiIiIiEgvJg5ERERERKQXEwciIiIiItKLiQMREREREenFxIGIiIiIiPRi4kBERERERHoxcSAiIiIiIr2YOBARERERkV5MHIiIiIiISC8mDkREREREpBcTByIiIiIi0ouJAxERERER6cXEgYiIiIiI9GLiQEREREREejFxICIiIiIivZg4EBERERGRXkwciIiIiIhILyYORERELwmVoCpRORFReapR1QEQERGRYaQSKZadiUWSIlksayivh/Hth1VhVERUXTBxICIieokkKZKR8PReVYdBRNUQuyoREREREZFeTByIiIiIiEgvJg5ERERERKQXEwciIiIiItKLiQMREREREenFxIGIiIiIiPRi4kBERERERHoxcSAiIiIiIr2YOBAREdFLRSWoSlROROWDb44mIiKil4pUIsWyM7FIUiSLZQ3l9TC+/bAqjIro1cfEgYiIiF46SYpkJDy9V9VhEFUr7KpERERERER6MXEwEnfu3MHQoUPh6emJgIAAREVFIScnp9h5Hj58iKioKLzzzjvw8vJCUFAQJk+ejKSkJK1pU1JSMG7cOHh5ecHPzw+ffPIJnj9/XlGrQ0RERESvGHZVMgJpaWkYMmQImjRpgujoaKSkpGDBggXIysrCzJkzi5zvr7/+wsGDB9G3b1+0adMGT58+xbfffov33nsPu3fvhq2tLQAgNzcXI0aMAAAsWrQIWVlZ+PLLLzF58mSsWLGiUtaRiIiIiF5uTByMwI8//ogXL14gJiYGNjY2AAClUolZs2YhPDwcdevW1Tmfj48P9u3bhxo1/m8zent744033sCOHTswbFj+Q2IHDhzArVu3sHfvXjg7OwMA5HI5hg8fjitXrsDDw6NiV5CIiIiIXnrsqmQEjh8/Dn9/fzFpAIDu3btDpVLh5MmTRc4nl8s1kgYAqFevHmxtbfHw4UON+l1dXcWkAQACAgJgY2ODY8eOld+KEBEREdEri3ccjEB8fDz69u2rUSaXy2Fvb4/4+PgS1ZWQkIDU1FQ0a9ZMo/6CSQMASCQSNG3atMT1FyQIAjIyMko9f2ZmpsZ/qwJjYAyVHYNEIoFMJity+dWlHYw5Bn3bSBCESoulYDsUF5d6moqIzdj2h6pqh8JxVJWyxiAIAiQSSXmGRNUIEwcjoFAoIJfLtcqtra2RlpZmcD2CIGDu3LlwcHBAz549Neq3srIqc/2F5ebm4vr166WeXy0xMbHMdTAGxvCyxCCTyeDm5qbzs4SEBPFk4FVvB2OOwdBtVJkSExOLjQuo+NiMZX+o6nZQx1HVyhKDmZlZ+QVC1QoTh1dIdHQ0zpw5g9WrV8PS0rLCl2dqaormzZuXev7MzEwkJiaiSZMmxV49qkiMgTFUdgzFXelr2rQpMjIyqkU7GHMM+rZRZd9xULeDvuN6RcVmbPtDVbVD4TiMoS1KE8Pt27crICqqLpg4GAG5XI709HSt8rS0NFhbWxtUx08//YRvvvkG8+bNg7+/v1b9uoZeTUtLQ/369UsXNPJ/XMsjQZHJZJWS6DAGxmDsMchkMvGEpzq3g7HFUFBVnSzKZDK9y67o2IxhWxhDO6iXYQxtUZoY2E2JyoIPRxsBZ2dnrWcN0tPT8ejRI61nE3Q5ePAgPv/8c4wfPx79+vUzqH5BEJCQkGBQ/URERERETByMQFBQEE6dOgWFQiGW7d+/H1KpFAEBAcXOe/bsWUyaNAnvvfceIiIiiqz/xo0bGv0hT58+jWfPniE4OLhc1oGIiIiIXm1MHIxAaGgoatasiYiICPz222/Ytm0boqKiEBoaqvEOhyFDhiAkJET8+86dO4iIiECTJk3wzjvv4NKlS+K/u3fvitN169YNr732GsaNG4dff/0Ve/fuxYwZM/DGG2/wHQ5EREREZBA+42AErK2t8f3332POnDmIiIhAzZo10a9fP0RGRmpMp1KpoFQqxb8vX76M9PR0pKenY8CAARrTvvvuu1iwYAGA/IeYV69ejblz52LSpEmoUaMGQkJCMGPGjIpfOSIiIiJ6JTBxMBLNmjXDunXrip1m/fr1Gn/36dMHffr0Maj+unXrIjo6urThEREREVE1x65KRERERESkFxMHIiIiIiLSi4kDERERERHpxcSBiIiIiIj0YuJARERERER6MXEgIiIiIiK9mDgQEREREZFeTByIiIiIiEgvJg5ERERERKQXEwciIiIiItKLiQMREREREenFxIGIiIiIiPRi4kBERERERHoxcSAiIiIiIr2YOBARERERkV5MHIiIiIiISC8mDkREREREpBcTByIiIjJqEokEMpkMEomkqkMhqtZqVHUAREREREURVCrIZDK4ublVdShE1R4TByIiIjJaEqkUD3csQU7qfQCApbMXbDsOrOKoiKonJg5ERERGil108uWk3kdOcgIAwNSuYRVHQ1R9MXEgIiIyQuyiQ0TGhokDERGREWIXHSIyNkwciIiIjFR16qKjUgmQSqt3lywiY8fEgYiIiKqcVCrBwo3ncT8lXSzzbuGAwT3YVYvIWDBxICIiIqNwPyUdd5LSxL8dHWpVYTREVBhfAEdERERERHoxcSAiIiIiIr2YOBARERERkV5MHIiIiIiISC8mDkREREREpBcTByIiIiIi0ouJAxERERER6cXEgYiIiIiI9GLiQEREREREejFxICIiIiIivZg4EBERERGRXkwciIiIiIhILyYORERERESkFxMHIiIiIiLSi4kDERERERHpxcTBSNy5cwdDhw6Fp6cnAgICEBUVhZycHL3zbdy4EeHh4Wjfvj1cXV2xf/9+rWnOnj0LV1dXrX+RkZEVsSpERERE9AqqUdUBEJCWloYhQ4agSZMmiI6ORkpKChYsWICsrCzMnDmz2Hl37twJAAgODsaOHTuKnXb+/PlwdnYW/65du3aZYyciIiKi6oGJgxH48ccf8eLFC8TExMDGxgYAoFQqMWvWLISHh6Nu3brFziuVSnH//n29icNrr70Gd3f3coyciIiIiKoLdlUyAsePH4e/v7+YNABA9+7doVKpcPLkyWLnlUq5CYmIiIio4vGs0wjEx8drdCECALlcDnt7e8THx5fbckaNGoWWLVsiKCgIX375JbKyssqtbiIiIiJ6tbGrkhFQKBSQy+Va5dbW1khLSytz/VZWVhgxYgTatm0Lc3NznDlzBrGxsYiPj8eKFStKXa8gCMjIyCj1/JmZmRr/rQqMgTFUdgwSiQQymazI5VeXdjDmGPRtI0EQqjSGolRUbFX9vSipitxGr8J3QxAESCSS8gyJqhEmDtWAm5sb3NzcxL/9/f3h4OCA2bNn48qVK/Dw8ChVvbm5ubh+/XqZ40tMTCxzHYyBMbwsMchkMo3vY0EJCQniycCr3g7GHIOh26iqYihKRcdWVd+LkqqMbfSyfzfMzMzKLxCqVpg4GAG5XI709HSt8rS0NFhbW1fIMrt3747Zs2fjzz//LHXiYGpqiubNm5c6hszMTCQmJqJJkybldqWJMTAGY4+huCt9TZs2RUZGRrVoB2OOQd82qqw7DiVVUbFV9feipCpyG70K343bt29XQFRUXTBxMALOzs5azzKkp6fj0aNHWs8+GBOJRAJLS8sy1yOTycqlHsbAGF72GGQymXjCU53bwdhiKKiqThYNUdGxGdu2KEplbCNjaIvSxsBuSlQWfDjaCAQFBeHUqVNQKBRi2f79+yGVShEQEFAhy9yzZw8AcHhWIiIiIjII7zgYgdDQUKxfvx4REREIDw9HSkoKoqKiEBoaqvEOhyFDhuDBgwc4ePCgWHb16lUkJSXhyZMnAIDLly8DAGxtbeHn5wcAmDJlCho3bgw3Nzfx4eh169ahS5cuTByIiIiIyCBMHIyAtbU1vv/+e8yZMwcRERGoWbMm+vXrh8jISI3pVCoVlEqlRtnGjRsRFxcn/h0bGwsA8PPzw/r16wHkv/ht165diI2NRW5uLho2bIjRo0dj1KhRFbxmRERERPSqYOJgJJo1a4Z169YVO406EShowYIFWLBgQbHzhYeHIzw8vCzhEREREVE1x2cciIiIiIhILyYORERERESkFxMHIiIiIiLSi4kDERERERHpxcSBiIiIDKYSVCUqJ6JXB0dVIiIiqkIqlQCp9OV5m69UIsWyM7FIUiSLZQ3l9TC+/bAqjIqIKgMTByIioioklUqwcON53E9JF8u8WzhgcA+3KoyqeEmKZCQ8vVfVYRBRJWPiQEREVMXup6TjTlKa+LejQ60qjIaISDc+40BERERERHoxcSAiIiIiIr2YOBARERERkV5MHIiIiIiISC8mDkREREREpBcTByIiIiIi0ouJAxERERER6cXEgYiIiIiI9GLiQEREREREejFxICIiIiIivZg4EBERERGRXkwciIiIiIhILyYORERERESkFxMHIiIiIiLSi4kDERERERHpxcSBiIiIiIj0YuJARERERER6MXEgIiIiIiK9mDgQEREREZFeTByIiIiIiEgvJg5ERERERKQXEwciIiIiItKLiQMREREREenFxIGIiIiIiPRi4kBERERERHoxcSAiIiIiIr2YOBARERERkV5MHIiIiIiISC8mDkREREREpBcTByIiIiIi0ouJAxERERER6cXEgYiIqi2VSqjqEIiIXho1qjoAIiKiqiKVSrBw43ncT0kXy7xbOGBwD7cqjIqIyDgxcSAiomrtfko67iSliX87OtSqwmiIiIwXuyoZiTt37mDo0KHw9PREQEAAoqKikJOTo3e+jRs3Ijw8HO3bt4erqyv279+vc7qUlBSMGzcOXl5e8PPzwyeffILnz5+X92oQERER0SuKiYMRSEtLw5AhQ5Cbm4vo6GhERkbip59+woIFC/TOu3PnTjx9+hTBwcFFTpObm4sRI0YgMTERixYtwueff47ffvsNkydPLs/VICIiIqJXGLsqGYEff/wRL168QExMDGxsbAAASqUSs2bNQnh4OOrWrVvsvFKpFPfv38eOHTt0TnPgwAHcunULe/fuhbOzMwBALpdj+PDhuHLlCjw8PMp7lYiIiIjoFcM7Dkbg+PHj8Pf3F5MGAOjevTtUKhVOnjxZ7LxSqf5NePz4cbi6uopJAwAEBATAxsYGx44dK3XcRERERFR98I6DEYiPj0ffvn01yuRyOezt7REfH18u9RdMGgBAIpGgadOmZapfEARkZGSUev7MzEyN/1YFxsAYKjsGiUQCmUxW5PKrSzsYQwzFbYuiZGZmQhDKbwjX0sRQlPKOrWC96v/qi7e0MbwM7aCuu+B/q0JZYxAEARKJpDxDomqEiYMRUCgUkMvlWuXW1tZIS0vTMUfJ67eysir3+nNzc3H9+vWyhAYASExMLHMdjIExvCwxyGQyuLnpHuozISFBPBl41dvBGGIoblsUpeA2qqoYilLesRWWmJioN97SxvAytQPw8n83zMzMyi8QqlaYOFCpmZqaonnz5qWePzMzE4mJiWjSpEm5XWliDIzB2GMo7kpf06ZNkZGRUS3awRhiKM1V16ZNm5b7HYfyUt6xqRXcFpaWlhUSw8vQDsCr8d24fft2BURF1QUTByMgl8uRnp6uVZ6WlgZra+tyqV/X0KtpaWmoX79+qeuVSCR6f0QMIZPJyqUexsAYXvYYZDKZeMJTndvB2GIoqKpOFg1R0bHJZDK9yzCG9qmMGIxhvyxtDOymRGXBh6ONgLOzs9azBunp6Xj06JHWswnlVb8gCEhISCiX+omIiIjo1cfEwQgEBQXh1KlTUCgUYtn+/fshlUoREBBQLvXfuHFDoz/k6dOn8ezZs2Lf/0BEREREpMauSkYgNDQU69evR0REBMLDw5GSkoKoqCiEhoZqvMNhyJAhePDgAQ4ePCiWXb16FUlJSXjy5AkA4PLlywAAW1tb+Pn5AQC6deuGFStWYNy4cZg0aRIyMzMRFRWFN954g+9wICIiIiKDMHEwAtbW1vj+++8xZ84cREREoGbNmujXrx8iIyM1plOpVFAqlRplGzduRFxcnPh3bGwsAMDPzw/r168HkP8Q8+rVqzF37lxMmjQJNWrUQEhICGbMmFHBa0ZERERErwomDkaiWbNmWLduXbHTqBOBghYsWIAFCxborb9u3bqIjo4ubXhEREREVM3xGQciIiIiItKLiQMREREREenFxIHIyKgElUFlRERERJWJzzgQGRmpRIplZ2KRpEgGADSU18P49sOqOCoiIiKq7pg4EBmhJEUyEp7eq+owiIiIiETsqkRERKSHSU2bIrsMsishEVUXvONARESkh9SiplY3QoBdCYmoemHiQEREZKDq2I1QIpFAJpNBIpFUdShEVMWYOBAREZFOgkoFmUwGNze3qg6FiIwAEwciIiLSSSKV4uGOJchJvQ8AsHT2gm3HgVUcFRFVFSYOREREVKSc1PvISU4AAJjaNaziaIioKnFUJSIiIiIi0ouJAxERERER6cXEgYiIiIiI9GLiQEREREREejFxICIiIiIivZg4EBERERGRXkwciIiIiIhILyYORERERESkFxMHIiIiIiLSi4kDERERERHpxcSBiIiIiIj0YuJARERERER6MXEgIiIiIiK9mDgQEREREZFeTByIiIiIiEgvJg5ERERERKQXEweiKiaRSCCTySCRSKo6FCIiIqIi1ajqAIiqK0GlgkQqhUwmg5ubW1WHQ0RERFQsJg5EVUQileLhjiXISb0vllk6e8G248AqjIqIiIhI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iIgAsHAgIhLm7t272LZtGy5fvozk5GQAQLVq1dCyZUv4+fmhUaNGghMSERH9iYUDERERERGVi30ciIiIiIioXCwciIiIiIioXCwciIiIiIioXCwciIiIiIioXCwciIiIiIioXCwciIgE8vLywt27d8scu3fvHry8vGROREREVDYWDkREAsXHx6OgoKDMsby8PCQlJcmciIiIqGwVRAcgItI2+fn5yM3Nxds2Ojk5OcjMzFS5JiIiAlWrVhWQkIiISBULByIima1fvx6hoaEAAEmSMGrUqPdeGxgYKFcsIiKiD2LnaCIimd29exd37tyBQqHArFmzEBAQgNq1a5e6Rk9PD7a2trC3txeUkoiIqDQWDkREghQVFWHbtm3o06cPzM3NRcchIiL6IG6OJiISREdHB8uWLXvvqUpERESahIUDEZEgOjo6qFmzJrKyskRHISIiKhcLByIigcaNG4dVq1YhOTlZdBQiIqIP4qlKREQCHT9+HBkZGfD29kajRo1gaWlZalySJKxevVpQOiIioj+xcCAiEujVq1f46KOPSj0mIiLSRDxViYiIiIiIysU9DkREREREVC4uVSIiEqykpAQXL17Eo0ePUFBQoDI+cuRIAamIiIhK41IlIiKBUlNT4efnh8ePH0OSJLz9lSxJkvKaO3fuiIpHRESkxKVKREQCffvttzAzM8PZs2ehUCiwZ88enDlzBp9++inq1KmDEydOiI5IREQEgIUDEZFQ0dHR8Pf3h5WVlfI5GxsbjBs3Dr1798bXX38tMB0REdGfWDgQEQn08uVLmJubQ0dHB0ZGRkhPT1eOtWjRAjExMQLTERER/YmFAxGRQDVr1kRKSgoAoH79+jh06JByLCIiAmZmZoKSERERlcbCgYhIoPbt2+P8+fMAgICAAERERMDd3R1t27bFTz/9hKFDhwpOSERE9AZPVSIi0iA3btzA6dOnkZeXBw8PD3h6eoqOREREBICFAxERERER/Q1sAEdEpAFycnKQlJSE/Px8lTEHBwcBiYiIiEpj4UBEJFBycjJmzZqFCxcuqIwpFApIksQGcEREpBFYOBARCTRjxgw8fvwYc+bMQd26daGnpyc6EhERUZlYOBARCXT9+nUsXrwY3t7eoqMQERF9EI9jJSISqE6dOigqKhIdg4iIqFwsHIiIBJoxYwZWr16NR48eiY5CRET0QVyq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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkoAAAHPCAYAAACstvVvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAADw3ElEQVR4nOzdd3hUVfrA8e/0zKR3UggBQkLovYgiSlEUsYCChbWDimXR3Z/uusW26rLqimBhxYJYsIuiooIFQUB6DTUJIb336XN/f0xmyKRPMpNMwvk8zz4ud245czO58+ac97xHJkmShCAIgiAIgtCIvKsbIAiCIAiC4KtEoCQIgiAIgtAMESgJgiAIgiA0QwRKgiAIgiAIzRCBkiAIgiAIQjNEoCQIgiAIgtAMESgJgiAIgiA0QwRKgiAIgiAIzRCBkiAIgiAIQjNEoCR4zI4dO0hJSWHHjh1uHXfxxRfzyCOPeKlVzVu+fDkpKSmUlpZ2+rWFzuP4Obvr4osvZtGiRV5oUffzyCOPcPHFF7t9XEpKCk888YQXWuRZ7X1/7pwvJSWF5cuXe+wa3vLZZ5+RkpJCdna2y/ZVq1YxdepUUlNTufLKK4Gue3Z3NmVXN6C+O+64g/379/Ptt98SERHh8lpVVRUzZ84kJiaGDz/8ELlcxHiC7/nqq68oKSnhlltu6eqmeFVxcTFvvPEGP/30E3l5echkMvr168e0adO46aabCAoKAmDBggX8/vvvzuOCg4Pp3bs3119/Pddcc43z9/iRRx7h888/b/JaarWagwcPev9NdaIdO3awZs0a9u7dS0VFBYGBgQwfPpxrrrmGGTNm8NZbb/Hss8/y1ltvcd555zV5jo8++oi///3vvPLKK0ydOrXRva6vb9++bNiwwZtvSehmXnvtNZKSkpg2bVqr+27ZsoX//Oc/zJ49m/vuu4/Q0FCvt0+v17Nq1SrGjRvH+PHjvX69lvhUoPTPf/6TK664gmeeeYbnn3/e5bUXXniBsrIyVq1aJYIkHzV27FgOHDiASqVy67gNGzYgk8m81KrOtX79ek6cONGjA6UDBw6wcOFCamtrmT17NoMHDwbg0KFDvP766+zatYs333zTuX+vXr148MEHASgrK+OLL77g0UcfJTMzkz/96U/O/dRqNU899VSj6ykUig619+6772bhwoUdOocnvfTSS7z88sskJiYyb948YmNjKS8v55dffuG+++7jueee47LLLmPp0qV89dVXzQZKX331FSEhIUyePNm5rf69ri8wMLBDbX7yyScRy4L2LCtXruSSSy5pFChdeeWVXH755ajVaue27du3I5fL+de//uWy3ZvPbr1ez4oVK7j33ntFoFRf7969Wbx4Mc899xxXX301559/PmB/MK9du5bbbruNgQMHerUNRqMRlUolgjE31L9nGo3G7ePr/+IJvq2yspJ7770XhULB559/Tv/+/V1eX7JkCR999JHLtsDAQGdXPcC8efO49NJLee+993jggQecgbVSqXTZr6Nqa2vR6XQolUqUSt941G3YsIGXX36ZSy65hOeff97lj4o77riDX3/9FYvFQnR0NOPHj+eHH37g8ccfb/Q7UlBQwK5du7juuutcztHwXneU4x66+8eP4JskScJoNOLn59fsPgqFotEfJyUlJfj5+TX6HJ4rz26fiwZuvfVWUlJSePzxxzEajVitVh577DFiY2O59957OXXqFPfffz/jxo1j6NChXHPNNWzatMnlHOXl5fz73//miiuuYOTIkYwaNYo77riDo0ePuuznyKn5+uuv+e9//8sFF1zA8OHDqa6uxmw2s2LFCmbMmMHQoUMZP348119/PVu3bm31PVRWVvL0009z8cUXM2TIECZPnsz//d//ueTClJSU8Ne//pXzzjuPoUOHMnv27EZDD9nZ2aSkpPDGG2/w3nvvMXXqVIYPH85tt91GXl4ekiTx8ssvM3nyZIYNG8bdd99NeXm5yzkceRZbtmzhyiuvZOjQoVx22WV8//33Hr9nTeUoZWZmct999zFp0iSGDh3K5MmTWbJkCVVVVS5tbDjOfebMGefPefjw4Vx33XX8/PPPTbblm2++4dVXX2Xy5MkMHTqUm2++mdOnT7f6c3IoKyvjgQceYNSoUYwfP56nnnoKo9HYaL9169ZxzTXXMGzYMMaNG8eSJUvIy8tzvr5gwQJ+/vlncnJySElJISUlhYsvvhhJkhg/fjzPPPOMc1+bzcaYMWNITU2lsrLSuf1///sfgwYNoqamxrmtLZ95sH/u/vWvf3HhhRcyZMgQpk+fzv/+9z9sNptzn/qfqQ8//JBp06YxZMgQ5syZw4EDB1q9V2vXrqWgoIBHHnmkUZAEEBERwT333NPiObRaLcOHD6e2ttZj+WGOPKSTJ0/y0EMPMXbsWG644QaX1xpat24dc+fOZfjw4YwdO5Ybb7yRLVu2NNpv165dzJ07l6FDhzJ16lS++OKLdrdz2bJlhISE8PTTTzcZfFxwwQVcdNFFAMyePZuqqqpGn3uAr7/+GpvNxhVXXNHutjT0yCOPMHLkSLKysrjzzjsZOXKks8evqZwbm83G6tWrueKKKxg6dCgTJkzg9ttvb3KYdOPGjcyaNYshQ4Zw+eWXs3nz5lbbYzKZWLZsGddccw2jR49mxIgR3HDDDWzfvt1lP3c/0462DB06lFmzZvHDDz+0+R5t3LiRhQsXcv755zNkyBCmTZvGyy+/jNVqbfM5WmM0Glm+fDmXXHIJQ4cO5fzzz+fee+8lKyvLuY/NZuPtt9/m8ssvZ+jQoZx33nn84x//oKKiwuVcjuf/r7/+6nx2rV27lpSUFGpra/n888+dzyrHM7hhjlJKSgqfffYZtbW1zn0/++wz5/kbPrtb+/5ry881OzubiRMnArBixQrndevneLXludiR7/H6fOPPrHqUSiVPPvkk8+fP55VXXiEsLIzDhw+zatUqsrOzuf7664mOjubOO+9Ep9Px7bffsnjxYpYvX8706dMB+5fsxo0bufTSS4mPj6e4uJgPP/yQm266ia+//pro6GiXa77yyiuoVCpuv/12TCYTKpWKFStWsHLlSq699lqGDRtGdXU1hw4d4vDhw0yaNKnZ9tfU1HDjjTdy6tQp5syZw6BBgygrK+PHH3+koKCAsLAwDAYDCxYsICsrixtvvJH4+Hg2bNjAI488QmVlJTfffLPLOb/66ivMZjMLFiygvLycVatW8cc//pEJEyawY8cO7rzzTk6fPs27777Lv//9b5cvZLAHK0uWLGH+/PlcffXVfPrppzzwwAOsWrXK+V48cc8aMplMztdvuukmIiIiKCgo4Oeff6aysrLZ4YDi4mLmz5+PXq9nwYIFhIaG8vnnn3P33Xfz0ksvOX/ODq+//joymYzbbruN6upqVq1axZ/+9Cc+/vjjZn9O9f3xj38kLi6Ohx56iH379rFmzRoqKytZunSpc59XX32VZcuWMXPmTObOnUtpaSnvvvsuN954I1988QVBQUHcddddVFVVkZ+fz1/+8hcA/P39kclkjBo1ip07dzrPd+zYMaqqqpDL5ezZs4cpU6YAsHv3blJTU/H39wfgxIkTbfrM6/V6brrpJgoKCpg/fz4xMTHs3buXF154gaKiIh599FGX97x+/XpqamqYN28eMpmMVatWcd9997Fx48YWew9+/PFH/Pz8uOSSS9p0b5uTnZ2NQqFw5jI5NBU4qdVqAgIC2nTeBx54gD59+rBkyZIWh4pWrFjB8uXLGTlyJPfffz8qlYr9+/ezfft2Z082wOnTp3nggQeYO3eu83fnkUceYfDgwQwYMKCN79YuMzOT9PR05syZ06b3M2PGDB577DHWr1/PjBkzXF5bv349cXFxjB492mW71Wpt8h76+fmh0+lavabFYuH2229n9OjRPPzwwy32PDz66KN89tlnTJ48mblz52K1Wtm1axf79+9n6NChzv12797N999/zw033IC/vz9r1qzh/vvv56effmox16W6upqPP/6YWbNmce2111JTU8Mnn3zCHXfcwccff0xqamqje9LaZ3rLli3cd999JCUl8dBDD1FWVsZf/vIXevXq1eq9Afj888/R6XTceuut6HQ6tm/fzksvvUR1dTUPP/xwm87REqvVyqJFi9i2bRuXX345f/jDH6ipqWHr1q0cP36chIQEAP7xj3/w+eefc80117BgwQKys7N57733OHLkCB988IHL73BGRgYPPfQQ8+bN47rrrqNv374sXbqUv/3tbwwbNozrrrsOwHnuhpYuXcpHH33EgQMHnEPjo0aNanLftnz/teXnGhYWxmOPPcZjjz3G9OnTnc85xx88bX0utvd7vBHJRz3xxBPS4MGDpREjRkgPPvigJEmSdPPNN0uzZs2SjEajcz+bzSbNmzdPmjFjhnOb0WiUrFary/nOnDkjDRkyRFqxYoVz2/bt26Xk5GRp6tSpkl6vd9l/9uzZ0sKFC91u97Jly6Tk5GTp+++/b/SazWaTJEmS3n77bSk5OVlat26d8zWTySTNmzdPGjFihFRVVeVsc3JysjRhwgSpsrLSue/zzz8vJScnS7Nnz5bMZrNz+4MPPigNHjzY5f5cdNFFUnJysvTdd985t1VVVUmTJk2SrrrqKuc2T9wzx2vbt2+XJEmSjhw5IiUnJ0vffvtti/fsoosukh5++GHnv//1r39JycnJ0s6dO53bqqurpYsvvli66KKLnO10XG/mzJku73n16tVScnKydOzYsRav+9JLL0nJycnSXXfd5bL9sccek5KTk6W0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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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l/f1EREREZVK76vJGjZsiLVr15a6zIYNG1Qe9+/fH/379y9z25GRkYiMjNQ3JCIiIqJy46z1REREZNZYDBEREZFZYzFEREREZo3FEBEREZk1FkNERERk1lgMERERkVljMURERERmjcUQERERmTUWQ0RERGTWWAwRERGRWWMxRERERGaNxRARERGZNRZDREREZNZYDBEREZFZYzFEREREZo3FEBEREZk1FkNERERk1lgMERERkVljMURERERmjcUQERERmTUWQ0RERGTWWAwRERGRWWMxRERERGaNxRARERGZNRZDREREZNZYDBEREZFZYzFEREREZo3FEBEREZk1FkNERERk1lgMERERkVljMURERERmjcUQERERmTUWQ0RERGTWWAwRERGRWWMxRERERGaNxRARERGZNRZDREREZNZYDBEREZFZYzFEREREZk3vYigpKQnvvPMOAgICEBISgpiYGBQWFpa6zv379xETE4O+ffuiZcuWCA0NxeTJk3H79m21ZdPT0zFu3Di0bNkSbdq0wSeffIKcnBx9wyQiIiLSiaU+C2dmZmLYsGHw8PBAbGws0tPTMXfuXOTn52PatGla1/vjjz9w6NAhvPHGG2jRogUePXqEpUuXYuDAgUhISICzszMAoKioCKNGjQIALFiwAPn5+Zg3bx4mT56M5cuXV+BlEhHpTiEoIJWof1fU1k5Ezze9iqHNmzfjyZMniIuLg5OTEwBALpdjxowZiIyMhJubm8b1goKCsH//flha/re7wMBAhIWFYdeuXRgxYgQA4MCBA7h+/Tr27dsHLy8vAICDgwNGjhyJy5cvo3nz5uV5jUREepFKpFh0dg1uZ90T2+o61Mb4l0cYMSoiqip6fcU5ceIEgoODxUIIALp37w6FQoFTp05pXc/BwUGlEAKA2rVrw9nZGffv31fZvo+Pj1gIAUBISAicnJxw/PhxfUIlIqqQ21n3kPzolvhTvDAioheLXsXQjRs3VAoV4Fmh4+Lighs3bui14+TkZGRkZKBhw4albl8ikcDT01Pv7RMRERHpQq9usqysLDg4OKi1Ozo6IjMzU+ftCIKA2bNnw9XVFT179lTZvr29fYW3r2l/ubm55V4fAPLy8lT+NSZTigUwfjwSiQQymUzv9fLy8iAIQhVE9N/2i/9rbKYUjyFjKev4yMvLU4lHl+V53BgHY9HOlOKprFgEQYBEIqmMkMqkVzFUWWJjY3H27FmsWrUKtra2Vb6/oqIiXL16tVK2lZKSUinbqQymFAtgvHhkMhl8fX31Xi85OdkgHxx8n7QzRCxlHR/Fj4OUlBS9lq9KpvQ+AaYVD2PRzpTiqYxYrK2tKx6IDvQqhhwcHJCdna3WnpmZCUdHR522sXXrVixevBhffPEFgoOD1bav6TL6zMxMvPTSS/qEqsLKygqNGjUq9/rAswo3JSUFHh4e5ToLUZlMKRZTiKe83xw8PT2r/Bs+3yfjx1LW8eHp6Ync3FwxnrK+oPG4YSymFoupxVNZsfzzzz+VGFXp9CqGvLy81MbuZGdn48GDB2pjfTQ5dOgQpk+fjvHjx2PAgAEat//333+rtAmCgOTkZISEhOgTqgqJRFJpZ6BkMplBzmbpwpRiAUwvnrIY6gPD1PJiSvGYQiwymUwsbmQyWZnHBY8b42Ms2plSPBWNxVBdZICeA6hDQ0Nx+vRpZGVliW2JiYmQSqVlFivnzp3DpEmTMHDgQERFRWnd/rVr11ROrZ05cwaPHz9Ghw4d9AmViIiISCd6FUPh4eGoXr06oqKicPLkSWzfvh0xMTEIDw9XucfQsGHD0LlzZ/FxUlISoqKi4OHhgb59++K3334Tf27evCku17VrVzRu3Bjjxo3D//73P+zbtw9Tp05FWFgY7zFEREREVUKvbjJHR0esW7cOs2bNQlRUFKpXr44BAwZg4sSJKsspFArI5XLx8aVLl5CdnY3s7Gy89dZbKsu+/vrrmDt3LoBnY3tWrVqF2bNnY9KkSbC0tETnzp0xderU8r4+IiIiolLpfTVZw4YNsXbt2lKX2bBhg8rj/v37o3///jpt383NDbGxsfqGRURERFQunGSHiIiIzBqLISIiIjJrLIaIiIjIrLEYIiIiIrPGYoiIiIjMGoshIiIiMmsshoiIiMissRgiIiIis8ZiiIiIiMwaiyEiIiIyayyGiIiIyKyxGCIiIiKzxmKIiIiIzBqLISIiIjJrLIaIiIjIrLEYIiIiIrPGYoiIiIjMGoshIiIiMmsshojI7EkkEshkMkgkEmOHQkRGYGnsAIiIjMHJvhoEhQISqRQymQy+vr7GDomIjITFEBGZJTuZFSRSKe7v+gaFGWliu61XSzi/OtiIkRGRobEYIiKzVpiRhsJ7yeJjq5p1jRgNERkDxwwRERGRWWMxRERERGaNxRARERGZNRZDREREZNZYDBERmTGFQtCrnehFxKvJiIjMmFQqwfyNF5CWni221XOzR/TgICNGRWRYLIaIiMxcWno2km5nGjsMIqNhNxkRERGZNRZDREREZNZYDBEREZFZYzFUTgpBoVc7ERERmSYOoC4nqUSKRWfX4HbWPbGtrkNtjH95hBGjIiIiIn2xGKqA21n3kPzolrHDICIiogpgNxkRERGZNRZDREREZNZYDBEREZFZYzFEREREZk3vYigpKQnvvPMOAgICEBISgpiYGBQWFpa53saNGxEZGYmXX34ZPj4+SExMVFvm3Llz8PHxUfuZOHGivmESERER6USvq8kyMzMxbNgweHh4IDY2Funp6Zg7dy7y8/Mxbdq0UtfdvXs3AKBDhw7YtWtXqcvOmTMHXl5e4uMaNWroEyYRERGRzvQqhjZv3ownT54gLi4OTk5OAAC5XI4ZM2YgMjISbm5upa4rlUqRlpZWZjHUuHFj+Pv76xMaERERUbno1U124sQJBAcHi4UQAHTv3h0KhQKnTp0qfUdSDk8iIiIi06NXhXLjxg2V7isAcHBwgIuLC27cuFFpQY0ePRpNmzZFaGgo5s2bh/z8/ErbNhEREVFxenWTZWVlwcHBQa3d0dERmZmZFQ7G3t4eo0aNQuvWrVGtWjWcPXsWa9aswY0bN7B8+fJyb1cQBOTm5lYotry8PPFfiUQCmUxW6rKCIFRof7rGYgqMHU9Z74c2fJ+Mx5CxlPf40OZFOm50+Swz1+OmLKYUC2Ba8VRWLIIgQCKRVEZIZTKp6Th8fX3h6+srPg4ODoarqytmzpyJy5cvo3nz5uXablFREa5evVopMaakpEAmk6nEWVJycrJBDsiUlJQq34c+DBGPlZUVLC1VD1sbGxu1M5a64PtkfIaIpazfV329SMeNPp9l5nbc6MqUYgFMK57KiMXa2rrigehAr2LIwcEB2dnZau2ZmZlwdHSstKCK6969O2bOnIkrV66UuxiysrJCo0aNKhRHXl4eUlJS4OHhAVtb21KX9fT0rPJvjspYKvMbr6nHI5FIYF2tGiwqafwZ3yfziKWyv1m+SMdNWbnx9PREbm6uWR43z1MsphZPZcXyzz//VGJUpdOrGPLy8lIbG5SdnY0HDx6U65u5oUgkkjILGF3JZLIy31xDHYgymazSXldlMFQ88zdeQFr6f0V5YBNXDO2h/zd/vk/GZ0qx6MqcjhuZTCYWfqYQjxJj0c6U4qloLIbqIgP0HEAdGhqK06dPIysrS2xLTEyEVCpFSEhIpQcHAHv37gUAXmpPorT0bCTdzhR/7j+s2HgwIiIyb3qdGQoPD8eGDRsQFRWFyMhIpKenIyYmBuHh4Sr3GBo2bBju3LmDQ4cOiW2///47bt++jYcPHwIALl26BABwdnZGmzZtAADR0dFwd3eHr6+vOIB67dq16NSpE4shIiIiqhJ6FUOOjo5Yt24dZs2ahaioKFSvXh0DBgxQmy5DoVBALpertG3cuBE7d+4UH69ZswYA0KZNG2zYsAHAs5stxsfHY82aNSgqKkLdunXx3nvvYfTo0eV6cURERERl0ftqsoYNG2Lt2rWlLqMsboqbO3cu5s6dW+p6kZGRiIyM1DckIiIionLjbaGJiIjIrLEYIiIiIrPGYoiIiIjMGoshIiIiMmsshoiIiMissRgiIiIis8ZiiIiIiMwaiyEiIiIyayyGiIiIyKyxGCIiIiKzxmKIiIiIzBqLISIiIjJrLIaIiIjIrLEYIiIiIrPGYoiIiIjMGoshIiIiMmsshoiIiMissRgiIiIis8ZiiIiIiMwaiyEdSSQSyGQySCQSY4dCRERElcjS2AGYOkGhgEQqhUwmg6+vr7HDISIiokrGYqgMEqkU93d9g8KMNLHN1qslnF8dbMSoiIiIqLKwGNJBYUYaCu8li4+tatY1YjRERERUmThmiIiIiMwaiyEiIiIyayyGiIiIyKyxGCIiIiKzxmKIiIiIzBqLISIiIjJrLIaIiIjIrLEYIiIiIrPGYoiIiIjMGoshIiIiMmsshojMlEJQ6NVORPSi4txkRGZCIpFAJpNBIpEAAKQSKRadXYPbWffEZeo61Mb4l0cYK0QiIqNgMUT0ghMUCkikUshkMvj6+qo8dzvrHpIf3TJSZEREpoHFENELTiKV4v6ub1CYkSa22Xq1hPOrg40YFRGR6WAxRGQGCjPSUHgvWXxsVbOuEaMhIjItHEBNREREZk3vYigpKQnvvPMOAgICEBISgpiYGBQWFpa53saNGxEZGYmXX34ZPj4+SExM1Lhceno6xo0bh5YtW6JNmzb45JNPkJOTo2+YRERERDrRqxjKzMzEsGHDUFRUhNjYWEycOBFbt27F3Llzy1x39+7dePToETp06KB1maKiIowaNQopKSlYsGABpk+fjpMnT2Ly5Mn6hElERESkM73GDG3evBlPnjxBXFwcnJycAAByuRwzZsxAZGQk3NzcSl1XKpUiLS0Nu3bt0rjMgQMHcP36dezbtw9eXl4AAAcHB4wcORKXL19G8+bN9QmXiIiIqEx6nRk6ceIEgoODxUIIALp37w6FQoFTp06VviNp2bs6ceIEfHx8xEIIAEJCQuDk5ITjx4/rEyoRERGRTvQqhm7cuKFSqADPzty4uLjgxo0bFQ5G0/YlEgk8PT0rZftEREREJenVTZaVlQUHBwe1dkdHR2RmZlY4mKysLNjb21f69gVBQG5urt7rKe/Yq6+8vDwIgqD3evpsv/i/xmaoeMr7fmhjDu8Tj2EeN6UpKzd5eXkmcRwrMRbtTCmeyopFEATxjvlVzSzuM1RUVISrV6/qvZ6mO/bqIjk52SAHZEpKSpXvQx9VHU953w9tzOF94jHM46Y0ZeWm+Gs1pc8bxqKdKcVTGbFYW1tXPBAd6FUMOTg4IDs7W609MzMTjo6OFQ7GwcFB42X0mZmZeOmll8q9XSsrKzRq1Ejv9cpbkXp6elb5N8eUlBR4eHhU6jdeU4+nsr8hmMP7xGOYx01pysqNp6cncnNzjX4cK5nC75QpxmJq8VRWLP/8808lRlU6vYohLy8vtbE72dnZePDggdpYn/Lw8vLC33//rdImCAKSk5MREhJS7u1KJBLY2tpWNDydGepAlMlkBn1dZTG1eMpiru+TLpgb7cwpNzKZTCz8TCEeJcainSnFU9FYDNVFBug5gDo0NBSnT59GVlaW2JaYmAipVFqhYqX49q9du6Zyau3MmTN4/PhxqfcnIiIiIiovvc4MhYeHY8OGDYiKikJkZCTS09MRExOD8PBwlXsMDRs2DHfu3MGhQ4fEtt9//x23b9/Gw4cPAQCXLl0CADg7O6NNmzYAgK5du2L58uUYN24cJk2ahLy8PMTExCAsLIz3GCIiIqIqoVcx5OjoiHXr1mHWrFmIiopC9erVMWDAAEycOFFlOYVCAblcrtK2ceNG7Ny5U3y8Zs0aAECbNm2wYcMGAM/G9qxatQqzZ8/GpEmTYGlpic6dO2Pq1KnlenFkGMorUgx5SpOIiKiy6H01WcOGDbF27dpSl1EWN8XNnTtXp2k73NzcEBsbq29YZASCQgGJVKp2RYqynYiI6HlgFpfWU9WQSKW4v+sbFGakiW3WNevBtd8E4wVFRESkJxZDVCGFGWkovJds7DCIiIjKjX0ZRFWEY6mIiJ4PPDNElcqiuhMUggJSiWqdrantRSYoFBxLRUT0nGAxRGVSKARIpbqd3ZDaVIdUIsWis2twO+seAKCuQ22Mf3lEVYZockqOp+JYKiIi08ViiMoklUowf+MFpKX/NxVLYBNXDO2hfU6j21n3kPzoliHCM1kcT0VE9HxgMUQ6SUvPRtLtTPFxPVc7I0ZDRERUeTiAgegFoVBU3eShREQvMp4ZInpBlKc7k4iIWAwRvVDYnUlEpD92kxEREZFZYzFEREREZo3FEBEREZk1FkNERERk1lgMERERkVljMURERERmjcUQERERmTUWQ0RERGTWWAwRERGRWWMxRERERGaNxRARERGZNRZDREREZNZYDBEREZFZYzFEREREZo3F0P+nUAjGDoGIiIiMwNLYAZgKqVSC+RsvIC09W2wLbOKKoT18jRgVERERVTUWQ8WkpWcj6Xam+Lieq50Ro6HngUIhQCqVGDsMIiKqABZDRBXAM4pERM8/FkNEFcQzikREzzcOoCYiIiKzxmKIiIiIzBqLISIiIjJrLIaIiIjIrLEYIiIiIrPGYoiIiIjMGoshIiIiMmsshoiIiMissRgiIiIis8ZiiIiIiMya3sVQUlIS3nnnHQQEBCAkJAQxMTEoLCwscz1BELBixQqEhYWhefPmGDRoEH777TeVZc6dOwcfHx+1n4kTJ+obJhEREZFO9JqbLDMzE8OGDYOHhwdiY2ORnp6OuXPnIj8/H9OmTSt13ZUrV2LRokWIjo6Gj48PNm7ciBEjRmD37t2oX7++yrJz5syBl5eX+LhGjRr6hElERESkM72Koc2bN+PJkyeIi4uDk5MTAEAul2PGjBmIjIyEm5ubxvUKCgqwfPlyjBgxAsOHDwcABAUFoVu3bli9ejWmT5+usnzjxo3h7++v94shIiIi0pde3WQnTpxAcHCwWAgBQPfu3aFQKHDq1Cmt6/3666/IyclB9+7dxTZra2t07twZJ06c0D9qIiIiokqiVzF048YNle4rAHBwcICLiwtu3LhR6noA1NZt2LAh7ty5g/z8fJX20aNHo2nTpggNDcW8efPUniciIiKqLHp1k2VlZcHBwUGt3dHREZmZmaWuZ21tjWrVqqm0Ozg4QBAEZGZmwsbGBvb29hg1ahRat26NatWq4ezZs1izZg1u3LiB5cuX6xOqCkEQkJubq/V5iUQCmUxW7u2XlJeXB0EQKm17mrZf/N+qVJm5qWheTO19Kk88VXVsmFpudNl+8X+rEnOjXVm5ycvLM2g8ZWEs2plSPJUViyAIkEgklRFSmfQqhqqar68vfH19xcfBwcFwdXXFzJkzcfnyZTRv3rxc2y0qKsLVq1e1Pi+TyVT2W1HJyckGOSBTUlKqfB+VmZuK5sXU3qfyxFNVx4ap5UZXz9sxDJhXboq/VkPEoyvGop0pxVMZsVhbW1c8EB3oVQw5ODggOztbrT0zMxOOjo6lrldYWIiCggKVs0NZWVmQSCSlrtu9e3fMnDkTV65cKXcxZGVlhUaNGml9vrIrT09Pzyr/5piSkgIPD49K/carSWXmpqJ5MbX3qTzxVNWxYWq5KUvJY7i0+Csax/Oem6pUVm48PT2Rm5trsHjKYsjcPE+xmFo8lRXLP//8U4lRlU6vYsjLy0ttbFB2djYePHigNh6o5HrAs28ZTZo0Edtv3LiBOnXqwMbGRp8w9CaRSGBra1ul+yjOUAeiTCYz6OuqKGP/gpZkjHhMLQfaGPoYVggKSCXqQxi1tRuTOf1+y2QysfAzhXiUGIt2phRPRWMxVBcZoGcxFBoaimXLlqmMHUpMTIRUKkVISIjW9QIDA2FnZ4f9+/eLxVBRUREOHjyI0NDQUve5d+9eAOCl9kQvMKlEikVn1+B21j2xra5DbYx/eYQRoyIic6FXMRQeHo4NGzYgKioKkZGRSE9PR0xMDMLDw1XuMTRs2DDcuXMHhw4dAgBUq1YNkZGRiI2NhbOzM7y9vbFp0yY8fvwYI0eOFNeLjo6Gu7s7fH19xQHUa9euRadOnVgMEb3gbmfdQ/KjW8YOg4jMkF7FkKOjI9atW4dZs2YhKioK1atXx4ABA9Smy1AoFJDL5Spt7777LgRBwJo1a/Dw4UM0bdoUq1evVrn7dOPGjREfH481a9agqKgIdevWxXvvvYfRo0dX4CUSEVFl0dR1aYrdmUT60PtqsoYNG2Lt2rWlLrNhwwa1NolEgsjISERGRmpdr6zniYjIuEp2abI7k14EJnVpPRERmT52adKLhuc1iYiIyKyxGCIiIiKzxmKIiIhIA4VC8801FQrDTRNBhsExQ0RERBpIpRLM33gBaen/zbxQz80e0YODjBgVVQUWQ0RERFqkpWcj6bb2icjpxcBuMiIiIjJrLIaIiIjIrLEYIiIiIrPGYoiIKl1pV+EQEZkaDqAmokrHq3CI6HnCYoiIqgSvwiGi5wW7yYjI4CQSCWQyGW9cR0QmgWeGiMggnOyrQVAoIJFKIZPJ4Ovra+yQiIgAsBgiIgOxk1lBIpXi/q5vUJiRJrbberWE86uDjRgZlYZn8cgcsBgiIoMqzEhD4b1k8bFVzbpGjIY04Vk8MjcshoiISAXP4pG5YTFEREQa8SwemQteTUZERERmjcUQERERmTUWQ0QGYFHdCQpBofE5be1ERGQYHDNEZABSm+qQSqRYdHYNbmfdE9vrOtTG+JdHGDEyIiJiMURkQLez7iH50S1jh0FERMWwm4yIiIjMGoshIiIiMmsshoiIiMissRgiIiKqIF4t+nzjAGoiIqIK4tWizzcWQ0RERJWAV4s+v9hNRkRERGaNxRARERGZNRZDREREZNZYDBEREZFZYzFERESkJ4lEAplMBolEYuxQqBLwajITpFAIkErVf8G0tRMRkWE42VeDoFDAxsYGvr6+xg6HKgmLIRMklUowf+MFpKVni2313OwRPTjIiFEREZGdzAoSqRT3d32Dwow0AICtV0s4vzrYyJFRRbAYMlFp6dlIup1p7DCIiEiDwow0FN5LBgBY1axr5GioojhmiIiIiMwaiyEiIgNSKAS92omo6undTZaUlITZs2fj4sWLqF69Ovr27YsJEybA2tq61PUEQcDKlSvxww8/4OHDh2jatCk+/vhjBAQEqCyXnp6O2bNn4+TJk7CyskLnzp3x8ccfw87OTt9QiYhMDscEEpkevc4MZWZmYtiwYSgqKkJsbCwmTpyIrVu3Yu7cuWWuu3LlSixatAjDhw/H8uXL4eLighEjRuDWrf/mcSkqKsKoUaOQkpKCBQsWYPr06Th58iQmT56s/ysjIjJRyjGByp/ihRERGZ5eZ4Y2b96MJ0+eIC4uDk5OTgAAuVyOGTNmIDIyEm5ubhrXKygowPLlyzFixAgMHz4cABAUFIRu3bph9erVmD59OgDgwIEDuH79Ovbt2wcvLy8AgIODA0aOHInLly+jefPm5XuVRERERFrodWboxIkTCA4OFgshAOjevTsUCgVOnTqldb1ff/0VOTk56N69u9hmbW2Nzp0748SJEyrb9/HxEQshAAgJCYGTkxOOHz+uT6hEREREOtGrGLpx44ZKoQI8O3Pj4uKCGzdulLoeALV1GzZsiDt37iA/P1/r9iUSCTw9PUvdPhER0YuMA++rlkQQBJ0z6efnhw8++ACjR49Wae/VqxdatmyJWbNmaVxv6dKlWLJkCX7//XeV9sTERHzwwQc4ceIE3Nzc0KVLF7z88suYOXOmynKRkZEoKirCmjVrdA1V9Ouvv0IQBFhZWZW6nEQiQWZOIZ7KFWJbNSsL2NlaQZ6bCcjl/y1rZQ2pjR2yCrLxVPFfu6XUAg7V7KFHSnWOxdJCCkc7awiCAEEQIJfLYWFhYZBbwVc0N5WVl8qIxVjxmFIshojHlGIxtXj4+11+ppobQx3DT/KKIC9W/FhIJaguszL4cVPa9iszlqKiIkgkEgQGBpZ7G7p64W+6qHwjdHlDHO00XxFnYeuosd2hmn2p+6wIbbFIJBJIJBJIpYa9K0Jl5KayfkFN6X3SNx5TiqWq4zGlWEwtHv5+l4+p56aqj+HqMs1f6o113FR1LMptGYJexZCDgwOys9WvesjMzISjo+ZfGuV6hYWFKCgoQLVq1cT2rKwsSCQScV0HBwfk5ORo3P5LL72kT6iili1blms9IiIiMg96lW5eXl5qY3eys7Px4MEDtbE+JdcDgOTkZJX2GzduoE6dOrCxsdG6fUEQkJycXOr2iYiIiMpLr2IoNDQUp0+fRlZWltiWmJgIqVSKkJAQresFBgbCzs4O+/fvF9uKiopw8OBBhIaGqmz/2rVrSElJEdvOnDmDx48fo0OHDvqESkRERKQTvQZQZ2ZmomfPnvD09ERkZCTS09Mxd+5c9O7dG9OmTROXGzZsGO7cuYNDhw6JbStWrEBsbCyio6Ph7e2NTZs24eTJk9i9ezfq168P4FmB1L9/fwDApEmTkJeXh5iYGPj4+GD58uWV9ZqJiIiIRHoVQ8Cz6ThmzZqlMh3HxIkTVabjiIiIwO3bt3H06FGxTRAErFixQm06jpJjeopPx2FpaYnOnTtj6tSpnI6DiIiIqoTexRARERHRi8T41+ERERERGRGLISIiIjJrLIaIiIjIrLEYIiIiIrPGYoiIiIjMGoshIiIiMmsshoiIiMissRgiIiIis8ZiiIiIiMwaiyEiMgq5XI6TJ0+qTPxMVJrCwkJcv34dV65cQX5+vrHDoRcIi6Fy+uWXXzB06FCj7Ts3N9co+3706BHWrl2LefPmYfv27Ro/kG7duoWPP/7YCNEZLzcXLlzAtGnT8PHHH+Py5csAgJ9++gm9e/dGixYt0KtXL+zfv9/gcRW3a9cuZGZmGjWG4nJzc/Huu+/i77//NnYoRjluCgsL1drS0tIwc+ZMDBo0CIMGDcLs2bNx+/Ztg8ZVkjFyk5CQgB07doiP5XI5vv76a7Ru3Rp9+vTBwIEDERwcjEWLFhk0ruKM9fvUo0cPzJs3D3/88YfB960rY/6NKi/OTVZOBw4cwIQJE3D16lWD7lcul6NZs2bYtm0b/Pz8DLrvO3fuYODAgXj48CGcnZ2RkZEBNzc3xMTEoG3btuJyly5dQnh4uNnk5tSpUxg9ejRcXV1hb2+Pmzdv4uuvv8YHH3yA0NBQ+Pn54fz58zh9+jQ2bNiAVq1aGSw2JWPl5r333is1pp9++gkBAQFwcnKCRCLB0qVLDRZb8TiMkZumTZtiy5YtaN68OQDg77//xuDBgyEIAoKCggA8K7ItLS2xefNmeHh4GCw2JWPlpmfPnnjrrbcwZMgQAMD8+fOxbt06jBw5EsHBwQCe/d6tWbMGH3zwAd59912DxQYY93O4SZMmkEqlEAQB7u7u6N27N3r16gV3d3eDxqGNMXNTEZbGDsDUHDx4UKflfvvtt6oNpBTGql8XLFgAZ2dn7NixA25ubkhOTsbs2bMxcuRIzJo1C6+//rpR4irOGLlZunQpOnbsiG+//RZSqRSrV69GdHQ0+vTpg9mzZ4vLjR8/HitWrDBKMQQYJzfHjh1DrVq14OnpqfacXC4HAOTn5+PJkyeGDk2FMXJTcp/z589HzZo1sWHDBri4uAAA0tPTERERgdjYWCxYsMDgMQLGyU1aWhoaNWokPt61axc++OADjBo1Smxr27YtbG1tsXnzZoMXQ4DxPocBYNWqVbh37x4SEhKwZMkSxMXFwc/PD3369EGPHj1Qq1Yto8UGGDc35cViqITx48dDIpHo9GZKJBIDRGQ6zp8/j48//hhubm4AAE9PT6xevRqLFi3C1KlTkZ6eXuqZgBfV33//ja+++gpS6bNe5zfeeANfffUVunXrprJc7969VYojczBlyhQsWbIE9erVw+TJk1U+pLOystCmTRt88sknaN26tRGjNA2//PILPv/8c7EQAgA3Nze8++67+Prrr40YmeHZ2toiJydHfPz48WPxDFpxzZs3x5IlSwwZmkmws7ND//790b9/f2RkZGDv3r1ISEjAl19+iXnz5qFNmzbo3bs3unTpAjs7O2OH+1xgMVRCjRo1EBYWhvfff7/U5Y4fP45Zs2YZJKY7d+6I/1d+m/73339V2gGgTp06VRpHdnY2atSoodY+fvx41K5dGzNmzMD9+/fRu3fvKo2jOFPITVFREaytrcXH9vb2AKCWK0dHRzx69KjK4ijpl19+Ef+vzM2ff/6p1pdflYXI8OHD0atXL7E4HDNmDIYNGwZLS0ujfpkwheOmpKdPn6J+/fpq7Q0aNDDoIHNTyE1oaCg2bdqETp06AQBatmyJY8eOoU2bNirLHTt2zGDdQ6bw+6RJzZo1MXToUAwdOhS3bt3Cnj17sG/fPkydOhUzZ840SC+GKRwzFcViqIQWLVogOTkZdevWLXW5mjVrGigioGPHjmp/OIqfgREEARKJpMrH6DRo0ACXLl1SGR+k9Oabb6JGjRqYPHkyzp8/X6VxFGcKuXF1dUVqaqo4lsHCwgKzZs1SO4bu3r2rsZisKhEREWptn332mcpjQxw3tWrVwrx583D+/HnMnj0bW7duxdSpUxEYGFil+y2NKRw3ALBmzRrxbJmtrS3u3r2rtsz9+/fh4OBQpXEUZwq5mTRpEsLDw/H2229j8ODBePvtt/HZZ58hLS1N/Pw5c+YMjh49arDuQ1P5fSpN/fr1ERUVhaioKPz5559ISEgwyH5N4ZipKBZDJbzyyivYs2dPmcvVrVsX/fr1q/qAABw5ckT8v1wuR5cuXbB06VI0btzYIPtXateuHbZv345Ro0aJXULFde7cGStXrkRUVJTBYjKF3Pj7++PcuXMIDw8X2wYOHKi23LFjx+Dv72+wuK5duyb+/+nTp2jWrBm2b99utEGNrVq1wo4dO7Bx40Z8+OGH8PHxMdrZIVM4burUqSNeeQgA1atXx6VLl9CrVy+V5Y4fP27QuEwhN25ubti6dStiYmIwZcoUPH36FIIg4ODBg+K4Tm9vbyxevBivvvqqQWIytd+nsvj6+sLX19cg+zKFY6aiWAyVMHjwYAwePLjM5Zo1a4Y5c+YYICKonGFQnoJ0cXEp8+xVZXvnnXfQpk0b5Obmau2Hbtu2LbZs2aLyIV+VTCE38+fP12m5fv36aewGMQRTGd8mlUoRERGBHj164NtvvwXwX7eiIZnCcXP06FGdlnv11VdRr169Ko7mP6aQG+U+v/rqK3z++ef4888/8e+//0KhUMDBwQGNGjUyapeLMX+f1q9fj4YNGxpt/5qYyjFTESyGyunu3bs4f/68QcfHGJuLiwvCwsLKXM7W1haWljy0SvL29sb58+fh5eVl7FCMrmbNmpg5c6b42Bx/n3QVGBiI8+fPo0WLFsYOxSjs7OzUxgopmeNxoy0XJZljbiqCN10sp8uXL+Ojjz4ydhgmibnRjHnRjrnRjrnRjrnRjrnRD7++P2csLCywfv16jfdtMXfMjXYWFhY4cuQIXF1djR2KyeFxox1zoxl/n7R7Xo8ZFkPPIV1Pk5oj5ka756n/3tB43GjH3GjG3yftnsdjht1kRETgxLGkH04a+2JhMfQCMOakscZk6pPGGtPzMHGsqTGliWON4XmZONbQnodJY43leZg0VlfsJiuhZcuWOl02qbx80BQ8fPhQ5e6oVcWUcqNp0thFixapTRr78OFD7Nq1q0pvg2BKeQHUJ44dOnSoysSxPXr0wPnz5zFp0iS4uLhU6VxpppabsiaOFQQB8+fPN8jEsaaWmxYtWpQ5ceyuXbuQkJBQ5RPHmlJuli5dirfeekt8/PXXX2ucNHbFihWQyWRVPk+aKeXmxo0bSElJwdq1a01y0lh9sBgqYcSIESZzTxZTmzTWlHJjSpPGmlJeANOaONbUcmNKE8eaWm5MaeJYU8qNqU0aa0q5AUx/0lidCWSyfHx8hCZNmgg+Pj5l/jRp0sTY4RpUaGiosH//frX2b7/9VmjSpImwdOlSQRAE4bfffjO73LRu3Vo4duyY+PjRo0eCj4+P8NNPP6ksd/DgQSE0NNTQ4RnVd999J7Ru3VqYMmWK8ODBA5XnMjMzBR8fH+Hnn382UnTG5ePjI1y6dEl8HBAQIOzcuVNtua1btwrBwcEGjMy4Xn75ZeHQoUPiYz8/P+HcuXNqy506dUrw9/c3ZGhGV/KY+ffff4V169YJAwcOFHx8fARfX19h+PDhwvbt24Xs7GwjRlo2jhkqh6ysLGzdulXjXDWVqUaNGujXrx+OHDlS6s+0adOqNA59GCo3pU0aO2PGDMTGxmLmzJlQKBRVGoeuDJUXwHQnjtXGkLkZPnw49u3bB4VCgW7dumH16tV4+vQpANO5S3dxhsxNSaYycaw2hsqNctJYJeWksSUZctLYshjruFFOGrt161YcOnQIY8eOxf379zF16lS0b9/eoLHoi91kOiosLMSRI0cQHx+Pn376CUVFRVU+74spThqriTFyY4qTxpZkjLwApjtxbHHGyg1gmhPHFmfM3JjixLHFGSM3pjhprCbGPG40MdakseXFYqgUgiDg9OnTiI+Px6FDh/DkyRNIJBL069cPw4cPh4+PT5Xu3xQnjVUydm5McdJYwPh5AUx34lhTyE1xpjRxrCnkxlQnjjV2bkxx0lglY+dGV4acNLa8JIJQYtQc4fLly4iPj8f+/fuRkZEBOzs7dO7cGWFhYRg/fjw2bNiA1q1bGztMozCV3Dx48AB//PEHWrVqpXXSWABISkrC5cuXq3xAtankRR/Hjx9H/fr1q3yutOchNxkZGfj222+RnJyMTz75BE2aNDHIfp+H3JS0d+9e1KtXr8rnSjPF3OTk5JjEpLGmkpuff/4Zfn5+qF69epXvq6rxzFAJXbt2xc2bN1GtWjWEhoaid+/e6NChA6ytrZGdnW3s8DQy1IR8ppQbU5o01pTyog9DTBz7vOTGGBPHPi+5KckQE8eaam5MYdJYU8rNizRpLAdQl5CamgpBENCsWTN06dIFr7zyispgVFNkqAn5mBvNnse8AMxNaZgb7Zgbzfg5rN3zMGkszwyVsHPnTuzZswf79+9HdHQ0ZDIZXnvtNfTu3dug4ytMEXOjGfOiHXOjHXOjHXOjHXNTNVgMldC0aVM0bdoUH330EX7++WdxYNrevXthb28PiUSClJQUk+vHNwTmRjPmRTvmRjvmRjvmRjvmpmpwALUOioqKcPz4ccTHx+P48eMoKChAnTp10K9fP4wbN87Y4eHAgQOYMGECrl69avB9MzeamXpeAOamNMyNdsyNZvwc1s6YudGZgW/y+NzLyckRdu7cKYwYMULw8/MzdjiCIAhCYmKiSdxlmbnRzBTzIgjMTWmYG+2YG81MIS+CwNyUF7vJSli5ciX69esnzsUDAL/++iuaNm0KmUyG6tWro1+/fggKCsKyZcuqNBZTmpAPYG60MaW8AMxNaZgb7ZgbzUwpLwBzU1VYDJWwcOFCtG3bVjzQ5HI5Bg8ejG3btsHPz09c7uHDh9ixYwe++OKLKovF1CbkY240M6W8AMxNaZgb7ZgbzUwpLwBzU1VYDJUgaBhCpanNEEyhr7c45kYzU8oLwNyUhrnRjrnRzJTyAjA3VYX3GXrOGXMiR1PH3GjH3GjH3GjH3GjGvGj3vOSGZ4aeQ6Y2IZ8pYW60Y260Y260Y240Y160ex5zw2JIR8buFxVMeEI+5kYzY+cFYG5Kw9xox9xoZqp5AZibiuJ9hkpo0qQJZDKZyoGVm5ur1iYIAvLz86v8vgmmMiEfwNxoY2p5AZib0jA32jE3mplKXgDmpqrwzFAJ77//vrFDEJnShHwAc6ONKeUFYG5Kw9xox9xoZkp5AZibqsJiqARTOtBSU1MBwGQm5GNuNDOlvADMTWmYG+2YG81MKS8Ac1NVWAyZME7Ipx1zox1zox1zox1zoxnzot2LlBuOGXoOCIKgMiFfVlYW7O3tkZ2djZkzZ2LgwIHGDtFomBvtmBvtmBvtmBvNmBftXoTcsBh6zpj6hHzGxNxox9xox9xox9xoxrxo97zmhsXQc+zJkyc4dOgQ4uPjce7cOVy5csXYIZkM5kY75kY75kY75kYz5kW75yo3VTQBLFWCFStWCPfv31dpu3DhgpCbm6vSdvPmTWHq1KmGDM3omBvtmBvtmBvtmBvNmBftXqTcsBgyYU2aNBEuXbokPn769KnQpEkT4cqVKyrL/fbbb0KTJk0MHZ5RMTfaMTfaMTfaMTeaMS/avUi54dxkJkwwoQn5TA1zox1zox1zox1zoxnzot2LlBsWQ0RERGTWWAwRERGRWWMx9Bwy9oR8poy50Y650Y650Y650Yx50e55zA0vrTdhpjYhnylhbrRjbrRjbrRjbjRjXrR7kXLD6ThMmCnNQWNqmBvtmBvtmBvtmBvNmBftXqTc8MwQERERmTWOGSIiIiKzxmKIiIiIzBqLISIiIjJrLIaIiIjIrLEYIiIiIrPGYoiIiIjMGoshIiIiMmsshoiIiMis/T+0haB5qCmRbwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAOfCAYAAAB2f1NLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd1QU198G8GeXjgiIigU1ghEUpVuxo9hbjDVKLESxC7bYjSVRiS1iR7G3xFii2GMssSWWWGLvgooEqUrfef/g3fkx7AILuwji8znHkzA7M/fOnbLfvW1kgiAIICIiIiLKJ3lhZ4CIiIiIPm4MKImIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIiEgrDCg/cV5eXpg0aVJhZ+OTd+nSJTg4OODSpUuFnRUVYWFhcHBwwPr16ws7K1SAlOd5z549edouKCgIDg4OePv2bQHl7OOR3/t40qRJcHNzK6Bc6Y6un1Pq9jdp0iR4eXnpZP8FzcHBAUFBQZJlN27cQO/eveHq6goHBwfcuXNHvEeKO/38bPT8+XOsW7cO586dw5s3b2BgYAB7e3u0a9cOvXr1grGxsa7zSUTFyMOHD3H48GF88cUXqFSpUmFnp8Ckp6dj37592LdvH+7du4f379/D2toa9evXx1dffQUnJycAwJ49ezB58mRxO0NDQ1SsWBGNGjXC8OHDUaZMGQAZX8Bff/11tuktXrwYHTp0KNiD+oD+++8/rF+/Hn/88QdevXoFmUwGOzs7tGrVCv369UNqaiqaNGmC9u3bY+HChWr3kZCQAE9PTzRt2hTLly9XKeusdu3aBVdX1wI6IvrYnD59Gjdu3MCoUaNyXTc1NRX+/v4wNDTE5MmTYWxsjIoVKxZ4Hg8cOICoqCgMGDCgwNPKSZ4DylOnTmHMmDEwNDREly5dYG9vj9TUVFy5cgU//vgjHj58iDlz5hREXomKrbp16+LGjRswMDAo7Kx8EA8fPsTy5ctRr169YhtQJiUlYeTIkTh79izq1q0LPz8/WFhYIDw8HIcPH8bevXtx6tQplC9fXtxm9OjRqFSpElJSUnDlyhXs2LEDp0+fxsGDB2FiYiKu5+PjIwajmWkTCNnY2ODGjRvQ189XPYPO3bhxA0OGDMH79+/RuXNn1KpVCwBw69YtBAcH4/LlywgJCYGnpyd+//13JCYmSspI6fjx40hOTkbnzp0ly5VlnVWVKlXynedP7T7+FJw+fRrbtm1TG1DeuHEDenp64t/Pnz9HeHg45s6dix49eojLhw0bhiFDhhRYHg8ePIgHDx58XAHlixcvEBAQgIoVK2LTpk2wtrYWP+vbty+ePXuGU6dO6TqP9JFITk6GgYEB5HL2pNBU5jIzMjIq7OyQDgUGBuLs2bOYPHmyyoN+5MiR2Lhxo8o2TZs2FQPFHj16wNLSEhs2bMDvv/+Ojh07iuvVqVMHbdu21Uk+09LSoFAoYGhoWGSuwbi4OIwcORJ6enrYu3cvqlWrJvk8ICAAP//8MwCgU6dOOHv2LE6ePKm2dvbgwYMoWbIkmjdvLlmeuay1xfu4+Hn//j1MTU1zXCfruVZ2+yhZsqRkub6+fpH5oVaQ8vTNv27dOrx//x7ff/+9JJhU+uyzz9C/f3/x77S0NKxYsQKtWrVC7dq14eXlhcWLFyMlJUWynZeXF/z8/HDp0iV069YNzs7O6NSpk9iv4tixY+jUqROcnJzQrVs33L59W7K9sv/Jy5cv4efnBzc3NzRp0gTbtm0DANy7dw9ff/01XF1d0aJFCxw4cEAl7y9evMDo0aNRr149uLi4oGfPnirBsbK/x6FDh7Bq1SrxgdS/f388e/Ysx7I7cuQIHBwc8Ndff6l8tnPnTjg4OOD+/fviskePHon5UR7377//Ltluz549cHBwwJUrVzBv3jw0aNAArq6uGDFihEp/JkEQsHLlSjRt2hQuLi7w8fHBgwcP1OY1L2URGhqKJUuWoEmTJnBxcUFCQgJSU1OxfPlytG7dGk5OTqhfvz769OmDc+fO5VhGQMYXyQ8//AAvLy/Url0bTZs2xcSJEyXHExUVhSlTpsDT0xNOTk7o3Lkz9u7dK9lP5n5/27ZtQ8uWLeHi4oJBgwbh1atXEAQBK1asQNOmTeHs7Ixhw4YhJiZGsg/ldfnnn3+iS5cucHJyQvv27XHs2DHJejExMViwYAE6deoENzc3uLu745tvvsHdu3c1LjN1fYmePn2KUaNGoVGjRnByckLTpk0REBCA+Ph4cZ283mOXL19G9+7d4eTkhJYtW2Lfvn25npPMNm7ciBYtWsDZ2Rn9+vWTXLNKuV27e/bswZgxYwAAX3/9NRwcHMRjnzdvHurXrw9BEMT158yZAwcHB2zevFlc9t9//8HBwQHbt28Xl6WkpGDZsmXw9vZG7dq10axZMwQGBqqUBQDs379ffNbUq1cPAQEBePXqlWQdHx8fdOzYEQ8fPoSPjw9cXFzQpEkTBAcH51pOr1+/xq5du9CoUSO1tQZ6enrw9fWV1E6q06BBAwAZ17MuZL4vNm7ciFatWsHJyQmPHj3Ktg/lo0ePMGbMGDRo0ADOzs5o06YNlixZorLv+Ph4TJo0CXXq1IGHhwcmT56MxMTEfOVz586diIiIwKRJk1SCSQAoU6YMhg8fDgDw9vaGqamp2ud6VFQULly4gDZt2sDQ0DBfeckqr/cxAFy/fh2DBw9G3bp14erqik6dOmHTpk0q+46IiMDw4cPh5uaGBg0aYMGCBUhPT881TydOnMCQIUPQuHFj1K5dG61atcKKFStUts3LNf369WsMHz4crq6uaNiwIX744Qe195I64eHh+O6779CmTRs4Ozujfv36GD16tM6uY6XTp0+jX79+4nP3yy+/VLkOrl+/Dl9fX3h4eMDFxQX9+vXDlStXJOso+zg+fPgQ48aNQ926dfHVV19h0qRJYhyhfE5l7guZuQ/lpEmT0K9fPwDAmDFj4ODgAB8fH8n+s9q/fz+6d+8OFxcX1K1bF3379sWff/4pfq7JefXx8cGpU6cQHh4u5i9zH1RNn4vnzp1Dnz59UKdOHbi5uaFNmzZYvHix5icDeayh/OOPP1C5cmW4u7trtP60adOwd+9etGnTBgMHDsSNGzewZs0aPHr0CCtWrJCs++zZM4wbNw69e/dG586dERISgqFDh2LWrFlYsmQJ+vTpAwBYu3Yt/P39ceTIEUlNWHp6OgYPHow6depg/PjxOHDgAGbPng0TExMsWbIEnTp1QuvWrbFz5058++23cHV1ReXKlQFkfDn17t0biYmJ8PHxQalSpbB3714MGzZMPBGZBQcHQyaTYdCgQUhISMC6deswfvx4/PLLL9mWRfPmzWFqaorDhw+jXr16ks8OHTqE6tWrw97eHgDw4MED9OnTB+XKlcPgwYPF7UaMGIGgoCCV/MydOxfm5uYYOXIkwsPDsWnTJsyePRtLly4V1/npp5+watUqNGvWDM2aNcO///6LQYMGITU1VbKvvJbFypUrYWBgAF9fX6SkpMDAwADLly/HmjVr0KNHDzg7OyMhIQG3bt3Cv//+i0aNGmVbRu/evUPfvn3x6NEjfPnll3B0dER0dDROnjyJiIgIWFlZISkpCT4+Pnj+/Dn69u2LSpUq4ciRI5g0aRLi4uIkP2iAjL4lqamp8PHxQUxMDNatWwd/f380aNAAly5dwuDBg/Hs2TNs3boVCxYswLx58yTbP336FAEBAejduze++OIL/PrrrxgzZgzWrVsnHsuLFy9w4sQJtG3bFpUqVcJ///2HXbt2oV+/fggNDUW5cuVyLbOsUlJSxM/79euHMmXKICIiAqdOnUJcXJz4Cziv99iYMWPQvXt38VgmTZqEWrVqoXr16tmeF6V9+/bh3bt3+Oqrr5CcnIwtW7agf//+OHDggNjHT5Nrt27duvDx8cGWLVswdOhQ2NnZAQCqVauGuLg4bNy4EQ8ePBDvh8uXL0Mul+Py5cti/8HLly8DyGhiBACFQoFhw4bhypUr6NmzJ6pVq4b79+9j06ZNePr0KVauXCkex6pVq/DTTz+hXbt26N69O96+fYutW7eib9++2LdvH8zNzcV1Y2Nj8c0338Db2xvt2rXD0aNHsXDhQtjb26NZs2bZltWZM2eQlpam0syaV8+fPwcAWFpaSpa/e/dO7SCYUqVKQSaT5brfPXv2IDk5GT179oShoSEsLCygUChU1rt79y769u0LfX199OrVCzY2Nnj+/DlOnjyJgIAAybr+/v6oVKkSxo4di9u3b+OXX36BlZUVJkyYkIcjznDy5EkYGxujTZs2ua5ramoKLy8vHD16FDExMZKyOnToENLT09GpUyeV7RISElTKUCaToVSpUhrlUZP7GMj4ovbz84O1tTW+/vprlClTBo8ePcKpU6ckz6v09HT4+vrC2dkZEydOxIULFxASEoLKlSvjq6++yjEve/fuhampKQYOHAhTU1NcvHgRy5YtQ0JCAr799lvJuppc00lJSejfvz9evXoFHx8fWFtbY//+/bh48aJGZXPz5k1cu3YNHTp0QPny5REeHo4dO3bg66+/RmhoqNquCXm1Z88eTJkyBdWrV4efnx9KliyJO3fu4OzZs+L5vnDhAgYPHozatWtj5MiRkMlk2LNnD/r374/t27fD2dlZss8xY8bgs88+Q0BAAARBgKOjI968eYNz584hMDAwx/z06tUL5cqVw+rVq8UuKcrnojrLly9HUFAQ3NzcMHr0aBgYGOD69eu4ePEiGjduDECz8zp06FDEx8fj9evXYt/gEiVKAND8ufjgwQP4+fnBwcEBo0ePhqGhIZ49e4arV6/m7aQIGoqPjxfs7e2FYcOGabT+nTt3BHt7e2Hq1KmS5fPnzxfs7e2FCxcuiMtatGgh2NvbC1evXhWXnT17VrC3txecnZ2F8PBwcfnOnTsFe3t74eLFi+Kyb7/9VrC3txdWr14tLouNjRWcnZ0FBwcHITQ0VFz+6NEjwd7eXli2bJm47Pvvvxfs7e2Fv//+W1yWkJAgeHl5CS1atBDS09MFQRCEixcvCvb29kK7du2E5ORkcd1NmzYJ9vb2wr1793Isk7FjxwoNGzYU0tLSxGVv3rwRatSoISxfvlxc1r9/f6Fjx46SNBQKhdCrVy+hdevW4rJff/1VsLe3FwYMGCAoFApx+Q8//CDUrFlTiIuLEwRBEKKiooRatWoJQ4YMkay3ePFiwd7eXvj222/zXRYtW7YUEhMTJcfZuXNnYciQITmWhTo//fSTYG9vLxw7dkzlM2W+N27cKNjb2wv79+8XP0tJSRF69eoluLq6CvHx8YIgCMKLFy8Ee3t7oUGDBmI5CIIgLFq0SLC3txc6d+4spKamisvHjh0r1KpVS1Lmyuvy6NGj4rL4+HihUaNGQteuXcVlycnJYrkovXjxQqhdu7bkvOZUZsrPlNf17du3BXt7e+Hw4cPZlld+7rHM5zUqKkqoXbu2MH/+/GzTUB6L8l58/fq1uPz69euCvb298MMPP4jLNL12Dx8+rHIfK/Nkb28vbNu2TRAEQYiLixNq1KghjB49WvD09BTXmzNnjlCvXj3xuti3b59Qo0YNyfEJgiDs2LFDsLe3F65cuSIIgiCEhYUJNWvWFFatWiVZ7969e4Kjo6Nkeb9+/QR7e3th79694rLk5GShUaNGwqhRo3Issx9++EGwt7cXbt++neN6Ssp7+fz580JUVJTw6tUrITQ0VKhXr56k3JXXSXb/3rx5k2M6ynPp7u4uREVFqf3s119/FZf17dtXcHNzkzyDBUGQPEeWLVsm2NvbC5MnT5asM2LECKFevXoaHX9WdevWFTp37qzx+qdOnRLs7e2FnTt3Spb37NlTaNKkieT+VJa1un+1a9fONa283MdpaWniszM2NlaybuYyVH6HZX5eCIIgdO3aVfjiiy9yzVPWfAiCIEyfPl1wcXGR3IuaXtPK5+yhQ4fEZe/fvxe8vb3V3rea5OfatWsqaWctL0HIKIsWLVrkuP+4uDjBzc1N6NGjh5CUlCT5TFmuCoVCaN26tTBo0CBJWScmJgpeXl7CwIEDxWXKa3js2LEqac2aNUuwt7dXm4+ssYTyeLI+t5X7V3r69KlQo0YNYcSIESrfHVnzmpW68zpkyBC1Zabpc3HDhg2Cvb29yjMhrzRu8k5ISJBEvrk5ffo0AGDgwIGS5YMGDZJ8rvT5559Lpk1wcXEBkNHkk3mUlHL5ixcvVNLM3AnW3Nwctra2MDExQbt27cTldnZ2MDc3l2x/+vRpODs7o06dOuKyEiVKoFevXggPD8fDhw8l6XTr1k3SfKLcTl2eMmvXrh2ioqIkzd5Hjx6FQqFA+/btAWQ0n168eBHt2rUTf0G/ffsW0dHRaNy4MZ4+fYqIiAjJfnv27CmplahTpw7S09MRHh4OADh//jxSU1PRr18/yXpZa/PyUxZdu3ZVGdVvbm6OBw8e4OnTpzmWR1bHjh1DjRo1VGpBAYj5PnPmDMqWLSvpT2ZgYAAfHx+8f/8ef//9t2S7tm3bSvqzKH+Rdu7cWdKnxdnZGampqSpla21tLcmPmZkZunbtitu3byMyMhJAxohcZW15eno6oqOjYWpqCltbW5XuGYD6MsvKzMwMAPDnn39m22yYn3ss83m1srKCra1trtetUqtWrSS1rc7OznBxcRHTyc+1m5WVlRXs7OzEGsirV6+KzcP//fefeE1duXIF7u7u4nVx5MgRVKtWDXZ2dmK6b9++FZuMlU2Qx48fh0KhQLt27STrlSlTBp999plKU6WpqSm6dOki/m1oaAgnJ6dcyyyvz0ulAQMGoGHDhmjWrBkCAgJQokQJLF++XKWWe8SIEdiwYYPKPwsLC43Sad26NaysrHJc5+3bt/j777/x5ZdfqoxUVVcL2rt3b8nfderUQUxMjFgWeZGQkJCnsmvUqBGsrKxw8OBBcdmLFy/wzz//oEOHDmr7dc+YMUOl/DTpzqCkyX18+/ZthIWF4euvv5bUfAPqy1DZEqfk4eGhUTNx5nwo7706deogMTERjx8/lqyryTWtfM5m7qdrYmKCnj175pqXrPlJTU1FdHQ0qlSpAnNzc7XPxLw6d+4c3r17hyFDhqj0Y1SW6507d/D06VN06tQJ0dHR4r3+/v17NGzYEH///bdKrXzWa7ignDhxAgqFAiNGjFC5NjNfF3k5r+po+lxUXpu///672pYKTWnc5K38gnv37p1G64eHh0Mul6uMmCtbtizMzc3FYEepQoUKkr+VQUDWPkbKfMTFxUmWGxkZqTwgS5YsifLly6vcuCVLlpRs//LlSzFQzUzZFPfy5Uux+Q2AysNVeTKy5imrpk2bomTJkjh06BAaNmwIIKNJpmbNmrC1tQWQ0cQlCAJ++ukn/PTTT2r3ExUVJfmCyS0/L1++BABUrVpVsp6VlZXKF1Bey0LdKMnRo0dj+PDhaNOmDezt7dG4cWN06dIFNWrUUHs8Ss+fP0fr1q1zXCc8PByfffaZyk2o7GelPFal7K6r7JbHxsaKXSGAjH7BWa8fZTmGh4ejbNmyUCgU2Lx5M7Zv346wsDBJ/5asTZWA+jLLqnLlyhg4cCA2bNiAAwcOoE6dOvDy8kLnzp3FvGp7jwGAhYUFYmNjc80PkFEWWVWtWhWHDx8GkL9rV506deqIQerly5dRu3ZtODk5wdLSEpcvX0aZMmVw9+5dyY+KZ8+e4dGjR+J9pS5dIKMLgyAI2V5nWTvOq3t+WFhY4N69ezkeQ16fl0ozZsyAra0t9PT0UKZMGdja2qoNhuzt7eHp6ZntfmJiYiTdWYyNjSU/rDS5BpUBRub7PSfZPYdiY2PF8tCUmZlZnspOX18f7du3x/bt2xEREYFy5cqJwWV23Q6cnZ1zHJTz9u1byb1samoqCXJ1XYbqvsM0vT8fPHiApUuX4uLFiyoBfOY+14Bm17TyOZt1PeX3VG6SkpKwZs0a7NmzBxEREZI+0Vnzkx/KriA5ddVR/vjM2uSfWXx8vOQ78EPNOPH8+XPI5XK1/YMzy8t5VUfT52L79u3xyy+/YNq0aVi0aBEaNmwIb29vtG3bNk+DbPMUUFpbW2c7kCM7mvTnASAZeq/J8swXqC62z4vsCji3fRoaGqJVq1Y4fvw4Zs6ciaioKFy9ehVjx44V11H+Ohg0aBCaNGmidj9ZA4j85kcX1P1Cr1u3Lo4fP47ff/8d586dw+7du7Fp0ybMmjVLUov8IWR3/nVZZqtXr8ZPP/2EL7/8EmPGjIGFhQXkcjl++OEHtfvTdJ7WSZMm4YsvvhDLce7cuVizZg1+/vlnyQ8tbe8xXcnPtauOh4cHfv75Z7x48QKXL1+Gh4cHZDIZ3N3dceXKFVhbW0OhUEhqWxUKBezt7bOdX1BZXgqFAjKZDMHBwWrLI+uozvyWmfIH2L1791CzZk2Nt8styNHUqFGjJC0hX3zxBebPny/+XRBzBevynrKzs8OdO3eQkpKi8WCazp07Y+vWrTh48CB8fX0RGhqKzz//PE/ln1n37t0lP8pGjhwpmTpG12WY32stLi4O/fr1g5mZGUaPHo0qVarAyMgI//77LxYuXKhS41TQzwEgYyCdsq+iq6srSpYsCZlMJvZN/BCU6UycODHbayDr/V6URujn9byqo+lz0djYGNu2bcOlS5dw6tQpnD17FocOHcKuXbsQEhKi8TWTp0E5LVq0wK5du3Dt2rVcZ/W3sbGBQqHAs2fPJFH4f//9h7i4ONjY2OQl6QJVsWJFPHnyRGW5skpZlxOTtmvXDnv37sWFCxfw6NEjCIIgaZJX1o4ZGBjkWAORF8r8P336VFL79vbtW5Vfv7oqC0tLS3z55Zf48ssv8e7dO/Tr1w9BQUE5BpRVqlTJ9QeLjY0N7t27B4VCIfkCK4hzBWT8whMEQRK0KX/5Kq/ho0ePon79+vjhhx8k28bFxWncwT87ylF7w4cPx9WrV9GnTx/s2LEDAQEBH/weUzeTwdOnT8V08nLt5hQEe3h4AMho1rp586Y4f1vdunWxY8cOWFtbw9TUVJyXEMi4du7evYuGDRvmuO8qVapAEARUqlRJ49qW/GjatCn09PRw4MABdO3atcDSyc63334raTFRNytHbpTnU91I/oLWokULXLt2DceOHZPUROfExcUFVapUwcGDB9GoUSM8ePBAZeBQXvz4449ITk4W/8787NRU5jLU1fM8q7/++gsxMTFYvny5OEgN0G5mABsbG9y/f1/l2afuu0Gdo0ePomvXrpK3sCUnJ+ukdhL43w/TBw8eqG05Af5X9mZmZlqVvaY/2POiSpUqUCgUePToUbbBbl7Oa3Z51PS5CGT8IGzYsCEaNmyIyZMnY/Xq1ViyZAkuXbqkcfnladqgb775Bqamppg2bRr+++8/lc+fP38uToWgHC2WdWqEDRs2SD4vCpo1a4YbN27g2rVr4rL379/j559/ho2NDT7//HOdpeXp6QlLS0scOnQIhw8fhrOzs+RBVbp0adSrVw+7du3CmzdvVLbPz+vNPD09YWBggK1bt0p+HaqbtkIXZREdHS35u0SJEqhSpUquU060bt0ad+/exfHjx1U+U+a7adOmiIyMxKFDh8TP0tLSsGXLFpiamkpuPF148+aNJD8JCQnYt28fatasibJlywLI+MWf9Vf34cOHc+0vmJOEhASkpaVJltnb20Mul4vl+KHvsRMnTkiO6caNG7h+/TqaNm0KIG/XrnKUp7ovmMqVK6NcuXLYuHEj0tLSxFkl6tSpg+fPn+PIkSNwcXGRNE+3a9cOERER4tyEmSUlJeH9+/cAMq4xPT09LF++XOWcCYKgcu3mV4UKFdCjRw/8+eef2LJli8rnCoUCISEheP36tU7Sy6p27drw9PQU/+XnGWZlZYW6devi119/VelKUtC1TL1790bZsmUxf/58tUFMVFSUZOS+UqdOnXD79m0sW7YMMplM42BUHQ8PD0kZ5iegrFWrFipVqoTNmzerdInSVRkqf1hn3l9KSopkSq28atq0Kd68eYMjR46IyxITE9XeX+qoq9HasmWLRlMgaaJx48YoUaIE1qxZIwn6gf+VQ+3atVGlShWEhISo7T6h6Xep8lmVW5e2vGjVqhXkcjlWrFihUtOozH9ezquJiYnaZ6mmz8WsU+YBEANdTaeKAvJYQ1mlShUsXLgQAQEBaN++vfimnJSUFFy7dg1HjhxBt27dAAA1atTAF198gV27diEuLg5169bFzZs3sXfvXrRq1UrsFFoUDBkyBKGhoRg8eDB8fHxgYWGBffv2ISwsDEFBQTqdqNvAwADe3t4IDQ1FYmKi2v4dM2fOxFdffYVOnTqhZ8+eqFy5Mv777z/8888/eP36NX777bc8pWllZYVBgwZhzZo18PPzQ7NmzXD79m2cOXNGpQZNF2XRoUMH1KtXD7Vq1YKlpSVu3ryJo0ePinN0ZcfX1xdHjx7FmDFj8OWXX6JWrVqIjY3FyZMnMWvWLNSoUQO9evXCrl27MGnSJPz777+wsbHB0aNHcfXqVUyZMiXPfbVyU7VqVUydOhU3b95E6dKl8euvvyIqKkoyvVDz5s2xYsUKTJ48GW5ubrh//z4OHDiQry8gpYsXL2L27Nlo27YtqlativT0dOzfvx96enriVCof+h6rUqUK+vTpgz59+iAlJQWbN2+GpaUlvvnmG3EdTa/dmjVrQk9PD8HBwYiPj4ehoSEaNGiA0qVLA8gIHkNDQ2Fvby/2cXJ0dISpqanY0T6zLl264PDhw5g5cyYuXboEd3d3pKen4/Hjxzhy5AjWrVsHJycnVKlSBf7+/li0aBHCw8PRqlUrlChRAmFhYThx4gR69uwJX19fnZTXpEmT8OLFC8ydOxfHjh1DixYtYG5ujlevXuHIkSN4/Phxvl+TePnyZZUvUiCjRju3vsp5MW3aNPTp0wdffPEFevXqhUqVKiE8PBynTp3C/v3787y/oKAgLF++HJs3b0b9+vWzXc/CwgIrVqzAkCFD0LVrV8mbcm7fvo2DBw+qbSXr3LkzVqxYgd9//x3u7u459ok7c+aM2oEN7u7uWt27mcnlcnz33XcYNmwYunbtim7duqFs2bJ4/PgxHj58iPXr12udhpubGywsLDBp0iT4+PhAJpNh//79WgWsPXv2xLZt2/Dtt9/i33//RdmyZbF//36Nm/mbN2+O/fv3w8zMDJ9//jn++ecfnD9/Xm2f8vwwMzPD5MmTMW3aNHTv3h0dO3aEubk57t69i6SkJCxYsAByuRxz587F4MGD0bFjR3Tr1g3lypVDREQELl26BDMzM6xevTrXtJTX3dy5c9G4cWPo6elp/XrTzz77DEOHDsXKlSvx1VdfoXXr1jA0NMTNmzdhbW2NcePG5em81qpVC4cOHcK8efPg5OQkTqWl6XNxxYoVuHz5Mpo1awYbGxtERUVh+/btKF++vNhipIk8T93esmVL/Pbbb1i/fj1+//137NixA4aGhnBwcMCkSZMko8Dmzp2LSpUqYe/evThx4gTKlCkDPz8/jBw5Mq/JFqgyZcpg586d+PHHH7F161YkJyfDwcEBq1evVnm7gi4oO8DKZDJJc7fS559/jl9//RXLly/H3r17ERMTAysrKzg6OmLEiBH5SlP5ftGdO3fi0qVLcHZ2RkhICPz8/CTr6aIsfHx8cPLkSZw7dw4pKSmoWLEi/P39c/2iLlGiBLZt24agoCAcP34ce/fuRenSpdGwYUNxIIexsTG2bNmChQsXYu/evUhISICtrS3mzZsn/pjRpapVq2L69OkIDAzEkydPUKlSJXEyY6WhQ4ciMTERBw4cwKFDh+Do6Ig1a9Zg0aJF+U7XwcEBjRs3xh9//IGIiAiYmJjAwcEBwcHBktfrfch7rGvXrpDL5di0aROioqLg7OyM6dOnS5pTNb12y5Yti1mzZmHNmjWYOnUq0tPTsXnzZjGg9PDwQGhoqORhpq+vD1dXV5w/f17lIaf8tb9x40bs378fx48fh4mJCSpVqgQfHx9J8/aQIUNQtWpVbNy4UZyrs3z58mjUqJFkQmBtmZiYIDg4GHv27MG+ffuwcuVKJCUlie/yXrhwYa4DlLKjrtYTyOjnp8uAskaNGvj555/x008/YceOHUhOTkbFihXVPrc08f79e8hkshzn51NycXHBgQMHsH79ejGAlcvlsLOzw5AhQ9T+QK1atSqcnJxw8+ZNtXNPZrZs2TK1y+fNm6ezgBIAmjRpgk2bNmHFihUICQmBIAioXLmyxiOmc1OqVCmsXr0aCxYswNKlS2Fubo7OnTujYcOG+f5xZGJigo0bN2LOnDnYunUrjI2N0alTJzRt2lTyAzI7U6dOhVwux4EDB5CcnAx3d3ds2LBBo2011aNHD5QuXRpr167FypUroa+vDzs7O8mLBOrXr49du3Zh5cqV2Lp1K96/f4+yZcvC2dkZvXr10iid1q1bw8fHB6Ghofjtt98gCILWASWQMedlpUqVsHXrVixZskR8xitH4OflvH711Ve4c+cO9uzZg40bN8LGxgZeXl4aPxe9vLwQHh6OX3/9FdHR0ShVqhTq1auHUaNGqbz1Jycy4UP1kCX6yHh5eaF69epYs2ZNYWeFqFjo3r07KlasmG0wR0QfL750mYiIClxCQgLu3r0rvnaTiIqX4v+2ciIiKnRmZma4detWYWeDiAoIayiJiIiISCvsQ0lEREREWmENJRERERFphQElEREREWmFg3J04Nq1axAEAQYGBoWdFSIiItJQamoqZDJZrq+TptyxhlIHBEHI81sJBEFASkpKgb3CrKD3zzSKVhrF4RiYRtHZP9MoWmkUh2Moqmnk5/ub1GMNpQ4oayadnJw03ub9+/e4c+cOPv/8c5iamuo8TwW9f6ZRtNIoDsfANIrO/plG0UqjOBxDUU3j5s2bBZKPTxFrKImIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIiEgrHOVNH7309HSkpqbme/vk5GTxv3J5wfzGKug0isMxMI2is3+mUbTSKA7HUBhpGBkZQU9Pr0DSIVUMKOmjJQgCXr9+jZiYGK32o1AooK+vj5cvXxbYQ66g0ygOx8A0is7+mUbRSqM4HENhpPH69WtYWlqifPnykMlkBZIe/Q8DSvpoKYNJa2trmJqa5vuBkZ6eXuC/Zgs6jeJwDEyj6OyfaRStNIrDMXzoNAwNDZGcnIw3b94AACpUqFAg6dH/MKCkj1J6eroYTJYuXVrrfQGAsbFxgT7kCjKN4nAMTKPo7J9pFK00isMxFEYaZmZmAIA3b97A2tqazd8FjINy6KOk7DNZUG9bICKij5/yO0KbfvakGQaU9FFjvxgiIsoOvyM+HAaURERERKQVBpREQIGNOMyL33//HYMGDUK9evVQu3ZteHl5YcaMGXjy5ElhZ43+34kTJ+Dg4ICwsLDCzoqKOnXqICgoSPzbx8cHfn5+Gm9/6dIlrF69WuP1w8LC4ODggCNHjojLvLy8MHv2bI33kZ/8BAUFwc3NTSdp6JK7uztCQkLEv/Na/gUhLCwMQUFBiIiIkCy/dOkSHBwccPPmTXFZTEwMxo0bhwYNGsDBwQEnTpzApEmT0LFjR53n66+//srTtUYfBw7KoWJHoRAgl2vezKGnpwcTE5NCSVtp4cKFCA4ORps2bTBnzhxYWVnh+fPn+PXXXxEQEIB9+/bpJH/06Zg5c2aefij99ddfCAkJwdChQzVa39raGrt27ULVqlXzmcP85adHjx5o1qxZgaRZ3ISHh2P58uVo3rw5ypUrJy6vVasWdu3ahWrVqonLNm3ahL///hvz589H2bJlYWtrC3t7e7x//17n+frrr7+wceNGja81+jgwoKRiRy6XYeG2KwiLiP+g6VYqVxLj+3rkebvTp08jODgYw4cPx5gxY8TldevWxZdffok//vhDl9mkIiA9PR0KhQIGBgYFlsbnn39eYPtOSkqCsbExXF1dCyyN7JQvXx7ly5f/4Ol+TARByHEQipmZmcq5e/LkCapXrw4vLy9xNLSFhUVBZpOKmcJv5yMqAGER8XgUHvtB/+U3gA0JCUGZMmUwfPhwtZ+3aNFC/P/k5GTMmzcPjRs3hpOTE7p06YLjx49L1lc2U50/fx6dOnWCs7Mz+vXrh7CwMMTExGDMmDFwd3dHq1atcOjQIcm2yma6gwcPonXr1nBxccHQoUMRGxuL8PBwDB8+HB4eHujQoQMuXbok2VahUGDlypXw8vJC7dq10bZtW+zcuVOyjrK58t69e+jTpw9cXFzQsWNHnD17Nscyyq75cOvWrXB2dkZ8fEbZC4KA9evXo02bNqhduzZatmyJjRs3SrZZvnw5GjVqhPv37+eYh9TUVHz//feoV68ePDw8MGXKFLx7904lDzExMZg8eTLq168PZ2dn9O7dG5cvX1ab/71796JNmzZwcnLC3bt3ERcXh2nTpqFJkyZwcnJCs2bNEBAQkGNZABndI7p16wZXV1d0794dN27cyLXMXr9+jTFjxsDT0xNOTk7w8vLCDz/8ACDjvCxfvhzv37+Hg4MDHBwc0L9/f7G83NzccOPGDfTq1QtOTk7Ytm2b2iZvpXXr1qFJkyZwcXHBsGHDxLkAAfXNrQAwfPhw+Pj4ZJufzJ9lbfIODw/H6NGj4eHhAVdXV/j6+uLevXuSdVq1aoXZs2dj27ZtaNGiBTw8PDB8+HC8ffs2x7J+8+YNJk+ejJYtW8LZ2RmtW7fG4sWLkZKSkuN2mrp27RoGDRoEd3d3uLm5oUePHjh37pz4eUpKCpYsWYL27dvDxcUF7dq1w4EDByT7UN7zp0+fRufOneHk5ISTJ0/i66+/BgB0795dLEdA9Rw4ODjg2LFjuHbtGhwdHcX11DV5R0REYOLEifD09ISzszPatm2LTZs2iZ/v27cPffr0Qb169VC3bl34+PhIrs/Vq1dj5cqVas8tADx69AjDhg0Tz+WQIUPw/PlzSR52796NDh06wNnZGfXr10efPn3U3gP0YbGGspiTyWRQCArIZdLfDuqW0YeXlpaGq1evonXr1hrVVo0fPx5nz56Fv78/7OzssH//fowaNQpBQUHw9PQU14uMjMT8+fMxbNgw6OvrY+7cuRg/fjxMTExQp04d9OzZEz///DMmTJgAFxcX2NjYiNvevn0b0dHRmDhxIhISEjB37lxMnz4d4eHhaN++PXx9fREcHIxRo0bhjz/+QIkSJQAAgYGB2Lx5M4YNGwY3NzecOnUKM2fORFpaGvr16yfuPzU1FePHj8fXX3+N4cOHIzg4GKNHj8bJkydhbm6u9rg7dOiAuXPnIiYmBpaWluLygwcPolmzZihZsiQA4Pvvv8cvv/yCoUOHwsXFBVevXsXChQthZGSEPn36SMp94sSJavNQqlQpAMDixYuxY8cOjBo1Co6OjggNDcWiRYsk+UpPT8fgwYPx4sULjB8/HmXKlMGWLVvg6+uLDRs2wN3dXVz31q1bCA8Px5gxY2Bubo4KFSpg3rx5OHv2LMaNGwcbGxtERkbizJkzOV4Dd+7cgb+/Pzw9PfHtt9/i1atX8Pf3zzXAmThxIt68eYNp06ahdOnSePXqFW7dugUgoxn59evXOHjwoBgcZO4GkpqainHjxmHAgAEICAiQnIOsjh8/DhsbG3z33XeIi4vDwoULMWrUKOzatSvH/GWmLj/KOQWzSkhIgI+PD+RyOWbNmgUjIyOsWrUK/fr1w2+//QZra2tx3ZMnT+LZs2eYMWMGoqOjMW/ePMyZMwdLlizJNi/R0dGwtLTE5MmTYW5ujqdPnyIoKAiRkZGYN2+exsekzpUrV9C/f3+4urpi7ty5MDc3x61bt/Dy5UtxnTFjxuDKlSsYMmQIHBwccPbsWUyYMAHm5uaSpv83b95g7ty5GDZsGCpUqIBSpUphxowZmD17NubNmwc7O7ts87Fr1y78+OOPSEhIyLGrRHR0NHr16gUACAgIQKVKlfDs2TNJwBcWFoauXbuiSpUqSElJQWhoKPr27YvffvsNVapUwRdffIGoqCiEhoaqnNsXL16gd+/eqF69OubPnw+ZTIbVq1djwIABOHLkCAwNDfH3339j6tSpGDRoEJo1a4akpCTcuHFD/FFJhYcB5SdALpNj2cUQhMe9BgDYmJfH6AaDCjlXBGTUbqWkpKBixYq5rnv37l0cO3YMs2bNQu/evQEATZs2RXh4OFauXCkJKGNjY7F161ZUr14dQMaXzZw5czB48GCMGDECAODk5ITjx4/jxIkTYm0UkPEFvXr1alhZWQEA7t27h5CQEMyYMQNdu3aFsbExypcvj06dOuHChQto1aoV3r59i61bt8LX1xejRo0CADRu3BjR0dFYsWIF+vTpIzajKQNK5Zehra0tWrZsiTNnzmQ7AKBNmzaYO3cujh07hp49ewLIqJX6559/sHTpUgDA8+fPsXXrVsyaNUv80vP09ERSUhJWrFiBXr16iV+UqampCAgIgJeXl0oeunTpgpiYGGzfvh2DBw8Wa/maNGmCfv36SQY4nDp1Cjdu3BBr5JTH7e3tjZCQEElAGRsbi927d0ve2HHz5k107NgRX3zxhbisQ4cO2V8EANauXYsKFSpg8eLFKFGiBPT09GBkZISpU6fmuN3NmzcxduxYtG/fXlzWtWtXAP9rRpbL5WJTaHp6OpKSkiTllXnb7AYmvXv3DsHBwWKQX758eQwYMABnz54Vyyg36vKTnT179uDly5cIDQ0V+wTWrVsXLVq0wKZNmzBhwgRxXUEQsGrVKhgaGgLIuIbWrFkDhUKRbRDl4OCAb7/9Vvzb3d0dJiYmmDRpEmbMmKFV/+sff/wRn332GTZt2iTeH40bNxY/v3jxIk6ePIng4GB4eHjA2NgYTZo0QWRkJIKCgiQBZWxsLIKDg+Hi4iJZBgDVq1eHk5NTtvlwdXWFubk5BEGAi4tLthOAb9y4EVFRUTh8+DAqVaoEAGjYsKFknZEjR4r/r1Ao0KhRI9y4cQN79+7FmDFjUK5cOZQrV07tuV2+fDksLCywYcMGGBkZAcgo75YtW+KXX35B3759cePGDVhaWkrOSfPmzbM9NvpwWEX1iQiPe40n0S/wJPqFGFhS0aHJXGlXrlwBALRt21ayvF27drhz5w4SExPFZdbW1mIwCUAcOJE56DQ3N4eVlRVev5ZeDzVq1BCDyczbZv7iUC5Tbnvjxg2kpqaqzdvbt2/x9OlTcZlcLpfsq1KlSjA2NlYZiZpZqVKl4OnpidDQUHHZoUOHYGpqKnYJOH/+PACgdevWSEtLE/95enoiMjISr1690jgP9+/fR1JSEry9vSX5aN26teTvy5cvw8zMTBIoGRgYwNvbG//8849kXXt7e5XXvzk6OmLv3r1Yv3497t+/n+3xZ3b9+nU0b95c8qWftdzVcXR0REhICLZv345nz55plFZmmg6EqV+/vhhMAhnXjaWlJa5fv57nNDVx+fJlVK9eXTLAxNLSEp6enuI9o1S3bl0xmASAatWqITU1FVFRUdnuXxAEbNy4Ee3bt4ezszNq1aqF8ePHIy0tDS9evMh3vhMTE3H9+nV07do12wDu3LlzsLS0RP369VWu6Tt37ohvhVEec+ZgsiBcuHABDRo0EINJdR49eoQRI0bA09MTNWvWRK1atfDkyRPJMyA7586dE/twKo/V3Nwcjo6OYm26o6MjYmJiMGnSJJw7d07y3KPCxRpKokJkaWkJIyMjSRNXdmJjY2FgYKDS3FimTBkIgoD4+HixuTZr07GyOT3zFz0A8X23mWW3beblyi9l5bbKmpAyZcqo5A3IqIlVMjY2lnypK9PImo+sOnTogEmTJiEyMhJly5ZFaGgovL29xZqM6OhoCIKABg0aqN3+1atXYtO+kZFRjnmIjIwEAJXXemY9vri4OLWv/ixdujTi4uJy3BYApk+fLtbIBAYGokKFChgyZAi++uqrbMshMjJSEvADGU2GynLIzpIlS7BkyRIsXboUs2bNgq2tLcaOHasSJKtjYmIidm3IjbrysLKyEstU1+Li4tSWbenSpfHgwQPJsqzXdtbrWJ1NmzZhwYIF+Oabb1C/fn2Ym5vj5s2bmD17dq7XbG75VigUkib5rKKjoxETEwNnZ2e1n0dGRooDlNSVga7FxMRIfqhmlZCQgEGDBsHKygqTJk1CxYoVYWRkhGnTpmlUVtHR0di0aZOkT6aS8jnUsGFDsXuNr68vjIyM0KZNG0yZMiXHrhhU8BhQEhUifX19uLu74+LFi0hLS4O+fva3pIWFBVJTUxEbGysZffnff/9BJpOpBIsfkvJBHhUVJZme5L///pN8ro2WLVvC0NAQhw8fRuPGjXHnzh2MHTtW/NzCwgIymQzbt29X2x/V1tZW47TKli0LIPvjyZymutqtqKgoleBFXS10yZIlMXXqVEydOhX37t3D5s2bMWvWLNjb26NOnTrZ5i3rQJKEhIRcv7Ctra0xb948KBQK3Lp1C6tWrUJAQACOHDmCypUr57htXt42oq483r59K5apMvDNOgo5Li4uX281sbCwUDtXa1RUlE5GKR85cgReXl4YN26cuOzRo0da77dkyZKQy+WSAUtZWVhYwMrKCqtXr0ZKSgoMDQ0lTfOZf1h8iDfCWFpa5pjff/75B69fv8aaNWtQo0YNcXl8fLxGI/MtLCzQrFkztT+oMv+g6dKlC7p06YK3b9/i999/x7x586Cvry8OMqPCwSZvokI2cOBAREZGZjvR7+nTpwEAHh4ZUxJlHVV75MgR1KxZU2dzaeaHk5MTDAwMVPJ2+PBhlC5dWidzFZqZmaF58+YIDQ1FaGgorKysJE34yibsmJgYODk5qfzLblCHOvb29jA2NlYZQX/s2DHJ3x4eHkhISMCff/4pLktLS8OJEyfyPKWOg4MDJk+eDCDngMXZ2RmnTp2SNHeqG2mdHblcDmdnZ/j7+yMtLU1s/jYwMNDJyOVLly5JBkhcuHABMTExYnOsMrDIfIzR0dH4999/JfvRND8eHh64f/8+Hj9+LC6LjY3F+fPnxXtGG0lJSSo/ULKOss4PU1NTuLq6Yv/+/ZJzmZmnpyfevn0LAwMDODo6onbt2pJrOmste1bKfGtTk5pZw4YNcfHixWxbVJR9bjOX19WrVxEeHq6SL3XntmHDhnjw4AEcHR1V7l91g4qsrKzQo0cPNGrUSHL+qXCwhpKokDVr1gzffPMNgoKC8PDhQ3To0AGlSpVCWFgYfv31V8THx6NZs2aoUaMGWrdujfnz5yMpKQm2trb47bffcO3aNSxfvrxQj8HKygr9+vXD+vXrYWhoCFdXV5w+fRoHDx7E9OnTs+0jllcdO3bEyJEjER4ejrZt20pqdG1tbdG3b19MnDgRvr6+cHFxQWpqKp4+fYpLly5h5cqVGqdjaWmJ3r17Izg4GMbGxuIo76zTlzRv3hzOzs6YMGECxo0bJ47yjoyMRGBgYK7p9O7dG97e3qhevTr09PSwb98+GBgYZFs7CQBDhgxB9+7dMXbsWPTt2xcvX77E+vXrc2zyjo+Ph6+vL7p06QJbW1ukpqZiy5YtYv80IKM/YVpaGjZt2gQ3NzeYmpqq9PnURIkSJTB48GAMHjwY8fHxWLhwIZydncV+puXLl4eLiwtWrFiBEiVKQKFQYPPmzSo17FnzY2Zmpjao6NatGzZu3Ag/Pz/4+/uLo7z19fUlg83yy9PTE5s3b8bWrVtRtWpV/Pbbb/nqg6qOcuT8gAED8NVXX8HCwgL//vsvSpUqhe7du6NRo0Zo0aIFhgwZgq+//hq1atVCcnIyHj58iGfPnuH777/Pcf9Vq1aFnp4efv31V+jr60NPTy/HwTm5GTBgAPbv349+/fph2LBhqFy5Ml68eIGnT59iwoQJcHV1hampKWbNmoUhQ4YgIiICQUFBklp+IPtzO3r0aHTv3h2+vr7o2bMnypQpg//++w9//fUX6tSpg44dO2LZsmWIiYlBvXr1ULp0ady/fx9nz57FgAED8n1cpBsMKKlYqlTuwzf/apPmhAkT4Obmhm3btmHKlClITEyEtbU1GjduDF9fX3G9H3/8EYsXL0ZwcDBiYmJgZ2eHZcuWoUWLFmLtQGGZOHEiSpYsid27d2P16tWwsbGRjEjXBeUUQZGRkWpHQ0+bNg22trbYtWuXGLDY2tpqNGglq3HjxiE9PR3r1q2DQqGAt7c3xo0bh4kTJ4rr6OnpYe3atQgMDMSPP/6I9+/fo1atWli3bp0YqOXE3d0d+/btQ1hYGORyOezt7bF69WrJAJOsHB0dsWTJEixatAijR49G9erVsWTJEsl1kpWRkRHs7e2xZcsWvHr1CsbGxqhduzbWr18vNpu2aNECX331FdauXYuoqCjUqVMHa9asyUOJZfD29kb58uUxc+ZMxMXFwdPTE7NmzZKss3DhQkybNg1TpkxB6dKl4e/vj8OHD0tqNrPmp27dutiyZYtKemZmZtiyZQvmz5+P6dOnQ6FQwN3dHVu3bkWFChWyrf3T1IgRIxAdHY1ly5YByJhxYNq0aTp5y0udOnWwefNmLF26FJMnT4ZcLkf16tXh7+8vrrNs2TKsWbMGv/zyC5YtW4aSJUuievXq6NatW677t7KywowZM7Bu3Tr89ttvSEtLU5mfMy9KlSqFHTt2YNGiRVi4cCESExNhY2MjNlGXKVMGP/30EwIDAzF8+HBUrVoVs2bNwrp16yT7ad68udpz+9lnn+GXX34R+/m+f/8eZcuWRd26dcW5MZ2cnLBp0yYcPnwYCQkJKF++PHx9fTFs2LB8HxfphkwQBKGwM/GxU04Om5dffu/fv8edO3dQs2ZNmJqa6jxPyv07OjrCxMQE3x77AU+iM0Yk2paqjAWtp+gsjYI6hpzSSEpKwpMnT2BrawtjY2PJNvl9/aEuZJe2cgoWY2NjndXWfcj9M42ilUZxOAamUXT2X5zTyOm7Asjf9zepxz6UVOzkNZhMT09HYmKi1jUZ+UmbiIioOGBASYSMCXiJiIgofxhQEhEREZFWGFASERERkVYYUBIRERGRVhhQEhEREZFWGFASERERkVYYUBIRERGRVhhQEhEREZFWGFASERERkVYYUBIBkMsL/1b4/fffMWjQINSrVw+1a9eGl5cXZsyYgSdPnhR21uj/nThxAg4ODggLCyvsrKioU6cOgoKCxL99fHzg5+en8faXLl3C6tWrNV4/LCwMDg4OOHLkiLjMy8sLs2fP1ngf+clPUFAQ3NzcdJJGXty7dw/jxo1D48aNUbt2bXh6emLkyJG4cOGCuM6UKVPg4OAg/mvcuDGGDh0qeX/2nj17JOtk/jdjxox858/BwQHr16/XeP1Lly7BwcFBfPUgkbb0CzsDRLomKBSQ5SFA1NPTg4mJSaGkrbRw4UIEBwejTZs2mDNnDqysrPD8+XP8+uuvCAgIwL59+3SSP/p0zJw5M08/lP766y+EhIRg6NChGq1vbW2NXbt2oWrVqvnMYf7y06NHDzRr1qxA0szOiRMnEBAQgOrVqyMgIABVqlTB27dvcezYMQwaNAgXLlyAgYEBAKBy5cpYuHAhBEHAs2fPsGzZMvj4+CA0NBRly5YV97lu3TqULFlSkk7p0qXzncddu3ahYsWK+d6eSFsMKKnYkcnleLNvKVKiPmwtkmHpSrDu6p/n7U6fPo3g4GAMHz4cY8aMEZfXrVsXX375Jf744w8d5pKKgvT0dCgUCjEIKQiff/55ge07KSkJxsbGcHV1LbA0slO+fHmUL1/+g6UXGRmJb7/9Fh4eHli7di0MDQ3Fz9q0aYMePXpAX/9/X6WZy8XNzQ2VKlVC37598dtvv8HX11dcr1atWrCystI6f4V5LogyK/x2PqICkBIVhpTXTz7sv3wGsCEhIShTpgyGDx+u9vMWLVqI/5+cnIx58+ahcePGcHJyQpcuXXD8+HHJ+pMmTULHjh1x/vx5dOrUCc7OzujXrx/CwsIQExODMWPGwN3dHa1atcKhQ4ck2yqbSQ8ePIjWrVvDxcUFQ4cORWxsLMLDwzF8+HB4eHigQ4cOuHTpkmRbhUKBlStXwsvLC7Vr10bbtm2xc+dOyTrK5sp79+6hT58+cHFxQceOHXH27Nkcyyi75tutW7fC2dkZ8fHxAABBELB+/Xq0adMGtWvXRsuWLbFx40bJNsuXL0ejRo1w//79HPOQmpqK77//HvXq1YOHhwemTJmCd+/eqeQhJiYGkydPRv369eHs7IzevXvj8uXLavO/d+9etGnTBk5OTrh79y7i4uIwbdo0NGnSBE5OTmjWrBkCAgJyLAsgo3tEt27d4Orqiu7du+PGjRu5ltnr168xZswYeHp6wsnJCV5eXvjhhx8AZJyX5cuX4/3792Lza//+/cXycnNzw40bN9CrVy84OTlh27Ztapu8ldatW4cmTZrAxcUFw4YNw5s3b8TPsmtqHT58OHx8fLLNT+bPsjZ5h4eHY/To0fDw8ICrqyt8fX0lzcwA0KpVK8yePRvbtm1DixYt4OHhgeHDh+Pt27c5lvXPP/+MhIQETJ48WRJMKjVo0CDHFo7atWsDgE66SezduxcODg64du0aBg4cCFdXVwQGBgJQ3+R96tQp9O7dGy4uLqhbty58fHxw+/ZtyTpxcXEYN24c6tSpg/bt2+ep2ZwoM9ZQEhWitLQ0XL16Fa1bt9aotmr8+PE4e/Ys/P39YWdnh/3792PUqFEICgqCp6enuF5kZCTmz5+PYcOGQV9fH3PnzsX48eNhYmKCOnXqoGfPnvj5558xYcIEuLi4wMbGRtz29u3biI6OxsSJE5GQkIC5c+di+vTpCA8PR/v27eHr64vg4GCMGjUKf/zxB0qUKAEACAwMxObNmzFs2DC4ubnh1KlTmDlzJtLS0tCvXz9x/6mpqRg/fjy+/vprDB8+HMHBwRg9ejROnjwJc3NztcfdoUMHzJ07FzExMbC0tBSXHzx4EM2aNRObDr///nv88ssvGDp0KFxcXHD16lUsXLgQRkZG6NOnj6TcJ06cqDYPpUqVAgAsXrwYO3bswKhRo+Do6IjQ0FAsWrRIkq/09HQMHjwYL168wPjx41GmTBls2bIFvr6+2LBhA9zd3cV1b926hfDwcIwZMwbm5uaoUKEC5s2bh7Nnz2LcuHGwsbFBZGQkzpw5k+M1cOfOHfj7+8PT0xPffvstXr16BX9/f6SkpOS43cSJE/HmzRtMmzYNpUuXxqtXr3Dr1i0AGc3Ir1+/xsGDB7Fp0yYAkARJqampGDduHAYMGICAgADJOcjq+PHjsLGxwXfffYe4uDgsXLgQo0aNwq5du3LMX2bq8mNmZqZ23YSEBPj4+EAul2PWrFkwMjLCqlWr0K9fP/z222+wtrYW1z158iSePXuGGTNmIDo6GvPmzcOcOXOwZMmSbPPy999/w9raGg4ODhrnPzNlIJk5H0DGD7C0tDTJMj09Pchkslz3OW7cOPTq1Qt+fn7ZBrOHDh3C2LFj0bJlSyxatAgGBga4evUqIiIi4OjoKK43c+ZMdOnSBcuWLcOxY8ewaNEi1KhRA02bNs3rodInjgElUSGKiYlBSkqKRn2f7t69i2PHjmHWrFno3bs3AKBp06YIDw/HypUrJQFlbGwstm7diurVqwMA3rx5gzlz5mDw4MEYMWIEAMDJyQnHjx/HiRMnxNooIOMLevXq1WJz3L179xASEoIZM2aga9euMDY2Rvny5dGpUydcuHABrVq1wtu3b7F161b4+vpi1KhRAIDGjRsjOjoaK1asQJ8+faCnpwfgfwGlsh+cra0tWrZsiTNnzqBjx45qj71NmzaYO3cujh07hp49ewLIqJX6559/sHTpUgDA8+fPsXXrVsyaNQu9evUCAHh6eiIpKQkrVqxAr169xD6FqampCAgIgJeXl0oeunTpgpiYGGzfvh2DBw8Wa/maNGmCfv36ISIiQszXqVOncOPGDbFGTnnc3t7eCAkJkQSUsbGx2L17NypUqCAuu3nzJjp27IgvvvhCXNahQ4fsLwIAa9euRYUKFbB48WKUKFECenp6MDIywtSpU3Pc7ubNmxg7dizat28vLuvatSuA/zUjy+Vysek0PT0dSUlJkvLKvG12NW7v3r1DcHCwGOSXL18eAwYMwNmzZ8Uyyo26/GRnz549ePnyJUJDQ1GtWjUAGd1FWrRogU2bNmHChAniuoIgYNWqVWJNY3h4ONasWQOFQpFtf9OIiIg8901MS0uDIAh4/vw5Zs6cCQMDA7Rs2VKyTqNGjVS2CwwMRJcuXXLdf+/evTFkyJBsPxcEAQsWLECjRo2wYsUKcbm6vqetW7fGqFGjkJ6eDjc3N5w7dw5Hjx5lQEl5xiZvoiJAk1qJK1euAADatm0rWd6uXTvcuXMHiYmJ4jJra2sxmAQgDpzIHHSam5vDysoKr1+/luyvRo0akr5dym0bNmyosky57Y0bN5Camqo2b2/fvsXTp0/FZXK5XLKvSpUqwdjYWBKoZVWqVCl4enoiNDRUXHbo0CGYmpqKXQLOnz8PIOMLMi0tTfzn6emJyMhIvHr1SuM83L9/H0lJSfD29pbko3Xr1pK/L1++DDMzM0mgZGBgAG9vb/zzzz+Sde3t7SXBJAA4Ojpi7969WL9+Pe7fv5/t8Wd2/fp1NG/eXAzQAdVrQh1HR0eEhIRg+/btePbsmUZpZabpQJj69etLBps0bNgQlpaWuH79ep7T1MTly5dRvXp1MZgEAEtLS3h6eor3jFLdunUlzdbVqlVDamoqoqKickxDk/tT6cGDB6hVqxZq166N9u3b4/nz5/jxxx9hb28vWW/jxo3YvXu35J+yjJW1l8p/CoVCsm3z5s1zzMPjx4/x+vVrfPnll7nmt3HjxuL/y2Qy2NnZqTwTiDTBGkqiQmRpaQkjIyO8fPky13VjY2NhYGCg0txYpkwZCIKA+Ph4sbk2a9Oxsjk966hSQ0NDJCcnS5Zlt23m5covZeW2sbGxYl6y5g3IqIlVMjY2VumLZmBgoJKPrDp06IBJkyYhMjISZcuWRWhoKLy9vWFkZAQAiI6OhiAIaNCggdrtX716JTbtGxkZ5ZiHyMhIAKqjbrMeX1xcnNqRuaVLl0ZcXFyO2wLA9OnTYWFhgQ0bNiAwMBAVKlTAkCFD8NVXX2VbDpGRkSqDOczMzMRyyM6SJUuwZMkSLF26FLNmzYKtrS3Gjh2rEiSrY2JiInZtyI268rCyshLLVNfi4uLUlm3p0qXx4MEDybKs13bW61idcuXK4fHjxxrnp0qVKli8eDFkMhnKli0La2trtQGpg4NDtoNyVqxYgeXLl4t/Dx8+HN988434t7rjzUx5v2VtZlcn6zPBwMAACQkJuW5HlBUDSqJCpK+vD3d3d1y8eBFpaWmS0aJZWVhYIDU1FbGxsbCwsBCX//fff5DJZCpfDB+SMsiNiopCuXLlxOX//fef5HNttGzZEoaGhjh8+DAaN26MO3fuYOzYseLnFhYWkMlk2L59u9r+qLa2thqnpZzeJbvjyZymutqtqKgoleBFXVBRsmRJTJ06FVOnTsW9e/ewefNmzJo1C/b29qhTp062ecs6kCQhISHXgNza2hrz5s2DQqHArVu3sGrVKgQEBODIkSOoXLlyjtvmpYZOXXm8fftWLFNl4JuamipZJy4uLk/pKFlYWKidqzUqKkpyn+RXvXr1cOHCBTx48EBS658dIyMjODk5aZVmz549JbWQuQWQWSnvt8yDoYgKGpu8iQrZwIEDERkZme2k0qdPnwYAeHh4AIDKqNojR46gZs2aOptLMz+cnJxgYGCgkrfDhw+jdOnSOpmr0MzMDM2bN0doaChCQ0NhZWUlacJXNmHHxMTAyclJ5V92gzrUsbe3h7GxscoI+mPHjkn+9vDwQEJCAv78809xWVpaGk6cOJHnaVwcHBwwefJkAMCjR4+yXc/Z2RmnTp1Cenq6uEzdSOvsyOVyODs7w9/fH2lpaWLzt4GBQa4DezRx6dIlcdQ9AFy4cAExMTFwcXEBAHHKn8zHGB0djX///VeyH03z4+Hhgfv370tqEWNjY3H+/HnxntFGjx49YGZmhnnz5qkEwUDG8WbubqIL5cqVk1y7mtQ0ZmZnZ4fy5ctjz549Os0XUU5YQ0lUyJo1a4ZvvvkGQUFBePjwITp06IBSpUohLCwMv/76K+Lj49GsWTPUqFEDrVu3xvz585GUlARbW1v89ttvuHbtmqR5rDBYWVmhX79+WL9+PQwNDeHq6orTp0/j4MGDmD59uqS/nzY6duyIkSNHIjw8HG3btpXU6Nra2qJv376YOHEifH194eLigtTUVDx9+hSXLl3CypUrNU7H0tISvXv3RnBwMIyNjcVR3s+fP5es17x5czg7O2PChAkYN26cOMo7MjJSnM4lJ71794a3tzeqV68OPT097Nu3DwYGBtnWTgLAkCFD0L17d4wdOxZ9+/bFy5cvsX79+hybvOPj4+Hr64suXbrA1tYWqamp2LJlC8zNzcURv9WqVUNaWho2bdoENzc3mJqaqvT51ESJEiUwePBgDB48GPHx8Vi4cCGcnZ3Ffqbly5eHi4sLVqxYgRIlSkChUGDz5s0qNexZ82NmZgY7OzuV9Lp164aNGzfCz88P/v7+4ihvfX19yWCz/CpbtiwWLFgAf39/9OnTB3379kXlypURHR2NEydO4MCBAzh//nye5xT9999/VY65ZMmSkr6g+SWTyfDtt99i7NixGDVqFLp06QJDQ0P8888/cHJykkxFRqQrDCipWDIsXemjSnPChAlwc3PDtm3bMGXKFCQmJsLa2hqNGzeWTIb8448/YvHixQgODkZMTAzs7OywbNkytGjRQhyRW1gmTpyIkiVLYvfu3Vi9ejVsbGwkI9J1QTlFUGRkpNrR0NOmTYOtrS127dolBiy2trYaDVrJaty4cUhPT8e6deugUCjg7e2NcePGYeLEieI6enp6WLt2LQIDA/Hjjz/i/fv3qFWrFtatWyeZmiU77u7u2LdvH8LCwiCXy2Fvb4/Vq1fnGFQ4OjpiyZIlWLRoEUaPHo3q1atjyZIlkuskKyMjI9jb22PLli149eoVjI2NUbt2baxfv17sx9eiRQt89dVXWLt2LaKiolCnTh2sWbMmDyWWwdvbG+XLl8fMmTMRFxcHT09PzJo1S7LOwoULMW3aNEyZMgWlS5eGv78/Dh8+LKnZzJqfunXrYsuWLSrpmZmZYcuWLZg/fz6mT58OhUIBd3d3bN26FRUqVJDU5OZXq1atsHv3bgQHB2PRokWIjo6Gubk5PDw8EBISgpIlS+b5/svcJ1KpYcOGKvOm5lf79u1hbGyM1atXY+zYsTAyMoKjo6PKQDMiXZEJgiAUdiY+dsoJevPSb+b9+/e4c+cOatasCVNTU53nSbl/R0dHmJiY4NtjP+BJ9AsAgG2pyljQeorO0iioY8gpjaSkJDx58gS2trYwNjaWbJPf1x/qQnZpK6dgMTY21llt3YfcP9MoWmkUh2NgGkVn/8U5jZy+K4D8fX+TekWyD+WjR4/EtwA0atQIgYGBufalefPmjTiHl5ubG5o2bYpx48YhPDxcZd2IiAiMGjUKbm5uqFevHqZOncpRbcVIXoPJ9PR0JCYm6qQmo7ACWSIiosJU5Jq8Y2Nj0b9/f1StWhVBQUGIiIgQ+4zNmDEj2+3+/fdfHD9+HF9++SVcXFwQHR2NVatWoUePHjh48KDYrJOamio2NSxatAhJSUlYsGABxo0bl6/mHSoess7zRkRERJorcgHlzp078e7dOyxfvlyc+iA9PR2zZs2Cn5+fZAqPzDw8PHD48GFJJ313d3c0b94c+/btw6BBgwAAR48exYMHD3Do0CGxg7e5uTl8fX1x48YNODs7F+wBEhERERUzRa597syZM+KbFZTatWsHhUKBc+fOZbudubm5yhx+5cuXh5WVlWQurjNnzsDBwUEyWrBRo0awtLQUp2chIiIiIs0VuYDy8ePHKlNDmJubo2zZsnl6WwEAPHnyBFFRUZIRk+r2L5PJYGtrm+f9ExEREVERbPKOi4tTecMEkPE2BOXr3TQhCALmzp0La2tryfQicXFxat8oktf9q0vv/fv3Gq+vnAhX1xPiZt1/cnJythNeJyYmQptB/gV9DDmlkZycDIVCgfT0dK0H0yjLQBAEnQzMKYw0isMxMI2is3+mUbTSKA7HUFhppKenQ6FQIDExUW1feUEQ8vWGJlJV5AJKXQkKCsLFixexbt26ApvSJrPU1FTcuXMnz9s9ffpU95nJ5OXLl9m+9u7Jkyc6CQYL+hiyS0NfXz/X183lhS73VVhpFIdjYBpFZ/9Mo2ilURyO4UOnkZycjLS0tBxbIJXvdCftFLmA0tzcXDK5rVLW9xfn5Oeff8aKFSvw/fffi69jy7x/dVMExcbG5uutEEoGBgb4/PPPNV4/MTERT58+RdWqVQvklXnK/VesWDHbdWxtbbWuoSzIY8gpjeTkZLx8+RJGRkZq5xbLC0EQkJycDCMjowL7pVrQaRSHY2AaRWf/TKNopVEcjqEw09DX10eVKlXUvk3q4cOHBZKPT1GRCyjt7OxUfknEx8cjMjJS7Wu3sjp+/Di+++47jB49Gt27d1e7//v370uWCYKAJ0+eoFGjRvnOt0wmy1dNqImJSYHWoOb0OjZdBYEFfQzq0pDL5ZDL5dDT09N6glxl04tMJivQyXYLMo3icAxMo+jsn2kUrTSKwzEUVhp6enqQy+UwMTFRW/nA5m7dKXKDcpo2bYrz588jLi5OXHbkyBHI5fJcA75Lly5h7Nix6NGjB0aMGJHt/u/evStpQr1w4QJiYmLQrFkznRwDUX78/vvvGDRoEOrVq4fatWvDy8sLM2bMwJMnTwo7a/T/Tpw4AQcHB4SFhRV2VlTUqVMHQUFB4t8+Pj7w8/PTePtLly5h9erVGq8fFhYGBwcHHDlyRFzm5eWF2bNna7yP/OQnKCgIbm5uOkkjL+7du4dx48ahcePGqF27Njw9PTFy5EhcuHABANCzZ09xejp15s+fD1dXV7x79w6XLl2Cg4OD2n85vUIzN3ktf3XnkCi/ilwNZe/evbFlyxaMGDECfn5+iIiIQGBgIHr37i2Zg7J///54+fIljh8/DiDj7TojRoxA1apV0aVLF/zzzz/iulZWVqhSpQoAoE2bNlizZg1GjRqFsWPHIjExEYGBgWjevDnnoPyEyQv5DTcLFy5EcHAw2rRpgzlz5sDKygrPnz/Hr7/+ioCAAOzbt69Q80cfn5kzZ+bpuv7rr78QEhKCoUOHarS+tbU1du3ahapVq+Yzh/nLT48ePT74j/8TJ04gICAA1atXR0BAAKpUqYK3b9/i2LFjGDRoEC5cuIC2bdti1apViIyMRNmyZSXbKxQKHDp0CF5eXihRooS4fN68eSotb+oGjWpq+fLlage1En0IRS6gtLCwwKZNmzBnzhyMGDECJUqUQPfu3REQECBZTznCV+n69euIj49HfHw8+vTpI1n3iy++wPz58wFk9HVct24d5s6di7Fjx0JfXx/e3t6YMkX7d1tT0aAQFJDLNP8i1dPT01nzf17TBoDTp08jODgYw4cPx5gxY8TldevWxZdffok//vhDJ3mjokM58tTAwKDA0shLn+68Ur4r2dXVtcDSyE758uVRvnz5D5ZeZGQkvv32W3h4eGDt2rWSARxt2rRBjx49oK+vj7Zt22LFihU4dOgQ+vfvL9nH33//jYiICHTs2FGyvHr16jp5h7TyfDg6Omq9L6L8KnIBJQBUq1YNGzduzHGdLVu2SP7u1q0bunXrptH+y5UrJ2kaouJFLpNj2cUQhMe9/qDp2piXx+gG2Td5ZSckJARlypTB8OHD1X7eokUL8f+Tk5OxePFihIaGIjY2FnZ2dhg5ciS8vLzEdSZNmoRbt25hypQpmDdvHp49ewZnZ2fMnz8fZmZmmDlzJs6ePQsrKyuMHTsW7du3F7f18fGBqakpOnXqhGXLliEiIgINGzbEggULEBsbi+nTp+P69euwsbHBjBkzUL9+fXFbhUKB1atXY/fu3Xjz5g0qVaqEAQMGoHfv3uI6QUFBCAkJwc6dO/Hdd9/h9u3bqFy5Mr799ls0adIk2zJS5ivr61G3bt2KwMBAnDt3DiVLloQgCAgJCcHPP/+M8PBwlCtXDj4+PhgwYIC4zfLly7Fhwwbs2LEDs2fPzjYPqampCAwMxP79+5Geno42bdpIjlcpJiYGCxYswMmTJ5GYmAhHR0cEBASgdu3aKvlv27YtVq9ejRcvXmDXrl347LPPEBgYiNOnTyMmJgZWVlZwd3fHkiVLsi0LIKN7xKJFi/Dy5Us4ODiofS1t1jJ7/fo15s2bh7///hvx8fEoW7YsWrVqhSlTpiAoKAjLly8HADg4OADI+EGzZs0aLF++HBs3bsSmTZvw/fff4/bt2/D390ebNm3QsmVL/PTTT2jbtq0k7XXr1mHTpk2Ii4uDp6cnZs2aBWtrawAZTdlff/01du/eLQmAhg8fjvj4eGzZskVtfurVqyd+FhISgmvXronbhoeHY8GCBTh37hzS09Ph4eGBiRMnitsCQKtWrdCiRQtUq1YN69atQ1xcHOrXr4+5c+eKr+ZV5+eff0ZCQgImT56sdjRwgwYNkJ6ejooVK8LNzQ2hoaEqAWVoaCgsLS1zvMY1pSy/NWvWYM+ePfjzzz/Fc+Xl5YXmzZtLrodr164hKCgI//zzDwRBwOeffw5/f39JF7Lk5GTMnTsXBw4cgJGRETp37oxx48apvCyEKCe8WqhYCo97jSfRLwo7G7lKS0vD1atX0bp1a41qq8aPH4+zZ8/C398fdnZ22L9/P0aNGoWgoCB4enqK60VGRmL+/PkYNmwY9PX1MXfuXIwfPx4mJiaoU6cOevbsiZ9//hkTJkyAi4sLbGxsxG1v376N6OhoTJw4EQkJCZg7dy6mT5+O8PBwtG/fHr6+vggODsaoUaPwxx9/iE14gYGB2Lx5M4YNGwY3NzecOnUKM2fORFpaGvr16yfuPzU1FePHj8fXX3+N4cOHIzg4GKNHj8bJkyezba7r0KED5s6di5iYGMk0WAcPHkSzZs3EZsLvv/8ev/zyC4YOHQoXFxdcvXoVCxcuhJGRkaTlIi0tDRMnTlSbh1KlSgEAFi9ejB07dmDUqFFwdHREaGgoFi1aJMlXeno6Bg8ejBcvXmD8+PEoU6YMtmzZAl9fX2zYsAHu7u7iurdu3UJ4eDjGjBkDc3NzVKhQAfPmzcPZs2cxbtw42NjYIDIyEmfOnMnxGrhz5w78/f3h6emJb7/9Fq9evYK/vz9SUlJy3G7ixIl48+YNpk2bhtKlS+PVq1e4desWgIxm5NevX+PgwYPYtGkTAOmgvdTUVIwbNw4DBgxAQEBAtlORARkDI21sbPDdd98hLi4OCxcuxKhRo7Br164c85eZuvyYmZmpXTchIQE+Pj6Qy+WYNWsWjIyMsGrVKvTr1w+//fabGMgCwMmTJ/Hs2TPMmDED0dHRmDdvHubMmZNjAP/333/D2tpaEpxmp0OHDpgzZw5evHiBypUrA8gou6NHj6Jt27Yq97hCoUBaWppkmZ6enkYDRaZPn47OnTtjxYoV2XZtuHLlCvr37w9XV1fMnTsX5ubmuHXrFl6+fClZb+nSpWjRogUWLFiAf//9FytWrECVKlVUWvuIcsKAkqgQxcTEICUlJcfpnZTu3r2LY8eOYdasWWKtX9OmTREeHo6VK1dKAsrY2Fhs3boV1atXBwC8efMGc+bMweDBg8UBa05OTjh+/DhOnDghqVFJSEjA6tWrxVqbe/fuISQkBDNmzEDXrl1hbGyM8uXLo1OnTrhw4QJatWqFt2/fYuvWrfD19cWoUaMAAI0bN0Z0dDRWrFiBPn36iKM6lQGlsh+cra0tWrZsiTNnzqg0CSq1adMGc+fOxbFjx9CzZ08AGbVS//zzD5YuXQoAeP78ObZu3YpZs2ahV69eAABPT08kJSVhxYoV6NWrl/jFm5qaioCAALFmN3MeunTpgpiYGGzfvh2DBw8WB7Y0adIE/fr1Q0REhJivU6dO4caNG1i3bp1Y+9S4cWN4e3sjJCREElDGxsZi9+7dkunJbt68iY4dO+KLL74Ql2V+EYM6a9euRYUKFbB48WKUKFECenp6MDIywtSpU3Pc7ubNmyo10l27dgXwv2ZkuVwuNmOnp6cjKSlJUl6Zt81uYNK7d+8QHBwsBvnly5fHgAEDcPbsWY1r6NTlJzt79uzBy5cvERoaKr4VrW7dumjRogU2bdqECRMmiOsKgoBVq1aJNY3h4eFYs2YNFApFtkFZRESERvcnALRt2xbz5s3DwYMHMWzYMADAn3/+iZiYGHTq1EllfeW1nNmYMWOyba3IzMvLS3Js6vz444/47LPPsGnTJvH+a9y4scp6zs7OmDp1KpKSktC8eXP8/fffOHr0KANKypMiN8qb6FOkSY3ElStXAEClebFdu3a4c+eOZJJ6a2trMZgEIA6cyBx0mpubw8rKCq9fS7sG1KhRQ9IEqNw285yuymXKbW/cuIHU1FS1eXv79q1kVgW5XC7ZV6VKlWBsbCwJ1LIqVaoUPD09ERoaKi47dOgQTE1NxS4B58+fBwC0bt0aaWlp4j9PT09ERkbi1atXGufh/v37SEpKgre3tyQfrVu3lvx9+fJlmJmZSQIlAwMDeHt7SwYGAoC9vb3KXLeOjo7Yu3cv1q9frzKdWXauX7+O5s2bS6ZdyVru6jg6OiIkJATbt2/Hs2fPNEorM00HwtSvX18ysKRhw4awtLTE9evX85ymJi5fvozq1atLXrFraWkJT09P8Z5Rqlu3rqTZulq1akhNTUVUVFSOaWg6tUypUqXQqFEjyXV68OBBVKxYER4eHirrL1iwALt375b8U053JwiC5DrO+paX5s2b55iXxMREXL9+HV27ds11ip6sQWa1atVUngtEuWFASVSILC0tYWRkpNIEpU5sbCwMDAxUmhvLlCkDQRAkLwTI2nSsbGrLOoLU0NBQ5a0V2W2bebnyS1m5rfK1pWXKlFHJG5BRE6tkbGys0hfNwMAg17dndOjQAX/99RciIyMBZPRL8/b2FudajY6OhiAIaNCgAWrVqiX+GzhwIABIAkojI6Mc86BMo3Tp0mqPRykuLk5lHeV2mac+U7ct8L9myw0bNqBTp05o3rw5tm/fnmM5REZGqvT5MzMzy3HOWQBYsmQJGjRogKVLl6J169Zo27Ytjh07luM2SiYmJpLRyTlRVx5WVlZimepaXFyc2rItXbq0yut0s17bWa9jdcqVK6fR/anUsWNHPHjwAHfv3kViYiJOnjyJjh07qg1Kq1WrBicnJ8k/ZRP93r17xWvY2dkZs2bNUjm+nMTFxUGhUEia/LOT9blgYGCQaxcKoqzY5E1UiPT19eHu7o6LFy8iLS0tx07wFhYWSE1NVXlr1H///QeZTKbVdCPaUga5UVFRkum9/vvvP8nn2mjZsiUMDQ1x+PBhNG7cGHfu3MHYsWPFzy0sLCCTybB9+3a1/VFtbW01Tks57Ut2x5M5TXW1W1FRUSrBi7qAomTJkpg6dSqmTp2Ke/fuYfPmzZg1axbs7e1Rp06dbPP29u1bybKEhIRcA3Jra2vMmzcPCoUCt27dwqpVqxAQEIAjR46I/f2yk5fJn9WVx9u3b8UyVQa+qampknXi4uLyNcm0hYWF2rlao6KiNH67Wk7q1auHCxcu4MGDB5Ja/+y0atUKpqamCA0NRY0aNfD+/ftsu3LkpEWLFti9ezeAjL6WWV8ekVtZlSxZEnK5HG/evMlz2kT5wRpKokI2cOBAREZGZjup9OnTpwFAbDLLOgnxkSNHULNmzQJ7/aUmnJycYGBgoJK3w4cPo3Tp0jqZq9DMzAzNmzdHaGgoQkNDYWVlJWnCVzZhx8TEqNT6ODk5ZTuoQx17e3sYGxuL89wqZa3R8/DwQEJCAv78809xWVpaGk6cOJHnKXUcHBwwefJkABnz6mbH2dkZp06dkkyblpeJqeVyOZydneHv74+0tDSx+VtXtVKXLl2S1JYrXxzh4uICAOKUP5mPMTo6Gv/++69kP5rmx8PDA/fv35e8YS02Nhbnz59X28ycVz169ICZmRnmzZunEgQDGcebubuJqakpvLy8EBoaigMHDsDe3l6jAT1ZlSpVSrx2a9eurXE/zsz5cHV1FWcpICporKEkKmTNmjXDN998g6CgIDx8+BAdOnRAqVKlEBYWhl9//RXx8fFo1qwZatSogdatW2P+/PlISkqCra0tfvvtN1y7dk2cYqWwWFlZoV+/fli/fj0MDQ3h6uqK06dP4+DBg5g+fbrOXrPWsWNHjBw5EuHh4Wjbtq2kRtfW1hZ9+/bFxIkT4evrCxcXF6SmpuLp06e4dOkSVq5cqXE6lpaW6N27N4KDg8X5/UJDQ/H8+XPJesoXIkyYMAHjxo0TR3lHRkYiMDAw13R69+4Nb29vVK9eHXp6eti3bx8MDAyyrZ0EgCFDhqB79+4YO3Ys+vbti5cvX2L9+vU5NnnHx8fD19cXXbp0ga2tLVJTU7FlyxaYm5uLU/dUq1YNaWlp2LRpE9zc3GBqaqrS51MTJUqUwODBgzF48GDEx8dj4cKFcHZ2FvuZli9fHi4uLlixYgVKlCgBhUKBzZs3q9SwZ82PmZmZ2tfvduvWDRs3boSfnx/8/f3FUd76+voq0/fkR9myZbFgwQL4+/ujT58+6Nu3LypXrozo6GicOHECBw4cwPnz5yW14h07dsTBgwfx8uVLSS16Vg8ePFAJ9oyMjFCzZk2t8w1AHJk/YMAAfPXVV7CwsMC///6LUqVKqX01MZE2GFBSsWRj/uEmPtZFmhMmTICbmxu2bduGKVOmIDExEdbW1mjcuLHkVWw//vgjFi9ejODgYMTExMDOzg7Lli1DixYtxBG5hWXixIkoWbIkdu/ejdWrV8PGxkYyIl0XlFMERUZGqh0NPW3aNNja2mLXrl1iwGJra6vRoJWsxo0bh/T0dKxbtw4KhQLe3t4YN24cJk6cKK6jp6eHtWvXIjAwED/++CPev3+PWrVqYd26dRpNMu3u7o59+/YhLCwMcrkc9vb2WL16tWSASVaOjo5YsmQJFi1ahNGjR6N69epYsmRJjq/sMzIygr29PbZs2YJXr17B2NgYtWvXxvr168X+mC1atMBXX32FtWvXIioqCnXq1FGZ91MT3t7eKF++PGbOnCmZhzKzhQsXYtq0aZgyZQpKly4Nf39/HD58WFKzmTU/devWVZl/GMioud6yZQvmz5+P6dOnQ6FQwN3dHVu3bkWFChV0UjvXqlUr7N69G8HBwVi0aBGio6Nhbm4ODw8PhISEoGTJkpL7r3HjxrC0tERsbGyOzd3KGunMqlSpolIznl916tTB5s2bsXTpUkyePBlyuRzVq1eHv7+/TvZPlJlMEAShsDPxsbt58yYA5OmNB+/fv8edO3dQs2ZNlb4xuqDcv6OjI0xMTPDtsR/EeRltS1XGgtbavxmooI8hpzSSkpLw5MkT2NrawtjYWLJNft5WoyvZpa2cgsXY2FhntXUfcv9Mo2ilURyOgWkUnf0X5zRy+q4A8vf9TeqxDyUVO3kNJtPT05GYmKiTmozCCmSJiIgKE7/9iACVOd6IiIhIcwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwo6aPGSQqIiCg7/I74cBhQ0kdJOYnw+/fvCzknRERUVCm/I9S9jpV0ixOb00dJT08PlpaW4ntqTU1N8/UeYCBj2iDle5ALcm60gkyjOBwD0yg6+2caRSuN4nAMHzoNQRCQnJyMN2/ewNLSssDSo/9hQEkfLeU7gZVBZX4pFAqkpaVBX18fcnnBVNoXdBrF4RiYRtHZP9MoWmkUh2MorDQsLS3F7woqWAwo6aMlk8lQoUIFWFtbIzU1Nd/7SUxMxOPHj1GlShWYmJjoMIcfLo3icAxMo+jsn2kUrTSKwzEURhrm5uasmfyAGFDSR09PT0+rh4ZyUnMjIyO1r+bShYJOozgcA9MoOvtnGkUrjeJwDIWRBoPJD4uDcoiIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIiEgrDCiJiIiISCsMKImIiIhIKwwoiYiIqFiQyWQwMTGBTCYr7Kx8cvQLOwNERERE2hIUCpiYmMDR0VH8WyZnvdmHwoCSiIiIPnoyuRxv9i1FSlQYDEtXgnVX/8LO0ieFASUREREVCylRYUh5/aSws/FJYl0wEREREWmFASURERERaYUBJRERERFphQElEREREWmFASURERERaYUBJRERERFphQElEREREWmlSAaUjx49wsCBA+Hq6opGjRohMDAQKSkpuW63bds2+Pn5oUGDBnBwcMCRI0dU1rl06RIcHBxU/gUEBBTEoRAREREVe0VuYvPY2Fj0798fVatWRVBQECIiIjB//nwkJSVhxowZOW67f/9+AECzZs2wb9++HNedN28e7OzsxL9LlSqldd6JiIiIPkVFLqDcuXMn3r17h+XLl8PS0hIAkJ6ejlmzZsHPzw/lypXLcVu5XI6wsLBcA8rq1avDyclJhzknIiIi+jQVuSbvM2fOoGHDhmIwCQDt2rWDQqHAuXPnctxWzpfAi2QyGUxMTCCTyQo7K0RERFTMFbkI7PHjx5KmaAAwNzdH2bJl8fjxY52lM2TIENSsWRNNmzbFggULkJSUpLN9FzZBoYCJiQkcHR1hbGxc2NkhIiKiYq7INXnHxcXB3NxcZbmFhQViY2O13n/JkiXxzTffoG7dujAyMsLFixcREhKCx48fY82aNfneryAIeP/+vcbrJyYmSv6rK8qayTf7liIlKgymdm6watE32zwIgpDvtArqGJhG0ds/0yhaaRSHY2AaRWf/xSEN5XefujRz+p4TBIEteTpS5ALKgubo6AhHR0fx74YNG8La2hqzZ8/GjRs34OzsnK/9pqam4s6dO3ne7unTp/lKLzvKmsmUqDCkvH4Cg9I22a775MkTndzYuj4GpqHd/g0MDKCvL72109LSkJqaqrM0ChrTKBr7ZxpFK43icAwFlYbyuy8rTb7nDA0NdZ6fT1GRCyjNzc0RHx+vsjw2NhYWFhYFkma7du0we/Zs3Lp1K98BpYGBAT7//HON109MTMTTp09RtWpVtb+q8isvv7RsbW21rqEsiGNgGvnfv52dHcwtLKCXpT9xukKBlORknu9ikkZxOAamUXT2XxzSyO67L7fvuYcPH+o0H5+yIhdQ2tnZqfSVjI+PR2RkpErfyqJEJpPB1NQ0z9uZmJjkaztd0NUN/SGOgWloxtjYGHpyOZZdDEF43GsAgI15eYxuMIjnuximURyOgWkUnf0XpzQyp5UTNnfrTpEblNO0aVOcP38ecXFx4rIjR45ALpejUaNGBZJmaGgoAHAaISo2wuNe40n0CzyJfiEGlkRERAWlyNVQ9u7dG1u2bMGIESPg5+eHiIgIBAYGonfv3pI5KPv374+XL1/i+PHj4rKbN28iPDwcb9++BQBcv34dAGBlZYV69eoBAMaPH4/PPvsMjo6O4qCcjRs3olWrVgwoiYiIiPKhyAWUFhYW2LRpE+bMmYMRI0agRIkS6N69u8qrERUKBdLT0yXLtm3bhr1794p/h4SEAADq1auHLVu2AMiY0PzAgQMICQlBamoqbGxsMHToUAwZMqSAj4yIiIioeCpyASUAVKtWDRs3bsxxHWWAmNn8+fMxf/78HLfz8/ODn5+fNtkjIiIiokyKXB9KIiIiIvq4MKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirRTJgPLRo0cYOHAgXF1d0ahRIwQGBiIlJSXX7bZt2wY/Pz80aNAADg4OOHLkiNr1IiIiMGrUKLi5uaFevXqYOnUqEhISdH0Y9JGRyWRQCArJsqx/ExERkSr9ws5AVrGxsejfvz+qVq2KoKAgREREYP78+UhKSsKMGTNy3Hb//v0AgGbNmmHfvn1q10lNTcU333wDAFi0aBGSkpKwYMECjBs3DmvWrNHpsdDHRy6TY9nFEITHvYaNeXmMbjCosLNERERU5BW5gHLnzp149+4dli9fDktLSwBAeno6Zs2aBT8/P5QrVy7HbeVyOcLCwrINKI8ePYoHDx7g0KFDsLOzAwCYm5vD19cXN27cgLOzs64PiT4y4XGv8ST6RWFng4iI6KNR5Jq8z5w5g4YNG4rBJAC0a9cOCoUC586dy3FbuTz3wzlz5gwcHBzEYBIAGjVqBEtLS5w+fTrf+SYiIiL6VBW5gPLx48eSYA/IqEEsW7YsHj9+XCD7l8lksLW11cn+iYiIiD41Ra7JOy4uDubm5irLLSwsEBsbq5P9lyxZUuf7FwQB79+/13j9xMREyX91RSaTwcTEROM8CIKQ77QK6hgKK43k5GS1ZadtOWVOo6COI7djUK7D81080igOx8A0is7+i0Ma2X335fbcEwQBMplM5/n5FBW5gPJjlZqaijt37uR5u6dPn+o0HyYmJnB0dNRo3SdPnujkxtb1MRRWGi9fvpR0tVDSVTkBBX8c2R0DwPNdHNMoDsfANIrO/j/mNLL77tPkuWdoaKjz/HyKilxAaW5ujvj4eJXlsbGxsLCw0Mn+1U0RFBsbiwoVKuR7vwYGBvj88881Xj8xMRFPnz5F1apVNa5R1ERefmnZ2tpqXWNVEMdQWGlUrFhR7efallPmNArqOHI7BoDnuzilURyOgWkUnf0XhzSy++7L7bn38OFDnebjU1bkAko7OzuVvozx8fGIjIxU6fuY3/3fv39fskwQBDx58gSNGjXK935lMhlMTU3zvJ2JiUm+ttMFXd3QH+IYPkQaRkZG2aatKwV9HNkdgzJtXSgu57s4pFEcjoFpFJ39F6c0MqeVEzZ3606RG5TTtGlTnD9/HnFxceKyI0eOQC6XaxXwZd7/3bt3JVXuFy5cQExMDJo1a6b1/omIiIg+NUWuhrJ3797YsmULRowYAT8/P0RERCAwMBC9e/eWzEHZv39/vHz5EsePHxeX3bx5E+Hh4Xj79i0A4Pr16wAAKysr1KtXDwDQpk0brFmzBqNGjcLYsWORmJiIwMBANG/enHNQEn1ACoUAuVwm+Zu1BUREH6ciF1BaWFhg06ZNmDNnDkaMGIESJUqge/fuCAgIkKynUCiQnp4uWbZt2zbs3btX/DskJAQAUK9ePWzZsgVARl/HdevWYe7cuRg7diz09fXh7e2NKVOmFPCREVFmcrkMC7ddQVhEPCqVK4nxfT0KO0tERJRPRS6gBIBq1aph48aNOa6jDBAzmz9/PubPn5/r/suVK4egoKD8Zo+IdCQsIh6PwrWfDoyIiApXketDSUREREQfFwaURERERKQVBpREREREpBUGlERERESkFQaURERERKQVBpREVOTIZDIoBIVkWda/iSh/FApB5W/OAUvaKpLTBhERyWVyLLsYgvC417AxL4/RDQYVdpaIigXOAUsFgQElERVZ4XGv8ST6RWFng6jY4RywpGts8iYiIiIirTCgpE+eTCaDiYkJ+xARERHlE5u86ZMmKBQwMTGBo6NjYWeFiIjoo8WAkj5pMrkcb/YtRUpUGEzt3GDVom9hZ4mIiOijwyZv+uSlRIUh5fUTpMa+KeysEBERfZQYUBIRERGRVhhQEhFRtjjJ/KeF55vyi30oiYgoR5xk/tPC8035wYCSiIhyxUnmPy0835RXbPImIiIiIq0woCwGFAqhsLNAhYyTsxMVvKzPWj57if6HTd7FgFwuw8JtVxAWEQ/3Gtb4uj0n6f6UcHJ2og8j87O2UrmSGN/Xo7CzRFRkMKAsJsIi4vEoPBaVrM0KOyv0gXFydqIPR/msJSIpNnkTFQOcnJ2IiAoTA0oiIiIi0goDSiL6JHECZyqK1A384WA7+hiwDyURfbI4gTMVNRz4Qx8rBpRE9EnjBM5U1HDgD32M2ORNRERERFphQElEREREWmFASURERERaYUBJRERERFphQElEREREWmFASURERERaYUBJRESkBZlMBhMTE05ATp80zkNJRESUR5YljSAoFJDJ5TAxMYGjoyMAiMuIPjUMKImIiPLIzMQAMrkcb/YtRUpUGADAsHQlWHf1L9yMERUSBpRERET5lBIVhpTXTwo7G0SFjvXyRERERKQVBpREREREpBUGlERERESkFQaURERERKQVBpREREREpBUGlERERFSs6JWwhEJQSJZl/Zt0i9MGERERUbEiNy4BuUyOZRdDEB73Gjbm5TG6waDCzlaxxoCSiIiIiqXwuNd4Ev2isLPxSWCTN9FHRqEQCjsLREREEqyhJPrIyOUyLNx2BWER8XCvYY2v2zsWdpaIiOgTxxpKoo9QWEQ8HoXH4s3b94WdFSIqBmQyGUxMTCCTyQo7K/SRYg0lERHRJ8qypBEEhQLGxsZwdGRrB+UfA0oiIqJPlJmJAWRyOd7sW4qUqDCY2rnBqkXfws4WfYTY5E1ERPSJS4kKQ8rrJ0iNfVPYWaGPFANKIiIiItIKA0oiIiIqcBz4U7yxDyUREREVKEGhgImJiTjwR1AoIJOzTqs4YUBJREREBSrzwB/D0pVg3dW/sLNEOsaAkoiIiAqccuAPFU+sbyYiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirTCgJCIiIiKtMKAkIiIiIq0woCQiIiIirRTJgPLRo0cYOHAgXF1d0ahRIwQGBiIlJSXX7QRBwNq1a9G8eXM4OzujV69e+OeffyTrXLp0CQ4ODir/AgICCuhoiKgokclkMDExgUwmK+ysEBEVG0XuXd6xsbHo378/qlatiqCgIERERGD+/PlISkrCjBkzctw2ODgYy5Ytw/jx4+Hg4IBt27Zh0KBB2L9/PypXrixZd968ebCzsxP/LlWqVIEcDxEVHYJCARMTEzg6OhZ2VoiIipUiF1Du3LkT7969w/Lly2FpaQkASE9Px6xZs+Dn54dy5cqp3S45ORlr1qzBoEGDMGDAAACAh4cH2rZti/Xr1+O7776TrF+9enU4OTkV4JEQUVEjk8vxZt9SpESFwdTODVYt+hZ2loiIioUi1+R95swZNGzYUAwmAaBdu3ZQKBQ4d+5ctttdvXoVCQkJaNeunbjM0NAQ3t7eOHPmTEFmmYg+IilRYUh5/QSpsW8KOytERMVGkQsoHz9+LGmKBgBzc3OULVsWjx8/znE7ACrbVqtWDS9fvkRSUpJk+ZAhQ1CzZk00bdoUCxYsUPmciKiok8lkUAgKleXqlhERFaQi1+QdFxcHc3NzleUWFhaIjY3NcTtDQ0MYGRlJlpubm0MQBMTGxsLY2BglS5bEN998g7p168LIyAgXL15ESEgIHj9+jDVr1uQ734Ig4P379xqvn5iYKPlvfikHGORHYmIiBEHQOB1122f+b0EoyDQ0Lbu8lFNO+8j83/z6UOc7u+0z/1cb2R1HcnKy+F91n2tzDB/j+c5t/8pyWnYxBOFxrwEANublMbrBIK3LKiUlBSYmJkhLS8s2D0W9nHSZRl7uvfyWTW73RUHee7kpiHtPF9dQbmnklqYgCBygpyNFLqAsaI6OjpIO+Q0bNoS1tTVmz56NGzduwNnZOV/7TU1NxZ07d/K83dOnT/OVnpI2AwyePHmi0QPKwMAAjo61oK+vJy5LS0tHePgDANofgyYKIg1Ny07TctLEx3C+c6OLc5Hdcbx8+VL8b+ZuL0raHMPHeL5zoyyn8LjXeBL9QvJZfo/DwMAAtWo5wsTERO050Hb/6nwMz5C83Hv5LZvc7ouCvPdyUxD3ni6vIW3ub0NDQ53k4VNX5AJKc3NzxMfHqyyPjY2FhYVFjtulpKQgOTlZUksZFxcHmUyW47bt2rXD7NmzcevWrXwHlAYGBvj88881Xj8xMRFPnz5F1apV813jBKivOdSUra2tRr8OZTIZ9PX1sHDbFYRFxKNSuZIY39cDVapUwaNHj7Q+hpzoqpzU0bTsNC2nnHxM5zs7ujwX2R1HxYoV8ejRI1SsWFHt59ocw8d4vnPbf3blBOT/OGQyGfT09HMdvPQxlJMu08jLvadN2aujvC8K8t7LTUHce7q4hnJLI7c0Hz58qJP0qQgGlHZ2dip9JePj4xEZGanSPzLrdkDGr48aNWqIyx8/foyKFSvC2Ni4YDL8/2QyGUxNTfO8nYmJSb6204W8PpjCIuLxKPx/3Q6UgfuHOIaPqZxy29fHfhwFeQzKaypr15XMaRe0j+l8Z1dOyrS1oRy8ZFDapkD2n3VfxekZouvr9EM+a7NTEPfeh7ifc0uTzd26U+QG5TRt2hTnz59HXFycuOzIkSOQy+Vo1KhRttu5u7vDzMwMhw8fFpelpqbi2LFjaNq0aY5phoaGAgCnESIqZJx0nIjo41Tkaih79+6NLVu2YMSIEfDz80NERAQCAwPRu3dvyRyU/fv3x8uXL3H8+HEAGb/g/Pz8EBQUBCsrK9jb22PHjh2IiYmBr6+vuN348ePx2WefwdHRURyUs3HjRrRq1YoBJVEhsSxpBEGhgLGxMScdJyL6CBW5gNLCwgKbNm3CnDlzMGLECJQoUQLdu3dXeTWiQqFAenq6ZNngwYMhCAJCQkLw9u1b1KxZE+vXr5e8Jad69eo4cOAAQkJCkJqaChsbGwwdOhRDhgz5IMdHRKrMTAw46TgR0UesyAWUQMbckRs3bsxxnS1btqgsk8lk8PPzg5+fX7bb5fY5ERWe3PrtERFR0VTk+lASUeFTKASVv9mvkYiIslMkayiJqHDJ5TKVaaKIiIiyw4CSiNTKOk0UERFRdtjkTURERERaYUBJRERERFphQElEREREWmFASfnGt5oQERERwEE5lA/q3moiKBSQyfn7hIjUUygEyOUyyd/8MUpUfDCgpDzL+lYTw9KVYN3Vv7CzRURFGKeiIireGFBSvinfakJEH7estYcFpTCnopLJZFAICshl/2tJyfo3EeUfA0oiok9c5tpD9xrW+Lq9Y2FnqUDIZXIsuxiC8LjXsDEvj9ENBhV2loiKDQaUREQk1h5WsjYr7Kzkmyb9NMPjXuNJ9IsPnTWiYo8BJRERFQvsp/lp+VBdNUgzDCiJiKjY4CtDPx2fSleNjwV7IxMREdFHSfkD4s3b94WdlU8eA0oiIiIi0goDSiIiIiLSCgNKIiIiItIKA0r6pCgUQmFngYiIqNjhKG/6pHBUIBERke6xhpI+ORwVSEQfE5lMBhMTE5VJ2omKEtZQEhERFUGWJY0gKBQwNjaGo2NGa4qgUEAmZ10QFT0MKImIiIogMxMDyORyvNm3FClRYTAsXQnWXf0LO1tEajGgJCLKJ3Xvjuar4EjXUqLCkPL6SWFngyhHDCgLGL9wNKeurNhniLRR0PdbYb07mn3qiKioYUBZwArrC+djxLIiXfsQo/o/9LujBYUCJiYmYp86IqKigAHlB/Chv3A+Ziwr0jXlNVXJ2qyws6ITmfvUmdq5wapF38LOEhERpw0iIvrYKPvUpca+KeysEKnFl0h8elhDSaRD7DNLRMSXSHyKGFAS6RD7gRIRZShu3U0oZwwoiXSM/UBJl1jLTUQfAwaURERFGJsOiehjwEE5RERFHN8/T0RFHQNKIiIiItIKA0oiIiIi0goDSiIiIiLSCgNKIiIiItIKA0oiIiIi0goDSiIiHZPJZDAxMYFMxvkjCxvPBdGHwXkoiYh0wLKkEQSFAjK5HCYmJnB0zJgvUrmMPizl+TA2NhbPBREVHAaUREQ6YGZiAJlcjjf7liIlKgwAYFi6Eqy7+hduxj5RWc+HqZ0brFr0LexsERVbDCiJiHQoJSoMKa+fFHY26P8pz4dBaZvCzgpRscZ2GCIiIiLSCgNKIiIiItIKA0oiIiIi0goDykImk8mgEBSSZVn/JiIiIirKOCinCJDL5Fh2MQThca9hY14eoxsMKuwsEREREWmMAWURER73Gk+iXxR2NoiIiIjyjE3eRERERKQVBpREREREpBUGlERERESkFQaURERERKQVBpREREREpBUGlERERESkFQaURERERKQVBpREREREpBUGlERERESkFQaUhUQmk8HExAQymayws0IfAM83EREVZ3z14gdkWdIIgkIBmVwOExMTODo6FnaWqABld76Vy4iIiIoLBpQfkJmJAWRyOd7sW4qUqDAAgKmdG6xa9C3knFFBUHe+DUtXgnVX/8LNGBERkY4xoCwEKVFhSHn9BABgUNqmkHNDBS3z+SYiIiqO2O5GRERERFphQElEREREWmFASURERERaYUBJRERERFphQElEREREWimSAeWjR48wcOBAuLq6olGjRggMDERKSkqu2wmCgLVr16J58+ZwdnZGr1698M8//6isFxERgVGjRsHNzQ316tXD1KlTkZCQUABHQkRERFT8FbmAMjY2Fv3790dqaiqCgoIQEBCAn3/+GfPnz8912+DgYCxbtgwDBgzAmjVrULZsWQwaNAgvXrwQ10lNTcU333yDp0+fYtGiRfjuu+/w559/Yty4cQV5WERERETFVpGbh3Ln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UjIi6WNBSUREklCuXDlkZWUpHHv8+DFMTU3VG4hIi7CgJCIiSWjWrBlWrFiBtLQ0+TVBEJCdnY1NmzahRYsWIqYjkjbu8iYiIklISkpCv379kJWVhaZNm+LIkSP44osv8Pfff0MQBPzyyy8wNzcXOyaRJLGgJCIiycjMzMSGDRtw+vRppKWlwcTEBO7u7vj666/5yJtIhVhQEhEREZFSuIaSiIiIiJTCPpRERKSxnj59ijlz5qB169bo3LkzAOD169dwcXEpcF+FChWwZ88enrFOpCKcoSQiIo21ZcsW/Pnnn2jVqpX8mkwmw4sXL9ClSxcMHjwYX3/9NSpUqIAtW7aImJRI2jhDSUREGuv48ePo27cvypcvX2isT58+cHR0BABYWFhgx44dPOWISEU4Q0lERBrr/v37cHZ2LnBNEASUK1cOurq68mu2tra4f/++mtMRaQ/OUBIRkcbKy8tDmTIFf5Tp6OjgwoULha7l5eWpMxqRVuEMJRERaaxKlSrh9u3bH73v1q1bqFSpkhoSEWknFpRERKSxmjVrhk2bNuHFixfvvef58+cIDw/HF198ocZkRNqFBSUREWksf39/pKeno3///jh58iRycnLkY7m5uTh16hR8fX2Rnp4Of39/EZMSSRtPyiEiIo126dIljB07FklJSdDV1UXFihUhCAKePn2K/Px8WFtbY+nSpXBychI7KpFksaAkIiKNl5OTg19//RWxsbFITk4GAFhZWaFJkybo2LEj9PX1RU5IJG0sKImIiIhIKVxDSURERERKYUFJREREREphQUlERERESmFBSURERERKYUFJRERERErhWd5ERCQJ8fHxyMrKQt26dQH820po7dq1uHPnDjw8PNCjRw+RExJJF2coiYhIEqZPn469e/fKP58/fz5CQ0Nx9+5dzJgxA1u2bBExHZG0saAkIiJJuH79OlxcXAAAeXl52LNnD8aPH49du3YhICAA27ZtEzkhkXSxoCQiIkl4/vw5jIyMAPx7HGNWVhY6deoEAGjcuDEePnwoZjwiSWNBSUREkmBtbY2LFy8CAH777TfUqlULVlZWAICMjAyULVtWxHRE0sZNOUREJAne3t5YunQpDh48iOvXr2Py5MnysUuXLsHOzk7EdETSxoKSiIgkwd/fH1ZWVrhy5Qr69+9fYFd3RkYGevXqJWI6ImkTZDKZTOwQ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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# distribution of categories in CPE-rich vs. all certificates\n", "categories_cpe = df_cpe_rich.category.value_counts().sort_index().rename(\"Category distribution CPE-rich\")\n", @@ -231,9 +489,38 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7c9a200c72db4ce49f96c1a12adc347b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/50 [00:00100 CVE-rich certs, second-most-popular value with >= 40 instances)\n", "cve_rich = df_cves_within_validity_period.loc[df_cves_within_validity_period.related_cves.notnull()].copy()\n", @@ -854,7 +1141,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.13" + "version": "3.10.6" }, "vscode": { "interpreter": { diff --git a/src/sec_certs/utils/pandas.py b/src/sec_certs/utils/pandas.py index 749292e3..4b8b9504 100644 --- a/src/sec_certs/utils/pandas.py +++ b/src/sec_certs/utils/pandas.py @@ -285,15 +285,14 @@ def filter_cves( def expand_df_with_cve_cols(df: pd.DataFrame, cve_dset: CVEDataset) -> pd.DataFrame: df = df.copy() - - df["n_cves"] = df.related_cves.map(lambda x: len(x) if x is not np.nan else 0) + df["n_cves"] = df.related_cves.map(lambda x: 0 if pd.isna(x) else len(x)) df["cve_published_dates"] = df.related_cves.map( - lambda x: [cve_dset[y].published_date.date() for y in x] if x is not np.nan else np.nan # type: ignore + lambda x: [cve_dset[y].published_date.date() for y in x] if not pd.isna(x) else np.nan # type: ignore ) df["earliest_cve"] = df.cve_published_dates.map(lambda x: min(x) if isinstance(x, list) else np.nan) df["worst_cve_score"] = df.related_cves.map( - lambda x: max([cve_dset[cve].impact.base_score for cve in x]) if x is not np.nan else np.nan + lambda x: max([cve_dset[cve].impact.base_score for cve in x]) if not pd.isna(x) else np.nan ) """ @@ -303,7 +302,7 @@ def expand_df_with_cve_cols(df: pd.DataFrame, cve_dset: CVEDataset) -> pd.DataFr To properly treat this, the average should be taken across CVEs with >0 base_socre. """ df["avg_cve_score"] = df.related_cves.map( - lambda x: np.mean([cve_dset[cve].impact.base_score for cve in x]) if x is not np.nan else np.nan + lambda x: np.mean([cve_dset[cve].impact.base_score for cve in x]) if not pd.isna(x) else np.nan ) return df From a50e533c49495a6df03c9f4652257287d5cdc27c Mon Sep 17 00:00:00 2001 From: GeorgeFI Date: Sat, 25 Feb 2023 16:22:05 +0100 Subject: [PATCH 23/28] test: Added my own dummy vulnerable cert --- tests/cc/test_cc_analysis.py | 9 ++- .../data/cc/analysis/vulnerable_dataset.json | 57 ++++++++++++++++++- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/tests/cc/test_cc_analysis.py b/tests/cc/test_cc_analysis.py index d6f316fa..df9d3008 100644 --- a/tests/cc/test_cc_analysis.py +++ b/tests/cc/test_cc_analysis.py @@ -176,12 +176,11 @@ def test_match_cpe(cpe_single_sign_on: CPE, random_certificate: CCCertificate): assert {cpe_single_sign_on.uri} == random_certificate.heuristics.cpe_matches -def test_find_related_cves( - cc_dset: CCDataset, cpe_single_sign_on: CPE, cves: set[CVE], random_certificate: CCCertificate -): - random_certificate.heuristics.cpe_matches = {cpe_single_sign_on.uri} +def test_find_related_cves(cc_dset: CCDataset, cpe_single_sign_on: CPE, cves: set[CVE]): + cert = cc_dset["37e1b22e5933b0ed"] + cert.heuristics.cpe_matches = {cpe_single_sign_on.uri} cc_dset.compute_related_cves() - assert {x.cve_id for x in cves} == random_certificate.heuristics.related_cves + assert {x.cve_id for x in cves} == cert.heuristics.related_cves def test_version_extraction(random_certificate: CCCertificate): diff --git a/tests/data/cc/analysis/vulnerable_dataset.json b/tests/data/cc/analysis/vulnerable_dataset.json index 32ec6ce7..1afb42bb 100644 --- a/tests/data/cc/analysis/vulnerable_dataset.json +++ b/tests/data/cc/analysis/vulnerable_dataset.json @@ -12,7 +12,7 @@ "sha256_digest": "not implemented", "name": "cc_full_dataset", "description": "sample dataset description", - "n_certs": 1, + "n_certs": 2, "certs": [ { "_type": "sec_certs.sample.cc.CCCertificate", @@ -68,6 +68,61 @@ "cert_lab": null, "cert_id": null } + }, + { + "_type": "sec_certs.sample.cc.CCCertificate", + "dgst": "37e1b22e5933b0ed", + "status": "active", + "category": "Access Control Devices and Systems", + "name": "IBM WebSphere Application Server (WAS) 7.0", + "manufacturer": "IBM Corporation", + "scheme": "DE", + "security_level": { + "_type": "Set", + "elements": [ + "ALC_FLR.1", + "EAL3+" + ] + }, + "not_valid_before": "2010-12-05", + "not_valid_after": null, + "report_link": "https://www.commoncriteriaportal.org/files/epfiles/st_vid10289-vr.pdf", + "st_link": "", + "cert_link": null, + "manufacturer_web": "http://www.ibm.com", + "protection_profiles": [], + "maintenance_updates": [], + "state": { + "_type": "sec_certs.sample.cc.CCCertificate.InternalState", + "st_download_ok": true, + "report_download_ok": true, + "st_convert_ok": true, + "report_convert_ok": true, + "st_extract_ok": true, + "report_extract_ok": true + }, + "pdf_data": { + "_type": "sec_certs.sample.cc.CCCertificate.PdfData", + "report_metadata": null, + "st_metadata": null, + "report_frontpage": null, + "st_frontpage": null, + "report_keywords": null, + "st_keywords": null, + "report_filename": null, + "st_filename": null + }, + "heuristics": { + "_type": "sec_certs.sample.cc.CCCertificate.Heuristics", + "extracted_versions": [ + "8.2" + ], + "cpe_matches": null, + "verified_cpe_matches": null, + "related_cves": null, + "cert_lab": null, + "cert_id": null + } } ] } \ No newline at end of file From fe2e1de73191aa0f9c229179f43dc15ba1a1ab37 Mon Sep 17 00:00:00 2001 From: GeorgeFI Date: Sat, 25 Feb 2023 18:39:46 +0100 Subject: [PATCH 24/28] fix: Fixed the test for matching cpe --- tests/cc/test_cc_analysis.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/tests/cc/test_cc_analysis.py b/tests/cc/test_cc_analysis.py index df9d3008..a5b5e04a 100644 --- a/tests/cc/test_cc_analysis.py +++ b/tests/cc/test_cc_analysis.py @@ -159,12 +159,12 @@ def test_find_related_cves_for_cpe_configuration( cpes_ibm_websphere_app_with_platform: set[CPE], ibm_xss_cve: CVE, cve_config_dset: CVEDataset, - random_certificate: CCCertificate, ): - random_certificate.heuristics.cpe_matches = {cve.uri for cve in cpes_ibm_websphere_app_with_platform} + cert = cc_dset["37e1b22e5933b0ed"] + cert.heuristics.cpe_matches = {cve.uri for cve in cpes_ibm_websphere_app_with_platform} cc_dset.auxiliary_datasets.cve_dset = cve_config_dset cc_dset.compute_related_cves() - assert {ibm_xss_cve.cve_id} == random_certificate.heuristics.related_cves + assert {ibm_xss_cve.cve_id} == cert.heuristics.related_cves @pytest.fixture @@ -176,11 +176,12 @@ def test_match_cpe(cpe_single_sign_on: CPE, random_certificate: CCCertificate): assert {cpe_single_sign_on.uri} == random_certificate.heuristics.cpe_matches -def test_find_related_cves(cc_dset: CCDataset, cpe_single_sign_on: CPE, cves: set[CVE]): - cert = cc_dset["37e1b22e5933b0ed"] - cert.heuristics.cpe_matches = {cpe_single_sign_on.uri} +def test_find_related_cves( + cc_dset: CCDataset, cpe_single_sign_on: CPE, cves: set[CVE], random_certificate: CCCertificate +): + random_certificate.heuristics.cpe_matches = {cpe_single_sign_on.uri} cc_dset.compute_related_cves() - assert {x.cve_id for x in cves} == cert.heuristics.related_cves + assert {x.cve_id for x in cves} == random_certificate.heuristics.related_cves def test_version_extraction(random_certificate: CCCertificate): From 67cfddbd764332cd939086594f86820ea5094fa4 Mon Sep 17 00:00:00 2001 From: Adam Janovsky Date: Fri, 10 Mar 2023 21:04:43 +0100 Subject: [PATCH 25/28] finalize cpe matching for on/with configurations --- src/sec_certs/dataset/cve.py | 38 +- src/sec_certs/dataset/dataset.py | 15 +- src/sec_certs/sample/cpe.py | 19 +- src/sec_certs/sample/cve.py | 174 +++--- tests/cc/test_cc_analysis.py | 77 ++- .../auxiliary_datasets/cve_dataset.json | 497 +++++++++++++++++- .../cve_dset_with_cpe_configs.json | 385 -------------- tests/fips/test_fips_analysis.py | 57 +- tests/test_cpe.py | 79 +-- tests/test_cve.py | 69 +-- 10 files changed, 703 insertions(+), 707 deletions(-) delete mode 100644 tests/data/cc/analysis/auxiliary_datasets/cve_dset_with_cpe_configs.json diff --git a/src/sec_certs/dataset/cve.py b/src/sec_certs/dataset/cve.py index 65d141c3..43cd5b80 100644 --- a/src/sec_certs/dataset/cve.py +++ b/src/sec_certs/dataset/cve.py @@ -1,5 +1,6 @@ from __future__ import annotations +import collections import datetime import glob import itertools @@ -57,7 +58,7 @@ def __eq__(self, other: object): def _filter_cves_with_cpe_configurations(self) -> None: """ - Method filters the subset of CVEs, which contain at least one CPE configuration. + Method filters the subset of CVE dataset thah contain at least one CPE configuration in the CVE. """ self.cves_with_vulnerable_configurations = [cve for cve in self if cve.vulnerable_cpe_configurations] @@ -83,7 +84,7 @@ def build_lookup_dict(self, use_nist_mapping: bool = True, nist_matching_filepat for cve in tqdm(self, desc="Building-up lookup dictionaries for fast CVE matching"): # See note above, we use matching_dict.get(cpe, []) instead of matching_dict[cpe] as would be expected if use_nist_mapping: - vulnerable_configurations = set( + vulnerable_configurations = list( itertools.chain.from_iterable(matching_dict.get(cpe, []) for cpe in cve.vulnerable_cpes) ) else: @@ -133,7 +134,6 @@ def from_web( cls.download_cves(tmp_dir, start_year, end_year) json_files = glob.glob(tmp_dir + "/*.json") - all_cves = {} logger.info("Downloaded required resources. Building CVEDataset from jsons.") results = process_parallel( cls.from_nist_json, @@ -141,38 +141,30 @@ def from_web( use_threading=False, progress_bar_desc="Building CVEDataset from jsons", ) - for r in results: - all_cves.update(r.cves) - - return cls(all_cves, json_path) + return cls(dict(collections.ChainMap(*(x.cves for x in results))), json_path) def _get_cve_ids_for_cpe_uri(self, cpe_uri: str) -> set[str]: return self.cpe_to_cve_ids_lookup.get(cpe_uri, set()) - def _get_cves_from_exactly_matched_cpes(self, cpe_matches: set[str]) -> set[str]: - return set(itertools.chain.from_iterable([self._get_cve_ids_for_cpe_uri(cpe_uri) for cpe_uri in cpe_matches])) - - def _get_cves_from_cpe_configurations(self, cpe_matches: set[str]) -> set[str]: - def do_cve_configurations_match_cpe_matches(cve: CVE, cpe_matches: set[str]) -> bool: - return any( - [cpe_configuration.match(cpe_matches) for cpe_configuration in cve.vulnerable_cpe_configurations] - ) + def _get_cves_from_exactly_matched_cpes(self, cpe_uris: set[str]) -> set[str]: + return set(itertools.chain.from_iterable([self._get_cve_ids_for_cpe_uri(cpe_uri) for cpe_uri in cpe_uris])) + def _get_cves_from_cpe_configurations(self, cpe_uris: set[str]) -> set[str]: return { cve.cve_id for cve in self.cves_with_vulnerable_configurations - if do_cve_configurations_match_cpe_matches(cve, cpe_matches) + if any(configuration.matches(cpe_uris) for configuration in cve.vulnerable_cpe_configurations) } - def get_cves_from_matched_cpes(self, cpe_matches: set[str]) -> set[str]: + def get_cves_from_matched_cpes(self, cpe_uris: set[str]) -> set[str]: """ Method returns the set of CVEs which are matched to the set of CPEs. First are matched the classic CPEs to CVEs with lookup dict and then are matched the 'AND' type CPEs containing platform. """ return { - *self._get_cves_from_exactly_matched_cpes(cpe_matches), - *self._get_cves_from_cpe_configurations(cpe_matches), + *self._get_cves_from_exactly_matched_cpes(cpe_uris), + *self._get_cves_from_cpe_configurations(cpe_uris), } def filter_related_cpes(self, relevant_cpes: set[CPE]): @@ -186,7 +178,13 @@ def filter_related_cpes(self, relevant_cpes: set[CPE]): cve_ids_to_delete = [] for cve in self: n_cpes_orig = len(cve.vulnerable_cpes) - cve.vulnerable_cpes = list(filter(lambda x: x in relevant_cpes, cve.vulnerable_cpes)) + cve.vulnerable_cpes = [x for x in cve.vulnerable_cpes if x in relevant_cpes] + cve.vulnerable_cpe_configurations = [ + x + for x in cve.vulnerable_cpe_configurations + if x.platform.uri in relevant_cpes and any(y.uri in relevant_cpes for y in x.cpes) + ] + total_deleted_cpes += n_cpes_orig - len(cve.vulnerable_cpes) if not cve.vulnerable_cpes: cve_ids_to_delete.append(cve.cve_id) diff --git a/src/sec_certs/dataset/dataset.py b/src/sec_certs/dataset/dataset.py index 9481d9f7..614f60cf 100644 --- a/src/sec_certs/dataset/dataset.py +++ b/src/sec_certs/dataset/dataset.py @@ -1,6 +1,5 @@ from __future__ import annotations -import itertools import json import logging import re @@ -527,18 +526,14 @@ def compute_related_cves( ) return - relevant_cpes = set(itertools.chain.from_iterable(x.heuristics.cpe_matches for x in cpe_rich_certs)) - self.auxiliary_datasets.cve_dset.filter_related_cpes(relevant_cpes) + # The following lines don't bring any speed-up. They may potentially save memory if rest of CVEs is cleaned explicitly + # relevant_cpes = set(itertools.chain.from_iterable(x.heuristics.cpe_matches for x in cpe_rich_certs)) + # self.auxiliary_datasets.cve_dset.filter_related_cpes(relevant_cpes) cert: Certificate for cert in tqdm(cpe_rich_certs, desc="Computing related CVES"): - if cert.heuristics.cpe_matches: - related_cves = self.auxiliary_datasets.cve_dset.get_cves_from_matched_cpes(cert.heuristics.cpe_matches) - - if related_cves: - cert.heuristics.related_cves = related_cves - else: - cert.heuristics.related_cves = None + related_cves = self.auxiliary_datasets.cve_dset.get_cves_from_matched_cpes(cert.heuristics.cpe_matches) + cert.heuristics.related_cves = related_cves if related_cves else None n_vulnerable = len([x for x in cpe_rich_certs if x.heuristics.related_cves]) n_vulnerabilities = sum([len(x.heuristics.related_cves) for x in cpe_rich_certs if x.heuristics.related_cves]) diff --git a/src/sec_certs/sample/cpe.py b/src/sec_certs/sample/cpe.py index 664e70e3..1e3cbf12 100644 --- a/src/sec_certs/sample/cpe.py +++ b/src/sec_certs/sample/cpe.py @@ -10,13 +10,12 @@ from sec_certs.utils import helpers +@dataclass class CPEConfiguration(ComplexSerializableType): __slots__ = ["platform", "cpes"] - def __init__(self, platform: str, cpes: set[str]) -> None: - super().__init__() - self.platform: str = platform - self.cpes: set[str] = cpes + platform: CPE + cpes: list[CPE] def __hash__(self) -> int: return hash(self.platform) + sum([hash(cpe) for cpe in self.cpes]) @@ -25,17 +24,19 @@ def __lt__(self, other: CPEConfiguration) -> bool: return self.platform < other.platform def __eq__(self, other: Any) -> bool: - return isinstance(other, self.__class__) and self.platform == other.platform and self.cpes == other.cpes + return ( + isinstance(other, self.__class__) and self.platform == other.platform and set(self.cpes) == set(other.cpes) + ) - def match(self, set_of_cpes: set[str]) -> bool: + def matches(self, other_cpe_uris: set[str]) -> bool: """ For a given set of CPEs method returns boolean if the CPE configuration is matched or not. """ - return self.platform in set_of_cpes and any(list(set_of_cpes)) + return self.platform.uri in other_cpe_uris and any(x.uri in other_cpe_uris for x in self.cpes) -@dataclass(init=False) +@dataclass class CPE(PandasSerializableType, ComplexSerializableType): uri: str version: str @@ -113,6 +114,8 @@ def target_hw(self) -> str: def pandas_tuple(self) -> tuple: return self.uri, self.vendor, self.item_name, self.version, self.title + # We cannot use frozen=True. It does not work with __slots__ prior to Python 3.10 dataclasses + # Hence we manually provide __hash__ and __eq__ despite not guaranteeing immutability def __hash__(self) -> int: return hash((self.uri, self.start_version, self.end_version)) diff --git a/src/sec_certs/sample/cve.py b/src/sec_certs/sample/cve.py index 9b2c2437..2289b0e1 100644 --- a/src/sec_certs/sample/cve.py +++ b/src/sec_certs/sample/cve.py @@ -3,7 +3,7 @@ import datetime import itertools from dataclasses import dataclass -from typing import Any, ClassVar +from typing import Any, ClassVar, Iterable from dateutil.parser import isoparse @@ -12,9 +12,9 @@ from sec_certs.serialization.pandas import PandasSerializableType -@dataclass(init=False) +@dataclass class CVE(PandasSerializableType, ComplexSerializableType): - @dataclass(eq=True) + @dataclass class Impact(ComplexSerializableType): base_score: float severity: str @@ -47,8 +47,8 @@ def from_nist_dict(cls, dct: dict[str, Any]) -> CVE.Impact: raise ValueError("NIST Dict for CVE Impact badly formatted.") cve_id: str - vulnerable_cpes: set[CPE] - vulnerable_cpe_configurations: set[CPEConfiguration] + vulnerable_cpes: list[CPE] + vulnerable_cpe_configurations: list[CPEConfiguration] impact: Impact published_date: datetime.datetime | None cwe_ids: set[str] | None @@ -66,30 +66,13 @@ def from_nist_dict(cls, dct: dict[str, Any]) -> CVE.Impact: "cwe_ids", ] - def __init__( - self, - cve_id: str, - vulnerable_cpes: set[CPE], - vulnerable_cpe_configurations: set[CPEConfiguration], - impact: Impact, - published_date: str, - cwe_ids: set[str] | None, - ): - super().__init__() - self.cve_id = cve_id - self.vulnerable_cpes = vulnerable_cpes - self.vulnerable_cpe_configurations = vulnerable_cpe_configurations - self.impact = impact - self.published_date = isoparse(published_date) - self.cwe_ids = cwe_ids - + # We cannot use frozen=True. It does not work with __slots__ prior to Python 3.10 dataclasses + # Hence we manually provide __hash__ and __eq__ despite not guaranteeing immutability def __hash__(self) -> int: return hash(self.cve_id) def __eq__(self, other: object) -> bool: - if not isinstance(other, CVE): - return False - return self.cve_id == other.cve_id + return isinstance(other, CVE) and self.cve_id == other.cve_id def __lt__(self, other: object) -> bool: if not isinstance(other, CVE): @@ -124,11 +107,35 @@ def to_dict(self) -> dict[str, Any]: "cwe_ids": self.cwe_ids, } + @classmethod + def from_dict(cls, dct: dict[str, Any]) -> CVE: + date_to_take = ( + isoparse(dct["published_date"]) if isinstance(dct["published_date"], str) else dct["published_date"] + ) + return cls( + dct["cve_id"], + dct["vulnerable_cpes"], + dct["vulnerable_cpe_configurations"], + dct["impact"], + date_to_take, + dct["cwe_ids"], + ) + + @classmethod + def from_nist_dict(cls, dct: dict) -> CVE: + cve_id = dct["cve"]["CVE_data_meta"]["ID"] + impact = cls.Impact.from_nist_dict(dct) + published_date = isoparse(dct["publishedDate"]) + cwe_ids = cls.parse_cwe_data(dct) + cpes, cpe_configurations = CVE.get_cpe_data_from_nodes_list(dct["configurations"]["nodes"]) + + return cls(cve_id, cpes, cpe_configurations, impact, published_date, cwe_ids) + @staticmethod - def _parse_nist_cpe_dicts(lst: list[dict[str, Any]]) -> list[CPE]: + def _parse_nist_cpe_dicts(dictionaries: Iterable[dict[str, Any]]) -> list[CPE]: cpes: list[CPE] = [] - for x in lst: + for x in dictionaries: cpe_uri = x["cpe23Uri"] version_start: tuple[str, str] | None version_end: tuple[str, str] | None @@ -157,82 +164,51 @@ def _parse_nist_dict(cpe_list: list[dict[str, Any]], parse_only_vulnerable_cpes: The parameter specifies if we want to parse only vulnerable CPEs or not. """ - cpe_dicts_to_be_parsed = cpe_list - - if parse_only_vulnerable_cpes: - cpe_dicts_to_be_parsed = [dct for dct in cpe_list if dct["vulnerable"]] - - return CVE._parse_nist_cpe_dicts(cpe_dicts_to_be_parsed) - - @classmethod - def from_nist_dict(cls, dct: dict) -> CVE: - """ - Will load CVE from dictionary defined at https://nvd.nist.gov/feeds/json/cve/1.1 - """ - - def get_cpe_configurations_from_and_cpe_dict(children: list[dict]) -> list[CPEConfiguration]: - configurations: list[CPEConfiguration] = [] - - if not children or len(children) != 2: - return configurations - - cpes = CVE._parse_nist_dict(children[0]["cpe_match"], True) - vulnerable_cpe_uris = {cpe.uri for cpe in cpes} - - if not cpes: - return configurations + return CVE._parse_nist_cpe_dicts(dct for dct in cpe_list if dct["vulnerable"] or not parse_only_vulnerable_cpes) - # Platform does not have to be vulnerable necessarily - platforms = CVE._parse_nist_dict(children[1]["cpe_match"], False) - - return [CPEConfiguration(platform.uri, vulnerable_cpe_uris) for platform in platforms] - - def get_vulnerable_cpes_from_nist_dict(dct: dict) -> list[list]: - def get_vulnerable_cpes_and_cpe_configurations( - node: dict, cpes: list[CPE], cpe_configurations: list[CPEConfiguration] - ) -> tuple[list[CPE], list[CPEConfiguration]]: - """ - Method traverses node of CPE tree and returns the list of CPEs and CPE configuratios, - which depends on if the parent node is OR/AND type. - """ - if node["operator"] == "AND": - cpe_configurations.extend(get_cpe_configurations_from_and_cpe_dict(node["children"])) - return cpes, cpe_configurations - - if "children" in node: - for child in node["children"]: - get_vulnerable_cpes_and_cpe_configurations(child, cpes, cpe_configurations) - - if "cpe_match" not in node: - return cpes, cpe_configurations - - candidates = node["cpe_match"] - cpes.extend(CVE._parse_nist_dict(candidates, True)) - - return cpes, cpe_configurations - - cpes_and_cpe_configurations = [ - get_vulnerable_cpes_and_cpe_configurations(x, [], []) for x in dct["configurations"]["nodes"] - ] + @staticmethod + def parse_cwe_data(dct: dict) -> set[str] | None: + descriptions = dct["cve"]["problemtype"]["problemtype_data"][0]["description"] + return {x["value"] for x in descriptions} if descriptions else None - return [list(t) for t in zip(*cpes_and_cpe_configurations)] + @staticmethod + def get_cpe_data_from_nodes_list(lst: list) -> tuple[list[CPE], list[CPEConfiguration]]: + or_nodes = [x for x in lst if x["operator"] == "OR"] + and_nodes = [x for x in lst if x["operator"] == "AND"] + return CVE.get_simple_cpes_from_nodes_list(or_nodes), CVE.get_cpe_configurations_from_node_list(and_nodes) - cve_id = dct["cve"]["CVE_data_meta"]["ID"] - impact = cls.Impact.from_nist_dict(dct) - cpe_and_cpe_configurations = get_vulnerable_cpes_from_nist_dict(dct) - # There exist CVEs such as (CVE-2022-0177) which are rejected and do not contain any assinged CPEs - vulnerable_cpes = ( - set(itertools.chain.from_iterable(cpe_and_cpe_configurations[0])) if cpe_and_cpe_configurations else set() - ) - vulnerable_cpe_configurations = ( - set(itertools.chain.from_iterable(cpe_and_cpe_configurations[1])) if cpe_and_cpe_configurations else set() + @staticmethod + def get_simple_cpes_from_nodes_list(lst: list) -> list[CPE]: + return list( + itertools.chain.from_iterable( + CVE._parse_nist_dict(node["cpe_match"], parse_only_vulnerable_cpes=True) for node in lst + ) ) - published_date = dct["publishedDate"] - cwe_ids = cls.parse_cwe_data(dct) - return cls(cve_id, vulnerable_cpes, vulnerable_cpe_configurations, impact, published_date, cwe_ids) + @staticmethod + def get_cpe_configurations_from_node_list(lst: list) -> list[CPEConfiguration]: + """ + Retrieves only running on/with configurations, not the advanced ones. + See more at https://nvd.nist.gov/vuln/vulnerability-detail-pages, section `Configurations` + """ + configurations = [CVE.get_cpe_confiugration_from_node(x) for x in lst] + return [x for x in configurations if x] @staticmethod - def parse_cwe_data(dct: dict) -> set[str] | None: - descriptions = dct["cve"]["problemtype"]["problemtype_data"][0]["description"] - return {x["value"] for x in descriptions} if descriptions else None + def get_cpe_confiugration_from_node(node: dict) -> CPEConfiguration | None: + if node["children"]: + if len(node["children"]) != 2: + return None + + # Deep variant should have two children, get CPEs from the first one and declare that product, second is platform + cpes = CVE._parse_nist_dict(node["children"][0]["cpe_match"], parse_only_vulnerable_cpes=True) + platform = CVE._parse_nist_dict(node["children"][1]["cpe_match"], parse_only_vulnerable_cpes=False) + return CPEConfiguration(platform[0], cpes) + else: + # Shallow variant should have exactly 2 matching CPEs, we declare one a platform, second one the vuln. thing + cpes = CVE._parse_nist_dict(node["cpe_match"], parse_only_vulnerable_cpes=True) + + if len(cpes) != 2: + return None + + return CPEConfiguration(cpes[0], [cpes[1]]) diff --git a/tests/cc/test_cc_analysis.py b/tests/cc/test_cc_analysis.py index a5b5e04a..a5088338 100644 --- a/tests/cc/test_cc_analysis.py +++ b/tests/cc/test_cc_analysis.py @@ -5,6 +5,7 @@ import pytest import tests.data.cc.analysis +from dateutil.parser import isoparse from sec_certs.cert_rules import SARS_IMPLIED_FROM_EAL from sec_certs.dataset import CCDataset @@ -55,24 +56,25 @@ def cpe_dset(cpes: set[CPE]) -> CPEDataset: @pytest.fixture(scope="module") -def cves(cpe_single_sign_on) -> set[CVE]: +def cves(cpe_single_sign_on: CPE, ibm_xss_cve: CVE) -> set[CVE]: return { CVE( "CVE-2017-1732", - {cpe_single_sign_on}, - set(), + [cpe_single_sign_on], + [], CVE.Impact(5.3, "MEDIUM", 3.9, 1.4), - "2021-05-26T04:15Z", + isoparse("2021-05-26T04:15Z"), {"CWE-200"}, ), CVE( "CVE-2019-4513", - {cpe_single_sign_on}, - set(), + [cpe_single_sign_on], + [], CVE.Impact(8.2, "HIGH", 3.9, 4.2), - "2000-05-26T04:15Z", + isoparse("2000-05-26T04:15Z"), {"CVE-611"}, ), + ibm_xss_cve, } @@ -97,13 +99,6 @@ def cc_dset(data_dir: Path, cve_dset: CVEDataset, tmp_path_factory) -> CCDataset return cc_dset -@pytest.fixture(scope="module") -def cve_config_dset(ibm_xss_cve) -> CVEDataset: - cve_dset = CVEDataset({ibm_xss_cve.cve_id: ibm_xss_cve}) - cve_dset.build_lookup_dict(use_nist_mapping=False) - return cve_dset - - @pytest.fixture def reference_dataset(data_dir) -> CCDataset: return CCDataset.from_json(data_dir / "reference_dataset.json") @@ -117,20 +112,20 @@ def transitive_vulnerability_dataset(data_dir) -> CCDataset: @pytest.fixture(scope="module") def ibm_cpe_configuration() -> CPEConfiguration: return CPEConfiguration( - "cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", - { - "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", - }, + CPE("cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*"), + [ + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*"), + ], ) @@ -138,33 +133,25 @@ def ibm_cpe_configuration() -> CPEConfiguration: def ibm_xss_cve(ibm_cpe_configuration) -> CVE: return CVE( "CVE-2010-2325", - set(), - {ibm_cpe_configuration}, + [], + [ibm_cpe_configuration], CVE.Impact(4.3, "MEDIUM", 2.9, 8.6), - "2000-06-18T04:15Z", + isoparse("2000-06-18T04:15Z"), {"CWE-79"}, ) -@pytest.fixture(scope="module") -def cpes_ibm_websphere_app_with_platform() -> set[CPE]: - return { - CPE("cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", "IBM zOS"), - CPE("cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", "IBM WebSphere Application Server"), - } - - def test_find_related_cves_for_cpe_configuration( cc_dset: CCDataset, - cpes_ibm_websphere_app_with_platform: set[CPE], ibm_xss_cve: CVE, - cve_config_dset: CVEDataset, ): cert = cc_dset["37e1b22e5933b0ed"] - cert.heuristics.cpe_matches = {cve.uri for cve in cpes_ibm_websphere_app_with_platform} - cc_dset.auxiliary_datasets.cve_dset = cve_config_dset + cert.heuristics.cpe_matches = { + "cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", + "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", + } cc_dset.compute_related_cves() - assert {ibm_xss_cve.cve_id} == cert.heuristics.related_cves + assert cert.heuristics.related_cves == {ibm_xss_cve.cve_id} @pytest.fixture @@ -181,7 +168,7 @@ def test_find_related_cves( ): random_certificate.heuristics.cpe_matches = {cpe_single_sign_on.uri} cc_dset.compute_related_cves() - assert {x.cve_id for x in cves} == random_certificate.heuristics.related_cves + assert {"CVE-2017-1732", "CVE-2019-4513"} == random_certificate.heuristics.related_cves def test_version_extraction(random_certificate: CCCertificate): diff --git a/tests/data/cc/analysis/auxiliary_datasets/cve_dataset.json b/tests/data/cc/analysis/auxiliary_datasets/cve_dataset.json index 4caf45d1..6d27b918 100644 --- a/tests/data/cc/analysis/auxiliary_datasets/cve_dataset.json +++ b/tests/data/cc/analysis/auxiliary_datasets/cve_dataset.json @@ -8,7 +8,7 @@ { "_type": "sec_certs.sample.cpe.CPE", "uri": "cpe:2.3:a:ibm:security_access_manager_for_enterprise_single_sign-on:8.2.2:*:*:*:*:*:*:*", - "title": "IBM Security Access Manager For Enterprise Single Sign-On 8.2.2", + "title": null, "start_version": null, "end_version": null } @@ -21,7 +21,7 @@ "exploitability_score": 3.9, "impact_score": 1.4 }, - "published_date": "2021-05-26T04:15Z", + "published_date": "2018-08-17T16:29:00+00:00", "cwe_ids": { "_type": "Set", "elements": [ @@ -36,7 +36,7 @@ { "_type": "sec_certs.sample.cpe.CPE", "uri": "cpe:2.3:a:ibm:security_access_manager_for_enterprise_single_sign-on:8.2.2:*:*:*:*:*:*:*", - "title": "IBM Security Access Manager For Enterprise Single Sign-On 8.2.2", + "title": null, "start_version": null, "end_version": null } @@ -49,7 +49,7 @@ "exploitability_score": 3.9, "impact_score": 4.2 }, - "published_date": "2000-05-26T04:15Z", + "published_date": "2019-08-26T15:15:00+00:00", "cwe_ids": { "_type": "Set", "elements": [ @@ -64,23 +64,95 @@ "vulnerable_cpe_configurations": [ { "_type": "sec_certs.sample.cpe.CPEConfiguration", - "platform": "cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", - "cpes": { - "_type": "Set", - "elements": [ - "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*" - ] - } + "platform": { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + "cpes": [ + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": [ + "including", + "7.0.0.10" + ] + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + } + ] } ], "impact": { @@ -97,6 +169,389 @@ "CWE-79" ] } + }, + "CVE-2003-0001": { + "_type": "sec_certs.sample.cve.CVE", + "cve_id": "CVE-2003-0001", + "vulnerable_cpes": [ + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.15:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:netbsd:netbsd:1.5.3:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:microsoft:windows_2000_terminal_services:*:sp1:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:netbsd:netbsd:1.6:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.11:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:netbsd:netbsd:1.5:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.12:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.13:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:microsoft:windows_2000:*:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:freebsd:freebsd:4.7:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.16:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.5:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:microsoft:windows_2000:*:sp1:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:freebsd:freebsd:4.2:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.19:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.2:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.9:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:microsoft:windows_2000:*:sp2:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:netbsd:netbsd:1.5.1:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.10:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.17:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.7:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.8:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:freebsd:freebsd:4.4:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:freebsd:freebsd:4.5:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.14:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:netbsd:netbsd:1.5.2:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.1:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:freebsd:freebsd:4.6:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.4:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.6:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:microsoft:windows_2000_terminal_services:*:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:freebsd:freebsd:4.3:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.18:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:microsoft:windows_2000_terminal_services:*:sp2:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.20:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:o:linux:linux_kernel:2.4.3:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + } + ], + "vulnerable_cpe_configurations": [], + "impact": { + "_type": "sec_certs.sample.cve.CVE.Impact", + "base_score": 5.0, + "severity": "MEDIUM", + "exploitability_score": 10.0, + "impact_score": 2.9 + }, + "published_date": "2003-01-17T05:00:00+00:00", + "cwe_ids": { + "_type": "Set", + "elements": [ + "CWE-200" + ] + } + }, + "CVE-2003-0070": { + "_type": "sec_certs.sample.cve.CVE", + "cve_id": "CVE-2003-0070", + "vulnerable_cpes": [], + "vulnerable_cpe_configurations": [ + { + "_type": "sec_certs.sample.cpe.CPEConfiguration", + "platform": { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:gnome:gnome-terminal:2.0:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + "cpes": [ + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:nalin_dahyabhai:vte:0.15.0:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:nalin_dahyabhai:vte:0.14.2:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:nalin_dahyabhai:vte:0.17.4:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:nalin_dahyabhai:vte:0.12.2:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:nalin_dahyabhai:vte:0.24.3:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:nalin_dahyabhai:vte:0.22.5:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:nalin_dahyabhai:vte:0.16.14:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:nalin_dahyabhai:vte:0.11.21:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:nalin_dahyabhai:vte:0.20.5:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + }, + { + "_type": "sec_certs.sample.cpe.CPE", + "uri": "cpe:2.3:a:nalin_dahyabhai:vte:0.25.1:*:*:*:*:*:*:*", + "title": null, + "start_version": null, + "end_version": null + } + ] + } + ], + "impact": { + "_type": "sec_certs.sample.cve.CVE.Impact", + "base_score": 6.8, + "severity": "MEDIUM", + "exploitability_score": 8.6, + "impact_score": 6.4 + }, + "published_date": "2003-03-03T05:00:00+00:00", + "cwe_ids": { + "_type": "Set", + "elements": [ + "NVD-CWE-Other" + ] + } } } } \ No newline at end of file diff --git a/tests/data/cc/analysis/auxiliary_datasets/cve_dset_with_cpe_configs.json b/tests/data/cc/analysis/auxiliary_datasets/cve_dset_with_cpe_configs.json deleted file mode 100644 index 32d188f5..00000000 --- a/tests/data/cc/analysis/auxiliary_datasets/cve_dset_with_cpe_configs.json +++ /dev/null @@ -1,385 +0,0 @@ -{ - "_type": "sec_certs.dataset.cve.CVEDataset", - "cves": { - "CVE-2003-0001": { - "_type": "sec_certs.sample.cve.CVE", - "cve_id": "CVE-2003-0001", - "vulnerable_cpes": [ - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.15:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:netbsd:netbsd:1.5.3:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:microsoft:windows_2000_terminal_services:*:sp1:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:netbsd:netbsd:1.6:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.11:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:netbsd:netbsd:1.5:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.12:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.13:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:microsoft:windows_2000:*:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:freebsd:freebsd:4.7:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.16:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.5:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:microsoft:windows_2000:*:sp1:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:freebsd:freebsd:4.2:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.19:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.2:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.9:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:microsoft:windows_2000:*:sp2:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:netbsd:netbsd:1.5.1:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.10:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.17:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.7:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.8:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:freebsd:freebsd:4.4:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:freebsd:freebsd:4.5:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.14:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:netbsd:netbsd:1.5.2:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.1:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:freebsd:freebsd:4.6:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.4:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.6:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:microsoft:windows_2000_terminal_services:*:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:freebsd:freebsd:4.3:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.18:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:microsoft:windows_2000_terminal_services:*:sp2:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.20:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - }, - { - "_type": "sec_certs.sample.cpe.CPE", - "uri": "cpe:2.3:o:linux:linux_kernel:2.4.3:*:*:*:*:*:*:*", - "title": null, - "start_version": null, - "end_version": null - } - ], - "vulnerable_cpe_configurations": [], - "impact": { - "_type": "sec_certs.sample.cve.CVE.Impact", - "base_score": 5.0, - "severity": "MEDIUM", - "exploitability_score": 10.0, - "impact_score": 2.9 - }, - "published_date": "2003-01-17T05:00:00+00:00", - "cwe_ids": { - "_type": "Set", - "elements": [ - "CWE-200" - ] - } - }, - "CVE-2003-0070": { - "_type": "sec_certs.sample.cve.CVE", - "cve_id": "CVE-2003-0070", - "vulnerable_cpes": [], - "vulnerable_cpe_configurations": [ - { - "_type": "sec_certs.sample.cpe.CPEConfiguration", - "platform": "cpe:2.3:a:gnome:gnome-terminal:2.0:*:*:*:*:*:*:*", - "cpes": { - "_type": "Set", - "elements": [ - "cpe:2.3:a:nalin_dahyabhai:vte:0.11.21:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.12.2:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.14.2:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.15.0:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.16.14:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.17.4:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.20.5:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.22.5:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.24.3:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.25.1:*:*:*:*:*:*:*" - ] - } - }, - { - "_type": "sec_certs.sample.cpe.CPEConfiguration", - "platform": "cpe:2.3:a:gnome:gnome-terminal:2.2:*:*:*:*:*:*:*", - "cpes": { - "_type": "Set", - "elements": [ - "cpe:2.3:a:nalin_dahyabhai:vte:0.11.21:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.12.2:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.14.2:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.15.0:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.16.14:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.17.4:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.20.5:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.22.5:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.24.3:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.25.1:*:*:*:*:*:*:*" - ] - } - } - ], - "impact": { - "_type": "sec_certs.sample.cve.CVE.Impact", - "base_score": 6.8, - "severity": "MEDIUM", - "exploitability_score": 8.6, - "impact_score": 6.4 - }, - "published_date": "2003-03-03T05:00:00+00:00", - "cwe_ids": { - "_type": "Set", - "elements": [ - "NVD-CWE-Other" - ] - } - }, - "CVE-2010-2325": { - "_type": "sec_certs.sample.cve.CVE", - "cve_id": "CVE-2010-2325", - "vulnerable_cpes": [], - "vulnerable_cpe_configurations": [ - { - "_type": "sec_certs.sample.cpe.CPEConfiguration", - "platform": "cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", - "cpes": { - "_type": "Set", - "elements": [ - "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*" - ] - } - } - ], - "impact": { - "_type": "sec_certs.sample.cve.CVE.Impact", - "base_score": 4.3, - "severity": "MEDIUM", - "exploitability_score": 8.6, - "impact_score": 2.9 - }, - "published_date": "2010-06-18T18:30:00+00:00", - "cwe_ids": { - "_type": "Set", - "elements": [ - "CWE-79" - ] - } - } - } -} \ No newline at end of file diff --git a/tests/fips/test_fips_analysis.py b/tests/fips/test_fips_analysis.py index 6c5b032e..90de70f0 100644 --- a/tests/fips/test_fips_analysis.py +++ b/tests/fips/test_fips_analysis.py @@ -4,6 +4,7 @@ import pytest import tests.data.fips.dataset +from dateutil.parser import isoparse from sec_certs.dataset import CPEDataset, CVEDataset from sec_certs.dataset.fips import FIPSDataset @@ -33,10 +34,10 @@ def some_random_cpe() -> CPE: def cve(vulnerable_cpe: CPE) -> CVE: return CVE( "CVE-1234-123456", - {vulnerable_cpe}, - set(), + [vulnerable_cpe], + [], CVE.Impact(10, "HIGH", 10, 10), - "2021-05-26T04:15Z", + isoparse("2021-05-26T04:15Z"), {"CWE-200"}, ) @@ -45,31 +46,31 @@ def cve(vulnerable_cpe: CPE) -> CVE: def some_other_cve(some_random_cpe: CPE) -> CVE: return CVE( "CVE-2019-4513", - {some_random_cpe}, - set(), + [some_random_cpe], + [], CVE.Impact(8.2, "HIGH", 3.9, 4.2), - "2000-05-26T04:15Z", + isoparse("2000-05-26T04:15Z"), {"CVE-611"}, ) @pytest.fixture(scope="module") -def ibm_cpe_configurations() -> CPEConfiguration: +def ibm_cpe_configuration() -> CPEConfiguration: return CPEConfiguration( - "cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", - { - "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", - }, + CPE("cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*"), + [ + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*"), + ], ) @@ -82,13 +83,13 @@ def cpes_ibm_websphere_app_with_platform() -> set[CPE]: @pytest.fixture(scope="module") -def ibm_xss_cve(ibm_cpe_configurations) -> CVE: +def ibm_xss_cve(ibm_cpe_configuration: CPEConfiguration) -> CVE: return CVE( "CVE-2010-2325", - set(), - {ibm_cpe_configurations}, + [], + [ibm_cpe_configuration], CVE.Impact(4.3, "MEDIUM", 2.9, 8.6), - "2000-06-18T04:15Z", + isoparse("2000-06-18T04:15Z"), {"CWE-79"}, ) @@ -131,7 +132,7 @@ def toy_static_dataset(data_dir: Path) -> FIPSDataset: def processed_dataset( toy_static_dataset: FIPSDataset, cpe_dataset: CPEDataset, cve_dataset: CVEDataset, tmp_path_factory ) -> FIPSDataset: - tmp_dir = tmp_path_factory.mktemp("cc_dset") + tmp_dir = tmp_path_factory.mktemp("fips_dset") toy_static_dataset.copy_dataset(tmp_dir) tested_certs = [ @@ -270,10 +271,10 @@ def test_find_related_cves_for_cpe_configuration( ): cve_dataset.cves = {ibm_xss_cve.cve_id: ibm_xss_cve} cert = processed_dataset["2441"] - cert.heuristics.cpe_matches = {cve.uri for cve in cpes_ibm_websphere_app_with_platform} + cert.heuristics.cpe_matches = {cpe.uri for cpe in cpes_ibm_websphere_app_with_platform} processed_dataset.auxiliary_datasets.cve_dset = cve_dataset processed_dataset.compute_related_cves() - assert {ibm_xss_cve.cve_id} == cert.heuristics.related_cves + assert cert.heuristics.related_cves == {ibm_xss_cve.cve_id} def test_keywords_heuristics(processed_dataset: FIPSDataset): diff --git a/tests/test_cpe.py b/tests/test_cpe.py index 9cee5459..52b5acb0 100644 --- a/tests/test_cpe.py +++ b/tests/test_cpe.py @@ -17,19 +17,14 @@ def cpe_dset_path() -> Path: return Path(tests.data.cc.analysis.auxiliary_datasets.__path__[0]) / "cpe_dataset.json" -@pytest.fixture(scope="module") -def cve_dset_with_cpe_configs_path() -> Path: - return Path(tests.data.cc.analysis.auxiliary_datasets.__path__[0]) / "cve_dset_with_cpe_configs.json" - - @pytest.fixture(scope="module") def cpe_dset(cpe_dset_path: Path) -> CPEDataset: return CPEDataset.from_json(cpe_dset_path) @pytest.fixture(scope="module") -def cve_dset_with_cpe_configs(cve_dset_with_cpe_configs_path: Path) -> CVEDataset: - return CVEDataset.from_json(cve_dset_with_cpe_configs_path) +def cve_dataset() -> CVEDataset: + return CVEDataset.from_json(Path(tests.data.cc.analysis.auxiliary_datasets.__path__[0]) / "cve_dataset.json") @pytest.fixture(scope="module") @@ -150,57 +145,27 @@ def test_serialization_missing_path(): dummy_dset.to_json() -def test_single_platform_config_cpe(cve_dset_with_cpe_configs: CVEDataset): - tested_cpe_config = cve_dset_with_cpe_configs["CVE-2010-2325"].vulnerable_cpe_configurations - cpe_set = { - "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", - } - cpe_config = CPEConfiguration( - platform="cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*", - cpes=cpe_set, +def test_single_platform_config_cpe(cve_dataset: CVEDataset): + tested_cpe_config = cve_dataset["CVE-2010-2325"].vulnerable_cpe_configurations + cpe_configuration = CPEConfiguration( + platform=CPE("cpe:2.3:o:ibm:zos:*:*:*:*:*:*:*:*"), + cpes=[ + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", end_version=("including", "7.0.0.10")), + ], ) - assert cpe_config in tested_cpe_config - - -def test_multiple_platform_config_cpe(cve_dset_with_cpe_configs: CVEDataset): - tested_cpe_configs = cve_dset_with_cpe_configs["CVE-2003-0070"].vulnerable_cpe_configurations - cpe_set = { - "cpe:2.3:a:nalin_dahyabhai:vte:0.11.21:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.12.2:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.14.2:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.15.0:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.16.14:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.17.4:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.20.5:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.22.5:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.24.3:*:*:*:*:*:*:*", - "cpe:2.3:a:nalin_dahyabhai:vte:0.25.1:*:*:*:*:*:*:*", - } - cpe_configs = [ - CPEConfiguration( - platform="cpe:2.3:a:gnome:gnome-terminal:2.0:*:*:*:*:*:*:*", - cpes=cpe_set, - ), - CPEConfiguration( - platform="cpe:2.3:a:gnome:gnome-terminal:2.2:*:*:*:*:*:*:*", - cpes=cpe_set, - ), - ] - for cpe_config in cpe_configs: - assert cpe_config in tested_cpe_configs + assert cpe_configuration in tested_cpe_config -def test_no_cpe_configuration(cve_dset_with_cpe_configs: CVEDataset): - tested_cpe_configs = cve_dset_with_cpe_configs["CVE-2003-0001"].vulnerable_cpe_configurations - assert tested_cpe_configs == [] +def test_no_cpe_configuration(cve_dataset: CVEDataset): + assert not cve_dataset["CVE-2003-0001"].vulnerable_cpe_configurations diff --git a/tests/test_cve.py b/tests/test_cve.py index 0382974a..7d21f2cd 100644 --- a/tests/test_cve.py +++ b/tests/test_cve.py @@ -4,6 +4,7 @@ from typing import Any import pytest +from dateutil.parser import isoparse import tests.data.cc.analysis.auxiliary_datasets from sec_certs.dataset import CVEDataset @@ -12,16 +13,6 @@ from sec_certs.serialization.json import SerializationError -@pytest.mark.slow -@pytest.mark.monitor_test -@pytest.mark.xfail(reason="May fail due to errors on NIST server.") -def test_from_web(): - dset = CVEDataset.from_web() - assert dset is not None - assert "CVE-2019-15809" in dset.cves - assert "CVE-2017-15361" in dset.cves - - @pytest.fixture(scope="module") def cve_dataset_path() -> Path: return Path(tests.data.cc.analysis.auxiliary_datasets.__path__[0]) / "cve_dataset.json" @@ -60,20 +51,20 @@ def cve_dict() -> dict[str, Any]: @pytest.fixture(scope="module") -def cve_2010_2325_cpe_configs(): - return { - "cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*", - "cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*", - } +def cve_2010_2325_cpe_configs() -> list[CPE]: + return [ + CPE("cpe:2.3:a:ibm:websphere_application_server:*:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.1:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.2:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.3:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.4:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.5:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.6:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.7:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.8:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0.0.9:*:*:*:*:*:*:*"), + CPE("cpe:2.3:a:ibm:websphere_application_server:7.0:*:*:*:*:*:*:*"), + ] @pytest.fixture(scope="module") @@ -86,32 +77,42 @@ def cves(cve_2010_2325_cpe_configs) -> list[CVE]: return [ CVE( "CVE-2017-1732", - {cpe_single_sign_on}, - set(), + [cpe_single_sign_on], + [], CVE.Impact(5.3, "MEDIUM", 3.9, 1.4), - "2021-05-26T04:15Z", + isoparse("2021-05-26T04:15Z"), {"CWE-200"}, ), CVE( "CVE-2019-4513", - {cpe_single_sign_on}, - set(), + [cpe_single_sign_on], + [], CVE.Impact(8.2, "HIGH", 3.9, 4.2), - "2000-05-26T04:15Z", + isoparse("2000-05-26T04:15Z"), {"CWE-611"}, ), CVE( "CVE-2010-2325", - set(), + [], cve_2010_2325_cpe_configs, CVE.Impact(4.3, "MEDIUM", 8.6, 2.9), - "2010-06-18T18:30", + isoparse("2010-06-18T18:30"), {"CWE-79"}, ), ] -def test_cve_dset_lookup_dicts(cves: list[CVE], cve_dset: CVEDataset): +@pytest.mark.slow +@pytest.mark.monitor_test +@pytest.mark.xfail(reason="May fail due to errors on NIST server.") +def test_from_web(): + dset = CVEDataset.from_web() + assert dset is not None + assert "CVE-2019-15809" in dset.cves + assert "CVE-2017-15361" in dset.cves + + +def test_cve_dset_lookup_dicts(cve_dset: CVEDataset): alt_lookup = {x: set(y) for x, y in cve_dset.cpe_to_cve_ids_lookup.items()} assert alt_lookup == { "cpe:2.3:a:ibm:security_access_manager_for_enterprise_single_sign-on:8.2.2:*:*:*:*:*:*:*": { @@ -123,7 +124,7 @@ def test_cve_dset_lookup_dicts(cves: list[CVE], cve_dset: CVEDataset): def test_cve_dset_from_json(cve_dataset_path: Path, cve_dset: CVEDataset): dset = CVEDataset.from_json(cve_dataset_path) - assert dset == cve_dset + assert all(x in dset for x in cve_dset) def test_cve_from_to_dict(cve_dict: dict[str, Any]): From 4fa6672d9c8174c5a854ed3f8845777085f03cb2 Mon Sep 17 00:00:00 2001 From: Adam Janovsky Date: Fri, 10 Mar 2023 21:23:09 +0100 Subject: [PATCH 26/28] codecov to informational --- codecov.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/codecov.yml b/codecov.yml index 5c664ea1..ce04d615 100644 --- a/codecov.yml +++ b/codecov.yml @@ -2,6 +2,14 @@ coverage: range: 50..100 round: up precision: 2 + status: + project: + default: + informational: true + + ignore: - "test/**/*.py" + +coverage: From ad1330a2de505cc85bb7aaa264e7f12a027c2115 Mon Sep 17 00:00:00 2001 From: Adam Janovsky Date: Fri, 10 Mar 2023 21:23:33 +0100 Subject: [PATCH 27/28] fix typo codecov.yml --- codecov.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/codecov.yml b/codecov.yml index ce04d615..79dedc0c 100644 --- a/codecov.yml +++ b/codecov.yml @@ -7,9 +7,5 @@ coverage: default: informational: true - - ignore: - "test/**/*.py" - -coverage: From 21b88b08cd6106f7a5095638b227b4028da4701d Mon Sep 17 00:00:00 2001 From: Adam Janovsky Date: Fri, 10 Mar 2023 21:27:23 +0100 Subject: [PATCH 28/28] codecov.yml to information also on patch --- codecov.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/codecov.yml b/codecov.yml index 79dedc0c..bcd1d82b 100644 --- a/codecov.yml +++ b/codecov.yml @@ -6,6 +6,8 @@ coverage: project: default: informational: true - + patch: + default: + informational: true ignore: - "test/**/*.py"