From 376a1f1a33cfb8c83dbb1cf1d92c32c095fb750d Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Wed, 12 Aug 2026 19:53:48 -0300 Subject: [PATCH 01/28] feat(package): add in-memory anonymization repair utility for GE ASL tags --- .../pyaslreport/utils/dicom_repair_utils.py | 262 ++++++++++++++++++ .../src/pyaslreport/utils/dicom_tags_utils.py | 21 +- 2 files changed, 273 insertions(+), 10 deletions(-) create mode 100644 package/src/pyaslreport/utils/dicom_repair_utils.py diff --git a/package/src/pyaslreport/utils/dicom_repair_utils.py b/package/src/pyaslreport/utils/dicom_repair_utils.py new file mode 100644 index 00000000..7c566ae6 --- /dev/null +++ b/package/src/pyaslreport/utils/dicom_repair_utils.py @@ -0,0 +1,262 @@ +"""Utilities for repairing anonymization-damaged DICOM metadata in memory. + +Some anonymizers preserve a DICOM element's numeric-string VR (DS/IS) but write +raw binary floating-point bytes into the value. The helpers here only repair a +small allowlist of GE ASL tags used by the extractor, and only mutate the +already-loaded pydicom Dataset. The source DICOM files are never written. +""" + +from __future__ import annotations + +import logging +import math +import struct +from collections.abc import Iterable +from dataclasses import dataclass, field +from typing import Any + +import pydicom +from pydicom.dataset import Dataset + +from pyaslreport.utils import dicom_tags_utils as dcm_tags + +LOGGER = logging.getLogger(__name__) + +NUMERIC_STRING_VRS = frozenset({"DS", "IS"}) + +# Conservative bounds for MR metadata values such as times, counts, factors, +# angles, and field strength. Values outside this range are likely mis-decodes. +_MAX_PLAUSIBLE = 1e7 +_MIN_PLAUSIBLE = 1e-6 + +GE_ASL_REPAIR_TAGS = frozenset( + { + dcm_tags.ECHO_TIME, + dcm_tags.GE_INVERSION_TIME, + dcm_tags.MAGNETIC_FIELD_STRENGTH, + dcm_tags.FLIP_ANGLE, + dcm_tags.GE_LABEL_DURATION, + dcm_tags.GE_PRIVATE_CV4, + dcm_tags.GE_PRIVATE_CV5, + dcm_tags.GE_PRIVATE_CV6, + dcm_tags.GE_PRIVATE_CV7, + dcm_tags.GE_ASSET_R_FACTOR, + dcm_tags.GE_EFFECTIVE_ECHO_SPACING, + dcm_tags.GE_NUMBER_OF_EXCITATIONS, + } +) + +GE_ASL_ESSENTIAL_REPAIR_TAGS = frozenset( + { + dcm_tags.GE_INVERSION_TIME, + dcm_tags.GE_LABEL_DURATION, + dcm_tags.GE_PRIVATE_CV4, + dcm_tags.GE_PRIVATE_CV5, + dcm_tags.GE_PRIVATE_CV6, + dcm_tags.GE_PRIVATE_CV7, + } +) + + +@dataclass(frozen=True) +class DicomTagRepair: + """One in-memory DICOM element repair.""" + + tag: Any + vr: str + decoded: list[float] + + +@dataclass +class DicomRepairReport: + """Summary of repairs applied to a Dataset.""" + + repaired: list[DicomTagRepair] = field(default_factory=list) + skipped_auxiliary: list[Any] = field(default_factory=list) + + +class DicomAnonymizationRepairError(ValueError): + """Raised when an essential GE ASL tag is damaged but cannot be decoded.""" + + +def _plausible(values: Iterable[float]) -> bool: + """Return whether decoded numeric values are plausible MR metadata values. + + Args: + values: Numeric values decoded from a damaged DICOM element. + + Returns: + True when every value is finite and inside conservative bounds. + """ + for value in values: + if not math.isfinite(value): + return False + if value != 0.0 and not (_MIN_PLAUSIBLE <= abs(value) <= _MAX_PLAUSIBLE): + return False + return True + + +def _raw_bytes(value: Any) -> bytes | None: + """Return raw bytes from pydicom values that may contain binary payloads. + + Args: + value: DICOM element value to inspect. + + Returns: + Raw bytes when the value can be interpreted losslessly, otherwise None. + """ + if isinstance(value, bytes): + return value + if type(value) is str: + try: + return value.encode("latin-1") + except UnicodeEncodeError: + return None + return None + + +def _is_text_number(value: str) -> bool: + """Return whether a string is already a valid numeric text value. + + Args: + value: DICOM DS/IS string value. + + Returns: + True when all separated components parse as floats. + """ + parts = [part.strip() for part in value.replace("\\", " ").split() if part.strip()] + if not parts: + return False + try: + for part in parts: + float(part) + except ValueError: + return False + return True + + +def _looks_binary_damaged(value: Any) -> bool: + """Return whether a DICOM value looks like binary data in a text VR. + + Args: + value: DICOM element value to inspect. + + Returns: + True when the value should be considered for binary numeric repair. + """ + if not isinstance(value, (bytes, str)) or value == "": + return False + if type(value) is str: + if _is_text_number(value): + return False + if all(32 <= ord(char) <= 126 for char in value): + return False + return True + + +def decode_binary_numeric(value: Any) -> list[float] | None: + """Decode binary bytes accidentally stored in a DS/IS value. + + Args: + value: DICOM value that may contain little-endian float/double bytes. + + Returns: + Decoded finite numeric values, or None when decoding is unsafe. + """ + + raw = _raw_bytes(value) + if not raw: + return None + + for width, fmt in ((8, "d"), (4, "f")): + if len(raw) % width != 0: + continue + try: + decoded = list(struct.unpack(f"<{len(raw) // width}{fmt}", raw)) + except struct.error: + continue + if _plausible(decoded): + return decoded + return None + + +def repair_dicom_dataset_in_memory(ds: Dataset) -> DicomRepairReport: + """Repair allowlisted GE ASL numeric tags in a loaded Dataset. + + The Dataset is mutated in memory only. No DICOM file is written. + + Args: + ds: Loaded DICOM dataset to inspect and repair. + + Returns: + Summary of applied repairs and skipped auxiliary tags. + + Raises: + DicomAnonymizationRepairError: If an essential damaged GE ASL tag cannot + be decoded safely. + """ + + report = DicomRepairReport() + for elem in ds: + if elem.VR == "SQ": + for item in elem.value: + nested = repair_dicom_dataset_in_memory(item) + report.repaired.extend(nested.repaired) + report.skipped_auxiliary.extend(nested.skipped_auxiliary) + continue + + if elem.tag not in GE_ASL_REPAIR_TAGS or elem.VR not in NUMERIC_STRING_VRS: + continue + + value = elem.value + if not _looks_binary_damaged(value): + continue + + decoded = decode_binary_numeric(value) + if decoded is None: + if elem.tag in GE_ASL_ESSENTIAL_REPAIR_TAGS: + raise DicomAnonymizationRepairError( + "Cannot repair anonymization-damaged essential GE ASL tag " + f"{elem.tag}: value is not safely decodable." + ) + report.skipped_auxiliary.append(elem.tag) + LOGGER.warning( + "Skipping anonymization-damaged auxiliary GE ASL tag %s; " + "value is not safely decodable.", + elem.tag, + ) + continue + + if elem.VR == "IS": + new_value: Any = [int(round(item)) for item in decoded] + else: + new_value = decoded + + elem.value = new_value[0] if len(new_value) == 1 else new_value + report.repaired.append(DicomTagRepair(elem.tag, elem.VR, decoded)) + LOGGER.info( + "Repaired anonymization-damaged GE ASL tag %s in memory: %s", + elem.tag, + decoded[0] if len(decoded) == 1 else decoded, + ) + + return report + + +def dicom_value_to_python(value: Any) -> Any: + """Convert common pydicom value containers to JSON-friendly Python values. + + Args: + value: Value returned by pydicom. + + Returns: + A scalar or list made from built-in Python value types where possible. + """ + + if isinstance(value, (list, tuple, pydicom.multival.MultiValue)): + return [dicom_value_to_python(item) for item in value] + if isinstance(value, pydicom.valuerep.IS): + return int(value) + if isinstance(value, pydicom.valuerep.DSfloat): + return float(value) + return value diff --git a/package/src/pyaslreport/utils/dicom_tags_utils.py b/package/src/pyaslreport/utils/dicom_tags_utils.py index 77e7d2c0..e5f2b505 100644 --- a/package/src/pyaslreport/utils/dicom_tags_utils.py +++ b/package/src/pyaslreport/utils/dicom_tags_utils.py @@ -1,6 +1,5 @@ from pydicom.tag import Tag - # Basic Tags MANUFACTURER = Tag(0x0008, 0x0070) MANUFACTURERS_MODEL_NAME = Tag(0x0008, 0x1090) @@ -11,22 +10,24 @@ FLIP_ANGLE = Tag(0x0018, 0x1314) REPETITION_TIME = Tag(0x0020, 0x0110) IMAGE_TYPE = Tag(0x0008, 0x0008) +SERIES_DESCRIPTION = Tag(0x0008, 0x103E) +INSTANCE_NUMBER = Tag(0x0020, 0x0013) # GE Commoon Tags GE_ASSET_R_FACTOR = Tag(0x0043, 0x1083) -GE_EFFECTIVE_ECHO_SPACING = Tag(0x0043, 0x192c) +GE_EFFECTIVE_ECHO_SPACING = Tag(0x0043, 0x192C) GE_ACQUISITION_MATRIX = Tag(0x0018, 0x1310) GE_NUMBER_OF_EXCITATIONS = Tag(0x0027, 0x1062) -GE_INTERNAL_SEQUENCE_NAME = Tag(0x0019,0x109E) +GE_INTERNAL_SEQUENCE_NAME = Tag(0x0019, 0x109E) # GE Mlti PLD Tags -GE_PRIVATE_CV4 = Tag(0x0019, 0x10ab) -GE_PRIVATE_CV5 = Tag(0x0019, 0x10ac) -GE_PRIVATE_CV6 = Tag(0x0019, 0x10ad) -GE_PRIVATE_CV7 = Tag(0x0019, 0x10ae) -GE_PRIVATE_CV8 = Tag(0x0019, 0x10af) -GE_PRIVATE_CV9 = Tag(0x0019, 0x10b0) +GE_PRIVATE_CV4 = Tag(0x0019, 0x10AB) +GE_PRIVATE_CV5 = Tag(0x0019, 0x10AC) +GE_PRIVATE_CV6 = Tag(0x0019, 0x10AD) +GE_PRIVATE_CV7 = Tag(0x0019, 0x10AE) +GE_PRIVATE_CV8 = Tag(0x0019, 0x10AF) +GE_PRIVATE_CV9 = Tag(0x0019, 0x10B0) # GE Single PLD Tags GE_LABEL_DURATION = Tag(0x0043, 0x10A5) @@ -44,4 +45,4 @@ SIEMENS_SEQUENCE_NAME = Tag(0x0018, 0x0024) SIEMENS_INPLANE_PHASE_ENCODING_DIRECTION = Tag(0x0018, 0x1312) SIEMENS_ROWS = Tag(0x0028, 0x0010) -SIEMENS_COLUMNS = Tag(0x0028, 0x0011) \ No newline at end of file +SIEMENS_COLUMNS = Tag(0x0028, 0x0011) From 92ef84d82859b80349e253db57d44bbbfe39074b Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Wed, 12 Aug 2026 22:42:51 -0300 Subject: [PATCH 02/28] refactor(package): null-safe GE header reads and value normalization --- .../sequences/ge/asl/ge_asl_base.py | 70 +++++++++------ .../sequences/ge/asl/ge_basic_single_pld.py | 16 ++-- .../sequences/ge/asl/ge_easl_multi_pld.py | 43 ++++++---- .../src/pyaslreport/sequences/ge/ge_base.py | 86 ++++++++++++------- 4 files changed, 140 insertions(+), 75 deletions(-) diff --git a/package/src/pyaslreport/sequences/ge/asl/ge_asl_base.py b/package/src/pyaslreport/sequences/ge/asl/ge_asl_base.py index 694f0dfe..e74ec428 100644 --- a/package/src/pyaslreport/sequences/ge/asl/ge_asl_base.py +++ b/package/src/pyaslreport/sequences/ge/asl/ge_asl_base.py @@ -1,74 +1,96 @@ from operator import truediv + from pyaslreport.sequences.ge.ge_base import GEBaseSequence from pyaslreport.utils import dicom_tags_utils as dcm_tags + class GEASLBase(GEBaseSequence): - + @classmethod + def get_internal_sequence_name(cls, dicom_header: object) -> str | None: + """Return the GE internal sequence name (0019,109E) lowercased, or None. + + A missing or empty tag is NOT an error. Per GE guidance, a missing tag + (or any value other than 'easl') can be safely treated as a basic GE + single-PLD sequence; callers decide the fallback. + """ + elem = dicom_header.get(dcm_tags.GE_INTERNAL_SEQUENCE_NAME, None) + if ( + elem is None + or getattr(elem, "value", None) is None + or str(elem.value).strip() == "" + ): + return None + return str(elem.value).strip().lower() + def _extract_ge_common_asl_metadata(self): bids_ge_asl = {} bids_ge_asl["BackgroundSuppression"] = True bids_ge_asl["BackgroundSuppressionNumberPulses"] = 4 - + # M0 scan detection and ASL context handling # For GE: Control/label subtraction is executed on scanner, only deltaM images saved # M0 scan is included by default in all acquisitions bids_ge_asl["M0Type"] = "Included" - + # Check if CBF images are provided instead of deltaM/M0 # This would indicate M0 scan is absent if self._is_cbf_image(): bids_ge_asl["M0Type"] = "Absent" - + return bids_ge_asl def _get_volume_type(self) -> str: """ Determine the volume type based on DICOM ImageType tag. - + Returns: str: "deltaM", "m0scan", or "cbf" """ dataset = self.dicom_header - image_type = dataset.get(dcm_tags.IMAGE_TYPE, "").value if dcm_tags.IMAGE_TYPE in dataset else "" - + image_type = ( + dataset.get(dcm_tags.IMAGE_TYPE, "").value + if dcm_tags.IMAGE_TYPE in dataset + else "" + ) + if isinstance(image_type, (list, tuple)): image_type_str = " ".join(str(x).upper() for x in image_type) else: image_type_str = str(image_type).upper() - + # CBF patterns cbf_patterns = [ ["DERIVED", "PRIMARY", "CBF", "CBF"], - ["DERIVED", "PRIMARY", "CBF", "CBF", "REAL"] + ["DERIVED", "PRIMARY", "CBF", "CBF", "REAL"], ] - - # M0 scan patterns + + # M0 scan patterns m0_patterns = [ ["ORIGINAL", "PRIMARY", "ASL", "REAL"], - ["ORIGINAL", "PRIMARY", "ASL"] + ["ORIGINAL", "PRIMARY", "ASL"], ] - + # deltaM patterns deltam_patterns = [ ["DERIVED", "PRIMARY", "ASL", "PERFUSION", "ASL"], ["DERIVED", "PRIMARY", "ASL", "PERFUSION", "ASL", "REAL"], - ["DERIVED", "PRIMARY", "ASL", "PERFUSION_ASL"] + ["DERIVED", "PRIMARY", "ASL", "PERFUSION_ASL"], ] - + # Check patterns for pattern in cbf_patterns: if all(tag in image_type_str for tag in pattern): return "cbf" - + for pattern in m0_patterns: if all(tag in image_type_str for tag in pattern): return "m0scan" - + for pattern in deltam_patterns: if all(tag in image_type_str for tag in pattern): return "deltaM" - + # Default assumption for GE return "deltaM" @@ -76,25 +98,25 @@ def _is_cbf_image(self) -> bool: """ Check if the current image is a CBF (Cerebral Blood Flow) image. CBF images indicate processed data where M0 scan would be absent. - + Returns: bool: True if this appears to be a CBF image """ return self._get_volume_type() == "cbf" - + def _generate_asl_context(self, npld: int) -> list: """ Generate ASLContext based on volume type and number of PLDs. Normal order: deltaM followed by M0 scan for each PLD. - + Args: npld: Number of post-labeling delays - + Returns: list: ASLContext array """ volume_type = self._get_volume_type() - + if volume_type == "cbf": # CBF images don't have M0 scans return ["deltaM"] * npld @@ -105,4 +127,4 @@ def _generate_asl_context(self, npld: int) -> list: return ["deltaM", "m0scan"] else: # Multi-PLD: all deltaM (summed), last one is m0scan - return ["deltaM"] * (npld - 1) + ["m0scan"] \ No newline at end of file + return ["deltaM"] * (npld - 1) + ["m0scan"] diff --git a/package/src/pyaslreport/sequences/ge/asl/ge_basic_single_pld.py b/package/src/pyaslreport/sequences/ge/asl/ge_basic_single_pld.py index bc40610d..2f950fbf 100644 --- a/package/src/pyaslreport/sequences/ge/asl/ge_basic_single_pld.py +++ b/package/src/pyaslreport/sequences/ge/asl/ge_basic_single_pld.py @@ -1,11 +1,15 @@ from pyaslreport.sequences.ge.asl.ge_asl_base import GEASLBase from pyaslreport.utils import dicom_tags_utils as dcm_tags + class GEBasicSinglePLD(GEASLBase): @classmethod def matches(cls, dicom_header): + # Basic GE single-PLD is the fallback for any GE ASL header that is not + # eASL, including headers missing the internal sequence name (0019,109E). + # The factory checks the more specific eASL matcher first. return cls.is_ge_manufacturer(dicom_header) - + @classmethod def get_specificity_score(cls) -> int: """Lower specificity score because it only checks for manufacturer.""" @@ -18,12 +22,14 @@ def extract_bids_metadata(self): dicom_header = self.dicom_header if dcm_tags.GE_LABEL_DURATION in dicom_header: - bids["LabelingDuration"] = dicom_header.get(dcm_tags.GE_LABEL_DURATION, None).value + bids["LabelingDuration"] = dicom_header.get( + dcm_tags.GE_LABEL_DURATION, None + ).value if dcm_tags.GE_INVERSION_TIME in dicom_header: - bids["PostLabelingDelay"] = dicom_header.get(dcm_tags.GE_INVERSION_TIME, None).value - + bids["PostLabelingDelay"] = dicom_header.get( + dcm_tags.GE_INVERSION_TIME, None + ).value asl_context = self._generate_asl_context(1) return bids, asl_context - diff --git a/package/src/pyaslreport/sequences/ge/asl/ge_easl_multi_pld.py b/package/src/pyaslreport/sequences/ge/asl/ge_easl_multi_pld.py index f544e4f4..adb71df8 100644 --- a/package/src/pyaslreport/sequences/ge/asl/ge_easl_multi_pld.py +++ b/package/src/pyaslreport/sequences/ge/asl/ge_easl_multi_pld.py @@ -1,14 +1,15 @@ import math + from pyaslreport.sequences.ge.asl.ge_asl_base import GEASLBase from pyaslreport.utils import dicom_tags_utils as dcm_tags + class GEMultiPLD(GEASLBase): @classmethod def matches(cls, dicom_header): - return ( - cls.is_ge_manufacturer(dicom_header) and - dicom_header.get(dcm_tags.GE_INTERNAL_SEQUENCE_NAME, "").value.strip().lower() == "easl" - ) + if not cls.is_ge_manufacturer(dicom_header): + return False + return cls.get_internal_sequence_name(dicom_header) == "easl" @classmethod def get_specificity_score(cls) -> int: @@ -16,7 +17,7 @@ def get_specificity_score(cls) -> int: return 10 def extract_bids_metadata(self): - + bids = self._extract_common_metadata() bids.update(self._extract_ge_common_metadata()) bids.update(self._extract_ge_common_asl_metadata()) @@ -32,7 +33,7 @@ def extract_bids_metadata(self): npld = int(npld) except Exception: npld = None - + if npld == 1: # Single-PLD bids["LabelingDuration"] = dataset.get(dcm_tags.GE_PRIVATE_CV5, None).value @@ -42,20 +43,22 @@ def extract_bids_metadata(self): cv4 = float(dataset.get(dcm_tags.GE_PRIVATE_CV4, 0).value) cv5 = float(dataset.get(dcm_tags.GE_PRIVATE_CV5, 0).value) cv7 = float(dataset.get(dcm_tags.GE_PRIVATE_CV7, 1).value) - magnetic_field_strength = float(dataset.get(dcm_tags.MAGNETIC_FIELD_STRENGTH, 3).value) - + magnetic_field_strength = float( + dataset.get(dcm_tags.MAGNETIC_FIELD_STRENGTH, 3).value + ) + # T1 for blood T1 = 1.65 if magnetic_field_strength == 3 else 1.4 - + # Linear calculation LD_lin = [cv5 / npld] * npld PLD_lin = [cv4 + i * LD_lin[0] for i in range(npld)] - + # Exponential calculation LD_exp = [] PLD_exp = [cv4] Starget = npld * (1 - math.exp(-cv5 / T1)) * math.exp(-cv4 / T1) - + # Check if exponential calculation is mathematically valid exp_calculation_valid = True try: @@ -67,7 +70,7 @@ def extract_bids_metadata(self): break LD_exp.append(-T1 * math.log(1 - exp_factor)) else: - PLD_exp.append(PLD_exp[i-1] + LD_exp[i-1]) + PLD_exp.append(PLD_exp[i - 1] + LD_exp[i - 1]) exp_factor = Starget * math.exp(PLD_exp[i] / T1) if exp_factor >= 1: exp_calculation_valid = False @@ -75,7 +78,7 @@ def extract_bids_metadata(self): LD_exp.append(-T1 * math.log(1 - exp_factor)) except (ValueError, OverflowError): exp_calculation_valid = False - + if cv7 == 1: bids["LabelingDuration"] = LD_lin bids["PostLabelingDelay"] = PLD_lin @@ -88,14 +91,20 @@ def extract_bids_metadata(self): bids["PostLabelingDelay"] = PLD_lin elif exp_calculation_valid: # Linear combination - bids["LabelingDuration"] = [ld_lin * cv7 + ld_exp * (1 - cv7) for ld_lin, ld_exp in zip(LD_lin, LD_exp)] - bids["PostLabelingDelay"] = [pld_lin * cv7 + pld_exp * (1 - cv7) for pld_lin, pld_exp in zip(PLD_lin, PLD_exp)] + bids["LabelingDuration"] = [ + ld_lin * cv7 + ld_exp * (1 - cv7) + for ld_lin, ld_exp in zip(LD_lin, LD_exp) + ] + bids["PostLabelingDelay"] = [ + pld_lin * cv7 + pld_exp * (1 - cv7) + for pld_lin, pld_exp in zip(PLD_lin, PLD_exp) + ] else: # Fall back to linear calculation if exponential fails bids["LabelingDuration"] = LD_lin bids["PostLabelingDelay"] = PLD_lin - + # ASLcontext: all deltaM, last one is m0scan asl_context = self._generate_asl_context(npld if npld else 2) - return bids, asl_context \ No newline at end of file + return bids, asl_context diff --git a/package/src/pyaslreport/sequences/ge/ge_base.py b/package/src/pyaslreport/sequences/ge/ge_base.py index 8c278e4f..36997451 100644 --- a/package/src/pyaslreport/sequences/ge/ge_base.py +++ b/package/src/pyaslreport/sequences/ge/ge_base.py @@ -1,19 +1,24 @@ from pyaslreport.sequences.base_sequence import BaseSequence from pyaslreport.utils import dicom_tags_utils as dcm_tags +from pyaslreport.utils.dicom_repair_utils import dicom_value_to_python + class GEBaseSequence(BaseSequence): @classmethod def is_ge_manufacturer(cls, dicom_header): """ Check if the manufacturer contains GE or General Electric. - + Args: dicom_header: DICOM header dictionary - + Returns: bool: True if manufacturer contains GE or General Electric """ - manufacturer = dicom_header.get(dcm_tags.MANUFACTURER, "").value.strip().upper() + elem = dicom_header.get(dcm_tags.MANUFACTURER, None) + if elem is None or getattr(elem, "value", None) is None: + return False + manufacturer = str(elem.value).strip().upper() return "GE" in manufacturer or "GENERAL ELECTRIC" in manufacturer def _extract_ge_common_metadata(self) -> dict: @@ -21,17 +26,28 @@ def _extract_ge_common_metadata(self) -> dict: bids_ge = {} # Direct GE-specific mappings if dcm_tags.GE_ASSET_R_FACTOR in dataset: - bids_ge["AssetRFactor"] = dataset.get(dcm_tags.GE_ASSET_R_FACTOR, None).value + bids_ge["AssetRFactor"] = dicom_value_to_python( + dataset.get(dcm_tags.GE_ASSET_R_FACTOR, None).value + ) if dcm_tags.GE_ACQUISITION_MATRIX in dataset: - bids_ge["AcquisitionMatrix"] = dataset.get(dcm_tags.GE_ACQUISITION_MATRIX, None).value + bids_ge["AcquisitionMatrix"] = dicom_value_to_python( + dataset.get(dcm_tags.GE_ACQUISITION_MATRIX, None).value + ) if dcm_tags.GE_NUMBER_OF_EXCITATIONS in dataset: - bids_ge["TotalAcquiredPairs"] = dataset.get(dcm_tags.GE_NUMBER_OF_EXCITATIONS, None).value - + bids_ge["TotalAcquiredPairs"] = dicom_value_to_python( + dataset.get(dcm_tags.GE_NUMBER_OF_EXCITATIONS, None).value + ) + # Derived fields # EffectiveEchoSpacing = GE EffectiveEchoSpacing * AssetRFactor * 1e-6 - if dcm_tags.GE_EFFECTIVE_ECHO_SPACING in dataset and dcm_tags.GE_ASSET_R_FACTOR in dataset: + if ( + dcm_tags.GE_EFFECTIVE_ECHO_SPACING in dataset + and dcm_tags.GE_ASSET_R_FACTOR in dataset + ): try: - effective_echo_spacing = float(dataset.get(dcm_tags.GE_EFFECTIVE_ECHO_SPACING, None).value) + effective_echo_spacing = float( + dataset.get(dcm_tags.GE_EFFECTIVE_ECHO_SPACING, None).value + ) asset = float(dataset.get(dcm_tags.GE_ASSET_R_FACTOR, None).value) bids_ge["EffectiveEchoSpacing"] = effective_echo_spacing * asset * 1e-6 except Exception: @@ -39,10 +55,12 @@ def _extract_ge_common_metadata(self) -> dict: # TotalReadoutTime = (AcquisitionMatrix[0] - 1) * EffectiveEchoSpacing if ( - dcm_tags.GE_ACQUISITION_MATRIX in dataset and - isinstance(dataset.get(dcm_tags.GE_ACQUISITION_MATRIX, None).value, (list, tuple)) and - len(dataset.get(dcm_tags.GE_ACQUISITION_MATRIX, None).value) > 0 and - dcm_tags.GE_EFFECTIVE_ECHO_SPACING in bids_ge + dcm_tags.GE_ACQUISITION_MATRIX in dataset + and isinstance( + dataset.get(dcm_tags.GE_ACQUISITION_MATRIX, None).value, (list, tuple) + ) + and len(dataset.get(dcm_tags.GE_ACQUISITION_MATRIX, None).value) > 0 + and dcm_tags.GE_EFFECTIVE_ECHO_SPACING in bids_ge ): try: acq_matrix = dataset.get(dcm_tags.GE_ACQUISITION_MATRIX, None).value[0] @@ -50,54 +68,64 @@ def _extract_ge_common_metadata(self) -> dict: bids_ge["TotalReadoutTime"] = (acq_matrix - 1) * effective_echo_spacing except Exception: pass - + # MRAcquisitionType default is 3D if not present if dcm_tags.MR_ACQUISITION_TYPE in dataset: - bids_ge["MRAcquisitionType"] = dataset.get(dcm_tags.MR_ACQUISITION_TYPE, None).value + bids_ge["MRAcquisitionType"] = dataset.get( + dcm_tags.MR_ACQUISITION_TYPE, None + ).value else: bids_ge["MRAcquisitionType"] = "3D" # PulseSequenceType default is spiral if not present if dcm_tags.MR_ACQUISITION_TYPE in dataset: - bids_ge["PulseSequenceType"] = dataset.get(dcm_tags.MR_ACQUISITION_TYPE, None).value + bids_ge["PulseSequenceType"] = dataset.get( + dcm_tags.MR_ACQUISITION_TYPE, None + ).value else: bids_ge["PulseSequenceType"] = "spiral" - - + # Virtal Parameters that applies to all GE sequences and not specifiied in the DICOM header bids_ge["BackgroundSuppression"] = True bids_ge["BackgroundSuppressionNumberPulses"] = 4 - - + # M0 scan detection and ASL context handling # For GE: Control/label subtraction is executed on scanner, only deltaM images saved # M0 scan is included by default in all acquisitions bids_ge["M0Type"] = "Included" - + # Check if CBF images are provided instead of deltaM/M0 # This would indicate M0 scan is absent if self._is_cbf_image(): bids_ge["M0Type"] = "Absent" - + return bids_ge - + def _is_cbf_image(self) -> bool: """ Check if the current image is a CBF (Cerebral Blood Flow) image. CBF images indicate processed data where M0 scan would be absent. - + Returns: bool: True if this appears to be a CBF image """ dataset = self.dicom_header - + # Check image type or series description for CBF indicators - image_type = dataset.get(dcm_tags.IMAGE_TYPE, "").value if dcm_tags.IMAGE_TYPE in dataset else "" - series_desc = dataset.get(dcm_tags.SERIES_DESCRIPTION, "").value if dcm_tags.SERIES_DESCRIPTION in dataset else "" - + image_type = ( + dataset.get(dcm_tags.IMAGE_TYPE, "").value + if dcm_tags.IMAGE_TYPE in dataset + else "" + ) + series_desc = ( + dataset.get(dcm_tags.SERIES_DESCRIPTION, "").value + if dcm_tags.SERIES_DESCRIPTION in dataset + else "" + ) + # Common CBF indicators in GE sequences cbf_indicators = ["CBF", "PERFUSION", "FLOW", "ML/100G/MIN"] - + # Check if any CBF indicators are present combined_text = f"{image_type} {series_desc}".upper() return any(indicator in combined_text for indicator in cbf_indicators) From c8728d8a0a0261337172917e2bc84e667d3ade87 Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Thu, 13 Aug 2026 01:05:34 -0300 Subject: [PATCH 03/28] feat(package): deterministic multi-header read, repair, and best-header selection --- package/src/pyaslreport/main.py | 249 ++++++++++++++++++++++++++++---- 1 file changed, 219 insertions(+), 30 deletions(-) diff --git a/package/src/pyaslreport/main.py b/package/src/pyaslreport/main.py index 553e7e5e..017cb825 100644 --- a/package/src/pyaslreport/main.py +++ b/package/src/pyaslreport/main.py @@ -1,10 +1,21 @@ -from pyaslreport.modalities import asl, testdsc -from .modalities.registry import get_processor -from pyaslreport.sequences.factory import get_sequence +import logging as log +import os +import warnings +from collections.abc import Iterator +from contextlib import contextmanager +from dataclasses import dataclass + import pydicom +import pydicom.config as pydicom_config from pydicom.errors import InvalidDicomError -import os -import logging as log + +from pyaslreport.modalities import asl, testdsc +from pyaslreport.sequences.factory import get_sequence +from pyaslreport.utils import dicom_tags_utils as dcm_tags +from pyaslreport.utils.dicom_repair_utils import repair_dicom_dataset_in_memory + +from .modalities.registry import get_processor + def generate_report(data): """ @@ -28,42 +39,220 @@ def get_bids_metadata(data): """ modality = data.get("modality") dicom_dir = data.get("dicom_dir") - dicom_header = get_dicom_header(dicom_dir) + dicom_header = get_dicom_header(dicom_dir, modality=modality) sequence = get_sequence(modality, dicom_header) - + if sequence is None: - raise ValueError(f"No matching sequence found for modality '{modality}' with the provided DICOM header") - + raise ValueError( + f"No matching sequence found for modality '{modality}' with the " + "provided DICOM header" + ) + return sequence.extract_bids_metadata() -def get_dicom_header(dicom_dir: str): - """ - Extracts the DICOM header from the provided DICOM files. - :param dicom_dir: Directory containing DICOM files. - :return: DICOM header from the first valid DICOM file found. +@dataclass +class DicomHeaderCandidate: + """A readable DICOM header and its source path.""" + + path: str + header: pydicom.Dataset + + +def get_dicom_header(dicom_dir: str, modality: object | None = None) -> pydicom.Dataset: + """Extract a representative DICOM header from a directory. + + Args: + dicom_dir: Directory containing DICOM files. + modality: Optional modality used to choose a better ASL header. + + Returns: + DICOM header selected for metadata extraction. + + Raises: + ValueError: If no readable DICOM files are found. """ - # Get all files in the directory - all_files = [f for f in os.listdir(dicom_dir) if os.path.isfile(os.path.join(dicom_dir, f))] - - # Try to find DICOM files by attempting to read them with pydicom - dcm_files = [] + all_files = sorted( + f for f in os.listdir(dicom_dir) if os.path.isfile(os.path.join(dicom_dir, f)) + ) + + candidates: list[DicomHeaderCandidate] = [] for file in all_files: file_path = os.path.join(dicom_dir, file) try: - # Try to read the file as DICOM - pydicom.dcmread(file_path, stop_before_pixels=True) - dcm_files.append(file) + with _silence_pydicom_invalid_vr_warnings(): + dcm_header = pydicom.dcmread(file_path, stop_before_pixels=True) + repair_dicom_dataset_in_memory(dcm_header) + candidates.append(DicomHeaderCandidate(file_path, dcm_header)) except (InvalidDicomError, OSError, PermissionError): - # File is not a valid DICOM file or cannot be read continue - log.info(f"Found {len(dcm_files)} DICOM files in {dicom_dir}") + log.info(f"Found {len(candidates)} DICOM files in {dicom_dir}") - if not dcm_files: + if not candidates: raise ValueError(f"No DICOM files found in directory: {dicom_dir}") - - # Read the first valid DICOM file - dcm_header = pydicom.dcmread(os.path.join(dicom_dir, dcm_files[0])) - - return dcm_header \ No newline at end of file + + return _select_best_dicom_header(candidates, modality) + + +@contextmanager +def _silence_pydicom_invalid_vr_warnings() -> Iterator[None]: + """Silence known invalid-VR warning noise while repair checks a header.""" + pydicom_logger = log.getLogger("pydicom") + previous_level = pydicom_logger.level + previous_validation_mode = pydicom_config.settings.reading_validation_mode + pydicom_logger.setLevel(log.ERROR) + pydicom_config.settings.reading_validation_mode = pydicom_config.IGNORE + try: + with warnings.catch_warnings(): + warnings.filterwarnings("ignore") + yield + finally: + pydicom_config.settings.reading_validation_mode = previous_validation_mode + pydicom_logger.setLevel(previous_level) + + +def _select_best_dicom_header( + candidates: list[DicomHeaderCandidate], modality: object | None = None +) -> pydicom.Dataset: + """Choose a deterministic representative header for metadata extraction.""" + if _is_asl_modality(modality): + ge_candidates = [ + candidate + for candidate in candidates + if _is_ge_manufacturer(candidate.header) + ] + if ge_candidates: + return _select_best_ge_asl_header(ge_candidates) + + return sorted(candidates, key=_candidate_sort_key)[0].header + + +def _select_best_ge_asl_header( + candidates: list[DicomHeaderCandidate], +) -> pydicom.Dataset: + """Choose the most complete representative header for a GE ASL series.""" + internal_names = [ + _ge_internal_sequence_name(candidate.header) for candidate in candidates + ] + non_empty_names = [name for name in internal_names if name] + + # A missing internal sequence name is not fatal: per GE guidance, absence of + # the tag (or any value other than 'easl') is treated as basic single-PLD. + sequence_kind = ( + "ge_easl_multi_pld" if "easl" in non_empty_names else "ge_basic_single_pld" + ) + return max( + candidates, + key=lambda candidate: ( + _score_ge_asl_header(candidate.header, sequence_kind), + -_candidate_sort_key(candidate)[0], + _candidate_sort_key(candidate)[1], + ), + ).header + + +def _score_ge_asl_header(dicom_header: pydicom.Dataset, sequence_kind: str) -> int: + """Score a GE ASL header by sequence-specific metadata completeness.""" + score = 0 + + if _is_ge_manufacturer(dicom_header): + score += 100 + + internal_name = _ge_internal_sequence_name(dicom_header) + if internal_name: + score += 20 + + if sequence_kind == "ge_easl_multi_pld": + if internal_name == "easl": + score += 500 + else: + score -= 1000 + essential_tags = [ + dcm_tags.GE_PRIVATE_CV4, + dcm_tags.GE_PRIVATE_CV5, + dcm_tags.GE_PRIVATE_CV6, + dcm_tags.GE_PRIVATE_CV7, + ] + else: + if internal_name != "easl": + score += 500 + else: + score -= 1000 + essential_tags = [ + dcm_tags.GE_LABEL_DURATION, + dcm_tags.GE_INVERSION_TIME, + ] + + for tag in essential_tags: + if _has_non_empty_value(dicom_header, tag): + score += 100 + else: + score -= 100 + + for tag in [ + dcm_tags.ECHO_TIME, + dcm_tags.MAGNETIC_FIELD_STRENGTH, + dcm_tags.MR_ACQUISITION_TYPE, + dcm_tags.FLIP_ANGLE, + dcm_tags.GE_ASSET_R_FACTOR, + dcm_tags.GE_NUMBER_OF_EXCITATIONS, + ]: + if _has_non_empty_value(dicom_header, tag): + score += 10 + + return score + + +def _candidate_sort_key(candidate: DicomHeaderCandidate) -> tuple[int, str]: + """Return a deterministic ordering key for DICOM header candidates.""" + instance = _value(candidate.header, dcm_tags.INSTANCE_NUMBER) + try: + instance_number = int(instance) + except (TypeError, ValueError): + instance_number = 10**9 + return instance_number, os.path.basename(candidate.path) + + +def _is_asl_modality(modality: object | None) -> bool: + """Return True when a modality object or string represents ASL.""" + if modality is None: + return False + name = getattr(modality, "name", None) + value = getattr(modality, "value", None) + return modality == "asl" or name == "ASL" or value == "asl" + + +def _is_ge_manufacturer(dicom_header: pydicom.Dataset) -> bool: + """Return True when the DICOM manufacturer identifies GE.""" + manufacturer = _value(dicom_header, dcm_tags.MANUFACTURER, "") + manufacturer = str(manufacturer).strip().upper() + return "GE" in manufacturer or "GENERAL ELECTRIC" in manufacturer + + +def _ge_internal_sequence_name(dicom_header: pydicom.Dataset) -> str | None: + """Return the normalized GE internal sequence name, if present.""" + value = _value(dicom_header, dcm_tags.GE_INTERNAL_SEQUENCE_NAME) + if value is None or str(value).strip() == "": + return None + return str(value).strip().lower() + + +def _has_non_empty_value(dicom_header: pydicom.Dataset, tag: object) -> bool: + """Return True when a DICOM tag exists and carries a non-empty value.""" + value = _value(dicom_header, tag) + if value is None: + return False + if isinstance(value, str): + return value.strip() != "" + return True + + +def _value( + dicom_header: pydicom.Dataset, tag: object, default: object | None = None +) -> object | None: + """Return a DICOM element value or a caller-provided default.""" + elem = dicom_header.get(tag) + if elem is None: + return default + return getattr(elem, "value", elem) From 5554ddedbe0376b59ea6958b0523b27f205e99de Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Thu, 13 Aug 2026 01:05:52 -0300 Subject: [PATCH 04/28] test: cover GE DICOM repair and best-header selection --- package/tests/test_ge_dicom_metadata.py | 201 ++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 package/tests/test_ge_dicom_metadata.py diff --git a/package/tests/test_ge_dicom_metadata.py b/package/tests/test_ge_dicom_metadata.py new file mode 100644 index 00000000..e4f084de --- /dev/null +++ b/package/tests/test_ge_dicom_metadata.py @@ -0,0 +1,201 @@ +"""Tests for GE DICOM header repair and representative-header selection.""" + +from __future__ import annotations + +import struct +from pathlib import Path +from typing import Any + +import pydicom +import pydicom.config as pydicom_config +import pytest +from pydicom.dataelem import DataElement +from pydicom.dataset import Dataset, FileMetaDataset +from pydicom.tag import Tag +from pydicom.uid import ExplicitVRLittleEndian, generate_uid + +from pyaslreport import get_bids_metadata +from pyaslreport.enums import ModalityTypeValues +from pyaslreport.utils import dicom_tags_utils as dcm_tags +from pyaslreport.utils.dicom_repair_utils import GE_ASL_REPAIR_TAGS + + +def _binary_double(value: float) -> str: + """Encode a float as the anonymization-damaged value used in fixtures. + + Args: + value: Numeric value to encode as a little-endian double. + + Returns: + Latin-1 string preserving the raw double bytes. + """ + return struct.pack(" Path: + """Write a minimal DICOM file for metadata extraction tests. + + Args: + path: Destination file path. + tags: Mapping of DICOM tags to ``(VR, value)`` pairs. + + Returns: + The path that was written. + """ + ds = Dataset() + ds.SpecificCharacterSet = "ISO_IR 100" + + old_reading_mode = pydicom_config.settings.reading_validation_mode + old_writing_mode = pydicom_config.settings.writing_validation_mode + pydicom_config.settings.reading_validation_mode = pydicom_config.IGNORE + pydicom_config.settings.writing_validation_mode = pydicom_config.IGNORE + try: + for tag, (vr, value) in tags.items(): + if ( + vr in {"DS", "IS"} + and isinstance(value, str) + and any(ord(char) < 32 or ord(char) > 126 for char in value) + ): + ds.add(DataElement(tag, vr, value, already_converted=True)) + else: + ds.add_new(tag, vr, value) + finally: + pydicom_config.settings.reading_validation_mode = old_reading_mode + pydicom_config.settings.writing_validation_mode = old_writing_mode + + fm = FileMetaDataset() + fm.MediaStorageSOPClassUID = generate_uid() + fm.MediaStorageSOPInstanceUID = generate_uid() + fm.TransferSyntaxUID = ExplicitVRLittleEndian + ds.file_meta = fm + + old_writing_mode = pydicom_config.settings.writing_validation_mode + pydicom_config.settings.writing_validation_mode = pydicom_config.IGNORE + try: + pydicom.dcmwrite(str(path), ds, enforce_file_format=True) + finally: + pydicom_config.settings.writing_validation_mode = old_writing_mode + return path + + +def _base_ge_tags( + sequence_name: str | None = "3dpcasl", +) -> dict[Any, tuple[str, Any]]: + """Return common GE tags shared by synthetic ASL DICOM fixtures. + + Args: + sequence_name: Optional value for the GE internal sequence-name tag. + + Returns: + Mapping of DICOM tags to ``(VR, value)`` pairs. + """ + tags = { + dcm_tags.MANUFACTURER: ("LO", "GE MEDICAL SYSTEMS"), + dcm_tags.MR_ACQUISITION_TYPE: ("CS", "3D"), + dcm_tags.MAGNETIC_FIELD_STRENGTH: ("DS", "3"), + dcm_tags.ECHO_TIME: ("DS", "10.5"), + } + if sequence_name is not None: + tags[dcm_tags.GE_INTERNAL_SEQUENCE_NAME] = ("LO", sequence_name) + return tags + + +def test_ge_asl_missing_internal_sequence_name_falls_back_to_single_pld( + tmp_path: Path, +) -> None: + """A missing GE internal sequence name (0019,109E) is treated as single-PLD. + + Per GE guidance, absence of the tag (or any value other than 'easl') can be + safely handled as a basic GE single-PLD sequence instead of raising. + """ + tags = _base_ge_tags(sequence_name=None) + tags[dcm_tags.GE_LABEL_DURATION] = ("IS", "1450") + tags[dcm_tags.GE_INVERSION_TIME] = ("DS", "2025") + _write_dicom(tmp_path / "0001.dcm", tags) + + metadata, asl_context = get_bids_metadata( + {"modality": ModalityTypeValues.ASL, "dicom_dir": str(tmp_path)} + ) + + # Single-PLD extractor path: label duration + PLD from GE tags, single deltaM. + assert metadata["LabelingDuration"] == 1450 + assert float(metadata["PostLabelingDelay"]) == 2025 + assert asl_context == ["deltaM", "m0scan"] + + +def test_single_pld_repairs_binary_label_duration_and_selects_pld_header( + tmp_path: Path, +) -> None: + """The chosen single-PLD header should include InversionTime when available.""" + tags_without_pld = _base_ge_tags("3dpcasl") + tags_without_pld.update( + { + dcm_tags.INSTANCE_NUMBER: ("IS", "1"), + dcm_tags.GE_LABEL_DURATION: ("IS", _binary_double(1450.0)), + } + ) + _write_dicom(tmp_path / "0001.dcm", tags_without_pld) + + tags_with_pld = _base_ge_tags("3dpcasl") + tags_with_pld.update( + { + dcm_tags.INSTANCE_NUMBER: ("IS", "2"), + dcm_tags.GE_LABEL_DURATION: ("IS", _binary_double(1450.0)), + dcm_tags.GE_INVERSION_TIME: ("DS", "2025"), + } + ) + _write_dicom(tmp_path / "0002.dcm", tags_with_pld) + + metadata, asl_context = get_bids_metadata( + {"modality": ModalityTypeValues.ASL, "dicom_dir": str(tmp_path)} + ) + + assert metadata["LabelingDuration"] == 1450 + assert float(metadata["PostLabelingDelay"]) == 2025 + assert asl_context == ["deltaM", "m0scan"] + + +def test_easl_repairs_binary_cv_tags_and_generates_multi_pld(tmp_path: Path) -> None: + """Damaged eASL CV tags should be repaired before PLD arrays are computed.""" + tags = _base_ge_tags("easl") + tags.update( + { + dcm_tags.GE_PRIVATE_CV4: ("DS", _binary_double(1000.0)), + dcm_tags.GE_PRIVATE_CV5: ("DS", _binary_double(3500.0)), + dcm_tags.GE_PRIVATE_CV6: ("DS", _binary_double(3.0)), + dcm_tags.GE_PRIVATE_CV7: ("DS", _binary_double(0.2)), + } + ) + _write_dicom(tmp_path / "0001.dcm", tags) + + metadata, asl_context = get_bids_metadata( + {"modality": ModalityTypeValues.ASL, "dicom_dir": str(tmp_path)} + ) + + assert metadata["LabelingDuration"] == pytest.approx( + [1166.6666667, 1166.6666667, 1166.6666667] + ) + assert metadata["PostLabelingDelay"] == pytest.approx( + [1000.0, 2166.6666667, 3333.3333333] + ) + assert asl_context == ["deltaM", "deltaM", "m0scan"] + + +def test_ge_asl_repair_allowlist_covers_extractor_numeric_tags() -> None: + """Numeric GE ASL tags read by the extractors must be repair-aware.""" + extractor_tags = { + Tag(0x0018, 0x0081), + Tag(0x0018, 0x0082), + Tag(0x0018, 0x0087), + Tag(0x0018, 0x1314), + Tag(0x0043, 0x10A5), + Tag(0x0019, 0x10AB), + Tag(0x0019, 0x10AC), + Tag(0x0019, 0x10AD), + Tag(0x0019, 0x10AE), + Tag(0x0043, 0x1083), + Tag(0x0043, 0x192C), + Tag(0x0027, 0x1062), + } + + assert extractor_tags <= GE_ASL_REPAIR_TAGS From 03a31d4eed3d2ff08d0dde5fb61aa0372cbab46a Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Thu, 13 Aug 2026 01:47:37 -0300 Subject: [PATCH 05/28] fix(package): handle missing M0 preparation timing without crashing --- .../pyaslreport/modalities/asl/processor.py | 435 ++++++++++++------ 1 file changed, 299 insertions(+), 136 deletions(-) diff --git a/package/src/pyaslreport/modalities/asl/processor.py b/package/src/pyaslreport/modalities/asl/processor.py index 4ec31318..ed51becc 100644 --- a/package/src/pyaslreport/modalities/asl/processor.py +++ b/package/src/pyaslreport/modalities/asl/processor.py @@ -1,24 +1,25 @@ import json import math import os -from typing import Any, Dict, List, Tuple, Optional from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Tuple from pyaslreport.converters.dicom_to_nifti_converter import DICOM2NiFTIConverter -from pyaslreport.io.readers.nifti_reader import NiftiReader +from pyaslreport.core.config import config from pyaslreport.io.readers.file_reader import FileReader +from pyaslreport.io.readers.nifti_reader import NiftiReader +from pyaslreport.modalities.asl.constants import DURATION_OF_EACH_RFBLOCK from pyaslreport.modalities.asl.report_generator import ReportGenerator from pyaslreport.modalities.asl.utils import ASLUtils from pyaslreport.modalities.asl.validator import ASLValidator from pyaslreport.modalities.base_processor import BaseProcessor -from pyaslreport.modalities.asl.constants import DURATION_OF_EACH_RFBLOCK from pyaslreport.utils.unit_conversion_utils import UnitConverterUtils -from pyaslreport.core.config import config @dataclass class ProcessingContext: """Data class to hold processing context and state.""" + asl_json_data: List[Dict[str, Any]] m0_prep_times_collection: List[Any] errors: List[str] @@ -55,27 +56,27 @@ def __init__(self, data: Dict[str, Any]) -> None: def process(self) -> Dict[str, Any]: """ Main processing method that orchestrates the ASL data processing workflow. - + Returns: Dictionary containing processing results including reports, errors, and parameters. """ self._validate_input_data() - + # Step 1: Convert DICOM files if present (in-place, no temp storage) nifti_file, file_format = self._convert_dicom_files() - + # Step 2: Group and organize files using user-provided paths grouped_files = self._group_files(file_format) - + # Step 3: Read NIfTI file and get slice information nifti_slice_number = self._get_nifti_slice_number(nifti_file) - + # Step 4: Process ASL JSON data context = self._process_asl_json_data(grouped_files, nifti_slice_number) - + # Step 5: Validate M0 data and TSV files self._validate_m0_and_tsv_data(grouped_files, context, file_format) - + # Step 6: Run validation and generate reports return self._generate_reports_and_results(context) @@ -88,22 +89,22 @@ def _convert_dicom_files(self) -> Tuple[str, str]: """ Convert DICOM files to NIfTI format if present. Uses user-provided paths without creating temporary storage. - + Returns: Tuple of (nifti_file_path, file_format) """ dcm_files = self.data.get("dcm_files", []) nifti_file = self.data.get("nifti_file") - + if not dcm_files: # No DICOM files, use existing NIfTI file if not self.data.get("files"): raise RuntimeError("Neither DICOM nor NIfTI files were found.") return str(nifti_file), "nifti" - + # Convert DICOM files using the converter - converted_files, new_filenames, nifti_file, file_format, error = DICOM2NiFTIConverter.convert( - dcm_files, nifti_file + converted_files, new_filenames, nifti_file, file_format, error = ( + DICOM2NiFTIConverter.convert(dcm_files, nifti_file) ) if converted_files: @@ -120,39 +121,46 @@ def _group_files(self, file_format: str) -> List[Dict[str, Any]]: """ Group files by type using user-provided paths. Extracts filenames from paths when needed. - + Args: file_format: Format of the input files. - + Returns: List of grouped files with their data loaded. """ files = self.data.get("files", []) - + grouped_files = [] - current_group = {'asl_json': None, 'm0_json': None, 'tsv': None} + current_group = {"asl_json": None, "m0_json": None, "tsv": None} for filepath in files: # Extract filename from path filename = os.path.basename(filepath) - - if not filename.endswith(('.json', '.tsv')): + + if not filename.endswith((".json", ".tsv")): raise ValueError(f"Unsupported file format: {filename}") # Read file data directly from user-provided path data = FileReader.read(filepath) - if filename.endswith('m0scan.json') or (('m0' in filename) and file_format == "dicom"): - current_group['m0_json'] = (filename, data) - elif (filename.endswith('asl.json') and file_format == "nifti") or ( - filename.endswith('.json') and file_format == "dicom"): - if current_group['asl_json']: + if filename.endswith("m0scan.json") or ( + ("m0" in filename) and file_format == "dicom" + ): + current_group["m0_json"] = (filename, data) + elif (filename.endswith("asl.json") and file_format == "nifti") or ( + filename.endswith(".json") and file_format == "dicom" + ): + if current_group["asl_json"]: grouped_files.append(current_group) - current_group = {'asl_json': (filename, data), 'm0_json': None, 'tsv': None} - elif filename.endswith('.tsv'): - current_group['tsv'] = (filename, data) + current_group = { + "asl_json": (filename, data), + "m0_json": None, + "tsv": None, + } + elif filename.endswith(".tsv"): + current_group["tsv"] = (filename, data) - if current_group['asl_json']: + if current_group["asl_json"]: grouped_files.append(current_group) return grouped_files @@ -160,24 +168,26 @@ def _group_files(self, file_format: str) -> List[Dict[str, Any]]: def _get_nifti_slice_number(self, nifti_file: str) -> int: """ Read NIfTI file and extract slice number. - + Args: nifti_file: Path to the NIfTI file. - + Returns: Number of slices in the NIfTI file. """ nifti_img = NiftiReader.read(nifti_file) return nifti_img.shape[2] - def _process_asl_json_data(self, grouped_files: List[Dict[str, Any]], nifti_slice_number: int) -> ProcessingContext: + def _process_asl_json_data( + self, grouped_files: List[Dict[str, Any]], nifti_slice_number: int + ) -> ProcessingContext: """ Process ASL JSON data and extract metadata. - + Args: grouped_files: List of grouped files. nifti_slice_number: Number of slices in NIfTI file. - + Returns: ProcessingContext containing extracted data and metadata. """ @@ -187,8 +197,8 @@ def _process_asl_json_data(self, grouped_files: List[Dict[str, Any]], nifti_slic # Extract ASL JSON data from grouped files for group in grouped_files: - if group['asl_json'] is not None: - asl_filename, asl_data = group['asl_json'] + if group["asl_json"] is not None: + asl_filename, asl_data = group["asl_json"] asl_json_data.append(asl_data) # Update metadata flags @@ -211,94 +221,115 @@ def _process_asl_json_data(self, grouped_files: List[Dict[str, Any]], nifti_slic m0_type=None, global_pattern=None, total_acquired_pairs=None, - nifti_slice_number=nifti_slice_number + nifti_slice_number=nifti_slice_number, ) def _normalize_asl_data(self, asl_json_data: List[Dict[str, Any]]) -> None: """ Normalize ASL data by converting units and renaming fields. - + Args: asl_json_data: List of ASL JSON data dictionaries. """ for session in asl_json_data: self._rename_fields(session) self._convert_units_to_milliseconds(session) - session['PLDType'] = ASLUtils.determine_pld_type(session) + session["PLDType"] = ASLUtils.determine_pld_type(session) def _rename_fields(self, session: Dict[str, Any]) -> None: """ Rename fields in ASL session data to standard names. - + Args: session: ASL session data dictionary. """ field_mappings = { - 'RepetitionTime': 'RepetitionTimePreparation', - 'InversionTime': 'PostLabelingDelay', - 'BolusDuration': 'BolusCutOffDelayTime', - 'InitialPostLabelDelay': 'PostLabelingDelay' + "RepetitionTime": "RepetitionTimePreparation", + "InversionTime": "PostLabelingDelay", + "BolusDuration": "BolusCutOffDelayTime", + "InitialPostLabelDelay": "PostLabelingDelay", } - + for old_key, new_key in field_mappings.items(): if old_key in session: session[new_key] = session[old_key] del session[old_key] # Handle NumRFBlocks special case - if 'NumRFBlocks' in session: - session['LabelingDuration'] = session['NumRFBlocks'] * DURATION_OF_EACH_RFBLOCK + if "NumRFBlocks" in session: + session["LabelingDuration"] = ( + session["NumRFBlocks"] * DURATION_OF_EACH_RFBLOCK + ) def _convert_units_to_milliseconds(self, session: Dict[str, Any]) -> None: """ Convert time-related fields from seconds to milliseconds. - + Args: session: ASL session data dictionary. """ time_fields = [ - 'EchoTime', 'RepetitionTimePreparation', 'LabelingDuration', - 'BolusCutOffDelayTime', 'BackgroundSuppressionPulseTime', 'PostLabelingDelay' + "EchoTime", + "RepetitionTimePreparation", + "LabelingDuration", + "BolusCutOffDelayTime", + "BackgroundSuppressionPulseTime", + "PostLabelingDelay", ] - + for key in time_fields: if key in session: session[key] = UnitConverterUtils.convert_to_milliseconds(session[key]) - def _validate_m0_and_tsv_data(self, grouped_files: List[Dict[str, Any]], context: ProcessingContext, file_format: str) -> None: + def _validate_m0_and_tsv_data( + self, + grouped_files: List[Dict[str, Any]], + context: ProcessingContext, + file_format: str, + ) -> None: """ Validate M0 data and TSV files, updating context with results. - + Args: grouped_files: List of grouped files. context: Processing context to update. file_format: Format of input files. """ for i, group in enumerate(grouped_files): - if group['asl_json'] is not None: - asl_filename, asl_data = group['asl_json'] + if group["asl_json"] is not None: + asl_filename, asl_data = group["asl_json"] context.m0_type = asl_data.get("M0Type") self._validate_m0_data(group, context, asl_filename, asl_data) - self._validate_tsv_data(group, context, asl_filename, asl_data, file_format) + self._validate_tsv_data( + group, context, asl_filename, asl_data, file_format + ) - def _validate_m0_data(self, group: Dict[str, Any], context: ProcessingContext, asl_filename: str, asl_data: Dict[str, Any]) -> None: + def _validate_m0_data( + self, + group: Dict[str, Any], + context: ProcessingContext, + asl_filename: str, + asl_data: Dict[str, Any], + ) -> None: """ Validate M0 data and check for inconsistencies. - + Args: group: Group of files containing M0 data. context: Processing context to update. asl_filename: Name of ASL file. asl_data: ASL data dictionary. """ - if group['m0_json'] is not None: - m0_filename, m0_data = group['m0_json'] - + if group["m0_json"] is not None: + m0_filename, m0_data = group["m0_json"] + # Convert M0 time units - for key in ['EchoTime', 'RepetitionTimePreparation', 'RepetitionTime']: + for key in ["EchoTime", "RepetitionTimePreparation", "RepetitionTime"]: if key in m0_data: - m0_data[key] = UnitConverterUtils.convert_to_milliseconds(m0_data[key]) + m0_data[key] = UnitConverterUtils.convert_to_milliseconds( + m0_data[key] + ) # Validate M0 type consistency if context.m0_type == "Absent": @@ -311,8 +342,12 @@ def _validate_m0_data(self, group: Dict[str, Any], context: ProcessingContext, a ) # Compare parameters between ASL and M0 - params_asl, params_m0 = ASLUtils.extract_params(asl_data), ASLUtils.extract_params(m0_data) - comparison_errors, comparison_warnings = ASLUtils.compare_params(params_asl, params_m0, asl_filename, m0_filename) + params_asl, params_m0 = ASLUtils.extract_params( + asl_data + ), ASLUtils.extract_params(m0_data) + comparison_errors, comparison_warnings = ASLUtils.compare_params( + params_asl, params_m0, asl_filename, m0_filename + ) context.errors.extend(comparison_errors) context.warnings.extend(comparison_warnings) @@ -325,10 +360,17 @@ def _validate_m0_data(self, group: Dict[str, Any], context: ProcessingContext, a f"Error: M0 type specified as 'Separate' for '{asl_filename}', but m0scan.json is not provided." ) - def _validate_tsv_data(self, group: Dict[str, Any], context: ProcessingContext, asl_filename: str, asl_data: Dict[str, Any], file_format: str) -> None: + def _validate_tsv_data( + self, + group: Dict[str, Any], + context: ProcessingContext, + asl_filename: str, + asl_data: Dict[str, Any], + file_format: str, + ) -> None: """ Validate TSV data and analyze volume types. - + Args: group: Group of files containing TSV data. context: Processing context to update. @@ -336,19 +378,30 @@ def _validate_tsv_data(self, group: Dict[str, Any], context: ProcessingContext, asl_data: ASL data dictionary. file_format: Format of input files. """ - if group['tsv'] is not None: - tsv_filename, tsv_data = group['tsv'] - self._analyze_tsv_volume_types(tsv_data, context, asl_filename, asl_data, tsv_filename) + if group["tsv"] is not None: + tsv_filename, tsv_data = group["tsv"] + self._analyze_tsv_volume_types( + tsv_data, context, asl_filename, asl_data, tsv_filename + ) elif file_format == "nifti": - context.errors.append(f"Error: 'aslcontext.tsv' is missing for {asl_filename}") + context.errors.append( + f"Error: 'aslcontext.tsv' is missing for {asl_filename}" + ) else: # Handle DICOM input case self._analyze_dicom_repetitions(asl_data, context) - def _analyze_tsv_volume_types(self, tsv_data: List[str], context: ProcessingContext, asl_filename: str, asl_data: Dict[str, Any], tsv_filename: str) -> None: + def _analyze_tsv_volume_types( + self, + tsv_data: List[str], + context: ProcessingContext, + asl_filename: str, + asl_data: Dict[str, Any], + tsv_filename: str, + ) -> None: """ Analyze volume types in TSV data and validate M0 scans. - + Args: tsv_data: TSV data as list of strings. context: Processing context to update. @@ -359,7 +412,7 @@ def _analyze_tsv_volume_types(self, tsv_data: List[str], context: ProcessingCont m0scan_count = sum(1 for line in tsv_data if line.strip() == "m0scan") volume_types = [line.strip() for line in tsv_data if line.strip()] pattern, total_acquired_pairs = ASLUtils.analyze_volume_types(volume_types) - asl_data['TotalAcquiredPairs'] = total_acquired_pairs + asl_data["TotalAcquiredPairs"] = total_acquired_pairs context.total_acquired_pairs = total_acquired_pairs # Update global pattern @@ -369,12 +422,21 @@ def _analyze_tsv_volume_types(self, tsv_data: List[str], context: ProcessingCont context.global_pattern = "control-label (there's no consistent control-label or label-control order)" # Validate M0 scan consistency - self._validate_m0scan_consistency(m0scan_count, context, asl_filename, tsv_filename, asl_data) + self._validate_m0scan_consistency( + m0scan_count, context, asl_filename, tsv_filename, asl_data + ) - def _validate_m0scan_consistency(self, m0scan_count: int, context: ProcessingContext, asl_filename: str, tsv_filename: str, asl_data: Dict[str, Any]) -> None: + def _validate_m0scan_consistency( + self, + m0scan_count: int, + context: ProcessingContext, + asl_filename: str, + tsv_filename: str, + asl_data: Dict[str, Any], + ) -> None: """ Validate consistency between M0 scan count and M0 type. - + Args: m0scan_count: Number of M0 scans found in TSV. context: Processing context to update. @@ -392,14 +454,23 @@ def _validate_m0scan_consistency(self, m0scan_count: int, context: ProcessingCon f"Error: m0 type is specified as 'Separate' for '{asl_filename}', but '{tsv_filename}' contains m0scan." ) else: - self._handle_m0scan_timing(asl_data, m0scan_count, context, asl_filename, tsv_filename) + self._handle_m0scan_timing( + asl_data, m0scan_count, context, asl_filename, tsv_filename + ) else: self._handle_no_m0scan_warnings(context, asl_filename, asl_data) - def _handle_m0scan_timing(self, asl_data: Dict[str, Any], m0scan_count: int, context: ProcessingContext, asl_filename: str, tsv_filename: str) -> None: + def _handle_m0scan_timing( + self, + asl_data: Dict[str, Any], + m0scan_count: int, + context: ProcessingContext, + asl_filename: str, + tsv_filename: str, + ) -> None: """ Handle timing calculations for M0 scans. - + Args: asl_data: ASL data dictionary. m0scan_count: Number of M0 scans. @@ -408,6 +479,25 @@ def _handle_m0scan_timing(self, asl_data: Dict[str, Any], m0scan_count: int, con tsv_filename: Name of TSV file. """ repetition_times = asl_data.get("RepetitionTimePreparation", []) + if repetition_times in (None, []): + # Per BIDS, RepetitionTimePreparation is preferred because it allows a + # vector of TRs. When it is absent we fall back to the plain + # RepetitionTime rather than dropping M0 timing entirely. + fallback_tr = asl_data.get("RepetitionTime", []) + if fallback_tr in (None, []): + context.warnings.append( + f"Warning: Cannot determine M0 preparation timing for ASL file " + f"'{asl_filename}' because neither 'RepetitionTimePreparation' " + f"nor 'RepetitionTime' is present, but TSV file '{tsv_filename}' " + f"contains m0scan." + ) + return + context.warnings.append( + f"Warning: 'RepetitionTimePreparation' is missing for ASL file " + f"'{asl_filename}'; using 'RepetitionTime' for M0 preparation timing." + ) + repetition_times = fallback_tr + if not isinstance(repetition_times, list): repetition_times = [repetition_times] @@ -426,10 +516,12 @@ def _handle_m0scan_timing(self, asl_data: Dict[str, Any], m0scan_count: int, con f"than the number of 'm0scan' in TSV file '{tsv_filename}'" ) - def _handle_no_m0scan_warnings(self, context: ProcessingContext, asl_filename: str, asl_data: Dict[str, Any]) -> None: + def _handle_no_m0scan_warnings( + self, context: ProcessingContext, asl_filename: str, asl_data: Dict[str, Any] + ) -> None: """ Handle warnings when no M0 scan is provided but background suppression is enabled. - + Args: context: Processing context to update. asl_filename: Name of ASL file. @@ -447,26 +539,30 @@ def _handle_no_m0scan_warnings(self, context: ProcessingContext, asl_filename: s f"only a relative quantification is possible." ) - def _analyze_dicom_repetitions(self, asl_data: Dict[str, Any], context: ProcessingContext) -> None: + def _analyze_dicom_repetitions( + self, asl_data: Dict[str, Any], context: ProcessingContext + ) -> None: """ Analyze repetitions for DICOM input. - + Args: asl_data: ASL data dictionary. context: Processing context to update. """ - if 'lRepetitions' in asl_data: - context.total_acquired_pairs = math.ceil(int(asl_data['lRepetitions']) / 2) - asl_data['TotalAcquiredPairs'] = context.total_acquired_pairs + if "lRepetitions" in asl_data: + context.total_acquired_pairs = math.ceil(int(asl_data["lRepetitions"]) / 2) + asl_data["TotalAcquiredPairs"] = context.total_acquired_pairs context.global_pattern = "control-label" - def _generate_reports_and_results(self, context: ProcessingContext) -> Dict[str, Any]: + def _generate_reports_and_results( + self, context: ProcessingContext + ) -> Dict[str, Any]: """ Generate validation reports and final results. - + Args: context: Processing context containing all extracted data. - + Returns: Dictionary containing all processing results. """ @@ -478,55 +574,89 @@ def _generate_reports_and_results(self, context: ProcessingContext) -> Dict[str, # Run validation validation_results = ASLValidator().validate(validation_data) - combined_major_errors, combined_major_errors_concise, combined_errors, combined_errors_concise, \ - combined_warnings, combined_warnings_concise, combined_values = validation_results + ( + combined_major_errors, + combined_major_errors_concise, + combined_errors, + combined_errors_concise, + combined_warnings, + combined_warnings_concise, + combined_values, + ) = validation_results # Add M0-specific errors and warnings ASLUtils.ensure_keys_and_append(combined_errors, "m0_error", context.errors) - ASLUtils.ensure_keys_and_append(combined_warnings, "m0_warning", context.warnings) + ASLUtils.ensure_keys_and_append( + combined_warnings, "m0_warning", context.warnings + ) # Generate concise error and warning texts - error_texts = self._generate_concise_texts(combined_major_errors_concise, combined_errors_concise, combined_warnings_concise) + error_texts = self._generate_concise_texts( + combined_major_errors_concise, + combined_errors_concise, + combined_warnings_concise, + ) # Extract inconsistencies - inconsistencies = self._extract_inconsistencies(combined_errors_concise, combined_major_errors_concise, combined_warnings_concise) + inconsistencies = self._extract_inconsistencies( + combined_errors_concise, + combined_major_errors_concise, + combined_warnings_concise, + ) # Generate M0-specific concise errors and warnings - m0_concise_error, m0_concise_error_params = ASLUtils.condense_and_reformat_discrepancies(context.errors) - m0_concise_warning, _ = ASLUtils.condense_and_reformat_discrepancies(context.warnings) + m0_concise_error, m0_concise_error_params = ( + ASLUtils.condense_and_reformat_discrepancies(context.errors) + ) + m0_concise_warning, _ = ASLUtils.condense_and_reformat_discrepancies( + context.warnings + ) # Determine M0 TR and generate reports M0_TR, report_line_on_M0 = ASLUtils.determine_m0_tr_and_report( - context.m0_prep_times_collection, context.all_absent, context.bs_all_off, - context.errors, m0_type=context.m0_type, inconsistent_params=m0_concise_error_params + context.m0_prep_times_collection, + context.all_absent, + context.bs_all_off, + context.errors, + m0_type=context.m0_type, + inconsistent_params=m0_concise_error_params, ) # Generate ASL and M0 reports reports = self._generate_reports( - combined_values, combined_major_errors, combined_errors, context, M0_TR, report_line_on_M0 + combined_values, + combined_major_errors, + combined_errors, + context, + M0_TR, + report_line_on_M0, ) # Prepare parameters parameters = self._prepare_parameters(context, M0_TR, reports) - required_condition_schema = config['schemas']['required_condition_schema'] + required_condition_schema = config["schemas"]["required_condition_schema"] missing_required_parameters: Dict[str, str] = {} for idx, session in enumerate(context.asl_json_data): - asl_type = session.get('ArterialSpinLabelingType', None) + asl_type = session.get("ArterialSpinLabelingType", None) for param, condition in required_condition_schema.items(): # Determine if this param is required for this ASL type is_required = False - if condition == 'all': + if condition == "all": is_required = True elif isinstance(condition, dict): - asl_type_list = condition.get('ArterialSpinLabelingType', []) + asl_type_list = condition.get("ArterialSpinLabelingType", []) if isinstance(asl_type_list, str): asl_type_list = [asl_type_list] if asl_type and asl_type in asl_type_list: is_required = True if is_required and param not in session: - param_units = config['schemas'].get('param_units', {}) or {} - unit = param_units.get(param, '-') if isinstance(param_units, dict) else '-' + param_units = config["schemas"].get("param_units", {}) or {} + unit = ( + param_units.get(param, "-") + if isinstance(param_units, dict) + else "-" + ) missing_required_parameters[param] = unit return { @@ -550,50 +680,73 @@ def _generate_reports_and_results(self, context: ProcessingContext) -> Dict[str, "asl_parameters": parameters["asl"], "m0_parameters": parameters["m0"], "extended_parameters": parameters["extended"], - "missing_required_parameters": missing_required_parameters + "missing_required_parameters": missing_required_parameters, } - def _generate_concise_texts(self, combined_major_errors_concise: Dict, combined_errors_concise: Dict, combined_warnings_concise: Dict) -> Dict[str, str]: + def _generate_concise_texts( + self, + combined_major_errors_concise: Dict, + combined_errors_concise: Dict, + combined_warnings_concise: Dict, + ) -> Dict[str, str]: """ Generate concise error and warning texts. - + Args: combined_major_errors_concise: Concise major errors. combined_errors_concise: Concise errors. combined_warnings_concise: Concise warnings. - + Returns: Dictionary containing concise texts. """ return { - "major_errors": ASLUtils.extract_concise_error(combined_major_errors_concise), + "major_errors": ASLUtils.extract_concise_error( + combined_major_errors_concise + ), "errors": ASLUtils.extract_concise_error(combined_errors_concise), - "warnings": ASLUtils.extract_concise_error(combined_warnings_concise) + "warnings": ASLUtils.extract_concise_error(combined_warnings_concise), } - def _extract_inconsistencies(self, combined_errors_concise: Dict, combined_major_errors_concise: Dict, combined_warnings_concise: Dict) -> Dict[str, List[str]]: + def _extract_inconsistencies( + self, + combined_errors_concise: Dict, + combined_major_errors_concise: Dict, + combined_warnings_concise: Dict, + ) -> Dict[str, List[str]]: """ Extract inconsistencies from validation results. - + Args: combined_errors_concise: Concise errors. combined_major_errors_concise: Concise major errors. combined_warnings_concise: Concise warnings. - + Returns: Dictionary containing inconsistency lists. """ return { "errors": ReportGenerator.extract_inconsistencies(combined_errors_concise), - "major_errors": ReportGenerator.extract_inconsistencies(combined_major_errors_concise), - "warnings": ReportGenerator.extract_inconsistencies(combined_warnings_concise) + "major_errors": ReportGenerator.extract_inconsistencies( + combined_major_errors_concise + ), + "warnings": ReportGenerator.extract_inconsistencies( + combined_warnings_concise + ), } - def _generate_reports(self, combined_values: Dict, combined_major_errors: Dict, combined_errors: Dict, - context: ProcessingContext, M0_TR: Any, report_line_on_M0: str) -> Dict[str, Any]: + def _generate_reports( + self, + combined_values: Dict, + combined_major_errors: Dict, + combined_errors: Dict, + context: ProcessingContext, + M0_TR: Any, + report_line_on_M0: str, + ) -> Dict[str, Any]: """ Generate ASL and M0 reports. - + Args: combined_values: Combined validation values. combined_major_errors: Combined major errors. @@ -601,16 +754,20 @@ def _generate_reports(self, combined_values: Dict, combined_major_errors: Dict, context: Processing context. M0_TR: M0 TR value. report_line_on_M0: M0 report line. - + Returns: Dictionary containing basic and extended reports. """ asl_report, asl_parameters = ReportGenerator.generate_asl_report( - combined_values, combined_major_errors, combined_errors, context.global_pattern, - context.m0_type, total_acquired_pairs=context.total_acquired_pairs, - slice_number=context.nifti_slice_number + combined_values, + combined_major_errors, + combined_errors, + context.global_pattern, + context.m0_type, + total_acquired_pairs=context.total_acquired_pairs, + slice_number=context.nifti_slice_number, ) - + m0_report = ReportGenerator.generate_m0_report(report_line_on_M0, M0_TR) basic_report = asl_report + m0_report @@ -623,18 +780,20 @@ def _generate_reports(self, combined_values: Dict, combined_major_errors: Dict, "basic_report": basic_report, "extended_report": extended_report, "asl_parameters": asl_parameters, - "extended_parameters": extended_parameters + "extended_parameters": extended_parameters, } - def _prepare_parameters(self, context: ProcessingContext, M0_TR: Any, reports: Dict) -> Dict[str, List]: + def _prepare_parameters( + self, context: ProcessingContext, M0_TR: Any, reports: Dict + ) -> Dict[str, List]: """ Prepare parameter lists for the result. - + Args: context: Processing context. M0_TR: M0 TR value. reports: Dictionary containing report parameters. - + Returns: Dictionary containing parameter lists. """ @@ -644,13 +803,17 @@ def _prepare_parameters(self, context: ProcessingContext, M0_TR: Any, reports: D m0_parameters.append(("M0 TR", M0_TR)) # Convert boolean values to strings for ASL and extended parameters - asl_parameters = [(key, "True" if isinstance(value, bool) and value else value) - for key, value in reports["asl_parameters"]] - extended_parameters = [(key, "True" if isinstance(value, bool) and value else value) - for key, value in reports["extended_parameters"]] + asl_parameters = [ + (key, "True" if isinstance(value, bool) and value else value) + for key, value in reports["asl_parameters"] + ] + extended_parameters = [ + (key, "True" if isinstance(value, bool) and value else value) + for key, value in reports["extended_parameters"] + ] return { "asl": asl_parameters, "m0": m0_parameters, - "extended": extended_parameters + "extended": extended_parameters, } From 02b53118311035d169ef0388b608b6e574114e63 Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Thu, 13 Aug 2026 01:47:48 -0300 Subject: [PATCH 06/28] test: cover M0 timing fallback when RepetitionTimePreparation is missing --- package/tests/test_m0_tsv_validation.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/package/tests/test_m0_tsv_validation.py b/package/tests/test_m0_tsv_validation.py index 3cf1ed85..cbcfd508 100644 --- a/package/tests/test_m0_tsv_validation.py +++ b/package/tests/test_m0_tsv_validation.py @@ -143,6 +143,29 @@ def test_total_acquired_pairs_set( ) assert asl_data["TotalAcquiredPairs"] == 2 # two control-label pairs + def test_m0scan_with_missing_repetition_time_warns_without_crashing( + self, + make_processor: Callable[..., ASLProcessor], + make_context: Callable[..., ProcessingContext], + ) -> None: + """M0 timing cannot be assessed without RepetitionTimePreparation.""" + proc = make_processor() + ctx = make_context(m0_type="Included") + asl_data = {"M0Type": "Included", "BackgroundSuppression": False} + tsv_data = ["deltaM", "m0scan"] + + proc._analyze_tsv_volume_types( + tsv_data, ctx, "asl.json", asl_data, "context.tsv" + ) + + expected_warning = ( + "Warning: Cannot determine M0 preparation timing for ASL file " + "'asl.json' because neither 'RepetitionTimePreparation' nor " + "'RepetitionTime' is present, but TSV file 'context.tsv' contains " + "m0scan." + ) + assert ctx.warnings == [expected_warning] + # ---------- _handle_no_m0scan_warnings ---------- From a7344ddf1f26664efc212c750afad78bb6d2585c Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Thu, 13 Aug 2026 02:45:40 -0300 Subject: [PATCH 07/28] fix(package): clearer M0 inconsistency wording --- .../src/pyaslreport/modalities/asl/utils.py | 109 ++++++++++++------ 1 file changed, 72 insertions(+), 37 deletions(-) diff --git a/package/src/pyaslreport/modalities/asl/utils.py b/package/src/pyaslreport/modalities/asl/utils.py index 1c55d1f9..5877018c 100644 --- a/package/src/pyaslreport/modalities/asl/utils.py +++ b/package/src/pyaslreport/modalities/asl/utils.py @@ -1,14 +1,15 @@ import os -from pyaslreport.core.config import config +from pyaslreport.core.config import config from pyaslreport.io.readers.file_reader import FileReader + class ASLUtils: @staticmethod def determine_pld_type(session): # Check if any of the specified keys contain arrays with different unique values - for key in ['PostLabelingDelay', 'EchoTime', 'LabelingDuration']: + for key in ["PostLabelingDelay", "EchoTime", "LabelingDuration"]: if key in session and isinstance(session[key], list): unique_values = set(session[key]) if len(unique_values) > 1: @@ -22,12 +23,12 @@ def extract_params(data): "FlipAngle": data.get("FlipAngle"), "MagneticFieldStrength": data.get("MagneticFieldStrength"), "MRAcquisitionType": data.get("MRAcquisitionType"), - "PulseSequenceType": data.get("PulseSequenceType") + "PulseSequenceType": data.get("PulseSequenceType"), } @staticmethod def compare_params(params_asl, params_m0, asl_filename, m0_filename): - consistency_schema = config['schemas']['consistency_schema'] + consistency_schema = config["schemas"]["consistency_schema"] errors = [] warnings = [] @@ -38,57 +39,70 @@ def compare_params(params_asl, params_m0, asl_filename, m0_filename): if not schema: continue - validation_type = schema.get('validation_type') - warning_variation = schema.get('warning_variation', 1e-5) - error_variation = schema.get('error_variation', 1e-4) + validation_type = schema.get("validation_type") + warning_variation = schema.get("warning_variation", 1e-5) + error_variation = schema.get("error_variation", 1e-4) if validation_type == "string": if asl_value != m0_value: errors.append( f"Discrepancy in '{param}' for ASL file '{asl_filename}' and M0 file '{m0_filename}': " - f"ASL value = {asl_value}, M0 value = {m0_value}") + f"ASL value = {asl_value}, M0 value = {m0_value}" + ) elif validation_type == "floatOrArray": - if isinstance(asl_value, (int, float)) and isinstance(m0_value, (int, float)): + if isinstance(asl_value, (int, float)) and isinstance( + m0_value, (int, float) + ): difference = abs(asl_value - m0_value) difference_formatted = f"{difference:.2f}" if difference > error_variation: errors.append( f"ERROR: Discrepancy in '{param}' for ASL file '{asl_filename}' and M0 file '{m0_filename}': " - f"ASL value = {asl_value}, M0 value = {m0_value}, difference = {difference_formatted}, exceeds error threshold {error_variation}") + f"ASL value = {asl_value}, M0 value = {m0_value}, difference = {difference_formatted}, exceeds error threshold {error_variation}" + ) elif difference > warning_variation: warnings.append( f"WARNING: Discrepancy in '{param}' for ASL file '{asl_filename}' and M0 file '{m0_filename}': " - f"ASL value = {asl_value}, M0 value = {m0_value}, difference = {difference_formatted}, exceeds warning threshold {warning_variation}") + f"ASL value = {asl_value}, M0 value = {m0_value}, difference = {difference_formatted}, exceeds warning threshold {warning_variation}" + ) return errors, warnings @staticmethod def analyze_volume_types(volume_types): - first_non_m0type = next((vt for vt in volume_types if vt in {'control', 'label', 'deltam'}), None) + first_non_m0type = next( + (vt for vt in volume_types if vt in {"control", "label", "deltam"}), None + ) pattern = "pattern error" control_label_pairs = 0 label_control_pairs = 0 - if first_non_m0type == 'control': - pattern = 'control-label' - elif first_non_m0type == 'label': - pattern = 'label-control' - elif first_non_m0type == 'deltam': - pattern = 'deltam' - deltam_count = volume_types.count('deltam') + if first_non_m0type == "control": + pattern = "control-label" + elif first_non_m0type == "label": + pattern = "label-control" + elif first_non_m0type == "deltam": + pattern = "deltam" + deltam_count = volume_types.count("deltam") return pattern, deltam_count i = 0 while i < len(volume_types): - if volume_types[i] == 'control' and i + 1 < len(volume_types) and volume_types[ - i + 1] == 'label': + if ( + volume_types[i] == "control" + and i + 1 < len(volume_types) + and volume_types[i + 1] == "label" + ): control_label_pairs += 1 i += 2 - elif volume_types[i] == 'label' and i + 1 < len(volume_types) and volume_types[ - i + 1] == 'control': + elif ( + volume_types[i] == "label" + and i + 1 < len(volume_types) + and volume_types[i + 1] == "control" + ): label_control_pairs += 1 i += 2 else: i += 1 - if pattern == 'control-label': + if pattern == "control-label": return pattern, control_label_pairs else: return pattern, label_control_pairs @@ -108,19 +122,19 @@ def extract_concise_error(issue_dict): if isinstance(issue, dict): for sub_issue, details in issue.items(): if isinstance(details, list): - details_str = ', '.join(map(str, details)) + details_str = ", ".join(map(str, details)) report.append(f'{sub_issue} for "{field}": {details_str}') else: report.append(f'{sub_issue} for "{field}": {details}') - return '\n'.join(report) + return "\n".join(report) @staticmethod def condense_and_reformat_discrepancies(error_list): if not error_list: return [], [] - + condensed_errors = {} param_names = [] @@ -129,10 +143,12 @@ def condense_and_reformat_discrepancies(error_list): # Extract the key part of the error message start_idx = error.index("Discrepancy in '") end_idx = error.index("'", start_idx + len("Discrepancy in '")) - param_name = error[start_idx + len("Discrepancy in '"):end_idx] + param_name = error[start_idx + len("Discrepancy in '") : end_idx] # Reformat the message in the desired format - reformatted_error = f"{param_name} (M0): Discrepancy between ASL JSON and M0 JSON" + reformatted_error = ( + f"{param_name} (M0): Discrepancy between ASL JSON and M0 JSON" + ) # If the parameter is already in the dictionary, skip adding it again if param_name not in condensed_errors: @@ -146,16 +162,27 @@ def condense_and_reformat_discrepancies(error_list): return list(condensed_errors.values()), param_names @staticmethod - def determine_m0_tr_and_report(m0_prep_times_collection, all_absent, bs_all_off, discrepancies, - m0_type, inconsistent_params): + def determine_m0_tr_and_report( + m0_prep_times_collection, + all_absent, + bs_all_off, + discrepancies, + m0_type, + inconsistent_params, + ): M0_TR = None if m0_type == "Estimate": return M0_TR, "A single M0 scaling value is provided for CBF quantification" if m0_prep_times_collection and all(m0_prep_times_collection): - if all(abs(x - m0_prep_times_collection[0]) < 1e-5 for x in m0_prep_times_collection): + if all( + abs(x - m0_prep_times_collection[0]) < 1e-5 + for x in m0_prep_times_collection + ): M0_TR = m0_prep_times_collection[0] else: - discrepancies.append("Different `RepetitionTimePreparation` parameters for M0") + discrepancies.append( + "Different `RepetitionTimePreparation` parameters for M0" + ) if all_absent and bs_all_off: report_line_on_M0 = "No m0-scan was acquired, a control image without background suppression was used for M0 estimation." @@ -165,7 +192,15 @@ def determine_m0_tr_and_report(m0_prep_times_collection, all_absent, bs_all_off, if not discrepancies: report_line_on_M0 = "M0 was acquired with the same readout and without background suppression." else: - inconsistent_params_str = ", ".join(inconsistent_params) - report_line_on_M0 = f"There is inconsistency in {inconsistent_params_str} between M0 and ASL scans." - - return M0_TR, report_line_on_M0 \ No newline at end of file + inconsistent_params_str = ", ".join(p for p in inconsistent_params if p) + if inconsistent_params_str: + report_line_on_M0 = ( + "There is an inconsistency in " + f"{inconsistent_params_str} between the M0 and ASL scans." + ) + else: + report_line_on_M0 = ( + "There is an inconsistency between the M0 and ASL scans." + ) + + return M0_TR, report_line_on_M0 From 0d39246d06c45ed9f974ef257e9ec853df47decc Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Thu, 13 Aug 2026 03:04:36 -0300 Subject: [PATCH 08/28] refactor(package): rebuild ASL Methods paragraph as a modular clause builder --- .../modalities/asl/report_generator.py | 394 ++++++++++++------ 1 file changed, 277 insertions(+), 117 deletions(-) diff --git a/package/src/pyaslreport/modalities/asl/report_generator.py b/package/src/pyaslreport/modalities/asl/report_generator.py index 5887d786..9fa53b7f 100644 --- a/package/src/pyaslreport/modalities/asl/report_generator.py +++ b/package/src/pyaslreport/modalities/asl/report_generator.py @@ -1,23 +1,131 @@ from collections import Counter +from typing import Any class ReportGenerator: from collections import Counter - # Function to generate the ASL report based on the provided values and error data. - # The function constructs a detailed text report and also extracts key parameters for further use. + # ===================================================================== + # Tier 1 helpers (readability / cohesion) + # ===================================================================== @staticmethod - def generate_asl_report(values, combined_major_errors, combined_errors, global_pattern, m0_type, - total_acquired_pairs, slice_number): - report_lines = [] + def _is_missing(value: object) -> bool: + """Return whether a value carries no usable report information. + + Args: + value: Extracted parameter value to inspect. + + Returns: + True when the value is None or a blank / "N/A" string. + """ + if value is None: + return True + if isinstance(value, str) and value.strip() in ("", "N/A"): + return True + return False + + @staticmethod + def _join_and(parts: list[object]) -> str: + """Join items into natural-language prose with an Oxford comma. + + Args: + parts: Items to join; falsy items are dropped. + + Returns: + "" for no items, "a", "a and b", or "a, b, and c". + """ + text_parts = [str(part) for part in parts if part] + if not text_parts: + return "" + if len(text_parts) == 1: + return text_parts[0] + if len(text_parts) == 2: + return f"{text_parts[0]} and {text_parts[1]}" + return ", ".join(text_parts[:-1]) + ", and " + text_parts[-1] + + @staticmethod + def _format_duration_list(value: object, unit: str = "ms") -> str: + """Format a duration value or list, collapsing identical entries. + + Args: + value: Scalar duration, list/tuple of durations, or a missing value. + unit: Unit suffix appended to each rendered number. + + Returns: + "" when the value is missing, a single "" when a list holds + one unique value, otherwise the comma-joined values. + """ + if ReportGenerator._is_missing(value): + return "" + if isinstance(value, (list, tuple)): + uniq = list(dict.fromkeys(value)) # de-duplicate, preserve order + if len(uniq) == 1: + return f"{uniq[0]}{unit}" + return ", ".join(f"{v}{unit}" for v in value) + return f"{value}{unit}" + + # Raw internal pattern tokens -> human-readable words + _PATTERN_DISPLAY = { + "deltam": "deltaM", + "controllabel": "control-label", + "labelcontrol": "label-control", + } + + @staticmethod + def _pattern_words(global_pattern: str, plural: bool) -> tuple[str, str]: + """Map an internal volume pattern to a display label and count noun. + + Args: + global_pattern: Internal token (e.g. "deltam", "controllabel"). + plural: Whether the count noun should be pluralized. + + Returns: + A (label, noun) pair, e.g. ("deltaM", "volumes") or + ("control-label", "pair"). + """ + label = ReportGenerator._PATTERN_DISPLAY.get(global_pattern, global_pattern) + if global_pattern == "deltam": + noun = "volumes" if plural else "volume" + else: + noun = "pairs" if plural else "pair" + return label, noun + + @staticmethod + def generate_asl_report( + values: dict[str, Any], + combined_major_errors: dict[str, Any], + combined_errors: dict[str, Any], + global_pattern: str | None, + m0_type: str | None, + total_acquired_pairs: int | None, + slice_number: int, + ) -> tuple[str, list[tuple[str, Any]]]: + """Build the ASL Methods paragraph and its structured parameter list. + + Rewritten as a modular, multi-sentence builder: scanner/family, + timing/suppression, and geometry/repetitions. Clauses whose values are + missing drop out entirely instead of emitting placeholders. + + Args: + values: Extracted BIDS parameter values keyed by field name. + combined_major_errors: Major-error data keyed by field name. + combined_errors: Non-major error/inconsistency data keyed by field. + global_pattern: ASL volume pattern token, or None. + m0_type: M0 acquisition type, or None. + total_acquired_pairs: Number of acquired control-label pairs, or None. + slice_number: Number of slices from the NIfTI header. + + Returns: + A (report_paragraph, asl_parameters) tuple, where asl_parameters is + a list of (label, value) pairs. + """ asl_parameters = [] + is_missing = ReportGenerator._is_missing + # ---- extraction (unchanged from original) ---- pld_type = ReportGenerator.handle_bolus_cutoff_technique(values, 'PLDType', combined_major_errors) - # total_acquired_pairs = ReportGenerator.extract_value(values, "TotalAcquiredPairs", combined_errors) - extended_pld_text = ReportGenerator.handle_pld_values(values, combined_errors, 'PostLabelingDelay', - global_pattern, m0_type) - + global_pattern, m0_type) magnetic_field_strength = ReportGenerator.extract_value(values, "MagneticFieldStrength", combined_errors) manufacturer = ReportGenerator.extract_value(values, "Manufacturer", combined_errors) manufacturers_model_name = ReportGenerator.extract_and_format_unique_string_values(values, @@ -25,157 +133,209 @@ def generate_asl_report(values, combined_major_errors, combined_errors, global_p asl_type = ReportGenerator.extract_value(values, "ArterialSpinLabelingType", combined_major_errors) mr_acq_type = ReportGenerator.extract_value(values, "MRAcquisitionType", combined_major_errors) pulse_seq_type = ReportGenerator.extract_value(values, "PulseSequenceType", combined_major_errors) - if pulse_seq_type == "3Dgrase": pulse_seq_type = "GRASE" - echo_time = ReportGenerator.extract_value(values, "EchoTime", combined_errors) repetition_time = ReportGenerator.handle_pld_values(values, combined_errors, 'RepetitionTimePreparation') - flip_angle = ReportGenerator.extract_value(values, "FlipAngle", combined_errors) labeling_duration = ReportGenerator.extract_value(values, "LabelingDuration", combined_errors) - voxel_size_1_2, voxel_size_3 = ReportGenerator.handle_voxel_size(values, combined_errors) - bolus_cutoff_flag = ReportGenerator.handle_bolus_cutoff_flag(values, 'BolusCutOffFlag', combined_errors) bolus_cutoff_technique = ReportGenerator.handle_bolus_cutoff_technique(values, 'BolusCutOffTechnique', combined_errors) bolus_cutoff_delay_time = ReportGenerator.handle_bolus_cutoff_delay_time(values, combined_errors) - background_suppression = ReportGenerator.handle_bolus_cutoff_flag(values, 'BackgroundSuppression', combined_errors) background_suppression_number_pulses = ReportGenerator.extract_value(values, 'BackgroundSuppressionNumberPulses', combined_errors, report_range=True) background_suppression_pulse_time = ReportGenerator.extract_value(values, 'BackgroundSuppressionPulseTime', combined_errors) - acquisition_duration = ReportGenerator.extract_value(values, "AcquisitionDuration", combined_errors, format_duration=True) pasl_type = ReportGenerator.extract_value(values, "PASLType", combined_errors, recommneded=True) labeling_slab_thickness = ReportGenerator.extract_value(values, "LabelingSlabThickness", combined_errors, recommneded=True) - report_lines.append( - f"ASL was acquired on a {magnetic_field_strength}T {manufacturer}" - f" {manufacturers_model_name} scanner using {pld_type} " + is_pasl = str(asl_type).upper() == 'PASL' + is_pcasl = str(asl_type).upper() in ('PCASL', 'CASL') + + # ================================================================= + # Sentence 1: scanner + acquisition family + readout + # ================================================================= + scanner = "" + if not is_missing(magnetic_field_strength): + scanner += f"{magnetic_field_strength}T " + for part in (manufacturer, manufacturers_model_name): + if not is_missing(part): + scanner += f"{part} " + scanner = scanner.strip() + s1 = "ASL was acquired on a " + ( + f"{scanner} scanner." if scanner else "scanner." + ) + + # labeling phrase (drop 'N/A' ASL type instead of writing 'N/A labeling') + family = ReportGenerator._join_and([]) or " ".join( + [ + p + for p in ( + pld_type if not is_missing(pld_type) else "", + pasl_type if not is_missing(pasl_type) else "", + asl_type if not is_missing(asl_type) else "", + ) + if p + ] ) + # readout: de-duplicate dimensionality vs readout type ('3D 3D' -> '3D') + readout_parts = [] + if not is_missing(mr_acq_type): + readout_parts.append(mr_acq_type) + if not is_missing(pulse_seq_type) and pulse_seq_type != mr_acq_type: + readout_parts.append(pulse_seq_type) + readout = " ".join(readout_parts) + + family_cap = (family[0].upper() + family[1:]) if family else family + if family and readout: + s1 += f" {family_cap} labeling was performed with a {readout} readout." + elif family: + s1 += f" {family_cap} labeling was performed." + elif readout: + s1 += f" A {readout} readout was used." + asl_parameters.append(("Magnetic Field Strength", f"{magnetic_field_strength}T")) asl_parameters.append(("Manufacturer", manufacturer)) asl_parameters.append(("Manufacturer's Model Name", manufacturers_model_name)) asl_parameters.append(("PLD Type", pld_type)) - - if pasl_type != "": - report_lines.append(f"{pasl_type} ") + if not is_missing(pasl_type): asl_parameters.append(("PASL Type", pasl_type)) - - report_lines.append( - f"{asl_type} labeling and a {mr_acq_type} {pulse_seq_type} readout with the following parameters: " - ) asl_parameters.append(("ASL Type", asl_type)) asl_parameters.append(("MR Acquisition Type", mr_acq_type)) asl_parameters.append(("Pulse Sequence Type", pulse_seq_type)) - report_lines.append( - f"TE = {echo_time}ms, TR = {repetition_time}, " - f"flip angle {flip_angle} degrees, " - ) - asl_parameters.append(("Echo Time", f"{echo_time}ms")) - asl_parameters.append(("Repetition Time", repetition_time)) - asl_parameters.append(("Flip Angle", flip_angle)) - - report_lines.append( - f"in-plane resolution {voxel_size_1_2}mm^2, " - ) - asl_parameters.append(("In-plane Resolution", f"{voxel_size_1_2}mm^2")) - - report_lines.append( - f"{slice_number} slices with {voxel_size_3}mm thickness, " - ) - asl_parameters.append(("Slice Thickness", f"{voxel_size_3}mm")) - - if asl_type == 'PCASL': - report_lines.append( - f"labeling duration {labeling_duration}ms, " - ) - asl_parameters.append(("Labeling Duration", labeling_duration)) - - report_lines.append( - f"PLD {extended_pld_text}, " - ) - asl_parameters.append(("PLD", extended_pld_text)) - - if asl_type.upper() == 'PASL': - report_lines.append( - f"inversion time {extended_pld_text}, " + # ================================================================= + # Sentence 2: ASL timing + background suppression + # ================================================================= + timing = "" + if is_pcasl: + ld = ReportGenerator._format_duration_list(labeling_duration, "ms") + pld = "" if is_missing(extended_pld_text) else str(extended_pld_text) + if ld: + asl_parameters.append(("Labeling Duration", labeling_duration)) + if pld: + asl_parameters.append(("PLD", extended_pld_text)) + pld_word = "a PLD of" if ("," not in pld) else "PLDs of" + if ld and pld: + timing = f"The labeling duration was {ld}, followed by {pld_word} {pld}" + elif ld: + timing = f"The labeling duration was {ld}" + elif pld: + timing = f"{pld_word[0].upper() + pld_word[1:]} {pld}" + elif is_pasl: + inv = "" if is_missing(extended_pld_text) else str(extended_pld_text) + inv_word = ( + "an inversion time of" if ("," not in inv) else "inversion times of" ) - asl_parameters.append(("Inversion Time", extended_pld_text)) - - if labeling_slab_thickness != "": - report_lines.append( - f"labeling slab thickness {labeling_slab_thickness}mm, " + if inv: + timing = f"Labeling used {inv_word} {inv}" + asl_parameters.append(("Inversion Time", extended_pld_text)) + if not is_missing(labeling_slab_thickness): + clause = f"a labeling slab thickness of {labeling_slab_thickness}mm" + timing = ( + f"{timing}, with {clause}" + if timing + else clause[0].upper() + clause[1:] ) asl_parameters.append(("Labeling Slab Thickness", f"{labeling_slab_thickness}mm")) - - if bolus_cutoff_flag is not None: - report_lines.append( - f"{bolus_cutoff_flag} bolus saturation " - ) - asl_parameters.append(("Bolus Cutoff Flag", bolus_cutoff_flag)) - if bolus_cutoff_flag == "with": - report_lines.append( - f"using {bolus_cutoff_technique} pulse " - ) + if bolus_cutoff_flag == "with": + bolus = "with bolus saturation" + if not is_missing(bolus_cutoff_technique): + bolus += f" using a {bolus_cutoff_technique} pulse" asl_parameters.append(("Bolus Cutoff Technique", bolus_cutoff_technique)) - report_lines.append( - f"applied {bolus_cutoff_delay_time} after the labeling, " - ) + if not is_missing(bolus_cutoff_delay_time): + bolus += f" applied {bolus_cutoff_delay_time} after labeling" asl_parameters.append(("Bolus Cutoff Delay Time", bolus_cutoff_delay_time)) + timing = ( + f"{timing}, {bolus}" + if timing + else bolus[0].upper() + bolus[1:] + ) + asl_parameters.append(("Bolus Cutoff Flag", bolus_cutoff_flag)) + elif bolus_cutoff_flag == "without": + asl_parameters.append(("Bolus Cutoff Flag", bolus_cutoff_flag)) - if background_suppression is not None: - report_lines.append(f"{background_suppression} background suppression") - asl_parameters.append(("Background Suppression", background_suppression)) - - if background_suppression_number_pulses is not None and background_suppression_number_pulses != "N/A": - report_lines.append( - f" with {background_suppression_number_pulses} pulses") - asl_parameters.append( - ("Background Suppression Number of Pulses", background_suppression_number_pulses)) - if background_suppression_pulse_time is not None and background_suppression_pulse_time != "N/A": - report_lines.append( - f" at {ReportGenerator.format_background_suppression(background_suppression_pulse_time)} after the start of labeling") + suppression = "" + if background_suppression == "with": + suppression = "Background suppression was applied" + if not is_missing(background_suppression_number_pulses): + suppression += f" using {background_suppression_number_pulses} pulses" asl_parameters.append( - ("Background Suppression Pulse Time", - ReportGenerator.format_background_suppression(background_suppression_pulse_time))) - report_lines.append(".") - - if total_acquired_pairs == 1: - if (global_pattern == "deltam"): - classifer = "volume" - else: - classifer = "pair" + ( + "Background Suppression Number of Pulses", + background_suppression_number_pulses, + ) + ) + if not is_missing(background_suppression_pulse_time): + times = ReportGenerator.format_background_suppression( + background_suppression_pulse_time + ) + suppression += f", with pulses at {times} after the start of labeling" + asl_parameters.append(("Background Suppression Pulse Time", times)) + elif background_suppression == "without": + suppression = "Background suppression was not applied" + elif not is_missing(background_suppression): + suppression = f"Background suppression was {background_suppression}" + if not is_missing(background_suppression): + asl_parameters.append(("Background Suppression", background_suppression)) - report_lines.append( - f" In total, {total_acquired_pairs} {global_pattern} {classifer} was acquired" - ) - else: - if (global_pattern == "deltam"): - classifer = "volumes" - else: - classifer = "pairs" + s2 = ". ".join([c for c in (timing, suppression) if c]) + if s2: + s2 += "." + + # ================================================================= + # Sentence 3: imaging geometry + repetitions + # ================================================================= + geo = [] + te_ok, tr_ok = not is_missing(echo_time), not is_missing(repetition_time) + if te_ok and tr_ok: + geo.append(f"TR/TE = {repetition_time}/{echo_time}ms") + elif te_ok: + geo.append(f"TE = {echo_time}ms") + elif tr_ok: + geo.append(f"TR = {repetition_time}") + if not is_missing(voxel_size_1_2): + geo.append(f"an in-plane resolution of {voxel_size_1_2}mm^2") + if slice_number: + geo.append(f"{slice_number} slices") + if not is_missing(voxel_size_3): + geo.append(f"a slice thickness of {voxel_size_3}mm") + if not is_missing(flip_angle): + geo.append(f"a flip angle of {flip_angle} degrees") - report_lines.append( - f" In total, {total_acquired_pairs} {global_pattern} {classifer} were acquired" - ) + asl_parameters.append(("Echo Time", f"{echo_time}ms")) + asl_parameters.append(("Repetition Time", repetition_time)) + asl_parameters.append(("Flip Angle", flip_angle)) + asl_parameters.append(("In-plane Resolution", f"{voxel_size_1_2}mm^2")) + asl_parameters.append(("Slice Thickness", f"{voxel_size_3}mm")) - asl_parameters.append( - ("Total Acquired Pairs", total_acquired_pairs)) + s3 = ( + f"Images were acquired with {ReportGenerator._join_and(geo)}." + if geo + else "" + ) - if acquisition_duration != "N/A": - report_lines.append(f" in a {acquisition_duration} time.") - asl_parameters.append(("Acquisition Duration", acquisition_duration)) - else: - report_lines.append(".") - report_paragraph = "".join(line for line in report_lines) + # repetitions (guarded so a missing count never prints 'None') + rep = "" + if not is_missing(total_acquired_pairs): + plural = (total_acquired_pairs != 1) + label, noun = ReportGenerator._pattern_words(global_pattern, plural) + verb = "were" if plural else "was" + rep = f"In total, {total_acquired_pairs} {label} {noun} {verb} acquired" + if acquisition_duration != "N/A": + rep += f" over a {acquisition_duration} acquisition" + asl_parameters.append(("Acquisition Duration", acquisition_duration)) + rep += "." + asl_parameters.append(("Total Acquired Pairs", total_acquired_pairs)) + + report_paragraph = " ".join([s for s in (s1, s2, s3, rep) if s]) return report_paragraph, asl_parameters # Function to generate a report for M0 scans based on provided parameters. @@ -498,7 +658,7 @@ def handle_bolus_cutoff_delay_time(values, combined_errors): else: return f"at {bolus_cutoff_delay_time}ms" elif status == "inconsistent_common": - return f"(inconsistent, {bolus_cutoff_delay_time}ms is the most common" + return f"(inconsistent, {bolus_cutoff_delay_time}ms is the most common)" else: return "(inconsistent, no common data)" From f005cda5d2f561cd35dbbb8368466ed0befecd7c Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Thu, 13 Aug 2026 14:02:40 -0300 Subject: [PATCH 09/28] refactor(package): rebuild ASL Methods paragraph as a modular clause builder --- .../modalities/asl/report_generator.py | 781 ++++++++++++------ 1 file changed, 547 insertions(+), 234 deletions(-) diff --git a/package/src/pyaslreport/modalities/asl/report_generator.py b/package/src/pyaslreport/modalities/asl/report_generator.py index 5887d786..acda04f4 100644 --- a/package/src/pyaslreport/modalities/asl/report_generator.py +++ b/package/src/pyaslreport/modalities/asl/report_generator.py @@ -1,181 +1,384 @@ from collections import Counter +from typing import Any class ReportGenerator: from collections import Counter - # Function to generate the ASL report based on the provided values and error data. - # The function constructs a detailed text report and also extracts key parameters for further use. + # ===================================================================== + # Tier 1 helpers (readability / cohesion) + # ===================================================================== @staticmethod - def generate_asl_report(values, combined_major_errors, combined_errors, global_pattern, m0_type, - total_acquired_pairs, slice_number): - report_lines = [] - asl_parameters = [] + def _is_missing(value: object) -> bool: + """Return whether a value carries no usable report information. + + Args: + value: Extracted parameter value to inspect. - pld_type = ReportGenerator.handle_bolus_cutoff_technique(values, 'PLDType', combined_major_errors) - # total_acquired_pairs = ReportGenerator.extract_value(values, "TotalAcquiredPairs", combined_errors) + Returns: + True when the value is None or a blank / "N/A" string. + """ + if value is None: + return True + if isinstance(value, str) and value.strip() in ("", "N/A"): + return True + return False + + @staticmethod + def _join_and(parts: list[object]) -> str: + """Join items into natural-language prose with an Oxford comma. + + Args: + parts: Items to join; falsy items are dropped. + + Returns: + "" for no items, "a", "a and b", or "a, b, and c". + """ + text_parts = [str(part) for part in parts if part] + if not text_parts: + return "" + if len(text_parts) == 1: + return text_parts[0] + if len(text_parts) == 2: + return f"{text_parts[0]} and {text_parts[1]}" + return ", ".join(text_parts[:-1]) + ", and " + text_parts[-1] - extended_pld_text = ReportGenerator.handle_pld_values(values, combined_errors, 'PostLabelingDelay', - global_pattern, m0_type) + @staticmethod + def _format_duration_list(value: object, unit: str = "ms") -> str: + """Format a duration value or list, collapsing identical entries. + + Args: + value: Scalar duration, list/tuple of durations, or a missing value. + unit: Unit suffix appended to each rendered number. + + Returns: + "" when the value is missing, a single "" when a list holds + one unique value, otherwise the comma-joined values. + """ + if ReportGenerator._is_missing(value): + return "" + if isinstance(value, (list, tuple)): + uniq = list(dict.fromkeys(value)) # de-duplicate, preserve order + if len(uniq) == 1: + return f"{uniq[0]}{unit}" + return ", ".join(f"{v}{unit}" for v in value) + return f"{value}{unit}" + + # Raw internal pattern tokens -> human-readable words + _PATTERN_DISPLAY = { + "deltam": "deltaM", + "controllabel": "control-label", + "labelcontrol": "label-control", + } + + @staticmethod + def _pattern_words(global_pattern: str, plural: bool) -> tuple[str, str]: + """Map an internal volume pattern to a display label and count noun. + + Args: + global_pattern: Internal token (e.g. "deltam", "controllabel"). + plural: Whether the count noun should be pluralized. + + Returns: + A (label, noun) pair, e.g. ("deltaM", "volumes") or + ("control-label", "pair"). + """ + label = ReportGenerator._PATTERN_DISPLAY.get(global_pattern, global_pattern) + if global_pattern == "deltam": + noun = "volumes" if plural else "volume" + else: + noun = "pairs" if plural else "pair" + return label, noun - magnetic_field_strength = ReportGenerator.extract_value(values, "MagneticFieldStrength", combined_errors) - manufacturer = ReportGenerator.extract_value(values, "Manufacturer", combined_errors) - manufacturers_model_name = ReportGenerator.extract_and_format_unique_string_values(values, - "ManufacturersModelName") - asl_type = ReportGenerator.extract_value(values, "ArterialSpinLabelingType", combined_major_errors) - mr_acq_type = ReportGenerator.extract_value(values, "MRAcquisitionType", combined_major_errors) - pulse_seq_type = ReportGenerator.extract_value(values, "PulseSequenceType", combined_major_errors) + @staticmethod + def generate_asl_report( + values: dict[str, Any], + combined_major_errors: dict[str, Any], + combined_errors: dict[str, Any], + global_pattern: str | None, + m0_type: str | None, + total_acquired_pairs: int | None, + slice_number: int, + ) -> tuple[str, list[tuple[str, Any]]]: + """Build the ASL Methods paragraph and its structured parameter list. + + Rewritten as a modular, multi-sentence builder: scanner/family, + timing/suppression, and geometry/repetitions. Clauses whose values are + missing drop out entirely instead of emitting placeholders. + + Args: + values: Extracted BIDS parameter values keyed by field name. + combined_major_errors: Major-error data keyed by field name. + combined_errors: Non-major error/inconsistency data keyed by field. + global_pattern: ASL volume pattern token, or None. + m0_type: M0 acquisition type, or None. + total_acquired_pairs: Number of acquired control-label pairs, or None. + slice_number: Number of slices from the NIfTI header. + + Returns: + A (report_paragraph, asl_parameters) tuple, where asl_parameters is + a list of (label, value) pairs. + """ + asl_parameters = [] + is_missing = ReportGenerator._is_missing + # ---- extraction (unchanged from original) ---- + pld_type = ReportGenerator.handle_bolus_cutoff_technique( + values, "PLDType", combined_major_errors + ) + extended_pld_text = ReportGenerator.handle_pld_values( + values, combined_errors, "PostLabelingDelay", global_pattern, m0_type + ) + magnetic_field_strength = ReportGenerator.extract_value( + values, "MagneticFieldStrength", combined_errors + ) + manufacturer = ReportGenerator.extract_value( + values, "Manufacturer", combined_errors + ) + manufacturers_model_name = ( + ReportGenerator.extract_and_format_unique_string_values( + values, "ManufacturersModelName" + ) + ) + asl_type = ReportGenerator.extract_value( + values, "ArterialSpinLabelingType", combined_major_errors + ) + mr_acq_type = ReportGenerator.extract_value( + values, "MRAcquisitionType", combined_major_errors + ) + pulse_seq_type = ReportGenerator.extract_value( + values, "PulseSequenceType", combined_major_errors + ) if pulse_seq_type == "3Dgrase": pulse_seq_type = "GRASE" - echo_time = ReportGenerator.extract_value(values, "EchoTime", combined_errors) - repetition_time = ReportGenerator.handle_pld_values(values, combined_errors, 'RepetitionTimePreparation') - + repetition_time = ReportGenerator.handle_pld_values( + values, combined_errors, "RepetitionTimePreparation" + ) flip_angle = ReportGenerator.extract_value(values, "FlipAngle", combined_errors) - labeling_duration = ReportGenerator.extract_value(values, "LabelingDuration", combined_errors) - - voxel_size_1_2, voxel_size_3 = ReportGenerator.handle_voxel_size(values, combined_errors) - - bolus_cutoff_flag = ReportGenerator.handle_bolus_cutoff_flag(values, 'BolusCutOffFlag', combined_errors) - bolus_cutoff_technique = ReportGenerator.handle_bolus_cutoff_technique(values, 'BolusCutOffTechnique', - combined_errors) - bolus_cutoff_delay_time = ReportGenerator.handle_bolus_cutoff_delay_time(values, combined_errors) + labeling_duration = ReportGenerator.extract_value( + values, "LabelingDuration", combined_errors + ) + voxel_size_1_2, voxel_size_3 = ReportGenerator.handle_voxel_size( + values, combined_errors + ) + bolus_cutoff_flag = ReportGenerator.handle_bolus_cutoff_flag( + values, "BolusCutOffFlag", combined_errors + ) + bolus_cutoff_technique = ReportGenerator.handle_bolus_cutoff_technique( + values, "BolusCutOffTechnique", combined_errors + ) + bolus_cutoff_delay_time = ReportGenerator.handle_bolus_cutoff_delay_time( + values, combined_errors + ) + background_suppression = ReportGenerator.handle_bolus_cutoff_flag( + values, "BackgroundSuppression", combined_errors + ) + background_suppression_number_pulses = ReportGenerator.extract_value( + values, + "BackgroundSuppressionNumberPulses", + combined_errors, + report_range=True, + ) + background_suppression_pulse_time = ReportGenerator.extract_value( + values, "BackgroundSuppressionPulseTime", combined_errors + ) + acquisition_duration = ReportGenerator.extract_value( + values, "AcquisitionDuration", combined_errors, format_duration=True + ) + pasl_type = ReportGenerator.extract_value( + values, "PASLType", combined_errors, recommneded=True + ) + labeling_slab_thickness = ReportGenerator.extract_value( + values, "LabelingSlabThickness", combined_errors, recommneded=True + ) - background_suppression = ReportGenerator.handle_bolus_cutoff_flag(values, 'BackgroundSuppression', - combined_errors) - background_suppression_number_pulses = ReportGenerator.extract_value(values, 'BackgroundSuppressionNumberPulses', - combined_errors, report_range=True) - background_suppression_pulse_time = ReportGenerator.extract_value(values, 'BackgroundSuppressionPulseTime', - combined_errors) + is_pasl = str(asl_type).upper() == "PASL" + is_pcasl = str(asl_type).upper() in ("PCASL", "CASL") + + # ================================================================= + # Sentence 1: scanner + acquisition family + readout + # ================================================================= + scanner = "" + if not is_missing(magnetic_field_strength): + scanner += f"{magnetic_field_strength}T " + for part in (manufacturer, manufacturers_model_name): + if not is_missing(part): + scanner += f"{part} " + scanner = scanner.strip() + s1 = "ASL was acquired on a " + ( + f"{scanner} scanner." if scanner else "scanner." + ) - acquisition_duration = ReportGenerator.extract_value(values, "AcquisitionDuration", combined_errors, - format_duration=True) - pasl_type = ReportGenerator.extract_value(values, "PASLType", combined_errors, recommneded=True) - labeling_slab_thickness = ReportGenerator.extract_value(values, "LabelingSlabThickness", combined_errors, - recommneded=True) + # labeling phrase (drop 'N/A' ASL type instead of writing 'N/A labeling') + family = ReportGenerator._join_and([]) or " ".join( + [ + p + for p in ( + pld_type if not is_missing(pld_type) else "", + pasl_type if not is_missing(pasl_type) else "", + asl_type if not is_missing(asl_type) else "", + ) + if p + ] + ) + # readout: de-duplicate dimensionality vs readout type ('3D 3D' -> '3D') + readout_parts = [] + if not is_missing(mr_acq_type): + readout_parts.append(mr_acq_type) + if not is_missing(pulse_seq_type) and pulse_seq_type != mr_acq_type: + readout_parts.append(pulse_seq_type) + readout = " ".join(readout_parts) + + family_cap = (family[0].upper() + family[1:]) if family else family + if family and readout: + s1 += f" {family_cap} labeling was performed with a {readout} readout." + elif family: + s1 += f" {family_cap} labeling was performed." + elif readout: + s1 += f" A {readout} readout was used." - report_lines.append( - f"ASL was acquired on a {magnetic_field_strength}T {manufacturer}" - f" {manufacturers_model_name} scanner using {pld_type} " + asl_parameters.append( + ("Magnetic Field Strength", f"{magnetic_field_strength}T") ) - asl_parameters.append(("Magnetic Field Strength", f"{magnetic_field_strength}T")) asl_parameters.append(("Manufacturer", manufacturer)) asl_parameters.append(("Manufacturer's Model Name", manufacturers_model_name)) asl_parameters.append(("PLD Type", pld_type)) - - if pasl_type != "": - report_lines.append(f"{pasl_type} ") + if not is_missing(pasl_type): asl_parameters.append(("PASL Type", pasl_type)) - - report_lines.append( - f"{asl_type} labeling and a {mr_acq_type} {pulse_seq_type} readout with the following parameters: " - ) asl_parameters.append(("ASL Type", asl_type)) asl_parameters.append(("MR Acquisition Type", mr_acq_type)) asl_parameters.append(("Pulse Sequence Type", pulse_seq_type)) - report_lines.append( - f"TE = {echo_time}ms, TR = {repetition_time}, " - f"flip angle {flip_angle} degrees, " - ) - asl_parameters.append(("Echo Time", f"{echo_time}ms")) - asl_parameters.append(("Repetition Time", repetition_time)) - asl_parameters.append(("Flip Angle", flip_angle)) - - report_lines.append( - f"in-plane resolution {voxel_size_1_2}mm^2, " - ) - asl_parameters.append(("In-plane Resolution", f"{voxel_size_1_2}mm^2")) - - report_lines.append( - f"{slice_number} slices with {voxel_size_3}mm thickness, " - ) - asl_parameters.append(("Slice Thickness", f"{voxel_size_3}mm")) - - if asl_type == 'PCASL': - report_lines.append( - f"labeling duration {labeling_duration}ms, " + # ================================================================= + # Sentence 2: ASL timing + background suppression + # ================================================================= + timing = "" + if is_pcasl: + ld = ReportGenerator._format_duration_list(labeling_duration, "ms") + pld = "" if is_missing(extended_pld_text) else str(extended_pld_text) + if ld: + asl_parameters.append(("Labeling Duration", labeling_duration)) + if pld: + asl_parameters.append(("PLD", extended_pld_text)) + pld_word = "a PLD of" if ("," not in pld) else "PLDs of" + if ld and pld: + timing = f"The labeling duration was {ld}, followed by {pld_word} {pld}" + elif ld: + timing = f"The labeling duration was {ld}" + elif pld: + timing = f"{pld_word[0].upper() + pld_word[1:]} {pld}" + elif is_pasl: + inv = "" if is_missing(extended_pld_text) else str(extended_pld_text) + inv_word = ( + "an inversion time of" if ("," not in inv) else "inversion times of" ) - asl_parameters.append(("Labeling Duration", labeling_duration)) - - report_lines.append( - f"PLD {extended_pld_text}, " - ) - asl_parameters.append(("PLD", extended_pld_text)) - - if asl_type.upper() == 'PASL': - report_lines.append( - f"inversion time {extended_pld_text}, " - ) - asl_parameters.append(("Inversion Time", extended_pld_text)) - - if labeling_slab_thickness != "": - report_lines.append( - f"labeling slab thickness {labeling_slab_thickness}mm, " + if inv: + timing = f"Labeling used {inv_word} {inv}" + asl_parameters.append(("Inversion Time", extended_pld_text)) + if not is_missing(labeling_slab_thickness): + clause = f"a labeling slab thickness of {labeling_slab_thickness}mm" + timing = ( + f"{timing}, with {clause}" + if timing + else clause[0].upper() + clause[1:] ) - asl_parameters.append(("Labeling Slab Thickness", f"{labeling_slab_thickness}mm")) - - if bolus_cutoff_flag is not None: - report_lines.append( - f"{bolus_cutoff_flag} bolus saturation " + asl_parameters.append( + ("Labeling Slab Thickness", f"{labeling_slab_thickness}mm") ) - asl_parameters.append(("Bolus Cutoff Flag", bolus_cutoff_flag)) - if bolus_cutoff_flag == "with": - report_lines.append( - f"using {bolus_cutoff_technique} pulse " + if bolus_cutoff_flag == "with": + bolus = "with bolus saturation" + if not is_missing(bolus_cutoff_technique): + bolus += f" using a {bolus_cutoff_technique} pulse" + asl_parameters.append( + ("Bolus Cutoff Technique", bolus_cutoff_technique) ) - asl_parameters.append(("Bolus Cutoff Technique", bolus_cutoff_technique)) - report_lines.append( - f"applied {bolus_cutoff_delay_time} after the labeling, " + if not is_missing(bolus_cutoff_delay_time): + bolus += f" applied {bolus_cutoff_delay_time} after labeling" + asl_parameters.append( + ("Bolus Cutoff Delay Time", bolus_cutoff_delay_time) ) - asl_parameters.append(("Bolus Cutoff Delay Time", bolus_cutoff_delay_time)) - - if background_suppression is not None: - report_lines.append(f"{background_suppression} background suppression") - asl_parameters.append(("Background Suppression", background_suppression)) + timing = ( + f"{timing}, {bolus}" if timing else bolus[0].upper() + bolus[1:] + ) + asl_parameters.append(("Bolus Cutoff Flag", bolus_cutoff_flag)) + elif bolus_cutoff_flag == "without": + asl_parameters.append(("Bolus Cutoff Flag", bolus_cutoff_flag)) - if background_suppression_number_pulses is not None and background_suppression_number_pulses != "N/A": - report_lines.append( - f" with {background_suppression_number_pulses} pulses") - asl_parameters.append( - ("Background Suppression Number of Pulses", background_suppression_number_pulses)) - if background_suppression_pulse_time is not None and background_suppression_pulse_time != "N/A": - report_lines.append( - f" at {ReportGenerator.format_background_suppression(background_suppression_pulse_time)} after the start of labeling") + suppression = "" + if background_suppression == "with": + suppression = "Background suppression was applied" + if not is_missing(background_suppression_number_pulses): + suppression += f" using {background_suppression_number_pulses} pulses" asl_parameters.append( - ("Background Suppression Pulse Time", - ReportGenerator.format_background_suppression(background_suppression_pulse_time))) - report_lines.append(".") - - if total_acquired_pairs == 1: - if (global_pattern == "deltam"): - classifer = "volume" - else: - classifer = "pair" + ( + "Background Suppression Number of Pulses", + background_suppression_number_pulses, + ) + ) + if not is_missing(background_suppression_pulse_time): + times = ReportGenerator.format_background_suppression( + background_suppression_pulse_time + ) + suppression += f", with pulses at {times} after the start of labeling" + asl_parameters.append(("Background Suppression Pulse Time", times)) + elif background_suppression == "without": + suppression = "Background suppression was not applied" + elif not is_missing(background_suppression): + suppression = f"Background suppression was {background_suppression}" + if not is_missing(background_suppression): + asl_parameters.append(("Background Suppression", background_suppression)) - report_lines.append( - f" In total, {total_acquired_pairs} {global_pattern} {classifer} was acquired" - ) - else: - if (global_pattern == "deltam"): - classifer = "volumes" - else: - classifer = "pairs" + s2 = ". ".join([c for c in (timing, suppression) if c]) + if s2: + s2 += "." + + # ================================================================= + # Sentence 3: imaging geometry + repetitions + # ================================================================= + geo = [] + te_ok, tr_ok = not is_missing(echo_time), not is_missing(repetition_time) + if te_ok and tr_ok: + geo.append(f"TR/TE = {repetition_time}/{echo_time}ms") + elif te_ok: + geo.append(f"TE = {echo_time}ms") + elif tr_ok: + geo.append(f"TR = {repetition_time}") + if not is_missing(voxel_size_1_2): + geo.append(f"an in-plane resolution of {voxel_size_1_2}mm^2") + if slice_number: + geo.append(f"{slice_number} slices") + if not is_missing(voxel_size_3): + geo.append(f"a slice thickness of {voxel_size_3}mm") + if not is_missing(flip_angle): + geo.append(f"a flip angle of {flip_angle} degrees") - report_lines.append( - f" In total, {total_acquired_pairs} {global_pattern} {classifer} were acquired" - ) + asl_parameters.append(("Echo Time", f"{echo_time}ms")) + asl_parameters.append(("Repetition Time", repetition_time)) + asl_parameters.append(("Flip Angle", flip_angle)) + asl_parameters.append(("In-plane Resolution", f"{voxel_size_1_2}mm^2")) + asl_parameters.append(("Slice Thickness", f"{voxel_size_3}mm")) - asl_parameters.append( - ("Total Acquired Pairs", total_acquired_pairs)) + s3 = ( + f"Images were acquired with {ReportGenerator._join_and(geo)}." + if geo + else "" + ) - if acquisition_duration != "N/A": - report_lines.append(f" in a {acquisition_duration} time.") - asl_parameters.append(("Acquisition Duration", acquisition_duration)) - else: - report_lines.append(".") - report_paragraph = "".join(line for line in report_lines) + # repetitions (guarded so a missing count never prints 'None') + rep = "" + if not is_missing(total_acquired_pairs): + plural = total_acquired_pairs != 1 + label, noun = ReportGenerator._pattern_words(global_pattern, plural) + verb = "were" if plural else "was" + rep = f"In total, {total_acquired_pairs} {label} {noun} {verb} acquired" + if acquisition_duration != "N/A": + rep += f" over a {acquisition_duration} acquisition" + asl_parameters.append(("Acquisition Duration", acquisition_duration)) + rep += "." + asl_parameters.append(("Total Acquired Pairs", total_acquired_pairs)) + + report_paragraph = " ".join([s for s in (s1, s2, s3, rep) if s]) return report_paragraph, asl_parameters # Function to generate a report for M0 scans based on provided parameters. @@ -196,25 +399,33 @@ def generate_m0_report(report_line_on_M0, M0_TR): def generate_extended_report(values, combined_major_errors, combined_errors): report_lines = [] extended_parameters = [] - vascular_crushing = ReportGenerator.extract_value(values, "VascularCrushing", combined_errors, recommneded=True) - vascular_crushing_VENC = ReportGenerator.extract_value(values, "VascularCrushingVENC", combined_errors, - recommneded=True) - PCASL_type = ReportGenerator.extract_value(values, "PCASLType", combined_errors, - recommneded=True) - labeling_pulse_average_gradient = ReportGenerator.extract_value(values, "LabelingPulseAverageGradient", - combined_errors, - recommneded=True) - labeling_pulse_maximum_gradient = ReportGenerator.extract_value(values, "LabelingPulseMaximumGradient", - combined_errors, - recommneded=True) - labeling_pulse_average_B1 = ReportGenerator.extract_value(values, "LabelingPulseAverageB1", combined_errors, - recommneded=True) - labeling_pulse_flip_angle = ReportGenerator.extract_value(values, "LabelingPulseFlipAngle", combined_errors, - recommneded=True) - labeling_pulse_interval = ReportGenerator.extract_value(values, "LabelingPulseInterval", combined_errors, - recommneded=True) - labeling_pulse_duration = ReportGenerator.extract_value(values, "LabelingPulseDuration", combined_errors, - recommneded=True) + vascular_crushing = ReportGenerator.extract_value( + values, "VascularCrushing", combined_errors, recommneded=True + ) + vascular_crushing_VENC = ReportGenerator.extract_value( + values, "VascularCrushingVENC", combined_errors, recommneded=True + ) + PCASL_type = ReportGenerator.extract_value( + values, "PCASLType", combined_errors, recommneded=True + ) + labeling_pulse_average_gradient = ReportGenerator.extract_value( + values, "LabelingPulseAverageGradient", combined_errors, recommneded=True + ) + labeling_pulse_maximum_gradient = ReportGenerator.extract_value( + values, "LabelingPulseMaximumGradient", combined_errors, recommneded=True + ) + labeling_pulse_average_B1 = ReportGenerator.extract_value( + values, "LabelingPulseAverageB1", combined_errors, recommneded=True + ) + labeling_pulse_flip_angle = ReportGenerator.extract_value( + values, "LabelingPulseFlipAngle", combined_errors, recommneded=True + ) + labeling_pulse_interval = ReportGenerator.extract_value( + values, "LabelingPulseInterval", combined_errors, recommneded=True + ) + labeling_pulse_duration = ReportGenerator.extract_value( + values, "LabelingPulseDuration", combined_errors, recommneded=True + ) if isinstance(vascular_crushing, bool) and vascular_crushing: report_lines.append(" Vascular crushing was applied") extended_parameters.append(("Vascular Crushing", vascular_crushing)) @@ -222,7 +433,9 @@ def generate_extended_report(values, combined_major_errors, combined_errors): report_lines.append(".") else: report_lines.append(f" with a {vascular_crushing_VENC}cm/s threshold.") - extended_parameters.append(("Vascular Crushing VENC", vascular_crushing_VENC)) + extended_parameters.append( + ("Vascular Crushing VENC", vascular_crushing_VENC) + ) elif isinstance(vascular_crushing, str) and vascular_crushing: report_lines.append(f" Vascular crushing was {vascular_crushing}") extended_parameters.append(("Vascular Crushing", vascular_crushing)) @@ -230,7 +443,9 @@ def generate_extended_report(values, combined_major_errors, combined_errors): report_lines.append(".") else: report_lines.append(f" with a {vascular_crushing_VENC}cm/s threshold.") - extended_parameters.append(("Vascular Crushing VENC", vascular_crushing_VENC)) + extended_parameters.append( + ("Vascular Crushing VENC", vascular_crushing_VENC) + ) if PCASL_type: if PCASL_type == "balanced": @@ -238,47 +453,89 @@ def generate_extended_report(values, combined_major_errors, combined_errors): elif PCASL_type == "unbalanced": report_lines.append(f" Unbalanced") extended_parameters.append(("PCASL Type", PCASL_type)) - if (labeling_pulse_average_gradient or labeling_pulse_maximum_gradient or - labeling_pulse_average_B1 or labeling_pulse_flip_angle or labeling_pulse_interval - or labeling_pulse_duration): - report_lines.append(f" PCASL labeling was applied with the following pulse parameters: ") + if ( + labeling_pulse_average_gradient + or labeling_pulse_maximum_gradient + or labeling_pulse_average_B1 + or labeling_pulse_flip_angle + or labeling_pulse_interval + or labeling_pulse_duration + ): + report_lines.append( + f" PCASL labeling was applied with the following pulse parameters: " + ) if labeling_pulse_average_gradient: if not labeling_pulse_maximum_gradient: - report_lines.append(f"average pulse gradient {labeling_pulse_average_gradient}mT/m") + report_lines.append( + f"average pulse gradient {labeling_pulse_average_gradient}mT/m" + ) else: - report_lines.append(f"average {labeling_pulse_average_gradient}mT/m and ") + report_lines.append( + f"average {labeling_pulse_average_gradient}mT/m and " + ) extended_parameters.append( - ("Labeling Pulse Average Gradient", f"{labeling_pulse_average_gradient}mT/m")) + ( + "Labeling Pulse Average Gradient", + f"{labeling_pulse_average_gradient}mT/m", + ) + ) if labeling_pulse_maximum_gradient: - report_lines.append(f"maximum pulse gradient {labeling_pulse_maximum_gradient}mT/m") + report_lines.append( + f"maximum pulse gradient {labeling_pulse_maximum_gradient}mT/m" + ) extended_parameters.append( - ("Labeling Pulse Maximum Gradient", f"{labeling_pulse_maximum_gradient}mT/m")) - if ((labeling_pulse_average_gradient or labeling_pulse_maximum_gradient) and - (labeling_pulse_duration or labeling_pulse_interval or labeling_pulse_average_B1 - or labeling_pulse_flip_angle)): + ( + "Labeling Pulse Maximum Gradient", + f"{labeling_pulse_maximum_gradient}mT/m", + ) + ) + if (labeling_pulse_average_gradient or labeling_pulse_maximum_gradient) and ( + labeling_pulse_duration + or labeling_pulse_interval + or labeling_pulse_average_B1 + or labeling_pulse_flip_angle + ): report_lines.append(", ") if labeling_pulse_duration: report_lines.append(f"with {labeling_pulse_duration}ms pulses") - extended_parameters.append(("Labeling Pulse Duration", f"{labeling_pulse_duration}ms")) + extended_parameters.append( + ("Labeling Pulse Duration", f"{labeling_pulse_duration}ms") + ) if labeling_pulse_interval: report_lines.append(f" applied at {labeling_pulse_interval}ms intervals") - extended_parameters.append(("Labeling Pulse Interval", f"{labeling_pulse_interval}ms")) - if (labeling_pulse_duration or labeling_pulse_interval) and (labeling_pulse_average_B1 - or labeling_pulse_flip_angle): + extended_parameters.append( + ("Labeling Pulse Interval", f"{labeling_pulse_interval}ms") + ) + if (labeling_pulse_duration or labeling_pulse_interval) and ( + labeling_pulse_average_B1 or labeling_pulse_flip_angle + ): report_lines.append(", ") if labeling_pulse_average_B1: - report_lines.append(f"average B1-field strength {labeling_pulse_average_B1}mT") + report_lines.append( + f"average B1-field strength {labeling_pulse_average_B1}mT" + ) extended_parameters.append( - ("Labeling Pulse Average B1-field Strength", f"{labeling_pulse_average_B1}mT")) + ( + "Labeling Pulse Average B1-field Strength", + f"{labeling_pulse_average_B1}mT", + ) + ) elif labeling_pulse_flip_angle: report_lines.append(f"with {labeling_pulse_flip_angle} degree flip angle") - extended_parameters.append(("Labeling Pulse Flip Angle", labeling_pulse_flip_angle)) + extended_parameters.append( + ("Labeling Pulse Flip Angle", labeling_pulse_flip_angle) + ) - if (labeling_pulse_average_gradient or labeling_pulse_maximum_gradient or - labeling_pulse_average_B1 or labeling_pulse_flip_angle or labeling_pulse_interval - or labeling_pulse_duration): + if ( + labeling_pulse_average_gradient + or labeling_pulse_maximum_gradient + or labeling_pulse_average_B1 + or labeling_pulse_flip_angle + or labeling_pulse_interval + or labeling_pulse_duration + ): report_lines.append(".") report_paragraph = "".join(line for line in report_lines) return report_paragraph, extended_parameters @@ -286,21 +543,39 @@ def generate_extended_report(values, combined_major_errors, combined_errors): # Function to extract a specific value from the provided values dictionary. # This function also handles inconsistencies and formats the value based on the context (e.g., reporting range, duration). @staticmethod - def extract_value(values, key, combined_errors, report_range=False, format_duration=False, - recommneded=False): - status, most_common_value, value_range = ReportGenerator.handle_inconsistency(values, key, combined_errors) + def extract_value( + values, + key, + combined_errors, + report_range=False, + format_duration=False, + recommneded=False, + ): + status, most_common_value, value_range = ReportGenerator.handle_inconsistency( + values, key, combined_errors + ) if format_duration and isinstance(most_common_value, (int, float)): - most_common_value = ReportGenerator.format_acquisition_duration(most_common_value) + most_common_value = ReportGenerator.format_acquisition_duration( + most_common_value + ) if status == "consistent": if most_common_value == "N/A" and recommneded: return "" return most_common_value elif status == "inconsistent_common": - return f"(inconsistent, {most_common_value} is the most common data)" if not report_range else f"(inconsistent, {most_common_value} is the most common data, {value_range})" + return ( + f"(inconsistent, {most_common_value} is the most common data)" + if not report_range + else f"(inconsistent, {most_common_value} is the most common data, {value_range})" + ) else: - return f"(inconsistent, no common data, {value_range})" if report_range else "(inconsistent, no common data)" + return ( + f"(inconsistent, no common data, {value_range})" + if report_range + else "(inconsistent, no common data)" + ) # Helper function to handle inconsistencies in the extracted values. # This function checks for inconsistencies across different sources and identifies the most common value or range. @@ -327,8 +602,11 @@ def handle_inconsistency(values, key, combined_errors): counter = Counter(normalized_values) most_common_value, count = counter.most_common(1)[0] - flattened_values = [item for sublist in normalized_values for item in - (sublist if isinstance(sublist, tuple) else [sublist])] + flattened_values = [ + item + for sublist in normalized_values + for item in (sublist if isinstance(sublist, tuple) else [sublist]) + ] value_range = f"Range: {min(flattened_values)}-{max(flattened_values)}" if count > len(normalized_values) // 2: @@ -336,11 +614,15 @@ def handle_inconsistency(values, key, combined_errors): else: return "inconsistent_no_common", None, value_range else: - first_value = values.get(key, [['N/A']]) - if first_value and isinstance(first_value[0], list) and len(first_value[0]) > 1: + first_value = values.get(key, [["N/A"]]) + if ( + first_value + and isinstance(first_value[0], list) + and len(first_value[0]) > 1 + ): value = tuple(first_value[0]) else: - value = first_value[0][1] if first_value else 'N/A' + value = first_value[0][1] if first_value else "N/A" return "consistent", value, value_range @@ -349,7 +631,9 @@ def handle_inconsistency(values, key, combined_errors): # whether the data is consistent across multiple sources. @staticmethod def handle_bolus_cutoff_technique(values, key, combined_errors): - status, technique = ReportGenerator.handle_string_inconsistency(values, key, combined_errors) + status, technique = ReportGenerator.handle_string_inconsistency( + values, key, combined_errors + ) if status == "consistent": return technique elif status == "inconsistent_common": @@ -374,39 +658,54 @@ def handle_string_inconsistency(values, key, combined_errors): else: return "inconsistent_no_common", None else: - first_value = values.get(key, [['N/A']]) - return "consistent", str(first_value[0][1]) if first_value else 'N/A' + first_value = values.get(key, [["N/A"]]) + return "consistent", str(first_value[0][1]) if first_value else "N/A" # Helper function to handle voxel size extraction and format the results. # It accounts for inconsistencies in the voxel sizes and formats them appropriately for reporting. @staticmethod def handle_voxel_size(values, combined_errors): - status, acquisition_voxel_size, _ = ReportGenerator.handle_inconsistency(values, 'AcquisitionVoxelSize', - combined_errors) + status, acquisition_voxel_size, _ = ReportGenerator.handle_inconsistency( + values, "AcquisitionVoxelSize", combined_errors + ) if status == "consistent": - if isinstance(acquisition_voxel_size, (list, tuple)) and len(acquisition_voxel_size) >= 3: - voxel_size_1_2 = f"{acquisition_voxel_size[0]}x{acquisition_voxel_size[1]}" + if ( + isinstance(acquisition_voxel_size, (list, tuple)) + and len(acquisition_voxel_size) >= 3 + ): + voxel_size_1_2 = ( + f"{acquisition_voxel_size[0]}x{acquisition_voxel_size[1]}" + ) voxel_size_3 = acquisition_voxel_size[2] else: - voxel_size_1_2 = 'N/A' - voxel_size_3 = 'N/A' + voxel_size_1_2 = "N/A" + voxel_size_3 = "N/A" elif status == "inconsistent_common": - if isinstance(acquisition_voxel_size, (list, tuple)) and len(acquisition_voxel_size) >= 3: + if ( + isinstance(acquisition_voxel_size, (list, tuple)) + and len(acquisition_voxel_size) >= 3 + ): voxel_size_1_2 = f"(inconsistent, {acquisition_voxel_size[0]}x{acquisition_voxel_size[1]} is the most common)" - voxel_size_3 = f"(inconsistent, {acquisition_voxel_size[2]} is the most common)" + voxel_size_3 = ( + f"(inconsistent, {acquisition_voxel_size[2]} is the most common)" + ) else: - voxel_size_1_2 = 'N/A' - voxel_size_3 = 'N/A' + voxel_size_1_2 = "N/A" + voxel_size_3 = "N/A" else: - voxel_size_1_2 = 'N/A (inconsistent, with no common data.)' - voxel_size_3 = 'N/A (inconsistent, with no common data.)' + voxel_size_1_2 = "N/A (inconsistent, with no common data.)" + voxel_size_3 = "N/A (inconsistent, with no common data.)" return voxel_size_1_2, voxel_size_3 # Helper function to handle PLD (Post-Labeling Delay) values and format them for reporting. # The function manages cases where the PLD values are consistent or inconsistent across different sources. @staticmethod - def handle_pld_values(values, combined_errors, key, global_pattern=False, m0_type=""): - status, pld_values, _ = ReportGenerator.handle_inconsistency(values, key, combined_errors) + def handle_pld_values( + values, combined_errors, key, global_pattern=False, m0_type="" + ): + status, pld_values, _ = ReportGenerator.handle_inconsistency( + values, key, combined_errors + ) @staticmethod def format_pld_array(pld_array): @@ -414,14 +713,18 @@ def format_pld_array(pld_array): pld_counter = Counter(filtered_array) if global_pattern != "deltam": - formatted_pld = ', '.join( - [f"{pld}ms ({count // 2} {'repeat' if (count // 2) == 1 else 'repeats'})" for pld, count in - sorted(pld_counter.items())] + formatted_pld = ", ".join( + [ + f"{pld}ms ({count // 2} {'repeat' if (count // 2) == 1 else 'repeats'})" + for pld, count in sorted(pld_counter.items()) + ] ) else: - formatted_pld = ', '.join( - [f"{pld}ms ({count} {'volume' if count == 1 else 'volumes'})" for pld, count in - sorted(pld_counter.items())] + formatted_pld = ", ".join( + [ + f"{pld}ms ({count} {'volume' if count == 1 else 'volumes'})" + for pld, count in sorted(pld_counter.items()) + ] ) return formatted_pld @@ -435,18 +738,20 @@ def format_pld_array(pld_array): elif isinstance(pld_values, (int, float)): extended_pld_text = f"{pld_values}ms" else: - extended_pld_text = 'N/A' + extended_pld_text = "N/A" elif status == "inconsistent_common": if isinstance(pld_values, (list, tuple)): unique_values = set(pld_values) if len(unique_values) == 1: - extended_pld_text = f"(inconsistent, {unique_values.pop()}ms is the most common)" + extended_pld_text = ( + f"(inconsistent, {unique_values.pop()}ms is the most common)" + ) else: extended_pld_text = f"(inconsistent, {format_pld_array(pld_values)} is the most common)" elif isinstance(pld_values, (int, float)): extended_pld_text = f"(inconsistent, {pld_values}ms is the most common)" else: - extended_pld_text = 'N/A' + extended_pld_text = "N/A" else: extended_pld_text = "(inconsistent, no common data)" @@ -456,7 +761,9 @@ def format_pld_array(pld_array): # This function formats the bolus cutoff flag for reporting. @staticmethod def handle_bolus_cutoff_flag(values, key, combined_errors): - status, flag = ReportGenerator.handle_boolean_inconsistency(values, key, combined_errors) + status, flag = ReportGenerator.handle_boolean_inconsistency( + values, key, combined_errors + ) if status == "consistent": return "without" if not flag else "with" elif status == "inconsistent_common": @@ -481,24 +788,28 @@ def handle_boolean_inconsistency(values, key, combined_errors): else: return "inconsistent_no_common", None else: - first_value = values.get(key, [['N/A']]) - return "consistent", bool(first_value[0][1]) if first_value else 'N/A' + first_value = values.get(key, [["N/A"]]) + return "consistent", bool(first_value[0][1]) if first_value else "N/A" # Helper function to format bolus cutoff delay time. # It accounts for consistency or inconsistency in the values across different sources. @staticmethod def handle_bolus_cutoff_delay_time(values, combined_errors): - status, bolus_cutoff_delay_time, _ = ReportGenerator.handle_inconsistency(values, 'BolusCutOffDelayTime', - combined_errors) + status, bolus_cutoff_delay_time, _ = ReportGenerator.handle_inconsistency( + values, "BolusCutOffDelayTime", combined_errors + ) if status == "consistent": - if isinstance(bolus_cutoff_delay_time, (list, tuple)) and len(bolus_cutoff_delay_time) >= 2: + if ( + isinstance(bolus_cutoff_delay_time, (list, tuple)) + and len(bolus_cutoff_delay_time) >= 2 + ): return f"from {bolus_cutoff_delay_time[0]}ms to {bolus_cutoff_delay_time[len(bolus_cutoff_delay_time) - 1]}ms" elif isinstance(bolus_cutoff_delay_time, (list, tuple)): return f"at {bolus_cutoff_delay_time[0]}ms" else: return f"at {bolus_cutoff_delay_time}ms" elif status == "inconsistent_common": - return f"(inconsistent, {bolus_cutoff_delay_time}ms is the most common" + return f"(inconsistent, {bolus_cutoff_delay_time}ms is the most common)" else: return "(inconsistent, no common data)" @@ -507,16 +818,16 @@ def handle_bolus_cutoff_delay_time(values, combined_errors): @staticmethod def format_background_suppression(values): if not values: - return '' + return "" if all(isinstance(val, (int, float)) for val in values): values = list(map(str, values)) if len(values) == 1: - return values[0] + 'ms' + return values[0] + "ms" elif len(values) == 2: - return 'ms and '.join(values) + 'ms' + return "ms and ".join(values) + "ms" else: - return 'ms, '.join(values[:-1]) + 'ms, and ' + values[-1] + 'ms' + return "ms, ".join(values[:-1]) + "ms, and " + values[-1] + "ms" else: return values @@ -528,7 +839,7 @@ def format_acquisition_duration(duration): minutes = int(duration // 60) seconds = int(duration % 60) return f"{minutes}:{seconds:02d}min" - return 'N/A' + return "N/A" # Helper function to extract and format unique string values for reporting. # Combines all unique values into a single string, separated by slashes. @@ -545,7 +856,7 @@ def extract_and_format_unique_string_values(values, key): @staticmethod def extract_unique_values_from_array(values): unique_values = sorted(set(values)) - return ', '.join(map(str, unique_values)) + return ", ".join(map(str, unique_values)) # Function to extract inconsistencies from the error map and clean up the error dictionary. # This helps isolate specific inconsistency issues for better reporting. @@ -557,7 +868,9 @@ def extract_inconsistencies(error_map): for field, errors in error_map.items(): for error in errors: if "INCONSISTENCY" in error: - inconsistency_errors.append(f"{field}: {error.replace('INCONSISTENCY: ', '')}\n") + inconsistency_errors.append( + f"{field}: {error.replace('INCONSISTENCY: ', '')}\n" + ) errors.remove(error) if not errors: From 8334788e8e0a625f8d877db1e47bfb53049ae75f Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Thu, 13 Aug 2026 14:02:53 -0300 Subject: [PATCH 10/28] test: cover report prose helpers and bolus-cutoff-delay parenthesis --- package/tests/test_report_generator_prose.py | 76 ++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 package/tests/test_report_generator_prose.py diff --git a/package/tests/test_report_generator_prose.py b/package/tests/test_report_generator_prose.py new file mode 100644 index 00000000..c48114d1 --- /dev/null +++ b/package/tests/test_report_generator_prose.py @@ -0,0 +1,76 @@ +"""Unit tests for the Tier-1 report-prose helpers and small text fixes. + +These lock the readability behavior introduced in the report-text rewrite: +missing-value handling, natural-language joining, duration-list collapsing, +internal-token display, and the bolus-cutoff-delay closing parenthesis. +""" + +import pytest + +from pyaslreport.modalities.asl.report_generator import ReportGenerator as R + + +@pytest.mark.parametrize( + "value,expected", + [ + (None, True), + ("", True), + (" ", True), + ("N/A", True), + (" N/A ", True), + (0, False), + (0.0, False), + ("3D", False), + (11.24, False), + ], +) +def test_is_missing(value: object, expected: bool) -> None: + """Missing-value helper treats None, blanks, and N/A as absent.""" + assert R._is_missing(value) is expected + + +def test_join_and() -> None: + """Natural-language joining handles one, two, and many values.""" + assert R._join_and([]) == "" + assert R._join_and(["a"]) == "a" + assert R._join_and(["a", "b"]) == "a and b" + assert R._join_and(["a", "b", "c"]) == "a, b, and c" + # falsy parts are dropped + assert R._join_and(["a", "", None, "c"]) == "a and c" + + +def test_format_duration_list_collapses_identical() -> None: + """Identical duration arrays collapse to one displayed value.""" + assert R._format_duration_list([1166.67, 1166.67, 1166.67]) == "1166.67ms" + + +def test_format_duration_list_keeps_distinct() -> None: + """Distinct duration arrays preserve all displayed values.""" + assert R._format_duration_list([1000, 2000]) == "1000ms, 2000ms" + + +def test_format_duration_list_scalar_and_missing() -> None: + """Scalar values display with units while missing values disappear.""" + assert R._format_duration_list(1450) == "1450ms" + assert R._format_duration_list("N/A") == "" + assert R._format_duration_list(None) == "" + + +def test_pattern_words_display_tokens() -> None: + """Internal volume-pattern tokens are rendered as prose labels.""" + assert R._pattern_words("deltam", plural=True) == ("deltaM", "volumes") + assert R._pattern_words("deltam", plural=False) == ("deltaM", "volume") + assert R._pattern_words("controllabel", plural=True) == ("control-label", "pairs") + assert R._pattern_words("labelcontrol", plural=False) == ("label-control", "pair") + + +def test_bolus_cutoff_delay_inconsistent_closes_parenthesis() -> None: + """Inconsistent bolus-cutoff delay prose closes its parenthesis.""" + values = {"BolusCutOffDelayTime": [["fileA", 800], ["fileB", 900]]} + combined_errors = { + "BolusCutOffDelayTime": ["INCONSISTENCY: differing bolus cutoff delay"] + } + out = R.handle_bolus_cutoff_delay_time(values, combined_errors) + assert out.startswith("(inconsistent") + assert out.endswith(")"), out + assert out.count("(") == out.count(")") From dc360891783775bb0a528dab547397e0a5234f94 Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Thu, 13 Aug 2026 17:19:50 -0300 Subject: [PATCH 11/28] feat(package): report GE deltaM acquisitions as control-label pairs --- .../modalities/asl/report_generator.py | 18 +++++++++++------- package/tests/test_report_generator_prose.py | 6 +++--- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/package/src/pyaslreport/modalities/asl/report_generator.py b/package/src/pyaslreport/modalities/asl/report_generator.py index acda04f4..b6295ab4 100644 --- a/package/src/pyaslreport/modalities/asl/report_generator.py +++ b/package/src/pyaslreport/modalities/asl/report_generator.py @@ -66,7 +66,10 @@ def _format_duration_list(value: object, unit: str = "ms") -> str: # Raw internal pattern tokens -> human-readable words _PATTERN_DISPLAY = { - "deltam": "deltaM", + # GE performs control/label subtraction on the scanner and stores only + # deltaM volumes, but each represents one control-label pair, so it is + # reported as such (meeting notes, Jan). + "deltam": "control-label", "controllabel": "control-label", "labelcontrol": "label-control", } @@ -75,19 +78,20 @@ def _format_duration_list(value: object, unit: str = "ms") -> str: def _pattern_words(global_pattern: str, plural: bool) -> tuple[str, str]: """Map an internal volume pattern to a display label and count noun. + Every ASL volume pattern is reported in control-label "pair" terms; the + GE "deltam" case is treated as a control-label pair rather than a + standalone deltaM volume. + Args: global_pattern: Internal token (e.g. "deltam", "controllabel"). plural: Whether the count noun should be pluralized. Returns: - A (label, noun) pair, e.g. ("deltaM", "volumes") or - ("control-label", "pair"). + A (label, noun) pair, e.g. ("control-label", "pairs") or + ("label-control", "pair"). """ label = ReportGenerator._PATTERN_DISPLAY.get(global_pattern, global_pattern) - if global_pattern == "deltam": - noun = "volumes" if plural else "volume" - else: - noun = "pairs" if plural else "pair" + noun = "pairs" if plural else "pair" return label, noun @staticmethod diff --git a/package/tests/test_report_generator_prose.py b/package/tests/test_report_generator_prose.py index c48114d1..118fe8ae 100644 --- a/package/tests/test_report_generator_prose.py +++ b/package/tests/test_report_generator_prose.py @@ -57,9 +57,9 @@ def test_format_duration_list_scalar_and_missing() -> None: def test_pattern_words_display_tokens() -> None: - """Internal volume-pattern tokens are rendered as prose labels.""" - assert R._pattern_words("deltam", plural=True) == ("deltaM", "volumes") - assert R._pattern_words("deltam", plural=False) == ("deltaM", "volume") + """Every volume pattern is rendered in control-label pair terms.""" + assert R._pattern_words("deltam", plural=True) == ("control-label", "pairs") + assert R._pattern_words("deltam", plural=False) == ("control-label", "pair") assert R._pattern_words("controllabel", plural=True) == ("control-label", "pairs") assert R._pattern_words("labelcontrol", plural=False) == ("label-control", "pair") From 30d4b0f0c3d47c90a4a18d88e54de5fa65904b76 Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Thu, 13 Aug 2026 19:11:02 -0300 Subject: [PATCH 12/28] feat(package): cap report numbers to 4 significant figures --- .../modalities/asl/report_generator.py | 42 ++++++++++++++++--- package/tests/test_report_generator_prose.py | 26 +++++++++++- 2 files changed, 61 insertions(+), 7 deletions(-) diff --git a/package/src/pyaslreport/modalities/asl/report_generator.py b/package/src/pyaslreport/modalities/asl/report_generator.py index b6295ab4..56a4e537 100644 --- a/package/src/pyaslreport/modalities/asl/report_generator.py +++ b/package/src/pyaslreport/modalities/asl/report_generator.py @@ -1,3 +1,4 @@ +import math from collections import Counter from typing import Any @@ -43,6 +44,28 @@ def _join_and(parts: list[object]) -> str: return f"{text_parts[0]} and {text_parts[1]}" return ", ".join(text_parts[:-1]) + ", and " + text_parts[-1] + @staticmethod + def _fmt_num(value: object, sig: int = 4) -> object: + """Round a number to `sig` significant figures for display. + + Non-numeric values (including booleans) are returned unchanged. A whole + result is returned as an int so it renders without a trailing ".0". + + Args: + value: Value to format; only ints and floats are rounded. + sig: Number of significant figures to keep. + + Returns: + The rounded number (int when whole), or the value unchanged. + """ + if isinstance(value, bool) or not isinstance(value, (int, float)): + return value + if value == 0 or not math.isfinite(value): + return value + digits = sig - 1 - math.floor(math.log10(abs(value))) + rounded = round(value, digits) + return int(rounded) if rounded == int(rounded) else rounded + @staticmethod def _format_duration_list(value: object, unit: str = "ms") -> str: """Format a duration value or list, collapsing identical entries. @@ -58,11 +81,12 @@ def _format_duration_list(value: object, unit: str = "ms") -> str: if ReportGenerator._is_missing(value): return "" if isinstance(value, (list, tuple)): - uniq = list(dict.fromkeys(value)) # de-duplicate, preserve order + formatted = [ReportGenerator._fmt_num(v) for v in value] + uniq = list(dict.fromkeys(formatted)) # de-duplicate, preserve order if len(uniq) == 1: return f"{uniq[0]}{unit}" - return ", ".join(f"{v}{unit}" for v in value) - return f"{value}{unit}" + return ", ".join(f"{v}{unit}" for v in formatted) + return f"{ReportGenerator._fmt_num(value)}{unit}" # Raw internal pattern tokens -> human-readable words _PATTERN_DISPLAY = { @@ -125,6 +149,7 @@ def generate_asl_report( """ asl_parameters = [] is_missing = ReportGenerator._is_missing + fmt_num = ReportGenerator._fmt_num # ---- extraction (unchanged from original) ---- pld_type = ReportGenerator.handle_bolus_cutoff_technique( @@ -343,9 +368,9 @@ def generate_asl_report( geo = [] te_ok, tr_ok = not is_missing(echo_time), not is_missing(repetition_time) if te_ok and tr_ok: - geo.append(f"TR/TE = {repetition_time}/{echo_time}ms") + geo.append(f"TR/TE = {repetition_time}/{fmt_num(echo_time)}ms") elif te_ok: - geo.append(f"TE = {echo_time}ms") + geo.append(f"TE = {fmt_num(echo_time)}ms") elif tr_ok: geo.append(f"TR = {repetition_time}") if not is_missing(voxel_size_1_2): @@ -355,7 +380,7 @@ def generate_asl_report( if not is_missing(voxel_size_3): geo.append(f"a slice thickness of {voxel_size_3}mm") if not is_missing(flip_angle): - geo.append(f"a flip angle of {flip_angle} degrees") + geo.append(f"a flip angle of {fmt_num(flip_angle)} degrees") asl_parameters.append(("Echo Time", f"{echo_time}ms")) asl_parameters.append(("Repetition Time", repetition_time)) @@ -710,6 +735,11 @@ def handle_pld_values( status, pld_values, _ = ReportGenerator.handle_inconsistency( values, key, combined_errors ) + # Round PLD values to 4 significant figures for display. + if isinstance(pld_values, (list, tuple)): + pld_values = [ReportGenerator._fmt_num(v) for v in pld_values] + else: + pld_values = ReportGenerator._fmt_num(pld_values) @staticmethod def format_pld_array(pld_array): diff --git a/package/tests/test_report_generator_prose.py b/package/tests/test_report_generator_prose.py index 118fe8ae..349b58a4 100644 --- a/package/tests/test_report_generator_prose.py +++ b/package/tests/test_report_generator_prose.py @@ -41,7 +41,7 @@ def test_join_and() -> None: def test_format_duration_list_collapses_identical() -> None: """Identical duration arrays collapse to one displayed value.""" - assert R._format_duration_list([1166.67, 1166.67, 1166.67]) == "1166.67ms" + assert R._format_duration_list([1450.0, 1450.0, 1450.0]) == "1450ms" def test_format_duration_list_keeps_distinct() -> None: @@ -56,6 +56,30 @@ def test_format_duration_list_scalar_and_missing() -> None: assert R._format_duration_list(None) == "" +def test_fmt_num_caps_significant_figures() -> None: + """Numbers are rounded to at most four significant figures for display.""" + assert R._fmt_num(1166.6666667) == 1167 + assert R._fmt_num(2166.666666666667) == 2167 + assert R._fmt_num(3333.3333333333335) == 3333 + assert R._fmt_num(11.24) == 11.24 + assert R._fmt_num(0.2) == 0.2 + assert R._fmt_num(1000.0) == 1000 + + +def test_fmt_num_leaves_non_numbers_unchanged() -> None: + """Non-numeric values and booleans pass through untouched.""" + assert R._fmt_num("N/A") == "N/A" + assert R._fmt_num(None) is None + assert R._fmt_num(True) is True + assert R._fmt_num(0) == 0 + + +def test_format_duration_list_rounds_values() -> None: + """Long decimals are capped when a duration list is rendered.""" + assert R._format_duration_list([1166.6666667, 1166.6666667]) == "1167ms" + assert R._format_duration_list(2166.666666666667) == "2167ms" + + def test_pattern_words_display_tokens() -> None: """Every volume pattern is rendered in control-label pair terms.""" assert R._pattern_words("deltam", plural=True) == ("control-label", "pairs") From 324257cab933b320036bc8a1a21baf29d14f6c1e Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Thu, 13 Aug 2026 22:03:48 -0300 Subject: [PATCH 13/28] feat(package): collapse near-identical timing arrays within 1% --- .../modalities/asl/report_generator.py | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/package/src/pyaslreport/modalities/asl/report_generator.py b/package/src/pyaslreport/modalities/asl/report_generator.py index 56a4e537..abf578e4 100644 --- a/package/src/pyaslreport/modalities/asl/report_generator.py +++ b/package/src/pyaslreport/modalities/asl/report_generator.py @@ -66,9 +66,28 @@ def _fmt_num(value: object, sig: int = 4) -> object: rounded = round(value, digits) return int(rounded) if rounded == int(rounded) else rounded + @staticmethod + def _within_tolerance(numbers: list[float], tol: float = 0.01) -> bool: + """Return whether all numbers lie within a fractional tolerance. + + Args: + numbers: Numeric values to compare (must be non-empty). + tol: Maximum fractional spread, e.g. 0.01 for 1%. + + Returns: + True when the spread (max - min) relative to the mean is <= `tol`. + """ + lo, hi = min(numbers), max(numbers) + if lo == hi: + return True + mean = sum(numbers) / len(numbers) + if mean == 0: + return False + return (hi - lo) / abs(mean) <= tol + @staticmethod def _format_duration_list(value: object, unit: str = "ms") -> str: - """Format a duration value or list, collapsing identical entries. + """Format a duration value or list, collapsing near-identical entries. Args: value: Scalar duration, list/tuple of durations, or a missing value. @@ -76,11 +95,23 @@ def _format_duration_list(value: object, unit: str = "ms") -> str: Returns: "" when the value is missing, a single "" when a list holds - one unique value, otherwise the comma-joined values. + values that agree within 1%, otherwise the comma-joined values. """ if ReportGenerator._is_missing(value): return "" if isinstance(value, (list, tuple)): + numbers = [ + v + for v in value + if isinstance(v, (int, float)) and not isinstance(v, bool) + ] + if ( + numbers + and len(numbers) == len(value) + and ReportGenerator._within_tolerance(numbers) + ): + mean = sum(numbers) / len(numbers) + return f"{ReportGenerator._fmt_num(mean)}{unit}" formatted = [ReportGenerator._fmt_num(v) for v in value] uniq = list(dict.fromkeys(formatted)) # de-duplicate, preserve order if len(uniq) == 1: From 23de35232e2ca4c785d5ab20af8c80ba2ca190d1 Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Thu, 13 Aug 2026 22:04:04 -0300 Subject: [PATCH 14/28] test: cover 1% tolerance collapse of timing arrays --- package/tests/test_report_generator_prose.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/package/tests/test_report_generator_prose.py b/package/tests/test_report_generator_prose.py index 349b58a4..5a2fe227 100644 --- a/package/tests/test_report_generator_prose.py +++ b/package/tests/test_report_generator_prose.py @@ -80,6 +80,19 @@ def test_format_duration_list_rounds_values() -> None: assert R._format_duration_list(2166.666666666667) == "2167ms" +def test_within_tolerance() -> None: + """The 1% tolerance check groups near-identical values.""" + assert R._within_tolerance([1160.0, 1170.0]) is True + assert R._within_tolerance([1000.0, 1100.0]) is False + assert R._within_tolerance([1450.0, 1450.0]) is True + + +def test_format_duration_list_collapses_near_identical() -> None: + """Timing arrays within 1% collapse to a single representative value.""" + assert R._format_duration_list([1160.0, 1170.0]) == "1165ms" + assert R._format_duration_list([1000.0, 1100.0]) == "1000ms, 1100ms" + + def test_pattern_words_display_tokens() -> None: """Every volume pattern is rendered in control-label pair terms.""" assert R._pattern_words("deltam", plural=True) == ("control-label", "pairs") From 2b42d13d79f7e020383d0003a83b294fafe5c8ed Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Fri, 14 Aug 2026 11:39:56 -0300 Subject: [PATCH 15/28] feat(package): extract AcquisitionVoxelSize from DICOM geometry tags --- .../src/pyaslreport/sequences/base_sequence.py | 16 ++++++++++++++++ .../src/pyaslreport/utils/dicom_tags_utils.py | 2 ++ 2 files changed, 18 insertions(+) diff --git a/package/src/pyaslreport/sequences/base_sequence.py b/package/src/pyaslreport/sequences/base_sequence.py index 44304fab..53137f51 100644 --- a/package/src/pyaslreport/sequences/base_sequence.py +++ b/package/src/pyaslreport/sequences/base_sequence.py @@ -58,6 +58,22 @@ def _extract_common_metadata(self) -> dict: repetition_time = dataset.get(dcm_tags.REPETITION_TIME, None).value bids["RepetitionTimePreparation"] = UnitConverterUtils.convert_milliseconds_to_seconds(repetition_time) + # AcquisitionVoxelSize [in-plane, in-plane, slice thickness] in mm, from + # DICOM geometry tags (PixelSpacing + SliceThickness). This is the + # reconstructed grid; the acquired resolution would need the acquisition + # matrix and FOV. + if dcm_tags.PIXEL_SPACING in dataset and dcm_tags.SLICE_THICKNESS in dataset: + pixel_spacing = dataset.get(dcm_tags.PIXEL_SPACING, None).value + slice_thickness = dataset.get(dcm_tags.SLICE_THICKNESS, None).value + try: + bids["AcquisitionVoxelSize"] = [ + float(pixel_spacing[0]), + float(pixel_spacing[1]), + float(slice_thickness), + ] + except (TypeError, ValueError, IndexError): + pass + return bids def convert_to_bids(self, dicom_dir: str, output_dir: str, bids_basename: str = "sub-01_asl", overwrite: bool = False): diff --git a/package/src/pyaslreport/utils/dicom_tags_utils.py b/package/src/pyaslreport/utils/dicom_tags_utils.py index e5f2b505..50800b39 100644 --- a/package/src/pyaslreport/utils/dicom_tags_utils.py +++ b/package/src/pyaslreport/utils/dicom_tags_utils.py @@ -12,6 +12,8 @@ IMAGE_TYPE = Tag(0x0008, 0x0008) SERIES_DESCRIPTION = Tag(0x0008, 0x103E) INSTANCE_NUMBER = Tag(0x0020, 0x0013) +PIXEL_SPACING = Tag(0x0028, 0x0030) +SLICE_THICKNESS = Tag(0x0018, 0x0050) # GE Commoon Tags GE_ASSET_R_FACTOR = Tag(0x0043, 0x1083) From 2a24ea60bfff238027a9d90e7f867488f791983b Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Fri, 14 Aug 2026 11:40:07 -0300 Subject: [PATCH 16/28] test: cover AcquisitionVoxelSize extraction from DICOM geometry --- package/tests/test_ge_dicom_metadata.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/package/tests/test_ge_dicom_metadata.py b/package/tests/test_ge_dicom_metadata.py index e4f084de..274aad7d 100644 --- a/package/tests/test_ge_dicom_metadata.py +++ b/package/tests/test_ge_dicom_metadata.py @@ -199,3 +199,19 @@ def test_ge_asl_repair_allowlist_covers_extractor_numeric_tags() -> None: } assert extractor_tags <= GE_ASL_REPAIR_TAGS + + +def test_acquisition_voxel_size_from_dicom_geometry(tmp_path: Path) -> None: + """PixelSpacing + SliceThickness populate AcquisitionVoxelSize in mm.""" + tags = _base_ge_tags("3dpcasl") + tags[dcm_tags.PIXEL_SPACING] = ("DS", [3.4, 3.4]) + tags[dcm_tags.SLICE_THICKNESS] = ("DS", "4.0") + tags[dcm_tags.GE_LABEL_DURATION] = ("IS", "1450") + tags[dcm_tags.GE_INVERSION_TIME] = ("DS", "2025") + _write_dicom(tmp_path / "0001.dcm", tags) + + metadata, _ = get_bids_metadata( + {"modality": ModalityTypeValues.ASL, "dicom_dir": str(tmp_path)} + ) + + assert metadata["AcquisitionVoxelSize"] == pytest.approx([3.4, 3.4, 4.0]) From 02b10224b92e8645a50d1e9a150d0e7572329d67 Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Fri, 14 Aug 2026 12:51:19 -0300 Subject: [PATCH 17/28] feat(package): warn when acquisition voxel geometry is missing --- .../pyaslreport/modalities/asl/processor.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/package/src/pyaslreport/modalities/asl/processor.py b/package/src/pyaslreport/modalities/asl/processor.py index ed51becc..7edf7f16 100644 --- a/package/src/pyaslreport/modalities/asl/processor.py +++ b/package/src/pyaslreport/modalities/asl/processor.py @@ -304,6 +304,7 @@ def _validate_m0_and_tsv_data( self._validate_tsv_data( group, context, asl_filename, asl_data, file_format ) + self._warn_if_voxel_geometry_missing(context, asl_filename, asl_data) def _validate_m0_data( self, @@ -539,6 +540,29 @@ def _handle_no_m0scan_warnings( f"only a relative quantification is possible." ) + def _warn_if_voxel_geometry_missing( + self, context: ProcessingContext, asl_filename: str, asl_data: Dict[str, Any] + ) -> None: + """Warn when acquisition voxel geometry cannot be determined. + + The report drops the in-plane resolution and slice-thickness clause when + 'AcquisitionVoxelSize' is absent; this surfaces that omission to the user + instead of dropping it silently. + + Args: + context: Processing context to update. + asl_filename: Name of ASL file. + asl_data: ASL data dictionary. + """ + voxel_size = asl_data.get("AcquisitionVoxelSize") + if not isinstance(voxel_size, (list, tuple)) or len(voxel_size) < 3: + context.warnings.append( + f"Warning: Acquisition voxel geometry is missing for ASL file " + f"'{asl_filename}'; 'AcquisitionVoxelSize' is absent or " + f"incomplete, so in-plane resolution and slice thickness are " + f"omitted from the report." + ) + def _analyze_dicom_repetitions( self, asl_data: Dict[str, Any], context: ProcessingContext ) -> None: From b4b6207bc92249632880613511cb29ade3d45b10 Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Fri, 14 Aug 2026 13:23:42 -0300 Subject: [PATCH 18/28] test: cover missing-voxel-geometry warning --- package/tests/test_m0_tsv_validation.py | 54 +++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/package/tests/test_m0_tsv_validation.py b/package/tests/test_m0_tsv_validation.py index cbcfd508..fbb1eb16 100644 --- a/package/tests/test_m0_tsv_validation.py +++ b/package/tests/test_m0_tsv_validation.py @@ -209,3 +209,57 @@ def test_bs_on_no_pulse_time_warns_about_relative_quantification( asl_data = {"BackgroundSuppression": True} proc._handle_no_m0scan_warnings(ctx, "asl.json", asl_data) assert any("relative quantification" in w for w in ctx.warnings) + + +# ---------- _warn_if_voxel_geometry_missing ---------- + + +class TestVoxelGeometryWarnings: + def test_missing_voxel_geometry_warns( + self, + make_processor: Callable[..., ASLProcessor], + make_context: Callable[..., ProcessingContext], + ) -> None: + """Absent AcquisitionVoxelSize surfaces a warning to the user.""" + proc = make_processor() + ctx = make_context() + asl_data = {"M0Type": "Included"} + + proc._warn_if_voxel_geometry_missing(ctx, "asl.json", asl_data) + + expected = ( + "Warning: Acquisition voxel geometry is missing for ASL file " + "'asl.json'; 'AcquisitionVoxelSize' is absent or incomplete, so " + "in-plane resolution and slice thickness are omitted from the " + "report." + ) + assert ctx.warnings == [expected] + + def test_incomplete_voxel_geometry_warns( + self, + make_processor: Callable[..., ASLProcessor], + make_context: Callable[..., ProcessingContext], + ) -> None: + """A voxel array with fewer than three values still warns.""" + proc = make_processor() + ctx = make_context() + asl_data = {"AcquisitionVoxelSize": [3.0, 3.0]} + + proc._warn_if_voxel_geometry_missing(ctx, "asl.json", asl_data) + + assert len(ctx.warnings) == 1 + assert "voxel geometry is missing" in ctx.warnings[0] + + def test_present_voxel_geometry_no_warning( + self, + make_processor: Callable[..., ASLProcessor], + make_context: Callable[..., ProcessingContext], + ) -> None: + """A complete AcquisitionVoxelSize produces no warning.""" + proc = make_processor() + ctx = make_context() + asl_data = {"AcquisitionVoxelSize": [3.0, 3.0, 4.0]} + + proc._warn_if_voxel_geometry_missing(ctx, "asl.json", asl_data) + + assert ctx.warnings == [] From 20a2449a9c59a3ed8cb55031532ce51dd09581b5 Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Tue, 18 Aug 2026 17:33:12 -0300 Subject: [PATCH 19/28] fix(package): normalize GE LabelingDuration/PostLabelingDelay to BIDS seconds --- .../sequences/ge/asl/ge_asl_base.py | 22 ++++++++ .../sequences/ge/asl/ge_basic_single_pld.py | 12 ++--- .../sequences/ge/asl/ge_easl_multi_pld.py | 14 ++++- package/tests/test_ge_dicom_metadata.py | 54 +++++++++++++++---- 4 files changed, 85 insertions(+), 17 deletions(-) diff --git a/package/src/pyaslreport/sequences/ge/asl/ge_asl_base.py b/package/src/pyaslreport/sequences/ge/asl/ge_asl_base.py index e74ec428..a0495663 100644 --- a/package/src/pyaslreport/sequences/ge/asl/ge_asl_base.py +++ b/package/src/pyaslreport/sequences/ge/asl/ge_asl_base.py @@ -1,6 +1,7 @@ from operator import truediv from pyaslreport.sequences.ge.ge_base import GEBaseSequence +from pyaslreport.utils import UnitConverterUtils from pyaslreport.utils import dicom_tags_utils as dcm_tags @@ -22,6 +23,27 @@ def get_internal_sequence_name(cls, dicom_header: object) -> str | None: return None return str(elem.value).strip().lower() + @staticmethod + def _ms_to_seconds( + value: int | float | list[int | float], + ) -> int | float | list[int | float]: + """Convert GE timing values from milliseconds to BIDS seconds. + + GE private tags store label duration, inversion time and the eASL + CV4/CV5 timings in milliseconds, whereas the rest of the pipeline + emits BIDS seconds (matching ``EchoTime`` and + ``RepetitionTimePreparation``). The processor later multiplies these + BIDS seconds back to milliseconds for the report, so normalizing GE + to seconds here avoids a spurious factor-of-1000 inflation. + + Args: + value: Timing value(s) in milliseconds. + + Returns: + The same value(s) expressed in seconds. + """ + return UnitConverterUtils.convert_milliseconds_to_seconds(value) + def _extract_ge_common_asl_metadata(self): bids_ge_asl = {} diff --git a/package/src/pyaslreport/sequences/ge/asl/ge_basic_single_pld.py b/package/src/pyaslreport/sequences/ge/asl/ge_basic_single_pld.py index 2f950fbf..4448861b 100644 --- a/package/src/pyaslreport/sequences/ge/asl/ge_basic_single_pld.py +++ b/package/src/pyaslreport/sequences/ge/asl/ge_basic_single_pld.py @@ -22,13 +22,13 @@ def extract_bids_metadata(self): dicom_header = self.dicom_header if dcm_tags.GE_LABEL_DURATION in dicom_header: - bids["LabelingDuration"] = dicom_header.get( - dcm_tags.GE_LABEL_DURATION, None - ).value + bids["LabelingDuration"] = self._ms_to_seconds( + dicom_header.get(dcm_tags.GE_LABEL_DURATION, None).value + ) if dcm_tags.GE_INVERSION_TIME in dicom_header: - bids["PostLabelingDelay"] = dicom_header.get( - dcm_tags.GE_INVERSION_TIME, None - ).value + bids["PostLabelingDelay"] = self._ms_to_seconds( + dicom_header.get(dcm_tags.GE_INVERSION_TIME, None).value + ) asl_context = self._generate_asl_context(1) diff --git a/package/src/pyaslreport/sequences/ge/asl/ge_easl_multi_pld.py b/package/src/pyaslreport/sequences/ge/asl/ge_easl_multi_pld.py index adb71df8..f4937f9e 100644 --- a/package/src/pyaslreport/sequences/ge/asl/ge_easl_multi_pld.py +++ b/package/src/pyaslreport/sequences/ge/asl/ge_easl_multi_pld.py @@ -36,13 +36,23 @@ def extract_bids_metadata(self): if npld == 1: # Single-PLD - bids["LabelingDuration"] = dataset.get(dcm_tags.GE_PRIVATE_CV5, None).value - bids["PostLabelingDelay"] = dataset.get(dcm_tags.GE_PRIVATE_CV4, None).value + bids["LabelingDuration"] = self._ms_to_seconds( + dataset.get(dcm_tags.GE_PRIVATE_CV5, None).value + ) + bids["PostLabelingDelay"] = self._ms_to_seconds( + dataset.get(dcm_tags.GE_PRIVATE_CV4, None).value + ) elif npld and npld > 1: # Multi-PLD cv4 = float(dataset.get(dcm_tags.GE_PRIVATE_CV4, 0).value) cv5 = float(dataset.get(dcm_tags.GE_PRIVATE_CV5, 0).value) cv7 = float(dataset.get(dcm_tags.GE_PRIVATE_CV7, 1).value) + + # CV4 (initial PLD) and CV5 (total label duration) are stored in + # milliseconds; normalize to BIDS seconds before any timing math + # so the exponential T1 model and the emitted arrays are correct. + cv4 = self._ms_to_seconds(cv4) + cv5 = self._ms_to_seconds(cv5) magnetic_field_strength = float( dataset.get(dcm_tags.MAGNETIC_FIELD_STRENGTH, 3).value ) diff --git a/package/tests/test_ge_dicom_metadata.py b/package/tests/test_ge_dicom_metadata.py index 274aad7d..76226cd8 100644 --- a/package/tests/test_ge_dicom_metadata.py +++ b/package/tests/test_ge_dicom_metadata.py @@ -16,6 +16,7 @@ from pyaslreport import get_bids_metadata from pyaslreport.enums import ModalityTypeValues +from pyaslreport.modalities.asl.processor import ASLProcessor from pyaslreport.utils import dicom_tags_utils as dcm_tags from pyaslreport.utils.dicom_repair_utils import GE_ASL_REPAIR_TAGS @@ -117,9 +118,10 @@ def test_ge_asl_missing_internal_sequence_name_falls_back_to_single_pld( {"modality": ModalityTypeValues.ASL, "dicom_dir": str(tmp_path)} ) - # Single-PLD extractor path: label duration + PLD from GE tags, single deltaM. - assert metadata["LabelingDuration"] == 1450 - assert float(metadata["PostLabelingDelay"]) == 2025 + # Single-PLD extractor path: GE milliseconds are normalized to BIDS seconds + # (1450 ms -> 1.45 s, 2025 ms -> 2.025 s); single deltaM + m0scan context. + assert metadata["LabelingDuration"] == pytest.approx(1.45) + assert float(metadata["PostLabelingDelay"]) == pytest.approx(2.025) assert asl_context == ["deltaM", "m0scan"] @@ -150,8 +152,9 @@ def test_single_pld_repairs_binary_label_duration_and_selects_pld_header( {"modality": ModalityTypeValues.ASL, "dicom_dir": str(tmp_path)} ) - assert metadata["LabelingDuration"] == 1450 - assert float(metadata["PostLabelingDelay"]) == 2025 + # Extractor emits BIDS seconds: 1450 ms -> 1.45 s, 2025 ms -> 2.025 s. + assert metadata["LabelingDuration"] == pytest.approx(1.45) + assert float(metadata["PostLabelingDelay"]) == pytest.approx(2.025) assert asl_context == ["deltaM", "m0scan"] @@ -172,12 +175,12 @@ def test_easl_repairs_binary_cv_tags_and_generates_multi_pld(tmp_path: Path) -> {"modality": ModalityTypeValues.ASL, "dicom_dir": str(tmp_path)} ) + # CV4/CV5 are normalized ms -> s before the eASL timing math, so the + # emitted arrays are in BIDS seconds (previously x1000 too large). assert metadata["LabelingDuration"] == pytest.approx( - [1166.6666667, 1166.6666667, 1166.6666667] - ) - assert metadata["PostLabelingDelay"] == pytest.approx( - [1000.0, 2166.6666667, 3333.3333333] + [1.1666667, 1.1666667, 1.1666667] ) + assert metadata["PostLabelingDelay"] == pytest.approx([1.0, 2.1666667, 3.3333333]) assert asl_context == ["deltaM", "deltaM", "m0scan"] @@ -215,3 +218,36 @@ def test_acquisition_voxel_size_from_dicom_geometry(tmp_path: Path) -> None: ) assert metadata["AcquisitionVoxelSize"] == pytest.approx([3.4, 3.4, 4.0]) + + +def test_ge_single_pld_timing_survives_processor_conversion_once( + tmp_path: Path, +) -> None: + """GE timing round-trips to report milliseconds exactly once. + + The GE extractor normalizes LabelingDuration/PostLabelingDelay to BIDS + seconds, and the ASL processor multiplies the time fields back to + milliseconds for the report. Chaining both must reproduce the original + GE millisecond values (1450 / 2025) rather than inflating them by 1000, + proving the conversion is applied a single time end to end. + """ + tags = _base_ge_tags(sequence_name=None) + tags[dcm_tags.GE_LABEL_DURATION] = ("IS", "1450") + tags[dcm_tags.GE_INVERSION_TIME] = ("DS", "2025") + _write_dicom(tmp_path / "0001.dcm", tags) + + metadata, _ = get_bids_metadata( + {"modality": ModalityTypeValues.ASL, "dicom_dir": str(tmp_path)} + ) + + # Extractor output is in BIDS seconds. + assert metadata["LabelingDuration"] == pytest.approx(1.45) + assert float(metadata["PostLabelingDelay"]) == pytest.approx(2.025) + + processor = ASLProcessor.__new__(ASLProcessor) + session = dict(metadata) + processor._convert_units_to_milliseconds(session) + + # Processor converts BIDS seconds back to milliseconds exactly once. + assert session["LabelingDuration"] == pytest.approx(1450) + assert session["PostLabelingDelay"] == pytest.approx(2025) From 651bff8d85d5cf158b92ea307c907d6ebc81bb2f Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Tue, 18 Aug 2026 20:39:49 -0300 Subject: [PATCH 20/28] feat: apply sidecar-JSON overrides over DICOM-derived metadata --- package/src/pyaslreport/main.py | 6 +- package/src/pyaslreport/utils/__init__.py | 5 +- .../utils/metadata_override_utils.py | 275 ++++++++++++++++++ package/tests/test_metadata_override.py | 209 +++++++++++++ 4 files changed, 492 insertions(+), 3 deletions(-) create mode 100644 package/src/pyaslreport/utils/metadata_override_utils.py create mode 100644 package/tests/test_metadata_override.py diff --git a/package/src/pyaslreport/main.py b/package/src/pyaslreport/main.py index 017cb825..31e344b1 100644 --- a/package/src/pyaslreport/main.py +++ b/package/src/pyaslreport/main.py @@ -13,6 +13,7 @@ from pyaslreport.sequences.factory import get_sequence from pyaslreport.utils import dicom_tags_utils as dcm_tags from pyaslreport.utils.dicom_repair_utils import repair_dicom_dataset_in_memory +from pyaslreport.utils.metadata_override_utils import apply_sidecar_overrides from .modalities.registry import get_processor @@ -48,7 +49,10 @@ def get_bids_metadata(data): "provided DICOM header" ) - return sequence.extract_bids_metadata() + metadata = sequence.extract_bids_metadata() + metadata, _ = apply_sidecar_overrides(metadata, dicom_dir) + + return metadata @dataclass diff --git a/package/src/pyaslreport/utils/__init__.py b/package/src/pyaslreport/utils/__init__.py index de4aca8e..67635da0 100644 --- a/package/src/pyaslreport/utils/__init__.py +++ b/package/src/pyaslreport/utils/__init__.py @@ -1,5 +1,6 @@ from .dicom_tags_utils import * -from .unit_conversion_utils import * +from .general_utils import * from .math_utils import * +from .metadata_override_utils import * +from .unit_conversion_utils import * from .validation_utils import * -from .general_utils import * \ No newline at end of file diff --git a/package/src/pyaslreport/utils/metadata_override_utils.py b/package/src/pyaslreport/utils/metadata_override_utils.py new file mode 100644 index 00000000..21ad77c4 --- /dev/null +++ b/package/src/pyaslreport/utils/metadata_override_utils.py @@ -0,0 +1,275 @@ +"""In-memory overlay of a BIDS-style JSON sidecar onto DICOM-derived metadata. + +This module loads a BIDS-style JSON "sidecar" that ships alongside the DICOMs +(for example ``studyPar.json``) and overlays its fields onto the metadata +extracted from the DICOM headers. The overlay happens entirely in memory; the +source DICOM files are never modified, consistent with the anonymization-repair +philosophy used elsewhere in the package. + +The sidecar is treated as authoritative ("JSON wins"): when a field is present +in both the extracted metadata and the sidecar, the sidecar value replaces the +extracted one. Replacing a *differing* extracted value is recorded as a conflict +so the caller can surface a warning instead of changing a value silently. + +Discovery, field scope, and name-aliasing are driven by module-level constants +so behaviour can be adjusted without touching call sites. +""" + +from __future__ import annotations + +import glob +import json +import logging as log +import os +from dataclasses import dataclass, field +from typing import Any + +__all__ = [ + "SIDECAR_GLOBS", + "SEARCH_PARENT", + "OVERRIDE_ALLOWLIST", + "FIELD_ALIASES", + "OverrideReport", + "discover_sidecars", + "load_sidecar", + "apply_overrides", + "apply_sidecar_overrides", +] + +# --------------------------------------------------------------------------- +# Configurable knobs +# --------------------------------------------------------------------------- + +#: Filename patterns that count as a sidecar, searched in the given order. +SIDECAR_GLOBS: tuple[str, ...] = ("*.json",) + +#: Whether to also search the parent (session) folder of the DICOM directory. +SEARCH_PARENT: bool = True + +#: When not ``None``, only these post-alias keys are allowed to be overlaid. +OVERRIDE_ALLOWLIST: set[str] | None = None + +#: Sidecar field names mapped onto the tool's internal metadata keys. +FIELD_ALIASES: dict[str, str] = { + "LabelingType": "ArterialSpinLabelingType", + "M0": "M0Type", +} + + +# --------------------------------------------------------------------------- +# Result type +# --------------------------------------------------------------------------- +@dataclass +class OverrideReport: + """Record of what a sidecar overlay changed. + + Attributes: + sidecar_path: Path of the sidecar that was applied, or ``None`` when no + sidecar was found or applied. + applied: Post-alias keys newly added to the metadata (absent before). + conflicts: ``(key, dicom_value, sidecar_value)`` for each field whose + differing extracted value was overridden by the sidecar. + aliased: ``(sidecar_name, internal_key)`` for each remapped field. + skipped: Sidecar field names skipped because of the allowlist. + """ + + sidecar_path: str | None = None + applied: list[str] = field(default_factory=list) + conflicts: list[tuple[str, Any, Any]] = field(default_factory=list) + aliased: list[tuple[str, str]] = field(default_factory=list) + skipped: list[str] = field(default_factory=list) + + +# --------------------------------------------------------------------------- +# Discovery and loading +# --------------------------------------------------------------------------- +def discover_sidecars(dicom_dir: str | None) -> list[str]: + """Find sidecar JSON files next to a DICOM directory. + + Searches ``dicom_dir`` and, when :data:`SEARCH_PARENT` is set, its parent + (session) folder for files matching :data:`SIDECAR_GLOBS`. + + Args: + dicom_dir: Directory the DICOM files were read from. + + Returns: + Absolute sidecar paths, de-duplicated and in a stable (sorted) order. + Empty when ``dicom_dir`` is falsy or nothing matches. + """ + if not dicom_dir: + return [] + + roots = [dicom_dir] + if SEARCH_PARENT: + roots.append(os.path.dirname(os.path.normpath(dicom_dir))) + + found: list[str] = [] + seen: set[str] = set() + for root in roots: + for pattern in SIDECAR_GLOBS: + for path in sorted(glob.glob(os.path.join(root, pattern))): + abs_path = os.path.abspath(path) + if abs_path not in seen: + seen.add(abs_path) + found.append(abs_path) + return found + + +def load_sidecar(path: str) -> dict[str, Any]: + """Load a sidecar JSON file into a dictionary. + + Args: + path: Path to the JSON sidecar. + + Returns: + The parsed JSON object, or an empty dict when the file does not contain + a JSON object (for example a top-level array). + + Raises: + OSError: If the file cannot be read. + json.JSONDecodeError: If the file is not valid JSON. + """ + with open(path, encoding="utf-8") as handle: + data = json.load(handle) + + if not isinstance(data, dict): + log.warning("Sidecar %s is not a JSON object; ignoring its contents.", path) + return {} + return data + + +# --------------------------------------------------------------------------- +# Overlay +# --------------------------------------------------------------------------- +def _resolve_metadata_dict(metadata: Any) -> dict[str, Any] | None: + """Return the mutable metadata mapping within an extraction result. + + ``extract_bids_metadata`` returns a plain ``dict`` for some sequences and a + ``[dict, asl_context]`` pair for others. This returns the first ``dict`` to + overlay onto, or ``None`` when no mapping is present. + + Args: + metadata: The result of ``extract_bids_metadata``. + + Returns: + The metadata mapping to mutate, or ``None``. + """ + if isinstance(metadata, dict): + return metadata + if isinstance(metadata, (list, tuple)): + for item in metadata: + if isinstance(item, dict): + return item + return None + + +def apply_overrides( + metadata: Any, + sidecar: dict[str, Any], + *, + allowlist: set[str] | None = None, + aliases: dict[str, str] | None = None, + sidecar_path: str | None = None, +) -> tuple[Any, OverrideReport]: + """Overlay a loaded sidecar onto extracted metadata in memory. + + The sidecar is authoritative: each field replaces the corresponding + extracted value. Replacing a *differing* extracted value is recorded as a + conflict (and logged at WARNING level) so nothing changes silently. + + Args: + metadata: The extraction result to mutate in place. Either a ``dict`` or + a ``[dict, asl_context]`` sequence. + sidecar: Parsed sidecar fields to overlay. + allowlist: When not ``None``, only these post-alias keys are overlaid; + all other sidecar keys are skipped. + aliases: Sidecar-to-internal key remapping. Defaults to + :data:`FIELD_ALIASES`. + sidecar_path: Path recorded on the returned report, for diagnostics. + + Returns: + A ``(metadata, report)`` tuple. ``metadata`` is the same object passed + in (mutated); ``report`` is an :class:`OverrideReport` describing the + changes. + """ + if aliases is None: + aliases = FIELD_ALIASES + + report = OverrideReport(sidecar_path=sidecar_path) + target = _resolve_metadata_dict(metadata) + if target is None: + log.warning("No metadata mapping found to overlay the sidecar onto; skipping.") + return metadata, report + + for raw_key, new_value in sidecar.items(): + key = aliases.get(raw_key, raw_key) + if key != raw_key: + report.aliased.append((raw_key, key)) + + if allowlist is not None and key not in allowlist: + report.skipped.append(raw_key) + continue + + if key in target: + old_value = target[key] + if old_value != new_value: + report.conflicts.append((key, old_value, new_value)) + log.warning( + "Sidecar override: '%s' %r -> %r (DICOM-derived value replaced).", + key, + old_value, + new_value, + ) + else: + report.applied.append(key) + + target[key] = new_value + + return metadata, report + + +def apply_sidecar_overrides( + metadata: Any, + dicom_dir: str | None, + *, + allowlist: set[str] | None = OVERRIDE_ALLOWLIST, +) -> tuple[Any, OverrideReport]: + """Discover a sidecar for a DICOM directory and overlay it onto metadata. + + Locates a sidecar next to ``dicom_dir`` (see :data:`SIDECAR_GLOBS` and + :data:`SEARCH_PARENT`), loads it, and overlays it onto ``metadata`` in + memory. When several sidecars are found the first (stable order) is applied + and the rest are logged and ignored. + + Args: + metadata: The extraction result to mutate in place. + dicom_dir: Directory the DICOMs were read from. ``None`` or empty + disables the overlay (no-op). + allowlist: Optional post-alias key allowlist. Defaults to + :data:`OVERRIDE_ALLOWLIST`. + + Returns: + A ``(metadata, report)`` tuple, as described in :func:`apply_overrides`. + When no sidecar is found, ``metadata`` is returned unchanged with an + empty report. + """ + report = OverrideReport() + if not dicom_dir: + return metadata, report + + sidecars = discover_sidecars(dicom_dir) + if not sidecars: + return metadata, report + + if len(sidecars) > 1: + log.warning( + "Multiple sidecar JSON files found for %s; applying '%s' and ignoring %s.", + dicom_dir, + sidecars[0], + sidecars[1:], + ) + + sidecar = load_sidecar(sidecars[0]) + return apply_overrides( + metadata, sidecar, allowlist=allowlist, sidecar_path=sidecars[0] + ) diff --git a/package/tests/test_metadata_override.py b/package/tests/test_metadata_override.py new file mode 100644 index 00000000..7bf877a9 --- /dev/null +++ b/package/tests/test_metadata_override.py @@ -0,0 +1,209 @@ +"""Tests for the sidecar-JSON metadata override utility (C12).""" + +from __future__ import annotations + +import os +from pathlib import Path + +from pyaslreport.utils.metadata_override_utils import ( + apply_overrides, + apply_sidecar_overrides, + discover_sidecars, + load_sidecar, +) + + +def _make_session(tmp_path: Path, sidecar_json: str | None) -> Path: + """Build a session/ASL layout and return the DICOM (ASL) directory. + + Args: + tmp_path: Pytest-provided per-test temporary directory. + sidecar_json: Raw JSON text to write as ``session/studyPar.json``, or + ``None`` to create no sidecar. + + Returns: + Path to the ``ASL`` subfolder, mirroring the real layout where the + sidecar sits in the session folder one level above the DICOMs. + """ + session = tmp_path / "GE_PCASL_DV25.0" + asl_dir = session / "ASL" + asl_dir.mkdir(parents=True) + if sidecar_json is not None: + (session / "studyPar.json").write_text(sidecar_json, encoding="utf-8") + return asl_dir + + +class TestDiscoverSidecars: + """Discovery of sidecar JSON files next to a DICOM directory.""" + + def test_finds_sidecar_in_session_folder(self, tmp_path: Path) -> None: + """A studyPar.json one level above the DICOMs is discovered.""" + asl_dir = _make_session(tmp_path, "{}") + + found = discover_sidecars(str(asl_dir)) + + assert len(found) == 1 + assert os.path.basename(found[0]) == "studyPar.json" + + def test_returns_empty_when_no_json(self, tmp_path: Path) -> None: + """No JSON anywhere yields an empty list.""" + asl_dir = _make_session(tmp_path, None) + + assert discover_sidecars(str(asl_dir)) == [] + + def test_empty_dicom_dir_returns_empty(self) -> None: + """A falsy dicom_dir disables discovery.""" + assert discover_sidecars("") == [] + assert discover_sidecars(None) == [] + + +class TestLoadSidecar: + """Loading and shape-checking of sidecar files.""" + + def test_loads_json_object(self, tmp_path: Path) -> None: + """A JSON object is returned as a dict.""" + path = tmp_path / "s.json" + path.write_text('{"BackgroundSuppression": true}', encoding="utf-8") + + assert load_sidecar(str(path)) == {"BackgroundSuppression": True} + + def test_non_object_returns_empty_dict(self, tmp_path: Path) -> None: + """A top-level JSON array is ignored and yields an empty dict.""" + path = tmp_path / "s.json" + path.write_text("[1, 2, 3]", encoding="utf-8") + + assert load_sidecar(str(path)) == {} + + +class TestApplyOverrides: + """In-memory overlay semantics: JSON wins, conflicts recorded.""" + + def test_adds_absent_field(self) -> None: + """A DICOM-absent field (pulse times) is added to the metadata.""" + metadata = {"BackgroundSuppression": True} + + _, report = apply_overrides( + metadata, + {"BackgroundSuppressionPulseTime": [1.465, 2.1, 2.6, 2.88]}, + ) + + assert metadata["BackgroundSuppressionPulseTime"] == [1.465, 2.1, 2.6, 2.88] + assert report.applied == ["BackgroundSuppressionPulseTime"] + assert report.conflicts == [] + + def test_json_wins_and_conflict_recorded(self) -> None: + """A differing present value is overridden and recorded as a conflict.""" + metadata = {"BackgroundSuppressionNumberPulses": 4} + + _, report = apply_overrides(metadata, {"BackgroundSuppressionNumberPulses": 2}) + + assert metadata["BackgroundSuppressionNumberPulses"] == 2 + assert report.conflicts == [("BackgroundSuppressionNumberPulses", 4, 2)] + assert report.applied == [] + + def test_matching_value_is_not_a_conflict(self) -> None: + """Overriding with an identical value records neither applied nor conflict.""" + metadata = {"BackgroundSuppression": True} + + _, report = apply_overrides(metadata, {"BackgroundSuppression": True}) + + assert report.conflicts == [] + assert report.applied == [] + + def test_alias_maps_labeling_type(self) -> None: + """LabelingType is remapped onto the internal ArterialSpinLabelingType.""" + metadata: dict[str, object] = {} + + _, report = apply_overrides(metadata, {"LabelingType": "PCASL"}) + + assert metadata == {"ArterialSpinLabelingType": "PCASL"} + assert report.aliased == [("LabelingType", "ArterialSpinLabelingType")] + assert report.applied == ["ArterialSpinLabelingType"] + + def test_allowlist_skips_unlisted_keys(self) -> None: + """With an allowlist, only listed post-alias keys are overlaid.""" + metadata: dict[str, object] = {} + + _, report = apply_overrides( + metadata, + {"SliceTiming": 0.0374, "BackgroundSuppression": True}, + allowlist={"BackgroundSuppression"}, + ) + + assert metadata == {"BackgroundSuppression": True} + assert report.skipped == ["SliceTiming"] + + def test_accept_all_passes_unknown_keys(self) -> None: + """With no allowlist, DICOM-unknown keys pass through unchanged.""" + metadata: dict[str, object] = {} + + apply_overrides(metadata, {"SliceTiming": 0.0374, "NumberSegments": 4}) + + assert metadata == {"SliceTiming": 0.0374, "NumberSegments": 4} + + def test_overlays_first_dict_of_list_result(self) -> None: + """For a [dict, asl_context] result, only the dict is overlaid.""" + metadata = [{"BackgroundSuppression": True}, ["deltaM", "m0scan"]] + + apply_overrides( + metadata, + {"BackgroundSuppressionPulseTime": [1.465, 2.1, 2.6, 2.88]}, + ) + + assert metadata[0]["BackgroundSuppressionPulseTime"] == [1.465, 2.1, 2.6, 2.88] + assert metadata[1] == ["deltaM", "m0scan"] + + def test_no_metadata_mapping_is_noop(self) -> None: + """A result with no dict is left untouched with an empty report.""" + metadata = ["only", "strings"] + + result, report = apply_overrides(metadata, {"BackgroundSuppression": True}) + + assert result == ["only", "strings"] + assert report.applied == [] + assert report.conflicts == [] + + +class TestApplySidecarOverrides: + """End-to-end discovery + overlay driven from a DICOM directory.""" + + def test_discovers_and_applies(self, tmp_path: Path) -> None: + """A real studyPar.json is found and its fields reach the metadata.""" + asl_dir = _make_session( + tmp_path, + '{"BackgroundSuppression": true,' + ' "BackgroundSuppressionNumberPulses": 4,' + ' "BackgroundSuppressionPulseTime": [1.465, 2.1, 2.6, 2.88]}', + ) + metadata = {"BackgroundSuppression": True} + + _, report = apply_sidecar_overrides(metadata, str(asl_dir)) + + assert metadata["BackgroundSuppressionPulseTime"] == [1.465, 2.1, 2.6, 2.88] + assert metadata["BackgroundSuppressionNumberPulses"] == 4 + assert report.applied == [ + "BackgroundSuppressionNumberPulses", + "BackgroundSuppressionPulseTime", + ] + assert report.sidecar_path is not None + + def test_none_dicom_dir_is_noop(self) -> None: + """A None dicom_dir leaves the metadata untouched.""" + metadata = {"BackgroundSuppression": True} + + result, report = apply_sidecar_overrides(metadata, None) + + assert result == {"BackgroundSuppression": True} + assert report.sidecar_path is None + assert report.applied == [] + + def test_no_sidecar_found_is_noop(self, tmp_path: Path) -> None: + """When no sidecar exists, the metadata is unchanged.""" + asl_dir = _make_session(tmp_path, None) + metadata = {"BackgroundSuppression": True} + + _, report = apply_sidecar_overrides(metadata, str(asl_dir)) + + assert metadata == {"BackgroundSuppression": True} + assert report.applied == [] + assert report.sidecar_path is None From 1c84bc5e5f5a69f2609431324b45e40e569ad492 Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Wed, 19 Aug 2026 00:14:16 -0300 Subject: [PATCH 21/28] fix: recognize aslcontext volume types regardless of TSV quoting --- apps/backend/app/routers/reports.py | 2 +- .../src/pyaslreport/io/readers/file_reader.py | 36 ++++++++++++++----- package/tests/test_file_reader.py | 25 +++++++++++++ 3 files changed, 54 insertions(+), 9 deletions(-) create mode 100644 package/tests/test_file_reader.py diff --git a/apps/backend/app/routers/reports.py b/apps/backend/app/routers/reports.py index 5b80ab8e..5202697e 100644 --- a/apps/backend/app/routers/reports.py +++ b/apps/backend/app/routers/reports.py @@ -101,7 +101,7 @@ async def get_report_dicom( with open(f"{base_dir}/_aslcontext.tsv", "w") as f: f.write("volume_type\n") for value in asl_context: - f.write(f'"{value.lower()}"\n') + f.write(f"{value.lower()}\n") bids_data = { "modality": data["modality"], diff --git a/package/src/pyaslreport/io/readers/file_reader.py b/package/src/pyaslreport/io/readers/file_reader.py index 55484406..038abc55 100644 --- a/package/src/pyaslreport/io/readers/file_reader.py +++ b/package/src/pyaslreport/io/readers/file_reader.py @@ -1,6 +1,24 @@ import json +def _strip_surrounding_quotes(token: str) -> str: + """Remove one matching pair of surrounding quotes from a TSV token. + + BIDS ``aslcontext.tsv`` values are unquoted, but some producers wrap them + in quotes; normalizing both keeps downstream volume-type matching working. + + Args: + token: A whitespace-stripped TSV field. + + Returns: + The token without a single pair of matching surrounding single or + double quotes, or unchanged when it is not quoted. + """ + if len(token) >= 2 and token[0] == token[-1] and token[0] in ('"', "'"): + return token[1:-1] + return token + + class FileReader: @staticmethod @@ -14,11 +32,11 @@ def read(file_path): Parsed content of the file. """ try: - file_stream = open(file_path, 'r') - if file_path.endswith('.json'): + file_stream = open(file_path, "r") + if file_path.endswith(".json"): return FileReader._read_json(file_stream) - elif file_path.endswith('.tsv'): + elif file_path.endswith(".tsv"): return FileReader._read_tsv(file_stream) else: @@ -41,7 +59,9 @@ def _read_json(file_stream): Parsed JSON data. """ with file_stream as f: - content = f.read().strip() # Read the content and strip any leading/trailing whitespace + content = ( + f.read().strip() + ) # Read the content and strip any leading/trailing whitespace if content: # Check if the file is not empty data = json.loads(content) return data @@ -62,10 +82,10 @@ def _read_tsv(file_stream): if not lines: return None - header = lines[0].strip() + header = _strip_surrounding_quotes(lines[0].strip()) - if header != 'volume_type': - raise RuntimeError("Invalid TSV header, not \"volume_type\"") + if header != "volume_type": + raise RuntimeError('Invalid TSV header, not "volume_type"') - data = [line.strip() for line in lines[1:]] + data = [_strip_surrounding_quotes(line.strip()) for line in lines[1:]] return data diff --git a/package/tests/test_file_reader.py b/package/tests/test_file_reader.py new file mode 100644 index 00000000..1cd582ea --- /dev/null +++ b/package/tests/test_file_reader.py @@ -0,0 +1,25 @@ +"""Tests for FileReader TSV parsing (aslcontext volume types).""" + +from __future__ import annotations + +from pathlib import Path + +from pyaslreport.io.readers.file_reader import FileReader + + +class TestReadTsv: + """Reading a single-column aslcontext.tsv into volume-type tokens.""" + + def test_strips_surrounding_quotes(self, tmp_path: Path) -> None: + """Quoted values are unwrapped so downstream matching works.""" + path = tmp_path / "_aslcontext.tsv" + path.write_text('volume_type\n"deltam"\n"m0scan"\n', encoding="utf-8") + + assert FileReader.read(str(path)) == ["deltam", "m0scan"] + + def test_unquoted_values_unchanged(self, tmp_path: Path) -> None: + """Standard unquoted BIDS values pass through untouched.""" + path = tmp_path / "_aslcontext.tsv" + path.write_text("volume_type\ncontrol\nlabel\n", encoding="utf-8") + + assert FileReader.read(str(path)) == ["control", "label"] From ab1bce38d50ca1081aed59414b21556da1e28f8e Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Wed, 19 Aug 2026 00:14:35 -0300 Subject: [PATCH 22/28] fix: omit the totals clause for zero or unknown pair patterns --- .../modalities/asl/report_generator.py | 7 ++- package/tests/test_report_generator_prose.py | 48 +++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/package/src/pyaslreport/modalities/asl/report_generator.py b/package/src/pyaslreport/modalities/asl/report_generator.py index abf578e4..06a3b281 100644 --- a/package/src/pyaslreport/modalities/asl/report_generator.py +++ b/package/src/pyaslreport/modalities/asl/report_generator.py @@ -427,7 +427,12 @@ def generate_asl_report( # repetitions (guarded so a missing count never prints 'None') rep = "" - if not is_missing(total_acquired_pairs): + pattern_known = global_pattern not in (None, "", "pattern error") + if ( + not is_missing(total_acquired_pairs) + and total_acquired_pairs != 0 + and pattern_known + ): plural = total_acquired_pairs != 1 label, noun = ReportGenerator._pattern_words(global_pattern, plural) verb = "were" if plural else "was" diff --git a/package/tests/test_report_generator_prose.py b/package/tests/test_report_generator_prose.py index 5a2fe227..378a61d6 100644 --- a/package/tests/test_report_generator_prose.py +++ b/package/tests/test_report_generator_prose.py @@ -111,3 +111,51 @@ def test_bolus_cutoff_delay_inconsistent_closes_parenthesis() -> None: assert out.startswith("(inconsistent") assert out.endswith(")"), out assert out.count("(") == out.count(")") + + +class _Values(dict): + """Mapping yielding a well-formed (file, 'N/A') pair for absent keys.""" + + def get(self, key, default=None): + return self[key] if key in self else [("f", "N/A")] + + +def _asl_report(global_pattern: str, total_acquired_pairs: object) -> str: + """Build an ASL report with all value-derived clauses empty. + + Args: + global_pattern: Volume-ordering token, passed straight through. + total_acquired_pairs: Pair count, passed straight through. + + Returns: + The basic ASL report paragraph. + """ + report, _ = R.generate_asl_report( + _Values(), + {}, + {}, + global_pattern, + "Included", + total_acquired_pairs=total_acquired_pairs, + slice_number=18, + ) + return report + + +def test_repetitions_clause_present_for_valid_count() -> None: + """A known pattern with a positive count yields the totals sentence.""" + assert "In total, 30 control-label pairs were acquired." in _asl_report( + "controllabel", 30 + ) + + +def test_repetitions_clause_omitted_when_zero() -> None: + """A zero count drops the totals sentence entirely.""" + assert "In total" not in _asl_report("controllabel", 0) + + +def test_repetitions_clause_omitted_for_unknown_pattern() -> None: + """The 'pattern error' sentinel never leaks into the prose.""" + report = _asl_report("pattern error", 1) + assert "In total" not in report + assert "pattern error" not in report From 8d82c110d68b167806a9b6a544ca8a8f995e46ad Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Fri, 21 Aug 2026 13:26:53 -0300 Subject: [PATCH 23/28] test: report all differing golden keys with a readable text diff --- package/tests/integration/compare.py | 82 ++++++++++++++++++++++++++++ package/tests/test_integration.py | 57 +++++++++++++++++-- 2 files changed, 134 insertions(+), 5 deletions(-) create mode 100644 package/tests/integration/compare.py diff --git a/package/tests/integration/compare.py b/package/tests/integration/compare.py new file mode 100644 index 00000000..c06bd04a --- /dev/null +++ b/package/tests/integration/compare.py @@ -0,0 +1,82 @@ +"""Readable comparison for integration goldens. + +Used by ``tests/test_integration.py``. Reports EVERY differing key at once +(not just the first), and renders a unified line diff for report prose so a +single changed sentence shows as one ``-``/``+`` pair instead of a wall of text. +The same output appears locally under ``pytest -v`` and in the CI log. +""" + +from __future__ import annotations + +import difflib +import json +from typing import Any + +_TEXT_KEYS = frozenset({"basic_report", "extended_report"}) + + +def _is_text_key(key: str, expected: Any, actual: Any) -> bool: + """Return True when a key's values should be diffed as text lines.""" + if key in _TEXT_KEYS or key.endswith("_text"): + return True + return isinstance(expected, str) and isinstance(actual, str) + + +def _text_diff(key: str, expected: Any, actual: Any) -> str: + """Return a unified line diff (old vs new) for two string values.""" + return "\n".join( + difflib.unified_diff( + str(expected).splitlines(), + str(actual).splitlines(), + fromfile=f"{key} (expected)", + tofile=f"{key} (actual)", + lineterm="", + ) + ) + + +def _struct_diff(expected: Any, actual: Any) -> str: + """Return an expected/actual block for a differing structured value.""" + exp = json.dumps(expected, indent=2, sort_keys=True, default=str) + act = json.dumps(actual, indent=2, sort_keys=True, default=str) + return f" expected: {exp}\n actual: {act}" + + +def assert_report_matches( + expected: dict[str, Any], actual: dict[str, Any], case: str +) -> None: + """Assert two reports are equal, reporting all differences at once. + + Args: + expected: The committed golden (``expected_output.json``), JSON-normalized. + actual: The freshly generated report, JSON-normalized. + case: The example name, used to label the failure message. + + Raises: + AssertionError: If the key sets differ or any value differs. The message + lists key-set drift first, then one block per differing key: a + unified line diff for report prose (and any string value), or an + expected/actual dump for structured values. + """ + blocks: list[str] = [] + + only_expected = sorted(set(expected) - set(actual)) + only_actual = sorted(set(actual) - set(expected)) + if only_expected: + blocks.append(f"keys only in expected: {only_expected}") + if only_actual: + blocks.append(f"keys only in actual: {only_actual}") + + for key in sorted(set(expected) & set(actual)): + if expected[key] == actual[key]: + continue + if _is_text_key(key, expected[key], actual[key]): + body = _text_diff(key, expected[key], actual[key]) + else: + body = _struct_diff(expected[key], actual[key]) + blocks.append(f"[{key}] differs:\n{body}") + + if blocks: + raise AssertionError( + f"{case}: {len(blocks)} difference(s)\n\n" + "\n\n".join(blocks) + ) diff --git a/package/tests/test_integration.py b/package/tests/test_integration.py index 79a4fa15..f1f71294 100644 --- a/package/tests/test_integration.py +++ b/package/tests/test_integration.py @@ -26,6 +26,7 @@ import numpy as np import pytest +from tests.integration.compare import assert_report_matches from tests.integration.runner import ( ExampleStructureError, PairingFallbackWarning, @@ -65,11 +66,7 @@ def test_example_matches_expected( expected = load_expected(integration_case) actual = normalize(report) - assert set(actual.keys()) == set( - expected.keys() - ), f"{integration_case.name}: key set drift" - for key in sorted(expected.keys()): - assert actual[key] == expected[key], f"{integration_case.name}: '{key}' differs" + assert_report_matches(expected, actual, integration_case.name) # --------------------------------------------------------------------------- @@ -261,3 +258,53 @@ def test_slice_count_tracks_nifti(self, tmp_path: Path) -> None: """nifti_slice_number reflects the synthesized slice axis.""" case = _make_example(tmp_path, slices=27) assert run_example(case)["nifti_slice_number"] == 27 + + +class TestAssertReportMatches: + """Self-tests for the golden comparison helper (unmarked; runs in unit job).""" + + def test_identical_reports_do_not_raise(self) -> None: + """Equal reports produce no error.""" + report = {"basic_report": "hello", "nifti_slice_number": 20} + assert_report_matches(dict(report), dict(report), "case") + + def test_prose_difference_shows_unified_diff(self) -> None: + """A changed report sentence appears as -old / +new lines.""" + expected = {"basic_report": "TE = 10ms.\nSlices: 18."} + actual = {"basic_report": "TE = 10ms.\nSlices: 20."} + with pytest.raises(AssertionError) as exc: + assert_report_matches(expected, actual, "case") + message = str(exc.value) + assert "basic_report" in message + assert "-Slices: 18." in message + assert "+Slices: 20." in message + + def test_structured_difference_shows_both_values(self) -> None: + """A differing structured field shows both expected and actual.""" + with pytest.raises(AssertionError) as exc: + assert_report_matches( + {"nifti_slice_number": 18}, {"nifti_slice_number": 20}, "case" + ) + message = str(exc.value) + assert "18" in message + assert "20" in message + + def test_key_set_drift_is_reported(self) -> None: + """Keys only in expected or only in actual are both reported.""" + with pytest.raises(AssertionError) as exc: + assert_report_matches({"a": 1, "b": 2}, {"a": 1, "c": 3}, "case") + message = str(exc.value) + assert "only in expected" in message and "b" in message + assert "only in actual" in message and "c" in message + + def test_all_differences_reported_at_once(self) -> None: + """Every differing key is reported, not just the first.""" + with pytest.raises(AssertionError) as exc: + assert_report_matches( + {"basic_report": "a", "nifti_slice_number": 18}, + {"basic_report": "b", "nifti_slice_number": 20}, + "case", + ) + message = str(exc.value) + assert "basic_report" in message + assert "nifti_slice_number" in message From 06b9be0ad4c57aab910d2ae2ff918b24ffea252c Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Fri, 21 Aug 2026 13:40:56 -0300 Subject: [PATCH 24/28] test: run DICOM example folders through the real report path --- package/tests/integration/_dicom_synth.py | 96 ++++++++++ .../integration/fixtures/sample_asl.nii.gz | Bin 0 -> 97 bytes package/tests/integration/runner.py | 169 ++++++++++++++++-- package/tests/test_integration.py | 76 ++++++++ 4 files changed, 325 insertions(+), 16 deletions(-) create mode 100644 package/tests/integration/_dicom_synth.py create mode 100644 package/tests/integration/fixtures/sample_asl.nii.gz diff --git a/package/tests/integration/_dicom_synth.py b/package/tests/integration/_dicom_synth.py new file mode 100644 index 00000000..71c00396 --- /dev/null +++ b/package/tests/integration/_dicom_synth.py @@ -0,0 +1,96 @@ +"""Synthetic DICOM writers for the DICOM integration harness tests. + +Lets the harness build minimal in-memory ASL DICOMs with no committed fixtures, +so the DICOM machinery is exercised on every push. Adapted from +``tests/test_ge_dicom_metadata.py``. +""" + +from __future__ import annotations + +import struct +from pathlib import Path +from typing import Any + +import pydicom +import pydicom.config as pydicom_config +from pydicom.dataelem import DataElement +from pydicom.dataset import Dataset, FileMetaDataset +from pydicom.uid import ExplicitVRLittleEndian, generate_uid + +from pyaslreport.utils import dicom_tags_utils as dcm_tags + + +def _binary_double(value: float) -> str: + """Encode a float as the anonymization-damaged raw-double string.""" + return struct.pack(" Path: + """Write a minimal DICOM file from a ``{tag: (VR, value)}`` mapping.""" + dataset = Dataset() + dataset.SpecificCharacterSet = "ISO_IR 100" + + old_read = pydicom_config.settings.reading_validation_mode + old_write = pydicom_config.settings.writing_validation_mode + pydicom_config.settings.reading_validation_mode = pydicom_config.IGNORE + pydicom_config.settings.writing_validation_mode = pydicom_config.IGNORE + try: + for tag, (vr, value) in tags.items(): + if ( + vr in {"DS", "IS"} + and isinstance(value, str) + and any(ord(char) < 32 or ord(char) > 126 for char in value) + ): + dataset.add(DataElement(tag, vr, value, already_converted=True)) + else: + dataset.add_new(tag, vr, value) + finally: + pydicom_config.settings.reading_validation_mode = old_read + pydicom_config.settings.writing_validation_mode = old_write + + file_meta = FileMetaDataset() + file_meta.MediaStorageSOPClassUID = generate_uid() + file_meta.MediaStorageSOPInstanceUID = generate_uid() + file_meta.TransferSyntaxUID = ExplicitVRLittleEndian + dataset.file_meta = file_meta + + old_write = pydicom_config.settings.writing_validation_mode + pydicom_config.settings.writing_validation_mode = pydicom_config.IGNORE + try: + pydicom.dcmwrite(str(path), dataset, enforce_file_format=True) + finally: + pydicom_config.settings.writing_validation_mode = old_write + return path + + +def write_ge_asl_dicom( + path: Path, + *, + sequence_name: str = "3dpcasl", + label_duration: str = "1450", + inversion_time: str = "2025", +) -> Path: + """Write a minimal GE single-PLD ASL DICOM (yields a (metadata, context) pair).""" + tags = { + dcm_tags.MANUFACTURER: ("LO", "GE MEDICAL SYSTEMS"), + dcm_tags.MR_ACQUISITION_TYPE: ("CS", "3D"), + dcm_tags.MAGNETIC_FIELD_STRENGTH: ("DS", "3"), + dcm_tags.ECHO_TIME: ("DS", "10.5"), + dcm_tags.FLIP_ANGLE: ("DS", "111"), + dcm_tags.GE_INTERNAL_SEQUENCE_NAME: ("LO", sequence_name), + dcm_tags.GE_LABEL_DURATION: ("IS", label_duration), + dcm_tags.GE_INVERSION_TIME: ("DS", inversion_time), + } + return write_dicom(path, tags) + + +def write_siemens_asl_dicom(path: Path) -> Path: + """Write a minimal Siemens PASL DICOM (yields a bare dict today).""" + tags = { + dcm_tags.MANUFACTURER: ("LO", "SIEMENS"), + dcm_tags.MR_ACQUISITION_TYPE: ("CS", "2D"), + dcm_tags.MAGNETIC_FIELD_STRENGTH: ("DS", "3"), + dcm_tags.ECHO_TIME: ("DS", "12"), + dcm_tags.FLIP_ANGLE: ("DS", "90"), + } + return write_dicom(path, tags) diff --git a/package/tests/integration/fixtures/sample_asl.nii.gz b/package/tests/integration/fixtures/sample_asl.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..92233e3cc894b08890f650ea5f04d4fe1f6de140 GIT binary patch literal 97 zcmb2|=3oE;mjB&}DGFR03>p@2Fbgv)ODxI~N(f-!Ho0MJ@ZhlY9K}y7cCq&zZ#kYd n!Tti{#v~q|%3EzOX1V`dtY{#`ghnVUurSy^>)VjP&A tuple[list[str], str]: def discover_examples(base: Path) -> list[Path]: - """Return case dirs under `base` (immediate children with a perf/*_asl.json). + """Return case dirs under `base` (immediate children the runner can run). - Keys on inputs, not on expected_output.json, so --update-expected can - bootstrap a brand-new case. Missing/empty base yields []. + A child is a case when it classifies as DICOM or BIDS (see + ``classify_example``). Keys on inputs, not on expected_output.json, so + --update-expected can bootstrap a brand-new case. Missing/empty base yields []. """ if not base.is_dir(): return [] - cases = [] - for child in base.iterdir(): - if not child.is_dir(): - continue - if any( - p.name.endswith(_ASL_JSON) - for perf in _perf_dirs(child) - for p in perf.iterdir() - ): - cases.append(child) - return sorted(cases) + return sorted( + child + for child in base.iterdir() + if child.is_dir() and classify_example(child) != "none" + ) -def run_example(case: Path) -> dict[str, Any]: +def _run_bids_example(case: Path) -> dict[str, Any]: """Run the BIDS report path on one example case directory.""" files, nifti = build_inputs(case) return generate_report( @@ -269,6 +270,142 @@ def run_example(case: Path) -> dict[str, Any]: ) +def default_serializer(obj: Any) -> Any: + """Serialize values ``json`` can't handle, matching the backend helper. + + Mirrors ``apps/backend/app/utils/lib.py`` so the ``_asl.json`` written for a + DICOM example is byte-compatible with what ``get_report_dicom`` produces. + """ + if isinstance(obj, pydicom.multival.MultiValue): + return list(obj) + if isinstance(obj, np.generic): + return obj.item() + if isinstance(obj, np.ndarray): + return obj.tolist() + return str(obj) + + +def _is_readable_dicom(path: Path) -> bool: + """Return True when ``path`` parses as a DICOM header.""" + try: + pydicom.dcmread(str(path), stop_before_pixels=True) + return True + except Exception: + return False + + +def _find_dicom_dir(case: Path) -> Optional[Path]: + """Locate a case's DICOM directory, or None if it isn't a DICOM case. + + Resolution: an ``example.json`` ``dicom_subdir`` override; any ``*.dcm`` under + the case (its parent is the DICOM dir); otherwise, for extension-less DICOMs, + the first subfolder whose first file parses as DICOM. A BIDS layout + (perf/*_asl.json) short-circuits to None. + """ + manifest = case / "example.json" + if manifest.is_file(): + try: + sub = json.loads(manifest.read_text()).get("dicom_subdir") + except (json.JSONDecodeError, OSError): + sub = None + if sub: + candidate = case / sub + return candidate if candidate.is_dir() else None + + dcms = sorted(case.rglob("*.dcm")) + if dcms: + return dcms[0].parent + + if any( + p.name.endswith(_ASL_JSON) for perf in _perf_dirs(case) for p in perf.iterdir() + ): + return None + + for directory in sorted(p for p in case.rglob("*") if p.is_dir()): + files = sorted(f for f in directory.iterdir() if f.is_file()) + if files and _is_readable_dicom(files[0]): + return directory + return None + + +def classify_example(case: Path) -> str: + """Return ``"dicom"``, ``"bids"``, or ``"none"`` for a case directory. + + An ``example.json`` ``type`` field overrides detection; otherwise a DICOM + directory wins, then a perf/*_asl.json BIDS layout. + """ + manifest = case / "example.json" + if manifest.is_file(): + try: + declared = json.loads(manifest.read_text()).get("type") + except (json.JSONDecodeError, OSError): + declared = None + if declared in ("dicom", "bids"): + return declared + + if _find_dicom_dir(case) is not None: + return "dicom" + if any( + p.name.endswith(_ASL_JSON) for perf in _perf_dirs(case) for p in perf.iterdir() + ): + return "bids" + return "none" + + +def _write_dicom_inputs( + out_dir: Path, metadata: Any, asl_context: Any +) -> tuple[str, str]: + """Write ``_asl.json`` and ``_aslcontext.tsv`` exactly as the backend does. + + Returns the (asl_json, aslcontext_tsv) paths. The tsv header is ``volume_type`` + followed by one lower-cased, quoted value per row. + """ + asl_json = out_dir / "_asl.json" + asl_json.write_text(json.dumps(metadata, indent=2, default=default_serializer)) + tsv = out_dir / "_aslcontext.tsv" + with tsv.open("w", newline="\n") as handle: + handle.write("volume_type\n") + for value in asl_context: + handle.write(f'"{str(value).lower()}"\n') + return str(asl_json), str(tsv) + + +def _run_dicom_example(case: Path) -> dict[str, Any]: + """Run the DICOM report path on one case, mirroring ``get_report_dicom``. + + Extracts BIDS metadata + context from the DICOMs (applying any C12 sidecar), + writes them to a temporary ``_asl.json`` / ``_aslcontext.tsv``, and runs + ``generate_report`` against the committed placeholder NIfTI (D-1a). The + ``metadata, asl_context`` unpack mirrors production: a vendor returning a bare + dict (Siemens today) raises here, by design. + + Raises: + ExampleStructureError: If the case has no DICOM directory. + """ + dicom_dir = _find_dicom_dir(case) + if dicom_dir is None: + raise ExampleStructureError(f"{case}: no DICOM directory found") + metadata, asl_context = get_bids_metadata( + {"modality": ModalityTypeValues.ASL, "dicom_dir": str(dicom_dir)} + ) + with tempfile.TemporaryDirectory() as tmp: + asl_json, tsv = _write_dicom_inputs(Path(tmp), metadata, asl_context) + return generate_report( + { + "modality": ModalityTypeValues.ASL, + "files": [asl_json, tsv], + "nifti_file": str(SAMPLE_NIFTI), + } + ) + + +def run_example(case: Path) -> dict[str, Any]: + """Run one example case, auto-detecting DICOM vs BIDS.""" + if classify_example(case) == "dicom": + return _run_dicom_example(case) + return _run_bids_example(case) + + def normalize(obj: Any) -> Any: """Round-trip through JSON so tuples (e.g. m0_parameters) compare as lists.""" return json.loads(json.dumps(obj, default=str)) diff --git a/package/tests/test_integration.py b/package/tests/test_integration.py index f1f71294..0f532dc2 100644 --- a/package/tests/test_integration.py +++ b/package/tests/test_integration.py @@ -24,13 +24,21 @@ import nibabel as nib import numpy as np +import pydicom import pytest +from tests.integration._dicom_synth import ( + write_ge_asl_dicom, + write_siemens_asl_dicom, +) from tests.integration.compare import assert_report_matches from tests.integration.runner import ( ExampleStructureError, PairingFallbackWarning, + _find_dicom_dir, + _write_dicom_inputs, build_inputs, + classify_example, discover_examples, load_expected, normalize, @@ -308,3 +316,71 @@ def test_all_differences_reported_at_once(self) -> None: message = str(exc.value) assert "basic_report" in message assert "nifti_slice_number" in message + + +class TestDicomExampleRunner: + """Self-tests for the DICOM example branch (unmarked; runs in unit job).""" + + def _ge_case(self, root: Path, *, with_sidecar: bool = True) -> Path: + """Build a minimal GE single-PLD DICOM case under root/case/ASL.""" + case = root / "case" + asl_dir = case / "ASL" + asl_dir.mkdir(parents=True) + write_ge_asl_dicom(asl_dir / "0001.dcm") + if with_sidecar: + (case / "studyPar.json").write_text( + json.dumps( + { + "BackgroundSuppression": True, + "BackgroundSuppressionNumberPulses": 4, + "BackgroundSuppressionPulseTime": [1.465, 2.1, 2.6, 2.88], + } + ) + ) + return case + + def test_classify_detects_dicom_and_bids(self, tmp_path: Path) -> None: + """A .dcm folder classifies as dicom; a perf/*_asl.json folder as bids.""" + assert classify_example(self._ge_case(tmp_path / "d")) == "dicom" + assert classify_example(_make_example(tmp_path / "b")) == "bids" + + def test_locate_dicom_dir_finds_asl_subfolder(self, tmp_path: Path) -> None: + """The DICOM directory is the ASL subfolder holding the .dcm files.""" + assert _find_dicom_dir(self._ge_case(tmp_path)).name == "ASL" + + def test_dicom_example_runs_full_report(self, tmp_path: Path) -> None: + """A GE case runs end to end to a 21-key report; slice count from the fixture.""" + report = run_example(self._ge_case(tmp_path)) + assert len(report) == 21 + assert report["nifti_slice_number"] == 20 + + def test_c12_sidecar_reaches_report_prose(self, tmp_path: Path) -> None: + """studyPar pulse times reach the prose only when the sidecar is present.""" + with_sidecar = run_example(self._ge_case(tmp_path / "with")) + without = run_example(self._ge_case(tmp_path / "without", with_sidecar=False)) + assert "1465ms" in with_sidecar["basic_report"] + assert "1465ms" not in without["basic_report"] + + def test_serialization_matches_backend_format(self, tmp_path: Path) -> None: + """_write_dicom_inputs serializes numpy/MultiValue and quotes tsv values.""" + metadata = { + "arr": np.array([1, 2, 3]), + "mv": pydicom.multival.MultiValue(float, [4.0, 5.0]), + } + asl_json, tsv = _write_dicom_inputs(tmp_path, metadata, ["deltaM", "m0scan"]) + loaded = json.loads(Path(asl_json).read_text()) + assert loaded["arr"] == [1, 2, 3] + assert loaded["mv"] == [4.0, 5.0] + assert Path(tsv).read_text() == 'volume_type\n"deltam"\n"m0scan"\n' + + def test_siemens_shaped_return_currently_raises(self, tmp_path: Path) -> None: + """Siemens returns a bare dict today, so the production-style unpack raises. + + Documents the current contract; flips when the vendor shape-fix lands. + """ + case = tmp_path / "case" + asl_dir = case / "ASL" + asl_dir.mkdir(parents=True) + write_siemens_asl_dicom(asl_dir / "0001.dcm") + with pytest.raises(ValueError): + run_example(case) From 4ce7024eb0eb03fc54a637e3304a1d877fe1beb3 Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Fri, 21 Aug 2026 14:12:49 -0300 Subject: [PATCH 25/28] fix(package): return (metadata, asl_context) for every vendor --- package/src/pyaslreport/main.py | 24 ++++++++++++++++++++++-- package/tests/test_integration.py | 12 +++++++----- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/package/src/pyaslreport/main.py b/package/src/pyaslreport/main.py index 31e344b1..a03df4d2 100644 --- a/package/src/pyaslreport/main.py +++ b/package/src/pyaslreport/main.py @@ -36,7 +36,7 @@ def get_bids_metadata(data): """ Converts the provided data to BIDS format. :param data: Dictionary containing modality data. - :return: BIDS-formatted data. + :return: A (metadata, asl_context) pair for every vendor. """ modality = data.get("modality") dicom_dir = data.get("dicom_dir") @@ -52,7 +52,27 @@ def get_bids_metadata(data): metadata = sequence.extract_bids_metadata() metadata, _ = apply_sidecar_overrides(metadata, dicom_dir) - return metadata + return _normalize_metadata_shape(metadata) + + +def _normalize_metadata_shape(metadata): + """Return a ``(metadata, asl_context)`` pair for every vendor. + + GE already returns the pair; Siemens returns a bare metadata dict, from which + the ASL context is taken from a sidecar ``ASLContext`` string (routed out of + the metadata) or a sensible default. This keeps ``get_bids_metadata``'s + contract uniform so callers can always unpack two values. + """ + if isinstance(metadata, (list, tuple)) and len(metadata) == 2: + return metadata[0], metadata[1] + if isinstance(metadata, dict): + context = metadata.pop("ASLContext", None) + if context: + asl_context = [v.strip() for v in str(context).split(",") if v.strip()] + else: + asl_context = ["deltaM", "m0scan"] + return metadata, asl_context + raise TypeError(f"Unexpected metadata shape: {type(metadata).__name__}") @dataclass diff --git a/package/tests/test_integration.py b/package/tests/test_integration.py index 0f532dc2..ac7575d6 100644 --- a/package/tests/test_integration.py +++ b/package/tests/test_integration.py @@ -373,14 +373,16 @@ def test_serialization_matches_backend_format(self, tmp_path: Path) -> None: assert loaded["mv"] == [4.0, 5.0] assert Path(tsv).read_text() == 'volume_type\n"deltam"\n"m0scan"\n' - def test_siemens_shaped_return_currently_raises(self, tmp_path: Path) -> None: - """Siemens returns a bare dict today, so the production-style unpack raises. + def test_siemens_runs_full_report(self, tmp_path: Path) -> None: + """Siemens now returns a (metadata, asl_context) pair and runs to a report. - Documents the current contract; flips when the vendor shape-fix lands. + get_bids_metadata normalizes the Siemens bare dict into a pair (routing any + sidecar ASLContext into the context), so the DICOM path no longer raises. """ case = tmp_path / "case" asl_dir = case / "ASL" asl_dir.mkdir(parents=True) write_siemens_asl_dicom(asl_dir / "0001.dcm") - with pytest.raises(ValueError): - run_example(case) + report = run_example(case) + assert len(report) == 21 + assert report["nifti_slice_number"] == 20 From de2fa6b2b36471046255fceacaddb7be09d217e9 Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Mon, 24 Aug 2026 02:28:07 -0300 Subject: [PATCH 26/28] fix(package): exclude *output* JSONs from sidecar discovery --- .../pyaslreport/utils/metadata_override_utils.py | 14 ++++++++++++-- package/tests/test_metadata_override.py | 10 ++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/package/src/pyaslreport/utils/metadata_override_utils.py b/package/src/pyaslreport/utils/metadata_override_utils.py index 21ad77c4..251a41b5 100644 --- a/package/src/pyaslreport/utils/metadata_override_utils.py +++ b/package/src/pyaslreport/utils/metadata_override_utils.py @@ -26,6 +26,7 @@ __all__ = [ "SIDECAR_GLOBS", + "SIDECAR_NAME_EXCLUDES", "SEARCH_PARENT", "OVERRIDE_ALLOWLIST", "FIELD_ALIASES", @@ -43,6 +44,11 @@ #: Filename patterns that count as a sidecar, searched in the given order. SIDECAR_GLOBS: tuple[str, ...] = ("*.json",) +#: Case-insensitive substrings that DISQUALIFY a JSON from being treated as a +#: sidecar. Guards against report/golden files (e.g. ``expected_output.json``) +#: that sit next to the DICOMs, especially in integration example folders. +SIDECAR_NAME_EXCLUDES: tuple[str, ...] = ("output",) + #: Whether to also search the parent (session) folder of the DICOM directory. SEARCH_PARENT: bool = True @@ -93,8 +99,9 @@ def discover_sidecars(dicom_dir: str | None) -> list[str]: dicom_dir: Directory the DICOM files were read from. Returns: - Absolute sidecar paths, de-duplicated and in a stable (sorted) order. - Empty when ``dicom_dir`` is falsy or nothing matches. + Absolute sidecar paths, de-duplicated and in a stable (sorted) order, + excluding any whose name matches :data:`SIDECAR_NAME_EXCLUDES`. Empty when + ``dicom_dir`` is falsy or nothing matches. """ if not dicom_dir: return [] @@ -108,6 +115,9 @@ def discover_sidecars(dicom_dir: str | None) -> list[str]: for root in roots: for pattern in SIDECAR_GLOBS: for path in sorted(glob.glob(os.path.join(root, pattern))): + name = os.path.basename(path).lower() + if any(excl in name for excl in SIDECAR_NAME_EXCLUDES): + continue abs_path = os.path.abspath(path) if abs_path not in seen: seen.add(abs_path) diff --git a/package/tests/test_metadata_override.py b/package/tests/test_metadata_override.py index 7bf877a9..2dee6fc2 100644 --- a/package/tests/test_metadata_override.py +++ b/package/tests/test_metadata_override.py @@ -56,6 +56,16 @@ def test_empty_dicom_dir_returns_empty(self) -> None: assert discover_sidecars("") == [] assert discover_sidecars(None) == [] + def test_excludes_output_named_json(self, tmp_path: Path) -> None: + """A report/golden JSON (name contains 'output') is not a sidecar.""" + asl_dir = _make_session(tmp_path, "{}") # writes studyPar.json in session + (asl_dir.parent / "expected_output.json").write_text("{}", encoding="utf-8") + + found = [os.path.basename(f) for f in discover_sidecars(str(asl_dir))] + + assert "studyPar.json" in found + assert "expected_output.json" not in found + class TestLoadSidecar: """Loading and shape-checking of sidecar files.""" From 2c9eb45b3fd02848411e5ec344cddaa29f165dd4 Mon Sep 17 00:00:00 2001 From: Vitor Lima dos Santos Date: Mon, 24 Aug 2026 03:16:04 -0300 Subject: [PATCH 27/28] test: add committed BIDS integration examples --- _to_delete/_stage/examples_bids.tgz | Bin 0 -> 4572 bytes .../bids_ge_pcasl_spiral/expected_output.json | 105 ++++++++++++++ .../sub-Sub103/perf/sub-Sub103_asl.json | 26 ++++ .../sub-Sub103/perf/sub-Sub103_asl.nii.gz | Bin 0 -> 97 bytes .../sub-Sub103/perf/sub-Sub103_aslcontext.tsv | 3 + .../examples/bids_pasl/expected_output.json | 133 +++++++++++++++++ .../bids_pasl/sub-Sub1/perf/sub-Sub1_asl.json | 37 +++++ .../sub-Sub1/perf/sub-Sub1_asl.nii.gz | Bin 0 -> 97 bytes .../sub-Sub1/perf/sub-Sub1_aslcontext.tsv | 21 +++ .../sub-Sub1/perf/sub-Sub1_m0scan.json | 23 +++ .../bids_pcasl_3dgrase/expected_output.json | 111 ++++++++++++++ .../sub-Sub103/perf/sub-Sub103_asl.json | 33 +++++ .../sub-Sub103/perf/sub-Sub103_asl.nii.gz | Bin 0 -> 97 bytes .../sub-Sub103/perf/sub-Sub103_aslcontext.tsv | 17 +++ .../sub-Sub103/perf/sub-Sub103_m0scan.json | 19 +++ .../bids_pcasl_multipld/expected_output.json | 136 ++++++++++++++++++ .../sub-Sub1/perf/sub-Sub1_asl.json | 31 ++++ .../sub-Sub1/perf/sub-Sub1_asl.nii.gz | Bin 0 -> 97 bytes .../sub-Sub1/perf/sub-Sub1_aslcontext.tsv | 98 +++++++++++++ .../sub-Sub1/perf/sub-Sub1_m0scan.json | 12 ++ 20 files changed, 805 insertions(+) create mode 100644 _to_delete/_stage/examples_bids.tgz create mode 100644 package/tests/integration/examples/bids_ge_pcasl_spiral/expected_output.json create mode 100644 package/tests/integration/examples/bids_ge_pcasl_spiral/sub-Sub103/perf/sub-Sub103_asl.json create mode 100644 package/tests/integration/examples/bids_ge_pcasl_spiral/sub-Sub103/perf/sub-Sub103_asl.nii.gz create mode 100644 package/tests/integration/examples/bids_ge_pcasl_spiral/sub-Sub103/perf/sub-Sub103_aslcontext.tsv create mode 100644 package/tests/integration/examples/bids_pasl/expected_output.json create mode 100644 package/tests/integration/examples/bids_pasl/sub-Sub1/perf/sub-Sub1_asl.json create mode 100644 package/tests/integration/examples/bids_pasl/sub-Sub1/perf/sub-Sub1_asl.nii.gz create mode 100644 package/tests/integration/examples/bids_pasl/sub-Sub1/perf/sub-Sub1_aslcontext.tsv create mode 100644 package/tests/integration/examples/bids_pasl/sub-Sub1/perf/sub-Sub1_m0scan.json create mode 100644 package/tests/integration/examples/bids_pcasl_3dgrase/expected_output.json create mode 100644 package/tests/integration/examples/bids_pcasl_3dgrase/sub-Sub103/perf/sub-Sub103_asl.json create mode 100644 package/tests/integration/examples/bids_pcasl_3dgrase/sub-Sub103/perf/sub-Sub103_asl.nii.gz create mode 100644 package/tests/integration/examples/bids_pcasl_3dgrase/sub-Sub103/perf/sub-Sub103_aslcontext.tsv create mode 100644 package/tests/integration/examples/bids_pcasl_3dgrase/sub-Sub103/perf/sub-Sub103_m0scan.json create mode 100644 package/tests/integration/examples/bids_pcasl_multipld/expected_output.json create mode 100644 package/tests/integration/examples/bids_pcasl_multipld/sub-Sub1/perf/sub-Sub1_asl.json create mode 100644 package/tests/integration/examples/bids_pcasl_multipld/sub-Sub1/perf/sub-Sub1_asl.nii.gz create mode 100644 package/tests/integration/examples/bids_pcasl_multipld/sub-Sub1/perf/sub-Sub1_aslcontext.tsv create mode 100644 package/tests/integration/examples/bids_pcasl_multipld/sub-Sub1/perf/sub-Sub1_m0scan.json diff --git a/_to_delete/_stage/examples_bids.tgz b/_to_delete/_stage/examples_bids.tgz new file mode 100644 index 0000000000000000000000000000000000000000..4c649237961c5a313e6441f97e82798c57f52f3c GIT binary patch literal 4572 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 G$N&IV4mSJ% literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/bids_ge_pcasl_spiral/expected_output.json b/package/tests/integration/examples/bids_ge_pcasl_spiral/expected_output.json new file mode 100644 index 00000000..45ecd85e --- /dev/null +++ b/package/tests/integration/examples/bids_ge_pcasl_spiral/expected_output.json @@ -0,0 +1,105 @@ +{ + "major_errors": {}, + "major_errors_concise": {}, + "errors": {}, + "errors_concise": {}, + "warnings": {}, + "warnings_concise": {}, + "basic_report": "ASL was acquired on a 3T GE DISCOVERY_MR750 scanner. Single-PLD PCASL labeling was performed with a 3D spiral readout. The labeling duration was 1450ms, followed by a PLD of 2025ms. Background suppression was applied using 4 pulses, with pulses at 1965ms, 2600ms, 3100ms, and 3380ms after the start of labeling. Images were acquired with TR/TE = 4886ms/10.53ms, an in-plane resolution of 4x4mm^2, 20 slices, a slice thickness of 8mm, and a flip angle of 111 degrees. In total, 1 control-label pair was acquired. M0 was acquired with the same readout and without background suppression. TR for M0 is 4886ms.", + "extended_report": "ASL was acquired on a 3T GE DISCOVERY_MR750 scanner. Single-PLD PCASL labeling was performed with a 3D spiral readout. The labeling duration was 1450ms, followed by a PLD of 2025ms. Background suppression was applied using 4 pulses, with pulses at 1965ms, 2600ms, 3100ms, and 3380ms after the start of labeling. Images were acquired with TR/TE = 4886ms/10.53ms, an in-plane resolution of 4x4mm^2, 20 slices, a slice thickness of 8mm, and a flip angle of 111 degrees. In total, 1 control-label pair was acquired. M0 was acquired with the same readout and without background suppression. TR for M0 is 4886ms.", + "nifti_slice_number": 20, + "major_errors_concise_text": "", + "errors_concise_text": "", + "warnings_concise_text": "", + "inconsistencies": "", + "major_inconsistencies": "", + "warning_inconsistencies": "", + "m0_concise_error": "", + "m0_concise_warning": "", + "asl_parameters": [ + [ + "Magnetic Field Strength", + "3T" + ], + [ + "Manufacturer", + "GE" + ], + [ + "Manufacturer's Model Name", + "DISCOVERY_MR750" + ], + [ + "PLD Type", + "single-PLD" + ], + [ + "ASL Type", + "PCASL" + ], + [ + "MR Acquisition Type", + "3D" + ], + [ + "Pulse Sequence Type", + "spiral" + ], + [ + "Labeling Duration", + 1450 + ], + [ + "PLD", + "2025ms" + ], + [ + "Background Suppression Number of Pulses", + 4 + ], + [ + "Background Suppression Pulse Time", + "1965ms, 2600ms, 3100ms, and 3380ms" + ], + [ + "Background Suppression", + "with" + ], + [ + "Echo Time", + "10.528ms" + ], + [ + "Repetition Time", + "4886ms" + ], + [ + "Flip Angle", + 111 + ], + [ + "In-plane Resolution", + "4x4mm^2" + ], + [ + "Slice Thickness", + "8mm" + ], + [ + "Total Acquired Pairs", + 1 + ] + ], + "m0_parameters": [ + [ + "M0 Type", + "Included" + ], + [ + "M0 TR", + 4886 + ] + ], + "extended_parameters": [], + "missing_required_parameters": {} +} diff --git a/package/tests/integration/examples/bids_ge_pcasl_spiral/sub-Sub103/perf/sub-Sub103_asl.json b/package/tests/integration/examples/bids_ge_pcasl_spiral/sub-Sub103/perf/sub-Sub103_asl.json new file mode 100644 index 00000000..91331392 --- /dev/null +++ b/package/tests/integration/examples/bids_ge_pcasl_spiral/sub-Sub103/perf/sub-Sub103_asl.json @@ -0,0 +1,26 @@ +{"Manufacturer":"GE", +"ManufacturersModelName":"DISCOVERY_MR750", +"SoftwareVersions":"24_LX_MR_Software_release:DV24.0_R02_1607.b", +"MagneticFieldStrength":3, +"ReceiveCoilName":"32Ch_Head", +"MRAcquisitionType":"3D", +"PulseSequenceType":"spiral", +"PulseSequenceDetails":"GE 3d spiral pcasl product sequence: 24_LX_MR_Software_release", +"ScanningSequence":"RM", +"SequenceVariant":"NONE", +"ScanOptions":"EDR_GEMS_SPIRAL_GEMS", +"EchoTime":0.010528, +"FlipAngle":111, +"RepetitionTimePreparation":4.886, +"ArterialSpinLabelingType":"PCASL", +"PostLabelingDelay":2.025, +"BackgroundSuppression":true, +"M0Type":"Included", +"TotalAcquiredPairs":3, +"VascularCrushing":false, +"AcquisitionVoxelSize":[4,4,8], +"BackgroundSuppressionNumberPulses":4, +"BackgroundSuppressionPulseTime":[1.965,2.6,3.1,3.38], +"LabelingLocationDescription":"~8 cm below the circle of Willis, through the proximal V3 segment of the vertebral arteries", +"LabelingDistance":40, +"LabelingDuration":1.450} diff --git a/package/tests/integration/examples/bids_ge_pcasl_spiral/sub-Sub103/perf/sub-Sub103_asl.nii.gz b/package/tests/integration/examples/bids_ge_pcasl_spiral/sub-Sub103/perf/sub-Sub103_asl.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..92233e3cc894b08890f650ea5f04d4fe1f6de140 GIT binary patch literal 97 zcmb2|=3oE;mjB&}DGFR03>p@2Fbgv)ODxI~N(f-!Ho0MJ@ZhlY9K}y7cCq&zZ#kYd n!Tti{#v~q|%3EzOX1V`dtY{#`ghnVUurSy^>)VjP&Ap@2Fbgv)ODxI~N(f-!Ho0MJ@ZhlY9K}y7cCq&zZ#kYd n!Tti{#v~q|%3EzOX1V`dtY{#`ghnVUurSy^>)VjP&Ap@2Fbgv)ODxI~N(f-!Ho0MJ@ZhlY9K}y7cCq&zZ#kYd n!Tti{#v~q|%3EzOX1V`dtY{#`ghnVUurSy^>)VjP&Ap@2Fbgv)ODxI~N(f-!Ho0MJ@ZhlY9K}y7cCq&zZ#kYd n!Tti{#v~q|%3EzOX1V`dtY{#`ghnVUurSy^>)VjP&A Date: Mon, 24 Aug 2026 03:28:11 -0300 Subject: [PATCH 28/28] test: add committed GE DICOM integration examples --- .../examples/ge_pcasl_basic/ASL/00001.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00002.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00003.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00004.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00005.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00006.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00007.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00008.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00009.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00010.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00011.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00012.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00013.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00014.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00015.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00016.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00017.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00018.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00019.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00020.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00021.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00022.dcm | Bin 0 -> 38964 bytes .../examples/ge_pcasl_basic/ASL/00023.dcm | Bin 0 -> 38964 bytes .../examples/ge_pcasl_basic/ASL/00024.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00025.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00026.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00027.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00028.dcm | Bin 0 -> 38932 bytes .../examples/ge_pcasl_basic/ASL/00029.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00030.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00031.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00032.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00033.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00034.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00035.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00036.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00037.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00038.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00039.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00040.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00041.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00042.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00043.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00044.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00045.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00046.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00047.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00048.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00049.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00050.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00051.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00052.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00053.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00054.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00055.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00056.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00057.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00058.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00059.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00060.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00061.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00062.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00063.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00064.dcm | Bin 0 -> 38932 bytes .../examples/ge_pcasl_basic/ASL/00065.dcm | Bin 0 -> 38930 bytes .../examples/ge_pcasl_basic/ASL/00066.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00067.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00068.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00069.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00070.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00071.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00072.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00073.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00074.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00075.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00076.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00077.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00078.dcm | Bin 0 -> 38966 bytes .../examples/ge_pcasl_basic/ASL/00079.dcm | Bin 0 -> 38934 bytes .../examples/ge_pcasl_basic/ASL/00080.dcm | Bin 0 -> 38966 bytes .../ge_pcasl_basic/expected_output.json | 133 ++++++++++++++++++ .../examples/ge_pcasl_basic/studyPar.json | 3 + .../examples/ge_pcasl_easl/ASL/00001.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00002.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00003.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00004.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00005.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00006.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00007.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00008.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00009.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00010.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00011.dcm | Bin 0 -> 38838 bytes .../examples/ge_pcasl_easl/ASL/00012.dcm | Bin 0 -> 38838 bytes .../examples/ge_pcasl_easl/ASL/00013.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00014.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00015.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00016.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00017.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00018.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00019.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00020.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00021.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00022.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00023.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00024.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00025.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00026.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00027.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00028.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00029.dcm | Bin 0 -> 38838 bytes .../examples/ge_pcasl_easl/ASL/00030.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00031.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00032.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00033.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00034.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00035.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00036.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00037.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00038.dcm | Bin 0 -> 38838 bytes .../examples/ge_pcasl_easl/ASL/00039.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00040.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00041.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00042.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00043.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00044.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00045.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00046.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00047.dcm | Bin 0 -> 38838 bytes .../examples/ge_pcasl_easl/ASL/00048.dcm | Bin 0 -> 38838 bytes .../examples/ge_pcasl_easl/ASL/00049.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00050.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00051.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00052.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00053.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00054.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00055.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00056.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00057.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00058.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00059.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00060.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00061.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00062.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00063.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00064.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00065.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00066.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00067.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00068.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00069.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00070.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00071.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00072.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00073.dcm | Bin 0 -> 38838 bytes .../examples/ge_pcasl_easl/ASL/00074.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00075.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00076.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00077.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00078.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00079.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00080.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00081.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00082.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00083.dcm | Bin 0 -> 38838 bytes .../examples/ge_pcasl_easl/ASL/00084.dcm | Bin 0 -> 38838 bytes .../examples/ge_pcasl_easl/ASL/00085.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00086.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00087.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00088.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00089.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00090.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00091.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00092.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00093.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00094.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00095.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00096.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00097.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00098.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00099.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00100.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00101.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00102.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00103.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00104.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00105.dcm | Bin 0 -> 38836 bytes .../examples/ge_pcasl_easl/ASL/00106.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00107.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00108.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00109.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00110.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00111.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00112.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00113.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00114.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00115.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00116.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00117.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00118.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00119.dcm | Bin 0 -> 38840 bytes .../examples/ge_pcasl_easl/ASL/00120.dcm | Bin 0 -> 38840 bytes .../examples/ge_pcasl_easl/ASL/00121.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00122.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00123.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00124.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00125.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00126.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00127.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00128.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00129.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00130.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00131.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00132.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00133.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00134.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00135.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00136.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00137.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00138.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00139.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00140.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00141.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00142.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00143.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00144.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00145.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00146.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00147.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00148.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00149.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00150.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00151.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00152.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00153.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00154.dcm | Bin 0 -> 38848 bytes .../examples/ge_pcasl_easl/ASL/00155.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00156.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00157.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00158.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00159.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00160.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00161.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00162.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00163.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00164.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00165.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00166.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00167.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00168.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00169.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00170.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00171.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00172.dcm | Bin 0 -> 38846 bytes .../examples/ge_pcasl_easl/ASL/00173.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00174.dcm | Bin 0 -> 38844 bytes .../examples/ge_pcasl_easl/ASL/00175.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00176.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00177.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00178.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00179.dcm | Bin 0 -> 38842 bytes .../examples/ge_pcasl_easl/ASL/00180.dcm | Bin 0 -> 38842 bytes .../ge_pcasl_easl/expected_output.json | 125 ++++++++++++++++ .../examples/ge_pcasl_easl/studyPar.json | 1 + 264 files changed, 262 insertions(+) create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00001.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00002.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00003.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00004.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00005.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00006.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00007.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00008.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00009.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00010.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00011.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00012.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00013.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00014.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00015.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00016.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00017.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00018.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00019.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00020.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00021.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00022.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00023.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00024.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00025.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00026.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00027.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00028.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00029.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00030.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00031.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00032.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00033.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00034.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00035.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00036.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00037.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00038.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00039.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00040.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00041.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00042.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00043.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00044.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00045.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00046.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00047.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00048.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00049.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00050.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00051.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00052.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00053.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00054.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00055.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00056.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00057.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00058.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00059.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00060.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00061.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00062.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00063.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00064.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00065.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00066.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00067.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00068.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00069.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00070.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00071.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00072.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00073.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00074.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00075.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00076.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00077.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00078.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00079.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/ASL/00080.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_basic/expected_output.json create mode 100644 package/tests/integration/examples/ge_pcasl_basic/studyPar.json create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00001.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00002.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00003.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00004.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00005.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00006.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00007.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00008.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00009.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00010.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00011.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00012.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00013.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00014.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00015.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00016.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00017.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00018.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00019.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00020.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00021.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00022.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00023.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00024.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00025.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00026.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00027.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00028.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00029.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00030.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00031.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00032.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00033.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00034.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00035.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00036.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00037.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00038.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00039.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00040.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00041.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00042.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00043.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00044.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00045.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00046.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00047.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00048.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00049.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00050.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00051.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00052.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00053.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00054.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00055.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00056.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00057.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00058.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00059.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00060.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00061.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00062.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00063.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00064.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00065.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00066.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00067.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00068.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00069.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00070.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00071.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00072.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00073.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00074.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00075.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00076.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00077.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00078.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00079.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00080.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00081.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00082.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00083.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00084.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00085.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00086.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00087.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00088.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00089.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00090.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00091.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00092.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00093.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00094.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00095.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00096.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00097.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00098.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00099.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00100.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00101.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00102.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00103.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00104.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00105.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00106.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00107.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00108.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00109.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00110.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00111.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00112.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00113.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00114.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00115.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00116.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00117.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00118.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00119.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00120.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00121.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00122.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00123.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00124.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00125.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00126.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00127.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00128.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00129.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00130.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00131.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00132.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00133.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00134.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00135.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00136.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00137.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00138.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00139.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00140.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00141.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00142.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00143.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00144.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00145.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00146.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00147.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00148.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00149.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00150.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00151.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00152.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00153.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00154.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00155.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00156.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00157.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00158.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00159.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00160.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00161.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00162.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00163.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00164.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00165.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00166.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00167.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00168.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00169.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00170.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00171.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00172.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00173.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00174.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00175.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00176.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00177.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00178.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00179.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/ASL/00180.dcm create mode 100644 package/tests/integration/examples/ge_pcasl_easl/expected_output.json create mode 100644 package/tests/integration/examples/ge_pcasl_easl/studyPar.json diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00001.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00001.dcm new file mode 100644 index 0000000000000000000000000000000000000000..df636910d5afdc9101b2153da76ac711a2a5c76c GIT binary patch literal 38934 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 K02BCsC-5ISlP%By literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00002.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00002.dcm new file mode 100644 index 0000000000000000000000000000000000000000..5695b6dc8594ab96fad6f3197bcd55698211a0e7 GIT binary patch literal 38934 zcmeI0TdZ7F8OOhw9?G;rnciTgsM+PDo^uq2weNfLKxf!9^h}&vXV0{pdhoP`gOZd| zDJYmIMGy=IEmsq-AR6&5QtJ&35xgLH3B;iB!A9l5H-j&dp!i>FX4aW~x?2d5_~189 z&tCs;eQT|6{r0+UqW|r$T92ApgwStH&@*^uDMRgx5lN9n|_w^ zsAt2nmSnpo+E|A?<3w%PGOSWqaagGZAl^*A4GgT{uSk4(fCx=f#z2-_X z9bs8sj?AI59MjH`l~8sTy05#g{Xj{!_*6@NW4I`e5d$neqqeIA9O_lvu z@4w-yE8o9(d5#WKrzN8h`9^z!fWXMng-CCr%Jo<7*=N{Q<3J?M)3qBG4;t+Qi~DDC zv^zg2bzt~Bj1qaO*5jzXqt=}>nqA)&s42fT-cE>z=-)5Xv3KK{qt4oX{anJE#elIe zkWAZkFnWaWN?}+Mo)uU@V7tP%ga`x2^86h2U!ja=VNChLF)dfPLZ~uj)%IhVSKqc{ z+m`G3zUv9kw>-=-LG!xok==iSV(kiSDjrM66(am_FUahqjgt>~c`94PO z1jbaq9(PvJgwiXaiJuu zo;;%Iv?l1_b$g9G8Hg-PCQ{|W{4>_kUZf^yt`-{w-_Tq`Kh&C17w z&n-x;Ce!juzK5>B^TSvf5#?-wZpBI{<1Nr_%HKxnBPu0pzftkmcAG1 z9EHADay<)qgqe>Ru)@1g1{CJDJKwluzS%Y6tFO5BeS5B1G_G0Px47rv;swEM_qS`c0(l?R>TIYxQc8bZd&sB`Yb9&G zGsXWdWs^OXzarf|?sLnLRnJz6bdRp(z3{kKD;d#!TFHn$q0~}spVGN9nosLoY<-;|cXd zLj5$MewI)_PpDsLB}dnj3H8f_dMcrwPN-ic)UUOY>)da&k}W)wP|qqQ$8M2+m&kc8 zp?;rGe^4qp>i?8tJCSu2nm-Zy2}*4R&q= z_Z*pWeFOJ_YP^ZgGflS?+V1>$rfZjk>CBr>3AZf|rF?jtM&`Uw|L}yZi|9^#0yiC; zW*t-DFl_n)ReQ2W@^&HP$*SEr5C)a8*Go$!uUb$ox-QD0g`J1xjdCO2^ycxsv|DRb zu$OKoSHFWSJUp#Vf%3J=L$$SKZ_{i8y-4t7#V%wo?a^=maD0gZNiMlUY zrstOFrG0nc{|=R(jAcH>c4><3ohi136x(2zPPXx(6u+BOY)gB(j9309$KOoctIpxg zOwxhl%1+X?$~M|7Cx>T@!3^4xsHN78QOg!usY*zX1)O3})#W>|poG>kjxA%Ss4Ucm zWw~c9(}iWasP&-s!8uA&lJ|mU*Y0f@o~C4LQ{(aC-oFj;P7UK7^$2D$m1)8lk0u)D)2Vcu;1f|s_YdEvhId)n+kd_s(F&cn z0(lc!J&(MlnMKGO%q&?>s+{(eYE?q5)+&R%Hz+l}l0G z*w$#9YF4#8K3^hwqw*L<^`?ZHR%#IM%vk!ZW9f4fB}!vC=j)s-dNG)nqjr|&qRbnc ziz>pw2uk)iIf|m;J~SFt(QqeP(t&Dyw+#Mu{9U%`N>C0}TgLJ2RF<2f;Yw0op79!V zG+c#F_Kie%$A4{$hO3qQ`hxpW7~&0FeWD&57gvFcyIy($ZQZBJ$nn(awyXW9hjO3PwxyUJRJPTs?pCkf>bLuGL|;sLK6GFC z*o}E=?}Xc-L0SIG1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% Pm;e)C0!-lloxpzp^qnpc literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00003.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00003.dcm new file mode 100644 index 0000000000000000000000000000000000000000..29a9c6cc3965f343901f66c71b6067bc9746c063 GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00004.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00004.dcm new file mode 100644 index 0000000000000000000000000000000000000000..08d2ca2421b4f4e43575f76117296bce1bce2e6c GIT binary patch literal 38966 zcmeI0TaX-88OOhwEMXEMOfH0(px9w6?ykac`rge0nMu!topNVq(!GQvjRvsaAr$*=*JoA*J_7?fXFPF!&+uT5A#i|63sF*^C zpyF1{ii7|7i~MEqsKUdpczt{5hRRh*D-43b6P6>a&<;iD3&(N-%k+ZKwrt-;!gc~D zPes(TZb?hBT@!7rL7s84Hf$MIC9I&1wUkV*qE>BYswc4iD%3v?Pq$x3P_?fGVG zz_&mJSk9+JvsH^{=W5B+T&EFl?Iz9k^gNVNp!KiN{{of%EB!CfMyl5c zks&Vi9PK{^&9s)234WGWAhWM5$FvJ%rIejgyU@oxwc-LDq^b5Ay0l@m8hG8cDI=Lp zW*V)eK!=gDl4|=8?7!jNd*8osRe_FDXIe%fic{?o>M^(k=?zr7e(&ymhFv!fM$$aq zxMAUt(LT7af1*IUioH??`_H2&QKWh^iQ3y6@vPB`eOG{Hadond5D(G6U#8>l!m~h~ z)!pU=g!hc$V_{gCw(DRl3E@@3up&Gwu!6vLg>MNF29D+V1?s*+8PBpz7bDHIT;U3# z%2ZX`kL6x{+m3BpuIKx%Cp_QsEZ?>e@2T7N1B_?O^gUtv7J4GQ@KyKqwYBF9*K*&Rrn=3fvw}vHUJji!FP*NT)R^|T^Y~4(E9fsuUjUDjjXtbTZs-Sc z7-8iKg=zb!=WnTciioB&Jwk`B+hY{TKxBC`k*fCQpRtDaAT>g>jl?J+U(U+7Rl93{ z8Y_jUxK>c2n^le_EVo3rD1RINw<5KYOv|tM9=e56AHtf6h$l;Q8`ek}dx>t>{&%R9 zZ0RnYdpB$&Xh*<$&rteaqze@KUd8n+AGN38yKb%Oiz$13HtczleAmN@wYFjgo+oo? zn=CQ8H8IM=W3Lu%>tgJc=`1xO&;}iO^4wilf8?5KnN};C+DEBOYqXk&I!CKKR7tBQ zR9Pum*W=H=ZJ~T@^06{)&>jgq&ea~z|MvVpzWC_QYMIW{HWb8fKWsadP0omY7v0_} z(+8IL5bFA%vdJiOP&a0H+@w9E|E=2N?N2{^Z2L=jv~#<*$(H4>jJG9cTp7(LbuP9+=uauV3hi3L^n@dP(=`LfEz_q}j(n5$RR^!!eP|!NKcnlC z?S57(8TI`s^*N0$VOFA-JnJ!VFEU0s(~Z+yK`gKd@ah6vD1pX6Ru5Uv-Ka>{qP8 zMGZyl*o5b5wIln6f%{Q!=QeNyk}1nKa5tzY8|XsQbSt6l&RuA_c14)ZoaELARm;wi5(-)}PlRc6*4H-{f?Z$yHsEWN_T53hvLa#;F zMLD#vPUXOE;3M-$5Q8o>r$p`C1jB+FFf6b+nQ-Z&PY`WNf53 z!+RC%Hg3-F zyCuW6xTni_R4)&k71q+?k?j8F5fbS z`}9Dg=K2`z9@e!n+B2l9)p4A&x|sDj8pr)7!i;ORr`yqF+-@~2V;sGbxrdRvTBk&B z?pFfeoipWM_)$*!72%iDsk};^1=})}l5H%{CGaDpPS>dpW;)K_A~41=_hj0!En^~0 zv?E8r1f4w;J<$ZMU!v1*b)tVh9=w4GdW-Ux5#&+YSu9$F*=MqYhS!HrIcD$V5OeQmcQ;S>R z6H!k04_~hO_gdN8f4&^iGM%>!c_UgqkG#d1Mab*TELl#fg7%bZMM|yIDu=u`C^fv2 zM0Cay+iW$WGqvsPzrJ(yxrdsttW{#@fvj0UxiNfy+n8?etC=ftCjo`gZoh!;td=)Sr1N#D@yGs zQU8WoJi)IDF1@{NG4J^1p4;CyNB#Tgsba_32A{R?aoV>6(+q51*ogFqid4R5d@q3R z-9GU}fS$U)@#sJP^}^=Oas9R~?!nhT@}4JlzVrgxx=)pn)mJuNfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 n6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!-lloxpzp*hV!x literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00005.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00005.dcm new file mode 100644 index 0000000000000000000000000000000000000000..58edc36e7485e78254f9fe6c4202a525610cf2c0 GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00006.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00006.dcm new file mode 100644 index 0000000000000000000000000000000000000000..befaa2156d7d59bd50bc8be25136bd4df523d0df GIT binary patch literal 38934 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 PFaajO1en18JAwZIMvg9P literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00007.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00007.dcm new file mode 100644 index 0000000000000000000000000000000000000000..e3e595917a0e4903fdd6e0fc9237e6a26016bc48 GIT binary patch literal 38934 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 O0Vco%n85!#f&Tz|-7Z!D literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00008.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00008.dcm new file mode 100644 index 0000000000000000000000000000000000000000..a5264a45f750573b79021e9bd419c67207be361a GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00009.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00009.dcm new file mode 100644 index 0000000000000000000000000000000000000000..d7772a47c123e25916bf8373d4403c1f98e499dd GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00010.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00010.dcm new file mode 100644 index 0000000000000000000000000000000000000000..fdf63ac174e2484952f7e9eeaa30e1fcf0ac6bc2 GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00011.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00011.dcm new file mode 100644 index 0000000000000000000000000000000000000000..13a181faa2a90186fc6e1fddb0b43a40f857be3b GIT binary patch literal 38934 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 Nm;e)C0{`y>{sUH)Ek6JN literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00012.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00012.dcm new file mode 100644 index 0000000000000000000000000000000000000000..6ec27584d18df3c5bd3089b90b51d68727373302 GIT binary patch literal 38934 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 PfC(@GCcp&#-wFH&BKR%< literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00013.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00013.dcm new file mode 100644 index 0000000000000000000000000000000000000000..0edaa47a5289c5ce17159f7914c1a0c7aac66334 GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00014.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00014.dcm new file mode 100644 index 0000000000000000000000000000000000000000..94c993a3443bbc96da085dbd7dd1237588c6ec20 GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00015.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00015.dcm new file mode 100644 index 0000000000000000000000000000000000000000..50c7846aa5a10dfd43db3b2fdd91fe830e21f4c3 GIT binary patch literal 38966 zcmeI0TaX-88OOhwEMXEMOl~j})atMmcUQ@9`rge0nW1NropNVq(!GkEyvt40@!u2fS3*T~0+cr(xGXu{GO~>+m)A1}H z^%POhx+N{ic1`51L7s84Hf$MIC9F7kT1&~~Dr(hcrfL@(&CZMgYk^LqC|OC(q&?q^ z4fqzQ0Lyt)Z^X?Vjrv?CZnkRi>|8CGn(H*;t=**Ao}Py?3Uv0X^uIu*|4RQ0w2|sH zLS%?bJxBXbK{Ku8WIDpKyaJhhWjUr@ASW#(_wh z#~ar#95mVo7WPjRXm_z!>OlW_1SN`8ZzfTDMFYWuO=Yj4}JZOiq1-}Qv&TNtIbg?LZhwjX$bZJE9&Oy5FJgcrW%zP`Tpe9SG^ z1iH|7(VlC*q3v11#*B3W(>H_Ac0Ba=4Q3TMkCJuNsK@iNPjgA98P}#%xeoFsJK>8qMKBXB`mi@H!FV|{diHIjlbSu_K8GDIt)Bd-s zlx*oPoqG>#BWOp!dhbyBKBNm2`d$UAJ@N>v0OGN1$AvPWFwfn&sY~Wsv5{PL#Wf$? zbM=C8^}@b|JqH&qtnaYgikOduHE+63SlNp*i>pwHZZFE{WSd8H>Rz3q)iNf_k@=l9 z$z*|o$@t>9)|@U;acviIVH?3uuGeeUO7c;A3cl;ss=k=A*Xv==ljM6gtXOL+*rhy~ zL)&GE$*qY|9v*wOXnPl9uS{pD5rH=7@KfjRzT#t7SIe|o*;J!crZrm4L!F~l9;&2O z6RNC~tm}#A-my@=d-Aa|ZO|SGJkHe~FaGYlKfd(nu4pe;ayAZne^{$! z$h$+UbD{3cDE)EmA)`8?m8|)$4F9{8P4-m&%5=}L&n=Ivc&=8advz@zfX97W$%u|> zB_sNTQj4{HO6SUGKCN@H4MKlL=~Zag5~e2{;hU}*IBuCft8(OQtFpl$Hn69QWfb4{4F?us-Q>vCmoS>FXv|N>t9`iWS zp03MxU_lA3WgMG^PEmQNbxU&3S)xlzbXn_O?Y(o9q$KYMt=OK~)IUwh*2ae8#V3Jn zhUEn>r_tx-6~cp=_m8Ed{EMrAGM}=E>mh^1>14@iE+| z2O2fk$7s*6u8q;&AziJG@A=#|Vpgxu9SC3_V;b+eD0K6}JUx+uFBXgeS&MPTnqBlZ{$^ zXWJ-H9(p-$ee%Offktvu?GnDa7&713*_@edcV~>KJv|fGl9?)v7{k#-!+bimxCK5D z<#hk><*I+LmA(DvD-kWzdCQPDqScGYTbx;hyxz=`<)kWTPpMX<)Jm;#$a|Ag!z)Qd zXDqSJRwFu7+t&Z}J)_S*)P!x7wy9=S%fs^}qBkp#K~!%^sd1%x@lFh--#(N+KUJbK zlyia3$)gv&c{yljaW2Zdp}D9c?2VvwkJFhD8?Q5E%fqD393)_2R`-@xBx8?FT9 zP_<>8*iLP!DeA8z)ukD)Lr48p=v3cJgm>bXx2V5b$sHf}qcFr9xawp*I3cbmwWCD+ z8*1?czbd%&_O`{mV_SM|f8P@I@1v)RU7m>oe35p1D=^K#_Jxf|535M!d&c(y=-%xU zUj*ps`x}q`<6pDf)c5x5B?veLDx$EWQXzQpdBga!GZr8if49a~{+ZJPbK-pxx zoutvNx8*9)obI-}Nkm^t`#*TJdhCWGwRgh#P_G95%LJGJ6JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W kOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<3w|DC{p03-=Dc>n+a literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00016.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00016.dcm new file mode 100644 index 0000000000000000000000000000000000000000..cbf9fb271c6b72a6dd389d50124994157d75862e GIT binary patch literal 38934 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 OCcp%k02BCsC-5KU_$}Q4 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00017.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00017.dcm new file mode 100644 index 0000000000000000000000000000000000000000..f29c6938c1acc2ba66ddae370f7ebfbf6037a002 GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00018.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00018.dcm new file mode 100644 index 0000000000000000000000000000000000000000..039dd623eed94d078f1064318637f341bf5b2daf GIT binary patch literal 38934 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 O0!)AjFoFMf0{;QpWG+?! literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00019.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00019.dcm new file mode 100644 index 0000000000000000000000000000000000000000..9fccd38c5236a42eed06acd169b42e74435f3948 GIT binary patch literal 38966 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 R2`~XBzyz286Zn58@E`j+E(ZVr literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00021.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00021.dcm new file mode 100644 index 0000000000000000000000000000000000000000..4b9aa3659f7e254a8b5fd781a643b9bbe7643b4d GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00022.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00022.dcm new file mode 100644 index 0000000000000000000000000000000000000000..d0adccda682f10d0efbb6eead225296b9ff5d15f GIT binary patch literal 38964 zcmeI0TaX-88OOhwEMXEMOl~j})atMmcbCg>`rge0nMu#UPPwx)>E21$xVTARQL18y z2`E^lgo{8yp#cI`c}KLwy9fsFMG0Pzpca&cmJg;>9(=R#MXFHzpEEOOr#GEIQBpqm zO)A^x|DErg^POLxYZLu%fAwb6$|HpC)CfI?XP$D@-Xfp)VnNqfE- z8}Kbq0hV*9-iVvq8uhtO+-%k2*|}OWHP>mxmvob6dwL$qDA1X&(fiX@0@lMr>HCo`Q0RLV*RzmESOpM|WjijE0fl+)&P`o5*NTngnyaq; z;I91(#{Pvp3%d?1TvXp?xfL-V3v1qVov^YSWfoVV65Uah(aAOs>C|DJqSZ1c%aQq= zHOXXwg2{MGTx(93sJOO^xO!WfT(8%xmE@!L6nxjMRedpKuh+w#C&~9rSh3bt%)s+x z4sDesCND{h^6=QJMO(WVdu2L9jR>?scRqdg&Z|DQzgni%%BJ>FD$^RR=Aq8gDi2lC zstHwAO4jw{^XDy;@11<2OdGUE0*|w`$BVx`=Z`NR*-iB_n!3 zD;d!zlv=FqQ#w~h^J$%nZ4ml1O0Pn@mM}fx2;anE$8pQ_S(PK-q#EwzMEk?l3{y1!}h%l+xIhUKgh8CFvIqv4BL-0 zY(L4cJ)vxa`Seq*mXDR`$&`93rGA!DKToM&q|`69lB4VCl=@XlJ(E&LQ|j52`n6Va zo%@YevW4eT>UpK)*e%oVQaLZA)bCU34@#v+{hu;y$1-ex&al0tYy-+Kr#%i{UNz`+ zoGva>w-gKeoT%WCCj_=!TtaYHafBI~SOo$I;kf~>L4IJnW{A5_#WF(&`~Rww)L_46 z4K8XZV#g*tSF0V_Hw@g5dONp)8<0%dp@F+WJ=s7Pn5J6^ZFlYh)3qzYbmmNfyPO-M zln;;7$ea`EAD*zqi0;Ivanr%c)-eSR#<;_wYESk^-ZW%9d9@n{!k{YldTFT@)oDYu z7`U!!(Dp;}rg8V@VMAW zafU6)ux(Q|x$fpvl-sq2MBSGy(X&hR;;!5Cf0xQn$1;~;yFA18?hM;}hOM_pr`xzW z!|#?1+v1Kch~D515CW7E(XDi5`8N$y!obZLn$Yu&58cZ!mf8Jrx>_B_DXWV)pQCZyej?21R(rY~O~&n3!!pLvE17!`xvO~KxLh4kV>R_JZMiAJ>IOd*AJCJ^h{h!W~ww|3`Y|U^Xb&$ z7WhPz)BVGDtNyK4_V%BzMzl=lEkoXjRxcuNab^+ndNWIwld7OSrCO0vE49iY?=4CV zuOtzjw!}7Djp%f3TmRShjK1(l6Sh^_rkYhP56_o~-l{wXQN1mt#+B;DJ28|#cPM>+ zszhZd=R%#6M=yHwa?sA=T$Fi3b5TXu8$szFr$zQu zbnoto?*a78gN-Bq_}5FDH^=qcy0`^j|JeJV+VRRuXzKx0MvkXW+^%<{8I=2^wk^i= zkg~~mJ4vHkZ_8DpIo)k{lZd{Q_J8<+>aiP()ZPx~gS{H~FB4z_On?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C o0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(^x|91la0U|^-%m4rY literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00023.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00023.dcm new file mode 100644 index 0000000000000000000000000000000000000000..d4666342ce2272d9c2d8e6fc5100b513e4aa6db6 GIT binary patch literal 38964 zcmeI0TaX-88OOhwEMXEMOfJAoP^-gM++Bg;^u3!0GLxQxopNVq(!GT*82^WEig@zDfm3Kr-yo(@sFG}!&;H97_w0tn7^5B~lU!)4f|2Z>rc6!qZ6eZ<@ z-=wmA{@?k|Ip6v9xi-=N_E&F4tvo{LPL0sBc;+cb?alIuUoMYlx4E9oid6|5Q89%O zLB*|@6$k(E7x~NJQH6(H@%r}A4V9~sj&Qs{*kS04(6w#f3{A@kgz5Q#-YfVDuUQIxEtX40N- z#s+)~RDk7tsyE{1)<%7<6E|D6cy_LqOwDx~@nzkl*`A(rT#j{1 z$!s#yXe9+YfSi?7+p~AiP4B(-g9}#|=n!?LWfY<~)gGZ9gG-TKPqiDb-MQPa>&CuF zn#UVAE$lbi`xf?06lh1WS88AXc?cznRBt9xdut<}HCnOn3eYUBPPP!@A^P_#bnHEN z7O1nj+q{tQo-uqZ3@g)i9gHO*yh<2Wgl7d-5ZJEpEg{0du{^&(-B&5&S(fSg!Z9sZ zxI(BhRn_+6x!2ydW80SNVSIYR^DWQvZ42?9x@|x30^2fuPnf=io(L~|&3%1+?fJs> zTodR*Oe9CR<{R3cB`}2@Cop|82yF+m*n30U^YQLO*FiHO))2>c9hX*Mt(a<`ff3zG z=9~4#^t>=vP`=p3$Q{9$>NbZrv*>HtzBd#}0v z13RxsmRk|?v9RV%*9j}TP-bxzD$!j<8J%qNkWL-ZDOxRKvK*P; zS(8i_D42{l$F=5kiHd8xh^x1y$@O~8T1h@?Pr-NHTGba*_WEqt^CbD611r|riWzvG z%%Lr^#N=g(Q63(9wP;HhW3NnSsS$xT=-^Z5?YQP+*Hz23TG`Y-N@ZH3)jZU>TIHci zS~a1{O3AvOc>#ipH(^XP1;xQyK3kD-SGaL zu1mK2d97sB_ovhsl#)?g@QloTKx>$wznJp=vQo0G!LLjYX4t-xVf$)^?Q0pfuV>i4 zkzxC0hV5G!wr^+H9?GzNC&Tt|hV79I+jlc;k7n2&%dmYf!}k3Q+Yd5qKg_WGD8u&S z4BJmKY>zA3U_Sj+tL0;5dLpHsOsSux)X!7u7b*2it>ox>Dy4pvQctJUGb#1!l=_WU za-I9FRQ|dXTY?*MGf|= z*5IOsB6e)TbG6!$eZ#>0sJC+)xBdAV#$TZzbXuES4nXX+CrZZ>aU>&$2 zO8M|OgUmUh{^1E*jOb2&8aExBY;kGB!PxW#s`g}$!qbuRHqHq zV&J-_LE8?=o2EQ-Z5ZB3uyd(xlLH2G%COC6*m`?(x{X^i z{BFyzE$-+tUiljxely8TeHL$Kl=huac9gDHw!uz0+CO3R=Fi4dEsZ!qEgNaMDj_}Q zah^S0m+!!W5?aeRHV&Pk@=)uRPb}+3VpL&ZqK}(<^Q2oIL8Xw3>&ql~T17s5+J!n%U-(f@`W4}q)2X~lodw%6m6B~N&n569q)ykV4(2&-1fgS$WA4ec3Hx4Cg^R-Uq+BeX=kx?Ro2#9KL*}as^{x9d?&#t z0Ibqxl^S{VH3j!MA*wW!m$$W@MwM>J%P$k#QLFqi5#w3KU0>QR>)S5H6JsYQ?-s4e zMy&o{4M8OqE8A;b@{^KAl?J z0-uO-x_|g?)xXus-v0BIh?eQRWyl-R>P6%&&MZP+Z)VAIQWdnPR4Y(bMIETtcgW!1z~5Et zuLb2$wPl>xPHm|v>aQf#r5Ue7NBvdkR9{Pkcj9-qsJ~jt?=ZL>g(2R+-jns%ds5a3QRMwePJWggDO(_p7FH+ zx_9@)_W*kO{>G#K_}B4Go8tN%UEG3ieB^ykZh!eW+B&Mr$nn&P+x2cVgL0qLw#Aqp zP&OHFCuwx+ZMjM`r@QTL6495^{tq6l9=o|n?QL*A(5r#}G65#Q1egF5U;<2l2`~XB zzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB zzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB zzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB nzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e*_e<$!CH9s~I literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00024.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00024.dcm new file mode 100644 index 0000000000000000000000000000000000000000..e0f03850cd5d159a3c1acba12582d946f16501b3 GIT binary patch literal 38966 zcmeI0dyHIF9mjt&UCOkUGJP`BqPb;LcUQ`A?t3nO(3##Dx)XPHruXi&Y+c;8uxOLo zRtgFxN_hwbf|l|y@r`K2w+Pm^X#^igeT2rK@edo7Km5<&Ka!yMJ!fXl&fVS?LTvoQ z-!$EOzQ6N3=lss+p64a{-~MWiu$e^&orxiO9?vXgsI^5t@ylfK>@?PqS+YuHN0dw< zM7iXa%#wru_>25S@TkDUE_pqB;0DUID}C22d%hF+!Z9tgY+Jr<+JPldpJO`0@=ebP z+$`l$&*}v&$#zY&u@ZU4ncA>rSf!xkWN8(}UB*C^vzmg%Yi=L%N{ zRi>iaKAw5~Z9BGYxt{O4p74Cj!@#u=@7de-%N~Zf>3hQTE%Zcq!Rzkp8*9%OuIHLS z7x*sPbIo(wo+WJGbeyv3o8`cEJoNXRw&&yB2d;x=0y_vC-*sGCg0*6zwG1P=8P7Iq z^~qUbE}?9`gONLgG1Y0r?Ikp%^kV3^v30VFQX|^q{!_P2FQLCEy$K#?8htj927cMJ zFo*&_5T@;;p1&pP$s?Nf{@{~s?;QEX;TfgI7l5vYKWY2*(=a( zNMofCCD$q!=ysK33Ck_e9m?N^|D8xJCDZatzK3q1)Q7QVBI5A^-Gwz$#$KSiwf{XT zC0lwx=ROGA5ZV#2J~WVi80j1ZzE^TR3weZ90P$G1<3brwnCI@y#MLv+$cPVIf8+ai z-!Ny~Ft=}R_o2BfYTGThBxWOF&6=(gl=h&^{3=wSd-5_m+2#?QdPt{eg^bB^WPW>P zJf5TSc(f&|HYN*{U)4ce-7QV7*DF^^@?mQNzN=TMzL>JtYhcfkq#{v$V3inK!6)ILf@TB+46)J0llp$b|x zpo&V#x}H9H>0I&X`0*mG(;hKA)@zR!e|yOvUp}_8Qlz(N8w%pLAGV#!CTGOH%kOR$ z>4OV=2z7l(*<_R%s9RG!Zqpvp|4!}k_7hJY-Tq1z?cA+xvSs-z;%&*<*zf(lS}j7} zeOj%Dx<94#N41BH>WEgd<_A*zk1Ct&sr(h`!9kxppIUOVTBL_`E$@TJ!&=FR9??oh z^f9I8Yx{)GmC<}s=VBX#{*= z?q{`*q%tSeJjQGWQy&n6x+8`Y{yb;-$}83H^uh76x;VxY(Ge`{V>J$qZHeZ zQ*6hTtv{cBqSfM&B0Zf@&m`1O6Y6IP_49=Kg;sKOJ)2O!OsMA)>O?~QDxrR@m0ah3 zqm^vo`Gh*DlpMQ7`duRDg@pQjLj6IhH;}8}K^7jKR_8(aTIHcyT8%=rwURY&Q)+NzY@jH` z7N^*@E1O(-Gb+j*T0^4ls~70$1$utp?fSn%6mq6NCJKo_;{*4{lwNlNmL(2VS+gO~5;YUcFuTyQzbez8}(-_6vlWE)yjj<%r zwj2Rtv}PcBqA^;#KqueoSnqt?e*#iSt?+VqjwJN@p;3ELm zX|qE0toojU8=Vjpn##)i+HRvlH)Z9wiJhobew&E!tl+jUZCCYdSK^7WlaaTJ=6JnY z+tD&|l!ac5Tc7-}lB1!_M5}6aVQ(MmkE*b@6V2Mp|gE25#H%v-ooB$CBMYreiQ_F0|(C3gVW*)6FW-S zyP@V!^Q(YMcW;}|JGHs%_V>+U?>>6A*m1VOXD!Eae5-8YJGC!tM0&4^RK90?FM#ge zKJi6>o_n-@>>vMnY4hf&c2@`Y;G3U%?=w4Jc?oSjqRPne)Q(!UPB?{fAJ?||m>yF$ z8E-qTcWN!UN;D=rtxg=$7n1&uKTNfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)Aj zFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)Aj zFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)Aj lFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCh-4G;6EnpG{^t| literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00025.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00025.dcm new file mode 100644 index 0000000000000000000000000000000000000000..d7dd174f4eed00092f45b78e9be0a9a702d545fe GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00026.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00026.dcm new file mode 100644 index 0000000000000000000000000000000000000000..c91f3625930911097ef64acb2cc206a97edeb894 GIT binary patch literal 38934 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 RfC(@GCcp%k!2dge{{S>!E=d3Y literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00027.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00027.dcm new file mode 100644 index 0000000000000000000000000000000000000000..bcfbb9d6a6545a3ec9110eee3dd70138ee6754b6 GIT binary patch literal 38934 zcmeI0TdZ7F8OOhw9?G;rnO=aI7R@dv^_(LxtbN~`2RhR|L(jyyb@oilsRvJ6I4DVN zD+L7;r3iw7pyg`f9npw)5yZP8f)@lYffzJC*r+`CX7EK46#r|@%sR7AcMBmBAN;22 z+3WwUZ>{yM-(J^E^uPU8>rpd{5c-V?dIrxdWvIPPKJm+B@$A<(l3B7!fg?($5F#kK zC9~wkhxde?w& zj&iVUpmw*uz22%c<~!Ybv(lZLuf&ZUo%ISm&QamN(&HR$rfP){%elkn&_X?uI~!elwTX~AjCuT@0aP=JMqj>XKlZJKH<$`z*rba zrtLZyJwkY;Ff0kr3alWoUEy0ogn?suevbODP{y+?)Afa8TCQ+~P-V)h?Z+~&zHP_0 zE!XpX*At#^d6sWmi1*}e`+*nOmg#%K^eyy6c;Tz=>uYPz7p~`;Ko|Nh+H=j6<}lJ0AM`y0+)z-G{D&Ww4Tw6@xd`P)c+Sfym`ck0}`VVgkR0@i!R()S{r zqtN$Cu4f^SF!K?EWjijE0fo8k&NnWdZ+4CN;FZ_Bckk7U#?_1a7xx}syr{aN zE35_6b;8m`^^6UGE3!4Rg za*bZMUeb=*4ft+Yuli!jUY`kjmL$`&V8!}cG6T<(IkZETn7t%6isR$067A??ycOvT zH44xM-S*_BJy(9@>T;3RDw}GQinLCv1*o&N%0d;iszVi(l65`)?0JjDyJjCN(njqO z!()^7c>cHN{_({}cbALwCT)|wBsu`wZe^3RVE=`;HjDKBWj=(uKA>ze$_&&EDIPa! z59xoi_IT^l58t)(r7YUHRoi6C@>j&$k~47B``ffyfxO$b+5~k+O6iYk4;j@_tz^x2 zrug5bY_g~FSERegeQtha)w7i%-J@%H4?OPGN=9^_Rx+ZGDYaDFCv>ii=94-XTOahN zlwN~&En#}X5x(h~f#VkG(<(>4N&AXJm+w8iAKstQb;))=tCfuU{)GCRQZkB7Ps`i~ zw1x@#^9k=SDka+*{fhKpitS4&wlAmHzLH}5YKrY^DYmbt*uIfs`(}#mp%mMW z*d9r-eLKbWXo~GSDYoyX*uIxy`+kb;2Pw86rr3UzV*7E5?J;E=&8MGewQ{ORk0;a< z3H8&2`dLE#JfVJ}l^k79Ce$wz>Zyc!I-!1*P`}nnu5-W9O1AJ!LOrXL9J@vOT_WeX zg!+9#{XwbZsQ*)n?O2NK&ndPSlx;-$#iYlP%gP3wjuXX2>MmkopA#hn51 zB#tmc6RSV~Av`z0WycR}*9?WQOO_cr*z?z%qz3yHYj9CR9y>PSxmNASzG2`NG}yTf z+;e2ga}3-Es_{m;z%<=bXuIZ9GOS`p3 z1$*gca`ijN!o$<*6ewS-JXBk&X{e4?vgRF1jgO4Y)J?I)DYl);CRg5!igK6Mkf{68 zWqNLzUfOpD{%=$H$ynx7Y?r0j-kxGxNU;re>0}!pO!2!Z#kRDk%XsB)a{SH2z3Lp^ z%p@H;uIwaTqimzSa&maa7|ft8iCSvi7`1Gnm8yjFSimXvR9(IU3rc7$kE?)}>l@6<5fQ4isx>KycN3MW)~ z&KZ<8bxsy_Sz0YX*-EKea#Ws5jPfbWlhJ);`rvunrf`QIY1CYuqP^p~GDZ8w^pUO8 zIA`@S>oYWsJ5Pie*KD`i(QLQftXal1dL?s@Aa|`!iNV}21-?6P%D?cVjP%RHFQZdg zl{y2q6)Gj$Sec38M@XHjQyt9o2@3qsn8w^wXX-$hGfAQyIRa+r%(3W+X6USCI{8*- zhUeqa8 zTY zb=cNun`&0IJU(9{I!AeoqIzROO)E8scV;a8ma+8ti4vu;oC|eM7QGnE%TYT^b5Z7v z%|#XAU<4(5oE$~ba330ts%W?qE$KkDzDEZCI{q%-coiszsx9OAb}GwF(QqXxFVA=l zIvTD*C;LVsyyL&NMZ?ufetp6HC=Bri4xXq7$Hf&Tc9dv%L(L!OR|c2C-nNu?Z0o@7 z?^~ncee`6p<7|UZS&rrSR$!We?F$=`-ligz?-}0mGUc6T4q}0d3u<%E9(u=sE2YN*S4jY9#FQ`s_s^=-s-peaYSE8dOmnx z`PdD4YVU&EkwIDh%LJGJ6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO z1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO z1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO z1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO Q1egF5U;<3w|DC{p0O`Lh*#H0l literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00028.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00028.dcm new file mode 100644 index 0000000000000000000000000000000000000000..3cc7aa2619e4df5a334bc731fdd4d8f595ae56a2 GIT binary patch literal 38932 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 PFaajO1en18JAwZIuG20v literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00029.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00029.dcm new file mode 100644 index 0000000000000000000000000000000000000000..f9b55ad7ac10e4eb1b4efd490424094c7b5bfac2 GIT binary patch literal 38966 zcmeI0TaX-88OOhwEMXEMOfH0(AXJB~xVs9&>3cU1WF|cWJH^h&phR*y+uCp%jNOxHaC!2u_}QhDy9%3 zsJIog;^062B7Ye?s_?KYUf&+Np>kEy4y@1*Y}d6-C$v4=3LVP{T{8%5KM)ow41G8B z^HfAV>z1@6+cnX~8sr%#Yr~ddRlN(nf3YuvxC({v@6E6XwM0$C|#r_@gLF;A_yKnG~5y@oDt7_A0gcWuf@ zW|NslD=E-nb_`C2d zP-k_wc_HCFWB6DYR;KMb7)wHUl`yOb&k8Jz6<7EeD`DVRo?oEutCaC9%XEF=n3gMC zAyk>FYWs=YYj4}JZOiq1-}Qv&Tb||H7UDg1+kW5$wq^RBFntR>5nlM3`}+FY^M&iV zCeUFXp*`1pL)){2?VFAhn7$c=w&S6{Z)kfy-hJpgXePA7(D7Zzr4?8!rrKvuA$VJ_PFc#&9f`$FG^nskCTl)8%VKw z$zgM0_c&h!W!x_-A&Bmfnx@V^bIm1J6e#rM!Hl==|XOhi0cqT8`X%GgVEhxWfy zrDRKY>)d-`8$mk)*87Ii_aj}P(Dy2?XCaTU3LqZKc3da}3iI5Zo4RtY6&uO^Yp;9X zu7eB4!G*mGyACZ}Qr~8|6)_(RYu5pm;8P!p(WX*SH_}`;!vZwM_rhA8dZhLISbG0(vr)zmHJnq*@M)ZJI zGNO+uwOHFHbgqo%lR6jMAoQn{UWIloVS2(5zKPR~e*>-k;HR z$#y@hm5lnql=_@fGK%w#$=rvuh6(!fDeo^TCEFVO%JguC?MoT9FK5`kl41L5hV5$^ zwy$T{zL8=3W`^yN4BNLdY>#Hx9?P(OJHz&PhV45Uw(n-xzL#P9eunJ_8MYs0*nX5@ z`*DWt31u71r=MuGe5_1Qrqoj@_0yF4SxWsprGBB699>VR)Gt%&nUp$~Qol;6Uuz}T zx!-6dTX;65o>NMW-7@_ymGgW`{XV7spj3L)|0%EaS~OR=!ei3$#RLSW0qB?NaBN0_0BRUm*6o*UpAB=0_ED1=?H%+SI9zv>h<*sofH ziyDg9u?f%BYDe}B1NWoe&TZfZBvY1W;BHV)Hqb?;=~hD9ox8|%?TRp+IagEyH}Fu( zhsPOY&I$DoPuOBackELARm;wi5(-)}PlRc6*4H-{f?Z$yHsEWN_T53hvLa#;F zMLD#v{iwWao{u-Zad+mubNyg3!+cC8^%_mxZZ>=M1W@AmxPuJY5d%w^cF%CNm7!#1B`>+RC%Hg3uA zyEVhMxTni_R4)&k71q+?k?l|uh=q% z`}9Dg=K2`z8rHQj+C8MJ)p4A&x|sDj8pr)7!i;ORr`yqF+-@~2V;sGbxrdRvTBk&B z?pFfeoipWM_)$*!72%iDsk};^1=})}l5H%{CGaDpPS>dpW;)K_rf-a6?#Z;{*~Ubg zXh)8K2|9ZydZGzhzeK0s>O}v1Ja_{W^cLkWBgmt)vsk(+YwN8a1Me!;^Yt3Ol;9%( z)@id!jlBAvf*YL>Rhr4m``Rv}O4sM*w}~C7Reqa@@vP#uFKw6gZI|MSv6GXxi`HbL zR^Q$>3Y3Rlj$5Dnuu`Cr+*G@SuP%nnH?}utCfnT^BWh32#IgX+F6{7GH+-ust9`{DBa`qD2n>~&|p+W{her02ded*GWa*}clCxn zpd6~Uj1$|bEj2~`m87~f<8|n$zY3k|dx`K){PGs{S1b7?2KS>d#2eUuvL2ieSCraO zqW%rFc!FOQTzY%kV&3u1J-5Gaj{5h}Q^k(64L)n(NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% nm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP@W?*#q>Q@S-R literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00030.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00030.dcm new file mode 100644 index 0000000000000000000000000000000000000000..aebcc0dfa932353044b2d5ab47e732a50bf20246 GIT binary patch literal 38934 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 Rzyz286JP>N;QyV#e*l**EkOVP literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00032.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00032.dcm new file mode 100644 index 0000000000000000000000000000000000000000..715696e9547d15b2390567db18a1588cbb2f3ed8 GIT binary patch literal 38966 zcmeI0Taa8u8OOhwEMXEum|O@mL9G+E;_fO8eeUP*KxQ~Iuv6~rOwQR!*tob!V9`{? z5ED?aN(mPMvCwd}$~&SZ-a#VXEfl;U@lsG0T0WRkdGO7OFH(i#zk6nS=WI>_MM?SK zH>vFD|JPr4fBidsIo(A6+h4sIwekp|J2gVj;F+f!wJ(-W{Bn6byUmScR;)_kh>9tM z2r6#HtT_0OzsO$(k19Ouir2S?Zm3*)GVq0M+a4aKuq;c2j^*1T2ukFKJ1(Yod*{$TLpXhAqRYgcT=G>nNFAO|9C@RPAD;*_kn5EzoHcB`c|!wC9_# z0p9`@U^$oSjkvk3QJ?F?%~ma*ovS5NbDc(fNjGV>r{|%J0&RGi{uik9U+I5=Hc`Ds zhzxP5=V<>aXr{HCOu(|d0-1efIi_78E2Zp|+KE2qsTCJ!KTWmQ(xnZf)xhhnO&Q5- zGSg@!1v-SBl~mhz^}g%hwdZ{cR~G0nb*5z$qBzwap&o;aklskO>-Oy0YuI&TeF|5ziW}*mnhJ7S|+O3Gop9`z1Q|PCN_L zS<`KvM|jT|J{E?RX}b=_k`P`c3@gI30xJk?SNN6?Vc=MvU!d;Gl<_RfbbaBNmMdH# zRGF%3`|;c>Z`-kL%k_NU^@QhJ9)_)jcu(E7A9#UnnZ74X-$GA>7rx@YzPk2&;d-tK zbfNE}J=c6q+p~o2n~oEhz8QqJj<_gLeyBN767*pM5(pf<`vhokVjYr5RYX$E|dXjpXX9u6ggS z0}IB1g}n>A4lZ0+-)6ZLF&_(S-gKR?vKwU)jGTxS)jf39bq17_v zeORk=pzh2l{ZZ{9qdKgWtog1C|GSk<_Ei4LbkDHQEk{;7TPxGOx|a9A<36oqME7eY zBl?(9i?w}1=gMe4sdKRnLVrr>)o9lerY9WXo30r+ZkaxD! zqYT^Q$~Kr!KhbLWSec$ksV7tFrz!Qbl=^u}{X#1_x}Hj@U#8U4DRnfZew9+c)=I8( zztKvz@JvcQtCSqOW%^wz=ed;neMX6@26g9Bgp^Ru}SD&H=`(!qbulr0Qebb`<~ zX!~J#);t4mdeiV;8aJkD*h@E&tKUH$9-daGLHSx0q1sxFLv^&0HE&gFcw}s%IK!4? z*tRK~TzPXU%I#W1qVCI<=-DNDao_FvzfI+*W0}jaU7lfkdxmX3!`9oS({0?8;dgU} zZE;VR@yg%m@S90y>a%z=qqP5ovZHj3vJLji(f&6^Zw75n)zXL))UuhDs}j;<9$&Pl z>+&5~P(o`N$L680s65pACAnuW(WNE2taY#U-glIwB+m$~*q+(k|C*AmjSa_(D}hT9 z?^r+HK@Z`h>g@G!3}2}7JEvFL)H!+7Wob1JWh

DNuDRHOj{@PX=d~hc|ub$7488 z4>W47kI}AST^pm_L%LcW$9Gm2vpz@TIR8YLajo`rJDQB!t%hZcqgOKb5OUY(l<3X< zO5nS5ru+*(%1OT>{Bk;#SE(~$Tc%R7jpexneuUKNI@Q5U$CXAMP9G(j7d==58i=zkv%-oOOCN%_kN@+j>rmafX$dh5r)yGr$Zy@s0-TmoR7 zHmlUgtNRq3=!B@!OkSSXb{SQ=HZSiccA!>yHxc7m#c5yKF6rAY!V_aBCr=lx$wsZd zy=@dI54{|xK6$ZHppo2EyM$X8L*^UXn=_N`?u-$&r)T0?GE=1yV>p^&+}#PO5_Tlxjsvt<)-qyw@o;yplw; zYKd*O8qpcrcGh3tG5XviP1sgzn`&0IJUm|_dcE=(MD>Q08ds_p@5E60%|q$)QY9)w zITz@hJbKZamxFc|=c3FTnu{vJ-Uv$fI6aD@{ysDqRZ)K@TGWAReWwimHT+$%aStem zsx9Nhc4|vaQGX?=F3orqI_j@Nr@Ai@-ibGFQGd0PH!(OLg(2R+)hFx032{ZK9VP0Y zP>Uz{Rl%jVw=L!!+tPFU`9OI*LTi*xXGN8bJ9ju(%kt@~9OIi5OkyWWjvQ10W}wiwfc$|mFO zB#mypEmw)=bhq72BKktw|DpS<$8IQ6dpn#D^=jb1On?b60Vco%m;e)C0!)AjFaajO z1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO z1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO z1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO j1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp&#-wFH&l4>=? literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00033.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00033.dcm new file mode 100644 index 0000000000000000000000000000000000000000..1e21334876b0b984e173b0ed7b30d8d972a2549d GIT binary patch literal 38966 zcmeI0TaX-88OOhwEXyQ9m|O@mL9GsJ++8KZ>3cU1WQLxBopNVq(!GNP@S zh)X@k`cFZ#tx+-^VOd^*%)YW5(=L#eQg%x1LLc+giVL)#rrT@j;)c;`;C0ugjbtvF zZM2dC9YoG5s_naK-}Udk@`H<)7w9l`W@HqiINcth9)k;z-bl6UuH3!Xu3fkbQ0RLV*RzmESOpM|WjijE0fl+)&QD)5--?aosw=Mf!0xLT zjjI>;F77_Ccz%7ms6s?glVPiplXKgZ7 zpkOM#Fs?OcN>p6eMO@fM@RRHH+I5nA)Sia#`gN)=rtI~Zu;)qg-2f}r+KL%?p3I?b zvc%LyiBTRNd$nj=7h|tXXQ&Z@Ht5ikXYab=V^>$pv_{!fqg1A~S}j1GrBxoPq*W8D ztdy+l@n_z?SiWoONSQWjj|3iPYmeuDcg`PQd~|2EOmEgU*-N5*u zs@2(0cVv|Qxb~1y9o9e_1Kn*5FsB2QzG6$*_Gj!}hfd+t)K}-^j3i zGsE_+4BNLeY!7AFzLQ~lIK%cxhV8oS zzPhDY*yltAhdd#$<>C^8yNV;s(8MYbKnTwba1HVU+ciTW?22WE4)*`mC#k`H#Ts1H zP{fW+c&<@9vTqo;AN6)_12-UTico?{9ej7?vlYESk^-ZW%9d9@n{!k{YldTFT@WebBAognlL z+HqLkHBZHx-ZZ?I#*OJ3_R>w{>UWTbho{vkP`*}0sJ2!UP#vvg&D)e39vPb`&afpJ zw(ZI$SKge8a);KCsQZ#-dTyCs+IM^Y?^OBeSmrZqmuA@Bm0?@Ru=RH7bQ?Ei_}!dg zTiVlQyz)0T{AQBb`W)WO80|l<>=<36Y=gaWtbfMn&7jSxS{iYJS~kVm@=)uS<({=nmzL?W*1g($=O{@@-Vs`{J-fMonv$)J566p70v99R z@qWC69>Pb}+3VprPN?#n(<^Q2oIL8Xv|50&l~T17s5+h+<>QzqgS*Rfhu`wpIPTK} zjhgG@w0l_B#%a%xu2v^-&gx>;=V$`=p9nLq)t+fbQ*pc1u#5@xO6DF!?i!sEy}4fr ze0ScIf8j?t=~skbPN(uJbp~uJR7$onnoHnENS&%v9n5r`zlCE=VD8DZWBbNrnrKIk zfJr)YD0-qv+OSNg-|A%ld^~sqlk`^QFC)mKw6j#YDr@Vl9|P|y)${clzLel20M==< zN{zhwo`M^l5LKGZ%lq1Hqe|E2<+q8Qs8xQOi1DoAwjga6^=%j6iLsNDw~N+PqgLP1 zHVTx79>uLsepo5cNN&1a!dDkV<{LYjvs3NvtP!aSMvOAPKuVTdbK1uslV48vL3mcIhQjyB{jPC`|z1t_g z2+&jaHy-`Rzh2n7HLl;<#Xb1CN8b0u&X-<5Tlc9lay)h7cD)NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l j2`~XBzyz286JP>NfC(@GCcp%k025#WOn?dezZ3Wmq2)D) literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00034.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00034.dcm new file mode 100644 index 0000000000000000000000000000000000000000..31f697beb05114673c1f283170a8bbae783323e7 GIT binary patch literal 38966 zcmeI0Taa8u8OOhwEMXEtnA~6{sCB|t++8I@pZhsHkQvTQvQzHtOwQR!*tob!U{R`K zhy)a@Qo==`LZRVmm3Kr-@Ct%>w@~nc;H97}w0tn7^5C0=FH(i#zk6nS=WI>_MM?SK zH>vFD|JPr4fBidsIo(A6+h4sIwekp|J2gVj;+dx$wJ(%U{Bn6byUmScR;)_kh>9tM z2r6#HtT_0OzsO$(k19Ouir2S?Zm3+9^zG0y12YVSDJ<6xg23_|--FThtRQf05eU~q zJw?>Beo0HRT@!h0k!PH!4O@m)2`f&X)=@IKnp(A)soI4`vomABTA))XN>)-cY0o!f z1HJ_+z;X`N8*y`IqdwP(o2^JHbwJ9T+ zO=cRcq(Fy}vyy5Dt~hY*doTas!leZ|N}XvLg(yz7N2tf(0;D%m?V8K??l+EeV6I@o_6MTsKSn@QB(*@$P2R_wb1G>dDJ9fWv@{{0Fadk>xk z>a6KD&n3KP3?B=_%CubvV@U|F5{4ClL4sjoyTZ4G2m{CR`~r1frHp4;rt1sGv|Ql| zp~_TM+mGj7d)tm}TdwE(t|vU-@+{xB5bw#`_5&}lEz|de>09WD@WR*J*VosckLlx@ zKo|Nh+H=h}v^`7MzUerD>6<}lJ0AM`hPLP9-G{D&Wy7DoVXmNjv5S#Af-%)?CY=>DqV#g;q`7^%hEikN_lKBPuywviYmhZkn(_GSN#_-aVAQ2k8QZzE{E0jy%FDfOst1aiI(-%yV~c>Y}+;Y$R7)cGU;= zUb$dgxv+m>@1ceB>pLyCBIaXZ&6}-E}ol6=&jg75lusxPMO^#<7UB>A2RE7sbI8F-$| zp&hcsn8kp4Gmk9R!t$elZ1&ZC`Mv`w}we`UNaIU5JPKcdw# zV6ZkWn4gO4fWwhX0+)CVMJ>Wx8wF=cY$jJXb5z-MW_d!{Z*UWJLFB zB_sN{Qj4{HQs>HOKBaT94MKlf>D6f05~e2{;hU}*IBuCfqjKb%v@bn)$=*Zz;r&@% zmu&ZQTFI#IOR3K*C8Id)8JT;()-XYTA?5ugrDR)!Uzr}rusxVz`*McuD;c)0X4t-# zVf%W9?Hd`khcavrXV|`(VS6OQ_GpIfTN$>;GHl<@uze@P_T3EI_cCnX&#?U8sh_6Q&r<5=DfJ7jN%z4*e%oVQaR73)bCU34@#v+{hu;y$1-ex&al0xYy-+Kr9BQ`Ts7!) zd|jNcPAL}lIZ?q!p1{clryqG%afBI~SOo$I;kf~hL4IJnW+;SRvCPoH{=fPpHQ29O zgNqu9*s%%EHEKup4Fl(+-p*~{1SC@dY!-IojkLuy-AZV?b6ZT;t_aha+hSo~b4=?hft$sWm*hKwh#cH=-8RK;E|Ew!R-VbG!z zguX$$j>@y){x_P~~?{ue7Oi@~F$wY97i~O4U-J>R4)&k71q+&Mpsadho|% zI8P5WYOasb-eFxEqkTiVS{=uCRu{8AN8>pEM3`}{_H;X%jN7e-WsIX&GWRfY*XWe! z&HYN?yK|=e3qQ(9zaso{I+a(cGhkb$QnHQZxdeWM)Tuhv!A!@QAQZ+p=AKOB!orwH z6YaZ5GneS}Tb<~C9}nKZ1ie-H%Lwu)?JSnA%G!GC$H2Qv^?bdCn-W|C zV4XIr)X1y*6rAXUsM1Vcp4avoRk}Ja?Q;S>R z6H!k04>wo+bFJ*{KVOMxna*2=yb-NlK;GiaBINaEmMkY#L3>KIBBfSpl|$ZXN)4|h z5v^Kco2^E4y0&fj>$^vvf4B+TYHd@^s+Nc6OGIx{9)qafoKoXT_2QivO22I=eQv5m zWhm!7os&l|dh>G7&f;8@c|&tiMc5lb=^m#?QPkgu2BRwK??j6_P_6Hg!M}mOOEz8( z%Asn@IKG|QQd87lNvcaTUWbnQtI)~rON4j)&0Ex8t>jG%&PQR0H*m#?dT?A^QEEqt z`X|)laeh^B>FsTcdB?W)-2T2b>YqnX7Q6f=3QWgxd@C@`!1jfWNROyU<$K0`0d(*5 zi5mfW`o6|v|M=I7Tersbo4Ys%U-Rhup4|QNi)ia!RYs1dPTa0{qZyR@gtjflbicC6 zcsog>TW`x%qB-4dcaw;|nD&3*-s-XIiqzf(=fk}k_%9P+0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6f&X^`{{gV@HK_mq literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00035.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00035.dcm new file mode 100644 index 0000000000000000000000000000000000000000..a382ccd4164972579ac05ea1ea25c450098a4f75 GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00036.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00036.dcm new file mode 100644 index 0000000000000000000000000000000000000000..57692b4b131969fbc4cf3a159c54e1bde1718a6c GIT binary patch literal 38966 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 L2{3{GcLM(b#C0vC literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00038.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00038.dcm new file mode 100644 index 0000000000000000000000000000000000000000..e0780252e284fc3050a04036da35d7a9382e1b27 GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00039.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00039.dcm new file mode 100644 index 0000000000000000000000000000000000000000..574fbce7318df66ee6d9326a8e10425d9bb193f3 GIT binary patch literal 38934 zcmeI0TdZ7F8OOhw9?G;rnO=aIqGp$qdd^W8*1qq}1D#=J=$SaT?mg3T>cP_%4oXr> zrJ!J<6hSa0Xt|nr1<{Cik%~7oMDT*(B@lzg2OE_K-%Ndx1jYYaGqcX@)7?Ud#0S4= zdiMH%>sxDm>$lf+6a8<0wMMm-MF{=o1U-vqmNL}2SU&N~Wby1bHj-JgN`WIvrVt`1 zxh1pY;6MH%e+4|s@UTnX&>p&>a#hmuUE2;_(-oGB;+F4NmTTFjYX!*hJkPO2Xo)Q4 zQO|~DEy;FGw6P9(#);anWmu)KYr%*LsO^vv-(1;B9 z<|qft2I@qOt&Mi2Ip2*Mtx7aEUx}MJI_njBoTI{jrN=qiM70VbmUD;C$>CE_ueFj) zM_87ZBXg)M$Fy@~C6t{|yU?pFwW1vDr)FmzZLJ%vI$m(4X~c7JuilDtbPzeKsj~0t zeK)-4st+t)k)y-ZZObS`zS)@|ATV-t5z-r}a{X1i_ZoK1*k6_A>G}kV zB-3^sj2VMS199Img)M!F)dfP7-q6eS+)Im=GC|D z*tX?*zVCX%^DWQvZ42?9ylp@50^2fuPnf=io(L~|)qQTodR*-$i?_`MS1e z3EMXvCop|82yMqhe_z-3e7yV6bI2XYvR&<}-a`>5w{ ziF)#grrVyN1J~^_@?;>gESX4^2lLNZM|+T(pt*W%6p$}xWz;HQzDsMn)2#X;&IQWN9^fmfiLkj6?ON?1(`bhGj? z;d2X8tI4$dlJB7_@cal?MnpMVpj)vL%6JQOoAS4j`lw3D+V9l4cf&S;x&^HFjHT~I zI!B@Jm0Zt49%1Gq2FrF_C<6*}+nsM-I^T+n`06XKegE!j7L98b_b%=}uy|o@yXBU| zLL{sO({;kq9+X*Hc@RlnMkm`mtW)>s6s?spS&q!_u8U`L6wF2!N0mmqK>783#5LHs zCM`Pg81!&ZKtxyS+Mtl+ge5X;4&XVT^~|58D$3Q#uSg6 zw1@P+MSHycnMdy0{!$k0+@@`^W%(=OZOIup>ir?DRv_ zJ5&7cQa0IB`76@h<36_>S@m3{NcZSk-Up9+wUQCtrk!qxrPX#nuP? z8Ku{tT}zmraD;EVX5hF*`mD;4Z_>VE|K+<6?1lH|bX~ID`?Zo$KafzLS4u{){u!D3 zpw=)!e<9)hC8cCrqhFC8O0j)8#rBmH+gDR;UrVulJ;nBo6x%mbY~M<;J)C0uc8cwh z6x)#$+jmlIkEYnZn_~N3itYO;wjZR}ewbo=EXDSt6x)weY>zA3Xg>W!tCdqldLp5o zOsJnG)Xx&?=Lz)-t>ox>DxrRvP){e+GYR#pg!;8sa-I8)R6Y4poJLgKNBy5tY)4aUe@?L-Q??Q17n2?bFDn~#I!+W9s=J7VeNL2cuoD8?EUp^3 zkvPH(O{@X|gz($|mmNQ_T{9HIE?H*iV9#H3k{aw+tieSMdFTER@bI)c1SDV9| znWX*4m7Sz(m2I?FP7co)gBi3rQA<6FQOjmpsY*zX1)O3})#baepoG>kj?H7Is4Ucm zWw~cB(}iWasP&-s!8uA&lJ|mEWcM}?PgAnBsquJm@861er-t#4dI%p?=b(pEIHAgO z&Y-lZbF!$*(rN+9R!Y@^>*rKrluu!vjP5J8+BTB%a}&5WbQ%auGJ|qnENGsYMD3XU-(f*`sLx5(W$IT zodMelm6C0&%*5~`q)yeTE@t`!`8erMWA3RlwHJCbNupgj0%qvUvFM3r=&WTr`BrC! z=i|{En4z~Qe;Gj*rJbeHWm(%`{TO+dsg|u(@O1;iJUWuEY{FsuXiA=Lo zz?T+7<{LX2z1dE`XH+}wUQ~&DWtuR?qp6Pb=~ki^_*5yQ`-ksS!@I2P?LS|x(h8lo z0(lc!y@0%>nMKGO%q&?>s+{(eYE?q5)+&R%Hz+l}l2qxmWwyC;l}^{TGynRo$>$$# zz_v!)RI{q(@%d7vH!6=&RBuYCX{847&WxqsI+i{!QKB@KbAisuq8EdCIcjHVF3P;I zxu_x>jG$zXlcT6Q+=oV^syf_>mUN(6-z9^89e<)s}I5JC)_8>To3~FVA=l zx;k8iPWFvNc*lQjs}5Hy`Sk_&qcFr9xcWprI4-VgVn?YCZ>ag>{L0`m*xQ!!j&2#a z{e4Sycpp7k>^R%tQG{xo z<)b&|sj~xa2M1;OFB4z_On?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 Q6JP>NfC(^x|91la0kq#OvH$=8 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00040.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00040.dcm new file mode 100644 index 0000000000000000000000000000000000000000..3e69938e1769743f95874e5325cd0800dbc538d1 GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00041.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00041.dcm new file mode 100644 index 0000000000000000000000000000000000000000..1638044aea47aa5aeed9c2eb07d5a9d0748e754e GIT binary patch literal 38934 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 Pm;e)C0!-lloxpzpL%%H{ literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00042.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00042.dcm new file mode 100644 index 0000000000000000000000000000000000000000..646ab9e63a7d3dd2fb113c22a47b95a8ce317d3b GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00043.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00043.dcm new file mode 100644 index 0000000000000000000000000000000000000000..83ee4ec37817163f6b1ff8a9ac5a95804dd614f6 GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00044.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00044.dcm new file mode 100644 index 0000000000000000000000000000000000000000..24750955f2944ef8f7da14e03b24083c7eff0a18 GIT binary patch literal 38934 zcmeI0TdZ7F8OOhw9?G;rnO=aIqGp$qa?Vj0*1qq}1D)xfp=aXUI(w$&)Ptuj9F(M% zNQ0sZzQv1l>$eUOd&*2 za!Y2(!GHWk{t9@M;bE7&p*?g%udnXPl@FTZUB%OHP*7Q#`wdnw4Iovel?}dIqdHI)$QmHPz$xLcMFi zH%B>GHc-1;-&Su`8uOiQy;a=7OBHw6F5D*wSx)|w=RJs1DJ^Kv1Y8;59dAfGP;z6T*U~&IU zj&|n!6v?4nxOx9hX*Nb!fCt!-#Ii3-xNPwIIw@l+E`s zawjmR`t`W8iYAm^2_4tBwJInzr9EyxcGKJ{`is)%!{bDw&j!-a59BZsShs{}`>5w{ ziF)#grqi0BgV*gf@?;>gESX4^2lLNZM|+W)pt)LX6p$}xWw%+te3#Z%yHzV-&dU|3 zR_!jxKF!CSdbiS0=>kov5_Yvfn^mfXS~^rkEe=wLkeVPT2)qK_gfvzPQF5)IKsPHN z6F#>fwVF)JFZmw20?!X)Wki&-1-cb0p^Udcw<&)csgJ0Xto;t1dlzgIs9V5#bS!;0 z(m4u!ujG0b@(42@F<7?aLK#q)+wOeh()niBh_Al#+V}0bX3@B2ao^&egNqkccUW#o zEOdpnV7g9N+KVzvD-R;c%jjgAM|A3_PSIK!ljX?#&boLuN5O1&YqwHw6)3;HkGKXK zmt3RQt(UZ;b_2c})~mjlve#$Ao+ZijELgF=mdwEOWDaeYC1x*)jpF!tt3=!T7;i;7 zLyZEoL5H6_XZMvKyQW;EwaTV;ODfVjtrnop)+!5C(5enqR7%$M__J?aEZ#Z$Sdlhr zj~E{3XpiTAd+r}!d}LR-NN?6Q6vS^oY`c_A&Vqdx-qtMA2bTE|>iVFv$tW{WH>P;p zq&=knE!yL4Pd{|$j+e4%=QeGVEz4gKZ%fX=QST3HwE}q`)#@Cm+fzz^TzklgXH6zQn0<-PE@TPqpSJzB|#KB3f7ZJ*M)GMZ28Tx@;N zpHX@Z+O-6ZD~`Z9#ta;{NS{?X@=e-T9JqYX!F}-loUTi@`+2Qo)b}RT7nG7wocFZM zy-#bHpud>#{<2cCtLqSeZ&B0Zi^ zPbAb&6Y6IP_49=Kg;sKOJ(*CyOsJ<4>gj~~RYLt*E4j}7Ml0FEGYR#qQgZAT>34~o z=Mw7o3H1l1lB51lDYj!Nwm+xXUQo6X;Bl1Q$g*Uxvd@t?R z8WrrNo5XhcHc>al7N^*DD4Se)Gb+lRT0^4l zOPA@nWqN7f9r(Xp~5<`mn~o-X5+zsd186Zfif zcr%l9;JC7rbgiXaDF{Zin&^QQa@KgvkIJp3{` zl~t)TU|XS5vW=CQ7=DD*sXEocOrIdv7REH@-r#=ViHw!sMT6!koN|q##fSvPFrT1D@Sy?ww?LccTPU{ zU>&wK+NPRSEsxKah~B6?Mp3;fp{A7@#5*&Ve#=<;{6vY;Sk8qyCyQPT=H;lJrMW2c z#^$1ma4>?BJx-3IXt)oJMpZQ2iI#MrTHh^$e;t39Z@dbWL)DgXd^?rprf9g5l$U3` z1|1Dop_6?h5#I4%+oIuWCBMGleiVjy16QA@2gk(~C3ci(ctgz}=T`=o!QQr%cWleR z?eANn;eGUEvEyumPg#!T_*P(=f$a+$ksel&%J+=#1<-@rC%y>KQ}@;$`NzLr*s`Tt zy|s^f@bwSB=ZRe}y@0mvQDx+K>U7)He$+#`PioszO!q0NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 QU;<2l2`~XB@c&NWKN-F*n*aa+ literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00045.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00045.dcm new file mode 100644 index 0000000000000000000000000000000000000000..d5392a4ae253dfdb3e77b0a551142141ca185a7d GIT binary patch literal 38934 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 Q2`~XBzyz4U|2u*I0JY^VSO5S3 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00046.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00046.dcm new file mode 100644 index 0000000000000000000000000000000000000000..c612a0b6a544898d118e85247b09099497dbe4cd GIT binary patch literal 38966 zcmeI0TaX-88OOhwEMXEMOg16RBx-foio2^YoW6JSKxXI}*eQ2*Cfz#;8y7bTESjpA zL;^~zQo==`u+RV@R(VIX#JdQ_yG03J5WEyA3oRZ@sXX{*#TThU@qf25y@TkJWu6TWW=!VL*CrvAKO)IeQ$F=ZZ1eO_^t|f%+m@fX=!g1_8 z6;aRHB`wKzO|&tLJmYk2*fOk2SaI^ShLVX@)T&KS)-E@iooNHs0-Z%svXYufd#)K9 z@GVdQmJ6xgh?`p*_1R9`Y}MkK*;+C=+iApCbdzR#Y7WXM(7IRXe}PK>mHroKBh_n! z$Pkx$j`W{`rd!L&bcAJj1v2}}a!k8GR!Z3^wF7<3Q!6geewu6#)0GXQ)xhhnO&ZBe zGTmq;1v-SBl~miiZ|}kP?Eb*~wFNp%ohccGC{DJAsK?+kq}NmJrrkUD7p`Z;_74zAs(WCzf33Ijc0*6 ztGmsM2=5ug$HK5OZP&qA62hy5VMTZtIzeE&!pDdS1IP0G0(D=ZjAvP<>kCH?H&+N% zrmEV0JooC`c5K^nJ>Pdd;rW(l`L>04&)l{jc!6!1z9&rILQjMjzUscdw)TACdaem{ zq3@zS*L+>uvxM!NjuV)^8HBdup}((ddp_QM=sIX7w8PNxUB{&rSSu#m=U_y)lDTHR zF*PU56_hV_F>;46rn=3fvx0_{UJji!ubir()Ts8j=fo{DE9fsuUj&cSjXoPlLqCwi zNQ8bUOxs62e@oRP%u71y(nM_2_Ak7YY9lmUf#?#@nLHQS1fWZ!i+ynpBQ z^Tze_d**i@n7_2X)p9FhE*93D={jL$7s@QILM6JZD5H~Y9@eQNIz_8xOqL__JHyFD zfr5$n^0?NVDp7Gw7jgBrG`U_6uaV@V_9T4Qu2Fq4Wv|bNJx`MFI#{vRR?NWjWDaeS zB_^&&jPl^vt3_M77<*+pPmKt)L3cm3VaIhJy}nwe)yk&!Q7Y50R&!7nXqAU5Y1M=( zD<$iC;`rO<%lAz@UZ(ZhBZ0>T?eW6zE`0vQW814`db75nAbxvc+pcVKM(nxd&Q_T| zxWtE0*N2o%Mwx@UIm6=??IHbd*B)do%p+Q#RRC`76`?gFd%Ew&HlLOh}KBIEvo3yXpf6dMVd*J<9U6*Y4 zb6Ux$A55vwDNh#UZ!mmsZXV|`+Vf#vk?W-BKuVvW2o?-h& zhV7dfwr^$F9?7tMJHz&9hV8Ko+jlZ-$1-f+&9Hqh!}k3Q+Yd5qKg_WGD8u&S4BJmK zY>zA3!hHIvR?A1r^h8QMnNmMXsh_9RFH-84TFKG%R7(9SrJhcyXHx3dDfJtzW@mLNBy5NY$q~of6lO-RJH}mFQz>XU0pTkT%0a0 zRksui`<$rYkS7GTTwFqMS8)WcHdqA$2;sQ_u0eiayJm>XP6gK<2mAl3Gt^+eVht{8 zC}PJZJXfn7**6T_k9s?|fg6xYxd!eA^<+I=Y?^K*wB6Z@P1mjn)0y=ufg89kO8M|O zhs;@_{^1E*jOb2(8aExBY#meJU~KvVReQ2W@}?o<$*bKs5C&DT*Go&SC|l^aXyPb> z7PcLhcg;0;(;El((zr2M!(O_PT>TF6@bI)c3(D832-VhV4637*ta*!4gCk=j#Tm9F z!?sn~Rukj930f2H#9FU7x|58KM2BlpUcPlx<b2!nS zt;=^{K?$v89GeDCQF*AfOL8w*qDxD3S?gZyy>pbLB<~2V*q+|hKTXNjMhD}?CxI&w z?`S{Xg&x93)!FOeC{C#IoYO09>YP04vb36mvXxS`6sS6y8s(#yCkuC%>cQucyF+W# zTpy*KgSs|Ky9RW%I)-yr7bn*ojp6adgKe2g$u^ef68I5PXX{i4Gact|+zG}o_hj1f9b-IAv?E8r zIGsNbJ<&L=TcXo%b-aH*UU&oJ^cLkWBgmt)vsk(+YwN8a3*J?#=j%0mDZxhotkY(d z8hQ0S1vfe&sx+OK_qClym2S+-Zxh>5tNb<*<5|URU)rwd+b+WsV<#tX7p;j#t-h^o z6eth99JfCCVWmJrxyg13UtJ8DZ)|H$Pqe$!M%12~j%&$um4=MLXre(rom$)ipNMk0 zfB16Mzt_s%{`2LCmg&4@$Q#n?1>`NxEJ9vyX326=6||>RD^hBuRypLoL8-x&B%*Vc z*k-B`ovUr<|MguX&ppzFZI!mEW>w3B^ChA;DvyPz-jq^fO7-F$A4tD-AbnA)L}ei7 z5}lJrFM9KGp`FFKDDwv9qKdFLg3>)skD{o*4=s$UsJ{~}>Oi%=Lk9mk{;pZS8H-sbAir{%R$^#Nd7uhIj+}PS=A|;)+r`O4Prh z7Ekf3f=h32Tg*GLx##xx%~Ah8dZyTMw!vpD$8vltFwMaBg^ft>R*}m0jPC`|z1t_g z2+-3HHje${Une(jj_Y@HaSy)fvG+c?{iTy=>!>Ot$5SV6*Spa)%6&rH7Gruy*<`$( zq|vRnbAQ{L|;t%KYX-$;^rc?x54>PuLl0h1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N jfC(@GCcp%k025#WOn?b60Vco%m;e)C0!-lloxpzp>U%Xg literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00047.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00047.dcm new file mode 100644 index 0000000000000000000000000000000000000000..2311d3e4efaa04f9e3f57ae46fec299b6fce74e7 GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00048.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00048.dcm new file mode 100644 index 0000000000000000000000000000000000000000..e610c81fd5d770b5ccf672f2715197aefbbeb860 GIT binary patch literal 38934 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 S025#WOn?b60VeSOPT)VY!7g3^ literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00049.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00049.dcm new file mode 100644 index 0000000000000000000000000000000000000000..696276186276dd071c7d769ec734a19b1dbbbc63 GIT binary patch literal 38934 zcmeI0TdZ7F8OOhw9?G;rnO=aIqGp$qdd^W8*1qq}1D)y2&@*vv-Fv3x)Ptuj9F(M% zNt0YK>|uixB$F33>+4EM=&(RX*{{Wby1bHj-JgN`WIvrVt`1 zxh1pY;6MH%e+4|s@UTnX&>p&>avey=F@@_28)ZY`noek2o^Oi4@`P=Yr%*LsO^vv-(1;B9 z<|qft2I@qOZH;!NIp2*Mtx7aEUx}MJI_njBoTI{jrN=qiM70VbmUD;C$>CE_ueFj) zM_87ZBXg)MpvsYzP^#4%KoeN zU;myfKd^Xtj*d{bEu#?mW@mzcz{t@>NN=Rdbyx1$XV^94KvkNj>(?(HG&%qlCGu2j#MRD@dNgOWBHtCLDZe(}PKbx--!Id#cjK9(?%ICiJi?pBfUz); zOxtxZdW7&wVOSEL6<9%FyTZ3HWC91nB}e^NDC1d{>H5MkEmycgs4`{M_G6h>-?n38 zNP52SdcyN9&+=^x@t(YGKkx$EGJQ{&zJ;C$FMQQ~eQoXe!u4De=tAE`d#?Gqwr2_3 zHytN1eKQDc$3uT#*YGR-mqS0pqY3K)X7>Upig=zb!=WmI6 z@`$F}o}h!*?ltmcAhIl(NRJU;BywoZ31-*SdWgS??yUD zq3@Mk&q5wy<|76R>o}AFg}Lp{H!qoQMMiwp71z9f&(({@)r_8EF=emMggr}==~=L1eJz=R=gAz}E=$Z_92>>)@m8sB?_<0b=?par z&;}iT@|@jQeC+CSk=81k+AXO_>$F;cI$NtOR6(l-R8c8e*W=H=ZLxUg>|;gRs6AqM zoTELS|LwVdeDUF3pJ=smsz{F~)DsEy z(}en2Lj63Uexa2dT~8*|FB9signBxmew9$a)=I8(ztKvz@JvEItCSqOMfzPL=edOX zeM0>~spP2tQ;O|aitW!SwilFbMES*}$DvEh2Az%*#f9oFVqu>XB^>O8z&4Ak25uyd zFhdioKmZ{;H^61b4{X;Ag|JJO89LbW*PNsV`xR?&Q9~X(HsQHe?a01i;1)F4xeeTN zWXksq+y`p$Mmpa#-BM_~^XHqcT@t1KE?_H-Gq{7sI(nYdS*!<(6; z1ILw}q-&IIv{z0J&lrOlv^h~rJ&IAwW?HFANRI`aVo%lOyRe{y)-sOGW2dMr)P`lb zXD`!*WxA;Kp!UHzN>Y;df>vbrHV;ozvbCx4cyaIFhIprj@s4^3A64g|hf_GA%5%=3 zw5fBlsLRr70m@cN)smy~RAQ7*VV;ccD@PxBbn6uE&?AkSYg4pmTvw)O@0dQcWg6$K zK4yJ}rg7(~V#c*P?M`(z>a^;XF^yiy+(XD+t5aey_e+8A&YSWt{3s*+^6<;(R92uF`=ejF}|St{ed~bmmy}gq7f|Wjgs*XNKqF z(HoedwTln)XT~{+8(1! z*JkDSh+U{vevgRoEaQeRZ5I!17vYJqlaaTJ)@;2}+u1R4l!ac2o1XlblB0=Cvs1vA z7DMJ6I~%>(PQPbVJMCUniF;+5Fvg>)j`QhOq89j6DWm&`?^DCOtnBSSU#`*$owovc z6Iwlwyrr2%$Q#ToSx%~)_LOQ>Lao*+gS9l3GxpI|G*S0hN`mV|69%#U} zM%z@gs^#(dQl&R4k5N=_N~me22Jy~}rQbT1J}*(CG?sIL&dH(|gLye>XK60Vys^2c zA{>mMWRH`hs5;z-Mx&}a+=-TSpjzK8gMS@=mu!MRm}X%6!bYTrRiyGg<9h-0;P#0x0`%0q^@soQuNSs#iE6j> zaSy)kq4z$q>!laa);+3>98cY-Q|niIDECQiTZ-vEWm~Q4Zuc7Pey1N-=}Sq^`|l|q zyCF}Vop3ueD9eAD025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 O6JP>NfC>D+6Zj9fbS_2! literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00050.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00050.dcm new file mode 100644 index 0000000000000000000000000000000000000000..20f9bd193a2b8ddb7d372041aab0939bfed60e1a GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00051.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00051.dcm new file mode 100644 index 0000000000000000000000000000000000000000..50d127d1335230fafec018d18bb71196c3675f85 GIT binary patch literal 38934 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 LCcp&#-wFH&PdF|h literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00052.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00052.dcm new file mode 100644 index 0000000000000000000000000000000000000000..3bb6166552fa71bc7c30239c0e6b06acdbd2bf97 GIT binary patch literal 38934 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 NfC(@GCh-4G;6E8RE&~7n literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00053.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00053.dcm new file mode 100644 index 0000000000000000000000000000000000000000..3f424bca65cf68a47021cd1de8d4625f79e07ae5 GIT binary patch literal 38966 zcmeI0TaX-88OOhwEMXEMOfJAoqE?5kxVsvL)Aw#3$P7J0cFLWdN%u~|#>Gtni>4|j zk${3#O1KCV78=6ED({Gvco#vuTT$?W;H97}w0tn7^5C0=FH(i#|D2gQJH6>76eZ<@ z-=wmA{@?k|Ip6v9xi-=N_E&F4tvo{LPL0qrc;+cb?Mvkozg!;AZgV}E6{`|BqGAdm zf{I%)D-QnSFY=ecqY4kZ;`QyJ8!FeHw1w$g!gB)CafJw7E3llv4L#wxo(OCw@I%{m z^HfAV>z1@6+cnX~8sr%#Yr~ddRl-l)%Y;%2KB&(777sku%gzO0)x+tc$M@h=NG7ZnlhecnXWG!({cp{ zohnmRZ6C|M^0pn@wp`EmF-|?-@+{xB5bvqm_5&}lEz|eps7FtP7rx@YzPk2&;d-tK zbfNE}J=c6q+p~o2n+_(kZw8_5c8zj;rI$k|&8^cllp50>cOAcJb_M-K>CNys+32%@H1q>G zj6~>%!nA$V^S4wzMMTq?9-%|m?JvVg%QNo;$l6BOm$MdpJb4jNe*QQjuM5C&NT`$olm6}E^9jc=i2dTqIjgS)rUWsl( z8Y_jUV2v%&%__$dmRq7*l)nxCTaj8xrsY?B58Xnk4`R(k#FHhu4Qr%~y+pTb|2tGl zwsg17y$7}tv?E}>cPM=y(gg~Aui|_M5uRj5RF6lHX>%_BN>uTIfw8I$G6{LY$W zvOvLPd}&;3PM4^-wu`uWTbf+2*Q}M~qxKYh*R553F=emMg*{J_?|HCdt*w}W=gAz} zCQD3SmKf#Xu~&<>busqJbdDMkXoK#2a>K5xKYUHKOskbm?W0ttHCoL>ov&3Ms-#sD zs;rc(>+xsbvQR!cd8|z9wMPPv4cg=R-(K*?7a!YMEz=vd4F&Pr58F;(h@M-TqP@?cAdx7bj`qV%k(LgBj2Qb)xj%wAKC}+PwTp5 zyPwfYM*ToaeO4(M#o15G+y}LW3Hoy>?=L7N+Zz1J^iYQFiy5{rW!S!)Vf#vk?W-BK zuVvW2o?-h&hV9`D+cz_8k7U>$&9Hqd!}eH)?b{i)?_}7%n_>H2hVAWP&4X-fSprGB1LztBpKt|wFKmnrpBN+bb4-DQvFQs`?a3a=n}&=huXf`AZCA0^OG~XNTNt$H1fg%x zjwAA}Dc8%5!+UAmn5tnf-AJx}2YGmSTAcyqYgL45Yc&ql(Ms05O{w9Lv612oTasbh zu55DU&8aANXbp+FFJGc(m*~ZPx99&hm7k7fF2i<3hVAVcw)qTOZ>Eg81O zJzd5tf1|^1CYh>cRZD@YW2sR-hIul$yX=bMACKWaJ+xw#)jqOYp?l$;sPAYqC+R?`RtZ z%0n;5txtYfDbPr6s$IfY7enS7JDM|-?e2^bwWnv|S~63m5o0)-XqZo@7Pr7BqMYs@ zzFhV1wX(PWd^w_JI&T^BMzne!d5bfPkk^}8vYb=}?J3oYlv=4(4tcLrYIr4y=&U8S z*=j^*YumYheaGl?4>w_3rERKN)$;IsiRkspV-VFFQfgeOUc3`S={FChH>XNehH@^_ zIeGM=H!lb6EY3xlH#8SjguM}z?s0k)Mg4tfFsh>dPPC{4)%q?O{A>8Ta{XRV4pm#m ziS5*unxg(nQeB$yDsw3zW&j7Ke6+r7tq%Is*D^@ow!}^Ml&e)F>PCn=|N?a@ph6% zx89bkM02{^?j{j^KJEX|{ng_)7OA}h&WC$7@Lwjt1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N hfC(@GCcp%k025#WOn?b60Vco%m;e)C0{`y>{sTdmHH82G literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00054.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00054.dcm new file mode 100644 index 0000000000000000000000000000000000000000..7bb4c0d3cf96da48b2a6544aa2da8e96c406f69d GIT binary patch literal 38934 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 PFaajO1en18JAwZI@+mGu literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00055.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00055.dcm new file mode 100644 index 0000000000000000000000000000000000000000..a14e01fd8f0ab80397906d9aca0e6b7cbb2f9518 GIT binary patch literal 38934 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 QCcp%k025#W|L+9;13l|5!vFvP literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00056.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00056.dcm new file mode 100644 index 0000000000000000000000000000000000000000..035ff283d490c267983a0c59c9e1a20529f0d929 GIT binary patch literal 38934 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 OCcp%k02BCsC-5J(5H5fK literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00057.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00057.dcm new file mode 100644 index 0000000000000000000000000000000000000000..d633656200127f20e15c1a0bd4f6d682683f2ccb GIT binary patch literal 38934 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 Kn85!#f&Ty~@h&C+ literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00058.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00058.dcm new file mode 100644 index 0000000000000000000000000000000000000000..b3e68bd45ebd339ed1f4747c7875a86b532b8895 GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00059.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00059.dcm new file mode 100644 index 0000000000000000000000000000000000000000..aa2001ed89ce73f7fd6aa12e1d218d7f4be5c50e GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00060.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00060.dcm new file mode 100644 index 0000000000000000000000000000000000000000..b57f00d6b5ffa6927ba933ca234475ed5f122e57 GIT binary patch literal 38934 zcmeI0TdZ7F8OOhw9?G;rnciTgRkO=UJ?AJ4`+nhp&UDYvGjVR+d#2^ogQqPVl%%$` z1qBnO2vSpmmaB<(L?hlsYP}mGctPqVGzN_iHYyLk8GMlh#s69}v(D_(-IfrE4}R11 z?DhZFx7PaBZ?Een`rrPl^{|;m2))J_J&R|SGSuEIp7>?5c=qb+$S9d5-_}cpuIqlu zDH$aj|M3_3OW;w4hgEV1_P`0GtCXhcIl%*knvUf=e&Cv>WqY=32EJ)# zDUW*AENV%#YoLu)$kWc$h9$x(1tmL6t0|sdLCs3HQQ553J6#Rd9GypDyqxNBd#)a7 z@Xb*UmNnFl>RalqN@KPY)ti-QX0{SHa&+-IdYq%ef2GGc+CbF`A(l%A&+)-ir*3m8 z8MY2~IWh*yv<)jqWzS_UStjB=d)uDx`j%;Uu5NfHdZN3*EAH#7YtPdi*D-)D@Eo+~7_Vu2 zrfzwLZTp62_}tc-|qxZZn;d zJ{RfcoZ;9(X*bF&tUQP$FQOA|9#yFaREk!Lm`q#bcUHyIIr68Y%~7S^Do}oP4{`N3 zF0n?hS}kaY?FM|;td@N-M6cJvo+ZKbVpy@hmJA>J5;ScUC8n>Awc_Y_tAty77;i@_7EYm;Uj^<2%YldZV(TAbxvc+aYaY7VNp=aI;A7U*tom>jTmzqRc?umf~@{ z@(})aDv!6Gc>KO?FJ;lrVPz97i(e6MOU%Gw?~f?81bKHWwI1r8l+qtn9wMrvN{O29 zP4T}^+C)#quSoZg`rLVJ*~vt$T)J__kA|Ps<$fCavrDU$^Vv9(aF7)g{{ftWqNChZE{^Qi&+moe;T? zC=C>A)fC&;QfyyOv3(=O_RSRAV=1<8rPv-% zu^mgXeLKZ=JjM2%6x(-GY~M?0F~N{p_j6Y7@<^-MyYNT^>W)UTBi>)daY5-mKNP$#7lW4B1ZOXNJ4 zP`^*8KS-4v^?ypSol3F&ImPyZv<)f0nDjVwZCRrWaiX|V-bGC8b9xB}J6*>%i>n51 zB)G@~237$dLU$b>mmSZy93#+mt7IC1jXi(GS!%G(S%ZTb^4PHn&y{jV_B0K*p#ILS z;hrN>uBG8VP>t8o<%Z#u0?V1b+;FUtZrHPyU&0;BMJW#+7mzWl%YS&n79qMbpTG?p zr&-(3aTqo{9aX!cN8)xN;>pV0*w-~GW3LyMN?x?kZ_#m34lQgyDsGhP@uoM7?xj(! zQNdoifgJS?vhZ+~IuFWIDi76GY7(lWl&E>DRHGwf14SveIK{S2+QiD6kx_0}8WMG1 zvq;Y@(hK`;-~VkgKN-txitXAI+uKuYb1Am|E}d-SgDHM@q}UerbP=!kjgP*WxLcjU zn;ED5rHE{ znnk&nEYgKVx~O!&_Wn6aP!jioW@L3Y4o*{|wTaPqaqr)Pcqaz&4toe6S!ch86F8xY zb56gsp>ndQ%T#I(%92XflB4oOVw6u{o(%6Rll#_hp1>V?s8Mruf_9DS$^`8m(T6ro z;+)mPtk2LS?mQu8T(jM3htpBJSu?ds^h)F&LheeH())A2mdKQ7V`(OaA0c(VN_8;P$H;eVZ4z@&o~b=Qm`W1uh!HSFYe%9dnxcyr>Ev6T z8k~=ZZ(xevB>hDMS(LUHN|!}#{qP<48)d3x>4}diIU36} z+68=R(L}zsz22Q}_qtlxZgrzd+%40XHX2Ph%BNF_n&1;sM)eQhrv`Uf(c6E%9MTe% zw*+}(N(4AvPNC;I5~>K!9Fw`RpDSKTF}01eWwWiHT+$-?nY1!WLw(l?Nk<NfC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 P0Vco%m;e*_e<$!C3%D&% literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00061.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00061.dcm new file mode 100644 index 0000000000000000000000000000000000000000..c0d3b8213478b8e7f83672e146aa72284b78b760 GIT binary patch literal 38934 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 P025#WOn?dezZ3WmML8|X literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00062.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00062.dcm new file mode 100644 index 0000000000000000000000000000000000000000..873eec680c896bdae3acad1971fb4c17f9f59094 GIT binary patch literal 38934 zcmeI0dyHIF9mjt&UCOjVncWtcDQa%n)ZJAW&VAp@A9RL0LwDl5I(MdJ>*BVBMM-L@ z6ckL9MG#C0TAn7p5smm3L3|q`_(1Rxh(Y5YHY$JkpQ-;yg5vj_nLRsqds_&R_=mq~ zy7zp4=XcKeozFebOZ30}RqIhRixB#aF?t5iEM=&Dv3%l}$>Q0sZzi*3l>$eUOd&*2 za!Y2(!GHWk{u+3c;bE7&p*?g%<*KCT+Lk4}&^A3k6rSaomg~8W8<@frPT&Qm?+Jl= z@~CIis+MHCCh{hbXPl@FTZUB%OHP(HQarnXnw4IoafME`z?j=mGm9CgO~_45dC76Zn@ zKr(ID!RQgfD}`YRVeHun|GhV1yYpn%guA^+ekC8iu zG1affopm&(^jhe+zP(jJsVVJo$I+YS*3n;-J`Wxz8htj9hJGN2kqEJ1nYNF5{+6gG zk7zorF*tB2?#10oy;Y$6#y;Z0W`Unv zqbD{>+EKd!-%T4;UrgESGhxq?WO^2?SYJzK;CV8KcE}R5m&8VKbi7rf9es?qBAuZ| z0otI$PoA^q%8y)AF4DNNsYa+xsbvRJ%p_OT*u)*dlD z&e0yv|MuKJzVPVoa*^JsZL*g{2VmQ+Y;qRtzu>lJk>0<`hfvoClubsNfx0op<0kDP z{cq78Z+-gVyLP^qMLV}?n`~MBig;Uc1}^vhuvTl3ce_^SK;4m2`lH%IMs-9hS@WGK z{&y*x?5X?}>F!aVTOL{WY^6x|=vv+bk9)O}5#6VijOb%ZtB0ZR5`%;SS%PF?6q}aZiV*6T(?dvJFZ=~41nPPh=#rCZf+rufg zM^bFxPO&|jV*5^t?Yk+q@1@wjpJMw#itUFfwjZU~ew<=^Oxc#_(@(ToJ5{8|6Y7bC z`e{P_ETMj$P`}Vhj;<#Y>X!-iR6;$SP`^s3Uuz}Tx!-6dTX-g+o>fYY-6H)ik@H+a z{XU`opj2|y|0%_GG{yGk6x%UnTc-R%(qrkevO%ZgL~)_Ii&)s_LX!%Z?w|t{Dnpmn<`Mu;*_$Ne%YP*5IOsJa%ltb6oAnzG2`NG}yTf z+;e2gbqw4Gs_|wz-!$D)XuI?0o333FrZbQGnj5$-O8M|Ojm&wW{^1E*7tx*g1a3Mw z%{r#QVc7Hqs`g}$UWTZho{vkP`*}qsJ2$qP#vvg%{!DD9T{7wn_`PoY&(@ruDlr)Ti;&*e3ZDmiF@yg%i=$naq)j7PG zNji93*-5%q*_QXp$>AAeFoU)xYN>T&)UuVh~D515CW9!H%Dhst~ zRqolVbYYb)YCWiZaE_9cBKrzzRm)M&i8_isnMQ^Rimb~M{}D8-esz0s}+15!Nnizv{|NFR((UkEl!9s^|JDgw$~`r zby@j6VmE4)-y^zsmT_BHw#sP$T9koP*JMpu%EPFrQ0D@Sy?ww?LccT7I_P#v}n z+NPRSEsxHZh+eNemZN$@LQN|*h<9cr{pOMMd5IFGk(>*3P8Piw%**9=R_3D28<~qL z!odhi_Bc6;qTxQYJgTDMPPC!})%qS8{A>8TeDhVH9ICdAp1QyG=s*5-Y}>YO_0~S_ z!Ph_X?k9G?cnodbr^?9j)akaX{iug>AJ?{(m>y8J^{Vbxuiomn`*B2HNP0eaU-{^b zd1~*1+tQ#c|78M9fC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l M2`~XB@c&NWKQRj}fdBvi literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00063.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00063.dcm new file mode 100644 index 0000000000000000000000000000000000000000..0bec1a72803b2451233f9f7294dcf5be9839c896 GIT binary patch literal 38934 zcmeI0TdZ7F8OOhw9?G;rnO=aIqGp$qdd@)@*1qq}1D)xfp=aXUI(w$&)Ptuj9F(M% zN{yM-(J^E^uPU8>rpd{5c-V?dIrxdWvIPXKJm+B@$A<(l3B7!fg?($5F#kK zC9~wmhz}) z!?KoSyC&LLhdkp%ZP+rbQdn}bw4UPGHPo#18kMa^z0)&b&Cw|o#jB|vw-@SN1HL)R z!Lotc-TJnAtJ0Y7bnDGZcW%BCH*$2=EA%)=h5t&AbF_)76+$fM4xf|5r=VVQC7F(} zEH6jqP+5*?=g3MZJE3-?S6OOyb98_j?RB)RW;APf!Ig#)&&9o3GtSW=s1qY(K3) zp6|P!@O;a&eA`02CvV#iyuh|h-xH>9p(nx%Uv*z!TYJ86J=X-f(09?EYrd}SS;F>B z#|cc|3_{!S(BId!Jsr(O;B4A08(feKwGWejtaD2>no)wvT%LmZ&F> zXgaM4I(Xe)BToh*%aVyyc`*Nsb+i|$37V_LMgjS9R(6{O%y(&RwOh3U=Db{iYSr$7 z?9+VQsdp<4l`hbvDq&X(v{|KEsHHA$=dJGxp%=ffw~2(N5|54Bb}qr z_e!p3A&)Tg5rbtrE|dXJ+V&F;Ww{|P_R)O;C`-p3>amh7$ z-FitoYB%7!VZG{$DSLe;>{*gb&w>@}YstiJBy(uHEHQgYY!t`GTP51w$9OB!8EO=u z4LbbfIlHg?*fr%MtyMO)TT+qMX|(`#wpLlFf>w2?qEfQ1$DV!bV)4$|M~k#kd&KZK zM|(W~+jIZ;;={YjMS8Qgp&)+yVcVr_au)2n@U~`=KCsM(P}c{QO-7l4x-rG$ChZ~p zZ_yrad-}mUcf6EEJGW_@Y+3$_cw2G?j(UGss};!ms8;7d-JVkV#{<2cCtgj~~RYLt*E4j}7Ml0FEGYR#qQgZAT>34~o=Mw7o z3H1l1lB51lDYj!Nwm+xXUQo6XpSqOQG$~Uw}(hNtn)j7?c7x@KDN!$7y8F3-uqKuyqmLiBI6BgVU^I z${U;M3smjN9?9Engnd*$Ttj4_x&n-jIvx-n|mOe<9h>9K%Q?5VnZ2NsmjTE?+?>=c!S+ORD5 z>}9&JOc%8t)IK;zNlNlw(Cpg1&BN1_Y;9^hUflb)A>OHByrUk%N7Xs#;S^4&@|-g$ zZR(sX>aw(2fU=cRwdANgl^Eqym?xwA%F#!j*gAzf^hl%T>J;r6*Oe*SJEjk9nZ`M* zk6E9gY20}t%(!N|)sAMn?Pkp~rqL^zdkDE}bxI88ekt(Xc~ky{A7!Lp9)1~}%Bs{E zu&q!j*~ZFD3_n8ZRGsQzrsMqWJH|BTo=juD8#76w9XSGK=*+R`ak`dv;2qb&4F-1OwflpIZD8tnqU zv=}nq*jew*w);IJYPWjbO57{cgfSjXG|s0}={CV9qKxhzzE2JBva+}Td^w^OI&TH? zCbW7Uc}p{kkT;lFvYb>o?J3o&gj%gt26=B#YJ4S$=(J_FxpG9OYulNBedpwJ57c2> zqiw2L)$;g!iRg{WV-(e!5^7qhLA*0#>GQ_Y=O;>(#&RyyIa%~#FfT{#EX_rkH#Qel zgo6>3>~V4wMZNfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W OOn?b60VeSOPT)VONiL)S literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00064.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00064.dcm new file mode 100644 index 0000000000000000000000000000000000000000..145c1439ce7d53f70080322dd31619fdc2e5e3ef GIT binary patch literal 38932 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 Q1egF5U;<3w|DC{p0Fd)8QUCw| literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00065.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00065.dcm new file mode 100644 index 0000000000000000000000000000000000000000..a430a8f706cf9c2721adaffc2e59a6912f1147e8 GIT binary patch literal 38930 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 R025#WOn?b6f&X^`{{foUEmr^l literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00066.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00066.dcm new file mode 100644 index 0000000000000000000000000000000000000000..ef7fe06eee52666de16b113b8a2c35fd70dab42b GIT binary patch literal 38934 zcmeI0Taa8u8OOhwEMXEMOfJAo@N&Xd++BsC&;1-8$V_I2?38oMIWq|x7dHtkN*R+# zK*1^{2oeel4OgqYBU<8J1o3WBf)@lY1!bY-gDI5<-z@$_Kwm zWl#UV{<{0?-|6ci`rrO)jcO~45cvNa&(ZIoprRWZnWxn!Ih>F&&9oZE6&kjlP0gor8<}XL7VV zKPYu@_&kadd8#$yYG+41nloCF?+VnEUmI^H#6$G&7wOnL@XS$nZNG6I;mu;eSQtpA z?K&7eLU^SxED6sFtRS#m;aft4fn#}oj`}ZA#$xV-g}#gST=P|J50lh4 z9Vak-GYD&)Y5S<>Z;5*H zh^E_~phMT}HS%O2vMiZMl?U_BSVw!2nxMIQY!r|$XJynXV7^OhyVI^0Fz4k8RIfz~ zvQP7Iw-HsEDqWySRl=?nXtPSSQA?L}tc-|qwm>&yC6w_N=!o*Sk-9~tWbL=>+&f{LK-~h?yT;OYBb}qr z_e!p3A&)Tg5rbtrE|dXm(j^KkLuK2Iz?+`OqL__yX)fF90jw{)~M2G7bw5JkGQZ|;3wDU zb?YVVYNrX`4eM23Oxf!*Vb79edKRo$UrT1-c`}E#%M!B}$3}5{yj7~(`xtLUIzx>D zv_ZE%e$MVIK5|vLNNbf%HA+QVr_}<~*;-|x3R*Rwib~149)0@Fi^V%;A1TsC?GeM{ z9PRP!Z_oYX^AGPT7wPrdCVNS=AGTe}CTGFE3y!pk^!{Z>|VUY%b8{9AJrZ*s-s%Tnr~0> zzeCw%Pvx&jcaHnq^w6rOD@D3X*YX~C+^v<2=pLHZYkmr`tBPO*I@#rD+{+t*TTUr(`pBgOX36x#zSwr{1_9!#-4 zlw$jKitXVP+jmlI-%YW7FU9u#6x$C{Y(Gq~{V2uu;}qK?$~Kx$KhbLCRFNJ{sK*lO zrwR45g!*|x{X#1_x*kucUnbNO3H4+`{VJh;t(9EoexsFa;i-grS}8epi}brh&NB)1 z`-J*~Qpr*Orxe?<6x*LuY|km%i1PDEkHeRi4LThsiVM|U#KJx&N;udFfo&F74ctf^ zVTLAFfdB#*ngEv_Kd@ah6v8f9X6RtgUvrWg?3b*;MGblE*o5a=wIln6fm_gE=QeQ9 zktr`Qa383}8|i%0bW5S_&Yy3(c1f7dyc?7PH}Fu(hsSAT&I|PqPuLEJZ$ zm;#4k6Bjkp^<^v%Olm_1Prt!Trsy8dx zOE;0L-$520o>r$o`C8?nI$BLbb+wW;Z&zx3WNe}+#TKX7b|{-%c{3`?omxYp?n{>G zxn+83-yQhBRplpRnNP7@nqqrfiftjqHrS<;ZG14r@5U6{(w;8kmA}dHHxu`2b9gh8 zbnv*clXSJRjrPjP;TdBvgEl8>sYfwt*-R@{3F)zbQ|zg_d>0m!&|1c^dF&LGh1#$z z_v~f5uuK=V9@IWKM@dTZUeJo{-sa(HO13sN9xv|w+Ys;6Fy2uQ;iKvt^l%C%RC&%B zls0uv7Ij%#EkM~ysakSWo=S}JDa@16eP#NSNYtXc~8(DrQ`()9zGfqfV=C8Pn*M%sq_UwK^pRbH5b$?z}1g!jCf2FAu+rPGwc< z4A@qvlx$;VCWap&b*fHvG1Dg~usvfMb5EVAy->^~iFV}(n4vSrq9>Z6vzF=PTb&u6 zk4JA{hTf?BWdvE2c9u$)Wo?7?W8__?TDDff*AZO&u}+(1s%OAZ|rRJW;^|!QSG#QQ6=t`X~GzfraI22TZvlWQ>BdVAHGiw@3OMD|9r7ZD|Frp zRSC6Ps|@m9qty6HQl-j-u*t9~zCS>ToAo(t&Dyw+#MO{9U&3N>C0}TgLJ2RF<2n!Tnf0**6m59sjkhI$W*f*B9K6!VquZz=?WrTwK+}j#3@oQ1i$6mBD4Ow=Lxz+cI$b z`b#}t-@SrUJWdclq2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C P0!)AjFaaj;|4!gPwm~f5 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00067.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00067.dcm new file mode 100644 index 0000000000000000000000000000000000000000..04be16e816a124ce8d76a9ddfe06f64b6c80fb26 GIT binary patch literal 38966 zcmeI0TaX-88OOhwEMXEMOfJAo@X}!`?yiR6^u3!0GLxQxopNVq(!G)S&&RIW-ou4lToD|`{Sj_n1$X}N)E*`DKAw(SRDARNy_ zJw?>BZb?hBT@!h0kY}8%4O@m)2`f&X)>1OLidwaqsoEB!*_kn5EzoHcB`c|!wC9_# z0p9`@U^$=ajkvk3QJ?F?%~ma*ovS5NbDc(fNjGV>r{|%J0-f_R{V!1IztaB#ZJ>IM z5EA4?caC(d-i-_;mQIXq0Y37LKLUkBh+JXG1BX)cHN#`dkwp89EhZO zym9@)L8E--Ty^ zI;*?QO@#N1;bUP~nKs5r#S_A-gkeQ^R$v8z96**3Vc=MvU!d;Gl<_RfbbaAqtO-{L zRi>)iek}LO+jeZ*ay{R7J>mJ5XZf~;cu(E7A9#UnnZ74X-$GA>7rx@YzPk2&;d-tK zbfNE}J=c6q+p~o2n~oEhz8QqJiJu$o+6^@OpnmPYj+z(G7wpwOr)y4`Dd)5-AIklY$GvB$d|J+Zj~_K zrFFVJ-6&zsN69*B)Z=;Cr@5rljB8UWU7}G{!mgKSqe@MqmJZcXi-Xi5q(;aI0AH5|&${o0Y!}|67n+Nv7pjd=K41sSjh#M8uONx)p1rjJ-sMwf}7@ zC0n{n=iUR`2-*>_-aC}O59tDhzE^QQ3weZ90P$G1<3brwnCI@?)Maz6*huzYbf0>0BIaXZ&6}u)YwT#JfWPWE& zGFhNtGTsu`n$smJuI(Z&Y$N!|^?J=(Nj_>%!FSzS)fZFt`fS+qB>A2LE7sbI8F-$| zp{=sS%g% zVspkWn4cO4fW=hX38lCVMJ>Wx8kB=a!=@o~f1TUR}%k;BlW;GNSvn zk`aAOsm0npp>t(4pVYb72BANt^eVJ#3DXmf@J-hY9JfrLRyp!b+E*U9V%NdF@cxXh zOSb!2tz^^>q}1n>l2N?rn9O}pYnY%vpYr~qQnIbVuS^eR*uIou`*McuD;c)0X4t-# zVf%W9?Hd`kZ)VsY&aize!}dsq?P!MW+Znb;Gi=|ncl=@Xl{aP!z z&izI!*}~H)^^8(-?3U?wshnq1>h~%22c^=Z{!baU;~BO;XV{)swgKfA(jJE{uNrhF zP8S!cTZ)B!PE>Hn69QWzD!uW78L?+LJw!Hw_t2UhT$#FsO>XURr8J*+Q>H z*F`zBu>FX&R@rBp2is*a^b`55NO;O;WM|J_^0 zaGxG%)Lb8AM z&HYN?yK|=e3qQ(9zaso{I+a(cvtV1MQnHQZxdeWM)ag3a!A!^bTbRZ;=AKMDW?)RD ziFV`&n4q(Vq9>Z5bC&4zTb<~ij|XpHg5IqBWdwPYb{0!lWo^CnW8ht-dcI!6mlAvg zz&dSKsgYOTQ*fgbqDnJ)d0*RQRO#Bh{5G)zwaRZ3F`iZ27NqTxzU^W>F?MqDcF~$_ z)au*YMuGCs%W>y#Q^ zNg_I9iEXwT(V5zI_FvyQ`s~9^*j8zqYF4#8JYOPuz491D^@fxhSE?89#8CPzL+MSa z5|yEx3w2H&z39!$K|70cQRWTJMHOLh1f_eN9z{`q9~z9RsJ{~}>Oi%=QwIMU{;pWR z2b4qAmT_V`wWX%0zmim!X1od=^;e-&eJ>H-iC^BL{%R$^#Nd7uhIj+}Pu7DI;)+r` zO4Prh7Ekc2f=h32Tg*GYx##xx%~Ah8daBrQw!vpD$8vltFwMaBg^fsWSCPv1jPC`| zz1t_g2+&gxG#>rOznNfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)Aj zFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)Aj zFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)Aj nFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp&#-wFH&X6iK7 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00068.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00068.dcm new file mode 100644 index 0000000000000000000000000000000000000000..0a8224c1edd4601a8414aef908d1b56ec75c3158 GIT binary patch literal 38934 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 P0!)AjFaaj;|4!gPpMxz0 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00069.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00069.dcm new file mode 100644 index 0000000000000000000000000000000000000000..580792bfa7ee8fb642f4692a0d92f34839e1a086 GIT binary patch literal 38934 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 Pzyz286JP@W?*#q>u%#`d literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00070.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00070.dcm new file mode 100644 index 0000000000000000000000000000000000000000..50646ad51f699bfbcce5576644f1d324dc919552 GIT binary patch literal 38934 zcmeI0Taa8u8OOhwEMXEM%qAhsBx;?o6?a!*=yN}Z2QtIVkezaFIcFweT*8Nd&>dLPNM%D57GbjS8G&TS%lDUj?puCW+_9ROXU;4Ocu|6Vjs43=g~H4eg;DDpw^f+p^p+bcJI%rfmveSeE0sHni*8o(N1~g>I0g zJnC7$tR>m5i8j_E&p25dwhXHjmYgiDqj+WwwJN=43?HRD<=nSgHtEmxp<{Oa# z-yG#&Sx=p)v8~arH0Qceqg9D!=PGeCM;l(I$2lteS9+YI%~Y!pVmW{KoESa@^;#>* zbU@0>kvUWnUyiJVvJ+}IdX=SCl%oUG?5w42b)!|s3$8SccsB0UTXBvKA!jvJ_FudI zrgvQPo`tJ&bcDKX8HLC$z9I z^Mg_chR-7?k*8WCu6B0RqgkUB`K~}s`SEx=As(WCzeLC0j%SX#MNF29D+VIqJVm8PBpz*B6dyxxy7fl_{&XAIrS*wjJBH zT+jDiPk6rNS-x!{-cz^j2VP)Xrtb;Ux6l*eg|E1;udY2`xSneQUFf@L&oxhLdzP?$ z({TdRH-pf2JoNXpw&&yBhpvNWLOTo{-*sGCh1H?iISV7Y70)+n_4d3lS5Y?K$H*PS znCds;?kXBndL?w+*w(I~)TH*f^Vs3pRrD97FM!9%MxPC&p&!U$BtkzFrtPDiza{F) zBbsh|j1Jzg*T|EB$g*T2RUXVgV=e7PYK&&oCZo(i-JIfaSbIqS zTeZiVpMLo0ju*3N=XPzAEz4gKZ%fX=#ophc)e7W&NUKdycczs7i1v_C9nnhGd{>J9 zQDu`omA@k0J?eAoBdeaR6zLva%e&xluU0am`?Qh~eN?HX+CHvxWi+4Ax!C%kKdJN@ zv}*~|6OQmr*9;uDNS{(U@=e-T9k_DO!F}-lw606G`x&id)b}UUXO)ssY& z^yd=ZUrQM4lVbaBitT$Tw(qCdevo4OVT$cXDYnOyZE-&RM5~pPMS47;o=B*l zCe+Uo>gNgd3$5hndNQGYnNUw9)YA#|tAzTsR&t&DjaIUSXA?FD3;UcX;b12Owpm;?a3gVq z8JbuH0tn%`0WLd!V7q20gk7@C(7~R+<`gy9FI$6)8uHk&3D0r0Bm0JdThL(VHgM08 zDc3e|AE?C}=|aK~q{DMEB7KY^p5?>VNx zVc7Hqs`g}$Z%whyr`QI&bh3^2r}*8HVq4nNWxVn?G5TiWUTqd{W`Yi! zPxI7%;OY$rY_%w1tqkWacmhmMP;GZFUvh| znJz5TMXd+556)4NlDrqRBD=R`c$$)}O^(Kkd;d1XJ2{MZv4`+cbq;zsi4&?k=L|}l zIwy;|EUo6DY^78!IVw*kM)@S>$>M#5HXZ%(B<|2!6V)bZ U(%un$XzLWtS$)j< z3{BzAQ^kyHb=sZkOw?)BEn^D3lDUVFJFZh=F!xJ=@6MU>FZ?JY{qpe3=u}pv&Vg-( zO35}>W@7jeQfKN^7c+f~us9e~n0x9>?fGIlNwh0Rz%-pZ5z5XAM3PPrg~O=L%}Uhh%)uE@{YF0DANsD z`8{G6YL(w3B0S5u;Y-_PL)#^IV(et(?V>ePuhe#Sj2va5SK_88Kc?hpEYs{1@TJ9& z`NqyhZ>H1l8P!g^7gge3nZ}IKXsV-px|OH}K2^%-{^9%7@GdKR`_GrEv_j{tK;D>E z&m(VXW)boRGfS3}DyKcAT9r_%waOsxHA;=HBvm?VnQgXQrL(o|+`qnU;<<+!u&vQH z)vRiHbiP#SwaQ~Ls@Emdlv0Cur$^Fn97$i0C{Y^8xk%?^(Tl;nTx@4)F3P--xu_x> zjG$zXlcT6Q+=muNRdu)%E$KkDzFP)=8h=-Ayatp*)s}H$JC)_8>To3~FVA=tx;k8i zPW6pMcqe{ss}5Hy`Sk_&qcFr9xb|c{I3ccTVn?YCZ>aeb{L0`m*xQ!!j%^*d{e5e7 zcpp7g?D9|)nD`d$TY+f?wl8c%dWVWszGr+dfF9gF@kM~1y1)MDKmK)m>(;1tTOaq} z8y|V+6T4nKj<)VoW#oA3Mx9!}+C#aIY1>jv4=CGeRd>7BX!kq)xJsW-dOmnx`Pj{Q z>gNfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 MU;<3w|DC{p09XAjRsaA1 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00071.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00071.dcm new file mode 100644 index 0000000000000000000000000000000000000000..eb8cd4819f0ec12150403b1724f48b7c64fd7957 GIT binary patch literal 38934 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00073.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00073.dcm new file mode 100644 index 0000000000000000000000000000000000000000..16ed79ccd6c951cddb19211d1c37cc7da65e2a97 GIT binary patch literal 38934 zcmeI0TdZ7F8OOhw9?G{yM-(J^E^uPU8>rpd{5c-V?dIrxdWvG3jeBzhM;@PinBC}+b0!NfgAw*De zOJ>QzfBZ%M3V4*^VVAt2J#<6mI*`J2gz1HzO5q2cGE#s3(tl zHZE&Pwre79J@Sm>wPDM!N@2;#(guoW*HW|6Yg8^Y>YbheYmQE$C|*tVxV=#C8t~0g z4wjA7?$)=}Tb0Iqr(17Ux^wfDxRIkXUZKZ1D*RV^oTJTDtq@{4d-$9jJ_YrfD+$;v z%gd2DR2FdM$Vwb?Ad47RpUS;&C|8(77rTj1B?4-adW?_K4we zmiBo5w`c$H#YcCQi}WUKlf5L`58Ezfle1vodABr+^nqnQgt|VcY%r}9^%JI8%)dSunJl_K4xYk4m`?$%01bdOdtqK_-JRNE(Yu8ihWIu~0X^rw|x zi*_xXW`rYr(=`LfEz)OHj(n5$Wd|pJ=smsz{F~)DsEy z(}en2Lj63Uexa2dT~8*|FB9signBxmew9$a)=I8(ztKvz@JvEItCSqOMfzPL=edOX zeM0>~spP2tQ;O|qitW!SwilFbMES*}$DvEg2Azr%#rf(kVqu>XB^>O8z&4Ak25uy{ z&x9scfdE2yZh*^PLFgN_^N74ruECq$JieE9YmEx_ z(#_=RcaVjLr`1VNzE*jtwpP1_Ha?W%cVmieX-}8&%HQPpn~8hXIlP%k zI&e(cNxE9uMtkMt@Qg8-L0b~F)VeWh*+MH-3F)zbQ|!sQd?O0+aNwgzJzzm%}7Cq4nov}qbt5kQkjT~j6SK_88Kc?hpBGYIW z@TJ9&`NqzAZ?@g<8Bx2{>sI1knI??!XrggGol3U}J`rVf|L}ckc$byE{pZUOt#^T=D8S%kd7%#!7#%4tujRwdMGtun|vMXB+XB%(FTY;)y^PSv*4|N73!=N_uV zwpQCzv#RCs`4Z6^l*cHlHzw4yQiFJB#?o&YOP`Y{Q5wrRPv>OOi^04cwX-xAW!~6a zR1pqFP_oC#Q4|gLq0y*{hC9)c4pi&AW$>@#@6t_IfO4qXGLCJhvfLC6SCaDbjMt!} z;VN{ZZzKZWaF>5=i-xO}{Q83XQ5fP4TzR}691~ZR*ioY44K;s^Um08md)rdp(X9iw zzi*9(_t6u@F3&`P=~#|$1*RF;zOWJLVHK%-&-h*dJ-B`1ivT@!Z|%{4{Og6STf5bp z`?v>R`^bBq*!9v2XzLzTMvkXWw_WW=J(T-|wk^eUpR%o1b+>x;R=?ekBl=>}^Zt9v zN3YLQdneou4a)LgCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB zzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB zzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB zzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB Pzyz286JP@W?*#q>?>;T5 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00074.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00074.dcm new file mode 100644 index 0000000000000000000000000000000000000000..c6ae276ad7165258168943d73ff389ab5320cfed GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00075.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00075.dcm new file mode 100644 index 0000000000000000000000000000000000000000..268e71098e507d3ff7b7f18c8966ded799abb8b7 GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00076.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00076.dcm new file mode 100644 index 0000000000000000000000000000000000000000..80d2b49b7d5d435769542a5ead2d83215bd235dc GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00077.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00077.dcm new file mode 100644 index 0000000000000000000000000000000000000000..bcb703fcff41634db5e81b93eaf8c5a0adf1594b GIT binary patch literal 38966 zcmeI0YmgjO701s^mM|M3OkOY()atMmH>=5T``yh4GDFY6PPwx)>E21$xVTARQL18y z1Qe`N!b6}!q2U#)d?Q-oTLkfKr2roYJ_^bL%MYehKKRXwU!)4f|GhJFcY4za6eZ;c z&!n<_|L2~2&$++8w{PDj`rrQQ&8U?}3f-v@dKT9_<*0p;yyBP3`mQCs zK!ib_is)zUl1MVHi5RO(?D4ASIt=h~~?INSunK583&}kGUE2x>Y z=bNzs-vSk2Igjd%xVgPipX zpn8pv8S+xsvHn%iOlvurj<77RKxSWAj%gRjN+~;~c43TpYQ+WGPgCvHbVQJiXzP>;cdD6gm5^;hlQYuI&T zefB$+IEs9icCQ*BPBc3%{vF{4dEUrqn5%MAW_bYVl zy|@;rv#Q(NOt{aOJ{G2xX}b>Qk`P`c3@gI30xJk?SNN8|JaH_~FHrYY+F-Vst}h(S zIN=JR+Ei8Sqq)}}+p%rS^?cv;gy&nH<=YnWJ#}n9@B$n2+7qU4VI;x}U-MXBUp!y9 zo@)YK=(~vLnr~=4OW3~YIDzS#L1;T3#`}iG^KtJ(*Fl)j4nxOx9hXM&te9$_ff?OO z=9~4#^t>=fDPQbj=8j-ab(=|Nltz?Z4xKbFnXaMLxc0c~*iEye^cST!!{cPL&j!-a z59Blwp&tr7zR=I#QvDQ>O=o(94qUg#D3XE9@?@e^?X5p!HSIxZgk~FwQ9`|3m2spCU8ohL=j$Ry;4x%(dP7rt{ zx(Q`GDMZD!f)d@VYAj*7CAvlV+wi{?r4?jae#Q4NEVTM4o|(vavP8Gx87Xrw(e2v* z4powo?$)*U!Zw090@nM6%J-vOpwRa!u4kc+@DxBkmhHGu1{Bu0J2!RdTq`z`tFOHF zgS)R;Fs@nHyRiGf!Ugs1mRk|?v9RV%*9j|o&}Q)|RH8eIGCLXburA%FOSDSnWI3|F zvpSh9P%s%^6xW*5B`U7zBCp<-CZE@<*GTeFdkVg5*Ql|Wa@6Z!&y(bPHmrEoR?NWj zWDRYTEhaBcjPmf@t3}(on0sY9OU($xphHicyX(r2T~jU7DrHmqD3xioR`XEjXqAU5 zY1M=(D<%7S;<>#ipH(&TPTE)OzkK(Bz3~2= z?n}n~yjC*n2U6+_O35q=&&b*bwT21$iz)9fD#HxzMEltEW`G_4BPiJY(L1b{V>D!qYT@RGi*P} zu>CZ{c2wC0>*;Z=mXDX|iIjRWrGA!DKToM&q|`69lC$fnl=@XlJ)Kg|q|~od>Ni@+ z=iG0#k`bOwsppiEbGJ;tPt`o1QZJ;`ACyYZ`afmZj%C>XoMAhzYy-+Kr9BQ_RyF8M zyj@(NPANFSR73?Yc|u^z#UTV|6-St%iKjpSAv`z0F~|>W*9?WQE0!5L*#B3aq6hm` zdvMW15j!^Fx=QWHzG2{e)Z4iYoPcD>h0Vflyq>n0rdtVZcW#U6+7)3sb6afW>X?o} zK0MAKb55v#xS~~z>`wkRj&{E1m;x`xrZ3R7Cr2bt8Zw`}+KmHYP!)T9kbU%EukF42qoZqNT+sy>~|T!!tk4BNXiZ1Wkm-Y%VvadU>> zEg81OJzeH2e`CXUCYhpp6lbZdsx@TY0r?ZRyW~2tBX~iqfI#fL|AdH_H;X%jN7e-Wo*KzWbHxJuF@sZ zTlAJl9Hn9`E%5M`fu2r1&rS0Or?Lu5JcXIM{(VA@3 z>O0y-f%4GHaq5#FRthwdn`)Qv)y0tY#*XI9WV<_KMD6LBxR%URX~Y=LCK~3`sl_eu zi72PXhc8$CbFCchKVOMxnXX%gx)H5jMBU=bBGmO(mTV_gL3>Iyno=vY%AxK}N)10r zB06Jg78zRDSzVd2^~o zWvJ$SU6aQsdh2o!XK^jcx}mkGGVINu^oY~5DC+M+gIN{zccMidsOY<7@^9ep^7U7N za;Rb%C&sBQHAVd=Np)$(>(EjEDRipuCBi%L%UjfcTFEalI3I-}?!eV28^H;AMX4Pn z>Yq@HC-_ytrMI^&)*aj0bNl<&sDBw%@vXo#1KSriGCia+mG>Fn3!rk0aI*)ke;zPTa0{qZzdOq_!>Q^q{iI zd^<^_TW`y!M02{^?j{j^DeeEzk?OGNfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6f&X^`{{fT+HO~M5 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00078.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00078.dcm new file mode 100644 index 0000000000000000000000000000000000000000..47266b73face731804eb1431e1c5210804a99c73 GIT binary patch literal 38966 zcmeI0dyHIF9mjt&UCOjVnLe2*YHr!o-BlRQec#I;bcQ?A?!=v)>AgEGTNk%2EJ{*K zrJ!J{ zI;*?Q3kdHS!^gs~GHutvSQ5gkgkeQ^R$v8z?F!!#A`BeM^9$5{nKGVbnXWG!({hC? zgep^2Z9kTKR_5+M;jBrnwzJ;C$FMP#)eRb{m!u4De z=tAE`d#?GKwr2_3HytN1eKQDc$3uT#)AoG4`_OgJOlXIpzcZYA^0 zdSiNCm@6n>>|*4OU`%zJNoNI(D7_pyX>OaYq12f6xa-8tvn%K?N?!nvQ;j|wNJBr6 z!$^dFC`{W&J%3BpQ$#eK=@B}3{a&L;1|rLoiBz>W|BN-X7pW1NZ6rns`EpjqtrF(D zv`)9D8zs#7C|O61dOR=tG?#RmacxSaOEjuV*!2=^R;g*!(xEzPagaKM)Cf62;FaiR zq_I+nifaWWx<%z!!g5P=tMa$ue;ZOO$+Y~6@1a{L^+Bweh%!FSzS)fZFtdOhrUl6*J7inX?42A(H# zXuB*ixivA$!(*=&ZSP|2mFXNcBG3jMe)7ECSAF=}YME9mn`)HGv_`9WsB^W-LzT2@ zLY0-0bv^#fTNcXqOg>hojoKrD$9dZ0x!;`shZm0Rs+Q@E+9rERv>&!z$|h&TzKiZ? zmFfLUd^Zm(-k;WW z$#y@Zm5lm%UVf%K5?K>H^?`GJ(mtp&UhV2I#wjXBL zew1N*OxXtW>Bm|vA1l-2DfL83{UoJ+no>VYsh?{lN7s`n^^25xDy5F6)Gt%&S6az+ z?$=t$7M@P2XOxm-w@klH+xb-8c{iRk7DgORcC{P%XMH z%AtjwN90{|1K#we;k`6&Ox3WLZX#E|gFHMutp=2VnBwT499mo3q=OZ4Kt+w*^$%1_5Kmtng+!}j(J+kA$tw@atnxFy5y z)(qR?o-X5+ztQ10lg!j-@n%Npz)59C={jW_?3JVaGe&O)ZBEtFh!fPZnU<>((qkSc z+B0?e4lF34wTxr)&?zbpwQfo7xl43ui7sp1tG#!Ql9c2fp%vRRoBO9J+1l7}y!a%r z4e^fk;~n%6KB~@M565sqmFJvZX;bIqQJ1CFJd~}Js--~HvD7FZ!#o+>T{?d}S{uWC zdZ1BreT?=DYvk`8($(rX&RJcYTyr#z`%i>9-D*#_qsh44YFNfNdL?rYA$PS-iQe3= z1im|G%D?cVob)TgFQ-#^l{yEuWhy1xSe{GZM@XHiQyt87oWE_y7{}a`X(tGci8RrU z903!wekgjP3EHqkr{C&C|9m`n0~7Qnp^%zMg5hex-{ce=%~L6o$h;y@J{~n7WG#v`6UMTqcFr9xaL$nI4Q0uwWCD+ z8*1?+zbd%&_O`{m6I*(2f8P@I@1v)S9cLSS)^aSzw*u3|=V@Uh(!(lJ`JVB;0J?Yk z#1{d2>Vd|wfBftDEnDLH?Ooi1Z+P_GPwaZ}d9-y@m67AA6SwQ#Xa?mzrfrKcJ*aFl z-cHi!*4uKGXij(A-6W#Vr~Mx~T0L=7k=i@qe5h9g|78M9fC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 k0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB@c&NWKOuEBssI20 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00079.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00079.dcm new file mode 100644 index 0000000000000000000000000000000000000000..de8338c9b596783e5877ef23e57e6ae85d1734da GIT binary patch literal 38934 zcmeI0Yph&V701_1FJ)SxOdr5Z0dvYtz4s~%`@GM=gwFKL&^vKnoio#N>&4p^E=p3{ zNW-`USY^uPU8>rpd{5c-V?dK%9xWvIPXKJm+B@$A<(l3B7!fg?($5F#kK zC9~wB_~VkDV|+J%}TFP*=p1~Jpro_Z>zT|jrmTu-mG-z<|}a{M`yiEk8@P`uk<)ao2XhL#B%=dIXQd^>NQuA z=?Kg6a%2vb<(PJktc0=?YBze7rDiur2dU9sN84&fvxXO3X&CWb+^aR?934i^YO3r% zu>Xd4Uj5$1D|2*|IxQK6$T!*(1O!HoElYB-EC!5) zfn?gQgV7^|R|>9i*3&~i-Xi*q$bD-05 zCD-V6>m}`|-GJ|g^{OwX?Dd(jXGt69OzGXgyy56sBGRh3pjVT^C zX%Fdti}rZSQxDy_zp@@{zCqm_*4Uae$AA5&_nwom9>8O@H3P>j(x+99e3SN-2d~(3Xdk>kqwA9GepV|P^?eETIi+M2=RPHK z@7Ee8=+7s-zo?XKYxFD911YvIrP#ilV*5&p?W-xaucg?&o?`n(itU>zwg*#e-%7DP zlwx~0#rEwK+aoEq@1)qin_~N3itYO;wjZR}ewbqWQHt%yDYi$IZ8V>LqSeZ&B0ZK+ zk0;bm6Y6IP_49=Kg;sKOJ&{nqOsFRl>ZyeKRYLt*E4j}7Ml0FE(+TyAQgZAT>34~o zXA|o83H1l1lB51lDYj!Nwm+xXo>#UJpW>l0rwT499 zmo3wC%k&B>MGp$r5q{jkIv8U?t9avC8YZ=Gpu~SqQ zYQwVJvzO_@GF{YqQ2XEXaDF{Zin&^QQa@KgvkIJp3{` zl~t)TU|XS5vW=CQ7=DD*sXEocOrM~@H;rk`J$0tWWqBq^v?E8r44pX^J<$xEwM-}9 z>df$bJbD8&^akZGBgmq(vsAh)Ya6T|BkwX*v(*Z|j^N^tb=oXbEvvqv;1(xDnR;1y zN84kR>AI}^9}2HaqB&cuRCl(G9A%+b;-)7*rsQZM z(`Xm)rNxl>#?E?gw%zX;QM=XaR^ncnCXDfDqH#W*O1B9<5oL7$@O^4{mzBN!=SvZ- z(0MD6H=)&Y$Xl9OguKDblI5hzX-}zECDdxIGRS+KQsXO0M5isY&6OiMUE9w5>)R)v zeXtJO8f{a}s+Py+OGM`?k5N?TCDgQ1gLr4g(r+9~UyvwK8q2vz=VZ}~!Mq%`vosfF z-q>7J5e`OBvd76$6b<*G(Wr`sJJFI3RO`EC@UP+Tij7x;a;Vxej&G;3+!PI0lJfG5 zSD~ZfDs-}MB*HuXYg;s2t>o7i+>gQ#Z{Wa*dT?A^QDR4lhBwswaeifR8SHIKdB?U4 z-2T2L8s0}w7CX*1_>|>Xj&B8~8Q8wC5$O>XseI4)UI0C~ed3D%J$Ya4k$?Q_`7K+z z)m!_x2Vej2yB^>5;`32tyXondi7Sn-H#*sLeler zd&|de%u{NfC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 R0Vco%m;e)C0{`y>{sTnIEnENq literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/ASL/00080.dcm b/package/tests/integration/examples/ge_pcasl_basic/ASL/00080.dcm new file mode 100644 index 0000000000000000000000000000000000000000..c73b6b1f9d437a2470cdff7c9ac0b92fbfa8f1fc GIT binary patch literal 38966 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_basic/expected_output.json b/package/tests/integration/examples/ge_pcasl_basic/expected_output.json new file mode 100644 index 00000000..47931e56 --- /dev/null +++ b/package/tests/integration/examples/ge_pcasl_basic/expected_output.json @@ -0,0 +1,133 @@ +{ + "major_errors": { + "ArterialSpinLabelingType": [ + { + "Missing in files": [ + "asl_0.json" + ] + } + ] + }, + "major_errors_concise": { + "ArterialSpinLabelingType": [ + { + "Missing in files": [ + "asl_0.json" + ] + } + ] + }, + "errors": { + "RepetitionTimePreparation": [ + { + "Missing in files": [ + "asl_0.json" + ] + } + ] + }, + "errors_concise": { + "RepetitionTimePreparation": [ + { + "Missing in files": [ + "asl_0.json" + ] + } + ] + }, + "warnings": { + "m0_warning": [ + [ + "Warning: Cannot determine M0 preparation timing for ASL file '_asl.json' because neither 'RepetitionTimePreparation' nor 'RepetitionTime' is present, but TSV file '_aslcontext.tsv' contains m0scan." + ] + ] + }, + "warnings_concise": {}, + "basic_report": "ASL was acquired on a 3.0T GE MEDICAL SYSTEMS DISCOVERY MR750 scanner. Single-PLD labeling was performed with a 3D readout. Background suppression was applied using 4 pulses, with pulses at 1465ms, 2100ms, 2600ms, and 2880ms after the start of labeling. Images were acquired with TE = 10.53ms, an in-plane resolution of 1.875x1.875mm^2, 20 slices, a slice thickness of 4.0mm, and a flip angle of 111 degrees. In total, 1 control-label pair was acquired. M0 was acquired with the same readout and without background suppression.", + "extended_report": "ASL was acquired on a 3.0T GE MEDICAL SYSTEMS DISCOVERY MR750 scanner. Single-PLD labeling was performed with a 3D readout. Background suppression was applied using 4 pulses, with pulses at 1465ms, 2100ms, 2600ms, and 2880ms after the start of labeling. Images were acquired with TE = 10.53ms, an in-plane resolution of 1.875x1.875mm^2, 20 slices, a slice thickness of 4.0mm, and a flip angle of 111 degrees. In total, 1 control-label pair was acquired. M0 was acquired with the same readout and without background suppression.", + "nifti_slice_number": 20, + "major_errors_concise_text": "Missing in files for \"ArterialSpinLabelingType\": asl_0.json", + "errors_concise_text": "Missing in files for \"RepetitionTimePreparation\": asl_0.json", + "warnings_concise_text": "", + "inconsistencies": "", + "major_inconsistencies": "", + "warning_inconsistencies": "", + "m0_concise_error": "", + "m0_concise_warning": "Warning: Cannot determine M0 preparation timing for ASL file '_asl.json' because neither 'RepetitionTimePreparation' nor 'RepetitionTime' is present, but TSV file '_aslcontext.tsv' contains m0scan.", + "asl_parameters": [ + [ + "Magnetic Field Strength", + "3.0T" + ], + [ + "Manufacturer", + "GE MEDICAL SYSTEMS" + ], + [ + "Manufacturer's Model Name", + "DISCOVERY MR750" + ], + [ + "PLD Type", + "single-PLD" + ], + [ + "ASL Type", + "N/A" + ], + [ + "MR Acquisition Type", + "3D" + ], + [ + "Pulse Sequence Type", + "3D" + ], + [ + "Background Suppression Number of Pulses", + 4 + ], + [ + "Background Suppression Pulse Time", + "1465ms, 2100ms, 2600ms, and 2880ms" + ], + [ + "Background Suppression", + "with" + ], + [ + "Echo Time", + "10.528ms" + ], + [ + "Repetition Time", + "N/A" + ], + [ + "Flip Angle", + 111.0 + ], + [ + "In-plane Resolution", + "1.875x1.875mm^2" + ], + [ + "Slice Thickness", + "4.0mm" + ], + [ + "Total Acquired Pairs", + 1 + ] + ], + "m0_parameters": [ + [ + "M0 Type", + "Included" + ] + ], + "extended_parameters": [], + "missing_required_parameters": { + "RepetitionTimePreparation": "s" + } +} diff --git a/package/tests/integration/examples/ge_pcasl_basic/studyPar.json b/package/tests/integration/examples/ge_pcasl_basic/studyPar.json new file mode 100644 index 00000000..6beff48a --- /dev/null +++ b/package/tests/integration/examples/ge_pcasl_basic/studyPar.json @@ -0,0 +1,3 @@ +{"BackgroundSuppression":true, +"BackgroundSuppressionNumberPulses":4, +"BackgroundSuppressionPulseTime":[1.465,2.1,2.6,2.88]} diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00001.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00001.dcm new file mode 100644 index 0000000000000000000000000000000000000000..41d126956777d8add92882bb89e0a4fabeb44f1c GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00002.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00002.dcm new file mode 100644 index 0000000000000000000000000000000000000000..342e922979982d27d8bd94bc5f3b80d77eec707f GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFiBvUL5u2`q&7h_^kt@JCR;IxK`do~fQq81SR#1A3*NO-ctyOFQk3{)O0A-Nu!`c%2f_b2J$rU~X~3cs zU%uJe>GS`euh04V*XMMfGerO2Pr2&WV@P4PHcDr3jL`@+cZwrEBQYFjs~3`yHq-fx zo;Gw{&!@9#Bb~uNzEQsl5hX-eX?x%ovIQ9$NIh>_RxW26dfv9}yp=DQxvXL2OgnEI znQWnu&t?jl7$wloc`JGn{Tk?F9qP1~>cbLgr3-1av7Y>yHB@)nHD{+*ZM8M&PLNX> zqv?v(*0ngjj$D5=RsCkS>S;JLPH{LB)by&;)rM2+w7hEF@#Z?s_Dsc#)5I$fh*R>v zLLg2XsO%83dDGyyad6bBT^}POo6TnOaWVpB>qZ8-n;~U|)D^g{7}aqN$Eem^2Lf8X zf*bDCG=I)-SL%M87ErUAoFhk%oIHH+z5N4mTBKG(WT7W&%~5jv8kk**^2O9>wzYEA znQk=wcGcakZSi{7ZPoe+*{)gIf&QW1$>W-pE*w4_rz;XcE5`=MMYNEha@BX6dn(?X zR`+sQaW_h9{oO>Dju1Wn0-f29K^Ldi+Ls@5ahgR$etE1ImTeR;RIFSkoiR)dzKog4 zSeBkPO*5NM8vqAdc{`W3P2;ud$#~6r(hX1>yVJ$}oNZjzXzp!j5JRx z(xA4JneEi}b?TnxAHC|tb-nq%Hs3$g?;Y=NFYht4X}#;|W*4Krklx>E&R=;=|M-dd zp5~V?Lkr9E8hIr|t|Eg)RXU|gv{qzjW<-5!oj((&{EWBLbE=IbCDzX(%YE`SF-A#R zw_e;6w^>8%dF$ns8G^z2@M9!sPr$|VDsAPnd3jyC#ThfZd@VIRRvmZuEXHbz&Xr>& zj_$!kj~S}Q%-DWzzgQZc9tLMo|L6?G}8L|dmf(+j8CJ5Q(RLKWd7;teW7`^WVQ zk3Kb5O3_8i3sN`&?`_f(Gop6iR6RxSTM;2LbS&l$m9}#hbiV*QPtB79mk-uF$ zu^#>0qP(DQ5qE3otlN}Yg}M(bbrIA@BF?^DMTo2xl@cxA5fOi<^u(2lPm1muidjge z<4-y%I;C3qC?f7wN@R48QX->|NhMl)Zk1^5ld4vzPf3NbPV@ca{T@c_CE~SWUxG1x zsM~UE#M~!i)*!~zjht@kCXTjgr|8qFZ4sWLOV9``FHdircgeNLUZ`dLx?d8N?} z^aCndF#DoZYDCJ22P3>MMR*TIcn^oY((R=beL3vydl=qV!XCxpeN}n)enNa6-;tuP zDNkfi^entbBD}A!@WhpVBf|S;g!ioo@6ibF+Y#P(BE0WLc;Acgz8~TJAj11$g!iKe z@5d3|Y3VIJT^>_vY%)bZ38|lk)Xzfd=OOirkou)kg8Abi^{bG2BBXvDQojkQ-zp`Z zg1=Kr^zes}dQvJeGE($ZsOFC$^>j%6NviOu|8sxPaUhFE1}bfaKk=I0@FJDbO9FPFEnMjk5?IEIOp!kU+9!Ft6O zEVPio`?p?^)oE+lxfYuIOqk_pem+xkM1?yiv~BBo zjdF-Mn~aVw|8T@v9`gIo)~{9}gKbr?e$C~v^RhF@O04Wfb}_uG@rE{Rv{}N+KzL4~ z?609g|G7dAsTmsWS(NJ&#O+-adp)u0+c5mz^(r+7@7)cQRrhBE5w=n(sGL#>sHRez zpjt|amUl}vJZd(O7vcF4-X7_Rcg2Xza<9^mXnWrZJ-0$HzoUcrx6Ar)E}aPP9TDE; z5nlI2-o{~)e!Dyek{jt*MBEAKExlDY4%QFBY}g!XrQ-Q$WiyS*GekrTYuB^X`A@^a z8A^+5-8{5H8iP7-MePMEbg)WV%4YLmog{S7day z>=1%%C&`rkEh$U&E;fFXLnAGQ)=Db23gxKS2Oo$%Hi`Y@(oTeEqC82xA$=Nc?H|$$ zJGOw;EN18kZNcuv#r&%`8%=k{Yt}2KwgsbK)Dmj(s{=|4D6Lf`J(#iSd@kED#5c~M z5fPU_+=wd0Wa(UZt7J*^Ha6l9T0TpaT9}byrEghVFfZhqTDNms!~9y}Zf~XYhpvNY zD@}xSiFU^PnWf({uup=D;og*}94k9mUF#+`F}hKrN-X%z02>#*MD3W^TlKUOjcUVj z?r;t*$Eza;mquitg3lPaLwm-5z2MR+Rrfqpu!9tl&p<7YRKj_|NELNL#npL2jfd1~ zrAAQqdZ~tIt4n9E@a9S`oufSetdqr$pRU4NqdeKI?D>t-TgqdrR6$M`50&2%irO|* zlO8HxqM~BRR98w|)9_e#X?d&%ePv{9_^N^@?b7UX2hZAN9XxH9bzZh{g=p}9_!)1V z1j&NzOM7uY&PvN2%+1ouidUgsI{H%mzNj@f^z3wLL7pkXT)IJ)*NO7B=}LE|{2ong zUFUlTkD&HOS=&Ob@70eU=od|0?@YT#4<2ftJk~GfJ6F&54jk+sIpG{WR>aShdgsu= zBmG_T{cDR^z2oib9X=)ljcljfpYNUMPb0oK*FTQ7Z<1{%L>lsQW=C**c85FI=ZUPu z?+Ic(uuUurv`(Yhap^@6J0SW znP#oh-Py!z$nMswjZUqJ-~76*igVe(z*KKnVJ*kFgFT?wgS~ar@1NK*v8r_SQ_sBf z&Df1DX?L*0LkRl2NA@R1v{&&fj_1y}gI(U`@H%*MW;Of(C;!c~uGtwBGn$ds#Z&cF z)=6qQXx*!N7ukrtj!Rz%d-s2!Qh%1#rJ_CGMeg( zvOaZH(LkztCy2eeXksxpbxl!x9~5zCu1`>NFB)6GKYy426JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W kOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~ZrHwLItV*mgE literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00003.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00003.dcm new file mode 100644 index 0000000000000000000000000000000000000000..a3ff78df8dba575c5f1cec1ca25a0a81f63ba574 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00004.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00004.dcm new file mode 100644 index 0000000000000000000000000000000000000000..3491879f82511f30066ea2f7d43c5cc4ef95b4c1 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00006.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00006.dcm new file mode 100644 index 0000000000000000000000000000000000000000..d351ff0ba553b64f665b4264dfa6c1d4ea312eb2 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFiBvUL5u2`q&7j*boX@6C0j#g(lgl|nOnMNldO&m6EZ-o z+}K1hRw>IJv6KY@DvIK*RPcfqylcg~h?i1|5}!<|Rg@1_QM~ye_&=v-&rUB5Sd`++ zH(NV>{{Qp!IbZ+!obGdm=>PjESKWFHDa_VJ=?soB8lmP+al~gNhU0AYLNawr&)J4< z8itY69o^Jz{No$-s}NB{L|V@b{JfKwp;Fpr-p-l1tYuh^X=U(Vxnsg_qR2ie` zO1f=mae588{%WfF&2H7xaAut1a3-kfRi~?sQmxbSs`ZjL*J-wADqfr>UWP!NlK&L~ zaoRxT5+R#642~NIM}yk+F)|&;v2$@U1C=pM8@XE{l@6&Za9uH~;~I`pt+@^aw0Z?M zyj0WtIlo=0`*B)8&1xzgIeO&e;e+q)ABfW;wHhJ|BT;LPQpvA@*`+97OpRt+D_2X? zji%qOy4$raUhlfCS|1_XwX}Aif2eozxR%!QhY!c;ibT-LvB7Z>EhMO1_1)&4iZ`d# zy{sedMscmbo9NOJqUWBcGy5^<;?!FE(qk@8vxvwoj}8!2WriH<0Tegky zrCXNeKV&?wR$pNwVn(U)W+_1aX)7pmo=Ju8`?PLQ>}S6?s?tsR?C$} z*D%K^mYBu86?1#KGESpXjY0X<=|+jhX;M0)a1LBL-5JLi5b;7!S7zLCGL_EbGfsb% zdK2o^6C$`5cpTtfIN`f7PJdVDi}n-9vDFx*2_HX?cJqn?}0Z;Xc_LQq4K>b$0?u9=uXB$9bx7mA1iG;P#V;B zvYbwBU#ISA{?V&WT-TfLYxDg>{oe8Z_VOOf(T%QWSY3?zyuQEFoWJs#{_zv@JE!=D^(jwO01tnmiy#uVvLfsZoRlC zZnK8i^VZ8NGX;b5;m1hOo`8$zm7dNyIeA^X#ThfZd@VIRR!i>gS&Y>boh!#m9Ais< zlGhefv{rhuQ%cb~rD9MQgj70m-dm(6W<>3Qsd|duvm%Dj)_bKVvK)cBJ|f}<6(QnpRuR4ABY(SiVmLREQM4Wx6iV#^XDkWOJD4_^9pA_9Q6tj@j<4=@Q zbV{}IK}6iEl*s5lr9?&_l1jAp>?+aPM^&v*ACn4Wo#y+;`#p@a|y=up>C^` zLCga(W({I2!^|33PvDrbGAa7FYFmV-=o6}Kk;j8diJm?gQlC<1u6ah(ep+dC1N|8l zEtq{yDm5Zy#OEWtFGP3`MR*T~z2cq46n!!5?RyyBm%<*!;eA|4AI;4IRQomJ7JOzKJ zl<46PA@zh*Vq~P~$xzK7L+YuJ`jb@QQUB)%?@WaEmk94!=`B(IXE@??uc*;ESWj=4 zD+=rsbOY~L>=aA`I}EYPunjYBV&>-{jEs}RYA>5hJ7x|m5;&%XmBN~rXd(TwEu_&x z0`GIeaV_50qlEr74ZD!w&8}geAxar|7T(qu(l!(8Pa|V>wwbn#f{j8(&t#08Mp;Ch zO=icCe>mbS5BdFP>(_MN#QR0HbJ$N z5-snRYIxLaATPr6BfLG*6Yq)i@I4kS0yv52@6(p!3~ZXB#1g4wV+)Jnzk(aL5TlV^yC7}l<5sq>$LgEN#C z*SdLVg)|0r-iq1_R_I`rw3N-}!8%Fkp!HylBz6dL_ly>Ub&}|7ayVP;n5U8L~Be>RqtZsH#s!YVrZ?XVyjRk72B%b@}o)YCzp02L=)vn>J91BXlwtFUf8h( ztY$GoM`#OnFD~X^z1e8GGhVY^v9v8TCTj_`_|*Y%3n;BsB_o)zdM@j9O!18~Xhg&% z5I3SqFAJm#txbEpfNE()mNzL9~@7 zLb^yhWB$z2ZyDGpLB()yid2r3OITeS7B(@4S)@uV_{{(t7o$k+nAltOv?7ga!*T9# z4y}?`M-DEH$UenYjFCIEXZ+XmF0E2^&p`z{ND=uo)bdCroEMB#Q72SfohQ_INUc_C z1a+^KYIwG~boL5wuISP^%Ja`US@`hjD!etylikXmUoX9-Jhn;|X=3X- z-#d5&wKvMz7HWO3e)K@UU>Qbd+C6&kQ2XSuej(SndcJqyVE@R8(&1x;T;4J|hYlX; z@0#ylTX2kyx2t#fm<%+XPPsqdJJFv;d||GC9Btnu+fIlykL zH3PKnSG|jD#9qgx&xXARZz;O;ko3xknD4){U`_Q3=G6WI7L&%*l?CyApn!~~`l4)1 zT~#oVs?iBzuP#_v%uQWW5Z?zy+?neW)ZB~47Vys>Ccp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C i0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>Nfc_00dQltz literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00007.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00007.dcm new file mode 100644 index 0000000000000000000000000000000000000000..e576ba7f2112b2ff157a5c795dbed1817b6e678e GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbGFxkK|gBH~>No|6r>F(*dB{gI^J(JymxuttH$?C{3Ap^w9 zjZG9|m9ktE#8MUrs3?lJQo##e@U9i_B3?=r879jXoQ+O#Sx#87>={mi^$Y1J#QPj zX&6Rc&*-LZ;~(FsUxkPgBGP(x;1@Cl87gHulh0+%OfHu<&4QiFS{cJiXAIL!+ZoG3 zrJXVCTslSxv~&K7o0QyHV_ zO1f=mae588{%WfF&2H7xaAut1a3-ngRi~>Br`BnC)w<)&b(-y&iWjHJmmv_RA!PIV!EwXjXi&R8MrJ0HvGZ{<1C=#Q8@XE{l@6(^a9uH~;~I`ptvLY#TD^iB z?$k7Y&Tm)hew-FivznYEM~|F5eDIz9194iURzqZABx=o3a{L;YU54@{)M&P~a@Cn` zH2rqf-KK5!dN*v*`Uu&krL_b7L%oy7wX|M1d^k>5C4yFt4UUUwAwlJ;?>6^Tyg9Az z4Tr{QN;;!(4qP_f8OIn9@j_2mX54Wyl`h~jPJfkp zBkI)?BDfcL9N=DL!gphw{;tj!?I)09t1(K)-?m>%kcNC?WTI3G#;rC%`%xODxr(nP zQ7=ZbS5IP|2)EH}RFar0uCI~rw7cR;JC(8*6#Q1zb810(m!G5!^6YduNtqydVGCqyc?Xo1=yGzyH18SELv^!=UY{MFa>kDr+DX@2<% zw6Hv{kyk?GDl%A9rBkXzYej~ZE$Ukn{!ExP z(Z$LOQaA$dP0|xHqV~Y{dWzn)B8Je`yQL?x9D%wqBH|_$A>waU5xwLif4gLI9s0RV zc|qSI?)K1GcPOCRG$z8LoQJq+(lVUObQzO20aKO#Pl?MTsAlqa$$ zdIsJj5#Co_UP!yM}#+DCOW;cw1jYTd}v%jjYw#YT7mmHVT%W%^G=)a)>yG z%#I=daKu?2^83%$ujzt~ZB?*-&E>K4%G$_Etn5X0F}$nshBmWkvxJp_@SH^1UxSQf z|G7dAshJw>S(NJ&#O+-ad%d$U3f2$5cfCr@!FzW-Wz_u{K}1%m6jV;B1XNS0jZiJ6 zM9aIS8Xh(4$&2v(2yc({#JgfdX1P~sNVL6gg`QiXm*3Gr{F`NcIG0X@_m&9n$_TIf z0&l}GNxxm51IZ0^EF$iN^p@VL8wTr#U^Z+DwNmkXw6clDinnR;0&e3 zwQd?(A&o(uzoPcS6*^cYEoHN5uuc*>XgydXi5-I6J)^~7oh1628qO9w=4oU*HP|5p z*-nuq`&&|J)w|gEO%08-7+Nc-*eaBxVjsNw@*hoMKe@CMA(|{tQEy0}MqB%b^umtK zU^R;wIzpSVdvP)U>di*eo$;FWiluF)F^8DjC6y)$_Sb#}wZyQLrbOjf*}>}Cu&{|S%o0^%!EXlGxELjB$Hd;Mr6{hbT*;+#mFJ&zviRZCRd{QZC%ctBzfO8fd2Ep?$mx=y@*6`@TZd}& zq4K3FDuzrArNlK2k9C)p$9mA0En~x16+CH|W}iEF)-LPdX}hfRvW=@mga58%3G%^-I?+`G_iG^ z?;SjX+M8u<3$?yiKYE~Fv<#y&?H)aNsD1KSznJe_JKsBSuz%!)bNE;>U$BhMp@T>I zyXO1X7c)l3+toXKOa_{nPPsqdJJFv;d~vRS9Btns+fIlySQcoVMziD6`{bD$QCqFJ9sGB9RXxAmtyT6^YAZE*xV|l#zQQ_5 z%>b?YRqrAjvDb0wvtjSS_mo_ENP1;N%=h13w6^z(=Jx$XEGCWZR~N6-WO$K z`!z)@o6tuPdu`FeVs86&Me%)5#GSb@LCw8rYytoLVFFBm2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G iCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1nA$-6j68p literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00008.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00008.dcm new file mode 100644 index 0000000000000000000000000000000000000000..3155b24fd985ee8ca5f5bcec840c02c1f5e3debb GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00009.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00009.dcm new file mode 100644 index 0000000000000000000000000000000000000000..d9450dc5554032f18ecf556ad317479ce9ac7456 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tee>gVRi${3|dsjWNQ;NLto~ats&Ftne2|tE#0$8R!4>j86Z|} zY@!⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00010.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00010.dcm new file mode 100644 index 0000000000000000000000000000000000000000..a9e39534a03a15e3effb29ded36a557ccd736021 GIT binary patch literal 38844 zcmeI0TaX-88OOh!tee>w!ej%>3{q6bB(+I2Lto~ats&Ftne2|4Te@eHtd0y5GC-`{ z*hDc_Da%a|OIaYGqA1=<1uuBP`z7Ta@lr~q#3xf~73G6fDc*b#{GZdaXQ!72EK2d^ zo2{Kb|Nr^=oUeaoDo!ne6lSW!bPmS|4N+sKIN~!D!EvT?DH%yKnM>(O zL)Z0OGMzM%Dg5Ib^(zojM1+;h^!x+B2>dQ9H(ky3j$_ZFajiZqa%O*{)gI!QSESsS}!&%pW-trK@9pE64lC1+);OQpIx`d&};uR&%py zaW{%sI3PZZj933)%l|R7;KtiqqISaZj8^ z6|onslUHU41{cGRkf1#d7tgDtl}qR3b?p&nOz-lv#Nb%9ojo%cs|mVLj+H3Jmi)wT zC?;sF^kk=$pfRN)P?rQ$T&W7`5>kn_&TOLRPq%iSNzkP#!b8OCRD|}Ao8})sJ6lZ9 z<;wF@I12C0(i1bH`p{%8LGNA`Lul(g(i2$@LERJ*akGjL@wcgnZv3&oZ5>~Se(q47 z-?xanGjP^jO07WM`<1#J>H{HX->o7;#=w zt$Yv>_bVkbdO#_W(TAiGtv$O!wDwU|E7ZrN!dR!d-iclpBlZgMTFG32F@3nxv@?i# zNXD!|jHw%09m@zDGiD}1A6IRQ@C1EAwJq{^SSiudCj;tJ>ddk8qW05DqZ{bYsA$3L zb5f}hDI-1~;(Z~+dnCkrH0TxYE+*)UL2v(~@V*rEC<^b(%6sr5;`79g1bsz$B736q z@E!~CzPij4SNgRO@9QDnH$uF}L%eT>c;5=~z8&IyC&c@1i1)n^@B1O%4??^jhInVB zxA=7Vu~H)w3HnJu{WPF{7EnJAs9yxsFO?F^p9rX51=N!P_3ME8O+futDe)Biol>HQ zKLpfMQi+j~ptFIRKL*s(0re-Tf}{S=A>O$V?=K|3$UKvE>{#L z-hw*bv6ikII(8Uhm66hoyn&gYgU~bS99DbToRv0mSdqXnOso{vyhIDu%eG*lg&5xF zgyUMguZIc!YZ`VT{+nIHK0}st4eRfccNuLnu>RCDW_z2FN}-TyZ_|^RjGoPBab6ZN ztI25V@()LNE;9VjR91L4`RlDCFb z2FT4o?cN2sLP2TYg4peeC+YgZH?Lc++IaJ>r?k35Lx{*Im4M1B6@zLhwGpbRlxTU6 zRDmb@f;{jcy zoe^((@z)IOl%OKGH$^H%N;cNl_$>v`N~1{Si2thrwk~>+S`o3k>S{$A)&}F8!5o^l zTSE>G4aq*mRg91`uxtF+^A4?0b~v^eo+-i{x>=UTM0wj(xiejQrzSS9bKOHn zQG1K5ZKBq5YsU`u3Z|~Nr<`Ml4!2Gn?-g?G>*l%#5A}|ow2vGw|wJ-7fX!x+i;6h%e0cPN3~uW!o{4hWwn{;UCZMaQZtvk(KyGL97S1 ziDiM-t~c5ay-%LG5w(@F)5d>iSH<;Oooab+xw>4Vr@Lgl7#-MmLoZ03g5EdXsFpiB z8+Z+6I<-o@U2Wi3zfQAk@9rCz>a7Z_r5LBb3lzJsH*Ng=lbgp^6t6q`%-i08{pg~0 z`g=TtpuY!Xe_}+tWv^_z&a~6t=UoM_jVEVX!%uMX-%RRSCWT^3Gm^S^s=mTHNlgc> z2UYJP8?oDQ=(9oZ;oFN2JtDmlBIbJUD43Jof-!lZfaRnNfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C f0!)AjFaajO1egF5U;<2l2`~XBzyz286QF+sMZZv? literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00011.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00011.dcm new file mode 100644 index 0000000000000000000000000000000000000000..5187320daa31281293636b8ceccc46f6968a2f27 GIT binary patch literal 38838 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 bzyz286JP>NfC(@GCcp%k025#WOo09kVrful literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00012.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00012.dcm new file mode 100644 index 0000000000000000000000000000000000000000..efbd39eb40245e44791aa2882e5fed69b43577e4 GIT binary patch literal 38838 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 aCcp%k025#WOn?b60Vco%m;e)C0`zYM*--ER literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00013.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00013.dcm new file mode 100644 index 0000000000000000000000000000000000000000..babcf93af960430e4d43b6ee09531cca2bbfb7d3 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00014.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00014.dcm new file mode 100644 index 0000000000000000000000000000000000000000..8c302454cce5c4a1a28eae392af8025019544639 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFiBvUL5u2`q&7h_^kptR*%~sPp2_aW+|oUpWOZaRAp^w9 zjZF|^m9ktE#8MUrs3?lJQo##e@UE5ej(91hDDlaZT1EL_6~&tmg8y@R_U!c1fJG_3 ze6zLF=l?%npY!#v&*?sAi2lEya@DQJkiu+jl+NN9qY-NE6i0kUVmQuLFD4^xrtOTL zHgsLL)7i9<&fp*4s9%MM5+ba0Zr~TP1sN)(W#sY&-Lea|sTXp(VcV8z6*7f_q1$;q zpRo+nD41r95@_dw6+MZ54fL@Nb=r&dVTrWTg>)uH>&c&4Lv^QJb9QRgR$G(q1UZ#4 znyy%FU5nFe$n{rK)o*sIo`y5y6o)fGO|Lp#Z8)_~%d6HMZ?4m9&s4lPO}q?&I3@op z1md)T$_^o$Hw=y&2S=US^)WKC*=)v+lMyJO%pi9&q^ywIkL!w29oKN2YRz>Zpw%n5 z;Z9BS=lpi1?#F2XHLJ-vdhF<_BZuDAKNzP)YBfX_dZN}GCC9IU+2tr-N{wb)D_5QA zM$>Os-R;^IuXn>%t&foHnx!4=AMTwxp;_s|kt1>1p9oqxJ~%F-g#?wWzT4bW@#eI; zm(Pm3QCjQoCc1ot=(*?V>;VkAIJMTk^q7m&EF$dXv0_*`qky4e8zTdyQZR0{b#wrwQJSmx zS`zhQG<)?V=813{%|<1Ox#Id7`A)kluC!ArdqKf(RXwK`ly~__+9=Pq%1PQROAWNx zqB2^{ptOL}C}B!vlXMfxm~FTqQFF7b5zoCO-6G=+xVNITnhZ0a&YSqoC+WR-@*w+} zB)t#M7I7U(x=qGgDBUhgqP@FR?LF{D2`$4tJygCIBeL)ECkRI?eg3uI-;VIp5R# z@)c-dd0r#0gveE7u&7F>Rf*P$49$$FZ>{rZ;$+WwJ3Xh`NK#_`EVA4uUlU`Lq;>1X zJ#m{g#9pvoUYQ{nTnIl#g7ySlJg?H0owen4?G|Uu?DDnL@K|-+-Ln|0DLP+{l{m(h z{3Nd{rD(16WT%v(bxOscE()onQdQKYq!MkN*-X!$ZtpykqKj38kBHZ)2<;y?Ed)bz?-tO)5gf->M>d$w&Tn>BM^U zbDQ#lzD3;ap|kE#Y8C1}pwuN$AB;HrP8A`tT2xB3d{;#L-O>|RDn2Q?XDDVNnT|i< zr0BG2BHTY zlS9k{GG+~8Ox?)qrf%YxGjl2Wglb!ar|6TaZIQ==N{OC66;hv8XHGmLYCoeix`Fg!ioo@7odHcOty+MtI+g@V+16{UE~oVTAXi z2=9#amYyy@R%&cAML!9tpN7=WLh9!s^^1`DrBZ_VV%dj}(DL+H7zjn!V>wz7te6$u=}#7be!OSE9UYzr1z zNZ@@=IIhL}dX&(=rePNnyxBGEGh`{FVf|h9FQ#n<)}MOL>})eK85A-dBb&CYf{C;8 zh&Y#wjxPUjgy$i@|7`t=trE6X!TL3CW9OC2AS^j6(CSU&`_VRNXJisz%1%`_&@5D_t~UC&YHKLrP8 zC@rpa^Uw-u4C;avwHK|>!76Dfo6UoDlF&ix!5T^I5ajL|Ee7i((bwc~w%9RGBiqTr z4k5^Pl1$m(lCo6qV&gYCG}2;dt)yaoC`ZNaKXSb@iT&i#PK0QpJW0JFeFkkE7}5(n zwt&?v)}14?1-lm)^RM1)G~F4mS+AJd78;Yagj)RSfVc&e)~b>o%-FP@&vp#)jWcLO z#3c|nqDnDYIv?IDSrWaCjrfQYEuW)GEzC%)^zFR41@l6bu{pA~hWWL`-QG$U4qXS) zR+VsxWKm00kb0X8mriP|x-x9Vvn8r6p5 z+~FKrj#ozxE{(`O#Z`=vJG5u~*Yhr|QgzQk1v^L)`83q>NF|&Xj8su4R9u}W)Obj( zR%!%wua#I4do8FgHspD_((i>DY_)`-0Zo(6iH}1$m|jbLl2o7VkKB+jONnQ+}r= zwyyKNLq}12v#f2Q*7xei4)%+tu6L&0V}}m6PaW?U?anpxy@QAPM^8FOju-8Msdo+^ zI@;eg-@mSy)jQs<-jU-n(8zYm{rTR>{xsr?bNv%&`xe=DLZl%-XLkh0XLh)QeV)il z{GK4z1KY&1KBrOrU_ zooUu8-JMOmhH~9{wb7|H@ta?_RdKEu7?|qqDy-!gcd!Q(d$2ce`u*cuCRUZMdGhJE zzY)99CG8G&cnCp%_sRami1sRe#qr!3cd*O55?%*S&a8$X;N-uV*0o#)#f)a8b@5bv zg>{me4qErC-bFTIujA6^!rp`LExGiN^vZ~s@4usHPW6h$)PW)vlls(EMe%*Gh>WKC zqO4C{T{MuY-U(u_DVkW!O6E*@XsG6zyz286JP>NfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k l025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l{tY%?P}l$f literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00015.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00015.dcm new file mode 100644 index 0000000000000000000000000000000000000000..1a84178ef797cb210b7444d81a629f92502255ac GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00016.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00016.dcm new file mode 100644 index 0000000000000000000000000000000000000000..0da834f9dc3d154b977343d86a6d0b03bba6abb6 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00017.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00017.dcm new file mode 100644 index 0000000000000000000000000000000000000000..2c1824663ee5ed0192f90007fc7491f40d3ebedb GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxkK|gBH~>No|5==%B-Es*tTWn4I`hipmL^Vnzn7^?W~#0 zn5Ll@3>)nv(9U@)dJ_E_sGC5Y_F{cxL|W-W+KSOS@@Lji-D%gHom#ck)}%X0PGyXy zE19;g#pyNV`m3qxH@j6&!Uxq-OlK&L~ zaavDhhmg%12FDG9qfYJm7#Z1Y*2>4p2$ZcG7IHU3Dicyy;JRW|$2A&H2>CQODfQT1*x-#RAlc970pK8zTdyQZR0{3EGd+D9u%T zEs1(Dn!S1w^F+9fW}}kCTycGke5c(NSK6tRy`bQ?s-9B|%Dem|ZIEYY%1PQJOAWNx zqB2^vP+CA~lrW{TNxA`L%r;z*sJT(ri059CZj$i^+?!EaO@^6E=S+O(l5`86Jji|~ zN$<{!Q4#C5&-zBb=K)bAbdZ!7OHvuVBS>1G$BzL4JEY0h7HP5=0b`JU#N zFGCB<^BQ?2M6M!(MO8YbO0-sFXj-DaHQ~?1DL>=w^qguVNr`o{$a0^2O^i{JCf132 z;x=oDJ#U@7GD9#pAAXDk?Mb+JUZpenY+hd1ZgIxUE?-Lxk5$LrJ&UoLqI2a~iDPWZ zPx9JQiq=X`c1kIlP$~v>K}aQ)s-i9>m1yhqCVKuN-(FAAdsf5{+Ip|_M3y5^*GEL$pdv*4%_^doeE4q{Pp(5h zw<<5_Tg2TKI_q|&R-x_#N?io?!HBc(P!S@lMWsZ`cSgkDB|UMa;*+Aghhi3z>G%^) zicYCkK7@#SloA=;tCYy-!%~UXo?Rtc`f=&jtkZn|c)y1cdx?0h*q2~TAL_Oo z8!`9Gm^Fwobt9*nx{0H0+9~>kYFmV-=##2#k;el{iJm?cQlD05rk)YCpHUj!Kz~+6 z3ud2}N{vVv@r4NQixJ*~5#B>#uXIN#MPCYg`yPV#<*-L_cwbT8eIFH{$9AOXtI8AE z6Fmd(;Rx?*D?D+fUyty<5#fC^!h0mbdo;rPR)qKM2=6-)-ghIs??rgukMMpF;r%ee zJ1xDXr^}C&8kNiS>r{Hgu z5i-*;NB zMPcGCsN)@*(RD+|4nwRmEZry=nE81K-OlE*+RNoLStE}X2^_=3N@2}Qw2*n(7BXld zf%iG#xEAm0Q9}QkhFwVTX4kOKkfof4^>^97khU6Ff9kf`*=kr83RVY8gG{Di;;bAZ z&L*Ry%Re09dC2cSTfb%s7PeKv`Zbrw&dautl~~z}>|%IV;|*=tXtRWsf$*F}*VT3M!{m0;;LhMyQrj zqUGIE4Ud}jQn@(d9X!`k&Mb^cRuaE8+2 zS~m@?kj9|STTy$#3LUJHma^G2SSJY`v>vRH#1293p3!2kP7-}h4QGoT^E9%Z8tf2) zY^TVS{Vl1C>RoL7riMmZ46T(^tPka=*oPnelQV_=xd-fT488LwHdnA&C8C$~qTHgGoGydy&msY8|=b(Zeq=sI6Aq4*t8ls-EBO)+&1{wUrt@-7e$B=)kTUdQoZ%dhblL zR_X3+;x%M<>(xf5*2Hgq-B!i9Y+zujx2v$0W8A?WQ0&3pyzzIBZ=PILy86kd-~LAI zMwhfZ*x?}r{oO136C>KI_!Y-j?~Ag& z{i>pYRP{~}dv(#oVs862Me%)5#GSc5LCw8rYytoLVFFBm2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G iCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1nA$=*HLi* literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00018.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00018.dcm new file mode 100644 index 0000000000000000000000000000000000000000..7d2e9c6166072319f904dff14a2e9133ab706084 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00019.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00019.dcm new file mode 100644 index 0000000000000000000000000000000000000000..f98e9925962131b92788a343ee4124df5c13c894 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxiAoDo!ne6lSZ#bQZ@54N+rC9Pt^7;5b{^Kt|F`=2Cjn z&~-hROec+G3jg><{VGHh5n&}WeLtVh%TOsZSu=0yddASRnS4H(Lj)<8Qkw6lIiPoiH@H-dQ9HVMu3$La z;%*ezdb^3P7$SQ91vo|C@j_3RXPi+ol*UxfkJ4YI z-i&(ngz)bL9tXG=>EPWMrN685Mf)-2*sKrJ@ptUkVx%G82pK39{c)>}(SDSMX|C*P zany^^?AGF#C&H~a>g71*isNbI*{zPa(ssGz`US69aqX&K-sQzkq zE78L8yhdIzk*mmHQI$@q60H>(nkiA=9P?(Pl$&v@;_eEZb+=NhQ1=0)E`|DF$l3R(2$9vIQljO1L*nm~p14x+NznZRF$?iz^l3Xm zr&KE+Lc{|~iHsgpN@Vn5sYGkftrD$$Ow|hYaj7uYX})*7*TsmvT)b8?mt#yH>NM>P zVjh+;YY=1VMpid<6UU61Nzf-$+af$cpHyv&JRVU>^z^BK`m{Rpl5?W=GfJZy=+CNX z!R+%=sSzn7z7XPlF~oZ`#Ct6074In~=u1Iw-(&E;9P}s(?<>lC=%eEEKDbyeC4uZ-sc@4)MMd;(a&7`(B9m{Sfa5A>I!|ydQ;l zr=_>_bosGTBNGYwNkIKHpneumKM$y11k^8;63m|rs9y!tQvvnsfci~9{Z=XQ6#Si1 zqK7{O)YDRlk&&P?fto)C)H4C~C#iy?{?8%a*%0q9A>MP+TcZ5WV8rQeQKJj6p57r> z6eiw+I^MAswg@_Q7-E%?(v7@wd)b_oHgZ^zz%fj$6xO^<3)U;PV4;N= z-sgnlTD-4^3H@stb|L3P)dS(NJ&l=d!)z23zb1sez7yKcE^hU| z$lEkX(rcCGKyniu3yC`+y`{J6rvCcDpAB0At(094t!$wYd4`CHVC{OII{z6sI74Z1 zty>0GNFz||SJYm-Li?+vrEIqJ*GWSAt@~>vu|tr%XSC?AlSE$=gV|!oJdJE8`a1+a z+X*sde@n_zy^D?C#K1_4ptYik^`LAOyYH$CrY5kTT-u2cjh7~PFv$!=xOZ;;+n9^0hybGmGx{N_N^_JNw@ zK>2bN6+x!DQsSBh$GStyW8Lp7C1ZnEm?dWBs3`uXmGgS{gs?8CiSH<;Oooabcxw=xLr@Ljm7#-MkLoZ65g5EpR zsFpiZ4ZMajom!>dt~T(SU#D5Nuk0I`>a7Z_hg9z(8?o1M=yO5ukvobGJu1BtBIbMVESQtsf-$+jfW@Rfd2K;_A1ENB$(|_d zlh+jtq^h_5*y{@>7ITv~6vX#I5qI|H7&Z2yu?76|hY2tNCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% jm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286QF+syxdRw literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00020.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00020.dcm new file mode 100644 index 0000000000000000000000000000000000000000..4265b0d473fa2cc25185ddbf62ebe709790747a0 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00021.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00021.dcm new file mode 100644 index 0000000000000000000000000000000000000000..62c55ba48248493dedc7423dc65f91e0374833ce GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00022.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00022.dcm new file mode 100644 index 0000000000000000000000000000000000000000..0d322018ae000c3e841133626a2d598d8f26806f GIT binary patch literal 38842 zcmeI0TaX-88OOh!tee>gVX_I!Oth$uNoo@`lfKO@TSKO|XR`!a|2aK-c6w>Rq7+}g z+1lyz|DUhV`TE!Abe}Us|KCrs>{cU4VYV_%=WvYB5Y?x|5uc$5jDz4!KRqA6PpjAt_;Z8;K z=Db#^>P2Y*HEYN@cKq1sqle$qI~1iwYScs)daP0(CdaFQ*`+97LbZBJE0&$*&TP zMPjqKw_S{(Ia zG&iep%oE|(>a|iFbH(*E@|;#jTxq*hZ2ASSQEoaFzr4qb(`I?LRgBYCS*oGM1{Kkw zjnV>2!-Of7iqnlKW47UfM9odIMm+c8bhC^%;NF7L8ZyjGGGpR96Q^78r9 z7I7VMx?RRwDBU4TqP@FS?Y;1Z2`$4tGf=({0~NxqK+_gkdJBEDJTtU7n!Mc zxgLo65@T+AGeO+2d)6!LjPNduK6L6Lf(bD^ZLs`H5dw zNYFaz$xbOjV@gG!E()l)Qf1U7q!MkN-AXTs`xLi@)J3y(cDS4hys z%JWk=2Jdas6EmXn;AAyH?_Ci?XzP8_6Il*H-4GISqlysmx2TA2{L#N%GQJ-D+^#&o zZxMG#;H*29T7|j~D0MN^2Sd)jOGSvR7L^h$-yITvkMzWqicf;>9f(`w7oN$L!k9Go7GMsJ2CTf#I?}3ks&*Qrj^i}1F?1`R* z_h^XswH2PY(yxbj-w5%(8R9(_;(aT``*w);oe=N4A>Q{wyzhs2KM3)D7~=gX#5*g! zrKih}l^U5y&`$#Drvde|fckkr{UV@#sgz*;ctHIspq>b*UkB800_wL)iKpQ2loCDs zA)ua=N{oyIJr$_=V?aF}P=AstIO_i#;++fe{u1InC%q-g{|rW)?G`jTAM5E|az$a{ zEvVxiYw5b7V}~JD8MbcZ49xs2gq}`ivD(XIt(1|)iUf{fVx_S5Wm>Rau>}h)#PB{R z9M|D}Jxu6d)36Ki-|QOp8KPvG8rI)MZzJt6u>RE3W_yQW+bGy=JCn4moQbnCh&Ydo zwl4p0gx5rV|JnN0%Guaf`RmtA7CW!BjjY7VUSt=+yBcq3BaJo-SQ!YQCTfOwUWm6(dg5I%B(vPFG$h(SutLwR(97>=KmKxAAIzm4;=Mh@yCTHvyvW-; zNYZN+=Rk5Zod}6LCB3D$>gN9X!JiFV1Fe*r9$MK-Bk~Lp5y9GZwL1T4I55`>p$HB(Xz~yJxiMuaiVy6NA}e$2^T}C;B@CKidg1 zWq(V`QoW0f-^9R3i=efFiuIrz6?@?F{L}>YlS?}hqVeJcbqDlWv~_SmFYMk1RxdTCdgJnP$COGPP|qB5Mh?_|*Y%3n;BqCEcH~$!sRoHpDm1pdk?#L)?%m zMP%s$c&lVd^fof&Ax^ZsT9q1@kyzmb@r;{jcu zsfahT^jik@Nl+2on*tRhMF*>E-NYtFHwsjW_`exoz4X8Cr4WaJ! zQVq^lm(E+^%@tfaUwPi@)A^5_EyG)@JlU=6`Hj+B%454!eomJRl;0AF+A&a*94PNp zQ4wUSDdX}1t%sb~)#HbHc~jTh)9&%ZM_Q*(^zzyEHS^s=hkM6PIY&?AvpG|5A31!iw`ab0 zT|T9^n|r!PPsl(c)h_ntyQg~7h|kaUPNMCbW!o{4hWwn{?H`}r?e_P1A}jHGf>;mi z5X%CsU8}cUdcQn#3u?Ua&MJJoWnU8&CU+QUEUS&+IVuNH2eT3|IMVXrEL^#%}DCvsroAGBsCqh z9#FlDY{Xv2rOySuhi)yn^sw}bh?wuaD{oGA^Ty=CJQkDsNfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l f2`~XBzyz286JP>NfC(@GCcp%k025#WOo09kl+;im literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00023.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00023.dcm new file mode 100644 index 0000000000000000000000000000000000000000..980c9b8a832e117ef21ef0f6807d8431a0340897 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00024.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00024.dcm new file mode 100644 index 0000000000000000000000000000000000000000..b035d911b1419c4d0f98f08da5341c12a02fea05 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tee>gVX}c`1}UmzlG+5#(6_l|Ysk#@Om;`+mhRakD+7}W86Z|} zY@!⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00025.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00025.dcm new file mode 100644 index 0000000000000000000000000000000000000000..722923198ad1c018599cd4b2b692d5254af9bd74 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00026.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00026.dcm new file mode 100644 index 0000000000000000000000000000000000000000..c31600c3998dc763424745359fe16cee0b627581 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00027.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00027.dcm new file mode 100644 index 0000000000000000000000000000000000000000..dfb04a0d4f9e6aa3dcf69c6a720c2e3111b75df3 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00028.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00028.dcm new file mode 100644 index 0000000000000000000000000000000000000000..c87113962eb7de10097a8041f75c66d4a727fa6b GIT binary patch literal 38842 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⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00030.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00030.dcm new file mode 100644 index 0000000000000000000000000000000000000000..bd146628e52a3fdee7cbb85553e6ab1a92425556 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00031.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00031.dcm new file mode 100644 index 0000000000000000000000000000000000000000..aff1c00f9511df80f50f0b86f3663412f61e3600 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00032.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00032.dcm new file mode 100644 index 0000000000000000000000000000000000000000..b8b46219b025fd59539244a07e88051fb8fe2a5f GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00033.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00033.dcm new file mode 100644 index 0000000000000000000000000000000000000000..37d8ef7ff47cac77f6ecb30335b5691aa4b0fdea GIT binary patch literal 38842 zcmeI0TaX-88OOh!tee>gVX}c`1}&;%vb71Cp>K1`){vR)ne2|tE#0$8R!4>j86Z|} zY@!⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00035.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00035.dcm new file mode 100644 index 0000000000000000000000000000000000000000..b9933383443d40e3f71a76646fc4bd8a7f68badf GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00036.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00036.dcm new file mode 100644 index 0000000000000000000000000000000000000000..47bc45148f0bf6aae073181a0417bc18faf8b51b GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00037.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00037.dcm new file mode 100644 index 0000000000000000000000000000000000000000..02134acba4470bec24876b498357d967dcd185a6 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00039.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00039.dcm new file mode 100644 index 0000000000000000000000000000000000000000..d00a0f7c4de277c0d0b5daff260aeb50ab569f23 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxkK|gBH~>No|5==*#q6k{U9dp2_aW+|oUpWOZbikO5-l z#wLofN?9%fVj&9zR21))3SRJncdd9A@lr}r;*%*aMfqSA#hVX;|8siw?DW!rMJc{~ zv$fOb|36=!^YyRK={{$O{=c7c)vd>n!fb7n&fplM5o+!fM|?(NIL=ltBqMF6^BFyD z=(?Uy+i4@6!9TuHzX}m0L|EzUz%SSZ87ie^>t-gGu`SEU+P1D2vUzA-&!Hk~<#Kwq zV44LhMhUcY-in??zXtl4K%MqNeOMx`bRnII(K_;H)==GP*PNYNwbj<7J4sGujHWAA zTi4?BDsuhRRP~$Ps;A-1IK|;iQq!wWR~t^P)AFiy$D8Xk+cOm}PLnS|AWq5u3V}GS zr?NxH=5>SPhQU#%c72Qt+qN_LI2nP;>P7~+n;~U|)D^g{7}aqN$Eenv00FID!3}q6 znm^~aD|J6k3#eI5&XJ=>P98q^&i;WoEmEr?vd|N?<|sLS4a_b@`C@7`+giEmOgEZ- zyXtP!HhaD6wrG8XY|||5K>twhO#&e>c&kBSg_Ql6soMsV`Umh!ll{E?&DpoF&&KM>JU&hR2EK5(D zrfKKX2Ec(yW7S6oNZjzXzp!j5JzPeCLw%9z1!F{Y;W> z!LvnNN0M%p@fJ$A$&zUAE>(LEyivjf2=1w&^1Ud>sgTR2?W~D9!puQFrj@awG^lN4 z+MU|IPTkY|qgS1{t~cM;=KF{Gz2p6DHVGN{FT@AkDr+DX@2=K zw6Hv{kyk?GDl%A9rBkXzYej};M%1?^{FylAXS|)BQ*9(Ev2GSw?vt;HF-p?JI&n|j zW(~3Dt&>+~2nOfFkCC7~2^Y_+w3WB>^1615GiG-AT55Q#I_~aSjMWsKE5}M4V@rOL z*OpSWR(i5iO3{Q;F{ledDydWzbt$PtTcwaV5xwNYf4z8e9s0Rd zc|qSI?zYfbw=1;@b?;N^BB(ne&c0Jch^!Ws5-r~q5r4Pz#FdIqitZVTSxBbik2@(k zrCNDEBJNd6WOScWBBKvTC0cuCm1yn5s#d6vNQJRZ^Zn!f9!BgX;PpUI>Pm9`5DUEKRKdqt# zv(HMUMx>1RT!i=e2=BoN@1d|)y0es`FND2)55fCl*rPbSFDdW-4~fsCJ5uyz<%#Tx zo`&~ug!h#dp19JlMtEO~@V*}5Jrd!4Bf|S;g!ioo@7odHcOty+MtI+g@V+16{UE|S zExo0u%a4>An@Z7-L+U3X_0y30SxEgnq<*24VE$-G{W7E;3#ng))UQM8H%f`8;BS=@ zJ^VhT9+ygtj1)Z)s`*1mJsDDelqx*x{}kb!iSYg$;XNb0CCdK{N1X1JG&%?C>1}dF zVd5>Q;~i`1x}jr-Ayyd~-6$BC`FRLEYv-}r%jGTG$YVtU$1t%{So0z+STEUvg%%Qc zpA(L2@xC4<^si~yg#>SQ4f_mHvI-j3-(~+o+G=3^sb|g3RwI)^A=BAv=F{1%p4TXc zh_lJ)=<*LowB#Yb|7`tg6*AaX1?$&b9y_mW23d)fy~r+xcQxM7Miy4|s6h|F@Y(vWC--wHjqLNC9ggZMYg`fx6t2=6Ts-sKTq z_j%riVUm8kJO`2+=vYMD3F$4pRW}UQ55a8M6l$g7`DkSmjma}aL=0=!v())d!oe9z zi)-C9v_cw#I&Veo1uJy0N?OWh(_oz>bkKURMiM&&xqC*7!8%FwH8q?qcFfbrc51Lg z2(q0bQ}(x{EY-W%_)QIsv=~||sn{x%qhedtzx{9u`^lx92+?GDih4u(G}_ufq!)H< z2CG@j&=J~<-HVI)S8q0&?u^&0S4?d)jmcUC&r+opW+YbnWp7QJsk&#Of*quYdZ_;S4%ZKTU|PPg*R7n=^W+xXPqp5@N^a48s*7uWzVmb-clZ0qzZDnc&Pk_P}J6; zn)Fcl5)~Cgrn*w%nuf=^OUq+D=qn>*!&enNX_sc7J9ySE>)>g-tn;#sD@23;!_Ro@ zBuExyU)uBgaaLOHU~ZOHR=f=D($N>{_j#?kp=YN{3-U}6=F$zaJR!su^?_53KJ8-anmNtkH_5gWA`SUDvm-b@y~7>s^F&tS zcT}++*eaF-Cb4BZ+B~zJ(b!@jh=3o@nUpf*A2ZWbq0Fx zOtV($?rh>UlN zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N lfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaah&{|1h@QNaKJ literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00040.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00040.dcm new file mode 100644 index 0000000000000000000000000000000000000000..f6bbd4b211b72cfaa4252557c43326852b5f4182 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00041.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00041.dcm new file mode 100644 index 0000000000000000000000000000000000000000..024c871a9d8cc9199054c2803f86ac0943596c54 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxiAdPS0d_WNzu6O|m*NOvnJS za$^(4Sfwl%0kMz;0xF7kN(C=?!Mj$xi+CxeQsR>-wTkk=DvCEB1pnvs?Aht10gF<6 z`DSaU&;NhEKIiLSpVNKL5dD8YrHWIFAcdLgFrCLSLPONpEsppMMR1&{tRo|7CUcga zG<03hCDTbGY2hE=s9%AIA|g`BOyAF^^D@+z88fSA(m2nsbTeq+!$ppP-sX)o4CN~D#{C#?vrA#ZvW)$CT)-mO)dEls-PWS2*1 zs+?-+T9jTxj<=F3UZYcSHJllxD4cO>xRt3&-LAHqZlz|sv+YJ}y6i@2{ACD4DgIv} z5T*50vI*I|p?}=aKkC$~jgXN}r>$I+3}0n*@QjifP^o~r64w=>8m{34RU2aym z-tbx#XNR`g?Owk{>mg)^meLOOj&x6-)Kba((W6niGUm5(qJLaK3o$BHJg2d*?9OU6 zH=7oBqqy4JOSE%{=(*?V{6P%5C^c8V^q7m%3?gz%W5q~ij68-)Dr+Sz!^GgTOv_58 z^rUHGz$FcU1Fc*po6MNTtJRb7s`aEBpf+-kgZnvCzr5bqU)M%4pQ?=uanEaBr&21{ zJGwDSk=P9Gt(e@*Xcv8|2xkQk*u)QXMTe zse~3Sl;%+yCQPYxoNh!Jvkey{YHpG>Mka5@>1G*kz`X^fm1LONWY)xYHcs!ulLy&P z$LUr)Tf}w5={6akLg{u{67AisYVUO1~E3eLckcMu_)Vi1*D9?^_|>w?n+|gm~W#@xB-0eLuweL5TOm z5bvz?7N0IZR%&D-K|cwop9a*=0_x`h^^1V|rBZ_V;{o-nfO;aJejQN138>#HC7y!6 zQ%dykhk$xgDlsw=bS_Zy$AEe&p#CIPaMb@f#5*72{UyYER(gw+{~3%p+bwEz5!TZ? ztRCwnucA7|7O>)&k!Zc(6Ih4dFyDKf%T`JG27b=%R<3wZ^J4S`*HqrZw#r|>W^>qiWh`VRR`w#h2;S9rLmL^iS;Wdfcy_Gh zt)hPa*?bnMAT*t{15DpMrxk zlor>zX<&sk0=0Ho?WN1Kze-xnW>bHiB(&eUzeW-}1i5=gi~c%E^ffV0{h9uoe0r*X@a@~`YhTyIH2cu zZ3e3u%+Mj)jNOZa`B!Vy8_u-bsFh7^GmXevLM?uEK-@e^t5r$&XKXT;O}7p4jWcLS z#KjOdq)HK4x)|OHSrWaC40(tXEnlEYP0UEF^erp98S_G}sdIU2OORhv-0dxN$-s3G zZK3giF4FFZH@)~<2KGr%5!{<1l_Dh@t83lFCPp`kRF3$+8Q=#Sy-2Ny*jshAA`NSU zan4{4P1~&@2Zx4apW-S;$Qjr({_A;%R;aq?p!^-AhF?Tcq-H+B#5vQy^;F zKuvO>yj?{_kg2YexTe9e?$FX$_xrMBZ1Af5C+*_wbNbKPCG9_Lmvm0HaiwVRfA|?~ zo(9Rh>`QxLKlXCV>CesL@`_iW9XkGE{l1_zC-CfaXkMNv!W_C$md8YS+f=zTU3!-$ zwytyC!^cp2ldNr`)^lse5A_PBuD7S0kfCJaZ#zD`lsR|IVI@>$N)7^1gC)xkgWS$apb2ua|kFO|RbMEQ4 zzY)99MeX!=cnCp%_sjmoh<3|f*>;_2r@za)0$v+W&a{Rf;N-uV)U}L-qNN#0T|8A^ zVV$I=gVqD8cae?Q>p1jK(7X1|qC*c$uY`!X-a8BCWVc{U9xPxnsZU;25Z{Li$Y`=B z%KGHh1p}$-Z9n#!f{Df4NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)Aj zFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)Aj zFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)Aj kFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp&f-)4bPdjJ3c literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00042.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00042.dcm new file mode 100644 index 0000000000000000000000000000000000000000..2ad95444dd8ec4666adff1deea397ee5bc0cb7e3 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00043.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00043.dcm new file mode 100644 index 0000000000000000000000000000000000000000..02ee022b015410f0d388379e49ab6511f776e5e6 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00044.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00044.dcm new file mode 100644 index 0000000000000000000000000000000000000000..bd2f573d832bd154179c518efc44b9f362bb104a GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlZ+VX}c`1}&;%lG-Gip}VK&mUYNIxK`dl}fQq7cD;2!p1@Bt%F5;z>qQoatY8B;!RVm(l5d5FhvuCH51}sYP z<(sXYKL7vu`kb$SeNOi|L-haslqyawf)r+|!*mYE2n|tVhdAOh6v1((av2#(GnupW zq@nA2E}2dmNeln@M*Rvz6cLe1X8L|UotL3fW{g}mmCfdjlwszxnT(k>^Lf*-j8r~_ zuT(B?WUUO^iJ_f~m-Qt2HBdK(I_-t}NQtzP`J@%0wd75&rkdTV+B>vLv!zLQob2)l zO_ftEU5nDI$njQE#cOmbu7)$C6ooTR4Yx8?soT|d)2-BOcedSVO_$v$jlTqeD8>IP z1fsN#N;V;z*Y%I<`$wHxwGlGX>9m!LlHse2Zdl0O45(B2xzr3 zZn$05yjibRu6a?KN6kvIj~zdD`sm?z^$tX7ftq!Zg&wOmhROD-V0IX{Cxi zRd0B$inC4IS*B&B zQhL%f&2%nl032xLGTCItG+wEmj908D-2kU`0D3^_LI!*ufP`?VNp$Tva;N=1L%YGbq?rD2*a zds-azVl=z8IOd6P>y3Ijj=AD^8hLiBBd)YvF1dceYgSyl>X&zVaau3WPL<-cQI_gx zu}LMgXrVNZ(lB94rQ>uX%9w4qAW?IZtT8fqGfp?lcmwV&D6J&J%qFuYzO!+9FP=Qe zemYL?!?Q(PN1Sez@hOyUlO@sKU8?pTc*BGT5Zp5Z<$F<%5+0SwbjCy-VdfwoGi9Zr zG^lN4rrXuM?V783$FDtgeRr;>&GnA-x+iWGa`=$?MuB&Y0fmX^FwHYCF4TFjfg zj4kNW_gQLd4&qBD(QM{SqD<^MLwAK>boF!Thm+`c*(Z9#FpysNV$CZxPaUhFE1-x{)_9^K%e-CY{4-FPlrHjT}}aa10YGh1D<8Lh2=3 zNTG!o-sgnl8oaNE3H@stb|LV6#40k{y8Octo{Rkcv-N8#Z(&>IuV1q{?7T7-vJxwMkzEAuYP_M14B9MWWgt8| zR`OPp-+wlrMP>$ScQ45G2}*kw#9l9lQLt|Cz3Y~%Hr~7ID6Q_#5F#>4C7`lO#h@BW zZGdVjC0gDk)!?XEM{bDcg?PKAC*Bo9GRr+mL!#}y%k=Crz4VUumW+YbnmSt|jypU_^TrRyi$ge5x_GY?d z;5vvl(|AA^X-CAHUi>Ws`y{9c?oE+Ok&=zowQgb)qZ>skNBrLm@PmzBq*g@it-4x~ zhPA;sXE2AR?beWkLqoDpaTO!v4D1>I^_)X1RNb>s{ti+^J`J@rQVHkzBURK16;)uj=xa9&uh&IJUbnlmuHGFhi;VRF;U(+Rqjle z-l>VL>s+PKDT~|o!ZFgt)=m{BUq}!$5T=!IO3h{;6-bu85vuryi(vY8X+x_GD?M{E6 zC$bX1ql)#wR`#nnx9pW|*O_+uyS%I6wejRkYxn_9{+mf%%UCE{nvvAS zQ}t!mNoqQ1-LHBV*@(T4L!S+Lhwdmk^pNyQh?wiWqhL;U3&!OB0v40{NfC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 n0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286QF+s0E1B_ literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00045.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00045.dcm new file mode 100644 index 0000000000000000000000000000000000000000..0d5a9bea726e413ea3fa785d3dfb44a08bde0326 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tee>gVX}c`1}&;%vb9MxO<(4ktsyh%ne2|tE#0$8R!4>j86Z|} zY@!⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00046.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00046.dcm new file mode 100644 index 0000000000000000000000000000000000000000..97a6fb878f51e753cf853bed04f627c548272896 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00047.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00047.dcm new file mode 100644 index 0000000000000000000000000000000000000000..2510343aee54aea30797148fa6a84a8a5c47fa89 GIT binary patch literal 38838 zcmeI0TaX-88OOh!tjlbKFiBvUL5u2`q&7h_^lfh08Zw=p$?nM9(mk7Gb!0Lj1H{UW zO%!95vRnkjLKX<9DBdjJ$ln+)>y!jybKc{EUPA?5ul;X?R zTRU_9|MT@ZU;p}??sJCd|9h0HZasz+W^1E#7T+-%q2^BUjbkK+@7e0bWTee>-qzEG zuIu@9CT*l`{Noe#s}NB_gq6+?{6eN6Lj#$&@^-;6ZNt*dtdY@8)6CihJ)1W&8PmuX zEVEG1jTj}+&IK!a68#$JV;$$vJxL=&2)z-rYYKr$uTtL>79Y)*L0ruYuX+C|^pAW?L&)o#{r? zZ&%&z+7_>O{Z_4yknNhK9qb?OojRde>B5mCaoV2~7` z5qG1s*56HZ`3TW-&(qlh7<6%Jt$pb+7pGZ72 zV9Vsw2Ec(yT`@-oNZjuXzp!j5JeUk>xEFXF;9g|HcVnFXuFe+q*;YA8n`Nni7F$$C zi#AFND2)=PR3=F`qKw&w3lcRq$r?PS%p~0`;|;jCptPC{GndYp_{=5geR%R9`MQz4g4XR;>h2r~!yn3kP^(xA4J znd#K_b?TnxAG`YG^}YGNHs3$o@15vxFYhrkX}#;|W*4KrkUr39&R=zH|HR4pp5~XY zKnu(B8hIr|t|Eg)RXVLov{qzj+M>R-&Yy`>e#YDBIn_pz66g7xys48h<+_%RZ+C*b0FmA3Mkyu7a6;*6PHzLpvutB$*S7GpI<=gYAY$Jmlb z^14!r)=E!yN-0{WR1E5(kV-05MO{iN(bk#G^!(}e&NC^xSVj1Vc%6#S{&B;?qfgG2 zQgn&(f)tLzdyDkMjHo?0RZr1-R>Tn6dav|EmLpI%L`2-EB1HTxDx#Nskg$>q3#1pT>^Dy#MyVL2$9vIQljO%BjWFop14wRr0CwEn1y6I{)CgF z)2fvZBH})!L`L^3B{KSuRHC(KSBcg>s%nM$m{b_+G~Ykb?_tDVCSEJq%P^)7cUw*t zF%Qa^HHa~FBd42KNa#k^%%yY|QNc~nR@f7@> zQlf`HgwzvKiII__Cqp%V45_C=>Q7RINBy58yt5JBUn0C`rME=+pW%ozy^==fVLiQF zt|&~r1$De*EnPQs>@dVC!`6+0ftjC&(6gC5R(rX;l`-;Ik-#xbtQ6L~L<`o-wqT)! z1m5R_@3nYej}rRVH0(lxH@k*?hA7!N4eReRRu|h0tUvXv+1X~;HVSsfN?TUJ)F_Ag zbIIuF@(w2woW#0bko*0o??o}ERZSPy5=T_+D_j3^cR#_j;r4!-3EyBAp!t1`k z+c-?pZv&C+C8re<`b_YSW zlVr;NmXxJ>7n{Dxp^+9tYb6!yLpdsT;n7*d?pK;*jxAs{i`h9s zTd;F+F&pa5M$?_~n)QmQZJ{w)OQ^*!4v1SoX{{>h!F)~UbD54IK5+((h`0peMpP*# zOXtH|B}<~Wu@N6}qUCc`sfGE7Rlc3gZ^68f>*<1(-5TcC5_fwmT{v_dL|bVhq)W6j z=Fcqsj)6TAR1Ei~MCDl7!O9vxuizC%EcQ-ry6qb#ozkLH664b zP`!(6#6HKR&xO5f?<~3Wko3xknD4){XioKt#?*l#7LxkZRYmc6u!xMN`l75)U0pPg zs@@4=uPK^X$W2{a6rYDg+}Rrv)ZB~47Vysp6JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% em;e)C0!)AjFaajO1egF5U;<2l2`~XBK>r49m{5WM literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00048.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00048.dcm new file mode 100644 index 0000000000000000000000000000000000000000..71f731e24ed3e648474504dc797e404906c0dd76 GIT binary patch literal 38838 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00049.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00049.dcm new file mode 100644 index 0000000000000000000000000000000000000000..f56f4a746d0151bc1e6f59404a78e7b009beea74 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00050.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00050.dcm new file mode 100644 index 0000000000000000000000000000000000000000..0f8847816689ae4f5332eb40acad7886a4372bd7 GIT binary patch literal 38842 zcmeI0TZ|i58OOhMmW?;Gsk2G9c0tvIB-*49cV_Id$5}b??AX~g^(`K6k_A)8Y1}p_ zw{B8Okf7TOv=o(Y+q6KT+!4@nDVK5wMchld2&#zkL zP+mT-)^q;<^UXQm{N|jQb4>LA{S?b?HG&joE5mdi#|RBkeM%hh8H(UITfUTxq?xqS zdeYE!-A-CbBbmlOzEQsl5d}n~l9|4rvvM+2%1q9%v!M1Lm z(la^RHZ99UJ2AAgVMR}(UjubxsMB7okCaF&nM$H^&; z&~z!)(zPhPhFotAmA!hW+|+Ppl%jCPsopG4mupU?-DsApPIInZZ_SjNQ5t_40#S

jSoS;g53cixC6)@Y0^5s;kx3pr} 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00051.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00051.dcm new file mode 100644 index 0000000000000000000000000000000000000000..f2ef1a4be5a0e45395fa55b70e9213bee5f9ead4 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00053.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00053.dcm new file mode 100644 index 0000000000000000000000000000000000000000..0ca99c7223032a1c3f86eb6c7f62e4cae8aac42d GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00054.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00054.dcm new file mode 100644 index 0000000000000000000000000000000000000000..48b76b310f2d49fe5de0a94c07a3be1ffaed4ceb GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00055.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00055.dcm new file mode 100644 index 0000000000000000000000000000000000000000..b6286f72b8349a1b6c0aa863aa0bbcf57e3ef111 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00056.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00056.dcm new file mode 100644 index 0000000000000000000000000000000000000000..437c4ac76d2cd47dd568d0ad8a7323248405d5d3 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00057.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00057.dcm new file mode 100644 index 0000000000000000000000000000000000000000..059ae38750cf06c37d3efc7ce87490621681b60d GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00058.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00058.dcm new file mode 100644 index 0000000000000000000000000000000000000000..b5b7620e962d0de64a8baaeb734298f8072d1196 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxiA<1}&;%lG+5#(B0ELmuwB0*`CSnz}(V3n`C8Vn2>?Q z%8gAFW0kU81jIrX2&gFDEfu`r1@BrZ?}(RDDkVOdQmZH*tfF}HLE`_Mo;^FgG+vOu#8KVF1r&Muj5u`9%9j3E5Mreo{Q{srvPz1->$|YnZ&1BZn zlZLMA*`%E`k{15)jrvuHC?F!0O!xhqos*$bTBemYQaQ^sbTgYap>n2S<+5ozXQuSD zl{PbW*0v)QLp$qN^d$N<(8n0+w3q55CDKafl2(M)kvFr3YQGWx|LedoohE*Gi5hQF@T zDLrYLrkzb100&yxbS9ZLjn}Ft<2CC^H$ZLVeh2q+wtiK;v8S$$Vm?(H=i{E&yiTQ5 zu6J}}lp?WN+*>iXr^}->EY%294hb-rjnh8&yqVLJYfeOin(oD^+vrM$6Rqdjl5#3Bd)YvF1dceYgXK1)i3Y#;==CRV>dyDH`QD*k_jqr6X}4)7^^U8X9gO;1a$mbKf8BxJ@e}i1 z%`07n7MABV@`{OEMFxwibV`+It;o={M16D2n~73(#+`DDm3o|F>t>PVUiq3Bp*W4L z6ZgbvR1v#=oxCzbFt`YQgaqwzxOiSAQ&~GJuWOe$V`itPB?iZ8(b+YNv6`R@6r52^v!>0(Egf#g(d{E+Lg@>-1(icd9jYIzgAH2oDi&P!ZZcZeDoe z%v>QsmnzRs;Rw99N>9v)>LZi21ifcP456*}N>5}t1a)&r#4Rd9#NVzWy79;VcG>tk z^mC{3{JurpU4gUiR%#XMKA_a4Q1^tKeXoiTSuH9hTD~tN{(k9+D;1vvJuncn5Kl&* zE+*)dYUP87cu*;k(L+j!j6NilXzlq`qP35zTA@BB6~;Qv_m20v7_pa&*Gl?wjOjz2 zW-*PJM`X+z#F)B~(M{dNF>R(3^l{a;2v5)_RNEqtPbwvP`cy!DTAg|2bE5V$N~0U- z&#Gv_?DJBo5h)|S5aN9?#CtTvdo1V`?kyzfOF?h%WAMHl^e77NE6RKLBjWSqjs$&G zc_MqF=ioga;(cv}C$9ACA>KDayl;khPlR~i3h}-j;(aH?`)-K$y%6vFA>I!{ydQ>m zKML_qOK<7v@?)h&CKB|Mfcj}b{Vbq<9#Fpss9!22m_Hd%zY3_Q0_xWR^_zhDty1DC z_&cRU4}S=#r==1jBSB{ZHGd4KX9DU^QUyo-pF_N}A>Lm?yyvC2MERe=h|}GIMi*c` zysRcYu&wgfubC`%UTF(iiIu&`E`oP8-q1!GZ5FUH5MD7> z^43tlf9$!kdJeU_7v=f{r9F#cueTGUV8h^h*DY6zc<*i?Tiu@_M5L8UKxLGQK{b@x z1l3eZw7g5I!BMk;+z`(T@pem3yeo!emV1Rvte_fm9p!hmCZCF&kzw2tX+o+XIZ3~UaT0$*;bwJz#N^4a~_h)P}o3Y!5_{JGD zB;sO-8&ai+EL{k1l`M(gMut4ZiI&e(r6y)1R{CZxy#@0^uBq)@YHN^RQ{3&XbkV?d z5N)OLfG*Hf#G6_AEd%=`s0i*&fl8555vyz6#3n{J3RI5xzZu{M8@)iSh}c_owE_)m zgK^Ga4$Y!lLkPFv$!=xOZ2bN6+x!DQsSBh$GStyW8Lq|lCi<7@}IOzv(M>2YnQeEv|ZL&*~Yb^!T;fB zw0ROFbFwe(#r+glT26m%7FJfg3hmI*m+JRLtvP{br$YZuyVRTSp6E>@K0ntxj<#=;ZO23!@^f~Fe|&C-)8FTb ztiiiYW}N;m?;3b*JUML*KfuX+=Ru)!TmT4S5rbxyb{0@qJLloxM3mjXh{=0ss7A0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%=-*`&P~ZRn literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00059.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00059.dcm new file mode 100644 index 0000000000000000000000000000000000000000..d6f698b71a6077872206b7aa188cf23c39071e01 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00060.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00060.dcm new file mode 100644 index 0000000000000000000000000000000000000000..7c3f0f973298daf5b04f61efe3859097ea581e47 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00062.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00062.dcm new file mode 100644 index 0000000000000000000000000000000000000000..195ac1b7d88a41a3afe54d62272c3166baa5d114 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxkK|gBH~>No|5=(wFJEWNVU{?V0Qj%q`usNmfQC6EcKY zxv`02tU{KHf>_7`0Tso&rGgi{;9V=_9r031QR0&+wTkk=DvCEB1pnvs?Aht10gF<6 z`DSaU&;NhEKIiLSpVNKL5dD8YrHWIFAcfiLFrC9OLPOM;5=VT7A~?=gE+r#rCbKC$ zY3RD1P1;E#nZiH5QNIci1w>fMbl=a}IT&Tl~L$zY7TAb1<&6XzJaVnNa zXu52*bS+A+Bgb1!6|d2$xEjukQWVZOHQdT{rCzMIn{K66bm!WQ)=b%r()cS7h*JE& zLLf@(sZ=Cn^QQiBL;t8#t2RQ0ZQH4Alnh@1Y6`iV0c8c$eq2|CYPg0IRBeobfL1Hx zh8L@vH|Mp=H7`mFs98~?S1qV*86U9+@az z=}8POJDW5B4z#lAOfqd6uT@XRYu1x)fZE8t4({h{{mOb{Z(SS3e5y9i$33rkol2=( z@94%TMPjqKw_su3u!GF>myC{0Lb7|y{R)9q1=0TD0sba}=ZB}3^PKBM$k zsW+ltJt6#ifyV*vg&n*bqx5%mzGy#&9GmrFI{A(RT8uR08zBRwf&yke^(uC!e)xqiWGR@`FMFYof=v_YP2mEyEXmg;D+ zNhP$HLTLe|VZxNM<8(91m~FTqQFDu|G156RPPfW<1MY1ottP|FBr_(yGjVz^o;=8Y zCQk3evqfA-oNkx#7D{)>l4$Q9ReK-2VZs9l?wNt|{U}E%mq{n>w23;x%t1b;m9n8U zsO@Ch?draE&DFf)*PgneJKxjhdq;ZRlfCVwJ*J)1JFaeaFzR#31MSBAHP`h{o|^A! zUg=7-uspAkS4`w8GFVilGpa;uMTTZd)HlbxnJ8sv+$pzMsmCd{ZWdYYldp*piqqIS zaZj8^6|onslUHU41{cGRkf1#d7tgDtm9?|-x^{~*W_Ed6VsNY$o!zq-s|mVLj+H3J zmi)x8FC=KK^kk=$pfRN)P?rQ$T&W7`5>kn_&TgU?&a|e^Cg@TX;UVG;Dnk3mO$(1b zHCIT`Wy4_|dpl%9@xLHMr_}f%OH~#3~E+1cq zer{Ku-?xanBXHK8O07cO2b8)D>aLKp?^Y2at3{qZf z#RQ#Et$Yv>_bVkbdO#_W(TAiGtv$C&wDwU|E7ZrN!dR#I-pO7UBX*m3t)#bMOdshq zi)q9>BxBYf#?+0BZt5nEX)~RmkE^ytc!EBm+7@|yQYq2XrvmEJ>dgAHqV_XNqZ{bY zs%XLN^HQl1DI>lR;(am1dpN{em7Fn}GVQQsOE2 zJEcSqe+Z~2r4l0}K~Dv0{uoeC2h^XW3Xb|ehj`~gyuXBa&q;5I@;`$SXS)TBF2H(v zyIfJ2cnj)y$6C5>=-6S1RYpq3Rsu6W3!$g&ELMA&tYsTntVrM(CRPe-UZw@>6kt{9S8?o}ERZSPy5=T_+DceEdWm8=iu(hl+77UEqU z;&oo+Z5Sl!wMug!xq(iE#GR7f(pz;yfBoRkhE0K1%C3i2HqnSYLqtTdc0Es>|1=z& zp|rTxO#>^W5vYq+)Lybe`>Uj-Y&P}RNkaRr`)eezLy)^?wCJysL|+qw*h{)|m#Gj`h$-#CMY zL|hDUL#h;!r3>M$k|ojG$dHFP(ein!)WnR$N*@oi&6pQ*O>Nu8mLR{TxZ7Lk;(_ZR z+Ct+2U7)FmH?#Cx2KGr%5!{;sl_I4gR@b_TO^j|7s2uTsGr$ivdVyLIvA61K1sc`{ zweTu6XA!lIE_^%fnTBYiqhw^ujBJvri<&jD_&mXCxPN=9lPpHv= zTCLO&>RvC^;B0m1{1x6@!J!M3=bd*t|KYP0cx#j=yOlk^QF=>xY>~>(>GFZ{TLMvA z2WpZ7Uw+HIez#^>-33UKHEMt-#vJ^ckER0=!twbXX@=E zhmZAk&G)X)+j`sG)jfJb1{!v|)SK^~>P;g)Ki4~nwr`bf$3zt(2WM{yV!WuGi{R%X`Yzl^Q+WDdWZHz^)s5QR)=* z-kC6H*M-+O1?ob2X}$pd*TCiTf{^5Xko9vMyc zL|LD_Hg6zRz3s;y%9~isONfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k l025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l{tYgVX}c`1}&;%lG+5#q`Rl*maQSv+cVi6Gq-flCRrVsOvnJS za$^(4Sfwl%0kMz;0xF7kOXZ??!Mj$#FM*|XD20~V$D z^3B#xpa1`Sea_dvKBxPfA^QJ*N)@LTK?<|gVLFFngodawC64$EMR1(0TtY_DOy(>- zY3RD1OQw@X(!xK!QNIciMMR{MnZBP-=Vhprrjf~Itb9I~N?WPCo;OT0XJ&JHHkY#u znE1BLEZT{ooeNj=B>FW_H-2>6IYpCKiIu%#LnNfM|%0+#*DBY%C@r974cW(zA3J^Y@OyiQqO?fOy2wJ0RU5-(dsQ&I9OcWX-e_s1ialL# zc&&=FL)+qZuiL8i5VAu{X@`18x~ETSsbv1>(I_2=`K_Gj9~aR=j7k;HY3wb#b6U;K zrp4VTuJiT~T|Pwg{0nsMAO>BOn(JPE%tdJy5xM2DVx%%g9z!LSwUU-$V(?j}Wu;Pj z(lpI895h$-RUAJkJCZsbA=g{TT?NN*Y5ij&~dBzzfL+Ly|qx4s) zH=$lVA^dxR#{up|I(Rom>F?@%(S8g$HtWN5@?8hD7-`5iLIz4jf81(gbP%Osnk#!+ z9Q9%}yR|sxiE!(UdO41{;&>W)cB><S(b^ zCA4Uvw1CnuVM?XrbOXwmZMYy&bEB*=GI=vjH_3Pd?#(EzA;ZijvnIZ?arywBJji|~ zPPgFMBCaD&x61ewO1H_9Xzwmndk?%}!UG8InSt`XC`T!u%_P$q6Lo}{gM7@Cm4?!w zc95BFSNFGTuI3%T>eO}J`JOi4JJRc(?CmJ+HPcDG@EVA4$UlSt~r?K_o zo;ZyvVlP}Tugnk(E`lE+L3$3KE}fItwMU#Wv&+*GgJacp_RM0eCg=h=R-zbN z@)N(dn4opilbuq6#*~UcT^vwxr7EaPNF~}jyO~}%)0#S)pi5MQhln?*2<;!&FFf|t zTrokHD$h^h7`(ShPt1tw1CzA`y>CSfp{@5zPh>d+b$v+04Jty!->f3K@kjr5+4y?& zbF1?FzD3+^fwOK`Y8C1}q|~KQcZ8gMr-~3+Eh;5izAGgDZt00D6`us%GZ3>7Pez}# z6Ldzk@?k{WtCYy-KBYuPACXG5_S`Db+Q(I`P@j+rW1Z%ECwpCt*zMxAlG%2O-`ML%bh_ zcxR=z^mO^LQX>-y`bj|jG@yPKP(Kf-Uj)=Il@iP!52#-S)Dr>q>wx-AK>b!J@f7@> zQlf`H1k{sKiII_@rvf#945+6A>Q7PyNBy5eymKMmUqZa+q_;%*pTUT;-J(Y4V?Dh? zt|&~r1$De*Q@U>G*kOoOhNT;M12aDdp=Z)LtoE|GRNBa4MFPh#u~Jz3GA*QDv4s>` zh~a%sIIhF{dYI6^rePQ2zu7hHGejwq(y;z6d6&>O1M5#cW45;$mW6`V#!@qt%9}VV zi-_~cXzTJ1M|dvs`_I;|sl0`4mA`(?=CJe1SjbAO>_v7FysPnsHZo|lh?Rlx>{!WL zOa1qNa2UbWUP#3PKy?BN8S4m6RZ0@gx*DEQ#JmhCIZHmRGA%6EhMkeZx#|!Mu=bYBOzY4f1P>ySVsxWO<%s{A0e-O2i`0sUy;WB$(y%rd z=M3i1wA~tVaA-*ODXwCKoPj;#zg}=?m8yFl%HKhX$Y-FIM=Iewf24{!p`z+Mp+*C0 zjZ#CXd%aYHv(=&VR(Nwoht5}?xB7J9qh~Ad)+$eSD|>#U^p^72DwUtpWdr561fsSL z)FcPW+f`Hqnd(Z3YZ@Hu4lR#$zb{M12CvG0(k{(Dr~j;7*8bCWS?6RM2SkJa!_R2* zG)U%UU)qcNu~%A7e{L36R=f)B(D9e*_eHHafoG>f3-U}6=FknYJSNK9rpuj~(t9+q zb)D}XK8D&GWo;9+o?AP9s8=v`y*=$5KYXNh`b4jgYhOLzJ#@Ht?38``te@&l6dR z-%-VSV4GMLXzhBV?a&A1nVV2sDLZZacXm}=uhprR_m-(#^-~2kwvc0=+V5+w&u$E(-{vJ^5!QQ&*_fKpYUsb&Nsb}8# zX6#0nwA0_=Aq4&1C;Jm4+AVu!+jVA~{x0tdcx^m6(;9w&lmBK?*D@B0mS!Y%@l<`4 zb&{G6TKB8oMK)ru|ISOf2RmuPKP{!y@k7^)YJfLt_j0=MNKL0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l k2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60VY8I20Z{#g8%>k literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00064.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00064.dcm new file mode 100644 index 0000000000000000000000000000000000000000..dc8c94182ace2b61593692df91d98b946767de3e GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00065.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00065.dcm new file mode 100644 index 0000000000000000000000000000000000000000..331c5a014a9f93920a17a709618d72026ece788f GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00066.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00066.dcm new file mode 100644 index 0000000000000000000000000000000000000000..bcc1ca33e23221c8f38e3839da3a271503c38bbf GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00067.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00067.dcm new file mode 100644 index 0000000000000000000000000000000000000000..be8d7790ba7a7fd7307b7b83aa7e31e32a83a31a GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00068.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00068.dcm new file mode 100644 index 0000000000000000000000000000000000000000..2883eaa0b84e1ba9ba74de31cf362ba5db277553 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxiA<1}&;%lG+5#(6_l|Ysk#@Om;`+mhRakt0TjN3?x== zY@!⪙xrz7P3GRq7+}g z+1lyz|DUhV`TE!Abe}Us|KCrk;?yEYVYWIc&c~M$G&1xzhIeO&e;e+q(?T^wTHR~b^JyvZDQ_-t}*%c^XM)gKZD^-fq z^@i7~INP-?Zuf?*S`Q)HHA~yyJJdaST(gq7!-u1EbdAP`deRM08@b29{hX~|S#RvAYonM?)yDa_=QXcWDV6IT z-58}vY!>%c%qQ!+3F!>O*?+}!dlX|p#0x!Lo^eLWP&$XtDE(FH zO{iB-2>)K-ae#Y~3f_%T`nx(`v>!u`&H6AMf7d=OMjG;skbzRcAGg{V?L%pp=E|NH zN4*%$ZY_>^BHVhTUXEj~IG#pcvDFb*+Afz|zu+}1Zn5f@cY1N!D9^S^aoQ|Pb+p)| z5?ZuTT0m)-Fr`v)x(Q{>He8UXxmng2>6{s-TV%We_g0ivlVN6(857@`IDG(59%Mfg zrw`)UBCaD&x5;=5rQ2mmw0F0vy%*jv;Q<8q)Ij+@l%tf(q?4(%i8{i}K|ZEsr=T>b z?PR9f)xGVSt9eJSJ#j;KzNgLi4)wand)rI9%~VqFxVqWFsLv($wHx!-9OxZCG2hj^ z(v@god0r#0n8;ORu&7F>REgG#3{6|qH^;o0C}n5dDYsau$0@dM7Fq6-vFq2#D>DRxi{M8{&>n}2=T*|mrn2(7c8N1)c6wT3aI6-cU9%Xg3A#{@l_BxtSlWT%v%F{L6<7Y9^asS4^6Qi--sZ>DpnT2rSJbcu@a5b*{Tq5b2=g(uF; z6%ur*^86HzzTg2TSIO`6jR-x|0N?i(dXUN%isR)tPqEe#eyF=pdk)F6x@k!9V12GHnWc2A` zf=;PcK7xq*loA=;uawB>qf&|1o?j(e`-G|$>XTAotkZn&c(02Qd%1Y6q%X&qKGbOz z(};Oc#;ie%sT&#H)J+`IW;#KiQf-Uy1bteyE%Nw`Qlh8N2Gr-&nXTtU?dO$7H_%^D z(Sq5Rq*5bNMtnKM`$~xSP>A<%&@0?kNYEoeZ|}qK9u0aFh4+~99{9NUJh>x5UsayS zp6EGvkB4|)Tj7Z-{d$P^jS%mfA>I=q-nT-$Z-;o_3Gu!g;(af~`+kV`gAnhBA>NNd zywlQKdb<2rsga2U{Uo4%8c;tAsGkSaF9Pb9N(tsq2Gp+t>ZySGbwK?lpnj{Acnbbb zDbd3p0_th0#K=g{nLy1S1L~Q8`jb?_QUB)i4gkS?st_yL(ZtPf*&kDE4|yjDih=?_IZCE#keqfl})J3?U+|R01laR1B)2)F!B= zQljNuQVoup4djM+UWm6_dg5I%B(vP3G$h*IyF$;c(97>=KmP5qKA1~8#Cu1GcU6ej zd6Bnqkfhft&4J`bIu;UlLV8PY)s6l2gFhQK2U;n+9$MKV%4_^Mo1=sMSgh zq3-ok4bE1F&R^lp6&$)idER*^^B+51fwx9^vRm2n8>P3D$5yHQoGu$Eza~s3h+GXuOZI^XcwsEy+@PGIjZJq?l zoa{?`aX-bCmeZe`g_RYrLOXQyrTTqQYfj+V>Cl2aQ-nEmlPr&k^0w)6XQuQXO>AA~ zy9bY;_GVct-hiH4JG#G@H+8)|?HoOLsCDvKFQ08+H{acVuy^D{@$j*HHfQSXLkExa zcFy;%&!_aZyR&=vm<%*h?NV>Pd!jdu`21Y&INH8NwjC2`$j{jw{_(jTPJf>#vJ$_e ziuJ%Yu`JNq^+wyF56Lq(p|()e}{(<^mo7PPmE}{?3IhIGvoAkc~`+}Z`1i z)O65#K=m%N5qlknz8Lfl+*xqwA?cM6G2eT4-kj{_jmdp^EGG5IYx3fIe;yf4_C#5q zyf$wjRlV)UUY9qqn43J17vBd(+}Rsr)YyZ@7Vys>Ccp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C i0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>Nfc^~{e^K55 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00069.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00069.dcm new file mode 100644 index 0000000000000000000000000000000000000000..031cd87856bce5b22e0911a63f4dd8451fd1cf0e GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxiA<1}&;%lG+5#(3iPpYsmEWOm;`+mhRakt0TjN3?x== zY@!⪙xrz7P3GA#i>P*!fbVz&f+^lL)4fO-#CUM_@1p?LPpX|=2Cjn z&~-hROec+G3jg>-{VGHh5n&}WeLtVh%TOsT%QW?@Y3X^xv{HITw+s`?vaD>{GE*tt zOy_hO%<=vskj=>j8YWNI5phLbfs=r+fBDpv)#FNqcu}@qcr{s1fmrGuMmjR z1}fQvY~IxW-q`=vsZ|>xBb`pCa#1pTmC=n9ayJ9Y3aG1bT@k9`8jex5F$Mx!t&AIP zS2b_WYn5wWlon94n(QM-kDNSw@V&kLQCg&CU1Xuhs*Pc?y(*Ypf%0WkZ?v>h#h$J= zyjI28u5EF{}t2iQH%i*FZ6VI#u+6;={$~6`m5BN zP_Ld4{=LBC0QVvtyc?tRcXhsKKZYEe^aS{(C4xb;T89LHR7JdHfN)e%?PE|*-t;593*UG>X5y*O=@XIrH>ZI-1vT5M7Y zEv8UfKxvpTrP6V_31!SST#%@_S=JbtycwrkWV`|QR+LtgVP=zA6Q9{QeE?4$WIq$9 z58~M(t|Lyj$#@H;+hs|#cekp&7v3=80R;EdK>0qDqm<8PlIe_zI>O9BK6rShp){!N zWTxBIz3rN-c}K53aYJ{$r_J{c^}5G<+e^F6bW-oQy4k^~&nNe_8}rv3=p8>X-_^X* zm1tpkUL&uV$W>&ps7j|)iPnk?&6KEbj(Iat%FVb_u3f3eDYkAFS?-mui4ls^*gA1f zoJJL~>(|LEGX#T+;73T%9*2wPRnp3(bMm@&i8E$)dRk&|tlG}5S&Y>LT`0#&6k|&s z@#~8TS}Q%-DJ5u3sR-1?0ToxOg1UrMqOH@L>D;N-)ae9Wq9Qy*yg@~1|G07C@iTM9 z1YN2;KZPUk-X=XUBdQNh))Mr-6)}Xi-Y-3o(I|_ z%JcgcakmG~x|s9K>uDHX;#&G(M?x)`ySi`Po#a*XLiou-{Z z%!4v!4Ps2)$m*t!b%l{JGYR^XYFmUS=+mlgk;iA05UhUmx^C#$VTe^mN;mQbW_}Jr&tUVAG_pA>ZRD^bfn%6hDXe*!7OYon!9oi$ zyw3^WYw^AwCiJgq*oF9Sb`ARsQOe{stiMa%CA7`J`cu!C?QKRXg+i*G#|p^Gn>Z_r zi1W#4>+%oZ@Lc5gpRHf5dw~$pL%er{cvppZ zofml<2T6LZ(i})`q+=m*C#1LZR^8ZNKlrm@bD)*7>!Fp+G$PLs5fQ9i&r|0=0|#d) zEv|L*zzS&uYW<4Zi&toWm9&)2=KeZKXuoxTjU;vma`%iD{dJP)Yho~4?3kyK?L>cv z;AcBQrtEJ?S*mxj@tYVJX%VzmRIwhEtzsW}^ogkn>?fCYB1Ge*3F;2$(`akofL_?K z1*~QskNBrLm@PmzBq*g@it-4x~hPA;s zXE2AR?beWkLqoDpaTO!v4D1>IbMaR)@}C;ms8txzr)kYSG~T@EC2L z1j)SYOM7uY_Daj?&&}e>idUf>I{H%mzNj@P@a%MGL7pkX9J)!C$3%JCbh$HAdXFZy zuJhf4M^JmStZky!b8AQU_X?)2x2K(>2M@JQ9_tly?d#^d`w#YxoUjicE9CN~-ad5j zNN?wS@A^VoZ@W9YhmXlXBi%0b=DR0)(}*w3^^T+MTV&fYk%m0Z?(n~#+u`*0c_J(E zJE~X@Y!k}@tzB=l9r}xN#GIt9IF zrco_-rW$w+WjeJ=y@`=_>yuPR=5=Gk|? z8N1OX?euqe2tj}M%l^cOcFSJbcAXigzstJ{UK>x&w1ywxuYkp*K6y<+eC{tGqsg8q z>yy_O45X^J{n+aYCKhv(2MXfzpolwrV~iSm(AWb0`CtM}fC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 z0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6 j0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzy#>u{LfK= literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00070.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00070.dcm new file mode 100644 index 0000000000000000000000000000000000000000..a6a28fc67092c3bb2afca4e6f9edaa189bd6eea3 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00071.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00071.dcm new file mode 100644 index 0000000000000000000000000000000000000000..6006474011441ca6a22c8daf94da323a77290a6e GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxiA<1}&;%lG+5#(B0ELmuwB0*`CSn$lTIBn`Culn2>?Q z%8gAFW0kU86vRRn2&gFDEtQMn1@BrZFDT-rluC(Drqn9R2dgOFe31A*r)SSjFAZ3f z;>$N%JAMBD^YuAj|N5NnbB5^u`zckNS_CP~R)^^Ni&(X z^rWHddNye%jiiNte4~C9A_|B|CDVOBXXj+7l$LI!vxco(wxwrG-A>z?l&)uVJ#D2k zhLuYh*|e3hA{0YA>sRz7`ZdtU80xf_>LVr6O6HPiV;y-jYp7OiRf|(vrP&Wp|Q^jj^Dz1hzqZEZRP7Sv*U8xtV?WS9)72UaZqcu}@qcr{s1fmrG zuMmjR1}YT^*}SQL+}Jsd(h*k&}lHzPGnON{iI2i!Ah5wJ}UZuL@>YpnMtC8!fF= zDNffLUaR74*S5Ib8@6gaglyMR+Wy|5?#bg?Dw#WcI7(N?{8odAP`deRM08@b29{hX~|S#RvAYonM?)yDa_=QXcW zDV6IT-58}vY!>%c%qQ!+3F!>O*?+}!dlX|p#0x!Lo^eLWP&$Xt zDE(FHO{iB-2>)K-ae#Ya2k*ux{au|e+K(Z}W__5BziXcsBMtdR$Uv#!k6Uew_MtRP zb7fD9qh5?=w-(1d5pKOvFUK)g98V*!*y@NYZI?@~U+|h0w^;SdJH0q*z~ARjYj z*-#qPb~5dDb#J@oYTnUnPu$R*?`iYBL%r_t-uBXN(@yFgS2sHt^||D}c4PjU1HI!X z=DV6#x)Loc&uior6S;~E7FFq#D$!bzp=pWw=9o7VrRGYZhZQK^Mxg z62;h(pZN8K1g({x?35BTrc?y#;(&@PRY6@sD$&;I&2;WmYwC1@E>RI4BHo}Pw13>V z@c5azLV_+;o}a=IcyE)Qm=VgsY{{m3_1HQ6(O=(R7$jbcS!s_(i2xIJ_)*aAZ8(+ zj6PjV&?(i*M-XwJQX-@Kl@b|!R4UQh^Q%N_pHQ_zeNrlnb(-%T?{zU^FBh+s^yL`S zhdRw-8Zi&bm^Fwobt9vjx`|`jOeg45s%;UTpiir|MIN6~O7!&Efcl&|bI)_4_VY@k z8|W{nXu<4DQmGLsBfcEseI>+uD8zd>=oRiNBx5 zUsImQp6EGvkA-+&U*U->{YHrQ%@FTfA>QL5-nT=%?}T{Y4e`Dg;(b5F`$35J!w~OB zA>NNeywlQKdb<2Xsga2U{WPF{7EnJAs3!vI7XkH4r3CXQ1L{`+^;AIpI-q_NP`_15 zJOzKJl<46P0rj+0Vq_%fOrYkE0rgBk{Yk3esQ+__cQ(ZPONjTp^p+_9GZ=BYThQnN ztf#lj6@`hnppJJeb_|A&9fnwCU_+5JS;TR)m|o>vW+ZOBybE9D}^;L(?aSM zTS%dW7~bcE<66A0hY9^_8g?Q6n_a^`LzFUxhV^&JyM(qGSbyqiv%Sr*EEKFZa!I9f zCeF$r;(RjNy8Octo{Rkcv-N8#XJK3AuU|7+?7Y$zvJxwMkzEAuYP_M1G}~Be>RPSQrH!(2MB519kVm+v$ihbnKC#EK_pIq9B5RI26s5_ufqpf`d zdSS;Fu$sjT9ilDRy*QYEwMM<+%(#tO+0?esh^!^l;#UX6Eugekm2`i`CbJp4ZHRB2 zK|>-ghPWYBipbK1@K(u^=xt=kL!4;&JXLC9Mq+o7No!j$FXY-dWt&@r{F>r!Z>5U{ zu7hYRjR$mrrXt?V(r+2qCqYGUZwge3l!{ng>n1iax>2BV#Q)6zKiKF6YDL7}s;d=f zSR0IU26Jc@-5PRmXh`-cu406ofj#5D&N;M7)x7}a?;u6wvrx+;m2jRvQbnCmQFWeB zqXD&AsUg(8UaG;_>d^Tsyt#ry7bwp=?_~aCrz`N*C{K1Pdw!$zmh#vtm7mjP1Ld~_ zqP7jxBnQfutEdPv)s+(0G&t5BS|00uUzUswUX}l(U7CGP|5>}N{ip4+&dN5f77hLn zKcmf)AeobWX)o@lxYBa^bF;9r;#Fvej=ogCFKW#RJUbm)kY|c8hi;PPF;U(&UGB`3 z-lK`F>wNd%5!Bu+Yn!O`+}hFoy}YUG?P=%e!9%T+$9nl}`?~q={)4?ECyIxU<+C|c zZy!2%q_=avcYWU0+wRWp;bSt;u-m2HeD_3e8u9tL-f^^ji)=e4(vY9CJN)BwJDmPL zPh=&2M-}UVZDLuVwd;+xLm!f7ZbEIP?6mRU*;#SDR;OCtU9PUw=;;m_FGdG;-O!6t zThM!E8r5=Vs)5%~x>Kvv+tmhs^XoLr#Vh*;rh2OaYdOa0?*YXg?5&%A|J0W8RfX%$ zJp0Z!V>h~_o&F9FA?WXZ*`FBEZrLjrU1!GW@A9sK*T$36*6;(I{5O-jmbOr|G$W~t zr|PS$lhkz3dO-CqvJrb7hrSr}4%}IA=ppHq5Ha6-cix=r=8egHc`PRN$!qfBdw(7o zP4+}tpS(72AXUBX$6l8=v6!1YkQd(vMcmmNW7OD##uo6;A11&Am;e)C0!)AjFaajO z1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO z1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO z1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO n1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOo09k=FL&> literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00072.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00072.dcm new file mode 100644 index 0000000000000000000000000000000000000000..e8ea719f573e67f4fa8448f4a70de3a8e3f1d6a2 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxiA<1}&;%lG+5#(6_l|Ysk#@Om;`+mhRakt0TjN3?x== zY@!⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00073.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00073.dcm new file mode 100644 index 0000000000000000000000000000000000000000..c77724e33bdad54de36698d65e1e35434fadacb8 GIT binary patch literal 38838 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⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00075.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00075.dcm new file mode 100644 index 0000000000000000000000000000000000000000..0e90a9fc55ea832367ac614874a4602f7856e98d GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00076.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00076.dcm new file mode 100644 index 0000000000000000000000000000000000000000..26baccf671dfe043020c5e807fd5d09e2d2a7b73 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxkK|gBH~>No^9zq`RkkF4-C~lb*@$$lTIBn`CulGGPaZ zl^dHV#wumG2#BRD5Kz&0w^ZDjZ>O9K|A z`0~xxPM`n(e0|Q>zdon?oFV%Eeo7Um7C{O#)nPh^V}ypNu}d8B8H(UIQ@NCkq?ycG zdeYE!J)5+XM$*DRzEQsl5d}n~lIgymvvV@kmv+uf>A7?|l`?Egw`?nCW^#5Wmr0wt zp0Tr8Gm|p(2*uFOMJsv|{Tk?F40YOz^^p>3C38tDLhHzzUPHBFt6JQpRhlhLy5m$V zkI+;()zY;ny@nibHC4Pur{ZcjGfGi71}%H*C>*2-%^fw7K5l?x_=6Dw#WSBuWQjek;fO$3?Udqf*6l8hgv` ztX6X~wzwOGwcZ}0D~5=kd!Ei6#Gs2(bL~ryxhTybBD*|Rj8xjlVW^}sR?;#|3_i=W ztW-)*nx<)IlNfke(8{JW$+T&_T0I%BT2HzGY9seJxSuoiE9;GYb!`;$soFRn_q^tH zDy4G0qZ^|XiOt~Nin%>i9;IQaMxeaPRJ}-}G$EZ~ICED_wMQ`qM7+>b45f4U zjM87F-iUhjgz)bL9tXG=cJOYD(%;qjqWu_hY}SYA#M=*QG18E4gbb7l{Q3@#ql)qimi^g(ssGz`US69af?;IyxWV@26=X>6sJwH zR7Zae6PF zJji}JPPgINBCaD&x6AkxN_WVTXzy-SdoR3U!UG8I>4EZnC`Sp8$E2M$QAe0L$j3}s zHk1angG{?!-QTXcns@A)lQ(qdd)j>OaIbr!x1+Szw3B+r)y)n@eJ**h-I%}ny55PC z^Igp=U5OT!=QZ+*iCjeni>h>5m1wQV(6mH-bIhBLQg+(irb%-JX^h9IHiV&kV+Df-aO} zC5o{nKk@4e30f;X*(oJxOsNReB>@#zs)D+NRHCi3o9Ow|tzBmmbg7E)5b-({q5b2= zg-4#8EhOkN<@qTbh4*IZi5XEnGg(W}yH~^z+Io-lM3zHPH-<#qq#{K8ttz4$fB0`( z$Je2s+m+|{E#mG7oOP#Ct5ElTr7nZ|K*-s5sR)tPqEe#eyF=pdk)F6x@k!9V12GHn zWb}z*f=;VeK8T3>loA=;uawB>LsE&>o?Rtc`>3iF>SI!2tkZn&M6ZhxyIs6i(%Uhn z4|kfyG-A%km^Fwobt9vjx`|`jOeg5$s%;UTpiii_MIN72O7!%pfcmsLbM6^Y`x&Lt z4fJPKv|#pmsnm#+5nl-Lz8K;?7~(w?^a^(s67;2@xBnq{Uk-W{h4&TZJ@66nd2DBb zzN$QtJ<&7p9uD!ow!#xv`t=a+8zJ5|L%c^qyl;hg-wyG<6XJb0#QR=|_x%v>2O-`M zL%bh_cxR=z^mO@&QX>-y`e{J@ETA3@sGkSaF9Pb9N(ttV1=Ozs>hXa3bwK?lpnj{A zcnbbbDbd3p0_q8=#K=g{lYyE)2Gmml^(U!o>@dVC!_tkMftjC$(9?DntG!G%WgA(nNZ=SIRtjrgqJ`AU zwva*#F}%+S$F+E04-@*=H0(nBH@k*?hA3sy8rI(>?^4=kVEw75&Gt6KvQV(v+e|B& zPU~5XGKe^zjJ7WSa70Tk^83%$uc@4cZI!=%&1A9jN?XWEtn5X05xlGMhBne@vw)R> z@QSgLw}$%tW1EH442||K%Jm82_AQFN-T{n)^@HzSw_Gjay}O=lb$^Bskya`Jl~F1N z)lh09R8uL@@*b%MN6mV2Lp(3U+bccst{9S8?o%2PZSP;9XIJRuceEe>7Fi$6r5)nE zHN?9r#Ou7k+b~GdYn5g}aswR?i90F1rMK#a{`$e64Vwb3lwA+4Y@!i)hKPt@?RuU% z|0y^)LuqlXn+8@$BTyHusJ&!`_E$+u*=*{slZ5tL_t!{bhah*)XwhFMiM}QVv&D{i z3fWHdcL;vA6J*N%mQ+ghE;fD>10yYh)(R@N0##J8&B~)cp1^)`X(vK7UYelpfIf@1 z4i4yrotwdG1~YVsHe>hVVE)w_^@cO;Hfm*4+e{;}mQagd9T2yG(ppv0{TZ9gX6&{h zzHtT(iMSZzhEypcOBcdhB}<~Wks%LpqUG~csfigWR{Dmu8S_G}sdY2ACCINS?)DbC zc;GsSw$OM$7id?+n_l`Y1N$VX2<}aRN|90#t83lFCPp_3RF3$+8Q=#Sy+Eyq*jshA z0u5_}an4{4&7xaF4h{{;KE+jxkTbAn{MYjitx|Q*LHRpK5&1OK@<=6|=Z{oTCsb6O zC)8*_tyXFXb+46baJD*h{t9ol;Lrui^Ugb!|M1xgyfw;`-O8R{FTJHawn*jYv~{3- zc_3=rKuvO>yj?{_kg2YexTe9e?$GjB_xrMBZ1Af5C+*VgbNbKPW$iz0mvvUQaX>Wq zKm3d~Pl04k_NBeBpW;f(>Cer=%8FN@9Xj@6{l1_zC-CfaXhEJS!W_Cumd8YS+f=zT zU3#Y`wyyKtLq}12v#f2R)^lse=6ZSj5ZRt`jvYGOI(594&$h3f@6H|S9X(k*ay*~S znR@&1p`*Rs^S$fyw%&GkcaI#Gfri~K_2#=LdsB$d&-PBB?OSBqF_DJ+oZIOipV{g3 z_jw{K@jI$m4{Q_50ke%JaZ#zD`lsR|IY4;>$N)7^4@ZFrAAM8%6Kt4u{me4q6YW-bFTIujA0?g5Kq43JyIey%Hkkd+*4blij>Ac`%Q~q&|6dUVP8x zkNfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO z1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO z1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO p1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?c{zX6cJQO^JX literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00077.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00077.dcm new file mode 100644 index 0000000000000000000000000000000000000000..977c415d8aa0a8d526a11711202ee11c58e6deb7 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxkK|gBH~>No^9z(3iPpYshqZCc7hZOZRM&)se}B3=k_f zHc^aK%5o79OIaYGqVZ0t-~}&u*NS%$FQrsUd@`k0Q9f9e;>`z%|8siw?DW!rMJc{~ zv$fOb|36=!^YyRK={{$O{=c76#i>P*!c29T&f*xMA!=+FM|_4NIL=fqCnISlb16M( z=(?Uurjtf8g@1gbegz_mh_I5GzMoI$WvG;vq35&tRNBlM>70?zWzD>q$>t0*o6qEp zv}L9Z%QW*5ilLoLmh~k1HPFWx>a-W@!xCvF^T||%){r;7ifVSNYH!yn&6XzJak9%J zG*z}*x)!C^kmIeSir45=Tn%SNDGFzt8g6B(Qn#z^rdz4m?rgi!nl8Ih8h;rAQHuXp z2t;Wum25&bZ|EP_^^ZEWY9nN%)9F+$N`|j8x{*TeWD;qrIjl7 zRK4M~D$Z7IquafClh#AXR?X7(_YQVX9Mi01{?MT)?Tz`Z9PJ+$&_aw#70+qxD!a2< z&CRC8-6*d1b`o7ZMD+Z5I=c^pE=tYSFFod>G=qrT(pWL9jFHDsv9hUT$}lnbQf4Y; zS$fhm&2%nl032xLGTCItG+wQqj90BE-2k3PZZj933)%l|R7;tri)YDN)}X^QNPen|8OmcBLMt*qRw+xktVxMkr2W zYs5Wq8dbzzvPNE+AsAc=KSF}`I9xohl2$IAlh?IVoH4z_(-MPY)pmByV5}zSVmVf# z7+dlazp0p@)zXulQi8^mia=c!P;sRys7pvC+B&^~&Yx^;Kb@e4 z6WJ4;gZFrd_tj;dxYDnMcwZ0kz7gU*5#oI_#QRo=_w5kxJ0ae8L%i>Wc;654eh}jQ zFvL48y~U@?kChskNYGCL>Zbwqvw-?}K>Z@1eyNmT{$xP?DxjVUs9y)vZvyJKN{Of7 z@01cf{2`#8mP(9_1f2=g{4t=O38+6w6&&?{4)M;0cz+4;o|E1p<$nevPIrqMU4-@Y zR=J`u@fOtajLpsRUbY1b zEyVCXCmdJfeLYO*U(>J)@!#wk_8Fp-&1zVGm%Phqi-Gm0o-x~7j8qDRRC^0np_z=H z((^`!JFiR%S&5as$S#6+HQvxh25lCxG7z2} zD|xG^-+wlrMQVmdyB6g71aZ3;#9pt9QLuLKz3Y~%Hr~5yDXs3$5F#>4C7`lO#h@BW zt%qtVC0gDo)!?XEOKyngg?PK9C*Bo9GRxgcL!#|H%k=Crz4VUumQbycMz}dK($?5GPu`K$V)9kyz;)8GR$>gA4qdp+n=LwYk@CC?P82?Tx&m*N@?^KN=hsVbF^^4B`8jPKC|?g+94KF*d?j1KI&p%dt~T(SU#D5Nujw0@>a7Z_r5LBb2NZj-H?9BuQya%u6mK~5 z?AzXm-RPor`a3*?pudM?e_}+tWv^_z&a~6thgI()8?o1M=#ijz<*A}Wk4mqEh`HW73g%?DU`*~SU@@srURMy``wPfu zvM0*=N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N zfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>N mfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1nA#wI#I{~ literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00078.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00078.dcm new file mode 100644 index 0000000000000000000000000000000000000000..7aeef57317d902f66bc4b82fd0f805c459139290 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00079.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00079.dcm new file mode 100644 index 0000000000000000000000000000000000000000..a4170bc05077959a63a368d7cd5702d2132bd2b6 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00081.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00081.dcm new file mode 100644 index 0000000000000000000000000000000000000000..3e268af21e8c9787d44186108c90253eb076991c GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxkK|gBH~>+1dn2r*Cu1){vR>Om;`+mg(6ft0TjN46s&i zY@!⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00082.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00082.dcm new file mode 100644 index 0000000000000000000000000000000000000000..a77e5a0c7167e2c713fd2f10c9131083a7c1f3ae GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00083.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00083.dcm new file mode 100644 index 0000000000000000000000000000000000000000..93c31011eb813cc20f9e67fc9662de2627fa32f7 GIT binary patch literal 38838 zcmeI0TaX-88OOh!tee>gVX}c`1}&;%lG+5xq;GS}){yD+Om@f2Ez`3}R!1fiGK6Su zY@!⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00084.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00084.dcm new file mode 100644 index 0000000000000000000000000000000000000000..47d6db5d70801232447303cfde6ad95101af5361 GIT binary patch literal 38838 zcmeI0YmgjO8HT@|tee>gVX}c`1}&;%lG-Gap>K1`){yD+Om;`+mg(6ft0R*M86Z|} zY@!⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00085.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00085.dcm new file mode 100644 index 0000000000000000000000000000000000000000..7b9ef6f15a44c53b942ccde637bb4d55753be267 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxkK|6D_J^lG-Gap)b>O$<~nR^h|a~=9cN%B&#En2^nCm zY!Wt6j8)2V5fDpRAfTdnw^ZvOu#8KVF1r&xBY5u`9v8K!eMMrerYd&Ci+p$LvM<&9({&15#E zCkb9#hgXy>9;J&Aq|^f87y?Zx`AL|VyQG8Lf>x;hBKoSg)>g|W_hYyb1Lmdvs`tWv+a6oy3~x)_{$K8QvAO{ zAWEC4=n%4bL;twBf7Gc}9U;TE?Nl~OhOg4PkwWffKv@BG2-g*%Dz4!KRqA6PpjAt_ z;Z8;KX1!La>P2Z0HEYQ^cKq1s`MG!XjznpR8a0uH9;?)c$?+;+b_L2is8(-j#j-P1 zt9z}oyGz^F?B1|l>mg*9W@$%yN4uv_YF08gKOdz-F~5}){o@i^h*7cZx%K^}=B!q2 zW^8dc3hTXnL{|(EJ@-7FJB&dWrN;V~9&=HeK}2?CtQc0>$YH2hnN%`mm>7I1GnKL| zJ!zVzolP152U^*5CYd&kSF0!ERqIJNKyBn67x#0fc4e)8pr(ytK2_@H)I#InBMDYiNUezxcg=>Rugog94k?b zE%}LGUr5k;>B&whL1Riqpe_lhxKd@*C8QEP z;iM7spp03E7*jVgx~ZEuV(pNikE^ytc!EBm+7@|yQYq2XrvmEJ>dg6PMD1skMmNx( zRndak=cQ63Qbv3s#QS21_fUxUaL_BQ{xydQ*kKMe7H z6ylwg-tyDs$4ZS%B zT8QC&PB^Z|`+Atrzouaq;=kE7>@!3uYin447rl+N)4=*uPn+$XMk<9us*Ux7W#vqq zl|jV$WVChphal35;58WL?ET%~7M>6Lf1AO99vAIzm4;=MJ* zyDG%%yujN$NYZN+XF+l^od}6LCB5ah>gN9X!JiFV1Fe*r9$MK-Bk~Lp5y9H^Jazt4 zaBzmw;##*3tdK^aE?QN4$tvxyl9sdC+FvIL?YHi)k;D!`?w--2zfKZ;O$=s>9rF~j zo#^in{A?%4l>IF$OZ6@`eiH*DErQkxD%OK?RP3R7+nK$SQ&-KvkZzDq<;zY~msZs+o5-WWxV{F5`kZbBp%Gw^}*ARDmJ6$|* z9Yot{JfI7-C*n;n|CWJ$5>y2Dra;9=(ZT9kH?fJ)jRKV-{%;2O!A37oD>2;{yi03T-E&a>4pKxu4Ye{-3FrAERn!R;Rp$vc z8c=JM8baM`r5c>AE}g&1n=QC>f%3fbPUk;-whV8b@?^KN=hsVbIgjm9`8n+vC|?$c z+Br~@94KF|q9VvtS4v#d;8=HQWvu&srDSaIs{AMI^6Yc_&)OC3KW$fZR8>sb~)#FEcc~jThQ||G(qpi~?diiYo+J)|sx!$o;&isjd7BA8E z(Ya&2y$ikT^S0h@?(NQ>kb#EXF7_6>r+QO}&(HQwqU~E`+cA-b{G8kEAD`Ln_V;-r zEAcz3SP$$J%L1)ktG8WxpFDF5YRe_JjsMQxa?@*dDy99U%4&_C?v(LjbYRyFy(D!C z`oMI(QtIrf<297-RLiw?rH1j_yJD-n@L?ur%+63Mp73~ z)mK<2sp+8gfa+ajBlbEjeJNfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 mU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60s1#B7*Oy4 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00086.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00086.dcm new file mode 100644 index 0000000000000000000000000000000000000000..3436e6268c79b222598227d7e4a91b790b203a27 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00087.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00087.dcm new file mode 100644 index 0000000000000000000000000000000000000000..253209d02bc5c216606788f25149a0ee8a3f8b94 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00088.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00088.dcm new file mode 100644 index 0000000000000000000000000000000000000000..1979fa5d4a73dda3f6085daf914a5d692fc3b150 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00089.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00089.dcm new file mode 100644 index 0000000000000000000000000000000000000000..74925b2267b11a28d5788000e9a74e64726b2145 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00090.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00090.dcm new file mode 100644 index 0000000000000000000000000000000000000000..313fd58e7de2317b58030d16828e6c350b45ce72 GIT binary patch literal 38842 zcmeI0YmgjO8HT@|tjlZ+VX}c`1}&;%lG+5xq%U*L){yD+Om;`+mhRakt0R*M86Z}& z37aU!DrLC{h@~tLP*J>FDtN&Qc(+pC5ig|_CH^v{R#E=2D#bso5`53;*|XD20~V$D z=bNpaKJR8tb9s0^JXfALMm

sb;sT_Aaf`Y-!RRC%ZgC zQ)R2AYf*X)Io@ijc#TfQ)o^B%qHxBk;Z~+9b-UVbx|N#k&bAw^>9QN8@s}YGrTBk^ zK$JF6$tGm;hW>G5|EN=|HbO=^olfPVWcVth8!6;&29y<02XI{xs^J=rQ?)S$0$Qz% z8*W!MZ`Ny-YhIKVP_vrsxnpyujvjtj?@*K$saY3U=&@>Jm~5{KW>=tm8PyvttyHn6 z>J6_|adv21-0lrqwH`utXqI-Uccgpjgk~l4M~_D7K+JFDc>lPF7GhMYcur$)*`3vD zZZ<9MMsc0Dhv3l>Vm97wyN8W3xU?C*FQgi;;$WBV?dd^vA6>Mh8(ErrENm z#ZfOtvs;T}o(Q+zsF&lID~_j;XSX`yO55d<>leIc#kH$`dAAp*jq+@(6sOIyR7Z9*@g=eH8;x|Ghr97I7VMx?RRwDBU4TqP@FS?Y;1Z2@fE+rw7XSp&X@rHj_+eOww`yC+EAG zSGp1{EYEA?6%)CN3>H=Cv?|d$k)fFq_02JFI!d`|cb98d>T!y#pFx)UiQswz6%)xuJ^u&y)J~&xR(7RW}5ZZc=^hB0JP&bA|+@vBz{H-dY8-L`lmyNGS zKesE-?_0#(5jg8krBqZf zc7jf;Rz8S``;-zH-LI6$=tEM8)}CD@TKlM~73yPBVXV`9??kVQ5xZTyRx;Z$rjK-* zb_OvI%9yo?F?A!Wo4Sc(#>^z>twnZMFR7&*pset;lI&=Pw?n+|gm~W#@xB-0eLuweL5TOm z5buoimYyy@Qfg!(K|cbmw;Hdvoh<7%``*Vo*tn`*B|05W2rd!nLe5|K; z$Q6Z&x1f%9tflLQjvaz9V>Zj zso%eD=5l%-wR;!k`UItYi(;=ghf%O$@V)Dnt2W-d8z`;r&k!OqN+qDOO2wcWN^OE_ zDkWOpBh}!j*+6cH=Y@ECr6=AMLo&;KN<*UU{VVkB3cdV}_T%3o>w~$pL%g?!cvppZ zofmi;2T6LZ(kw`Bq~jrRC#ARaR^8ZNKlrm@bD)*7>!Fp+G$PLs5fQ9i&r|0=4F_i^ zEv|L*zzS&u>cSPZ7q8I%DrqU3&HZ(f(0=Rw8cFOB?fCYB1Ge*3F;2$GidAJfL_?S z1*~Q;Lx*S!b}tU*U#(GZIMZ&URyMUQG$LyWwfNNmaSJG|QzhM>vB_LE-8RHG&Y&R? z7em~TDn(@J0(h%rN%S@{ySQlw;Kb*-D&#OOwm$`SuJ1N>m47pWByd#kQiq+x9^ z&Kb<1X}dM#;LwolQ(VOeIRksfe?9NeDpmI!l)r-%kx4PKT1q+ObQPXAfEto^6$vd+mi4u}T-ho8~r zDUi&|zO)ziW3RNF{@g6Ctat_5p<^%B?+aRU0?$r|7UY>C%%PiPc}$eIO_e*-rFUv# z>pI^(JcrtwWo;9+o?AP1s8=v`y*=d|JA9;d>Ugh^YhOFxJ#@G?chWw3ypYSAdi%)X zx!&&i-t~pF-gb9)j~xN#GIt9IN zx=}56b~W%C%5-X#db`@dZ+@L-*}k%GV5+w&u$E(-{vJ^5!QQm#cTa2?Usb&Jsb}8y zM(jqHwA0_=Aq4&1FZ&ZC+AVu!+jXX${x0t-cx^m6(;9w&lmBK?*D@&-Q<{;~#Z&ba z)=6qQXg#2M7ukrtjzgaddY3;~bm$@Jl@KxCdq=^X>=um4g9R)m^~tLX;`>km8BO*? zS)aV7U?5e!?Z;kQFtM1MysjX=4~w|7H^!*34~;G0pFd212`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G kCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egH*8=-VkM*si- literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00091.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00091.dcm new file mode 100644 index 0000000000000000000000000000000000000000..6bf02e6d05a7ca85198a08d4b1ad5cf70ccfb15a GIT binary patch literal 38842 zcmeI0TaX-88OOh!tee>gVX}c`CR$X-B(+H-Ltm!nlC2@r+cVi6nOml3ldOyk6EZ-o z+}Mp`tWuVXf>_D|0Tso&rGgi{;9V=_9r031QR0&+wTkk=DvCEB1pnvs?Aht10gF<6 z`DSaU&;NhEKIiLSpVNKL5dD8Y#j;zCAcfh=FrC9OLPJ!a5=VT7A~?>LH<6Jvli8G> zG<03hCheq=OyM8js9%GK0wSzry6@-goD7xHPGz&1OxjEvRw`qgDI;s?DI;TLt(2xs-8r@qHYXz+KcsJiL{crWGX@%$(vbERi{;PrnGXSrAc?3oYDwQ zm#mhqMd>x;hBKoSg)>g|W_h|?b1Lmdvs`tWbM1O-rqqnm_{$K8QvAO{ zAWEC5=n%4bL;tv?f7Gc}9U;TE!7@sQuhP1aLhfcjSpju5t}8-ST*FDK)W<+TtCn!X zor>nod96~_i_#)$){%4k#PQR|j=ZyXI7&;@sEI7}SfxHpj#mM*%TeA*wR%e{mYwNZ z-D{QI-P-nM_r@Js4d#-aBo9t9T{dOnKAL5iPL-V?5b{jo^rZsgoL7P;Bhltmy2<;y?Ek63> zTp>Z1D9=yfIJ`GYPt1tQgOk++y=zqrp{;jIPh>d+byG;h%_>5~-=-qE@kjo)b9^KE zxm|gF-y-ggz*%=HwFY(XSLza|4}_e3mx>TsEh!~hzB?rT9_fiI6`us%I}o!NPez|` z5_Cqj@DW1Z%E3%xEz>}BG$lD-UM`e>)& zq!II=j9HHuQ#UfYshc=rU6G)VtF}dWfA<%&@0?kNYIyp-oc0AeL3h+6y8^q_rOQQ=dnEr`l|9o z_C(LXdnCmB+A2?6>DNQNZ-jW?4DlWf@xB$}eLKYaPKfv25bt{--uFYiAB1>64Do&x z;+>V=^3&zVN{vh;=qCa7(}4O}K>a+Rei2Z=R7x;^ETDcBP>%=HuLJ5g0rgv@#8dEh zN{Jr+5KvD@B}PVqo($CdF`%9bs6R;+9QA(=@y>;Ke+luPmEJPte+DDYb_*JvkM;C! zxuP)f7S!>MwRGLkvBMCnjFfKV49xs2gr2suSnXx9mThFQB7tL=SShT3i59GvZNWkd zF}%+S#|?O24-@*=H0(nBH@k*?hA8C>4eRfsw~2NcSbyqiv%SkmrBFz< zQ@?-R%x3i*YWFY6^$AJ`mc(A~1V+K;!S`;nRB`a$-AuN+KSPK}E0uuCC>4XME43A> zp_FKOpHzdRW-~QIJTJuCFFo@v>$(^tPkeW4)NX+;$0Qu zbzb0Y86@eoigO^jg-(XVos!=2TXjo+{ov1rZGl!wO%JVXqY-(Ah=^eAx>lY46datP zw7Ax711qEvs0&xsUc5^CtEA;@w)NLZLi?@zYb3Elkh^EJ=&zGRUlW7bV#hp~8F*uA)zf7N=e?#?vp)sm@grx968sKu`ih+9NygDUC%j7?@UcH0o&ID>{n zTnuqTsuYo>3*fDhCDGf+kcT+Y@>*4DU`Ar4Z|U}S%nP}uPV2cHL4FN!w|CG*1J^;c zgT@28KvNNKX8E@a?317(xHknVMv4wr*Sd*KjBXUD6!CvEzz;Thfm#uujgG_qw1c6@^_FT@@c4*kxDqvAE}~FsHi$msL_C0 zr_>PYUMtn$Y<20pRo+~|rSp~Ntv#Lp@YyoF^~#go%AQ{@z2!W1Nag3WbD(@_AZph@ zO>&@onTm=aQ(Y->O@m|IrIoSn_mz^d!K?D0w9B*4?LTW*wEwhS(OKEX)uO@w;b*jQ z8YFYFFYSf>IIAtUKQ{}jD_((i>BNim`-0Zoz_Zh(MR}$ObLnPT9uwtV)1}T#@g17j zy3Tix97pXfvbKR*uUS2DxR*C|y*=%oIC8Xg`eZMkZC^LvJ$$5h{FHO-WImfS_4d&t z$9sF{dpG25z1`f~J$6zC8g{$bo9~|LO(Q-(*IPi_x5~C-A`SUDx5qy|v&Zf4^F&tS zcT}++*d>+)TDw+nyYxPJ=2p~}OKuzgoxSCz*XmSC`%9J88a>@9J;>W znR=zvnX2P8l9lTW|( zjo6JYYq!6{LkRl2U-l0faPX3!oT}!7>Old|^7f;n! zSSP9Jp!I<2U1THnIxc-K=w13?!KH_!S46~o@9lYWvYR(159P6#)F-dWi|@mEWHi|m zWqtD6yn$5pwjX<4-o#>V^7_2^J|g1I-4vtx0W`LVfBrB5Ccp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% km;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP@LZy~Z!SO5S3 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00092.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00092.dcm new file mode 100644 index 0000000000000000000000000000000000000000..f20f6f787785a0360c8e249d759085e99cf84f40 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxkK|gGzNwQkx(d`Zl+04Vm7a$?nM9GCiAQWn`F;0b=E{ zY@!⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00093.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00093.dcm new file mode 100644 index 0000000000000000000000000000000000000000..be71f585c913e396b3275086f86cca302c9e32ae GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00095.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00095.dcm new file mode 100644 index 0000000000000000000000000000000000000000..694e157f03d50ac72f5d5c9e73ad108bf3191a7b GIT binary patch literal 38842 zcmeI0TaX-88OOh!tjlbKFxkK|gBH~>No^9z(3iPpYsmEWOm;`+mhRakDA#i>P*!fbVz&f+^lL)4fO-#CUM_@1p?N=DL5=2Cjn z&~-hROec+G3jg>-{Tf6R5n&}WeLtVh%TOsz%gpL}K9{qsbk|PoiG~eT<<_d$B$&kybLFOhsq|c{A&%X1A*LlvZiBH0h3$T^^z7 zvenYHD7}UpZ!J~4MyKLxI5SF7IOEiCE7O&_U2QkrO3ilX+Ktvs*^Scp%MgfC{J%mV zN*k$U6S8?j|9eyaTc=iSga9m^%0h~B@KWBtz0IX%$UZj)syk6^`sl1HgcbX`#D>`s@~XF*G4g)s*Uq;&ud<%QYzOw zx-m+T*evd?nA_9kQ5u$N1j?&S*KHc53F!>OIe6uCdlX|p#0x!Lo^eLWP&$uel>RF9 zX4I=EgnuvaIKaI~2k*ux{au|e+K(Z}W__3z-gZEXk%oLDWS~^^$E`L-2T&TOxw5Cl zQ7=ZbTZ?0!2)Ev-m*bc#j;E1lw>siV+vSq$7rbW0wX1%4w-={P@@%UVr!BHnM~h7= zp~VzRizp2frc^pkx1x;Mh6@rkx5*kaV_9*!UB(-5??7oS;aQfOaId@2+gaLcrjvTd)y)n@eLi`h-I%}b#@@n-`L5=b zu0jhd^BQ@@M6M!(B~?15O0-^NXr@GcbIhBGQf|hba_vezPO%NM$a24YO^i^S#x{t1 z;xwv=y=a5HGD9%97=DBV?QytxUL~zuIw!Adk2qsyx2Gir$Exk@nZ;O5(1miWL@~DH z5x=RJp!L#|ol=6vl!`!I5>RoaDyU0HCE7Z(g(I@Q$ zol>oQ5D^b3B{F(YDUs2Kq!O(?w??$~QB^C{$E3nor}^GOuZt0Tg?O!GuE3Z++-cew z#GIBf>kwn=Mpiemc+icEnMu&cRofywL7z}#I@1c)~DNQNZ-jW?4DlWd@xB$}eLKYaPKfv25bt{--uFYiAB1>64Do&x z;+>J+^3&zVN{vh;=qCa7(}4O}K>a+Rei2Z=R7x;^JfMCRP)`KZuLJ5g0rgv@#8dEh zN{Jr+5KvD_B}PVqo(k0bF`%9fs6R;+9QA(=@y>>Le+luPlio7re+DDYbc-5Yfc5lF zxuP)f7S!>MwRGLkvBMCnjFfKV4b1!;gq}&~u-eP!thABCiUf{fVx_R|C0ejvwgn3< z#PB{Re6Pp*dYI6^rePQ2zu7hHGejw$*0BCAd6&`-1M5#cW43n~sT2ySb{Z=nD{tbg zEF#V)qpiz7e8Y2*-+#7#wel%!tNitAHiw;8CWWlT%3fp_!Mhr7Xd{C*i&z;5&yJP6 zb=2=)H*+~XkJ`OUa(#l*z9q5OTfivTIQZUm%T*ii-Hnu1_h$$Z8Kn|XS*2o74W%|i zHI))A?~!V7)NCX-#PdSDz0wo!iXoZhKBXbi_Wo6RZk1knNBi+t%lcq0?GW!RA>K71 zUgsQd(;!K&Rhk3IO>{gY?u7J~->RGX>j!@}Yzeedc0IJRg+}BVA|isd>v`(@r{UlX zrNy;w8CW5WKwY$|_L5cFUnMPPv!%aI654OwUn7Yfg4{i$MSq~7a*u6NIf3-%v;mo*=TG`aL(uk}j)Z$kM#4Vz{n zTnuqTsuYo>3*oJiCDGf+kcT+Y@_DM%#EisB-^}H=VqVBKbvm2h7Ub6ycY7OMJa8RE z+h{zXi!>GSW|n`;z&;5of_qb>Qlw;Kb*-D&#OOwm$`SuJ1N>m47pWByd#kQiq+x9^ z&Kb<1X}dM#;LwolQ(VOeIRksff4$()8ddi^l)r-%kr(p%1Bn^b;I+Xu>*2cmWi z)FcPWSE#56GS!t5*EBfR9aVhGfoG>fi}Fkn=FqLOJSNIJrpuj~(mOP< zb)D}XI*QucWNj0*o?AP1uvaj3y*=$5J9M~p@_4V1Yu_;6J$R^h^n`uncp;ZJ_4eUI zM|->Hdp8x*dfVOIJ#t(I8tHbaH{U(cn?`(LuD5`;ZlrqyUYK6c9+xN=ZUPu z@2FxuutO{hw06DGcIbWb%+08+l$|#IJG(2c*XmTud&||;8a>@DJ;?8 znMSqTnQGuQl(#^-~2kwvVB$Gz*KKlV6DVB{XL-AgS~0<@1NK@zNUD?Q_sBh zjo6JYYp1`%LkRkNQ1&NAv|IMdw(HC|{axNQ@Y;BCrZxNkC;!c)u4PgvrZgj|i>K-< ztdrDq(0WMqF0v7O9fv*_^e#VLbm(E}l@KxCdwap0>=um40|hK5^~viB;`3ku8BO*? zS)aVVU?5e!?Z@6wFtM1Mys;oY4~e+5x5TKi4~;G2pARO$1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 k6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)DZ4ddHT=>Px# literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00096.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00096.dcm new file mode 100644 index 0000000000000000000000000000000000000000..fd8416fcc5eb1567b7b2074532205e18ba250f4b GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00097.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00097.dcm new file mode 100644 index 0000000000000000000000000000000000000000..2151622f44a55d539de490b97cff8f622e1be84e GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00098.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00098.dcm new file mode 100644 index 0000000000000000000000000000000000000000..94d77768d6385150866b905ff976ff6547667338 GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00099.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00099.dcm new file mode 100644 index 0000000000000000000000000000000000000000..f0d44afea5edf071047213e34e94400f603fd31a GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00101.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00101.dcm new file mode 100644 index 0000000000000000000000000000000000000000..8cfa2b15fa2d8eaf70156a787827c8ff5c6a2c24 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00102.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00102.dcm new file mode 100644 index 0000000000000000000000000000000000000000..de862be2b44de8d022fda9447f448750cbf027dc GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00104.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00104.dcm new file mode 100644 index 0000000000000000000000000000000000000000..74fa2e5de7eeea81d9c25d3a35d43d1a713398b2 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00105.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00105.dcm new file mode 100644 index 0000000000000000000000000000000000000000..767e5dc59dcd358f03e9fe1f785e115970cd3c6a GIT binary patch literal 38836 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00106.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00106.dcm new file mode 100644 index 0000000000000000000000000000000000000000..15befdee79837dfd57e1928a66d2444234fadb5c GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00107.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00107.dcm new file mode 100644 index 0000000000000000000000000000000000000000..4aea445d3aa056b180a98d27b0cde423867c4a24 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00108.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00108.dcm new file mode 100644 index 0000000000000000000000000000000000000000..8a3ef21edba3d31b4fa610c7d69ce2c921f9ca26 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00109.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00109.dcm new file mode 100644 index 0000000000000000000000000000000000000000..e66c13b83b35394d2a4279f3180c4da2059f0717 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00110.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00110.dcm new file mode 100644 index 0000000000000000000000000000000000000000..88cc818d4aed389edeab3581d29602b3d0ed3b2c GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00112.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00112.dcm new file mode 100644 index 0000000000000000000000000000000000000000..7f24681a070f726d1beebccdd8a8640135b32865 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00113.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00113.dcm new file mode 100644 index 0000000000000000000000000000000000000000..4975932f98c3fad86655d01336b017706bbd3d75 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00114.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00114.dcm new file mode 100644 index 0000000000000000000000000000000000000000..bb4bedcefa578e4baab463f640311d436bfc852e GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00115.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00115.dcm new file mode 100644 index 0000000000000000000000000000000000000000..1f55968bb4eee97f3151b47140632249ba89a6de GIT binary patch literal 38844 zcmeI0TaX-88OOh!tjlbKFxkK|gBH~>No|5==544yx?6c-bK8WQk3{)O0A-Nu!`c%2f_b2J$rU~X~3cs zU%uJe>GS`euh04V*XMMfGerO2Pr2&WV@P4PHcDr3jL`@+cZwrEBQYFjs~3`yHq&`a zPaC?f=hNA=k+$%UZ`7|sLNmSpPs5pUio=8wSS>gQHIE`WPA6Y}U%h$q1CK8y0dmLn;$eSK_*2RL3g)crUupk_5WM~)sjdHCSF`Um2)NUes*LQmA1qvZHCFuN4xi>c9UYvrml z-Dvvls=H0w?DekSqV*B7P0MHp`iFWak87E9;qc)&U6}}4IW{;hqJ;#NtG?UZQ}O1s zx|hp}yHQ%}?CAo%x;VAgzVw)j(<~zL%VWjJ*hT?EC6lw#mSJM>S*B%W zGI|<=Et^jp00&xmJD0XiB=~bN;L-MSEm~ejnkBLM&TT|bh0-zOT*q5A}P;``gNU%xqfkdb-)gs4t}VcbfB8UE4o?V!o&O z<;&5+^1Mb~36ZPFU{RG$sS>Rf8Jd=;Z%z0!amvqlJ3Xh`NK#_mEVA4uUlU`Lq=|Ln zp192#V$WMAugnk(&W9f(L3%EiKAV@wB`e~XIfB_H|Q#gpsM z&uz*J`WA7wht9e~sa2?Zzfu=LeIVlOJ5_|pYEdcC@?8<}cS}!PsraPmo}rk9WIFzY zlcH0ql@B7~UZq4v_bDYZ`jAwjwP#m});_9gh5DFO80$3OKi=wTZ9IU6e z$rXi(x1f%9Y)01&9XkxM%CK~!U|{CwA#^*N$7(N^&t$QmC}0hU9R*ejYhI#-%*(cr zK?@1I&k4u1cwdha`qwnNJ#QXX}+G=10s@rB~t6^CvSSXlj+t%|M z?Uio6BSGWn0KgtnEd9F}$tujy7zxS;E>tcuu11 zuR%t#|6C!5)C`UGEXoxM;`T0z-QJxT2kVF5yk4c|;LW?9vg!_vAi`EE1(j1O0o7D$ zBUDQ%(eiGohR4l%@*+Gx!rLP~@wOO|S?*OD5^e8Wq32fU<+pSY{}x#v&ZQIKy*0wS zBEsvwz}qlP(r=gNKym{ei-v>_=1BQ7-L8h$hQZ)Em;L(boPU zy|805Sj}SPIYOJUe{nJY>di*eo$;FWim7d;F^8D(S(DP3Lpjjv>Br z291cg1mZ?iDJDzj!doRvqPMXTA914Pvs9^t897Q;-nKVmUWjrbmoc`4`L)E|-a_XO zT?f$?nhfa@?Tq;|OTT7drvw$ly(v*SR(7zy)=g|wk~>!+A*=a>S-k! z)rRBT;T&3yS4R#mjmSR5Rg954v}^p=^DeDYb zcu1{QY6Nw!m1=mlx^(smZ?5FhIm+|TI$8Yi=_7nu^Dk_Fdb*02L4Uct~mdAR~mnCDvR~0;Imu8^SGwmKdc&L5ySihL>Tr=N0aIk;mgmd^_?ZhJJ{nP1pVD7`x7JDtN0bib7$PaKJN;69XvU+8h(P4|7Kd(Yzsw8Gt#`&I8E8?oDQ>9b)EyC;_(l3p1R^Zj=e&F#ISv3-9L%SnCvRYmcApoomN z_eELXesvMcCiD@+UQ;x&nA?7BQG6d1ac6EwP;)ODTfjemm;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 mU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60s1$nF;cGp literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00116.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00116.dcm new file mode 100644 index 0000000000000000000000000000000000000000..aaca64d01b694df9b5a4513092c981ef170ee99a GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00117.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00117.dcm new file mode 100644 index 0000000000000000000000000000000000000000..e1a16e6380549f8537dcbf38548992f74b1cfe9a GIT binary patch literal 38844 zcmeI0TaX-88OOh!tjlbKFxkK|gBH~>+1ezUp}VK&maQSv>6z?~%q`usNmfUO2^k<( zZfv3$tCZ!UAeOR$1Qo@*rGgi{;9YCWJL093qQoatY8B;!RTOVNNc^AEvuCH51}sYP z<(sXYKL7vu`kb$SeNOi|L-haslqyawf)r+}!*mYE2n|tVmpI}x6v1(}ayc1EGnupW zq@nA2E}2dmNeln@M*SK@6cLe1X8L|UotL3f=5qP0l{2!rl$kPe*>u)0^BFUhO{cRd zGizC?tZ7(Tv=c)+m#peZ^lPAQ40YNI^^p>3CG$xuLL11NSw}UyRke3%m1awm?l{@y z5t=TiTDlgcSCQkbrHa?+R9p>bMkxwsoEmOrx>C2R?WS9)+3sAs(V8i{Q5t^<0#S

lg;W$+rV<4c_ z%DCZnRrBV&R=MUyX#q8B$v%4Q=&2)z-q|}CrA2DiMHYIj+88F=tAg28C~u>BqotK9 z_H@1BwJOdIZHwEzd8^h#$PO)~9qb+Mo;snWlKCS?qI7M{Z{>LZxQG^FRH}GRV{h4= z(`s%uE$&8fy|;(xsv)B1&eORA7<5r;u7B|{7o}N5%(;7Z3na%X~;K121-SL+-hTV0HtA? zD|=cT^$iuckKF;H+ScI+I;VDuY01mqqNsdC-si2n;ne$eDXlMF@N2Sy%Q(r zyP8+J8ZE5MYvdIZxrz)HRq2c>(Rz`gX^Hygm^Txp+>E=+wJY^F#Wu_$%l+~-F+y<~ z+aT_V)2Jf$k`40848h=1_z@Dc$Km36l}zQ*IeA@s#2GWYJuNXfR&8g`EXHbrE|y~@ zim@d>@tcYXS}#4>DJ5u3sR-0%0ToxOg1UrMqOGL~I)A3MYbimOs|XJfuTc@&KWfW!^6;K}tIr|rCMi7OSK1l>0fvk*^4 zpRf~jMz!)mM4VMhWOTn$BBKvUC0cuSjcDzos#d6vNrkaa^Su+jE=KH?;D zl_#<%dIsJjA>P+kdE!dH9^!o?#QSE5_h^Xstq||qA>MaFyzhp1-wW}+AL9KW#QR~0 z_oEPRNqWmqmme!NGMS*C1k_Ih>SqD<^MLwAK>boF!Thm+`c*(Z9#FpysNV$CZQ;~ksQbwkGvL##3^-N+l5`8fzZlg?qahs{OW$YDhS$1t%{Sob0=q+YUx z6k3SkeNH&8$NPGi(7&c(7vjI!HS9BlYZzI$Cf?VV({=+ZP(5R|w;Ps)g4Nz`B{La4 zhlng9E+nI^%Re09xybN8TfwIC7B*J?3O1X=-Ya8~Mq+I*@{8bYjd!$>L7PRa4TNXM zO5Qs1`_JaH$jm_P-bJ}WL22Kj*zKLhIM_J&=5@Q#CVo(jG zHbXU)5-snMYH-|aBsawKLcG1w6K{(lndLsEA<_2!ReElfUU^IV@o$#(!CcxQ-djSv zYeKxv^Sn)iB)wK?4kS0x@sPNa(p!G7ZtAZf{P{2uXr=6WXk~&%innR z;0&e3wN4DIkw%~{Syg-4D($b6mb01Yuat!LTlZH6{?;JBrnuW%>C%Dg zAlgdf0bQhB5pQPs*9`2Gpdz?8MJh!~HrCg=iEWH-6sa8Xe>K3?MK4k-B6e3@tw_V# zV4O3UL(_I^$ibl@*{8UQ5po80jsH6D&>B_u9F)I@6p>Fut&CK{dHzThbwWkec|wf_ z)LNy6Q1@!724|~77q0T=iVj_*Jnw>2g%2-P;H^`h>{j;tTInt4u~jNRr)>k}Hw2=# z57ZwaIBj169u|D;`>eNO*byQ2N4?TXIHHm(&7{trK+ z%~K$mmwjo^@5f$kIsLg=TwU=pv_r>UsNd(c<^-Od4lT$tMVLdk%JP^fZ=WuAW=ikS z#O8Ird*~=?ZiD2-qhQN z4;}68p6}gMNb7BPclXF~8EB;2rQUq^WN#Yrg}L4dw0*m5J0{YQpL09?<1;&*{!UM1 zC4Ny5>w)cJS)jG+jkZJYlV@&5ZKdqA@!#29alKZjTHaf(uGZ-3ZW%8|2ln02i&9(A z`(_%|a%Wcquc1t*R;jnE4gBiYX_oD)`v#_Zs{(5!#_8_@#V+iPn}7fKmhm;k8=idn zt*^&^bXhz7Jsv{P-~F;bF{0hFSGHYe#_8|#u7TIalQXU1Cph_UCUq@ip=fDFQWsCv zmsuyN>7ez1>Rn_bb~_GzF6d$RQmPh#P`7hGMeg% zvOaZv!9c2d+mF4WU}7;hbz?z%9};orZi!K29~xW0KYy426JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W kOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~ZrH~d{u{Qv*} literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00118.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00118.dcm new file mode 100644 index 0000000000000000000000000000000000000000..7eb3971a2cfcbc7a72ea071e9d814f87b8fb8a3c GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00119.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00119.dcm new file mode 100644 index 0000000000000000000000000000000000000000..bb7d229f3f756fa6a85fe74fb07bfc9624666ca6 GIT binary patch literal 38840 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00120.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00120.dcm new file mode 100644 index 0000000000000000000000000000000000000000..d5691b1671a7de871f5e4f3e8756984226d024a7 GIT binary patch literal 38840 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00122.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00122.dcm new file mode 100644 index 0000000000000000000000000000000000000000..521bdd2122d67c8929b0b5390dc6f92142fd646b GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00123.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00123.dcm new file mode 100644 index 0000000000000000000000000000000000000000..ec6dd2bd176d014d658f19bce0ea47c8c8762295 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00124.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00124.dcm new file mode 100644 index 0000000000000000000000000000000000000000..5d54263a8a850fa0c7089f4378d298d9bf0e51a7 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00127.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00127.dcm new file mode 100644 index 0000000000000000000000000000000000000000..3835ff4b47b0197ce830e499341d20c9fd62a1f9 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00128.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00128.dcm new file mode 100644 index 0000000000000000000000000000000000000000..3eeaaa427e63a7690bd4558976e546b7f217be24 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00129.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00129.dcm new file mode 100644 index 0000000000000000000000000000000000000000..57e8cb3ab2b47fb5edc517412e2bd602cab15fa3 GIT binary patch literal 38844 zcmeI0TaX-88OOh!tee>gVX_I!3|dsjB(({ep|5kv){vR)ne2|tEz`3}Rz`*i86Z|} zY@!⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00132.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00132.dcm new file mode 100644 index 0000000000000000000000000000000000000000..bbd6cd1e62288726947668779de10f26881ba701 GIT binary patch literal 38844 zcmeI0TaX-88OOh!tjlbKFxiA<1}&;%lG+4K)3>>0Ysk#@Om;`+mg(6fD+9xX3=k_f zHc^aK%5qTwX< zX&6REPwJ-b;2)o;UxkP~B5Xa?_p`~Y43*Nxkxp4j+c49Pl}$UzjAh$qGLy2>rfH>9 zj_sH!Cqgl_vwlTSqF)nzjG<0@sXlCxmY&to#yaw5)=;(3suZTQa-*e5cbp2P5t=U9 zEklda>&W$1Q`xI`%1sStMkxwsoa)W;bh%cjv>VNGwa}bv*IP5CW|YQXfk2ev{}lpJ z+CaquA)7b#zc=>34Qf?K$V?`aP9{pGuTqBTAa^UE?0~u!*A<~EuHh(E>SG|FRZF}{v0~aOGmD{OrybofEet-#ava+> zbjz}m8Qlap(8{FJddf0itDel)tS7?+wUPT=+|SwCm9_ewnl_60RH>hjdtUWAx>lf3nvl*goc&i!w?{DsM7+?`r5SgWOr^6pM(M9o zZ$iC#LiqOrj|1F`Wbkf`(%;qjqWu_hY}AJ7*gN)VG18E4giMt3{6+hx27_YRa+6P{jr+QMf#PVd8$2iecW z>HT=Ni0g>coig4==`L9k?cJ+t?}s-`Xc_Lwf${?=M=6_5>B*FZI>O9BK9=nyp){!N zWF^~`z3pmK^Nw79{O0a_Pn+)@>~)XzwikC>N!{o)4XcAupVjxZ>+{#$*gJN7zN>k~ zE78L8yhdIzk*mmHQI$@r60H>(T8^l1jCnIr%FHyUnuT&LPO){f$a1fIO^i^S#@2~@ z;?^sOUB6CVnJE}t1V2K8_BdQTuXHPMiiHh(L@dg#4{o|H}Cr{7i z6LhKa{1gtudzTn6dav|EmP1gtghbq`B1HThDxw>I;%}FYuR}j~ zD$nm*#N8D*>u#l1q3(l9T?+M~khAYm5hANar9{j3hQ!||J#nStNYMQQF$-}$`b;4~ zCsivSM#KY3iHsgpN@VmAsYGkfuM(|&T-6Ho38^q9Xufx>*TsmvT)b9Nmt#yH>@*4~ z#5^ox)*!~hQo^td3*RX#m7q_mwncb?KBd|gc|4+&=;_k|^%-^Mqi03!XO%`b(2uHU z!R+%=sSzn7z7XPlF~oZ;#CtsGlC=wsq|YDa>;syvZB z(OGy;gm_{y8KwFk%45rmK>a45eyfyt3jR(h z(Ze4C>KUoT$VkxXK+PWm>e+z$lT^V`|K||zOo;cF5bt^EEm8hwFyd4 ziI#UsH8^fIP&35yLcHD56K{(lndKg(A<_2U6?$%kUVcma@mIw^ zB5&g$Nv~C$1IdkaG$ii0^p@VM8~ZB=e?Dvuv{Gt%Xk{~v$TLJl1gqEc)cMcC!5K=6 zYu!AsMjC-yzoPcy7201XEoHO0zfuy~Z{1%di9LecKchu|r6l^A7|a%X=4oU*(cdHZ z*-nrp`&&}B>RoL8CI&`Y1g+&&tOr$4v3sw&dTIhY%B8&s(Rgu!x&!(Y+S)gu7j|p` zt68i(hiD7-FD~X^wO*^cGtGLnWNBMyMAi~&@w)@!7EoHNN`^mU^-Mb1HpM5-pdk?# zL)?%mMP%thc&lVd^fof&Ax^Y>o+>pkBk>fm4QC7Hg(#;|MrLb}UqjsOt#r}Abr5Z( z@qo_LRK%NE`ZWVPC8!AQO`eL8Vgc)G!@@SkF!NN3_`e!p>tf`o6%o6uu9l}^Z7|Lq z%%M?eR*{2CL$XhC6(i&h>>B@d&ZSkV?gc1+4=Ey_gIXS`g!BB7D(Zxas`G>z4XD*h z4WaJ!QVq^lm(E||&E;LXKzZJICvqP>Rfe}ld9qvC^BbkNl*d-7{G2WuD8D5TwQZnA zA1Gh0q9VxDP)c0W;8=HQd93?=IWjhQRsNH9Y4*AOXYI1~pSH_7Bip!EH26O}MjIzU zGAsMiUffS%rRDbLW`1SGtI#eTd8vM1)S4T3cDl46&lF)U-73ptqP%Uo)R`&1OB0*d z`R;+ksJ%_rHc;y|t4H?ta+YDVr`;n54z^Al?d3A<8|J(F5A+TnFC03W%VaI1eel5H z-p={nO}V7eZtmBR)6RJBGGzmu<&H8uB=^!~Z_J!|m_%L{{P# z1+gC3CYA+SyH;QqX*OO=%xJ>4zi#puAk8+uV{2YSy; zy;AB-)$tlib*klByHdxmew{|CaAn`XRBx4GEyuY1U7*;7y>-*?pWZUQDu2W2=idHi z>_?Zh+u!3M1pPfI`x7I&S@KGSraR;I_j%XAYvak8)bJCW{I_&NOF1YynyDM&sroAG zBsBxH9#XxFY{YKIrOyRD?4DeDOnOB`%=g}zvnIPab8=q}%SmJMx}5mjpF>8IJyA9$ zug{rC)oA;%H{>iV<|c2NfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k i025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5pnn4r0#Vlh literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00133.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00133.dcm new file mode 100644 index 0000000000000000000000000000000000000000..43aee43d4f39ff5594d8be26a56e476aa4ad0f56 GIT binary patch literal 38844 zcmeI0TaX-88OOh!tjlbKFxiA<1}&;%lG+5#(3iPpYsmEWOm;`+mhRakDt%q%d0@rZYH3Xown9;)u^s1jpIRC1fPcWG^cVtf89Ss@hXprP_@OV^_GI&!?#RPh>}imTzwC`I9nQ^T!HSL$}P-E=E8+nsASS~F!gO5?9UAWHH7 z3V|qXpps3<=1u+M#{N;KR&9igbUK~NMal40MmJK(-3%xzpsvAnMW}{rI7-#V7zk*! zGH$qC)x0^cRjzqaT0qTevJW3QeB#i7_w@EhX_1c*`+EnwCyr@WGJoh$l&*>StsLzi7tunDN)^v(>@K@= zTFuR-#oZ{b^>z_mF+}vjIXbfsgDy(VwJ$&BqBM($-11m4tc;PzP_eS9WXdox_);c@ zm8B<56N4>j032xLGTCItG+wKojMuCu-2k3PZZj933)%l|R7;$8*pz&X*C&UHkmc?osHA`@#I1F zGjX~D&lYhVak^8+TPWQnOQOAdRqg%oh6ydhJvmT*0OcsF7ub9YHWU#18Csm2oiVV$^sBeyWGf~RTxKplOsmCd{ZWdYYm9L2riqqIS zaZj8^6|w8r$tyDigNxutNYEaKi|19+5)Xf9+9l4I+39JC!Le#PyJj&~6Lg^*D^ZLs z`HA0HOwd~C$xbOjV@gG!E)J-;QWexCq!MkN+Dzw8wx&)c=n@s-A>s`xLi@+f3s0V& zD<0xd8()Wh z?o^)Nw}`tdaMs;QtwP-gmAVw_Lm_A1qas9Bi%N->?+uB+PkQ1?#V0}c55z3QlhJ4F z1f5i^d>9cAC?zs_P$`koN2C(1J- zq6M?hOQlAnjQB!`_r(zJu@LX^pjW)7n4m8Oy}gga`*P5uD7>#I@1c*0&r>@R^i}1F z?1|38dm_a9+6qrx>DNQNZ-jW?4Dp@}@xB$}eLKYaPKfv25bt{--uFYiAB1>64Do&x z;+>M-($nR~N{vh;=qCa7(}4O}K>a+Rei2Z=R7x;^DxiK9P)`TcuLJ5g0rgv@#8dEh zN{Jr+5KzxZB}PVqP6ulK7*Nj!)SsjZj`}}`cxOVqzl3K3+i~sTDorN*kOoOMoKsG24;Q^LeHdgSnXwVR@%s6MFPh#u~Jy`GA&rI*n))? zVtAhuj%)G09wzj!Y1oDMZ*~p)4B;A<1=qy;`V!h^Uj6g9QIzB6lo;Z_9DLs-qv_W8yU1&#M(f3cC6&B zp??3mnak;U)b3uCD-@LWEQ;OUBNzu82H(7HxoYFhyMfZ`4hn+@cKcwUINTYBPcF(k9xqckMi-n&B2t%7R@I7rfKmF7TlBOMKiJ1)JY_v*&}3c{Zcn**(sT@S5nrV)9Dh=^eIdY(G}SvWXD zX>qNa2i8a!hV@HuqObLi?@zt0b{Uko#w}=&zJSUlW7bV$VE{Y$y7A z1V7seGG%{D%2K_Ht>47JNQ9!%haRv>E zxESJwR4F1$7s6X5OQN@tArEn) zD~$(qk)|Tv%+jwJ*eO9paBqrKij-`uuXPjK7~LpRIpY6nfUS#Oq*g@iuDV*0hPA;s zXE2AR?beWkLqoDpaTO!v4D1^JbMaR)@}C;ms8txzr)k8qwhY@H5&x z0g`#ym-ga*?3I?&pPR*%6|X`&bmXP_eNk&p;MwWWf;>}%IdqFGkBRcO>2hbL^lnXT zUgx_94x{!~S=&Ud=hlww?-fj4Z%;c%4jgQqINB@Z+Sku__aEpTK5id6TFB*1y?yY& z;oi>q-i?K{-gb9(4;__(M!H?<&3BLYrV(G5>m5Vex5>6+A`SUDv%^20-Qo0idLk?F zi-K4WY!k}@tzB=l9r}Pga}#PSWv7k*&d!SKwK~=E?s9ddMo)LkcriM#?}lEKIt9IF zrco_-rW$w+WjeJ=yx&w1%JHNfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W zOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W jOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l3DCa*ZgWx~ literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00134.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00134.dcm new file mode 100644 index 0000000000000000000000000000000000000000..f83556d3c64e1f7cdd2cd8cf031255872a3a927d GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00135.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00135.dcm new file mode 100644 index 0000000000000000000000000000000000000000..96247bbb036e4b2254bfe463a8c6475e0e533a91 GIT binary patch literal 38844 zcmeI0TaX-88OOh!tee>gVX_I!3|dsjB(({ep>K1`){vR)ne2|tE#0$8R!4>j86Z|} zY@!⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00136.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00136.dcm new file mode 100644 index 0000000000000000000000000000000000000000..1e291bd1370684ca3f815b3d99f415fc8cbdc160 GIT binary patch literal 38844 zcmeI0TaX-88OOh!tjlbKFxkK|6D_J^lG-GiPIu2eTSKO|XRoDo!ne6lSZ#bQZ@54N+rC9Pt^7;5b`ZPo{3^xs;)s zhGFFNv~KDt{No$-s}NB{L{iW6{d_tvLw%Xe$flF&l$A^6bEcI~oB5n&Sovf& zWu!}E>BX4F6)$CT)p3*AKmL}bCvdbeh zT~4+PElO`7$6HMmuhFTv8qSPT6wWv`+{$#NZdcn)w^Fm+xpt#9Q+A^?{wf5b6#uUf zh|&fs*@SG~(m!tO9}Q~NM#xO3)2UpPOkZUTGlkr(fJz3`<+!d0)o=~RsoEF=0j*ZX z4Y#YBH|Mp=H7`mFs98<+(PKwX9Xa&=-oYp>QnN0yFk;olFxg%e%q~HB8`T>vtyHn6 z>kY3}adv83-0rnowH`utYDw*2?{N3j2`#DTj~t28Qzh+cS+&K|&^i&As#E04J-%_1VVJXXwP#>``=U^wY1)574xuu3J9 zhHhC_I;Wce2U@vIR?k@G>(!I_y7gq3pf+-sgZnvKzqH=iSJy@{pQ?>>anEaBr&21{ zJBB$*k=QKmt(e=> z>P@IuPYC~B;BkO^kq+LCQTn?&U$h@Xj?MZoop{dyEk+vhjgW~_(I2Ry1!j>HSgG!C$H_!_q6%m;a>MdZ)a(*mDY`pYgiqO`n-Oi-I%}P>fVWy^Igp= zU5XZ#=QZ+*iCjeni>h>5m1wQV&`OE==9o7VrQD1=<=T~coMP){k>!5*ni!!tjja>+ z#A#F!d%-$+Wu{L+P zVuCJKo}a=|c<+#&m=V?cCu<4%z={|`TOX93$Z`nkx{!$LRfLGYNkw$ykNs`i_&W4+ zi}L)wMcl1{vu;yr73w~s)WuLA4LSP`6(O=(R7$jbXGr{A(i2xIJ_)*eAZ8)1N1w72 zbXv7?J0k8;N@R4eQX->|NhMl)ewAqLld4vzPf3NbPV>DJy)H)V4)I#a?7)~l+-cew z#N01q)*!|*%&dXs1CALhlb}zlwncb?KBL+ed3;tW(bMMw>htQ%2cHwQUr-v|KtG_O z1+yNE8bB|&?7-_|HJSe4SE!X_Z8*c_X+WNVpoE`syvZB z(R1(~3-P|T!V_2e^$_nHA>KDbyvIYlZ-sc@4)MMd;(a&7`(B9m{Sfa5A>I!|ydQ;l zXQa3EbosGTBNGYwNkIKHpneumKM$y11k^8;63m|ns9y!tlL7VXfci~9{Z=XQ6#Si1 zqK7{O)KgN4k&&RM12umPsAmG|Pf`U({hvd;vmxGJLcHgtw?z4$!H6^6qDJRoJ-t(| zC@j1M4ZLHMhG81mVTe^m$}saLW_}LB$Y5uoo7r44ZRW5dfn!=&DXe*g7Lu>pLJ}>+ z@IEIT*W!IWOz2>BnN!o^Ytu7&sYdfIMc1!`oh_I5LsLLt@8VhxncTZqUa z;#@M@hWx`3o{J3svlVPIpTfq)(Li~J&ZTjL#VicE@F8wk&imAp07 z@87U;IU|qSy^C^%g3`W4vDL3s=;xyf!q+!3-R_!PrNOLWS0AshD6)@SLnGFdigEw$G=n72XkqMc<&1FE(`HG zFYz`GlJr`oIgs2)$3x;yN^j}Cy0O24@aMzkKr3a}Lo1tUM4llcB3Qkiqt1T@4$e?o zT-^9R3i=efliuIsu75m7ew@*!AN4c~YAsR1DP8!kt2OEkXU1*R%9gf;Mr19a7QZ_nZULpWs$}>xR?lVAZBu;X3>p$~ zF~kk2Qbd-{hqp?WL~kQQ9^ypH=crN>GZN2>Og6m*^Fox9cw%i0@@tB_y_GH;xDKMN zG#=1Jnu>TcOTT7drvw$jy(v;DQnInWHY{vo46{h(i2thrwk}4IS`o3k>S{$A)&}F8 z!5o^lTSE>G4aq*mRg91`uxtF+iw><)buU2qdq@%aEY$KyC7kDvR8c2XRGlZ(Xh5x2 zY6x|2lxlFcI&|&|Z?5RjdCK$7IaT=hnF_o$%9Gv7p5H9Jr98Gu<>$0*p!~K#)b@cI zeW1KUMMaRQp_I6$!Ljbp@>uu#O3B#ZRrycarP=57pS8={f7&kVoNVKA(cu5^Guk`_ zl6l#e_R@arm6p?=o5htCuR%L>?B)7>No!8v+3C=NJX3@@biFK(iSqX8a%ZOWK22<1 z=eviFqV@(^+eEGB){Y(Q6)eMOPdmpB9d4aE-YewVSIu`19_k%EX&*UW$mK1gefZGP z-tPI{HHEa%c6WD=9G8J+x?SqccTe`F5nq_=oj}_+%C=)74f#2{%RfH1%jxg*L{{P# z1+gC3E|vvayWVI!^kI4CCe&8SP8P^k-oEMgPi`4sRlMryXW#u+ z>_?Zh)8FGE1pVDB`x7JDEqi6#b!MFYKJPMkZ9F;C8h(P4|CVlOnG}jC&D0I?RDF$g zl9~Zp_o?1RHe$Eq&=-Rqc25pHB)t+M=6mlgSd-m?IeDOf<)krrML~QYEFh!Fo+ulW zR~Ag9YP9{>s|pqtbCXvW#P=Z)clNp%HTI#g1^n}e2`~XBzyz286JP>NfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k z025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k i025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5pnn4uxKi-| literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00137.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00137.dcm new file mode 100644 index 0000000000000000000000000000000000000000..763202131e36159af8eceb4bc497fb7922674747 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00138.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00138.dcm new file mode 100644 index 0000000000000000000000000000000000000000..f4409fd8f59bdf1e8409bfa1c7070d646a4f0e3a GIT binary patch literal 38844 zcmeI0TaX-88OOh!tjlbKFxkK|gBH~>No|5==t%q%d0@rZYH3Xown9;)u^s1jpIRrDP<{WX{r) zhOXHGO~UWQ6(W-TL?w#=+Y2v0Y2 znN%j7iBJsfT(qJm(XW9%#!#odSRW~oRx+QoBD9XYnKe|iTUC2Xt2A4hbjQgqkI-~E z)zY;ny@nibHC4Pur{ZcjGfGi7#1ZDvUx-QxS@a4sZ|>xBb`oLxhNUF%IJoL+|7VW1=Q8Jt_am|4M(Zk7y|*VR>lpt ztC~0GwaPUwN(-o2P4?jm7-YrS1W+lPpre}T^I!=Q^&bL~ryxhTydBDXwNj8w+RW2mIER?;#|3_i=mNK5HS z(=^k$qyccCmCIz48Pj;RdNN+Mo^%7$M(%NNKWFP#)*E~3+9>8zwQ)Y~dCluoO67V- zH%2KEo5j5qb9=fxO2bl(KzWtvx=o`rA)R43`?pWGM==IOywKC-8E2FXrStfV(qEBVV-JUdm2(%xp4i;yW9s_u}TTi zemq;mb;Rj*8J|Mw4p|cI-K}cxg*QxS8Scq}@_i^rDWAmKWEEA2MZNxkFhW(T7_pWN4O%wKbT@7VGAuI81l zL<`IF8hOP;t|Eg)RXV9kv{qzjTB5!==FLPYH{(vZcBLMt*t%I{xmUg>Mkr2W>%={A z8dbzzv`$``AsAc?KSF}`I9xohlBrxeC$DRlIAdm~rzHl*s_pEW#aKtM!F}CC< zenT-qYo#YUr38&B6@j`WpyEnZP?wNOv~_wDy>PNMbvi+pst6AeuTv4)KW`dL8zJfMCNP`^}4Fn=PTeicwp2Gp+u>Nf%PTcyNP@OMgy z9{vzePe~<4MuMIW)ci4^o(ZTwNfjLRe-81^gm`}m@t%|366JpeBTjdV8eM?(^ftMo zF!2`D@s3UD*ePI#AyyfdZsZNj{2YXyN$0TI%jQyPBZn0U9K*y)Va-dlkb2n`QfMKD z_c`IX7Vqm}LjRhEU5Ni?*RanJu93>YHSxZ_l(rgJf$ABvz16TR6s&eOpG>9lCL*$k zIG>ERF8^?Z=OV-ZYz3RjTi96nE7)ufd#{W|8i}>N$S;DoHQv!i25lCxHV~d2D|u_E z-#<23IX#cs-HURCg3_KvvD^Cs#=-i*H?Lc++IaJ>r?k35Lx{*Im4M1B6@zLhwGpbR zlxTUERDO{OK<7Dx}m><@aMy(Kr3a}Lo1tTM4llcB3Qkir_O%{4$e?o zT8!kt2OEkXU1*R%BHrNMr19a7QZ_nZULpWs-*ifHkr$&+lKhY88jr~ zVu%}3rHCwD2yc}viQYzrJj98X&r_u)W~6vtmb@f z;{jcysfahT^lJuoN>CBpn!KH_6%o6uu2!UBZ7|Lm z%%N$!HRRyXknB@j#RxeAyT*UL;Ls{n_dJxphZK>|LM@L}!g>Bk6?H;I)pDMH26RKj5bez zWM1~Ao!gJS(sKH9v$(S26=;W!yjZ{IwB`h!oenL?Gewv~H_P&vC~uuEcVYHyLXP1JgB?a2OK!PNEkv~%RZ!PbeRy+W>i-F$cdf!^Wc_MxMNT;9~%2M-+X z?VRu3P)O@-cW3v|Q5k5Y+oj%o_jqp_@rAkGF|>WFY&#~>ke@R<{NvdjPJgE-vJ$^2 zi1ol$u`JNq^+wyF56Ck&qP9|Y+W7D6thipQQ!Vca$f<_KA-_~#E3U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G hCcp%k025#WOn?b60Vco%m;e)C0!)AjFaah&{{~HhQqBMX literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00139.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00139.dcm new file mode 100644 index 0000000000000000000000000000000000000000..c2c26cafac956d38825d3ecb331c91060d85c7d4 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00140.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00140.dcm new file mode 100644 index 0000000000000000000000000000000000000000..635f02528e6670c19660f21ec9099cc31a3808e1 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00141.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00141.dcm new file mode 100644 index 0000000000000000000000000000000000000000..48db9e7e60536c82c10693833402a0cb7f75934b GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00142.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00142.dcm new file mode 100644 index 0000000000000000000000000000000000000000..b0c1c26a8c583f839d9a395c16feb9600d16850d GIT binary patch literal 38844 zcmeI0TaX-88OOh!tjlbKFxkK|6D_J^lG+5#(6_l|Ysk#@Om;`+mhRakt0R*M86Z|} zY@!⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00143.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00143.dcm new file mode 100644 index 0000000000000000000000000000000000000000..fbad67800087547c7ba6b1af51836392d0350d5f GIT binary patch literal 38844 zcmeI0TaX-88OOh!tjlbKFxkK|6D_J^lG+5#(6_l|Ysk#@Om;`+mhRakt0R*M86Z|} zY@!⪙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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00144.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00144.dcm new file mode 100644 index 0000000000000000000000000000000000000000..1b9da86830ae1ba9fdab360349294c4babb5772b GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00145.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00145.dcm new file mode 100644 index 0000000000000000000000000000000000000000..15aedf973242fcb02e33e0369ad32cd99ee0c394 GIT binary patch literal 38846 zcmeI0TaX-88OOh!tjlbKFxkK|gBH~>No|5==-b?q8Zw=p$?nM9(mk7Gb!3>30b=FG zCW^62SuP4ot8P7p6lQCqbOy&5jZkx^IN~!B!*RBHAsJ~iowxP0 zq3e1+ok<&M8~^x5{VGJ15MiaW1HX_d$WSTGOg@*f?Yy0_GPY4L@`h~|bltM-e6C=j zY-chMF-oAF^H%gE`ZdtU1nRVx>cbLgr3-1av5x$iHB@)nHD{+*ZM8M&PLfj@qv?v( z*0ngjj$D5=RsCkS>S;JLPH{Ms)by&;)rM2+w7hEF@#Z?s_Dsc#)8s1vLLg4- zsq7H4dDGyyVQ|!`T^}POlgZfmI2nP;>V}Qn&5*J}>Iz&}jOw_CV^nKSfPhx7;D$Rj z&7bqzmAW6N1=Or2=g83`Cl4QdZ~s7?7OB+`S?GycbCevv2454?q%CW(55iKOBT=m`No{Bf8)xBIs z+>O#&e>c&kBSg=?Kxg)2(8Z~>_T|T1oMsV`Umh!ll{E?&Dpt-;+lGn3XPdTdS$f(u zG5*p9z=2jin@eX+B=~bN;L-MSEm~ejnkBLM&TT|bh`#yI_5oiEx?Ajei?l#ah^zm^~k`NqgVsT7P`ZG!frG)i+7UrVB1 zjApN%#5@shquHn=F;`q)Bj0Iv#g%p{WiKfBt*YnLg7PjuNgL$ZRyj$VWT}A`TU17i zHcAU9jS{9*CP_D-jM;_@5;Zr<7#*dXWXVA3W|UTwVdl~~6W_TceE`oLNj`Hl}4~pfsp$WM(?G zeVw|e`A4rhab0h|ug&)l^?S$r+sb>)Oj_@Hy4l5;FQoT(n)6p)(?5P(nzpEKP53i$%FlQ^J*V18QexdKvfL+M5@VF4iFM+RxXl`3 z&s!(2%n%IDhaV%sdJ-<4R%t7r$;<27EzX$PwEN3sr=Vh&QMR?H|`KJo40BDMc44 zFG%4CytheD%!k^2+v_QM--;MQTkn^i$Z`bg`iO`dRD_7XSw-}c5C84r$#v-G7Uczf zi?~}uXWgdMD%5>gsf(aK5^?tJDnewnsFY~=j)?d>r6;abd{T7RP|QLy9e>hE(J9r+ zM-g$iQX->!loA?Ih}hq^5%ifTO)wT#v(PvcKB9G51C3^Z?NPS+N`RKEv_6tg*8|eF0v|#on zsnm#+5f4OoUykq|jPM=`d!^e;Df&v-+xHN>uZBH}!~2@@?)`-LJia4EUss;Up6FS4 z4@Y?4SmB8){bq#stqAYi5#A#a-ghFr??!mvi|`(e@V+16{UE~oVTAXi2=B)c-f8JA zJzXACYHTV+KMARyhSbkO>gOT#i;()IQiA#8A@!?}dLpEL9a6susoyFko`SzqO7!rD zka|)oF)~v0RH){UA@y`f{Yk3usQ+_>cP7I7ON95F^p+_9GaPZcSJLPltfsfg^@NGH zppJK}rR#={{e@U#*gEzQnE81KJ)6m6t(VJN86%JN2pq%2I$_Prv|znr3l>^P;C)Uw zuEqO$l+eGXVGk0#*){Akglpi9tYQ6K_AjKZ2G*Z?*6eIGY#Rl;v(?I`vspc_Q4SGj zlhM)TAC5T7Lx%s^`qe7f*j5GW*IXVuudI!{#L8ae7sJ~c?`R{7HcMC=2+v8B{WUb` zKUc^hHAAC4i*kj6xV?*FulESX!TRAhuUDx#c=N8OjJiW3h{!6Hg32kCfNCnW5vrw> zXnD6(!{cT>c@dr;;q8&0cw3CfEcYr6iMIEx&~q#F@>@EHf4i&?=hBJr-Vxzl9^rLg z9@;sAi05#MZ}$u-qL$@!(asw%!f^(Rw|y4RyNU?JVQjpuy#F5o&Pi(oT0S1 z)=fieq%o-TR@7dwLI>-lrEE40R!Tw#tp}?lu|tr%XS5isltf=s!`WiTJdJFp20Mfx z+bJ?-e@n_zy^D?C)X+$ap|z5VtwK2}_JR8+9-G2`a%m?*G+Caa-jF_xw)PL{g&mv0 zY8ETc5!#I1i;MYJZ#J6ljMuDJOl>ob$y!1!esw_H0!nLDNe^ah8b4fg4DpRKXhg&% z5I3SqF zw$NlqmuP3qpIQ1n1A8T?817Gr%CWM8HMVYIBcmH7s>Fid4e+ClUZQqP?5}!SiAJ^I zICnUQmgCitgG(c_PjMw<5{IgCLKYqFjZ;kR~x3cFqN^dETEm8$JT|88NODJmV zP)&NMe2I#RAyZu`aZSVH-KFL69`t3)*zi>aPury#=nkH@%Q|@CF6+E(;|kH>|L`;3 zIth{m*_Za>ew>w-JD8uPl@+f-yL9xW`h8JrZs_^x(tHsEKi8?*6B)jru-gF zY+&bm2allkMp@fJt?$*39_SZMUGGf0M-LuqpFGwt<~vu<_YNHFA35P1K32>ZOucjH z;F12W`Tn)VjNb8f^$s7CfkviN?$7s5^rsPDoa-M)+c(L!6Cw@yIkO`;KD)ym?Dj-f z;CfF*L23n`l?6~wHdFDpcRx54?|J_|x&u@2Yl|7Z(N{yawlksA7VDAmRD76i} zccxjZbayuKD#~{2)kde*#P5FHR>iq&U|_1ZtFV@1+`&#z?8M%>@%K+`o?KPB`l)B$ z`DW}%m$WbfTGz5RineB?b@60< zm35Mu4qErB-bFTI$K%o$S9l`J2c=g=#C-qVMRR+vXl&nK#FA3qeq~X7A1ETD?R`kgDDZVy`ZmSkP_1rYOD-inue^C#bm>jV<7xKTLoLFaajO1egF5U;<2l2`~XB zzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB zzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB zzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB jzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;n77xI9t= literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00146.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00146.dcm new file mode 100644 index 0000000000000000000000000000000000000000..601c03d1688f18ada64ac97d812e48cd678f2bbe GIT binary patch literal 38846 zcmeI0TaX-88OOh!tee>gVX_I!3|dsjB(({eNnhrgtx2ZSGua)PTe@eHtd0y5GC-`{ z*hDc_Da%DbEM#FM*|XD|1}sYP z<(sXYKL7vu`kb$SeNOi|L-haslqyawf)r+|!*mwM2n|tVmpI}x6v1((axoc6Gnq^2 zNkiB5Tr!Iz&}glf2k<5X>ofq+&k z<#_+NfEHp@s(4OgZ`qyI zYHl_y?nZHqw})uQ5YdY-(b)qSbWv)qdF3$|r5Qxzmd1)rhZwyv9GR;Vm?(H=i#2$yiTQ5 zu6J}}lp?Vi+*>iXr^=%=EY%2ShOHKA$|$Zp>YIP4C3Xxvu7w zE<+1Tvl@BDM6M!(1ywq&O0-5~Xr@GcbIhBLQf}Ja<=T~coMLNdkmY{)k{F>ljja`T z#A#F!yKb$#GD9%95PpON>v6bvS|zPqIw!Adk2qs`x2GirN2=}YnZZa+&;@d&L@~1D zCw^@)L2INZJEa7TDHVabD4^m>RZy3ZO0;!m6TNi0wd+iRE>;m9BHpATw0~Sb|L8Nb z#ROfVJU@k_@ZKRkF(0b;Pu3Fjfn_m-wmv95k>wE7^&t^As0a~%vx?}(ANkv*<7?5+ zt;+NJ7IC))&bnQx6{!1&QkOt|H010%RD{TCK`GJlogwjeNl#p<_$27=ftdMtGWxWg zpwp_Ak0Ih7r9?*eDkU=dxKyIG7gmVYKBa1f`m|IS>onIp(d%NwZWAw+%r=ba!=0v` zLCpO!W;J3=-N@>uZsM3RGYR^PYFmUS=(DPAk;mth5 zPxL&zM?$=BF7w2dek;WLc8K?#5bx0t@39c?yCL59LcH&Xc#ns8KM3)D7~=gX#QSlG zcSd@PPnRc@8ktDYPXg+v0rj(h`guV8BA|Y$lwkg3K>aG9o(ia62h?u@>bFXXr{M3D z5i-<#oelB+65_oey+z9Z3`U&k7BxB_tLg1> zJz?T4sN)@L>AIm~e<9WwDc#5$nE5#fJ(JF1t(VPNX(NaA2pq%2I$`xIv|znz3l>_4 z;eAdxuEG0yn9#qbVGrWJ*){AkglnWSa810gFQ%;q)}MODY;QGEDHKxet(KY0V6UT5 z77^!>(bnZ3jyTIjhX2|6)yk)^t@78e*&KFWnH2I8D|?Y&1aE7+qYaTs5o-hC*|Czh zn)>}`^I4>3XtZ}hu22xSZ$a$!9>X|TKltW#%T*h1-u0ALcW4L^8Kn|XS*2o74W%|h zHI))A?~!V7+^i=z#PdSDz0wnJiy@iiKBXbi_Woshc9~v!OZ)Nfl=Z<}+9BS%LcGgE zyv{k^hCz~Et27Ie8|ZjQ+)3#zzE?N&R}lVu*c51`?0RTr6OG6-L_`E@*Olu0XW`%s zrNy;w8dxKZK&@L=d(krOuag$D+0qQ6oSeN7BziyiY6vYqJf z5d3T>$dvspDogb)HhvQWBQ1i~iYm4OWvkc+ABa3Lf&Jv-PK0Q@G(p_~eFkkE7|`=O zH-ps-R-Qw&8M_w;^RL#ZH=Jp=Q7fC;W*U*Tgj)RSfVg>-)~J&1&)6h>uV@?M8)wjv zh>Ia^NR=Y8bOF2-vLt#N8S)S(T3)G2P0UEKhBq?0wiz=+C^Kc5hPEZhuqp2N7P@fY zT8OsLct96vSHzoM{5=DEC8!AQPmxNIl8rUCZek;&8$~Kd{ND}mD~n#FRz&Qtx>}Kj zwZS-NFo&k?){uikL$XhCB_rev>>K~}l0z$0-HTBEE>c832emX>3FrBvRn!R;Rp$vc z8c?g08baM0r5c>E4xP8mn=LwYzVf`4rwX4qQ-QZyd9qvC^P8o&n8y~W{G2WwD8DTb zwRNB-IZ)oFq9VvtS4v#d;COdvX}tS=rDSaIs{E(z;tX{9&)X&KKXI3IPPTD{Xz+jd z8Eu{d$-L}KJGUQux#jfdXK{JOYtRlId%1qkY0U{dKOLHvXNoX~Zjj|MQQkUL?o5~7 zr-=>hT=&pX)ZQp-o2d2N+OdPZf~o86Dd*Us!>v=tdxc#4>bdU0L%pLX?IXtvxxA^j z4<9<(+dbF2wvg7_?(Xi9<1)}lw@bab?#bR1;tR9A6KMM;*>+5%AwOq#`p4&YI{n?A z$V&W{D%J#B#nM1)*BfnzJ}l4Nh}ufoY2&}MyW)DSPPM$ZTwSiw)9o@|j1KI*p%dt~T(yU#D5NFY6na>a7Z_r5LBb6BIkKw{QIYQ=7+E6t8~f zxp%)6d(uVi^!IrPL4Wtk{=|rO%U;=booT1P*Sj2E8&A))h9BYNznRpvObW%6W+Zj- zWPOcwl9~=$_o?1RHe$!)(3h5ZBFl%QS3<;G@4W?cvRg1F4-~MZ)F-bji0^|1WHi|m zWqtChf`L@^wjXNfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% km;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP@LZ&-j)t^fc4 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00147.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00147.dcm new file mode 100644 index 0000000000000000000000000000000000000000..163ff9a7628e6fca3f7a23a2e60fd16cf7a27d65 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00148.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00148.dcm new file mode 100644 index 0000000000000000000000000000000000000000..1fa0c143e0c8b04ff856b49bc012b7898277a7d9 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00149.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00149.dcm new file mode 100644 index 0000000000000000000000000000000000000000..31faaefd33ff502dbfa750359831b494b540592f GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00150.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00150.dcm new file mode 100644 index 0000000000000000000000000000000000000000..685e5ed9fd4a179fbd425d485089f0bb9a191a99 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00151.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00151.dcm new file mode 100644 index 0000000000000000000000000000000000000000..e23c5610dfca62b3ff8eecf4c6dc250a75db4371 GIT binary patch literal 38846 zcmeI0TaX-88OOh!tee>gVX}c`1}&;%lG+5#q`Rl*maQSv>6z>f%q`usNmfTD6EcKY zxv`02tWuVXfLO{B0xF8)tyJ)W7rfym-bK8WQk3{)O0A-Nu!`c%2f_b2J$rU~X~3cs zU%uJe>GS`euh04V*XMMfGerO2PpRV6B1mDTI!xzqjL;A@c8DWBLlGQjDwmLvG?O_? zPa3+e=aT89k+krSZ`7|qL=h3GWTx-u(|H*xWh$G=bK$a{M85|57(<=*Vtu4UTFHFUiqKl}rdLzVZdL6aTBX_2q&rS_ zd4#6Qsg|xq={4kdtEl2NIu%#LnNfM|%0wU}-3+KyK<&eIMW}{rI8N2Z7zk*! zGH$qC)x24+Rjzqann%qlvX34+dg{obcl8cLX@Qz`k%bS`}xTw#n^Yzgg=cWSf@K4)hLpPo23PZZj933)%l|R7;uGbn!@cf_-nP$UOynvuSWu-iszhrK;}lyvgDm&Tm&6FgX>6^y zBTl1=*bCRnD>DRxi{M8{upWntr&ThQOXuWu?Gk59@AS09;7GNdT{9S|3A#Xzlqg1) z{KT&-CTNZHWT%v%F{L6<7Y9^asS4^6Qi-fT`-n}e_(AImTC$b!Zx*;UuMin9AZ&4B5_``p@Y9*CKbC!{jto$!x`#KHO>A z8N}Q#V^$-^#5zJZbrZ*onMu&cRofywL7z}MaGyhlU4?}d2Z5Al8w z;+>V=;?w2FN{vh;=qCa7(}4O}K>a+Rei2Z=R7x;^ETDcBP>%=HuLJ5g0rgv@#8dEh zN{Jr+5KvD@B}PVqo($CdF`%9bs6R;+9QA(=@y>;Ke+luPmEI!de+DDYc8eOFkJa=x zxt=ib7S!>MP3gL!V}Bvm7?y724b1!;gq}&~u-41wQfVWH^#~lp#5!U1OSF)B*%nf0 zA%^!k;kX9x>tRCwnua}y|7O>)%Mh-SHsG3gUtdC746Hx(jM?5|SQZKv3T85s(Q_JQ z5pfTJRsH{>ksD@G- zpqfgFmUl@tIBwRF8{&B(-froMx5bdma*xuGXnXH6J-bXVy`}y5x5)ZnF6|KSts&l3 zAztSN-ugk3UaK?I{d%oaQ5DP%j* z-y!(fPLL`4TU064yV&?m42-l0S}Us93Y4v4A2@x*k0!96T-=Eejh7~yj4X-kg2YexTeAJ?$FYB_xrMBZ1Af5r|selbo$TRCG9_Pmvm0Hu}?Jk zKm3d~Pl04!_NBeBAA7mw^yg=BdBrQx4jp^3eqYd<6L@|)G%wE-VGi9W%VVOvWvbkn zF1=F|8`!z-p`)n1N!B(|>$$aK2YLll*V|Lhu|tPjr;hgux%R=i?tw$SqbKbn#|yc< zskaXwI@;Sg*SoHe*4ysR?vdj%&`7sSy}9nm-W1{sv%M2&`)1j8Or#+{=eGODXSO^2 z-JZxw{FW-#1Y5+?Kx@|Dd0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%=-*8EQQiOm literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00152.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00152.dcm new file mode 100644 index 0000000000000000000000000000000000000000..5ca7465cc0a7c86596f69d4ed6a75e83818ec563 GIT binary patch literal 38846 zcmeI0TaX-88OOh!tjlbKFxiA<1}&;%lG+4Kr*Cu1){vR>Om;`+mg(6ft0R*M86Z|} zY@!⪙t8Ima;%VMNzz!3SRJnSG3l(>WX?G(`1X;)u^s1jm{3C1mQBo^cG_ zGz=r7Cv{VI@Q-iQuR=r~5w@P{``KhxhDvFfrj;?XPS&v<%Qj5gN?T4UY1rwcZQB{! z$r!d}CnFR?JL^~UB>FYc#~A9g7wf|oY3W(riO@Rorq@ul(5e)6Y2`*slkPYbN+UE? zvRj50rPq+_t){Y9@06Pw&WutN&N$VZ<*9P5P-!=sazYKvW#s4b= zqO^gE1wuA&=pQ%sj|R1>BV;C%NhcE}(^o0Obdb9hPr(7)6 zI)*t)k=P9Gt(eP^I{A)+T8uR08zB>=ygzQWF*=CSFwK@c zEslCInw!-)=814?^;#*8x#D^nd4*O-Txq*hZ2ASSQEnD0etEYSr;YM#yBMdzGh6z(D8K)aj#%#j{iJF^ajDgb4vSgxk3refWw9O>yDW*;?oze)z#Aq!e&C)NDBp{6l(OlRo=jP&Bg`9QW7$p;N`u-# zRx<_@A%cHuJ6wEw7K4qUiV~gM{%!})QwKlusRs?S^Z$UK6ll%y_2Wrx|&zK z0xc}hYUC9Yxrz)HROyT=(OQwA<%s&mm^U4z%ye^Cvrw+ZDYk9~S?-rFi4ls^*gA1X z+(|LEGX;Z-;73TX9*2vkm2PK}8F^iM#2M4OJuNXfQVZ^$8I05fT_{IN6eCN1 z;@9O9v{rhuQ%ca7QW2<&11hdm8FdM%L|coS>G?CQU5g32L`8Urc%6#S{&B9uF!ddiqpAeOjHl_>8FijMC@^`m-up zF#EhzYDCJ2FNAns4DlWc@g5F(`8)Fo`clx_|1i8S2R(|y`-<}J|ETypzB55zRi4P6 z=oxsAgm__2iq!t{hH2T=aq6uBeAj<`9<)y#yi?fq0Kzj2Er@EiryOX z`%h=n$jn6T-UYcrL22KD*y}xpaj;?V&D$(h3V8EwprpD(Lx@Nzm4Hes6@#iPwF#=B zlxTU6RDc;*G!k-VD1Fe*r9$MK?fCYB1GfG3F;2$MYMHrK+o^o z0#-9vc@EJQ>|R{VziPc!cc+{6YRS^J(1@%h)Z$kM#Lc6$R+S8Y#_E}LvTcfQoIyh( zE{3=vRf@>ch45C%lIU$@$U~fH`8-u>U`ApM?>H$(+k%-Pl$FU^X>DteVME;Ut#r}A zwGeHk@qo_Lu823i^m_*ON>CBppF9;K#RAsYhJ}rcVdkk6@qahKk2Xf0S`o3o>S}o! z)&}F;!5kWeW)(TOG$i{JS29BGz`pTc&%3lr)jbF0?;=Iy(@@K!m2jRvT1A~uQFWeB zqXD&AsUg(8R;s}n>(covyxF`<7bwp=?{w}Xi)DCglqb8DJ-=RhOL=US%FpStf%2OI zQQHP;^nvnr6%|3IhEn312FJTg%j4be%aO6ctMZ?=OEb{zKW~?{|HNI^8QI1G(cu5^ zGuk)}l3Cf8_QHM&D=oJ_Kl3XqUV(P$_>1-Xg4W!?^V6kyd8P<+=|))|6Xk7FrOtHm zU7Fay&UFtTL+wqnwt-r&Sv`KJm$M9`J>?!he57^yL@$?VUo+P|bhvlyRN?4}9OkOg zK63b2Z}(j9x?Iv|H+OfBo{)iNvR&-Wbx-xC5TBdvokZI=%eG@84f#2@(?345)9vr} zL{{RrRIw)5CYAQqX5OO=%xJ>4PW#puA^8+t)% z2YTOhy;ADzs^e9Z>Qu|McBPKr{W^_O;flV2sopBXT8?r1J3+A%d-JB>Ke1(eRsNc@ zPrv<**pn`4x4+Lr2>QEE_9sSkv*eWuO?TSu@Aa;P*T&N`so_UB`ETilh6kXbJDRB* z;>r37>m)S;wC-2Ei)_S>$EDA$@I;mmNw0{Ax!yZ-)?_zlP9Dr*Noh=8l@s5Ga>!`1 zC(6d;)j1QX8f`!Jnw*6N-Q=}7@qJjtox34M^?hh;9{>Dd0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%=-;5@QI7xs literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00153.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00153.dcm new file mode 100644 index 0000000000000000000000000000000000000000..85e3bfe0c7a0c898638b92beb3c46000fbf82b47 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00154.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00154.dcm new file mode 100644 index 0000000000000000000000000000000000000000..859087d4874d42edcd357e5b4fb1bf2a95b446ea GIT binary patch literal 38848 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00155.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00155.dcm new file mode 100644 index 0000000000000000000000000000000000000000..d9fdebcd0c4d21d962160aebfd6ccf23003bc50e GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00156.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00156.dcm new file mode 100644 index 0000000000000000000000000000000000000000..b8a3bd14341b970387dc985fcb99e9445e1b79da GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00158.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00158.dcm new file mode 100644 index 0000000000000000000000000000000000000000..ad1e27a7253696dccee5092fd08db0e3d662729b GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00159.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00159.dcm new file mode 100644 index 0000000000000000000000000000000000000000..37d309a0fbb4b40b9dfe32f6d2205e53f0240b79 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00160.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00160.dcm new file mode 100644 index 0000000000000000000000000000000000000000..807119f60565ebf911a0ce28ee9f91a69213c450 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00161.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00161.dcm new file mode 100644 index 0000000000000000000000000000000000000000..9d630f66ca38833d1d1251a32606ffa01880b853 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00162.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00162.dcm new file mode 100644 index 0000000000000000000000000000000000000000..6af4126d8b835bb22541de1b6ce59a52f0921dce GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00163.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00163.dcm new file mode 100644 index 0000000000000000000000000000000000000000..f2c5f981fa5395453aa6504295729fe455d4b9d4 GIT binary patch literal 38846 zcmeI0TaX-88OOh!tee>gVX}c`1}&;%lG-Gip)YgI){yD#ne2|4Te@eHtc(m3GC-`{ z*hDc_Da%DcEMt%q%d0@rgJz(Xown9;)u^s1jpIRWn?7HWG!5{&8dfs8g#pLPk2BPUWIx_$s3tDdcVjloe3d;JPAI!!;bIYGVupv|1TA z+^%ZgoYyMXyeKW8W)0a#j~zXAGmkbfQT1*x;*2IlA&}SpHcd& z)SFPRo)G@Mz~cb-A|1RNqx5%mzGy#&9GmrFI`Q@cT8uR08zBRwqCal6F*<&JiFBqSK2O@T)*HoE3RGj%e%ZdZIowQr8sStr8-({ zQVA`lP+CA~m@uW%ak>R%%r;z*sJT_f=qTMLO9o1}qqK$$Gn>qs_|C@Zy?E{*_nA1o z4^I|x6>+*l##<=eDNCZYdsOXx@P-MGAGoIn%J-ujrF=G%OlM5g5#|lDF|AY@N`u-# zX1ZP7->$iuckH^8H+AQG+I;VDuY01mqqNsdC-si2n;ne#eDXlMF@Nn1y%Q(ryP8+p zjTV+?HS&syTtxATr+Ld~oV(Vv-<$n2+7@;_gtrvI1 zX;cw=@p^e>hG1|B{0Irw<8bk`N?N&ePF~j@amLIpPfHArRNL7zi;oI)Az~btXZVsR$1duTv4)KW<)l?5Vk8 zf-YB{pTbdiZ;_su57mbzYYBSyiWov$?~$I!atP|?kceAUgowXgMRenj{%za%dh~OL z^8CI<+?|25?ow(M>OP><d$_tkUQP`g1B; zF#Cd3YDCJ2FNSzu3h^Ee@g50!#k-3M`f||Q{|LOV1U-tv`>OID{HXXmu`@wmQ=Z74 z=vjD=hIn6J;fX8#Mu_*#5bs+d-eV!&w?n+|gm~W#@xB-0eLuweL5TOm5bsAJ-j74P zGtygny8J|`k%Q@1EHlThTP`?SN-zp`Zg1=Kr z^zes(dQvJeG7|JupyrPO^>je}Nvhze|8t0UF2wswi1(cImMH%-7;&as)aXL2rgzBo zgo(GHj(4o3W8;ARg;-;xbR%zI=I0=EY$CAM%jT@Kk;8ffj$vY*u=XWduwJ$W3oXR( zJ|`U4;e999;e$D2v^U9=1BeAj<`9<)y#yi@`pv@xI2EwyrC2uYD z``67}PS2xu@1k6xptNsM?DZbUIM^`w=5@Q#CVo(jGHbFI& z5-snMYH-|aAUDMGLcG1w6K{(lndLsEA<_2!6?$%kUVcma@mIVL%l3uGc2a+4innS;0&e3 zwQe3*BaJ{^yrTBf7201XEoHO0zfuy~Z{1%di5-I6J)=c`r6l^A7|a$s=4oU*(cdBX z*-nrt`&&|$>RoL7CI&`Y1g#ZStOsSQ*!@>sI5mO&Q5yj8L!dK($?5GPt*tx8SINU?v{O-tK?nIROODXFZsHOR0j?)X-^WZ+te zw$gY&7ilWu%`E+%fxQw`1ox*%rAW!f8e2E9ktyP}vR`&dQ=`H24RVqKHZ3E>u1){bO z)FcPWSE#56GS!t5*EBfZ9aqJhmO5izb|Ob2|Pa?T99XoFo$lDO>+Nah*rCI%Q^$LST>JX@?!iO7qbKbn#|ycF)%^PVCK_et&k$_^RUdPd)Rt zH)2n^q@Dgg4Nb&`sV@5Z{MH+_{@$)Yyl{7Vys>Ccp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C i0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>Nfc_2KI#93x literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00164.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00164.dcm new file mode 100644 index 0000000000000000000000000000000000000000..b1e0c0633daa6e46c9d8fef546a7dcdb06791f83 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00165.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00165.dcm new file mode 100644 index 0000000000000000000000000000000000000000..ed1d1b551faccee371b4843f7a0b258875e3b374 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00166.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00166.dcm new file mode 100644 index 0000000000000000000000000000000000000000..6d750ae95f01235c5d78cd4360a3ddd941786976 GIT binary patch literal 38846 zcmeI0TaX-88OOh!tjlbKFxiADjZ>O9K|A z`0~xxPM`n(e0|Q>zdon?oFV%Eeu`zc8bJ!Pm0>!IV}ypNJ|&L$3`KC9EpH$rX(nw; zPa3+e+sSm&NLu*EH|kd*qJW50GSl~S>6{Fe(zJ6%*3M>fb}DP7EZw#(Gh<{kmXS7X z)5xTCJ(aQS2*uFO`V~Eiehu_7hC1z~`bdeilDVW6p>^cVtf8vYsyI_xxzW<3J5Ek% zgr-ZWmaawVb>w=hsqED|<)(%+qZEZRPW5Jax?FQA?MAa)b((YSdTXZCjMDfk5QtLz zzd|5N8>#3JvUyYgxT$~CsZ|{zBb`oLc9aZXWpu+r?q)!x0_tj9SA?p#hGSHzkAZ+z zE#Zbc70sLTTBWKNr3KWiCg;e}BPS0Zd{6H{loqK`6Itl7N`06duL5S5qkJjV>MgBU zcBX4}uT^$;Xj_}z8@FjagzV5#+JWAo?#bg?Dw#WcI7(N?{8o8zrG7r{dDZKb zi=|peH%2KEo5j5qb9=fpO2bl(KzZfqnnR;BA)R432QHs(k75jnc%i3DGwvuEO6Twy zrN2tO8TIN3;ol294sb8h!Mia^e^=*=_G8GgQ5&Y?@7%A&NJG96GEge`<5nA^{U{C7 zT*=eos28KTS&d_!2)9@$ zOq_1VlSN!bobHhEDU|M%CDGbFs`fs3!-U5V+*1SP`%#WkE}KcFGbZW?^9I?NDJu=7 zLG2(j-LC9wSDTu5^x6|QcISKAeD6@Nd%U-!xW`N<^-fbaI~eo1_5HOAL-w$K5@Pk(!_j6r52^v!>0(Egf#g!_fE+Lg@>+}|S;Z$qtbb>ah2oDi&P!ZZcZd!Qk z%v>QsmnhFq;Rw99Nl(m&%0rXY1ig1f456*}Nl#=s1a(tL#LX%~#NVbOy75QvRYJ1w0uuU{Jqi>S1LXUx^Ez6A)bsr z?Ih@wYURU-xL+xe(F00}j6NcjXzjUGqP35!TA@B66~;Qv_m20v7_pa$mrCX`jOjz2 zhLb_eLo#L!Vocr0>ZWeum@zX6`lM=GgeT}zs%??SrteI}qjtImAtoT&Yr(&z^I z^D0^}`=V58M9PRSg?L{M@g5HG9tnDdy9){WO3>T)2)wTbJ&MBnn(`j}nD{)tGeKWh zp2(i)9K1(Eyl<@V#Fc(C#QRo=_w5kxu@LV&A>MaGyzhm0-w*MA5aRtX#QRZ*_u~-n zCn4Tx=`B57eyY^SM1p=6P(Kf-Uj)=I1L{`+^=qXB^Tz|~iGX@CpneljzYVCTloC(D z-zg<}_(MQFEtMD<2|5#~`C~vm6HtGWDmd!@9O9h~@%|FxJtw^-%Kr>TobDDhx&W)` z9dbQk;w`A-9h=g1L&yF?tT8Oz$QhXVHiVu@+gR&m?Nr*Zu^xeAm{=#Qd6^bcuh>Eg zEyVCXCmh$}eLYO*U(>J$@!#wkb{WDoG8wog-q#ywyMgtmo-y0o4a-8oYFpW4DwQ)4 zkwwJ$WVChphaxD(P_darKkuOR&SuqDt+sp+AWEi@v}5D^iqUC&eJKLZD6 zC@rpa%fK3G1Zw??+KX3cf1R|H&6fU3Noc=yf0ZP52y*v~7X6iy=xbsyTkM#pk?ll( zhu~*BL8k0)Nu^ZpV&gY4Fw!Dut)OB(C`ZNayD~pDf&JvtPK0Q@I6>V3eHv};AJ7Xs zw}RCyR-Qw&6}uM~^RHU3)!mt9y;?H0tu!KQ3AOmu0dWf`tyLx6pRq|hn{FH88)wjv zh>Ia^NR=Y8bRoP|vLt#N8S)S(T0T#e8kmt-!&^F@2U{^SgfeZzwzO?Qh7EDYx6wrd z*Fv<7#sj)QQxR`w>Gurmm7pTHKLsjAiVoJ;x`~a9ZWO2#@qahKk2ZRNS`o3o>S_fV z)&}F;!5kV+vx*#C8j^jAD;XhoVBh$!7hGDU>Yj)4cab9US*YdFN;uCSt)fn-s5(!m z(STa5)DY@kFV*0Tb?N*S-dw?@3zX-bcQXIc(`9&Tlqb8DJ-<Pm@g8XWH~EsuA+TMT7st z&uHT$Nakc;+Kc;fR$6X2|R<-#yWrMtpv*cN}fsD%*~UH00;(PXBmrr`zA{ ziLAtLsbWpAT`Uc>cCFra=>zi2&8RJx+&2C@yUIy>;{NpWHgWs&L(z zXW#K=>`9lj+u!FQ1pPfA`x7I&S@KFw)17hqd%dgRwej>!YxogP{+mf%%UCE{nvvAS zll4{BNoqQ1J*avY*@zvFOJ7*wi7X$MUJ()Vy?5o!$!^}5+@HsiQlGpgFTM}tkNfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 lU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?c{zX2tgQ9S?v literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00167.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00167.dcm new file mode 100644 index 0000000000000000000000000000000000000000..bcefd2bb70059ce7f7cf64ea807d9d4562aa5100 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00168.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00168.dcm new file mode 100644 index 0000000000000000000000000000000000000000..198e0685844487fadb09f4824d8d09acca5c3ba8 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00169.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00169.dcm new file mode 100644 index 0000000000000000000000000000000000000000..382b506fa7ed0bd60cc38b726e851169d2dd2d53 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00170.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00170.dcm new file mode 100644 index 0000000000000000000000000000000000000000..06b4c7591cfa1babe8bcea38dd7fa6155e7edcce GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00171.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00171.dcm new file mode 100644 index 0000000000000000000000000000000000000000..dacff818d3464a2015b099efcfc9948d5cf4f846 GIT binary patch literal 38846 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00172.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00172.dcm new file mode 100644 index 0000000000000000000000000000000000000000..df2deb788ab4da861412d04786284efffceaa940 GIT binary patch literal 38846 zcmeI0TaX-88OOh!tee>gVX_I!3|dsjB(+I2Lw8TlOi#9kOmEL*cVupvo=vhkGEB$- zv2tS*#aN{*7Xh(^1p+FHcT44>c)`0?$~)p6De=jaT1EL_6~&tmg8y@R_U!c1fJG_3 ze7&{P=l?%npY!#vPj{cwME~EdSaz!sq%d0fenUrn7 zFl;@Qu_F{iI~!K?B>FYb#~A9g7waP>(n{u%R)p4*H?x+iPOIWfY2`*slkPY_+Gsk9r-a@A?hwd<{!QZq{9FGC2y&TEybUX&J4vxc0b$Bv#la_HT?gHc+fMona)$13$Rzkt?$ow6yVq{hdI;I6rL=>+!`)LSv{W*8Fr0&zOt(id21LBj)1?`AlnkYF*hcBE zQg24RdP4Zu0*?b+i*)d6jMCrL@uK}0a%|Lw>BKt@Xfe`|Z-fk#3jVm&#^?Y_!!%d& zv^eU;Xl_>HxKD&ztJg|#+$*l9k>|8J;!NA6V$&~pjdIhe_~qSRoHog$Q^h!Kk);}1 zY)}y`S|}}`G)%aq(s8;TW!!BzAyIRKjL}iLQI-spZbE4d8D=(_HSwE`)BEt;LGCkg zx*1OvaTam9MaHL4x>c4$Yj>*JyWtHJ9zSqT50vjgIZC-~CYjEds3Y7r$i_@rX($b9 zCz;ko#BNwG&&&`E&W9f%!Fn7no>s|}ownt9?GZ=J?Dn+8;7E1cJ+m082|7=Xlqg1) z+~U_160}ZwvQtXXm{Jj_3j!*xR2g*%sYF|6w$SsZTT^EebfJpy5b-({q5b2!g-4&9 zDrqj{E@$HA777t zZc(1!w}`tnaMW!|twP-gl)4D&gCR%Xp&~?9i%N->?+l5*OM2o=#g?GE2VxfD$>4WH>PA*KbrbuHnMu&cRofywL7z}?~5Vc10mjnL9cK}AwdrXz5NfudpPJ(6yBGVci%_E_SmijeOY-T zd!lFHJrd%5WrZis^s6D>*FwCnhj@>Mc;5)|z8T_uE5!SDi1(ck@4F%1_d>kyhj>2- z@yFM%ArA8(a^rL|KaX|efpne)qKMSazD+%nKcui#ZpUq!WISb1wfBu@avGU4Tq>-4}i~J&ZTjL#VWYA^-a|7Wyv7)z@ z`u$_MW$QWA?p>5K6qNQYinZQvF%C8kzImIaii0=rMoOzIG=zwZQVFQ6QZcByQk$U~ zN{N>DNHsWaHc~Uh^FqA6(i3lsA(`bqr6JMw{uO#|gP|Uyvsto z&I`OvgCxCHaSkLm(eaSDlhRvyuWstkApHAbOQ4lf(?cs;Xha?%A|jZ(u2#oC1qVkc zEzWhzz#M4=YQu`!3sz`ct z;AcBQrtEJ?rBv@?;Wsfb(jsWBpkh5JN5ww$@a5#^s{H|KT>; zI0ce9*_Zahew>w-+rK{xD=S`scInuQ_4|U>+`#kGr3HDU2y^LrSsoMR9n+=GOz~Zs zSisJA4;@AA4YIa@TCZ6>cCeQ>b-g|99y@fnb?SI8Z?~_S?;bqVJ9^SNay*YumU{c} zp`*Rs^Sx{GX}#Ut-92(#1{&#hu{Ym6*_%duey(={ZQm%{j)^qnc6OJ)e`c54U+syk z#J5y2C)gpT23osTZ@ct9M|DE0Crq}9JN_$I{l^Q+WCga8Ez}g#nQECf% z-%Pzy>P*$~D#~=KdB|y z{zj}xm$cho=OG0B-7EVOBf44gN>0f*`z z3hN{_9klLKy^CzbipQnTt?)#a4@j?wi22?-^X6nXZ%iJ@V@jz{UXd5S2lL2ivM0*= zNfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 z6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz28 i6JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0`zZvCsI2A literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00173.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00173.dcm new file mode 100644 index 0000000000000000000000000000000000000000..bcdd1d3503e83ef88863013e7e074f96269e66f8 GIT binary patch literal 38844 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00175.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00175.dcm new file mode 100644 index 0000000000000000000000000000000000000000..80057c7567c9dfc935aad4932027c269779b647e GIT binary patch literal 38842 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 literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00176.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00176.dcm new file mode 100644 index 0000000000000000000000000000000000000000..19941da16e075a54ee73b3332499e229b623621b GIT binary patch literal 38842 zcmeI0TaX-88OOh!tee>gVX_I!3|dsjB(({ePG9Dlts&FfGua(8w@l9_SsfWBWPn(? zv58`=QkIK?Sjqwc6~()yauY9j*GhRuyp$p(KABRhC?Bk%c=JKlBQ)C zN!vCu$q2>J&W05|iGEG=F@`$r#rm*CT6#`L8|%rNSxZ%?RdJ@Ya-*e5cbuHk2u+vl zmZ3%IHRO70sO;4{<)(%+qZEZRPW5Jax?FQA?MAa)b((YSdTXZCjMDha5QtLzzd|5N z8>#3JvUx-QxT$|Ms8t;yGnGmuvr#gAl{U;Ia<>A?4yY?|T@k9{8ctB9J_Z6>wS*h) zR5WkSYn7^Alon94hMZ%^kDWex_}#rjQCg%%O=MxjD)nJ-$R0Ij!2v zq{Q7Qtn>B~T{cAY-1BtqAO>BO8tYzq%tdJy5!vOjV%ljlhoNF;lDZgEx|y_+VqEE# zWu>yZ32>m5O=tA9WxiTHnXg(;h6!pTce=Qrv$Z|7`u>_WiuqKjpND&1^*ZHZsn#*f zQHsQ7ac{-ko-U2juv8;ZUU|Ca&?rqvXBf_*%ck3-7y}|+=;_joJ4&X~IebRxuTpPD zy?R3U_X3Xt+>2E3Zj933)%l|R7;vl7pG0~Y`YkzEwWTYiw!EG z#Ux4#C=C;)R4Pt4pp4mu3lcRq$`}Ksn`FsE>1LGHkZEP~jD_z^oZg4$4sxG~)BEvc z5mynXTV%YA(yg*2TDwEl-UV-%@c4myW}tjG%2CQ?(t0Xwp^h+bkd0+0Q&1YzPO?(% z%7J#Zsd>k*I(1!lzNgLij`X@GdpnE!tdwqanugWEn9u14+x7V?uj!pUHQ&{|;vTfH zJgbpcOynvuSX8AmszmEVhE`J4H^#h~C}n4wQ%$E_i&Jda}h9bb=rZc(1! zw}`tnaMo=~twP-gmAVA#Lm_A1t|CNMi%N->?+A&%Q+nb`#V0{`4a6+O_2?5$g3hQ` zK8%RFl@b}Jw67tkZn&WUq@6yFN}Q-Zw+MZ-sc@4)MMd;(a&7`(B9m{Sfa5A>I!|ytC3< zdb<2bsga2U{Wze05>P)4sGkMY&jacgN(ttV1=KGC>hXa3RY3hZpnjv2cnbbjDbd64 z1L_H>#K=g{lYyE)2Gmml^(U!i50!I)bHQ0 zvRNaC+I@?1g@V%lMX}fW1IEF|!8dQSRB`a;-AE~QhlUW5Rw@CNQ7Q&iS86jd5cwUINPkQ2QF(k9xuQVjuKCnX1tuPoWQ*dyG(&AdT z46Knxpf;?iy=aB@*GWs+Z0WC*g!WtaS4m=rAa~Db(O)Tvz9t5<#g2Iz*-rF#2!6H` zWXb-Pl&yLf8^4KxkrqK~1r_T-IV$$ShaR4qzh4UlUM*SLRvMADgj)RSfVc&e)~S-=&saU1NwrP!jWcLS#KjOd zq)HK4x&YoPSrWaC40(tXEw5Ik24*B?X*y?Y#k>&Zl%2_K3-W7-yS4PKT1q+ObQZvR=kto^6$vd+pjt`H6W4?m-g(;%6X zeQ7W3$60B){kd6KS@8P;g)Ki4~nwr`Sc$3zD>Zt$O~#ASfqgghqSQ&~{WJAS zsWVl_Ybf2RmTT=w9l!Z?8YO2>-@sIFm0>N%xcyzA*oD1$^Y0$tI=-rK^^;G({f*d< zE@`*F$3qDEyGQmXMs%~}m7JzKl(BIbMV%v+P)yg7L=kL9E>d1YRFAIc-6$(|@1lULNfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C f0!)AjFaajO1egF5U;<2l2`~XBzyz286QF+srPNVx literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00177.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00177.dcm new file mode 100644 index 0000000000000000000000000000000000000000..e2ba430f8decc16607ca30fe6cd9fff7cc82f3b8 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tee>gVX_I!3|dsjB(({ep)YgI){yD#ne2|tE#0$8R!4>j86Z|} zY@!⪙xrzma;%VMe%N_TofXTuM(G zx~}Jv>7W!9Gs@T)@hS#b% zJG8BC_l9j+4Knvq6nK6ymswd+$>q$32ZRBnT_j9&>MZK}Nu8m?oRU7Bwp4YrirBtqWbYqkv zv02<(F}J77qckkl2$WZuuG=(96Ve%mbKvsn_9(`Hh!=XgJmZX#p>!UfQTnUYn^CWx z5dOWu;{f*}9lRT(^mlc>Xg`J=oAqHj{;vI6j5OpMAp@nNKW?=#+KHe8UXxmm{ODBU7U21>W0w1x~bo6MT{n~l>4@Z3S}GjaMLo-E=j z;&hvgw@|uWmPBiJsoHzs4HF(ea8C`C??pLE`D`Yc&X}kp%o}85TB$UY2DO9Cbi2B* zU2`?>=rt#9=+5`F`QD*k_jqqdX^)vs>K#`%I~eo%Bc5gsDmpdz$?+_>=AnYm(uE>WJJ z!V!3Hlb)Cl)dwbP33}g(7(!d`m!8OS2RF=J*D^l8<$2v5*wRNEqt&nhK)`dmPLUY+^ObE5VON~0U-FREz4?8{QA z5h)|S65@R|#CtHrdno7??<^+h;h?wgA$X4jJ&MBnn)2@dg!nwMGeKWhp2(i)Ie3qT zc;8szi7WkPi1)1!@7p2XVMaFyzhp1-wW}+AL9KW#QR~0_oEQ+$06Qn=`B57 zexlUKM1p=AP(KT(p9j=00_v9m^(&a45ej8A~Q%XDqf3KA2;g13J zlvHA5BZrwINdF3bUs$oJLG!8#9L6u zJJ!;5L&yF?tT9r$kvA~&a}ataox@r$o3qkJ4(ky(hKY5;+Lvj;dc_tjv=GDloN!!+ z_w_KLe@(+4#DBAE*kuUU$Y$Z1cwb*k+YPKg^^DoxZlqEuq}q9`fULZUh%6$`BcrX$ ze>lQ(k>P)~ezo!`Y^(hBYc_|SS0+UoiIu&`FM_u<-qA(|Z5FXM5S|??d26ZPzi#Go zdLFfV7Uc>BrM-({uXhIHVB_GM*DY6Vym>cLTHT=`L}ZjoKxLJRK{b@x4AoRhw7grY z!Ev*Z+z`(T@%Bhhye)=gmV1?kMBDpT=(!bo`7Q0ozg^Y`b7_Zo?+Ed(4DmWI@-_{U z^jf7kklaMaLgG$HZ|S|dslS5o=fjpjD`nS1D_dwpo*^P4Si7!P=RXYxXDBVMb<4mS zX#{G+irR}-Xn&owl+Bj@N=azHb$^v4b_jC!j28WslIUwXqR|mu`ptMevbbrPsbJ=v;5Pxw74T-oI;)YZy zB1;#*TO~`Pw~-+aaiZnbs?@}c#PcGbGq+-1h_aQ>q_ze5HO1ZDMi&lT2hlbf59lII zMZB4%-!iaIf{NhY6sZ&`*;rreCN?p;QKWLj|IGkD*yu%SMa15!s}*Tj8;o-Xb7NOsF+$G3p7CGj99pI7UV!p%|569tXPd!jdu_`+Q8INH8NwjC2`$j{lG{_(k;PJgE-vJ$_eiuJ&D zu`JNq^+wyF56Lq(qqb6Z+W2;MRa~#tsh0PYt1C5nx*hZ^xpjP1@!B)bzVpr4k1lDa zzsExe`nyl|Cq}ee_R6;F%sBmh-j(p$cygvS`~WAvW>VKODHKzhk<`Ug^;OnMYC34$ zuX-2Rh~17uUs~abEFY9!2@&(XcNfgbZo!z`U%+xwpS-#t{vIeGqsg8q>yy_M45X^J z{n%>@CKhv(*A>LygCg$ijWKHMMPm#2@`nj90Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l z2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l c2`~XBzyz286JP>NfC(@GCcp%k0282p1F%6+PXGV_ literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00178.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00178.dcm new file mode 100644 index 0000000000000000000000000000000000000000..b813a8550c99c143194a6db1b6359a34a3cc9c37 GIT binary patch literal 38842 zcmeI0TaX-88OOh!tee>gVX}c`1}&;%lG-Gip}S{#F4>x7dV40jBXdjlY?9THVL}Fo zl^dHV#wumG2#BRD5KvLPTPhdD3*Mzt-VraQ6pFr>QmZH*tfF}HLGXW0&z_xL8n7tE zmv6Rq`uzXr>vO*T^*P<=4AKAhQ>r+%2vV4>4%1m2BQ!*fDRIPSD1zf`MoD)Nm`)mAYMRH{D9jcIVoS)=b%r()h~|h*JE& zLLf>TsALnec|-rWv47O5RU0A0vaED2N`|j8x{*fiWT+CHglf2k<5X>ofq+&k z3YL!Rh%8#7PoutR;`DS9a>5|*gM=kbwW!e^GA+E>GGK0%JKej5iP{1RPmg~-m*KV z)!eKl?nZH)w})uw5Ycnb)7b+UbWv)qd+9M3rCCJemdA>b${2YJl~gvJ#7M*7OPlF* zDy1h)47*&?065UfWwObPX}nrJ8LwJTx&dkU`0D3^_LI!*t>u2ecSz$Tva;N=1L%YGZT&rD2*Y zds-azVl=z8IOd6P>y3Ijj=AD^8hLiBBd)YvF1dceYgSyl>X&zWaoQ-)PL<-cS(fT( zu}LMgm_}&c4$Yj>#HyWkBI9zSqT50vjlIZF9#CTV3%)Dh+lvN2O>3rd69 zL8jHN?r+yz%{zAG$!ojwJ#D^sxYs?=+fmwUT1ma*>ShOHKA$|$Zp>eCb??N<`L5=b zE=3E=vl@BDM6M!(MO8YjO0-U7h=(=mn`7QglyWoflxtV&af+>L{%)@i4WH>PA*KbrZ*onMu$mRNEpvL7!A@i#$H1l<4Wx0reSm=AWJswVzcQ-9Ud% zMGIzMkV=h68S%vs?@J-x{UP21L9cjwF+mRoz5Nfsdno8p6yBGWckf5V=doQ0`ik;I z_C(LXdpN}V>IzR>>DNNMuZMWw2=N{X@xB@2eJjNKc8K?#5bwJo-uFVh?}vCl2=N{b z@yFM%ArA8(a^rL|KaX|efpne)qKMSazD_vVNyshz$HZo|lh_!+6>{!WL zOa1uPoWQ*dyG z(&Ab-53G?!pw3@Wd*KT0ualOt+1y_#3GKJ;uad+LLGGT>qQ6oSeN7BziyiYcvYqJf z5d3T>$dvspsg&wnZ2Tq$Mp^`|6;-SUWvkc+A9{3Z0{h9Ooe0r*X@a@~`V87SFrXK9 zZ2_xUtUQNk3wAFK=3lK*Z#XkIa^NR=Y8bRN7_vLt#N8S)S(T3)S6P0UCt5n@{Q2q{5L_Q6*JW>hg`6E@-2^Cf62{jr} zYm^#7-D{;9oUIO>v%;GzI&`k`yw#@)A30Njw^n(wTiNsLrMHyFR;m1)whffu6o}eB zP?H=eU!tNS$W&KKT+`rKcW8O6`+cQlZ1Af5C+*VgbNbKPW$iz0mvv6Iak*&lfA|?~ zo&w3d>`QxLKlVz?>CesL%8FN@9Xj@6{l1_zC-CfaXhEJS!W_C@md8YS`*gW8Q+k&s zHm~#DLq}12gRE_$)^lse4)zMBuD7S1V}}m6P95(Ra_y_;y9W>Tj-IrS953YZrrth$ z=xA^EeD9iqrMKPP-6O|kpkcL3z4`9R-ZbJ1bG;L2`$pMzOr#+{XLtF>XLdRLou0@_ z{EjNt1KY*2Kx@|NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO z1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO z1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO i1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k0R0<5oKZ>u literal 0 HcmV?d00001 diff --git a/package/tests/integration/examples/ge_pcasl_easl/ASL/00179.dcm b/package/tests/integration/examples/ge_pcasl_easl/ASL/00179.dcm new file mode 100644 index 0000000000000000000000000000000000000000..296ff3e69100b08b955e3d48e940e91dfd0dd645 GIT binary patch literal 38842 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